shell.exec é fino para
ls; é um desastre para rm -rf /. db.query é fino contra uma réplica;
contra prod é um risco. A diferença vive nos argumentos, e uma regra de
nome de ferramenta não consegue vê-la.
As cláusulas de argumento do Firewall (args_match_json) fecham esse gap.
Elas inspecionam os argumentos concretos que o modelo escolheu para uma chamada
de ferramenta e decidem o veredito a partir de seus valores — então você pode
permitir uma ferramenta amplamente enquanto nega a única forma perigosa que ela
pode tomar. Esta página é o guia focado em criar essas cláusulas; para o
vocabulário de regras completo veja
Regras do Firewall, e para o modelo de política em
torno delas, Firewall.
Os valores de argumento só existem uma vez que o modelo escolheu como chamar
uma ferramenta, então as cláusulas de argumento pertencem aos
stages
response e mcp. Em inbound — onde o
agente só anuncia definições de ferramenta — não há argumentos em tempo de
chamada para verificar.1. Quando validar argumentos de chamada de ferramenta
Recorra a uma cláusula de argumento sempre que uma ferramenta for segura em geral mas perigosa em uma forma específica:Comandos destrutivos
Permita
shell.exec, mas negue quando o comando corresponde a rm -rf,
mkfs ou dd if=.Raio de explosão em produção
Permita
db.query, mas negue (ou retenha para aprovação) quando o alvo de
conexão for prod.Destinos internos
Permita uma ferramenta de fetch, mas negue quando seu argumento
url/ip
cai dentro de uma faixa RFC-1918 ou do IP de cloud-metadata.Operações superdimensionadas
Permita uma ferramenta de bulk, mas negue quando um argumento
limit ou
count exceder um teto numérico.2. A forma de um conjunto de cláusulas
args_match_json é uma string codificada em JSON cujo valor decodificado é
um objeto contendo uma lista de clauses. Cada cláusula é um triplo
{ path, op, value }, e todas as cláusulas se combinam com AND — a regra
dispara apenas quando cada cláusula é verdadeira. Decodificado, o valor se
parece com:
"args_match_json": "{\"clauses\":[{\"path\":\"$.command\",\"op\":\"regex\",\"value\":\"rm -rf\"}]}".
Um args_match_json vazio ou ausente é vacuamente verdadeiro — a regra
corresponde ao seu glob de nome de ferramenta sozinho, exatamente como uma regra
só-de-nome faz.
3. Operadores
Sete operadores compõem o vocabulário fechado. O console valida o operador e a forma de seu valor quando você salva, então uma cláusula malformada nunca persiste.| Operador | Corresponde quando |
|---|---|
eq | Igualdade escalar (números comparados numericamente; uma incompatibilidade de tipo é sem correspondência). |
contains | Substring — ambos os operandos devem ser strings. |
regex | Um padrão Go RE2 corresponde ao valor string (tempo linear, sem backreferences). |
in | O valor é um elemento do array JSON fornecido. |
cidr_match | O IP string cai dentro do CIDR fornecido. |
gt / lt | Maior-que / menor-que numérico (strings não são coercidas). |
4. Sintaxe de path
Opath de uma cláusula é um pequeno subconjunto de JSONPath sobre o objeto
de argumentos da ferramenta:
$.foo, $.foo.bar — acesso a campo
$.foo, $.foo.bar — acesso a campo
Lê um campo de objeto de nível superior ou aninhado pelo nome.
$.foo[0], $.arr[1].k — indexação de array
$.foo[0], $.arr[1].k — indexação de array
Indexa em um array, opcionalmente continuando nos campos do elemento.
$ — o objeto de argumentos inteiro
$ — o objeto de argumentos inteiro
Corresponde contra o blob de argumentos inteiro (útil com
contains ou
regex para uma varredura grossa).5. Um exemplo trabalhado
Você deixa seus agentes rodaremshell.exec livremente, mas um force-delete
recursivo nunca deve chegar ao shell. Crie uma regra de stage response que
nega shell.exec apenas quando o argumento de comando parece destrutivo.
Abra o editor de regras
No console, abra a política de firewall vinculada à chave do seu agente (ou
o padrão do workspace) e adicione uma regra. Editar políticas é uma ação
Developer+ — Members podem ler políticas mas não escrevê-las.
Corresponda à ferramenta no stage response
Defina o stage como
response e o glob de ferramenta como shell.exec. O
stage response carrega os argumentos escolhidos pelo modelo, dos quais a
cláusula precisa.Adicione a cláusula de argumento
Adicione uma cláusula
regex em $.command, depois defina o veredito como
deny:args_match_json é uma string codificada em JSON; seu valor decodificado é o
objeto { "clauses": [ … ] } mostrado no §2.Faça dry-run antes de depender dela
Use a aba Test para avaliar a regra
contra uma chamada
shell.exec de amostra. Ela retorna o veredito, a regra
correspondente e o motivo — nada é despachado e nada é persistido.shell.exec com "command": "ls -la" flui como antes, enquanto
"command": "rm -rf /var" é negado. Um deny em response deixa o modelo ver um
erro de ferramenta e reagir — escolher outra ferramenta, perguntar ao usuário,
ou parar — em vez de quebrar.
6. As cláusulas falham fechadas — a regra, não a requisição
Se uma cláusula não pode ser avaliada — o path não resolve, os argumentos são malformados, ou um regex / CIDR é inválido — a cláusula avalia para false e a regra simplesmente não dispara. A chamada cai para a próxima regra ou odefault_verdict da política. Uma cláusula quebrada nunca auto-nega e nunca
perturba o relay.
7. Combinando cláusulas com o resto de uma regra
As cláusulas de argumento se empilham com tudo o mais que uma regra expressa — elas são uma condição combinada com AND entre várias:| Combine com | Efeito |
|---|---|
tool_name_glob | A cláusula só roda uma vez que o nome da ferramenta corresponde — nome primeiro, argumentos depois. |
skill_name_glob | Controle os argumentos da mesma ferramenta de forma diferente por skill proprietária (ex.: mais estrito em community.*). |
verdict | Combine cláusulas com deny, sanitize, pending_approval ou cap_cost, não apenas deny. |
| Múltiplas cláusulas | Todas devem valer — combine uma verificação regex de comando com uma verificação in de ambiente para dar escopo apertado a um deny. |
8. Onde isso se encaixa
Regras do Firewall
A referência de regras completa — globs, cláusulas, sanitizers, egress e
sequências.
Cookbook de argumentos
Receitas
args_match_json para copiar-colar das formas perigosas comuns.Stages do firewall
Por que cláusulas de argumento vivem em
response e mcp, não em inbound.Bloquear ferramentas
Negue uma ferramenta totalmente quando nenhum argumento é seguro.
