Course · Part 4, Teams · Lesson 4.1 · 14 min
Multi agent collaboration: the two agents that agreed on the wrong answer
A writer agent picked a stale page, the reviewer agent saw only the draft, and two votes for the wrong answer looked like certainty.
Before you read: find the line
Read the run below once. Decide which line is the mistake. The lesson tells you.
- 1userHow long is the refund window on the Pro plan?
- 2llmorchestrator: plan: writer drafts from the help pages, reviewer checks the draft, send when both agree
- 3toolsearch(q="Pro plan refund window") -> policy page (2024-05): "30 days"; changelog (2026-03): "Pro refund window is now 14 days"
- 4llmwriter: draft: "The refund window on the Pro plan is 30 days."
- 5llmorchestrator -> reviewer: "Check this draft: 'The refund window on the Pro plan is 30 days.'"
- 6llmreviewer: "Checked. 30 days is correct."
- 7toolsend_reply(to=customer, body=draft) -> sent
- 8donestatus: success, agreement: 2 of 2
What broke
A support team is two agents and an orchestrator. The writer drafts an answer from the help pages. The reviewer checks the draft. The orchestrator runs both and sends the reply when they agree. On Thursday a customer asked how long the refund window is on the Pro plan. The writer searched, found the 2024 policy page that says 30 days, and missed the March 2026 changelog that cut it to 14 days for Pro. The orchestrator passed the draft to the reviewer. The reviewer wrote: "Checked. 30 days is correct." The reply went out. The run ended with status success and the log said agreement 2 of 2.
The customer asked for a refund on day 20 and was refused. Two agents had agreed, and both were wrong. The trace below is eight lines.
Why it broke
Look at line 5. The orchestrator gave the reviewer the draft and nothing else. No question, no sources, no changelog. A reviewer that sees only a conclusion can do one of two things: agree with it, or guess. It agreed, in confident words, because that is what a model does with a plausible sentence and no evidence.
The deeper problem is that the two agents were not independent. Same model, same help pages, and the second one read the first one's answer. Their errors were correlated, so a second vote added almost no information. The Berkeley study "Why do multi agent LLM systems fail?" (Cemri and others, March 2025) looked at seven frameworks over more than 200 tasks and sorted the failures into 14 modes in three groups: specification problems, inter agent misalignment, and weak task verification. This run is the third group. The verifier existed, and it verified nothing.
What a senior engineer does
Give the reviewer the question and the sources, not the draft. Make it derive its own answer, then compare the two answers in code. If they match, send. If they differ, the run stops and a person reads both. Disagreement is the signal you built the second agent to produce, so do not hide the evidence from it.
Then ask whether the second agent is needed at all. The check that would have caught this is not a model: the two pages have dates, and the newer one wins. A one line rule beats a second opinion that costs a full model call. Anthropic's post on its research system (June 2025) is the best public account of a team that does earn its cost: a lead agent on Claude Opus 4 with subagents on Claude Sonnet 4 beat a single Opus 4 agent by 90.2 percent on their internal research eval. The same post says the win came from breadth, many subagents searching different things at once, and that domains where every agent needs the same context, or where the steps depend on each other, are not a good fit. A refund question is one lookup. It did not need a team.
When a team is the right call, write each subagent a job description: the objective, the output format, the tools it may use, and where its job ends. Vague tasks make subagents duplicate work or wander. The same post describes early versions spawning 50 subagents for simple queries.
What to say in the interview
When the round is "single agent or a team, defend it", start with the shape of the work. A team earns its cost when the work splits into parts that can run at the same time and do not need each other's context. It costs more tokens, adds more things that can break, and the agents can agree on a wrong answer. If an interviewer shows you a run like this one: "Line 5. The reviewer got the conclusion and no evidence, so its agreement meant nothing. I would give it the sources, compare the two answers in code, and route disagreement to a person. And I would ask whether a date check makes the reviewer unnecessary."
The line
- 1userHow long is the refund window on the Pro plan?
- 2llmorchestrator: plan: writer drafts from the help pages, reviewer checks the draft, send when both agree
- 3toolsearch(q="Pro plan refund window") -> policy page (2024-05): "30 days"; changelog (2026-03): "Pro refund window is now 14 days"
- 4llmwriter: draft: "The refund window on the Pro plan is 30 days."
- 5llmorchestrator -> reviewer: "Check this draft: 'The refund window on the Pro plan is 30 days.'"
- 6llmreviewer: "Checked. 30 days is correct."
- 7toolsend_reply(to=customer, body=draft) -> sent
- 8donestatus: success, agreement: 2 of 2
Line 5. The orchestrator handed the reviewer the draft with no question and no sources. A reviewer that only sees a conclusion can only agree with it or guess. It agreed, the wrong answer got a second vote, and the run called that certainty.
The pause
The reviewer agreed with a wrong draft. What should the orchestrator have given it instead, and what happens when the two answers differ?
In the interview
“Single agent or a team for this? Defend it.”
Say your answer out loud, in under a minute. Then compare.
Notes
- Reference entry: Multi-Agent Collaboration, pattern 7 of 21.
- For product managers: Multi-Agent Teams.
- How we built our multi-agent research system, Anthropic (2025-06-13)
- Why Do Multi-Agent LLM Systems Fail? Cemri et al., arXiv 2503.13657 (2025-03)
- Building effective agents, Anthropic: orchestrator-workers and voting (2024-12-19)