Decisions & Overrides

Explain a governance decision

Returns the explanation for a decision id (ADR-043): matched policies, verdict and reason, risk level, override availability (and any existing override id), the caller's 24h hit count for the first matched policy, and policy version drift (version at decision time vs latest). Tenant-scoped via X-Tenant-ID; a decision belonging to another tenant returns 404 (not 403) so the endpoint is not an existence oracle.

get/api/v1/decisions/{id}/explain

Request

Path parameters

idstring required

Decision id

Headers

X-Tenant-IDstring required

Tenant identifier scoping the request. The AxonFlow Agent gateway sets this header after authentication; the orchestrator fails closed when it is absent (401 on audit/decision endpoints, 400 on others — see each operation). Clients cannot widen their scope through it: handlers force the tenant filter from this header, never from the request body.

X-User-Emailstring

Caller identity used for the per-user historical hit count (falls back to X-User-ID)

Response

Decision explanation

decision_idstring
timestampstring date-time
decisionstring

Verdict echoed verbatim from the audit row's policy_decision column (not normalized), so historical spellings can appear

reasonstring
risk_levelstring
override_availableboolean

Always false from v11.0.0: session overrides are retired (PRD v11 §1.5, #4252), so explain offers none.

override_existing_idstring

Not set from v11.0.0: explain offers no override, and the step gate no longer reads one (#4252).

historical_hit_count_sessioninteger

Rolling-24h hit count for the first matched policy by this user

policy_source_linkstring
tool_signaturestring
policy_version_at_decisioninteger

Policy version recorded at decision time; omitted when unknown

latest_policy_versioninteger

Current head version of the first matched (static) policy

contextobject
context_truncatedboolean

Changes

No recorded changes to this operation across all 1 revision of this API.