tool_calls aus: konkrete Aufrufe mit echten, vom Modell gewählten Argumenten.
Die Response-Surface der Agent-Firewall
inspiziert genau diese, in dem Moment, in dem sie das Modell verlassen, und
bevor sie Ihre Agenten-Schleife erreichen. Es ist die Surface, auf der Sie
filtern, was das Modell tatsächlich zu tun beschlossen hat, mit den Argumenten,
die es tatsächlich gewählt hat.
Diese Seite behandelt den Use-Case für das Filtern auf der Response-Surface —
wann Sie dazu statt zu inbound greifen,
die eine Verdikt-Wendung, die sie hinzufügt, und wie sie sich auf einem Stream
verhält. Für das vollständige Regel-Vokabular und die Verdikt-Semantik siehe
Regel-Schema und
Verdikte.
1. LLM-Tool-Response-Aufrufe filtern, mit Argumenten im Scope
Dieinbound-Stage sieht die Tools, die Sie
anbieten — nur Namen, noch keine Argumente zur Aufrufzeit. Die
Response-Stage sieht die tool_calls, die das Modell ausgibt, welche die
vom Modell gewählten Argumente tragen. Das ist der ganze Grund, hier zu
filtern: Es ist die einzige Surface, die den tatsächlichen Aufruf + die
Argumente für ein client-ausgeführtes (Nicht-MCP-)Tool sieht, sodass
Argument-Klauseln, Sequenzen und
Run-State-Regeln alle auf response landen.
Die Unterscheidung in einer Zeile:
| Stage | Sieht | Verwenden Sie sie, um |
|---|---|---|
inbound | Angebotene Tool-Definitionen | Ein Tool für das Modell unsichtbar zu machen |
response | Ausgegebene tool_calls + Argumente | Den Aufruf zu filtern, den das Modell tatsächlich gemacht hat |
inbound beantwortet also welche Tools existieren; response beantwortet
was das Modell mit einem getan hat. Greifen Sie zu response (oder lassen Sie
stage leer, um beide abzudecken), wenn ein Tool in manchen Requests legitim
auftaucht, aber ein bestimmter Aufruf davon gefährlich ist — oder wenn Sie
nur die Agenten-Schleife kontrollieren, nicht die angebotene Tool-Menge.
Eine Regel ohne
stage läuft auf jeder Surface, einschließlich response.
Pinnen Sie auf response nur, wenn eine Regel nur ausgegebene Aufrufe
inspizieren soll — zum Beispiel eine Argument-Klausel, die auf der
inbound-Surface ohnehin nichts zum Matchen hat. Siehe
Stages.2. Ein konkretes Beispiel
shell.exec im Allgemeinen erlauben, es aber aus der Antwort des Modells
entfernen, sobald sein command-Argument destruktiv aussieht. Öffnen Sie in
Ihrer Workspace-Konsole eine Policy (oder
erstellen Sie eine) und fügen Sie eine
auf die Response-Surface gepinnte Regel hinzu:
args_match_json — ein JSON-String, der
{"clauses":[…]} hält, wobei jede Klausel ein path / op / value-Tripel
ist (op ist einer von eq, contains, regex, gt, lt). Das
Konsolen-Formular baut es für Sie; die rohe Form wird hier gezeigt, damit der
Feldname eindeutig ist.
Das Tool bleibt angeboten — das Modell kann shell.exec weiterhin
vorschlagen — aber wenn der ausgegebene Aufruf einen destruktiven command
trägt, entfernt die Firewall diesen tool_call aus der Antwort, bevor Ihr
Agent ihn je sieht. Ein gutartiges shell.exec (etwa ls -la) segelt
unberührt durch. Das ist das „das Tool erlauben, den Aufruf gaten”-Muster, für
das die Response-Surface existiert; die Argument-Klausel ist es, was es möglich
macht.
3. Was ein Verdikt auf der Response-Surface tut
Die Response-Surface inspiziert jeden ausgegebenentool_call und schreibt die
Antwort an Ort und Stelle um. Beibehaltene Aufrufe werden byte-für-byte
weitergeleitet; nur ein gematchter Aufruf ändert sich:
deny → der Aufruf wird aus der Antwort entfernt
deny → der Aufruf wird aus der Antwort entfernt
Der gematchte
tool_call wird aus der Antwort des Modells entfernt, bevor
sie Ihren Agenten erreicht. Anders als ein inbound-deny — das HTTP 400
mit Code firewall_blocked zurückgibt — lässt ein Response-Surface-deny den
Request nicht fehlschlagen; der Rest der Antwort (andere Tool-Calls,
beliebiger Text) fließt durch, mit dem anstößigen Aufruf einfach
abwesend.sanitize → Argumente werden redigiert, der Aufruf weitergeleitet
sanitize → Argumente werden redigiert, der Aufruf weitergeleitet
Die gematchten Teilstrings in den Argumenten des Aufrufs werden durch
die redigierten Argumente der Engine ersetzt, und der bereinigte Aufruf
wird weitergeleitet — nützlich, wenn das Tool in Ordnung ist, aber das
Modell einen Secret- oder PII-Wert in ein Argument gesetzt hat. Sanitize
redigiert nur Tool-Call-Argumente; es rührt nie den Inhalt an, den ein
Tool zurückgibt. Wenn die Engine nichts zu ersetzen hat, wird der Aufruf
entfernt (fail-closed). Siehe
Antworten bereinigen.
pending_approval → der Aufruf wird hier entfernt, nicht zurückgehalten
pending_approval → der Aufruf wird hier entfernt, nicht zurückgehalten
Human-in-the-Loop-Holds bleiben auf der inbound-Surface offen, nicht
auf response. Eine
pending_approval-Regel, die zuerst auf einem
ausgegebenen Aufruf matcht, wird daher entfernt (fail-closed) — sie zu
behalten würde einen ungeprüften Aufruf ohne menschliche Entscheidung
weiterleiten. Verfassen Sie HITL-Holds so, dass sie inbound feuern; siehe
Freigaben.allow / audit → der Aufruf geht durch, geloggt
allow / audit → der Aufruf geht durch, geloggt
allow und audit leiten beide den Aufruf weiter; audit ist das übliche
default_verdict — alles aufzeichnen, nichts blockieren, bis Sie bereit
sind durchzusetzen.4. Streaming: zurückgehalten, dann gefiltert
Auf einer Nicht-Stream-Antwort wird die ganze Antwort auf einmal geparst und gefiltert. Auf einem Stream treffen dietool_calls eines Modells als
Pro-Index-Deltas über viele SSE-Frames ein — und sobald ein Delta
weitergeleitet ist, hat Ihr Agent es bereits, und es kann nicht zurückgezogen
werden. Daher hält das Gateway Tool-Call-Frames zurück: Sie werden niemals
mitten im Stream weitergeleitet. Am Stream-Ende setzt die Firewall jeden Aufruf
zusammen (Name + vollständige Argumente), wertet ihn aus und gibt nur die
überlebenden Aufrufe aus.
Content-Frames streamen weiterhin normal — Text-Tokens erreichen Ihren Client,
während sie eintreffen. Nur
tool_call-Frames werden zur Auswertung
zurückgehalten, sodass ein verweigerter oder bereinigter Aufruf herausgefiltert
wird, bevor der zusammengesetzte Tool-Call ausgeliefert wird. Die Verdikt- und
Regel-Semantik ist identisch zur Nicht-Stream-Surface. Für die Frame-Level-Details
siehe Streaming-Interna und
Provider-Streaming.5. Sicher ausrollen
Die Regel zuerst dry-runnen
Die Regel zuerst dry-runnen
Der Test-Tab der Konsole führt eine Policy gegen einen Beispiel-Tool-Call
aus und gibt das Verdikt, die gematchte Regel und den Grund zurück — nichts
wird dispatcht, nichts wird persistiert. Bestätigen Sie, dass Ihr Glob und
Ihre Argument-Klausel den Aufruf matchen, den Sie meinten, bevor Sie einen
Key anhängen. Siehe Regeln testen.
Shadow-Mode für eine Live-Messung
Shadow-Mode für eine Live-Messung
Schalten Sie den Shadow-Mode ein, und
jedes durchsetzende Verdikt — einschließlich eines Response-Surface-deny —
wird auf
audit herabgestuft, Grund vorangestellt [shadow] would …. Sie
messen genau, was die Regel gegen echten Traffic entfernen würde, bevor
sie eine einzige Antwort verändert.Filterung im Events-Log bestätigen
Filterung im Events-Log bestätigen
Jede Auswertung schreibt ein Firewall-Event mit dem Verdikt, der Surface,
dem Tool und der gematchten Regel. Filtern Sie den
Events-Log nach Surface
response, um
Ihre Regel auf den erwarteten ausgegebenen Aufrufen feuern zu sehen. Siehe
Analytics.6. Die Policy anhängen und wer sie konfigurieren kann
Eine Policy tut nichts, bis ein Key auf sie auflöst. Hängen Sie sie in der Konsole an, indem Siefirewall_policy_id auf dem
Key setzen, oder machen Sie die Policy
zum Workspace-Default. Auflösung: die angehängte Policy des Keys (wenn sie
existiert und aktiviert ist), sonst der Workspace-Default — und eine
deaktivierte angehängte Policy fällt auf den Workspace-Default zurück. Siehe
Policies verwalten.
Alle Konfiguration läuft in der Konsole unter Ihrer Session
(/api/workspace/firewall/*):
| Aktion | Rolle |
|---|---|
| Policies, Presets, Discovered Tools, Simulate lesen | Member |
| Dry-Run (Test), Events-Log und Run-Aggregate lesen | Developer+ |
| Regeln und Policies erstellen / bearbeiten / löschen | Developer+ |
Verwandt
Argumente validieren
Die Argument-Klauseln, die Response-Surface-Filterung präzise machen.
Antworten bereinigen
Secrets aus den Argumenten eines Aufrufs redigieren, statt ihn zu entfernen.
Firewall-Stages
Wie
response mit inbound, mcp und egress vergleicht.Tools blockieren
Das inbound-Pendant: ein Tool verweigern, bevor es dem Modell angeboten wird.
Gefährliche Tool-Calls
Die Bedrohung, die Response-Filterung adressiert.
Firewall-Referenz
Die vollständige Regel- + Matching-Referenz.
