The first oversight decision is not "who approves?" but "which calls need a person at all?". Treating every tool call as approval-worthy produces a queue nobody reads. Treating none as approval-worthy produces an incident. The work is to sort your tool registry into categories that map cleanly to a default oversight level.
Anthropic's guidance on tool design starts from the fact that tools are a contract between a deterministic system and a non-deterministic agent, and that the agent can occasionally fail to grasp how to use a tool at all. That framing matters here: you cannot assume the agent will only call send_customer_email with sensible arguments, so the gate has to sit where the cost of a bad argument is high. The same write-up stresses namespacing tools to define clear boundaries, which also gives you clean categories to attach approval policy to (writing effective tools for agents).
Permission tiers are explicit design work, not a UX preference. Read operations, write operations, and destructive operations should carry different approval requirements, and standing permission for an agent to send email, move funds, or modify production systems without a human in the loop is something security standards prohibit (AI agent tool use best practices). That gives you a three-way split to start from.
A practical classification uses two axes: can the effect be undone, and how far does it spread.
| Tier | Examples | Default treatment |
|---|---|---|
| Read | Search, fetch record, query status | Run freely, log the call |
| Reversible internal write | Tag a ticket, save a draft, post to an internal dashboard | Run, log, sample for review |
| External or costly write | Send customer email, issue refund, change permissions | Require approval, fail closed |
| Destructive or high blast radius | Delete data, rotate credentials, bulk update records | Require approval plus a named second reviewer |
Two rules make this table usable. First, if you cannot state how to undo an action in one sentence, it belongs in the bottom two rows. Second, if a tool can do both a read and a write depending on an argument, split it. Single-responsibility tools give the model an unambiguous function and give you cleaner error handling and easier observability (AI agent tool design). A manage_customer tool with an action parameter cannot be gated sensibly because the gate would have to inspect the argument before deciding, which is exactly where mistakes hide.
There is also a scale signal. One practitioner guideline warns that if an agent has more than eight tools registered at once, you have a design problem rather than a capability gap (AI agent tool use best practices). Fewer tools per agent means a shorter, more reviewable approval list.



