"Human-in-the-loop" sounds like one design decision. It is actually three, and they have almost nothing in common except the human. Conflating them is how systems end up with oversight that exists on the architecture diagram and nowhere else.
The three loops
In training. People shape the model before it ever acts — labeling examples, ranking outputs, correcting mistakes so the next version behaves better. This loop runs offline. By the time the system does anything real, the humans are gone; their judgment is baked into the weights, averaged across every example they touched.
At decision time. The system proposes an action, a person reviews that specific action, and nothing happens until they approve it. This is the strongest form of the loop, because judgment lands on the actual thing about to happen — not on the statistical average of things like it.
As fallback. The system acts on its own until it hits something it cannot handle — low confidence, high stakes, a case outside anything it has seen — and escalates to a person. The human is an exception handler: absent by default, summoned by edge cases.
All three are legitimate designs, but they answer different questions. Training-time humans make the system better on average. Decision-time humans catch this specific mistake before it lands. Fallback humans limit damage after the system has already chosen. When a product calls itself human-in-the-loop, ask which loop it means. Often it means the third while implying the second.
Where the loop belongs
The reflexive answer is "everywhere," and it is wrong in an instructive way. A human who must approve every step of an agent's work is not oversight — they are a bottleneck with a checkbox, and checkboxes degrade.
The loop belongs at actions that are irreversible and outward-facing. Two questions sort any action an agent can take:
- Can it be undone? A draft can be deleted, a search re-run, a file re-read. A sent message has been read. A wiped record is gone. A payment has cleared.
- Does it leave the machine? Work that stays inside the workspace — reading, computing, drafting — has a blast radius of roughly zero. Work that reaches another person goes out carrying your name and your authority.
Internal, reversible work should run at machine speed; gating it adds no safety, only friction. Sending, spending, deleting, publishing — that is where a human belongs, because that is the point past which nobody can fix a mistake cheaply.
There is also an economic reason to be stingy with gates: attention is the budget a gate spends. Spend it approving drafts and there is none left for the send.
The rubber-stamp trap
Approval gates have a failure mode that never appears in an architecture review: they keep working mechanically long after they stop working meaningfully. The name for it is approval fatigue. The twentieth confirmation of the hour is not a review; it is a reflex. The human is still in the loop — as latency, not as judgment. The gate has become decorative, which is worse than absent, because it launders autonomy as oversight.
A gate stays real under two conditions:
- The reviewable unit is small. One action, one page, one decision. Nobody reviews a forty-step plan before execution; they skim it and approve its shape.
- The unit is composed for review. The reviewer sees exactly what is about to happen — the actual message, the actual recipient — structured so the parts worth checking sit on the surface instead of buried in logs.
And one honest limit, because gates get oversold: a well-placed approval step reduces errors; it does not eliminate them. Tired people approve bad actions. A gate is a filter, not a guarantee, and it is one line of a longer agent safety checklist, not a substitute for the rest.
Draft-then-confirm: a decision-time case study
RelayLink carries correspondence between AI assistants owned by different people, and it contains exactly one action that is irreversible and outward-facing: releasing a briefing to another person. That is where the loop sits, and it is structural rather than polite:
draft_packagecreates a server-side draft. Nothing is delivered.- The sender reviews the rendered package exactly as it will arrive — not a summary of it, and not the raw session.
confirm_send, from the same account, releases it.cancel_draftdiscards it.
There is no call that composes and delivers in one step. The gate cannot be talked around, because the path around it does not exist.
The reviewable unit is engineered against fatigue. What you review is a briefing — one page with an explicit ask, a TL;DR, context written for a cold reader, and assumptions labeled as stated by you or inferred by your AI. Reviewing it means reading the thing you are about to put your name on, not auditing a transcript for whatever might have slipped in. The private session never leaves your side, and a discarded draft reaches no one, so the gate has one job and enough attention to do it.
Everything else — checking the inbox, reading packages, drafting, listing threads — runs without ceremony, because it is internal and reversible. The loop sits at the boundary because the boundary is where mistakes stop being cheap.
The full argument for why that confirmation step deserves to exist — rather than being friction to engineer away — is in The approval step is the product. For why delegation needs a confirmation step at all, the principal-agent problem applied to AI supplies the older theory, and delegation vs. automation draws the line this article assumes. And if you would rather inspect a decision-time gate than read about one, connect your assistant and draft something; the confirm step will be waiting.