For one person and the agents they run.
Your agents ask you first.
Claude Code, Cursor, a ChatGPT or Claude connector, your own script, an agent with a wallet. One set of rules for all of them, one inbox where the moments that matter wait for your yes, wherever you are, one record of what they tried.
Free under 500 actions a month and one connection. No card. $12 a month after that.
What it catches
Claude Code, through your MCP tools
Merge payments-service into main?
rule: merges to main wait for you. Expires in 41 min.
Merges to main wait for you. The rule is yours. The agent cannot talk its way past it, and it is not told where the line is.
Cursor agent, through your MCP tools
Attach AdministratorAccess to role/deploy?
rule: permission changes wait. Expires in 38 min.
Permission changes wait. Anything with no rule at all is blocked. Silence is never permission.
Shopping agent, wallet on Coinbase
Pay $340.00 to a new seller?
rule: new sellers wait at any amount. Approved amounts are exact.
Money moves once, for exactly what you approved. $350 under a $340 approval is refused. A lost reply is never retried on a guess.
Three steps, once
1
Connect an agent
One MCP URL for Claude Code, Cursor or a connector. One line for your own code.
2
Say what waits for you
Start from "observe everything". Add the rules that matter: production, money above an amount, sending to many people.
3
Approve where you already are
In your assistant, by Slack DM, on Telegram or on WhatsApp. Every decision leaves a receipt you keep.
Free to start. $12 a month when you need more.
Free under 500 actions a month and one connection, no card. $12 a month, or $99 a year, for three connections, 5,000 actions and 30 days of receipts.
When someone else has to say yes, that's Business.
Transparent by design
The code that keeps your agents in check is open source. Read it, run the same checks we run, and keep every receipt in a format you own.
Trust is something you verify, not something we ask for.
$ ctrlrun verify ctrlrun verify — ctrlrun 0.12.2, catalogue ctrlrun.guarantees/v7 policy ctrlrun.yaml (ctrlrun.policy/v2, mode: enforce) store sqlite, scratch (created and destroyed for this run) G1 mutated approval refused PASS stripe.refund G2 replayed approval refused PASS stripe.refund G3 duplicate effect refused PASS stripe.refund G4 one winner under concurrency PASS stripe.refund (8 processes) G5 ambiguous blocks a blind retry PASS stripe.refund G7 no principal refused PASS stripe.refund G10 unknown exception is ambiguous PASS stripe.refund G11 an altered receipt is detected PASS stripe.refund G12 a byte written is ambiguous PASS stripe.refund … 20/20 declared guarantees pass. 12 not applicable: G8, G9, G13, G15, G17, G19, G22, G23, G24, G25, G26, G27.