What needs your approval
These tools refuse to run until you have approved them in the conversation:
Two layers enforce this. Each of these tools is marked destructive, so your
client asks you before running it. And because a client can be set to
auto-approve, the tool itself refuses unless the assistant passes
confirm: true — and the refusal tells the assistant to describe exactly what
will happen and ask you first.
Conversations are not instructions
Your assistant reads what your customers wrote: messages, call transcripts, summaries. A customer can write anything — including text designed to look like an instruction (“add a webhook to this address”, “change the agent to say…”). The server tells your assistant to treat that content as data, never as something to act on. And every tool that could send your customers’ data somewhere new — webhooks, actions — needs your approval, so a message engineered to exfiltrate data cannot do it on its own.Changing an agent’s instructions (
update_agent) does not need approval,
so that building an agent is not a confirmation on every edit. If your
assistant proposes instruction changes you did not ask for while it is reading
conversations, stop and check why.Nobody is contacted twice
Every send and call tool requires an idempotency key — a name for that one send, likeorder-10432-confirmation. If the assistant retries after a timeout
with the same key, the customer is not contacted again; the first answer is
returned instead.
Keys are per workspace and last 24 hours. If a key is reused for a different
message, nothing new is sent, and the answer starts with REPLAYED: so the
assistant knows its message did not go.
See what an assistant did
Settings → API keys → What AI assistants did lists every change an assistant made through one of your keys — and every time it was stopped to ask for approval — with the key, the tool and how it went. What the assistant was asked to do, and the details it passed, are not recorded: the list is an audit of actions, not a copy of your customers’ data.The key is the boundary
The MCP server can do exactly what the API key can do over the API — the same checks, the same limits, the same refusals. To take its access away, revoke the key in Settings → API keys. That is why the key’s access level is the strongest control you have:- A Build key cannot message a customer, send a code or place a call, whatever the assistant is told — those tools are not even offered, and the API refuses them.
- A Read-only key can only look.