cap_cost se résout, et pourquoi audit est le défaut à partir duquel vous
commencez.
Pour savoir où vivent les verdicts dans la grammaire des règles, voir
Règles du Firewall ; pour choisir un verdict
par défaut lors de la création d’une politique, voir
Créer et attacher.
1. Les six verdicts de règle
Une règle produit exactement l’un des six verdicts. Rédigez-les dans l’éditeur de règles de la console ; le moteur parcourt les règles dans l’ordre de priorité et la première correspondance gagne.allow — laisse passer l'appel, journalisé
allow — laisse passer l'appel, journalisé
allow,
de sorte que vous conservez une piste d’audit sans rien bloquer.
Utilisez-le comme une autorisation explicite dans une politique
default-deny.audit — autorise, mais l'enregistre pour revue
audit — autorise, mais l'enregistre pour revue
allow, mais l’appel est marqué comme
quelque chose que vous vouliez surveiller. C’est aussi la valeur sur
laquelle le verdict par défaut atterrit par défaut — tout observer,
ne rien bloquer, jusqu’à ce que vous soyez prêt à appliquer.deny — bloque l'appel
deny — bloque l'appel
inbound, le relais
renvoie HTTP 400 avec le code d’erreur firewall_blocked, nommant
l’outil et la raison ; sur la surface mcp il revient comme une erreur
d’outil afin que le modèle puisse réagir. Voir
à quoi ressemble un block.sanitize — redacte les arguments, puis transmet
sanitize — redacte les arguments, puis transmet
command
ou body) et transmet l’appel nettoyé. Il redacte les arguments
seulement — jamais le contenu qu’un outil renvoie. Sur la surface
inbound, il n’y a pas encore d’arguments au moment de l’appel, donc
sanitize escalade en un deny. Voir
assainir les réponses.pending_approval — met en attente d'un humain
pending_approval — met en attente d'un humain
firewall_approval_pending et un id d’approbation ;
l’appel n’atteint pas l’outil. Un relecteur le résout dans la console ou
via un callback webhook, et l’agent re-soumet avec un en-tête
d’approbation à usage unique. Voir
approbations.cap_cost — refuse dès qu'un plafond de dépense est franchi
cap_cost — refuse dès qu'un plafond de dépense est franchi
allow ou
deny au moment de l’évaluation. Voir
§3 et
plafonner le coût.deny, sanitize, pending_approval, et un cap_cost qui s’est résolu en
deny) est rétrogradé en audit et la raison est préfixée [shadow] would …. Déployez une politique appliquante de cette façon et surveillez le
flux d’événements avant de la passer en live.2. Le verdict par défaut
Le verdict par défaut (default_verdict sur la politique) est ce que
fait la politique lorsqu’aucune règle ne correspond à un appel d’outil.
C’est le plancher de votre posture, et contrairement à un verdict de règle,
il n’accepte que trois valeurs :
default_verdict | Quand aucune règle ne correspond… |
|---|---|
audit (défaut) | Autorise l’appel, mais l’enregistre. L’endroit sûr pour commencer. |
allow | Autorise et journalise, sans enregistrement de revue. |
deny | Bloque tout ce qu’une règle ne permet pas explicitement — une posture default-deny. |
audit : elle observe chaque appel
d’outil et ne bloque rien jusqu’à ce que vous ajoutiez des règles
appliquantes. Les trois verdicts réservés aux règles — sanitize,
pending_approval et cap_cost — ne peuvent pas être un défaut ; un
verdict par défaut est un fallback général, et ces verdicts n’ont de sens que
scopés à une correspondance spécifique.
3. cap_cost se résout en allow ou deny
cap_cost est le seul verdict qui n’est pas ce qui apparaît dans vos
événements. Vous rédigez une règle avec un plafond cap_cost_cents, mais au
moment de l’évaluation le moteur le résout en un allow ou deny concret
avant que l’événement ne soit enregistré — de sorte que le
flux d’événements ne porte jamais un
verdict cap_cost littéral, seulement l’allow/deny que l’agent a réellement
vu.
Le plafond est par exécution d’agent : le moteur compare la dépense
accumulée de l’exécution à votre plafond.
- Sous le plafond → se résout en
allow. (En interne, c’est traité comme non-correspondant, de sorte que l’évaluation continue vers la règle suivante plutôt que de laissercap_costgagner en première correspondance comme une autorisation.) - Au-dessus du plafond → se résout en
deny, avec une raison nommant le total de l’exécution par rapport au plafond. C’est le résultat terminal de disjoncteur.
4. Comment un verdict est choisi
Pour tout appel d’outil, la résolution est la même quel que soit le verdict qui gagne :1. Résoudre la politique
1. Résoudre la politique
firewall_policy_id), ou le défaut de l’espace de travail — voir
résolution.2. Parcourir les règles, la première correspondance gagne
2. Parcourir les règles, la première correspondance gagne
priority ASC. La première règle
dont la surface, le glob d’outil, les clauses d’arguments optionnelles et
la portée d’egress optionnelle correspondent toutes produit le
verdict.3. Aucune correspondance → le verdict par défaut
3. Aucune correspondance → le verdict par défaut
default_verdict de la politique
s’applique — audit sauf si vous l’avez changé.4. L'application de skill se superpose par-dessus
4. L'application de skill se superpose par-dessus
block force un deny et un skill en mode quarantine
escalade tout ce qui est en-deçà d’un deny vers pending_approval.5. Comportement de coût et de retry d’un deny
Un verdict de firewall sur la surfaceinbound se déclenche avant
l’appel au modèle amont, donc un deny là ne coûte aucun token de modèle.
L’erreur est marquée skip-retry — ré-exécuter le même appel bloqué ne
ferait que bloquer à nouveau, donc la passerelle indique au client de ne pas
le réessayer.
Ceci est distinct d’un block de
guardrail, qui filtre le
texte des prompts/réponses (PII, secrets) plutôt que les actions
d’outils, et renvoie sa propre erreur guardrail_blocked. Une requête peut
traverser les deux plans.
