Decide approvals from an app
For: people running and reviewing agents.
From your own app
The runtime API has ListApprovals, DecideApproval (with args_sha256, and edited_arguments, confirm, allow_for_seconds and shown_ms, how long your app showed the card) and GetApprovalArguments. Test approvals never reach an API key or a person acting through an app: an app's queue holds only real approvals. The edge records who decided from the caller's credentials; a request cannot name someone else.
A signed webhook tells your app when an approval waits; your app decides with the API key the webhook's target names (keys that decide) and polls ListApprovals for the outcome. An app whose people decide for themselves acts as each of them (apps that act as their people); an app built on an AG-UI client gets approvals and questions as the protocol's interrupts, which only the person resumes: see AG-UI.
approval:, hooks that answer escalate, and the tools of a harness session listed in the agent's harness.requires_approval, which wait as claude-agent-sdk.Bash and the like. Budget requests wait in the same inbox. Deadlines, the escalation ladder and edits apply to all of them.Agents can also ask a person a question and wait for the answer: see Asking people. Questions wait in the same inbox.