Skip to main content

Enforcement

Read-only view of enforcement actions and review state. Decisions live on the gate service, never here.

MethodPathScopeSummary
GET/enforcement/{action_id}readGet Action
GET/enforcement/agent/{agent_id}/latestreadLatest For Agent
GET/enforcement/pendingreadPending Actions

Try it

curl -sf -H "Authorization: Bearer $VIGIL_KEY" "$VIGIL_URL/enforcement/pending"

Routes

GET /enforcement/{action_id}

Get Action. Scope: read.

ParameterInRequiredTypeNotes
action_idpathyesinteger

Response 200:

{
"id": 0,
"org_id": 0,
"agent_id": "string",
"triggering_event_id": 0,
"gate_status": "pass | hold | alert | collapse",
"bii_at_trigger": 0,
"reason": "string",
"actioned_at": "2026-09-08T00:00:00Z",
"hold_expires_at": "2026-09-08T00:00:00Z | null",
"policy_digest": "string",
"requires_human_review": true,
"reviewed_by": "string | null",
"reviewed_at": "2026-09-08T00:00:00Z | null",
"review_outcome": "string | null",
"review_note": "string | null"
}

GET /enforcement/agent/{agent_id}/latest

Latest For Agent. Scope: read.

The most recent enforcement action for an agent; its gate_status is the agent's current gate.

ParameterInRequiredTypeNotes
agent_idpathyesstring

Response 200:

{
"id": 0,
"org_id": 0,
"agent_id": "string",
"triggering_event_id": 0,
"gate_status": "pass | hold | alert | collapse",
"bii_at_trigger": 0,
"reason": "string",
"actioned_at": "2026-09-08T00:00:00Z",
"hold_expires_at": "2026-09-08T00:00:00Z | null",
"policy_digest": "string",
"requires_human_review": true,
"reviewed_by": "string | null",
"reviewed_at": "2026-09-08T00:00:00Z | null",
"review_outcome": "string | null",
"review_note": "string | null"
}

GET /enforcement/pending

Pending Actions. Scope: read.

Actions that require human review and have no outcome yet, newest first.

ParameterInRequiredTypeNotes
limitquerynointeger

Response 200:

[
{
"id": 0,
"org_id": 0,
"agent_id": "string",
"triggering_event_id": 0,
"gate_status": "pass | hold | alert | collapse",
"bii_at_trigger": 0,
"reason": "string",
"actioned_at": "2026-09-08T00:00:00Z",
"hold_expires_at": "2026-09-08T00:00:00Z | null",
"policy_digest": "string",
"requires_human_review": true,
"reviewed_by": "string | null",
"reviewed_at": "2026-09-08T00:00:00Z | null",
"review_outcome": "string | null",
"review_note": "string | null"
}
]

Generated from openapi.json (VIGIL 0.2.0). Scopes follow the router dependencies in VIGIL_SPEC.md section 4.2.