Ground Truth

Human in the Loop or Safe State: Choosing Your Fallback

Mostafa DhouibMostafa Dhouib··7 min read
The short answer

When a system cannot proceed safely, it has two options: hand the decision to a person, or take a defined safe action itself. Which one is correct is decided by whether a person is reachable inside the time the situation allows, and that single test resolves most of the argument.

Human in the Loop or Safe State: Choosing Your Fallback

The short answer. One test decides it: is a qualified person reachable inside the time this situation allows? If yes, hand them the decision, because a human is the right instrument for a judgement call. If no, the system must have a defined safe action it takes itself, which is usually a refusal rather than a guess. Systems that answer "human in the loop" without checking the timing have specified a fallback that will not be there.

The test

The gate
Is a qualified person reliably reachable inside the time this situation allows?
Human in the loop
a person is the right instrument for a judgement call
The system needs a defined safe action of its own
usually a refusal rather than a guess
How long before the delay itself becomes the harm: the line stops, the transaction times out, the vehicle keeps moving.
How long until a qualified person actually responds, at 3am, on a Sunday, including finding someone who can make this specific call.
A judgement taking four hours is fine for a monthly exception and useless for something happening two hundred times a day.
FigureTwo numbers, and most teams have never written down either. Answer it per class of situation rather than per incident.

Two numbers, and most teams have never written down either.

How long can this situation wait? Not how long you would like. How long before the delay itself becomes the harm: the line stops, the transaction times out, the vehicle keeps moving, the customer leaves, the window closes.

How long until a qualified person responds? Not the on-call SLA on paper. The observed time, at 3am, on a Sunday, including finding someone who can actually make this specific call.

If the second is reliably smaller than the first, human in the loop is available. If not, it is a design that describes an intention.

The common failure is answering this per-incident rather than per-class. A judgement that takes a person four hours is fine for a monthly contract exception and useless for something happening two hundred times a day.

The decision table

Human in the loopSafe state
Right whenA person is reachable inside the time availableThey are not, or the volume makes it impossible
The decision isA judgement a machine cannot makeA defined action requiring no judgement
LatencyMinutes to daysImmediate
Scales with volumeNo: throughput is bounded by attentionYes
Fails byNobody being available, or rubber-stampingRefusing when it could have proceeded
Failure isSilent if the queue is never drainedVisible: the thing did not happen
RequiresA queue, an owner, an escalation, an SLA you measureAn action that is safe under every reachable condition
Degrades under loadBadly: the queue grows and review quality dropsWell: it is the same action every time
Evidence it worksMedian and p99 time to decision, and the override rateA test that forces the condition and observes the action

The failure mode of each

Human in the loop degrades into rubber-stamping. A reviewer facing four hundred items a day approves them. This is not a character flaw, it is what attention does under volume, and it is invisible in every metric because approvals look identical whether considered or not.

The tell is the override rate. A queue where the human disagrees with the system on well under a few percent of items is either a system so good the review is unnecessary, or a review that is not happening. Those two are distinguishable by sampling, and almost nobody samples.

Safe state degrades into over-refusal. A system that holds too readily stops being useful, gets overridden, then bypassed, then switched off. That is the same trajectory as an inspection system with too many false alarms, and the day it stopped being believed is never recorded anywhere.

Human in the loop rots into rubber-stamping
A reviewer facing four hundred items a day approves them
Not a character flaw. What attention does under volume
Invisible, because approvals look identical either way
The tell is an override rate near zero with nobody sampling
Safe state rots into over-refusal
A system that holds too readily stops being useful
Gets overridden, then bypassed, then switched off
Same trajectory as an inspection system with too many false alarms
And the day it stopped being believed is never recorded
FigureBoth failure modes are gradual, and both are invisible to the monitoring that exists.

Both failure modes are gradual, and both are invisible to the monitoring that exists.

Designing a safe state properly

The harder of the two to get right, because "do nothing" is not automatically safe.

Name the action, not the absence. Hold position. Return the last verified value with a staleness flag. Reject with a specific code. Route to the deterministic path. "Fail safe" is not a specification.

Check it is safe under every reachable condition. A robot that stops is safe unless it stopped mid-weld. A system that holds the last value is safe unless the value is what became wrong. Enumerate the conditions and check each.

Enforce it where nothing can bypass it. If the component that might be wrong is also the component that decides whether to invoke the safe state, you do not have one. It belongs below the layer that can fail, and it should be validated against the real controller or the real service rather than against an interface document.

Make it visible. A safe state entered silently is indistinguishable from normal operation to everyone downstream. Count every entry, by cause. If nobody is counting, you cannot tell a healthy week from a degraded one after the fact.

Designing human in the loop properly

Route the subset, not everything. The engineering is in making the reviewed set small and well chosen. Everything routed dilutes attention on the items that needed it.

Give the reviewer what the decision requires, not the raw output. What the system was uncertain about, what evidence exists, what happens if they approve, and what happens if they do not.

Define what happens when nobody responds. This is where most designs are silent, and the silence means the default is "wait forever." A human-in-the-loop design without a timeout and a safe state behind it is a human-in-the-loop design that has a safe state, chosen by accident and never specified.

Measure the queue. Median and p99 time to decision, oldest unresolved item, override rate, and a sampled audit of approvals. Those four tell you whether the control is real.

The common answer: both, in order

  1. Immediately: enter the safe state
    stop, hold, refuse, or route to the deterministic path. Available in zero time, requires nobody
  2. Then: raise it for a human
    with what the system was uncertain about, what evidence exists, and what happens either way
  3. Then: a timeout on the human step
    with a defined outcome. A design without this has a safe state chosen by accident and never specified
The safe state is the floor. The human is the recovery.
FigureMost robust designs use both, sequenced. The ordering means the system never depends on a person arriving in time, and a person is still involved in the judgement when they can be.

Most robust designs use both, sequenced.

Immediately: enter the safe state. Stop, hold, refuse, or route to the deterministic path. This is available in zero time and requires nobody.

Then: raise it for a human, with the context they need.

Then: a timeout on the human step, with a defined outcome when it expires.

That ordering means the system is never depending on a person arriving in time, and a person is still involved in the judgement when they can be. The safe state is the floor; the human is the recovery.

The three questions

What is the time budget for this situation, and what is the observed human response time? Two numbers. If either is unknown, the fallback is unspecified.

What exactly does the system do in the zero seconds before anyone arrives? If the answer is "nothing," check whether nothing is safe here.

What is our override rate, and when did anyone last sample the approvals? If nobody has, the review may not be happening.

FAQ

When should AI use a human in the loop versus an automatic safe state? When a qualified person is reliably reachable inside the time the situation allows, use a human, because judgement is what people are for. When they are not, or the volume makes review impossible, the system needs a defined safe action it takes itself.

Why does human in the loop fail? It degrades into rubber-stamping under volume, which is what attention does rather than a character flaw, and it is invisible because approvals look identical whether considered or not. The tell is an override rate near zero with nobody sampling the approvals.

What makes a good safe state? A named action rather than an absence, verified safe under every reachable condition, enforced below the layer that can fail so nothing can bypass it, and counted by cause so entering it is visible rather than indistinguishable from normal operation.

Is doing nothing always safe? No. A robot that stops is safe unless it stopped mid-operation; a system that holds the last value is safe unless that value is what became wrong. The conditions have to be enumerated and each one checked.

Should I use both? Usually. Enter the safe state immediately, raise it for a human with the context the decision needs, and put a timeout on the human step with a defined outcome. That way the system never depends on someone arriving in time, and a person still makes the judgement when they can.

Free scorecard
The Agent Production-Readiness Scorecard

The five design-review questions as a worksheet with pass conditions you can check: the residual, the three outcomes, the task-level budget, where each check sits on the verifier ladder, and the irreversible-action inventory. Built to be filled in with the team that built the system.

One email, the resource, and nothing else unless you reply.
Carrying a program like this one?

Tell us the system, the stakes, and the date that matters. You get a straight technical reply from the person who would lead the work, within 24 hours.

Bring us the program