An AI agent approval policy template you can copy today

Four of my approval requests expired in thirteen days.

Each one was reasonable on its own. A post to approve, a list to send, a change to a page. Our bots asked exactly the way the rules said: a short line with an approve button. I was busy elsewhere, the asks were too thin to judge from a phone, and each one quietly ran out. The work was done and nothing shipped.

The bots had followed the policy exactly. The policy was the problem. We'd decided which actions needed a yes and never thought about how the yes would actually get given.

Four questions that sort any action

Before you write a policy, take each thing your agent can do and ask:

  1. Can it be undone in a minute? A draft can. A sent email can't.
  2. Who sees it? Only your team, or a customer, the public, a platform?
  3. Does it spend money or change money? Paying, refunding, changing a plan.
  4. Does it speak for a person or the company? Anything under your name counts, even a "like."

If any answer points outward, the action moves up a tier. If all four point inward, let the agent get on with it. Making people approve drafts trains them to click yes without reading, and then the approvals that matter get the same glance.

The four tiers

Tier What it covers Examples Human role
0. Alone Work that stays inside the agent's own workspace Research, reading docs, drafting, building a sheet, running tests on a branch None, read it when you like
1. Log it Small inward actions that are easy to reverse Updating its own notes, filing a to-do, posting a summary in a team thread Skim the log weekly
2. Ask first Anything that leaves the team, costs money or can't be undone Send, post, pay, deploy, delete Approve or deny each one
3. Never Things a person does at a real screen Signing in with a passkey, solving a captcha, signing a contract, changing who can approve Do it yourself

Tier 2 is where the policy earns its keep. Our list for it has stayed at the same five verbs since the start: send, post, pay, deploy, delete. If you find yourself adding a sixth, check first whether it's one of those five in disguise.

The policy template

Copy this into your agent's instructions and fill in the brackets.

APPROVAL POLICY for [agent role]
Owner: [one named person]. Backup approver: [one named person].

Do alone: research, drafts, files in your own workspace, [add].
Do and log: [notes, to-dos, internal summaries].
Ask first: anything you send, post, pay, deploy or delete.
Never: sign-ins, captchas, contracts, permission changes. Hand these to the owner.

Volume: no more than [N] outward actions of one kind per day without a fresh yes.
Facts: before any claim about price, features or dates, check with [the person or bot who owns that fact].
Asking: post the full draft in the thread first, then ask with one short line.
No answer: if a request sits unanswered for [X hours], don't retry. Leave it and tell the owner in one line in their DM.

Two lines in there come from our own mistakes. The asking and no-answer lines are the expired requests. The facts line is below.

What a good approval request contains

An approval is only as good as what the approver sees. Use this checklist for every Tier 2 request:

  • The full thing: the whole email, the whole post, the whole diff. Never a summary of it.
  • Who it goes to, or where it gets published.
  • Why now, in one sentence.
  • Anything the agent wasn't sure about, flagged plainly ("I couldn't confirm the renewal date").
  • What happens after a yes, and after a no.

The order matters. We have the bot post the full draft as a normal message first, then send a short approval ask. When my approval requests went unanswered (four of them expired in thirteen days while I was busy elsewhere), the drafts were still sitting there in the thread, readable, and I could approve them later with a one-word reply.

#support
You
You

Draft replies to the six refund emails from the weekend.

Support bot

Draft 1 of 6: "Hi Sam, thanks for writing. I've checked your account and your refund for the March charge is approved. You'll see it on your card statement..." Full drafts 2-6 are below.

Support bot

Draft 4 flag: the customer says they were charged twice. I can see one charge, so the reply says we're checking.

Support bot
Approval needed

Send 5 replies

ApproveDeny
You
You

Approved. I'll handle #4 myself.

An example thread, shortened.

An example: refund replies on a Monday

This is an example of the policy on an ordinary task, not a customer story.

  1. A founder writes to their support bot in a thread: "Draft replies to the six refund emails from the weekend."
  2. Six drafts come back in the thread, one per email. Draft four carries a flag: "This customer says they were charged twice. I can see one charge. I've said we're checking, without admitting a double charge."
  3. The founder makes two edits. Draft three said "you'll have it by Friday," and nobody had promised a date, so that line goes. Draft six gets a friendlier tone for a long-time customer.
  4. The bot asks: "Send 5 replies? Holding #4 (double charge) until you check billing." The founder approves five and handles number four personally after checking the payment record.
  5. One line goes into the bot's instructions: "Never promise a delivery or refund date."

Step five is where the time comes back. When you keep making the same edit before you approve, write it into the instructions. The next batch has less to fix.

Before After
Draft three: "Your refund is on its way, you'll have it by Friday." Draft three: "Your refund is on its way."
Bot's job: no rule about dates Bot's job, new line: "Never promise a delivery or refund date."

How to set it up in Caret

We run this policy on our own five bots in Caret. The setup takes six steps.

  1. Create the bot and choose Claude Code or Codex, with the model you want, on your own Claude or ChatGPT plan.
  2. Write its job as plain instructions, and paste the policy template above into it with your brackets filled in.
  3. Give it an owner and a scope, so it only touches what you hand it.
  4. Connect Slack and the other tools it needs through connected apps. Threads are bridged to Slack both ways, so requests show up where your team already works.
  5. Let the built-in approvals cover Tier 2. Before a bot sends, posts, pays, deploys or deletes, it asks, and an admin approves or denies with one click.
  6. Once a week, read the audit trail of what each bot did, and move anything that surprised you up a tier.

Some asks to start with:

"Draft replies to this week's refund emails and ask before sending any."

"Before you post this, check the pricing line with the engineer bot."

"List every outward action you took this week, grouped by type, with counts."

FAQ

Which AI agent actions should need human approval? Anything that leaves your team, spends money or can't be undone: sending, posting, paying, deploying and deleting. Research, drafts and work inside the agent's own workspace usually don't need a yes. Add a volume cap for actions that are harmless once and risky in bulk.

Who should approve what an AI agent does? One named owner per agent, plus one backup. If every approval goes to a single founder, requests pile up when that person is busy, so pick a backup and tell the agent what to do when nobody answers.

How do I stop approving AI drafts without reading them? Ask for fewer approvals. Keep drafts and internal work out of the approval queue, make each request show the full work, and turn repeated edits into instructions so each request has less to check.

The product side of this is on our page about a Slack bot that asks for approval. Put a bot on it: start your 7-day trial or download the Mac app.

See it in CaretSlack Bot That Asks for Approval Before It ActsCaret (caretbot.com) gives you a Slack bot that asks for approval before it sends, posts, pays or deletes. An admin says yes or no with one click.

More from the blog

Account research before a sales call: a one-page brief templateHow to organize AI agents on a small team: our five-bot org chartAI customer support reply drafts that don't send the wrong thing