tool_calls:
invocações concretas com argumentos reais escolhidos pelo modelo. A superfície
response do agent firewall inspeciona
exatamente essas, no momento em que deixam o modelo e antes de chegarem ao seu
loop de agente. É a superfície onde você filtra o que o modelo de fato decidiu
fazer, com os argumentos que ele de fato escolheu.
Esta página cobre o caso de uso de filtragem na superfície response — quando
recorrer a ela em vez de inbound, a única
reviravolta de veredito que ela adiciona, e como ela se comporta num stream. Para
o vocabulário de regras completo e a semântica de veredito, veja
Schema de regra e
Vereditos.
1. Filtre chamadas de response de ferramenta de llm, com argumentos em escopo
O stageinbound vê as ferramentas que você
anuncia — apenas nomes, ainda sem argumentos em tempo de chamada. O stage
response vê os tool_calls que o modelo emite, que carregam os argumentos
que o modelo escolheu. Essa é a razão inteira para filtrar aqui: é a única
superfície que vê a chamada real + argumentos para uma ferramenta executada
pelo cliente (não-MCP), então
cláusulas de argumento, sequências e
regras de estado de run todas aterrissam em response.
A distinção em uma linha:
| Stage | Vê | Use-o para |
|---|---|---|
inbound | Definições de ferramenta anunciadas | Tornar uma ferramenta invisível ao modelo |
response | tool_calls emitidos + argumentos | Filtrar a chamada que o modelo de fato fez |
inbound responde quais ferramentas existem; response responde o que
o modelo fez com uma. Recorra a response (ou deixe stage vazio para cobrir
ambos) quando uma ferramenta legitimamente aparece em algumas requisições mas uma
chamada particular dela é perigosa — ou quando você só controla o loop do
agente, não o conjunto de ferramentas anunciado.
Uma regra sem
stage roda em cada superfície, incluindo response. Fixe a
response apenas quando uma regra deva só inspecionar chamadas emitidas — por
exemplo uma cláusula de argumento que de qualquer forma não tem nada para
corresponder na superfície inbound. Veja Stages.2. Um exemplo concreto
Permitashell.exec em geral, mas remova-o da resposta do modelo no momento em
que seu argumento command parece destrutivo. No console do seu workspace, abra
uma política (ou crie uma) e adicione uma
regra fixada à superfície response:
args_match_json — uma string JSON contendo
{"clauses":[…]}, cada cláusula um triplo path / op / value (op é um
entre eq, contains, regex, gt, lt). O formulário do console o constrói
para você; a forma crua é mostrada aqui para que o nome do campo seja inequívoco.
A ferramenta permanece anunciada — o modelo ainda pode propor shell.exec —
mas quando a chamada emitida carrega um command destrutivo, o firewall remove
esse tool_call da resposta antes que seu agente sequer o veja. Um shell.exec
benigno (digamos, ls -la) passa intocado. Este é o padrão “permita a
ferramenta, controle a chamada” para o qual a superfície response existe; a
cláusula de argumento é o que o torna possível.
3. O que um veredito faz na superfície response
A superfície response inspeciona cadatool_call emitido e reescreve a resposta
no lugar. Chamadas mantidas são encaminhadas byte-a-byte; apenas uma chamada
correspondida muda:
deny → a chamada é removida da resposta
deny → a chamada é removida da resposta
O
tool_call correspondido é removido da resposta do modelo antes de chegar
ao seu agente. Diferente de um deny inbound — que retorna HTTP 400 com o
código firewall_blocked — um deny de superfície response não falha a
requisição; o resto da resposta (outras chamadas de ferramenta, qualquer
texto) flui com a chamada ofensora simplesmente ausente.sanitize → argumentos são redigidos, a chamada encaminhada
sanitize → argumentos são redigidos, a chamada encaminhada
As substrings correspondidas nos argumentos da chamada são substituídas
pelos argumentos redigidos do motor e a chamada limpa é encaminhada — útil
quando a ferramenta está bem mas o modelo colocou um segredo ou valor de PII
num argumento. O sanitize redige apenas os argumentos da chamada de
ferramenta; ele nunca toca no conteúdo que uma ferramenta retorna. Se o
motor não tem nada para substituir, a chamada é removida (fail-closed). Veja
Sanitizar respostas.
pending_approval → a chamada é removida aqui, não retida
pending_approval → a chamada é removida aqui, não retida
A retenção human-in-the-loop abre na superfície inbound, não response.
Uma regra
pending_approval que primeiro corresponde numa chamada emitida é,
portanto, removida (fail-closed) — mantê-la encaminharia uma chamada não
revisada sem decisão humana. Crie retenções HITL para disparar inbound; veja
Aprovações.allow / audit → a chamada passa, registrada
allow / audit → a chamada passa, registrada
allow e audit ambos encaminham a chamada; audit é o default_verdict
usual — registre tudo, bloqueie nada, até você estar pronto para aplicar.4. Streaming: retido, depois filtrado
Numa resposta não-stream a resposta inteira é parseada e filtrada de uma vez. Num stream, ostool_calls de um modelo chegam como deltas por índice através de
muitos frames SSE — e uma vez que um delta é encaminhado, seu agente já o tem e
ele não pode ser retraído. Então o gateway retém os frames de chamada de
ferramenta: eles nunca são encaminhados no meio do stream. Ao fim do stream o
firewall monta cada chamada (nome + argumentos completos), avalia-a, e emite
apenas as chamadas sobreviventes.
Os frames de conteúdo ainda fazem streaming normalmente — tokens de texto chegam
ao seu cliente conforme chegam. Apenas os frames de
tool_call são retidos para
avaliação, então uma chamada negada ou sanitizada é filtrada antes que a chamada
de ferramenta montada seja entregue. A semântica de veredito e regra é idêntica à
superfície não-stream. Para os detalhes em nível de frame, veja
Internals de streaming e
Streaming de provedor.5. Faça o rollout com segurança
Dry-run da regra primeiro
Dry-run da regra primeiro
A aba Test do console roda uma política contra uma chamada de ferramenta
de amostra e retorna o veredito, a regra correspondente e o motivo — nada é
despachado, nada é persistido. Confirme que seu glob e cláusula de argumento
correspondem à chamada que você pretendia antes de vincular uma chave. Veja
Testar regras.
Shadow mode para uma medição ao vivo
Shadow mode para uma medição ao vivo
Ligue o shadow mode e cada veredito de
enforcement — incluindo um deny de superfície response — é rebaixado para
audit, motivo prefixado [shadow] would …. Você mede exatamente o que a
regra removeria contra o tráfego real antes que ela mude uma única
resposta.Confirme a filtragem no log de events
Confirme a filtragem no log de events
Cada avaliação escreve um evento de firewall com o veredito, a superfície, a
ferramenta e a regra correspondente. Filtre o
log de events pela superfície
response
para ver sua regra disparando nas chamadas emitidas que você esperava. Veja
Analytics.6. Vincule a política e quem pode configurá-la
Uma política não faz nada até que uma chave resolva para ela. Vincule no console definindofirewall_policy_id na chave, ou
torne a política o padrão do workspace. A resolução: a política vinculada da chave
(quando ela existe e está habilitada), senão o padrão do workspace — e uma
política vinculada desabilitada cai de volta para o padrão do workspace. Veja
Gerenciar políticas.
Toda a configuração roda no console sob sua sessão (/api/workspace/firewall/*):
| Ação | Papel |
|---|---|
| Ler políticas, presets, ferramentas descobertas, Simulate | Member |
| Dry-run (Test), ler o log de events e agregados de run | Developer+ |
| Criar / editar / deletar regras e políticas | Developer+ |
Relacionados
Validar argumentos
As cláusulas de argumento que tornam a filtragem de superfície response
precisa.
Sanitizar respostas
Redija segredos dos argumentos de uma chamada em vez de removê-la.
Stages do firewall
Como
response se compara a inbound, mcp e egress.Bloquear ferramentas
A contraparte inbound: negue uma ferramenta antes que o modelo a receba.
Chamadas de ferramenta perigosas
A ameaça que a filtragem de response endereça.
Referência do Firewall
A referência completa de regra + correspondência.
