tool_calls:
invocazioni concrete con argomenti reali, scelti dal modello. La superficie
response dell’agent firewall ispeziona
esattamente quelli, nel momento in cui lasciano il modello e prima che
raggiungano il tuo loop di agent. È la superficie dove filtri ciò che il modello ha
effettivamente deciso di fare, con gli argomenti che ha effettivamente scelto.
Questa pagina copre il caso d’uso del filtraggio sulla superficie response — quando
ricorrervi al posto di inbound, l’unica
sfumatura di verdetto che aggiunge, e come si comporta su uno stream. Per il
vocabolario completo delle regole e la semantica dei verdetti, vedi
Schema delle regole e
Verdetti.
1. Filtra le chiamate a tool nelle risposte LLM, con gli argomenti nello scope
Lo stageinbound vede i tool che pubblicizzi —
solo nomi, ancora nessun argomento al momento della chiamata. Lo stage response
vede i tool_calls che il modello emette, che portano gli argomenti che il
modello ha scelto. È l’intero motivo per filtrare qui: è l’unica superficie che
vede la chiamata effettiva + gli argomenti per un tool eseguito dal client
(non-MCP), quindi le clausole sugli argomenti,
le sequenze e le regole sullo stato dell’esecuzione atterrano tutte su response.
La distinzione in una riga:
| Stage | Vede | Usalo per |
|---|---|---|
inbound | Le definizioni di tool pubblicizzate | Rendere un tool invisibile al modello |
response | I tool_calls emessi + gli argomenti | Filtrare la chiamata che il modello ha effettivamente fatto |
inbound risponde a quali tool esistono; response risponde a cosa il
modello ne ha fatto. Ricorri a response (o lascia stage vuoto per coprire
entrambi) quando un tool compare legittimamente in alcune richieste ma una
particolare chiamata di esso è pericolosa — o quando controlli solo il loop
dell’agent, non l’insieme di tool pubblicizzato.
stage gira su ogni superficie, inclusa response. Fissa a
response solo quando una regola dovrebbe ispezionare solo le chiamate emesse —
per esempio una clausola sugli argomenti che comunque non ha nulla su cui fare match
sulla superficie inbound. Vedi Stage.2. Un esempio concreto
Consentishell.exec in generale, ma rimuovilo dalla risposta del modello nel
momento in cui il suo argomento command appare distruttivo. Nella console del tuo
workspace, apri una policy (o creane una) e
aggiungi una regola fissata alla superficie response:
args_match_json — una stringa JSON che
contiene {"clauses":[…]}, ogni clausola una tripla path / op / value (op
è uno tra eq, contains, regex, gt, lt). Il form della console lo costruisce
per te; la forma grezza è mostrata qui così il nome del campo è inequivocabile.
Il tool rimane pubblicizzato — il modello può comunque proporre shell.exec — ma
quando la chiamata emessa porta un command distruttivo, il firewall rimuove quel
tool_call dalla risposta prima che il tuo agent lo veda. Un shell.exec benigno
(diciamo, ls -la) scorre intatto. Questo è il pattern “consenti il tool, governa
la chiamata” per cui la superficie response esiste; la clausola sugli argomenti è
ciò che lo rende possibile.
3. Cosa fa un verdetto sulla superficie response
La superficie response ispeziona ognitool_call emesso e riscrive la risposta sul
posto. Le chiamate mantenute vengono inoltrate byte per byte; cambia solo una
chiamata corrisposta:
deny → la chiamata viene rimossa dalla risposta
deny → la chiamata viene rimossa dalla risposta
tool_call corrisposto viene rimosso dalla risposta del modello prima che
raggiunga il tuo agent. A differenza di un deny inbound — che restituisce
HTTP 400 con codice firewall_blocked — un deny sulla superficie response
non fa fallire la richiesta; il resto della risposta (altre chiamate a tool,
eventuale testo) scorre con la chiamata incriminata semplicemente assente.sanitize → gli argomenti vengono redatti, la chiamata inoltrata
sanitize → gli argomenti vengono redatti, la chiamata inoltrata
pending_approval → la chiamata viene rimossa qui, non messa in attesa
pending_approval → la chiamata viene rimossa qui, non messa in attesa
pending_approval che corrisponde per prima su una chiamata emessa viene
quindi rimossa (fail-closed) — mantenerla inoltrerebbe una chiamata non
revisionata senza alcuna decisione umana. Scrivi gli hold HITL perché scattino
inbound; vedi Approvazioni.allow / audit → la chiamata passa, loggata
allow / audit → la chiamata passa, loggata
allow e audit inoltrano entrambi la chiamata; audit è il
default_verdict abituale — registra tutto, blocca nulla, finché non sei pronto
ad applicare.4. Streaming: mantenuto, poi filtrato
Su una risposta non in stream l’intera risposta viene parsata e filtrata in una volta. Su uno stream, itool_calls di un modello arrivano come delta per
indice attraverso molti frame SSE — e una volta che un delta è inoltrato, il tuo
agent ce l’ha già e non può essere ritrattato. Quindi il gateway trattiene i
frame delle chiamate a tool: non vengono mai inoltrati a metà stream. Alla fine
dello stream il firewall assembla ogni chiamata (nome + argomenti completi), la
valuta ed emette solo le chiamate sopravvissute.
tool_call vengono
trattenuti per la valutazione, così una chiamata negata o sanitizzata viene
filtrata prima che la chiamata a tool assemblata venga consegnata. La semantica del
verdetto e delle regole è identica alla superficie non in stream. Per i dettagli a
livello di frame, vedi Internals dello streaming
e Streaming dei provider.5. Fai il rollout in sicurezza
Esegui prima un dry-run della regola
Esegui prima un dry-run della regola
Shadow mode per una misurazione live
Shadow mode per una misurazione live
audit, con la motivazione prefissata [shadow] would …. Misuri esattamente
cosa la regola rimuoverebbe contro il traffico reale prima che modifichi una
singola risposta.Conferma il filtraggio nel log degli eventi
Conferma il filtraggio nel log degli eventi
response
per vedere la tua regola scattare sulle chiamate emesse che ti aspettavi. Vedi
Analytics.6. Collega la policy e chi può configurarla
Una policy non fa nulla finché una chiave non si risolve su di essa. Collegala nella console impostandofirewall_policy_id sulla
chiave, o rendi la policy il default del
workspace. La risoluzione: la policy collegata alla chiave (quando esiste ed è
abilitata), altrimenti il default del workspace — e una policy collegata
disabilitata ricade sul default del workspace. Vedi
Gestisci le policy.
Tutta la configurazione gira nella console sotto la tua sessione
(/api/workspace/firewall/*):
| Azione | Ruolo |
|---|---|
| Leggere policy, preset, discovered tools, Simulate | Member |
| Dry-run (Test), leggere il log degli eventi e le aggregazioni delle esecuzioni | Developer+ |
| Creare / modificare / eliminare regole e policy | Developer+ |
Correlati
Valida gli argomenti
Sanitizza le risposte
Stage del firewall
response si confronta con inbound, mcp ed egress.