allow, cada deny,
cada aprovação retida, cada “would-have” de shadow mode aterrissa aqui,
filtrável e correlacionado de volta à run de agente que o produziu.
O feed de eventos é Developer+ para leitura. Cada linha reserva um campo
args_summary limitado para um snapshot de argumento de chamada de ferramenta,
então a superfície se situa acima das legíveis por Member
(configurações, políticas, ferramentas descobertas,
o feed de anomalias). Configure tudo isso a partir do
console — essas são rotas autenticadas por sessão, não chamadas de relay.1. O que aterrissa no feed de eventos
Cada avaliação que o motor roda é registrada — não apenas os blocks. Umallow e um audit deixam uma linha exatamente como um deny deixa, então o
feed é uma trilha completa, não um log de exceções.
O veredito em uma linha é o que o agente de fato viu:
| Veredito | Significa |
|---|---|
allow / audit | Deixou passar; audit sinaliza como algo que você quis observar. |
deny | Bloqueado — firewall_blocked (HTTP 400) no inbound, erro de ferramenta no mcp. |
sanitize | Encaminhado com substrings correspondentes redigidas dos argumentos da chamada. |
pending_approval | Retido para um humano; a linha marca que a chamada foi gated. |
observe | Nenhuma política correspondeu — um gap de cobertura de observe-mode. |
audit e o motivo recebe o prefixo [shadow] would …,
então o feed mostra exatamente o que uma política teria bloqueado antes de
você ativá-la.
2. O que cada evento registra
Um único evento é um snapshot desnormalizado — suficiente para reconstruir a decisão sem fazer join de volta com nada:A decisão
A decisão
verdict, surface (inbound / response / mcp / egress),
tool_name, e um reason legível (“destructive shell command”, “egress to
169.254.169.254 denied”). Quando a regra correspondente tinha um label,
policy_name e rule_label nomeiam a regra exata que disparou — então a
linha aponta direto de volta para a linha que você escreveu.Chaves de correlação
Chaves de correlação
request_id faz join do evento com o log de requisições; conversation_id
agrupa uma sessão multi-turno; agent_run_id (com step_id /
parent_step_id) o liga a uma run de agente completa e à chamada de LLM que
solicitou a ferramenta. São essas que fazem do feed um trace, não uma
lista plana — veja §4.Proveniência
Proveniência
token_name, model_name, e o ip do chamador — a chave, o modelo e a
origem por trás da chamada. skill_name nomeia a
skill proprietária quando a chamada era
atribuível a uma, e quarantine sinaliza uma retenção por quarentena de
skill.Argumentos & egress
Argumentos & egress
args_summary é o campo de snapshot limitado de argumento de chamada de
ferramenta (o motivo de esta superfície ser Developer+). Em um evento de
egress, egress_host registra o destino outbound que foi julgado.3. Um exemplo concreto
Seu agente emitiu uma chamadashell.exec com rm -rf /data, uma regra deny
a pegou, e você quer ver aquela decisão. Filtre o feed por veredito e
ferramenta:
$ORCA_CONSOLE_TOKEN é seu token de sessão / acesso, não uma chave de
relay sk-orca-…. As rotas /api/workspace/firewall/* são autenticadas por
console e role-gated; apenas o tráfego /v1/* usa uma chave de relay.4. Correlacionar por run e sessão
O motivo de cada evento carregaragent_run_id e conversation_id é para que
você possa parar de olhar chamadas isoladamente e começar a perguntar o que
este agente fez ao longo de toda a sua run:
| Filtro | Pergunta que responde |
|---|---|
run_id=<run> | Cada veredito em uma run de agente — a trilha de ação completa. |
session_id=<conv> | Cada veredito ao longo de uma conversa multi-turno. |
verdict=deny,pending_approval | A visão “o que foi parado ou retido” em uma consulta. |
surface=egress | Apenas decisões de destino outbound — a lente de exfiltração. |
since / until (segundos unix) e limit /
skip para paginação. Para a visão consolidada — uma linha por run ou
sessão com um breakdown por veredito, ferramentas e modelos distintos, e
primeiro/último-visto — o console lê
GET /api/workspace/firewall/events/aggregate?group_by=run (ou
group_by=session), e a árvore de trace de agente lê /trace/by-run. Ambos
são Developer+, igual ao feed bruto.
5. Retenção e apagamento
Os eventos de firewall carregam seu próprio horizonte de retenção — um padrão de 30 dias, server-clamped a um máximo rígido de 365 dias. Cada evento é escrito com uma expiração e envelhecido automaticamente por um índice TTL; nada no feed vive além da sua configuração de retenção. Uma requisição de direito ao apagamento cascateia aqui também: deletar um usuário inicia um período de carência de 30 dias, após o qual seus PII são limpos e seus eventos de firewall são purgados junto com os logs de requisição e correspondências de guardrail do mesmo escopo.Para onde ir a seguir
Vereditos
O que cada veredito no feed de fato fez com a chamada.
Shadow mode
Leia o feed em modo “would-have” antes de aplicar o enforcement.
Stages & superfícies
As quatro superfícies que o campo
surface nomeia.Referência de firewall
A referência completa de política, regra e API.
