cap_cost aufgelöst wird und warum audit der Default ist, von dem
Sie starten.
Wo Verdikte in der Regel-Grammatik leben, siehe
Firewall-Regeln; zum Wählen eines
Default-Verdikts beim Erstellen einer Policy siehe
Erstellen & anhängen.
1. Die sechs Regel-Verdikte
Eine Regel erzeugt genau eines von sechs Verdikten. Verfassen Sie sie im Konsolen-Regel-Editor; die Engine durchläuft die Regeln in Prioritätsreihenfolge und der erste Treffer gewinnt.allow — den Aufruf durchlassen, geloggt
allow — den Aufruf durchlassen, geloggt
allow, sodass Sie
einen Audit-Trail behalten, ohne irgendetwas zu blockieren. Verwenden Sie
es als expliziten Permit in einer Default-Deny-Policy.audit — erlauben, aber zur Überprüfung aufzeichnen
audit — erlauben, aber zur Überprüfung aufzeichnen
allow, aber der Aufruf wird als etwas
geflaggt, das Sie beobachten wollten. Dies ist auch der Wert, auf dem das
Default-Verdikt out of the box landet — alles beobachten, nichts
blockieren, bis Sie bereit sind durchzusetzen.deny — den Aufruf blockieren
deny — den Aufruf blockieren
inbound-Surface gibt das Relay
HTTP 400 mit dem Fehlercode firewall_blocked zurück, der das Tool und
den Grund benennt; auf der mcp-Surface kommt es als Tool-Fehler zurück,
sodass das Modell reagieren kann. Siehe
wie ein Block aussieht.sanitize — Argumente redigieren, dann weiterleiten
sanitize — Argumente redigieren, dann weiterleiten
command- oder body-Feld gesetzt
hat) und leitet den bereinigten Aufruf weiter. Es redigiert nur Argumente —
nie den Inhalt, den ein Tool zurückgibt. Auf der inbound-Surface gibt es
noch keine Aufruf-Argumente, also eskaliert sanitize zu einem deny.
Siehe Antworten bereinigen.pending_approval — für einen Menschen zurückhalten
pending_approval — für einen Menschen zurückhalten
firewall_approval_pending und einer Approval-ID
zurück; der Aufruf erreicht das Tool nicht. Ein Prüfer löst es in der
Konsole oder über einen Webhook-Callback auf, und der Agent reicht mit einem
einmal nutzbaren Approval-Header erneut ein. Siehe
Freigaben.cap_cost — ablehnen, sobald eine Ausgaben-Obergrenze überschritten ist
cap_cost — ablehnen, sobald eine Ausgaben-Obergrenze überschritten ist
allow oder deny aufgelöst. Siehe §3
und Kosten begrenzen.deny, sanitize, pending_approval und ein cap_cost, das zu deny
aufgelöst wurde) auf audit herabgestuft und dem Grund wird [shadow] would …
vorangestellt. Rollen Sie eine durchsetzende Policy auf diese Weise aus und
beobachten Sie den Events-Feed, bevor Sie sie live schalten.2. Das Default-Verdikt
Das Default-Verdikt (default_verdict auf der Policy) ist, was die Policy
tut, wenn keine Regel auf einen Tool-Call matcht. Es ist der Boden Ihrer
Haltung, und anders als ein Regel-Verdikt akzeptiert es nur drei Werte:
default_verdict | Wenn keine Regel matcht… |
|---|---|
audit (Default) | Den Aufruf erlauben, aber aufzeichnen. Der sichere Ausgangspunkt. |
allow | Erlauben und loggen, kein Überprüfungs-Datensatz. |
deny | Alles blockieren, was eine Regel nicht explizit erlaubt — eine Default-Deny-Haltung. |
audit: Sie beobachtet jeden Tool-Call
und blockiert nichts, bis Sie durchsetzende Regeln hinzufügen. Die drei
Nur-Regel-Verdikte — sanitize, pending_approval und cap_cost — können
nicht ein Default sein; ein Default-Verdikt ist ein pauschaler Fallback, und
diese Verdikte ergeben nur auf einen spezifischen Match gescoped Sinn.
3. cap_cost wird zu allow oder deny aufgelöst
cap_cost ist das eine Verdikt, das nicht das ist, was in Ihren Events
auftaucht. Sie verfassen eine Regel mit einer cap_cost_cents-Obergrenze, aber
zur Auswertungszeit löst die Engine sie zu einem konkreten allow oder
deny auf, bevor das Event aufgezeichnet wird — sodass der
Events-Feed nie ein wörtliches
cap_cost-Verdikt trägt, nur das allow/deny, das der Agent tatsächlich gesehen
hat.
Die Obergrenze ist pro Agentenlauf: Die Engine vergleicht die kumulierten
Ausgaben des Runs mit Ihrer Obergrenze.
- Unter der Obergrenze → wird zu
allowaufgelöst. (Intern wird dies als nicht-matchend behandelt, sodass die Auswertung zur nächsten Regel fortschreitet, stattcap_costfirst-match als Grant gewinnen zu lassen.) - Über der Obergrenze → wird zu
denyaufgelöst, mit einem Grund, der die Gesamtsumme des Runs gegen die Obergrenze benennt. Dies ist das terminale Schutzschalter-Ergebnis.
4. Wie ein Verdikt gewählt wird
Für jeden Tool-Call ist die Auflösung dieselbe, ganz gleich, welches Verdikt gewinnt:1. Die Policy auflösen
1. Die Policy auflösen
firewall_policy_id) oder den Workspace-Default — siehe
Auflösung.2. Regeln durchlaufen, erster Treffer gewinnt
2. Regeln durchlaufen, erster Treffer gewinnt
priority ASC-Reihenfolge. Die erste Regel, deren
Surface, Tool-Glob, optionale Argument-Klauseln und optionaler Egress-Scope
alle matchen, erzeugt das Verdikt.3. Kein Treffer → das Default-Verdikt
3. Kein Treffer → das Default-Verdikt
default_verdict der Policy — audit,
sofern Sie es nicht geändert haben.4. Skill-Durchsetzung reitet obendrauf
4. Skill-Durchsetzung reitet obendrauf
block-Mode ein deny und ein Skill im
quarantine-Mode eskaliert alles unterhalb von deny zu pending_approval.5. Kosten- und Retry-Verhalten eines deny
Ein Firewall-Verdikt auf derinbound-Surface feuert vor dem
Upstream-Modellaufruf, sodass ein deny dort keine Modell-Tokens kostet. Der
Fehler ist als skip-retry markiert — das erneute Ausführen desselben
blockierten Aufrufs würde einfach wieder blockieren, also sagt das Gateway dem
Client, ihn nicht zu wiederholen.
Das unterscheidet sich von einem
Guardrail-Block, der
Prompt-/Response-Text (PII, Secrets) statt Tool-Aktionen screent und seinen
eigenen guardrail_blocked-Fehler zurückgibt. Eine Anfrage kann durch beide
Ebenen laufen.
