ENGINEERING THE NEXT GENERATION

Logo
Home/Blog/Human-in-the-Loop AI Agents: Where to Put Approval Gates
AI AgentsHuman-in-the-LoopAI GovernanceCustom AI AgentsWorkflow Automation

Human-in-the-Loop AI Agents: Where to Put Approval Gates

September 24, 2026
AI agent actions flowing through automatic gates with one high-risk action held for human approval
Most agent actions should flow automatically. The skill is choosing which ones stop for a person.

TL;DR & Quick Summary

An AI agent that can issue refunds, update records or email customers needs a human somewhere in the loop. Requiring approval for everything, though, turns the agent into a slow suggestion box, and reviewers start clicking "approve" without reading. Good design gates the few actions where a mistake is expensive or can't be undone, lets the rest run with logging, and uses real approval data to decide when an agent has earned more autonomy.

  • Score actions, not agents: reversibility, blast radius and external visibility decide which actions need a gate

  • Three patterns: pre-action approval, confidence-based routing and post-action review, used together

  • Approve the exact payload: an approval should authorise one specific action, not a general intention

  • Design against rubber-stamping: people over-trust automated recommendations unless the interface works against it

  • Earn autonomy with data: move action types to less oversight only when approval records support it

  • Key Takeaway: Human-in-the-loop is not a single approval button. It's a set of controls sized to the risk of each action, designed so that people can realistically do the reviewing.

  • Get Started: Building an agent that needs to act in real systems? Schedule a strategy call with Cogniq AI or see how we build custom AI agents with approval controls from day one.


Why Agents Need Gates

A chatbot that gives a wrong answer produces a wrong answer. An agent that takes a wrong action produces a wrong refund, a wrong email to a customer, or a changed record that other systems then rely on. The gap between those two failure modes is the whole reason approval design matters.

The OWASP Top 10 for LLM applications lists this risk as excessive agency, with three causes: excessive functionality, excessive permissions and excessive autonomy. Its recommended mitigation for the third is direct: use human-in-the-loop control to require a human to approve high-impact actions before they are taken. Approval also protects against prompt injection. An instruction hidden in an email or document that tricks the agent into proposing a harmful action still has to get past a person.

The design question isn't whether to include humans. It's which actions, at what point, and how to make the review real.

Step 1: Score Every Action

List every action the agent can take, meaning every tool call that changes something outside the conversation. Score each on three dimensions:

Dimension Low risk High risk
Reversibility Easily undone (draft saved, tag added) Hard or impossible to undo (payment sent, email delivered, record deleted)
Blast radius One record, small amount Many records, many customers, large amounts
External visibility Internal only Seen by customers, partners, regulators or the public

Then choose a control per action:

Risk profile Control Example
Low on all three Automatic, logged Categorise a support ticket, add a CRM note, draft a reply
Reversible but visible or moderate impact Confidence-based routing Send a routine order-status reply; escalate unusual ones
Hard to reverse, or high blast radius Pre-action approval Issue a refund above a threshold, change a contract price
Very high impact or regulated Two-person approval Large payments, bulk record changes, account closures

Most workflows end up with many automatic actions and a small number of gated ones. If your list has everything gated, either the agent has more permissions than it needs or the risk scoring is too cautious to be useful.

Remove capabilities before you gate them. If the agent never needs to delete records, don't give it a delete tool at all. An approval gate is weaker than a permission that doesn't exist. We cover permission scoping in more depth in LLM data security for B2B vendor evaluation.

Step 2: Choose the Approval Pattern

Pre-Action Approval

The agent proposes, a person approves, and then the action executes. It's the safest pattern and the right one for irreversible actions. The cost is delay and reviewer workload, so keep it for actions that need it.

Confidence-Based Routing

The agent handles cases automatically when its confidence is high and sends the rest to a person. The weakness is that model confidence scores are often poorly calibrated. Route on observable signals instead where you can: the amount is over a threshold, the customer is flagged, the request doesn't match a known category, the retrieved policy documents conflict, or the customer has contacted you several times about the same issue.

Post-Action Review

The agent acts and a person reviews afterwards, either all actions or a sample. This keeps the workflow fast and still catches systematic problems. Use it only for actions that can be reversed within the review window.

Combining Them

In a real deployment one agent uses all three. A support agent might categorise tickets automatically, send standard replies with confidence routing, and hold refunds above a set amount for approval. Anthropic's guide to building effective agents describes agents pausing for human feedback at checkpoints or when they hit blockers. The point is that the checkpoints are placed deliberately, not attached to everything.

Step 3: Make the Approval Control Execution

A common and dangerous design is an approval step that is just a message: "The agent wants to issue a refund. Approve?" The person clicks yes, and the agent then runs whatever it decides to run. Nothing ties the approval to the actual action.

A sound design separates propose from commit:

  1. Propose: the agent produces a structured action payload, for example: refund, order 18472, £240, reason code, and the evidence it relied on. The payload is stored.
  2. Review: the approver sees exactly that payload, plus the evidence and a diff of what will change.
  3. Commit: only the approved payload executes, checked against a hash or version of what was approved. If anything changed, it goes back for review.
  4. Verify: after execution, confirm the target system reflects the expected change, and record the result.

Add three safeguards:

  • Expiry: approvals should lapse after a set time. An approval from yesterday may not fit today's account state.
  • Idempotency: a retried action shouldn't execute twice. Use idempotency keys so a network retry doesn't issue two refunds.
  • Separation: the agent shouldn't be able to approve its own proposals or change the approval record.

Cloudflare's human-in-the-loop documentation is a useful reference for implementing durable waits, where an agent pauses and resumes cleanly after a human decision.

Step 4: Design Against Rubber-Stamping

The biggest threat to human-in-the-loop isn't the agent. It's the reviewer. Research on automation bias, including Parasuraman and Manzey's widely cited review, shows that people monitoring automated systems tend to over-trust their recommendations, especially when the system is usually right and the workload is high. An approval queue of a hundred mostly correct proposals is exactly those conditions.

Design choices that counter it:

  • Show evidence, not just the conclusion. Display the retrieved policy, the customer history and the calculation, so the reviewer checks reasoning rather than trusting it.
  • Show the diff. "Change price from £1,200 to £960" is reviewable. "Update the contract" isn't.
  • Require a reason for high-risk approvals. A short dropdown or note makes approval a decision, not a reflex.
  • Keep queues small. If a reviewer faces hundreds of items a day, the gate is too broad. Narrow what it catches.
  • Test the reviewers. Occasionally insert a known-incorrect proposal and check it gets caught. If it doesn't, the gate isn't working, however good the approval statistics look.

Where oversight is legally required, this isn't optional. Article 14 of the EU AI Act requires that people overseeing high-risk systems remain aware of the tendency to over-rely on automated output, and that they can override the system or stop it safely.

Step 5: Measure the Loop

Human-in-the-loop produces some of the most useful data you have about an agent. Track, per action type:

Metric What it tells you
Approval rate How often proposals are accepted unchanged
Edit rate How often reviewers change the proposal before approving, which is the most useful signal
Rejection rate How often the agent proposes something wrong
Time to decision Whether the gate is a bottleneck for customers
Escalation precision Whether cases sent for review actually needed it
Post-action reversal rate How often automatic actions later have to be undone

Feed edits and rejections back into your evaluation set. Each corrected proposal is a labelled example of the agent getting something wrong. Our AI agent evaluation framework covers how to turn these into regression tests.

Step 6: Earn Autonomy, One Action Type at a Time

Grant autonomy per action type, not per agent. For example:

  1. A new action type starts with pre-action approval
  2. After a meaningful run of decisions with a very low edit and rejection rate, and where errors are recoverable, it moves to confidence routing
  3. After a further run with a low reversal rate, it moves to post-action review on a sample
  4. If edit, rejection or reversal rates rise, it moves back, automatically if possible

Set the thresholds before launch and write them down. Otherwise pressure to speed things up will move actions to autonomy on the strength of a good week rather than a good record. Irreversible, high-impact actions may never leave pre-approval, and that's fine.

How This Fits the Wider Architecture

Approval gates are one layer of the production control stack. They sit alongside least-privilege permissions, input and output validation, logging and monitoring, and the ability to switch the agent off. The NIST AI Risk Management Framework is a helpful structure for documenting these controls if your organisation needs formal governance.

For how these layers fit into the overall system, see our guide to enterprise AI agent architecture. Approval design also affects budget: approval interfaces, audit logging and review tooling are real engineering work, which is one reason agents that take actions cost more than agents that only answer questions. AI agent development cost covers the ranges.

Conclusion

Good human-in-the-loop design makes agents both safer and more useful. Score each action by reversibility, blast radius and visibility. Gate the few that need it. Make approval bind to the exact action that executes. Design the review so people actually review. Then let approval data, not optimism, decide when an agent gets more autonomy.

Schedule a strategy call with Cogniq AI to design the approval model for your agent's workflow, or learn more about our custom AI agent development.

Frequently Asked Questions

It is a design pattern where an AI agent must get a human decision before certain actions execute, or where a human reviews actions after the fact. For agents that can take real actions, such as issuing refunds, sending external messages or changing records, it is the main control that limits damage from model errors and from prompt injection. The design question is not whether to include humans but which actions need them and at what point.

Score each action on reversibility, blast radius and external visibility. Actions that are hard to undo, affect money, many records or many customers, or are visible outside the company should require approval before execution. Actions that are easily reversed, internal and narrow in scope can run automatically with logging and sampled review. Most workflows end up with a small number of gated actions and a large number of automatic ones.

Pre-action approval stops the agent until a person approves, so nothing happens without consent; it is safe but adds delay and reviewer workload. Post-action review lets the agent act and has a person review a sample or all of the actions afterwards, catching problems and feeding corrections back; it is faster but only suitable for actions that can be reversed. Confidence-based routing sits between them, sending only uncertain cases for approval.

Show the evidence behind each proposed action, not just the action; show a clear diff of what will change; require a short reason for approving high-risk actions; keep review queues small enough that people can give each item attention; and periodically include known-incorrect proposals to check that reviewers catch them. Research on automation bias shows people over-trust automated recommendations, so the interface has to work against that tendency.

When the data supports it. Track, for each action type, how often reviewers approve, edit or reject the agent's proposals. When an action type has a long record of approvals with very few corrections, and the consequences of an error are limited, move it from pre-approval to post-action review, and keep monitoring. If corrections increase, move it back. Autonomy should be granted per action type, not to the agent as a whole.

For some systems, yes. Article 14 of the EU AI Act requires human oversight for high-risk AI systems, including the ability to override the system and stop it safely, and awareness of automation bias. Many business agents are not classified as high-risk, but the same principles are recommended in general guidance such as the NIST AI Risk Management Framework and the OWASP Top 10 for LLM applications.