Every agent proposal you'll read has the same sentence in it somewhere: "anything it can't handle is escalated to a human." It sounds like a safety feature. In most builds it's a blank. Nobody has decided who the human is, how quickly you need them to appear, or what they'll be looking at when they do. So the handoff, which is where your agent meets your business, ends up the least designed part of the system.
That matters more than the model does. A support agent resolving 65% of contacts still hands you 35 out of every hundred. If each of those arrives as a bare forward with no context, you've built a machine for generating work. If they arrive sorted, explained and half done, you've built the thing you were promised.
The guardrails article covers what your agent may do without asking you. This one covers what happens at the boundary: when it should stop, how fast you need a person there, what that person sees, and the one failure mode that quietly undoes all of it.
A handoff is three decisions, not one.
A handoff is three decisions, not one: when your agent stops, how fast a person has to arrive, and what that person sees. Write the triggers in code, not in the prompt. Make the handoff asynchronous unless the customer is literally waiting, because a synchronous one costs you four people on standby for the work one person does in a day. Send every handoff as a packet, never a forward. And watch for approval fatigue: a gate that fires forty times a day on a cheap action loses you money the moment your reviewer misses 2% of the mistakes.
"Escalate to a human" is three decisions, not one
The phrase hides three separate choices, and each one has a wrong default you'll get unless you decide otherwise.
AWS's guidance for running agents puts it in a line worth keeping: a handoff is a data contract before it is a workflow step. The same guidance separates two kinds of escalation you'll see muddled together. Routing a task to another agent because it needs a capability the first one lacks is a routing decision. Sending it to a person because confidence dropped, the stakes are high or the retry budget is spent is a judgement decision. Mix them, in AWS's words, and you either send too many routine tasks to humans, creating fatigue and bottlenecks, or send high-stakes decisions through automated routing. Keep them apart, and make sure you can see each one fire.
When your agent should stop
Five triggers cover almost every production agent we've built or reviewed. The order matters, because the first one has to work even when the other four fail.
- The customer asksDoes "I want a person" always work?Yes, first time, no negotiation. An agent that argues with a request for a human has already lost you the customer, and in the EU an agent that hides what it is has a legal problem as well.
- Confidence dropsBelow what threshold, on which classification?Language, intent and account matching each get their own threshold, set from your test set rather than guessed. Below it, the item routes to you with the original message and the score attached.
- A gated actionWhich actions need a person by the arithmetic?The permission ladder from the guardrails article. Anything above its threshold pauses and waits, and the agent never gets to decide that this case is the exception.
- The budget is spentHow many retries or turns before it gives up?A turn cap or a retry limit, in code. OpenAI's guide names exceeding failure thresholds as one of its two triggers for human intervention, and AWS calls it the retry budget. Both mean stop looping.
- A signal the model shouldn't judgeWhich cases go straight to a person before any reply is drafted?Legal language, a chargeback threat, a VIP account, a complaint spanning several issues. A separate step scores these before the reply model runs, so the model that writes never decides whether it should be writing.
Notice what isn't on the list. "The agent feels uncertain" is not a trigger, because the agent's feeling is a number you can't inspect. Every one of the five is a condition you can write down, test and count.
Synchronous or asynchronous: the decision that sets your staffing
Here's the decision you'll make by accident if you don't make it on purpose. If a person has to be available while the customer waits, your handoff is synchronous. You then staff for the busiest hour, the way a contact centre does. If the person can pick it up within the hour and the customer is told so, it's asynchronous, and you staff for the total hours of work. The gap between those two is not small.
Take CollageDepot's published volume: 5,000 emails a month at 65% auto-resolution. That's 1,750 handoffs a month, about 80 a working day, and around 20 in the peak hour. Each one takes a person six minutes, the same figure as the cost article. Run those numbers through the standard contact-centre staffing formula and you get this.
| Handoff target | People needed in the peak hour | How busy they are | Average wait |
|---|---|---|---|
| Live chat, 80% picked up within 30 seconds | 4 | 50% | 31 seconds |
| Messaging, 80% picked up within 2 minutes | 4 | 50% | 31 seconds |
| Email-speed, 80% picked up within 15 minutes | 3 | 66% | under 3 minutes |
| Same-day asynchronous, cleared in two sittings | 1 | full day | up to half a day |
That's why you should design handoffs asynchronous by default, and it's why the frameworks are built for it. When an agent pauses for a human in LangGraph, the interrupted run holds nothing but its saved state and, in LangChain's own words, can be resumed many months later, on a different machine. OpenAI's tooling does the same: a paused run returns its state to your application and resumes whenever the answer arrives. The agent doesn't need the human to be there. Your customer sometimes does, and only then should you pay for synchronous.
What the customer hears while they wait
Asynchronous only works if you tell the customer, and tell them well. A silent handoff, where the automation stops and nothing happens until a person gets to it, is the worst of both designs, and you'll see it in most first versions. The customer gets the delay of asynchronous with the expectations of synchronous.
So the handoff itself sends a message, in the same channel, within seconds, and it says three things. A person is now handling this. Here's when you'll hear back, as a time you can actually keep. And, where it applies, what you were talking to until now was an AI. Since 2 August 2026, Article 50 of the EU AI Act requires any AI system that interacts directly with people to be designed so they're informed they're dealing with AI, unless it's obvious. If your customers are in Europe, the handoff message is the natural place for that disclosure, and your builder should know the rule exists.
One more rule. The customer should never have to repeat themselves. If the person picking up the handoff has to ask for the order number the agent already extracted, your packet was wrong, and the customer will tell you so in the survey.
Approval fatigue: the gate that trains people to click
The guardrails article set every approval gate by one line of arithmetic: gate an action when its error rate times the cost of a mistake beats the cost of a two-minute review. That line carried a silent assumption, that your reviewer catches the mistake. Here's how thin that assumption is, and what it costs you.
A gate that fires 40 times a day costs you 40 reviews, $29 a day, about $645 a month. Now put it on a $15 goodwill credit that the agent gets right 95% of the time. If your reviewer catches every mistake, the gate saves $30 a day, so it just pays. If they miss more than 2% of the mistakes, it's a net loss. On a $40 refund the same gate survives until the reviewer misses 63% of the mistakes, which is why you put gates on expensive actions and not cheap ones. On an order-status reply the gate never paid at all.
The reason reviewers miss mistakes is well documented, just not in our field. A 95%-accurate action fires its gate 20 times for every real catch, so 95% of what you're asking your reviewer to look at needs no action. In hospitals, the Joint Commission estimated that between 85 and 99 percent of alarm signals do not require clinical intervention, and named the result alarm fatigue. Staff become desensitised, turn alarms down, turn them off, or set them outside safe limits. A systematic review of 74 studies on automation bias found the same pattern wherever people supervise automation. Its list of what makes it worse reads like a description of a badly designed approval queue: workload, task complexity and time pressure.
- Gate what the arithmetic justifies, sample the rest. A gate that fires twenty times per real catch is an alarm, not a control. Move cheap actions to a weekly sample and keep your gates for money and the irreversible.
- Show the reason and the confidence, not just the request. The automation-bias review found that attaching confidence to the output, and giving information rather than a bare recommendation, both reduce over-reliance. A gate that says "approve?" gets clicked. One that says "refund $40, order delivered 3 days ago, confidence 61%" gets read.
- Name the reviewer. Accountability was the other mitigator the review identified. A queue everyone owns is a queue nobody reads.
- Count approvals per hour. If one person approved 60 gates in an hour, they reviewed none of them. Put that number on your dashboard next to the resolution rate.
What your person sees when they arrive
Everything above decides whether the handoff happens and how fast. This decides whether it's useful. AWS specifies the minimum context package as the task description, the work completed, the memory artefacts and the reason for the handoff, and recommends versioning the schema so a receiver can reject a malformed one. Here's the version we hand over, and the one you should ask for. Every field earns its place. It's the same shape as the partner review in our finance deal-flow concept, which presents the company brief, the risks, the missing information and the confidence indicators to the reviewer in one place.
- The customer's original message, verbatim, with any attachments. Not the agent's summary of it.
- What the agent understood: language, intent, the account it matched, each with its confidence score.
- What it already did: every lookup and tool call, with the result. The order record it pulled, the policy it checked.
- What it proposes, and why, in two sentences. A drafted reply or a recommended action you can accept, edit or reject.
- The one decision it needs. Not "please review", but "is this customer entitled to the refund under the 30-day policy?"
- Whether the proposed action is reversible, and what it costs if it's wrong.
- The reason it handed off, as a code from the trigger list, so you can count them later.
- The clock: when the customer was told to expect a reply, and how long the item has been waiting.
The test is simple. Someone who has never seen this customer should be able to act on the packet in under six minutes without opening another system. If they have to go and look up something the agent already knew, the packet failed.
An escalation queue with the context already loaded
CollageDepot is the shape of this in production. Every inbound email is scored for sentiment, urgency and complexity before any reply is drafted. The ones that cross a threshold go straight to a person: a chargeback threat, a multi-issue complaint with legal language, a VIP account with a high-value order problem. The classification data and the live Shopify order context arrive already attached, so nobody opens the ticket cold.
The queue lives in a dashboard the support team runs themselves. They see incoming volume, resolution rates by category and language, sentiment trends and the live escalation queue. They can override, reassign or flag any ticket, and move the escalation thresholds without touching the pipeline. That last part is the piece most builds forget: the thresholds that decide what reaches a human belong to the people who receive it, not to the developer.
When the handoff is the product
Sometimes the handoff isn't the exception path. It's the whole point. The Greenfield Systems concept is an intake agent for a precision-instrumentation manufacturer whose enquiries mention sub-picosecond timing, trigger channels and calibration in a single paragraph. The agent doesn't answer them. It reads the request and separates it into application, constraint, tolerance, service need, product family and review priority. Then it suggests the most likely product path with a confidence and a reason, flags what an engineer should verify, and hands over. In the concept's design, 85% of outputs are marked for human review. That's the success condition, not a failure rate: the engineer starts from a structured note instead of a raw email. The RFQ automation guide works the same pattern through a manufacturer's whole quoting process.
That's the lesson for any process where the final decision genuinely belongs to your expert. If you're building for one, don't measure the agent by how often it avoids the human. Measure it by how much of the human's work it did before the handoff.
Every handoff is a lesson, if you record why
The reason code in the packet is the most valuable field in your logs. Count them weekly, and you'll find that the most common reason for handing off is your next improvement. It's usually not the model. It's a missing policy document, a product the agent can't match, an intent it's never seen. The evaluation article treats escalation rate over time as the early warning that the world moved and your agent didn't. The reason codes tell you which way it moved.
Two operational rules close the loop. Every handoff needs a timeout and an owner, because, again in AWS's words, a deadlock that requires a human to notice is a deadlock that lasts until someone notices. An item waiting past its promised time should re-route or page someone, automatically. And every override, where your person changed what the agent proposed, is a labelled training example. A month of them is a better test set than anything you wrote before launch.
What to require from whoever builds it
Whether that's us or anyone else, this is what you should see written down before the agent goes live.
- The five triggers written down as conditions, each with its threshold and each logged with a reason code when it fires.
- "I want a person" honoured on the first request, in every language the agent speaks.
- A decision, per trigger, on synchronous or asynchronous, with the staffing arithmetic for whichever you chose.
- The customer message the handoff sends, with a reply time you can keep and, for EU customers, the AI disclosure.
- The handoff packet, all eight fields, tested by someone who has never seen the customer.
- Gates only where the guardrails arithmetic puts them, with approvals per hour on the dashboard.
- Thresholds your team can adjust without a developer.
- A timeout and a named owner on every queue, with automatic re-routing when the promised time passes.
- Weekly reason-code counts and a monthly review of overrides as training data.
Frequently Asked Questions
What's a reasonable escalation rate for an AI agent?
It depends on what you built the agent for. A support agent handing off 35% of contacts with full context is doing well. An intake agent that hands off 85% of enquiries as structured notes may be doing exactly its job. Judge the rate against the work done before the handoff, and watch the trend rather than the level.
Should the customer know they've been handed to a human?
Yes, immediately, in the same channel, with a reply time you can keep. In the EU, Article 50 of the AI Act also requires that people interacting with an AI system are informed of it, so the handoff message is where both disclosures naturally sit.
How fast does a human need to respond to an escalation?
Only as fast as the customer is actually waiting. On live chat or a phone call, seconds. On email or a form, the same day is usually fine if you told the customer. The staffing table above shows what each promise costs you, so make the promise you can afford.
Isn't a high approval rate a sign the agent is working well?
It's a sign of one of two things: the agent is right, or your reviewer has stopped reading. Count approvals per hour per reviewer. If a person approved sixty items in an hour, treat that queue as unreviewed and check a sample yourself.
What should we log about each handoff?
The trigger and its reason code, the confidence scores, what the agent did before stopping, what it proposed, how long the item waited, who picked it up, and what they changed. That last field is the one people skip and the one that improves your agent most, so don't let anyone talk you out of it.
Want the handoff designed before the agent is built?
We'll write the five triggers, run the staffing arithmetic on your volume, and hand you the packet spec and the customer message, whether we build the agent or not.
Book a free agent review ↗Sources: AWS Well-Architected Agentic AI Lens, AGENTOPS01-BP02; OpenAI, A practical guide to building agents; LangChain, Making it easier to build human-in-the-loop agents with interrupt (14 December 2024); Goddard, Roudsari and Wyatt, Automation bias: a systematic review, JAMIA 2012; The Joint Commission, Sentinel Event Alert 50: Medical device alarm safety in hospitals (8 April 2013); EU AI Act, Article 50.



