allow, 모든 deny,
모든 보류된 승인, 모든 shadow mode “차단되었을 것”이 여기에 떨어지며,
필터링 가능하고 그것을 생성한 에이전트 실행으로 상관됩니다.
이벤트 피드는 읽기에 **Developer+**입니다. 각 행은 툴 호출 인자 스냅샷을
위해 상한이 있는
args_summary 필드를 예약하므로, 표면이 Member 판독
가능한 것들(설정, 정책, discovered tools,
이상 피드) 위에 위치합니다. 이 모든 것을 콘솔에서
구성하세요 — 이것들은 릴레이 호출이 아니라 세션 인증 라우트입니다.1. 이벤트 피드에 무엇이 떨어지는가
엔진이 실행하는 모든 평가가 기록됩니다 — block만이 아닙니다.allow과
audit은 deny이 하는 것과 정확히 같이 행을 남기므로, 피드는 예외
로그가 아니라 완전한 추적입니다.
행의 판정은 에이전트가 실제로 본 것입니다:
| Verdict | 의미 |
|---|---|
allow / audit | 통과시킴; audit은 그것을 관찰하고 싶었던 것으로 플래그. |
deny | 차단됨 — inbound에서 firewall_blocked(HTTP 400), mcp에서 툴 오류. |
sanitize | 호출의 인자에서 매치된 부분 문자열을 가린 채로 전달. |
pending_approval | 사람을 위해 보류; 행은 호출이 게이트되었음을 표시. |
observe | 어떤 정책도 매치 안 함 — observe-mode 커버리지 갭. |
audit로
강등되고 이유에 [shadow] would …가 접두되므로, 피드는 정책을 라이브로
전환하기 전에 그것이 무엇을 차단했을지 정확히 보여줍니다.
2. 각 이벤트가 무엇을 기록하는가
단일 이벤트는 비정규화된 스냅샷입니다 — 아무것에도 다시 조인하지 않고 결정을 재구성하기에 충분:결정
결정
verdict, surface(inbound / response / mcp / egress),
tool_name, 그리고 사람용 reason(“destructive shell command”,
“egress to 169.254.169.254 denied”). 매치한 규칙에 레이블이 있었으면,
policy_name과 rule_label이 발동한 정확한 규칙을 명명합니다 —
그래서 행이 작성한 라인으로 곧장 가리킵니다.상관 키
상관 키
request_id는 이벤트를 요청 로그에 조인합니다; conversation_id는
다중 턴 세션을 그룹화합니다; agent_run_id(step_id /
parent_step_id와 함께)는 그것을 하나의 완전한 에이전트 실행과 툴을
요청한 LLM 호출에 묶습니다. 이것들이 피드를 평평한 목록이 아니라
트레이스로 만드는 것입니다 —
§4 참조.출처
출처
token_name, model_name, 그리고 호출자 ip — 호출 뒤의 키, 모델,
그리고 출처. skill_name은 호출이 하나에 귀속될 수 있을 때 소유
skill을 명명하고, quarantine은
skill 격리 보류를 플래그합니다.인자 & egress
인자 & egress
args_summary는 상한이 있는 툴 호출 인자 스냅샷 필드입니다(이 표면이
Developer+인 이유). egress 이벤트에서, egress_host는 판단된
아웃바운드 목적지를 기록합니다.3. 하나의 구체적인 예
에이전트가rm -rf /data인 shell.exec 호출을 발행했고, deny 규칙이
그것을 잡았으며, 그 한 결정을 보고 싶습니다. 피드를 판정과 툴로
필터링하세요:
$ORCA_CONSOLE_TOKEN은 sk-orca-… 릴레이 키가 아니라 세션 / 액세스
토큰입니다. /api/workspace/firewall/* 라우트는 콘솔 인증이고 역할
게이트됩니다; /v1/* 트래픽만 릴레이 키를 사용합니다.4. 실행 및 세션으로 상관
모든 이벤트가agent_run_id와 conversation_id를 담는 이유는 호출을
고립되게 보는 것을 멈추고 이 에이전트가 전체 실행에 걸쳐 무엇을
했는지를 묻기 시작할 수 있게 하기 위함입니다:
| 필터 | 답하는 질문 |
|---|---|
run_id=<run> | 한 에이전트 실행의 모든 판정 — 전체 액션 추적. |
session_id=<conv> | 다중 턴 대화 전반의 모든 판정. |
verdict=deny,pending_approval | 한 질의로 “무엇이 멈추거나 보류되었나” 뷰. |
surface=egress | 아웃바운드 목적지 결정만 — 유출 렌즈. |
since / until(unix 초)과 페이징을 위한 limit /
skip을 받습니다. 롤업 뷰 — 실행이나 세션당 한 행으로 판정별 분류,
구별되는 툴과 모델, 그리고 처음/마지막 관측 포함 — 의 경우, 콘솔은
GET /api/workspace/firewall/events/aggregate?group_by=run(또는
group_by=session)을 읽고, 에이전트 트레이스 트리는 /trace/by-run을
읽습니다. 둘 다 원시 피드와 같은 Developer+입니다.
5. 보존과 삭제
Firewall 이벤트는 자체 보존 지평을 지닙니다 — 30일 기본값으로, 서버에서 365일 하드 최대로 클램프됩니다. 각 이벤트는 만료와 함께 쓰이고 TTL 인덱스에 의해 자동으로 노화됩니다; 피드의 어떤 것도 보존 설정을 지나서 살아남지 않습니다. 삭제권 요청도 여기에 연쇄됩니다: 사용자를 삭제하면 30일 유예 기간이 시작되고, 그 후 그들의 PII가 지워지고 그들의 firewall 이벤트가 같은 범위의 요청 로그 및 guardrail 매치와 함께 퍼지됩니다.다음으로 갈 곳
Verdicts
피드의 각 판정이 실제로 호출에 무엇을 했는가.
Shadow mode
강제하기 전에 “차단되었을 것” 모드로 피드를 읽습니다.
스테이지 & 표면
surface 필드가 명명하는 네 표면.Firewall 레퍼런스
전체 정책, 규칙, 그리고 API 레퍼런스.
