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.
Defence in depth with the core SDK. Since PraisonAI #4950, the core ApprovalRegistry also honours ApprovalRequest.liveness at the resolution boundary. A gateway request that binds liveness is re-checked twice: once by the gateway resolve() boundary and once by the core registry before persisting a grant. Backends that bypass the gateway still get the core fail-closed guarantee automatically. See Approval Protocol โ†’ Live-Authority Binding.

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