inbound n’a aucune destination à vérifier ; une
clause d’argument sur inbound n’a pas encore d’arguments au moment de
l’appel.
Cette page est le guide ciblé sur les quatre stages du firewall agent : ce
que chaque surface observe, quand une règle devrait la cibler, et la façon
concrète dont une même intention s’exprime à différents stages. Pour le
vocabulaire complet des règles, voir
Règles du Firewall ; pour le modèle de
politique qui l’entoure, Firewall.
1. Les quatre stages en un coup d’œil
Chaque évaluation est estampillée d’exactement un stage. Une règle sans stage ("") s’applique à tous ; une règle épinglée à un stage ne se
déclenche que là.
| Stage | Ce que la surface voit |
|---|---|
inbound | Les outils que l’agent annonce sur la requête |
response | Les tool_calls que le modèle émet dans sa réponse |
mcp | Un tools/call dispatché à travers la passerelle MCP |
egress | Un host / IP / CIDR sortant qu’un outil atteint |
stage lors de la rédaction via l’API.
Le stage gouverne quelles données sont en portée, pas à quel point le
verdict est strict. Un
deny est un deny sur n’importe quel stage ; ce
qui change, c’est si la règle dispose des arguments, du nom d’outil ou de la
destination dont elle a besoin pour correspondre.2. inbound — les outils qu’un agent annonce
La surface la plus précoce. Avant même que le modèle ne s’exécute, votre
agent envoie une liste de définitions d’outils qu’il accepte de laisser le
modèle appeler. Le stage inbound voit cet ensemble d’outils annoncé et
peut bloquer un outil dangereux avant même que le modèle puisse le choisir.
Il n’y a pas d’arguments au moment de l’appel à ce stage — le modèle n’a pas
encore décidé comment appeler quoi que ce soit — donc les règles inbound
correspondent sur le nom d’outil (et optionnellement son skill propriétaire),
pas sur args_match_json.
Un appel refusé ici renvoie HTTP 400 avec le code firewall_blocked,
nommé d’après l’outil et la raison, et marqué skip-retry.
3. response — les appels d’outils que le modèle émet
Une fois que le modèle a répondu, il peut émettre un ou plusieurs
tool_calls — des invocations concrètes avec des arguments réels. Le stage
response les voit, donc c’est là que les règles au niveau des arguments ont
leur place : non pas « bloquer shell.exec » mais « bloquer shell.exec
uniquement quand la commande est rm -rf ».
sanitize
fonctionne ici — il redacte les sous-chaînes correspondantes des arguments de
l’appel et transmet l’appel nettoyé. (Sanitize redacte les arguments de
l’appel d’outil seulement ; il ne touche jamais au contenu qu’un outil
renvoie.)
4. mcp — les appels dispatchés à travers la passerelle
Lorsqu’un agent atteint un outil via la
passerelle MCP d’OrcaRouter, chaque tools/call
est évalué sur le stage mcp avant d’être dispatché vers le serveur
enregistré. C’est la surface qui gouverne le trafic Model Context Protocol —
le même vocabulaire glob / argument / verdict que response, appliqué au
dispatch MCP.
Un block ici apparaît comme une erreur d’outil
(firewall deny: <reason>) plutôt qu’une défaillance de transport, de sorte
que le modèle voit le rejet et peut réagir — choisir un autre outil, demander
à l’utilisateur, ou s’arrêter.
5. egress — la destination sortante qu’un outil atteint
La dernière surface. Lorsqu’un outil rapporte une destination réseau
sortante, le stage egress correspond dessus — la surface de SSRF et
d’exfiltration de données. Les règles d’egress ne correspondent pas sur un
motif de nom d’outil seul ; elles correspondent sur une liste host / IP /
CIDR :
169.254.169.254) et les plages
RFC-1918 sont les choses canoniques à refuser. Voir
Règles du Firewall §6
pour la polarité allow/deny.
Aucun preset n’embarque de règles CIDR. La posture SSRF du
niveau d’autonomie
tight refuse les noms d’outils de forme fetch (par ex. http_fetch,
web_search, fetch_url) ; un refus d’egress basé sur la destination est
quelque chose que vous rédigez pour les hôtes et les plages que vos agents ne
doivent jamais atteindre.6. Choisir le bon stage
Un même objectif de sécurité a souvent un meilleur stage. Faites correspondre l’intention à la surface qui porte réellement les données dont vous avez besoin :Empêcher qu'un outil soit même proposé → inbound
Empêcher qu'un outil soit même proposé → inbound
Si le modèle ne devrait même jamais voir un outil, refusez-le sur
inbound. Le block atterrit avant l’appel au modèle, donc il ne coûte
aucun token de modèle.Autoriser un outil mais contraindre ses arguments → response (ou mcp)
Autoriser un outil mais contraindre ses arguments → response (ou mcp)
Les clauses d’arguments ont besoin des arguments choisis par le modèle,
qui n’existent que sur
response et mcp. Refusez sur un argument
dangereux, ou sanitize pour retirer une valeur de secret ou de PII que
l’agent a mise dans un argument.Gouverner le trafic Model Context Protocol → mcp
Gouverner le trafic Model Context Protocol → mcp
Les appels routés à travers la passerelle MCP sont évalués sur
mcp
avant dispatch — le point d’étranglement pour les outils de chaque
serveur enregistré.Bloquer où un agent peut se connecter → egress
Bloquer où un agent peut se connecter → egress
Les règles basées sur la destination — bloquer l’IP cloud-metadata,
refuser un CIDR, mettre en allowlist vos hôtes approuvés — n’ont de sens
que sur
egress.S'appliquer à chaque surface → laisser le stage vide
S'appliquer à chaque surface → laisser le stage vide
Une règle sans stage s’exécute sur les quatre. Utilisez-la pour une règle
générale de style
default_verdict, ou un outil que vous refusez partout
où il apparaît.7. Stages et mode shadow
Le flagshadow_mode d’une politique est indépendant du stage. Activez-le et
chaque verdict appliquant — sur n’importe quel stage — est rétrogradé en
audit et la raison est préfixée [shadow] would …, de sorte que vous
pouvez confirmer qu’une règle se déclenche sur la bonne surface avant qu’elle
ne change le trafic réel. Voir
Mode shadow et
Modes d’application.
8. Où les stages s’insèrent dans la vue d’ensemble
Les quatre stages sont le où de l’application ; le reste du modèle est le quoi et le qui.Verdicts
Ce que chaque stage peut faire une fois qu’il correspond — allow, audit,
deny, sanitize, mise en attente d’approbation, plafonnement du coût.
Liste blanche d'outils
Utilisez
inbound pour contraindre l’ensemble d’outils qu’un agent
annonce.Valider les arguments
Rédigez des clauses d’arguments
response / mcp qui filtrent un outil
par la façon dont il est appelé.Contrôle d'egress
Bloquez les destinations sortantes sur la surface
egress — la frontière
d’exfiltration.