# Multi-agent

> A multi-agent system is two or more agents working on one job. Each agent is an AI model with its own instructions and tools. One agent hands the conversation to another, calls another like a tool, or several work on separate parts and the results are combined.

Decide when one agent is enough, and when you split the work, what each agent is told and sends back.

Track: Agents
Card: https://buildsparkai.com/multi-agent
Plain text: https://buildsparkai.com/multi-agent.md
Last checked: 2026-10-28

## What it is

On Agent loop , one AI model calls your tools until the job is done. A multi-agent system puts two or more agents on the same job, each with its own instructions and tools. Planning decides the steps; this card is about who does each one. There are three common shapes.

## Why it matters

**Quality.** One agent with too many tools picks the wrong one. [LangChain's Multi-agent guide](https://docs.langchain.com/oss/python/langchain/multi-agent) says splitting helps most when a single agent has too many tools and makes poor decisions about which to use.

**Speed.** Parts that don't depend on each other can run at once.

**Cost and risk.** Every agent is more model calls and more tokens. And every split is a place to lose context: [Cognition's Don't Build Multi-Agents](https://cognition.com/blog/dont-build-multi-agents) shows two subagents building parts that don't fit together, because neither saw what the other decided.

## Try today

Look at one agent you run. Count its tools, and the kinds of request it handles. If it keeps picking the wrong tool, write the brief one specialist would need: the goal, what to send back, its tools, and where to stop. If you can't write that brief without the rest of the conversation, keep one agent.

## Common mistake

Sending a specialist a one-line brief. It sees only what you send it, so it guesses the rest, and two agents end up doing the same part. Give each one the goal, what to send back, its tools and where to stop.

## Self-check

Your Support assistant has three tools and answers well. A teammate wants to add a second agent, just in case. What do you do?

Keep one agent

## Understand it: when to split, three shapes, and what crosses between agents

6 min, optional

The frameworks use different names. The questions stay the same: who holds the conversation, what each agent sees, and what comes back.

### Start with one agent

[Anthropic's Building effective agents](https://www.anthropic.com/research/building-effective-agents) recommends the simplest solution possible, and adding complexity only when you need it. [LangChain's Multi-agent guide](https://docs.langchain.com/oss/python/langchain/multi-agent) says not every complex task needs several agents. A single agent with the right tools and prompt can often do the job. Splitting helps when one agent has too many tools and chooses badly, when a task needs specialist knowledge with a lot of context, or when some capabilities should unlock only after a condition is met. It also lists parallel work, and letting different teams own different agents.

### Hand off

[OpenAI's Handoffs page](https://openai.github.io/openai-agents-python/handoffs/) says a handoff lets an agent delegate to another. The chosen specialist becomes the active agent for the rest of the turn, and by default sees the conversation history unless you filter it. [LangChain's Multi-agent guide](https://docs.langchain.com/oss/python/langchain/multi-agent) says handoffs are stateful, so a repeat request skips the routing call, but they run one after another and can't fan out.

### Call a specialist, keep the answer

[OpenAI's Agent orchestration page](https://openai.github.io/openai-agents-python/multi_agent/) calls this agents as tools: a manager keeps the conversation and calls specialists. That suits one agent owning the final answer, combining outputs, or enforcing shared guardrails in one place. LangChain's subagents work the same way: all routing passes through the main agent, each subagent starts fresh, and each request costs one extra model call. [Anthropic's Building effective agents](https://www.anthropic.com/research/building-effective-agents) describes orchestrator-workers: a central model breaks down the task, delegates, and combines the results, when you can't predict the subtasks in advance. How the lead decides the parts is on [Planning](/planning).

### Split and run at once

Anthropic's Building effective agents describes parallelization two ways. Sectioning splits a task into independent subtasks that run at the same time. Voting runs the same task several times. In [Anthropic's multi-agent research post](https://www.anthropic.com/research/multi-agent-research-system), the lead starts 3–5 subagents at once, and each subagent uses several tools at once. Anthropic says those two changes together cut research time on complex questions, by a lot in the best cases. It works best on questions with many independent directions. Anthropic says domains where all agents must share the same context, or with many dependencies between agents, aren't a good fit today. Most coding tasks have fewer truly parallel parts than research.

### Write the brief, and say what comes back

Anthropic's research post says each subagent needs an objective, an output format, guidance on tools and sources, and clear task boundaries. Without them, agents duplicate work, leave gaps, or miss what they need. For a large result, a specialist can save its work elsewhere and pass back a short reference, instead of copying everything through the lead. [Anthropic's Create custom subagents page](https://code.claude.com/docs/en/sub-agents) says each subagent runs in its own context window, with its own system prompt, tool access and permissions, and returns only a summary. Deciding what each agent sees is [Context engineering](/context-engineering), applied per agent.

### Share the decisions that parts depend on

[Cognition's Don't Build Multi-Agents](https://cognition.com/blog/dont-build-multi-agents) says to share context, and to share full agent traces, not just individual messages. Actions carry decisions you didn't write down. Two subagents given parts of one game built pieces in different styles, because neither saw the other's choices. Its default is a single agent working in one thread. Split where parts are independent. Keep parts that share decisions in one agent, or run them in order with the earlier result in the brief.

### Cost and speed

[Anthropic's multi-agent research post](https://www.anthropic.com/research/multi-agent-research-system) reports that multi-agent systems use many times more tokens than a chat, so they fit tasks valuable enough to pay for the extra work. LangChain's guide counts model calls per pattern: a lead with subagents adds one call per request, because results flow back through it. Each extra agent's calls count toward your turn and token limits on [Agent loop](/agent-loop).

### Each agent keeps its own limits

Give each agent only its tools. [Anthropic's Create custom subagents page](https://code.claude.com/docs/en/sub-agents) says built-in subagents inherit the parent conversation's permission rules, and most run with a restricted tool set. [Microsoft's workflow orchestrations](https://learn.microsoft.com/en-us/agent-framework/workflows/orchestrations/) can use tools that pause for a person's OK. [Permissions & human sign-off](/permissions-hitl) covers who says yes. Where input and output checks run when several agents share a job is on [Guardrails](/guardrails). A report from another agent is data, like any tool result: [Prompt injection](/prompt-injection).

### Frameworks

Examples, in alphabetical order. They are not ranked. [Google's Agent Development Kit](https://adk.dev/workflows/) composes agents into workflows: a graph, a dynamic flow, a collaborative one with a coordinator and sub-agents, and templates for sequence, loop and parallel. [LangChain's Multi-agent guide](https://docs.langchain.com/oss/python/langchain/multi-agent) lists subagents, handoffs, skills, a router and custom workflows. [Microsoft's workflow orchestrations](https://learn.microsoft.com/en-us/agent-framework/workflows/orchestrations/) lists sequential, concurrent, handoff, group chat, and magentic, a manager coordinating specialists. [OpenAI's Agent orchestration page](https://openai.github.io/openai-agents-python/multi_agent/) says you can let the model decide the flow, or your code decide it, and you can mix both. The names differ. The three questions in the lede don't.

### Test it

Add three cases to your saved checks. The right specialist got the request. Each brief had a goal, an output and a limit. The final reply uses every report, and no act ran twice. Grade the whole run across agents, not each agent's reply: [Agent evaluation](/agent-evaluation).

### Check yourself

**Name one job for a handoff, one for a lead with specialists, and one you'd keep in a single agent.**

Answer:

Handoff: refund questions answered by a Billing agent. Lead with specialists: one message with a billing part and a docs part. Single agent: a change and a lookup where the lookup needs the change's result.

## Practice and deep

Example: made up to show the idea.

Read one split checked for you, fix a brief with a hint, then decide whether two parts can run at once.

One message, two specialists

Part
Billing agent
Docs agent

Brief (goal)
Was this account charged twice this month?
Why are attachments missing from exports?

Tools
Look up invoices · read. Refund · acts, waits for a person: Permissions & human sign-off
Search the docs · read

Send back
Yes or no, the invoice numbers, any refund waiting
The doc name and the sentence that answers it

Report
"Yes: INV-208 and INV-209. Refund of INV-209 is waiting for a person's OK."
"export.md: 'Attachments are not included in the CSV.'"

The two questions don't depend on each other, so both specialists run at once. Each brief has a goal, what to send back, and only that agent's tools. The refund acts, so it waits for a person's OK. The lead reads both reports as data and writes the one reply.

Fix the brief
The lead sends both specialists the same brief: 'Help this customer.'

What's most likely to go wrong?

Hint: Each specialist sees only what the lead sends it.

A · Overlap, and a part nobody does
B · It runs faster than one agent
C · Nothing. They check each other's work

## Sources

- [Anthropic, Building effective agents (published Dec 19, 2024)](https://www.anthropic.com/research/building-effective-agents)
- [Anthropic, How we built our multi-agent research system (published Jun 13, 2025)](https://www.anthropic.com/research/multi-agent-research-system)
- [Anthropic, Create custom subagents](https://code.claude.com/docs/en/sub-agents)
- [Cognition, Don't Build Multi-Agents (published Jun 12, 2025)](https://cognition.com/blog/dont-build-multi-agents)
- [Google, Workflows: multi-agent, multi-node applications](https://adk.dev/workflows/)
- [LangChain, Multi-agent](https://docs.langchain.com/oss/python/langchain/multi-agent)
- [Microsoft, Workflow orchestrations in Agent Framework](https://learn.microsoft.com/en-us/agent-framework/workflows/orchestrations/)
- [OpenAI, Agent orchestration](https://openai.github.io/openai-agents-python/multi_agent/)
- [OpenAI, Handoffs](https://openai.github.io/openai-agents-python/handoffs/)

Vendor and framework docs, and one builder's counterpoint. Understand it doesn't rank them.
