Skip to content

CLI (evidence-gate)

The same replay and audit-verify flows, from a shell — the Phase-1 onboarding surface, no Python required beyond an importable extractor module.

# Diagnose: what would the gate have decided on yesterday's trace?
evidence-gate replay trace.json \
  --policy policies --mapping langsmith \
  --action 'send_*=marketing.send_sequence' \
  --extractor 'get_optin=myapp.extractors:optin'
#   s42  ALLOW  executed=true
#   s99  BLOCK  executed=false — missing required evidence for 'marketing.opt_in'
#   Coverage:  gated: send_marketing | ! UNCLASSIFIED: wire_transfer (x1)

# Verify a hash-chained audit log written by AuditLog(path=...)
evidence-gate audit verify audit.jsonl        # exit 0 = intact, 1 = tampered

--mapping takes a preset (langsmith / langfuse / openai) or a TraceMapping JSON file; --extractor TOOL=module:function registers an evidence extractor (uvicorn-style import). Every run prints a coverage section that names any unclassified tool — a call reached in the trace that no --action or --extractor accounts for — so residual risk is surfaced, never silently missed. --now injects the evaluation time for reproducible runs.