Skip to main content
Approval-bound actions pause before executing and wait for a human decision. Invoke stages the action, notifies the appropriate reviewer, and revalidates state before the action runs — so approvals granted on stale context never cause unintended side effects.

How approvals work

1

Agent requests an approval-bound action

The agent calls invoke.call() with a tool classified as approval-bound. Invoke immediately stages the action and returns pending_approval.
const result = await invoke.call({
  tool: "issue_refund",
  params: { customer_id: "cust_123", amount: 5000 },
  agentId: "billing-agent",
  idempotencyKey: "refund:cust_123:5000"
})

// result.status === "pending_approval"
2

Invoke notifies the reviewer

The staged action appears in your Invoke dashboard. The reviewer sees the tool, parameters, and the agent that requested it.
3

Reviewer approves or rejects

The reviewer makes a decision in the dashboard or via the API.
  • Approved → Invoke proceeds to state revalidation
  • Rejected → Invoke returns blocked to the agent
4

State revalidated before execution

Before the approved action runs, Invoke revalidates the current state against the conditions that existed when approval was granted.If state has drifted — the customer was already refunded, the deployment status changed — Invoke returns replan_required instead of executing. The stale approval never fires.

Why state revalidation matters

Approvals can have long delays between grant and execution. In that window:
  • The customer may have already received a refund through another channel
  • The deployment may have rolled back
  • The target record may have changed
Without revalidation, an approved action executes against a world that no longer matches the context in which it was approved. Invoke catches this automatically.

Approval outcomes

StatusMeaning
pending_approvalAction staged, waiting for reviewer decision
executedApproved and state validated, action ran
blockedRejected by reviewer
replan_requiredApproved but state drifted before execution

Next steps