Invoke Human

Approvals that survive closing the laptop

An approval is a handoff. The agent writes the action. You say yes or no before it sends, pays, publishes, signs, or deletes.

Updated October 25, 2026

Agents ask for permission in a way that is easy to rubber-stamp. “Shall I continue?” is not an approval. It is a stall. The fix is not a fancier dialog. It is making the agent write down the action.

What an approval is here

Invoke Human does not publish a separate approve-or-deny tool. send_handoff sends the request, including an approval. wait_for_handoff waits until you finish. get_handoff_status and get_handoff_result read it without holding the turn open. You reply in the iPhone, iPad, or Mac app. The reply goes back to the agent that asked, with attribution for who answered and how. A structured form is send_ui_handoff after validate_ui. An HTML page the person taps or types into is send_html_handoff.

That is enough for a real approval if the payload is specific:

You answer in your own words, or by filling the form the agent sent. The agent is then supposed to obey the answer. The product returns your answer. It does not sandbox the agent’s next move. If the next move is a shell command on your laptop, the client’s own permission prompt is still the gate. Turn to the human-in-the-loop page if that split is unclear. It is the distinction that keeps a phone approval from becoming a remote shell.

When to send one

Send a handoff when a person who is not watching the terminal has the context. A billing change. A message to a customer. A migration. A design choice the agent has narrowed to two options and should not pick from vibes.

Do not send one for every file write. You will ignore the inbox, and then the inbox is theater. The client’s local prompt already covers “this process wants to edit a file.”

send_handoff is the better call when you might answer in an hour, then wait_for_handoff or get_handoff_result later. wait_for_handoff is the better call when you are at the desk and the agent should block. Codex’s default tool timeout is 60 seconds, which is a footgun for the blocking call. The Codex guide says how to raise it. Other clients have their own limits. If a call dies while you are still reading, look at the client timeout before you look at the server.

Across agents

An approval from Cursor and an approval from Claude are the same kind of item once both clients use your account. The multi-agent page is that setup. Nothing in the approval itself merges the two sessions. Each answer returns only to its caller.

If your workflow is “design a review template, then POST a webhook when someone clicks,” that is a different product. gotoHuman documents review types and webhooks. share_handoff invites someone onto a handoff, and delegate_handoff forwards one you can reassign. Invoke Human returns the answer over MCP. Client setup for the approval is on the human-in-the-loop MCP hub.

The privacy policy is where the handoff text lives, and how to delete it. Approvals often contain the sensitive part of a change. Treat the handoff body like you would treat a ticket.

Questions

Is there an approve button API?

No separate approve tool is published. An approval is a handoff. You answer in the app, and that answer is what the agent gets back, with attribution.

Should I turn off the client's permission prompt?

No. The permission prompt is the client asking if a tool may run on that machine. An Invoke Human approval is a decision you make about the work. Use both when the work is risky.

What should the agent put in the handoff?

The action it will take if you say yes, the action it will take if you say no, and the facts you need in order to choose. A handoff that says can I proceed, with nothing attached, wastes the round trip.