Quick Start
1
Pick an approval mode
Open Settings → Safety → Tool approval and choose
ask, smart, or never.2
Answer the card
When a tool call arrives, an approval card offers Allow, Always allow, or Deny.
3
Let silence deny
If you do nothing, the request is declined after the timeout — the default is 300 seconds.
How It Works
Each approval carries acall_id, so a decision is bound to the specific tool call rather than to whichever prompt happens to be pending.
The event carries name (the tool name) and args (the tool arguments) so the approval card can show what is about to run, not just that something is.
What smart mode waives
smart mode waives the approval card for a small allowlist of low-risk read tools and still prompts for everything else. Any tool that isn’t on the low-risk list — including new tools added in a future release — is treated as high-risk and shows the card.
An approval binds to one URL
fetch_url treats the approved URL as the URL — nothing else. A page that redirects stops at the redirect and returns an error rather than silently following it. To follow the new URL, ask for it again and get a fresh approval card for it.
If the model needs the redirected URL, it should ask again with the new URL. That triggers a new approval card, so you decide whether the second hop is allowed — the first card doesn’t cover it.
The three buttons:
Setting
approval_mode to never prompts a confirmation first: “Tools will read your files without asking. Continue?”Choosing a Mode
See What
smart mode waives for the full per-tool table and the fail-closed default.
Best Practices
Start with ask
Start with ask
The default
ask mode surfaces every file read. Loosen to smart or never only once you trust the agent’s behaviour.Use Always allow sparingly
Use Always allow sparingly
Always allow persists for the whole session per tool name. Use it for tools you re-run constantly, not one-offs.
Keep the timeout short if unattended
Keep the timeout short if unattended
The timeout declines unanswered requests. A shorter
approval_timeout frees a stuck turn faster when you step away.Re-approve a redirected URL by name
Re-approve a redirected URL by name
If
fetch_url reports redirect to <url> was not approved, that’s the gate refusing to hand the new URL your approval. Ask the agent to fetch that URL directly if you want the content — you’ll get a fresh approval card for it, and you decide whether the second hop is allowed.Related
Settings Reference
Every Safety field and its default
Chat & Streaming
Where approval cards appear in a turn

