allow, chaque
deny, chaque approbation mise en attente, chaque « aurait fait » du mode
shadow atterrit ici, filtrable et corrélé à l’exécution d’agent qui l’a
produit.
Le flux d’événements est en lecture Developer+. Chaque ligne réserve un
champ
args_summary plafonné pour un instantané des arguments de l’appel
d’outil, de sorte que cette surface se situe au-dessus de celles lisibles
par les Members (réglages, politiques, outils découverts,
le flux d’anomalies). Configurez tout cela depuis la
console — ce sont des routes authentifiées par session, pas des appels de
relais.1. Ce qui atterrit dans le flux d’événements
Chaque évaluation effectuée par le moteur est enregistrée — pas seulement les blocks. Unallow et un audit laissent une ligne exactement comme un
deny, de sorte que le flux est une trace complète, pas un journal
d’exceptions.
Le verdict d’une ligne est celui que l’agent a réellement vu :
| Verdict | Signifie |
|---|---|
allow / audit | Laissé passer ; audit le marque comme quelque chose que vous vouliez surveiller. |
deny | Bloqué — firewall_blocked (HTTP 400) en inbound, erreur d’outil sur mcp. |
sanitize | Transmis avec les sous-chaînes correspondantes redactées des arguments de l’appel. |
pending_approval | Mis en attente d’un humain ; la ligne marque que l’appel a été filtré. |
observe | Aucune politique n’a correspondu — une lacune de couverture en mode observe. |
audit et la raison est préfixée [shadow] would …, de
sorte que le flux vous montre exactement ce qu’une politique aurait bloqué
avant que vous ne la passiez en live.
2. Ce que chaque événement enregistre
Un seul événement est un instantané dénormalisé — assez pour reconstruire la décision sans avoir à joindre quoi que ce soit :La décision
La décision
verdict, surface (inbound / response / mcp / egress),
tool_name, et une reason humaine (« destructive shell command »,
« egress to 169.254.169.254 denied »). Lorsque la règle correspondante
avait un label, policy_name et rule_label nomment la règle exacte qui
s’est déclenchée — de sorte que la ligne pointe directement vers la ligne
que vous avez écrite.Clés de corrélation
Clés de corrélation
request_id joint l’événement au log de requête ; conversation_id
regroupe une session multi-tours ; agent_run_id (avec step_id /
parent_step_id) le relie à une exécution d’agent complète et à l’appel
LLM qui a demandé l’outil. Ce sont ces clés qui font du flux une trace,
pas une liste plate — voir §4.Provenance
Provenance
token_name, model_name, et l’ip de l’appelant — la clé, le modèle
et l’origine derrière l’appel. skill_name nomme le
skill propriétaire lorsque l’appel lui
était attribuable, et quarantine signale une mise en attente de
quarantaine de skill.Arguments & egress
Arguments & egress
args_summary est le champ d’instantané plafonné des arguments de
l’appel d’outil (la raison pour laquelle cette surface est Developer+).
Sur un événement egress, egress_host enregistre la destination
sortante qui a été jugée.3. Un exemple concret
Votre agent a émis un appelshell.exec avec rm -rf /data, une règle
deny l’a attrapé, et vous voulez voir cette décision précise. Filtrez le
flux par verdict et outil :
$ORCA_CONSOLE_TOKEN est votre token de session / d’accès, pas une clé
de relais sk-orca-…. Les routes /api/workspace/firewall/* sont
authentifiées par console et soumises à des rôles ; seul le trafic /v1/*
utilise une clé de relais.4. Corréler par exécution et session
La raison pour laquelle chaque événement porteagent_run_id et
conversation_id est que vous puissiez cesser de regarder les appels
isolément et commencer à demander qu’a fait cet agent sur toute son
exécution :
| Filtre | Question à laquelle il répond |
|---|---|
run_id=<run> | Chaque verdict d’une exécution d’agent — la trace d’actions complète. |
session_id=<conv> | Chaque verdict à travers une conversation multi-tours. |
verdict=deny,pending_approval | La vue « ce qui a été arrêté ou mis en attente » en une seule requête. |
surface=egress | Uniquement les décisions de destination sortante — la lentille d’exfiltration. |
since / until (secondes unix) et
limit / skip pour la pagination. Pour la vue agrégée — une ligne par
exécution ou session avec une répartition par verdict, des outils et modèles
distincts, et première/dernière apparition — la console lit
GET /api/workspace/firewall/events/aggregate?group_by=run (ou
group_by=session), et l’arbre de trace d’agent lit /trace/by-run. Les
deux sont Developer+, comme le flux brut.
5. Rétention et effacement
Les événements firewall portent leur propre horizon de rétention — un défaut de 30 jours, plafonné côté serveur à un maximum dur de 365 jours. Chaque événement est écrit avec une expiration et purgé automatiquement par un index TTL ; rien dans le flux ne vit au-delà de votre réglage de rétention. Une requête de droit à l’effacement se propage aussi ici : supprimer un utilisateur démarre une période de grâce de 30 jours, après laquelle sa PII est purgée et ses événements firewall sont purgés en même temps que les logs de requête et les correspondances de guardrail de la même portée.Où aller ensuite
Verdicts
Ce que chaque verdict du flux a réellement fait à l’appel.
Mode shadow
Lisez le flux en mode « aurait fait » avant d’appliquer.
Étapes & surfaces
Les quatre surfaces que le champ
surface nomme.Référence Firewall
La référence complète des politiques, règles et API.
