shell.exec, edita arquivos, busca URLs e carrega skills da
comunidade — qualquer uma das quais pode rm -rf um volume, ler um .env ou
exfiltrar para um host atacante. Esta receita restringe essa superfície com o
Firewall: negue shell destrutivo, valide os argumentos
das chamadas que você de fato permite, cerque o egress e retenha as operações
genuinamente arriscadas para um humano. Nada disso toca no código do seu agente
— a política vive no gateway e é aplicada na próxima chamada.
Tudo abaixo é configurado no console (Firewall → Posture / Policies). Essas
rotas de gerenciamento usam a sua sessão de console, não uma chave de relay.
Apenas as chamadas
/v1/* que o seu agente faz carregam uma chave sk-orca-….
Edições de política exigem o papel Developer.1. Comece observando, não bloqueando — a linha de base do agente de código seguro
Não crie regras às cegas. Dê ao agente sua chavesk-orca-…, depois abra
Firewall → Posture e aplique o
nível de autonomia
balanced. Em uma transação isso audita cada chamada de ferramenta,
sinaliza PII e nega shell destrutivo — então a pior ação já está cercada
enquanto você aprende o resto do comportamento do agente a partir do tráfego
real.
Deixe-o rodar, depois leia Firewall → Discovered tools: cada ferramenta que
o workspace viu, marcada covered (uma regra se aplica) ou gap (nenhuma
se aplica). Essa lista é o rascunho da sua allow-list. Quando o feed parecer
certo, mude para tight (default-deny) ou crie a política direcionada abaixo.
2. Negue shell destrutivo — o piso inegociável
A regra mais importante para um agente de código é nenhum shell destrutivo. Os níveis de autonomiabalanced e tight já entregam isto como o preset
Block destructive shell, que materializa regras deny reais e editáveis
cobrindo tanto os nomes de ferramenta diretos do workspace (shell.*, bash,
cmd.*, powershell.*, exec.*) quanto as formas com namespace de MCP que um
servidor registrado expõe (*.shell.*, *.cmd.*, …).
Se você preferir escopar isto mais apertado que “negar todo shell”, crie uma
regra que só nega os comandos destrutivos e audita o resto. Uma regra
corresponde a um glob de nome de ferramenta mais um predicado de argumento
opcional (JSONPath contra os argumentos da chamada):
Negue rm -rf mas permita outras chamadas de shell
Negue rm -rf mas permita outras chamadas de shell
Em Firewall → Policies, adicione uma regra acima do seu padrão:
- Tool glob:
shell.exec - Args match (cláusula JSONPath):
- Veredito:
deny
eq, contains,
regex, in, cidr_match, gt, lt. Uma chamada cujo $.command
corresponde ao regex é bloqueada; todo o resto cai para a próxima regra.Como é o block
Como é o block
Uma chamada negada na superfície inbound retorna HTTP 400 com o
código de erro
firewall_blocked e uma mensagem nomeando a ferramenta e o
motivo. Uma chamada despachada através do gateway MCP volta como um erro de
ferramenta (firewall deny: …) para que o modelo possa reagir em vez de
quebrar. Blocks inbound disparam antes da chamada ao modelo upstream, então
não custam tokens de modelo.3. Valide argumentos nas ferramentas que você mantém
Permitir uma ferramenta não é o mesmo que permitir cada argumento dela. O mesmo predicado JSONPath que escopa um deny permite restringir o formato de uma chamada permitida — para quedb.query não possa carregar um DROP, e
file.write não possa escapar de um diretório.
Bloqueie um SQL DROP
Glob
db.query, cláusula
{"path":"$.sql","op":"regex","value":"(?i)\\bdrop\\b"}, veredito
deny.Redija um segredo nos args
O veredito
sanitize redige substrings correspondentes dos argumentos
da chamada de ferramenta antes que a chamada seja encaminhada. Ele nunca
toca no que uma ferramenta retorna; na superfície inbound (sem args em tempo
de chamada ainda) ele escala para um block.4. Controle o egress — cerque onde o agente pode alcançar
Um agente de código que pode buscar URLs pode ser guiado para SSRF (atingindo cloud-metadata ou um host interno10.x) ou usado para exfiltrar. O nível de
autonomia tight entrega um preset de SSRF que nega nomes de ferramenta no
formato de fetch (http_fetch, web_search, fetch_url, request e suas
formas <server>.*) de imediato.
Para controle em nível de destino, crie uma regra de egress. Regras de
egress escopam por host ou CIDR com entradas allow / deny, avaliadas na
superfície egress:
Nenhum preset entrega regras de egress baseadas em CIDR — o preset de SSRF
corresponde a nomes de ferramenta no formato de fetch. A denylist de
host/CIDR acima é uma que você mesmo cria. Veja
Pare a exfiltração para o padrão
completo.
5. Retenha operações arriscadas para um humano (HITL)
Algumas operações não deveriam ser auto-permitidas nem auto-negadas — um deploy, umgit push, uma migração destrutiva. Para essas, use o veredito
pending_approval. A chamada é retida, o agente recebe uma resposta “held” com
um id de aprovação, e um revisor a resolve fora de banda:
- Crie uma regra (ex.: glob
deploy.*, vereditopending_approval). - A chamada retida retorna HTTP 400
firewall_approval_pendingcom um id de aprovação. - Um revisor a aprova a partir do console (Developer+) ou via um callback de webhook assinado por HMAC.
- O agente consulta a aprovação, depois reenvia a chamada original com um
header
X-OrcaRouter-Firewall-Approvalde uso único — e o gateway a deixa passar aquela única vez.
6. Governe as skills e servidores MCP que ele carrega
Agentes de código puxam capacidades em tempo de execução — skills da comunidade, servidores MCP próprios. O Firewall governa ambos no gateway:- Skills são escaneadas em uma faixa de risco com um modo de enforcement
(
allow/quarantine/block). Uma skill auto-detectada é quarentenada — retida para aprovação — até que um revisor a libere. Veja Skills. - Servidores MCP que você registra despacham cada
tools/callatravés do gateway, que avalia cada um na superfíciemcpantes do dispatch. As credenciais são armazenadas criptografadas; uma sonda de saúde reportaok/degraded/down. Veja Servidores MCP e Endureça um agente MCP.
7. Verifique e observe
Antes de depender de uma política, faça um dry-run dela. A aba Test avalia uma chamada de ferramenta de amostra contra a política atual e mostra o veredito, a regra correspondente e o motivo — nada é despachado, nada persistido. Uma vez ao vivo, Firewall → Events / Runs é o registro de cada avaliação, filtrável por veredito, superfície, ferramenta e run, e o feed de anomalias sinaliza picos de taxa/custo contra a baseline aprendida do workspace,retry_loop e caminhos de ferramenta nunca antes vistos.
Recapitulação
Referência de Firewall
O plano de política completo — superfícies, vereditos, resolução, autonomia.
Regras de firewall
A linguagem de correspondência: globs, cláusulas de argumento, egress,
sequências.
Chamadas de ferramenta perigosas
A ameaça contra a qual esta receita defende.
Agência excessiva
Por que agentes superpermissionados são o risco central de agente.
Receita de agente autônomo
Restrinja um loop de agente totalmente autônomo de ponta a ponta.
Pare a exfiltração
Os padrões de egress e tríade letal em profundidade.
