Confirmation
Confirmation makes a call to a marked operation wait until a person approves it. You mark the operations on the API, and each key or user decides what happens when its client calls one. The person approves inside the client where the model runs.
How it works
Two settings control confirmation, and they are made in two places.
Which operations require confirmation is set on the API, in its Operations tab. The analysis proposes it for destructive writes and you can change it. It applies to every gateway that serves the API. See Mark an operation as requiring confirmation.
What happens when a client calls one is set on the credential. Each key or user has one of four choices.
| Choice | What happens |
|---|---|
| Refuse | The operation is refused with requires_confirmation and hidden from the client. |
| Ask the person | The call waits until the person approves it, inside the client. |
| Ask the agent | The call runs. The model sees that the operation is marked as requiring confirmation and decides whether to ask the person. Nothing enforces it. |
| Run without asking | The call runs with no confirmation. |
A key or user created from the Access tab starts on Refuse. A user created by the New Gateway wizard under People using chat and coding agents starts on Ask the person. To change it, see Set how a credential confirms writes.
What the person sees with Ask the person
The gateway asks through the client, in the best way that client supports.
| Client | How the person is asked |
|---|---|
| Claude Code | The client's own confirmation dialog (MCP elicitation). |
| claude.ai, ChatGPT | The Faustine confirmation card, shown in the conversation. |
| A client that supports neither | The call is refused, not run. The model receives the reason and can relay it. |
The confirmation dialog
A client that supports MCP elicitation shows its own dialog, with the operation and its arguments. For a script that reached several operations, the dialog lists each one, all selected, and the person clears the ones to leave out. The person accepts or declines. The client then repeats the call with the answer, and the gateway runs what was approved.
The confirmation card
In a client that renders MCP Apps, the call returns a notice that it is paused and the model calls the review_pending tool. The client renders the card in the conversation.
The card is titled Approve this operation? or, for several, Approve N operations?. It lists each operation with its arguments, and has two buttons: Approve and Reject all. When the person selects Approve, Faustine runs the operations itself and the card shows the outcome. The model receives the same outcome and reports it. When the person selects Reject all, nothing runs.
A card for a script waits 30 minutes from the moment it is shown, and a card for a single tool call waits 10 minutes. After that it shows This confirmation expired, and the person asks the model again to get a new one.
The card carries your workspace's name and accent color. See Set the look and feel of your gateway.
Confirmation in Code mode
In Code mode one script can call several operations. The script runs to the end. The calls that require confirmation are not run and are collected instead, and every other call runs. The person then sees one request for the whole batch, with the real arguments of each call.
After the person approves, the script runs again. The calls that already ran are not repeated: the script receives their stored results. Each approved operation runs exactly once.
Confirmation in Tools mode
One tool call is one operation, and the person approves that call. The approval is bound to the credential, the operation and its exact arguments. It can be used once and expires after 10 minutes. Approving "delete contact 12" does not approve "delete contact 13".
Confirmation over REST
REST has no way to ask a person. With Ask the person, a REST call to an operation that requires confirmation returns 403 with the code requires_confirmation. Ask the agent and Run without asking run the call.
What to know before you choose
| Consideration | Description |
|---|---|
| Ask the agent is not a control | The model decides whether to ask. If an operation must never run unattended, use Refuse or Ask the person. |
| Run without asking removes the check | Destructive operations run with nobody asked. Use it only for an automation you supervise. |
| Not every client can ask | With Ask the person, a client that shows neither a dialog nor the card gets a refusal. The credential's page shows the last client seen and whether it can ask. |
| Read-only is separate | A read-only credential refuses every write, whatever its confirmation choice. |
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| The model says the operation does not exist | The credential is set to Refuse, which hides operations that require confirmation. | Change the credential's Confirmation choice. |
Denied (requires_confirmation): … can show neither a confirmation dialog nor a card |
The client cannot ask the person. | Use Claude Code, claude.ai or ChatGPT, or change the credential's choice. |
| The card shows This confirmation expired | The person did not decide in time. | Ask the model again. |
Next steps
- Set how a credential confirms writes: change the choice on a key or user.
- Mark an operation as requiring confirmation: choose the operations on the API.
- Repeated writes: keep a retried write from running twice.
Last updated November 11, 2026