On this page
A person approving 400 agent actions a day is not overseeing anything. They are clicking yes. Approval only works as a safety mechanism when it is rare enough that each one gets real attention.
Why does approving everything fail?
The obvious way to make agents safe is to put a human in front of every action. It fails in a predictable way: the queue grows, every item looks like the last one, and the reviewer starts approving on reflex. The one action that should have been stopped goes through with the other 399.
The fix is not fewer approvals at random. It is approving the right things, and letting policy handle the rest.
What is an effect class?
Every tool call an agent makes in Heighliner carries an effect class that says how bad it is if the call was a mistake:
| Effect class | Example | Who decides |
|---|---|---|
| Pure | Read metrics, run a query | The agent, freely |
| Reversible | Open a pull request, flip a feature flag | The agent, within policy |
| Compensatable | Charge a card (undo is a refund) | Policy, often a person |
| Irreversible | Email customers, delete data | Always a person |
Most agent work is pure or reversible: reading, drafting, opening a pull request someone will review anyway. That work runs without interrupting anyone. The approval queue only sees the small set of actions that cannot be taken back.
What happens while an action waits?
An irreversible action is not just blocked. It is held in escrow: staged in an outbox and released only when a person approves and the run commits. If the request is rejected, the effect is cancelled and nothing is sent.
While it waits, the agent is paused, so a two-day wait for an answer does not burn two days of compute. You can approve or reject in Slack, in ChatGPT or Claude through the MCP connector, or in the console.
How do approvals get rarer over time?
Three habits keep the queue short:
- Approve policies, not actions. Any approval can be saved as a rule, such as "always allow pull requests under 50 lines". The next similar action never reaches the queue.
- Sample the safe ones. Low-risk actions are applied automatically, with a small share surfaced for review so trust stays calibrated.
- Show precedent. A request can say how it differs from similar ones you approved before, so you judge the difference, not the whole action.
The number that matters is approvals per thousand dollars of agent work. It should fall every month.
Where do budgets come in?
Approvals and budgets cover different failures. An approval stops one bad action. A budget stops a thousand cheap ones adding up. You want both, plus a record of everything: every run ends with a receipt in a tamper-evident audit trail.
Questions
- Which agent actions need a human approval?
- In Heighliner, irreversible actions such as emailing customers or deleting data always need a person. Compensatable actions, like a charge that can be refunded, are decided by policy and often go to a person. Pure and reversible actions run within policy.
- Where do I approve an action?
- In Slack, in ChatGPT or Claude through the MCP connector, or in the console. The approval state lives in Heighliner, so losing a Slack message never loses an approval.
- Does a waiting agent cost money?
- An agent waiting on approval is paused and does not burn compute. Its snapshot still counts as storage.
Related
- Why agents need a budget, not a dashboardA dashboard tells you what an agent spent after the fact. A budget stops it before it overspends. How dollar caps and leases make agents safe to leave running.
- Effect classAn effect class labels every agent action by how hard it is to undo: pure, reversible, compensatable or irreversible. Policy and approvals follow from it.
- EscrowEffect escrow stages an agent's irreversible actions, like sending email, in an outbox and releases them only after approval and when the run commits.
- A pull request reviewer that comments freely and merges neverRun Codex, Claude Code or your own agent as a pull request reviewer triggered by webhook, with scoped repository access, a budget and an audit trail of every comment.