Skip to main content
Every resolved gateway approval records which operator approved it, and a request can optionally be bound to a specific reviewer so only they can resolve it.

Quick Start

1

Approve — attribution is automatic

The gateway captures the resolving operator on the audit trail. No extra code is needed on the agent side.
2

Bind a request to specific reviewers

Pass authorized_reviewers so only listed operators can resolve the request.

How Resolver Identity Is Captured

The POST /approval/resolve endpoint derives a non-secret operator identity from the authenticated request, in this precedence order. Set X-Operator-Id from a proxy or SSO layer so operators sharing one gateway token still get distinct audit attribution. Holders of the same token collapse to one token-digest identity by design.
The identity flows into Resolution.resolver and is recorded on the audit trail and the allow-always grant. When no resolver is supplied, attribution falls back to the legacy "gateway" / "gateway:human" constant.

Per-request Reviewer Custody

Bind an approval to specific reviewers so only they can resolve it.
The 404 for an unauthorised resolver uses the same status as “not found” so the caller cannot enumerate request IDs.

Best Practices

Operators sharing one gateway token collapse to a single token-digest identity. Stamp X-Operator-Id per user upstream so each decision is attributed to an individual.
The APPROVALS scope is coarse — any holder may resolve any request. Bind high-risk requests to named reviewers with authorized_reviewers.
For gateway-resolved requests, approver now carries the real principal, so reports can answer “who approved this exec?”.

Gateway Scoped Approvals

Durable, agent-scoped allow-always grants

Gateway Operator Scopes

Coarse authorisation for admin endpoints

Gateway Approval Durability

Pending approvals survive restart

Audit Logging

The approver field on audit entries