Skip to content

Security Audit Log Spec — Adversarial Sandbox

Specializes governance/audit/audit-log-spec.md for the adversarial sandbox. Required event schema for every test run.

Required fields (extends generic spec)

In addition to the generic fields, sandbox events require:

Field Type Notes
test_id string Unique per test run.
target_repo string org/repo@commit.
test_class enum sast | dast | fuzz | dep_scan | secret_scan | adversarial_llm.
tool_identity string Tool / model name + version.
finding_id string (optional) Set on finding-related events.
severity enum (optional) Set on finding events.
iteration int (optional) Loop iteration count.

Event vocabulary

Action When
sandbox_launched Container started and isolation checks passed.
sandbox_torn_down Container stopped and volume sanitized.
tool_invoked A test tool or adversarial-LLM workflow began.
tool_completed The same finished.
finding_emitted A finding was filed.
fix_proposed A patch was proposed for a finding.
fix_applied A patch was applied in sandbox branch.
fix_reverted A patch was reverted.
signoff_recorded Loop ended with explicit signoff.
acceptance_recorded A finding was accepted (not fixed) with rationale.
network_attempt Sandbox attempted outbound traffic (always logged).
escape_suspected Suspected sandbox escape; triggers SPB-14.

Lifecycle correlation

  • All events in a run share the same correlation_id == test_id.
  • All events in a fix loop share an additional parent_event_id chain to the originating finding_emitted.

Retention

  • Findings, fixes, signoffs: 365 days minimum.
  • Tool-invocation events: 180 days minimum.
  • Logs are tamper-evident; all severity ∈ {critical, high} events also signed.

Sample event

{
  "id": "8a1f...",
  "ts": "2026-05-04T19:55:00Z",
  "actor": "agent:sec-tester",
  "actor_credential_label": "sandbox-sast-runner",
  "runtime": "local",
  "action": "finding_emitted",
  "target": "/sandbox/target/services/api/handler.py",
  "scope": "sandbox-rw",
  "outcome": "success",
  "data_classification": "internal",
  "correlation_id": "test-3d0a...",
  "test_id": "test-3d0a...",
  "target_repo": "myorg/api@e3b2",
  "test_class": "sast",
  "tool_identity": "semgrep@1.74.0",
  "finding_id": "F-0017",
  "severity": "high"
}