Why it matters
For high-impact actions (payments, account changes, deletions),approve prevents automatic execution until a human approves.
Create a gated action
awaiting_approval.
Four approval paths
1) Magic-link email
1) Magic-link email
Pass Requires
notify: { email: "[email protected]" } when creating the action. SafeFetch sends an email with approve and reject buttons. Clicking approve or reject takes no additional setup — it resolves the action and redirects to the receipt page.RESEND_API_KEY to be set in your environment. If unset, the action is still created but no email is sent.2) In-conversation via MCP
2) In-conversation via MCP
Agent calls
approve tool after explicit human confirmation.3) Callback notification path
3) Callback notification path
Your app receives action events via
callback, prompts a reviewer, then calls approve/cancel via API.4) Direct API approval call
4) Direct API approval call
Backend or operator console calls
POST /v1/actions/{id}/approve.Incompatibility with sync: true
approve: true cannot be combined with sync: true. Synchronous mode blocks the request until the action completes — that’s incompatible with waiting for a human decision. Attempting both returns a 400 with error code invalid_sync.
Rejecting an action
Reject by cancelling while inawaiting_approval: