Back to course overview
Module 5Guardrails 12 min

Human approval gates

Designing the human-in-the-loop for autonomous systems: the autonomy dial in code, what makes a good approval request, and avoiding rubber-stamp fatigue.

Validation stops forbidden actions. Approval gates handle the actions that are allowed but shouldn't be automatic — the autonomy dial from Module 1, now implemented. The design goal: humans decide what matters, the agent handles the rest, and neither drowns the other.

The three-tier dial, in code

  • Auto (free): read tools, ticket notes, refunds under a low threshold with all validators green. The agent acts; you audit later. Most actions live here or the agent isn't worth having.
  • Gated (propose → approve → execute): refunds above the threshold, replies to angry customers, anything touching a flagged account. The agent assembles a complete proposal and pauses; a human approves or rejects; only then does the action fire.
  • Propose-only (never auto): account deletion, policy exceptions, anything legal/irreversible. The agent can recommend with full reasoning, but a human performs the action themselves. The dial's off-position.

What a good approval request contains

The gate is only as good as what the human sees. A request that says 'Approve refund? [Y/N]' produces rubber-stamping; a request that front-loads the decision produces judgment:

approval cardtext
PROPOSED: refund $320 to order HL-1042 (Priya Patel, ticket #2210)
WHY: 2 of 3 returned items were damaged (full refund on those);
     photos confirmed; within policy window (delivered 6 days ago).
     The 3rd returned item was undamaged, so a 15% restocking fee
     applies to it ($20 on a ~$133 item). $340 − $20 = $320.
     [code output shown]
ABOVE AUTO-LIMIT because: >$200.
AGENT CONFIDENCE: high — policy clear, facts verified.
ONE-CLICK: [Approve $320]  [Reject]  [Edit amount]
START HERE if unsure: the restocking-fee call on the undamaged item.

That's the operator card from Prompt Engineering, evolved for actions: the decision, the evidence, why it needs a human, and where to look first. The human's job shrinks from 'reconstruct the case' to 'ratify one judgment' — which is what makes review sustainable at volume.

Fighting rubber-stamp fatigue (the gate's real enemy)

  • Gate rarely and meaningfully. If 60% of actions need approval, humans approve reflexively and the gate is theater. Tune thresholds so gated actions are genuinely the judgment calls — most traffic flows auto, the interesting minority pauses.
  • Make rejection cheap and informative. A rejected proposal returns to the agent with the reason ('restocking fee shouldn't apply — item was defective'), which the agent applies and — crucially — you can feed into evals as a training case.
  • Watch the approval-rate metric. 99% approvals means the gate is either well-tuned or asleep; sample the approvals to tell which (the automation-complacency check from Foundations, at action stakes).
  • Escalate on uncertainty, not just on amount. LOW confidence, conflicting facts, an injected-looking note, a flagged account → gate regardless of size. Confidence routing (RAG M5) decides the dial, not just the dollar figure.
The gate is a product surface

Where humans approve agent actions is where trust in the system is built or destroyed. A crisp approval card that respects the reviewer's time turns skeptics into advocates; a stream of low-context Y/N prompts turns the whole deployment into shelfware. Design it like the product feature it is.