The Handoff Problem: Why Multi-Agent Systems Break at the Boundary
Source: Dev.to
When an AI agent finishes its work and passes it to the next agent, something critical is lost: the reasoning behind every decision made along the way.
The receiving agent sees the output—a file, a result, a transformed piece of data—but has no idea:
- What approaches were tried and rejected
- What constraints were in play
- What edge cases were already handled
This is the handoff problem, and it’s responsible for more multi‑agent failures than any model limitation or tool bug.
What Actually Happens at Handoff
Imagine a 3‑agent pipeline: Researcher → Analyst → Writer.
- Researcher finds 40 sources, filters to 8, discards 32 for reasons only it knows.
- Analyst receives the 8, builds a model, flags 2 outliers as suspicious — but doesn’t say why.
- Writer gets the analysis and writes conclusions that contradict what the Researcher already checked.
The Writer isn’t wrong; it just doesn’t know what the Researcher knew. The result is a final output that contains invisible bugs—decisions made twice in different directions, with no one aware of the conflict.
The Fix: decisions.json at Every Handoff
Add one file to every agent handoff package:
{
"task": "source_research",
"completed_at": "2026-03-08T04:30:00Z",
"decisions": [
{
"choice": "excluded_arxiv_papers_pre_2023",
"reason": "outdated model architectures — not relevant to current tooling"
},
{
"choice": "flagged_source_7_as_low_confidence",
"reason": "single-author blog, no citations, contradicts 3 peer-reviewed sources"
}
],
"constraints_applied": [
"max_sources: 10",
"recency_cutoff: 18_months"
],
"what_was_not_tried": [
"patent_database_search — not in scope per task brief"
]
}
This file travels with the work. Every downstream agent reads it before starting.
Why This Works
- Stops redundant decisions. The Analyst doesn’t re‑evaluate what the Researcher already settled; it builds on the reasoning, not just the output.
- Surfaces constraint violations early. If the Writer’s task requires citing pre‑2023 papers and the Researcher excluded them, that conflict surfaces immediately—not after the final output is drafted.
- Creates an audit trail. When something goes wrong, you have a record of every decision point, not just the final state.
The Minimal Implementation
Three simple rules:
- Every agent writes a
decisions.jsonbefore handing off — even if it’s just{"decisions": [], "constraints_applied": []}. - Every receiving agent reads
decisions.jsonfirst — before reading any other input. - Decisions are additive — each agent appends its own decisions rather than replacing the file.
The append pattern gives you a full lineage of every choice made across the entire pipeline.
The Cost
- One extra file write per handoff.
- One extra file read per agent start.
The cost of not doing this: invisible conflicts in final outputs, impossible‑to‑debug failures, and the painful experience of running a 20‑minute pipeline only to discover at the end that two agents contradicted each other in step 2.
What This Looks Like at Scale
At 5 agents with an average of 3 handoffs each, you have 15 decision files accumulated per pipeline run. After 30 days of daily runs: 450 decision records.
That’s a training dataset for understanding where your pipeline makes good and bad calls, where agents consistently disagree, and where constraints get violated.
The decisions.json pattern doesn’t just fix coordination—it generates the observability data you need to improve the whole system.
The Handoff Checklist
Before any agent passes work downstream, verify:
-
decisions.jsonexists and has at least one entry - All constraints from the task brief are documented
- “What was not tried” section is populated
- File is appended, not overwritten, if upstream decisions exist
If you’re running multi‑agent systems and want battle‑tested configs that make these patterns work in production, the full library is at askpatrick.co/library. Updated nightly with real patterns from real deployments.