Which agents does this cover?
It depends on where the action goes, not on who built the agent.
The first two cover most business agents. The third is the one to check before you plan.
Which agents, by name?
Any AI agent you have. An unlisted tool is covered like the row it resembles.How do I put the gateway in front of a hosted agent?
Point the agent’s connector at the gateway instead of at the tool server. The gateway decides everytools/call against your policy and relays everything else untouched. The command is an
illustration; the hostnames are invented.
- The gateway must be reachable from outside. It listens on loopback unless you pass
--allow-remote, and it speaks plain HTTP, so put HTTPS in front of it. - Name who is acting.
--principalfixes one name for a single bot.--identity-jwttakes the agent from a verified bearer token when several bots share one gateway. - A refusal is an answer the agent can read. A
denycomes back asctrlrun.denied, anapproveasctrlrun.approval_required. Once a person grants it, the identical call goes through, and a changed one does not.
How do I protect an API the agent calls?
Decorate the function that acts. You change your backend, not the agent: whichever bot called the endpoint, the refund is decided before it leaves. The provider call is elided.crm.update_record behind a webhook step, or email.send behind a custom
action. Protect a function has the version that runs.
What about the platform’s own built-in actions?
When a platform’s agent uses the platform’s own tool, the call starts and ends inside the platform. Meta AI sending a WhatsApp message never touches anything you run, so nothing you run can check it, CTRLRun included. The way to a yes is to move the capability, not to intercept it:- Take the built-in away. Turn off the native action, or run the agent under an account with no write access to the system that matters.
- Give it back as your tool. Add the same capability as a custom action or connector that points at the gateway or a protected endpoint.
- Now there is one way through, and it is checked.
What this page does not claim
- A platform’s audit log is not control. A record of what already happened cannot keep an action to at most once and exactly as approved.
- One path has not been run end to end yet: a hosted client, through a public gateway, to a tool server that requires OAuth. Whether a strict client accepts a login discovery document naming the server rather than the gateway is open; the roadmap records it.
Next
- Put the gateway in front of MCP: the policy and the two commands.
- Three ways in · Why.
- Not only agents: the same failure with no model in it.