---
type: reference
subtype: pattern/framework
title: Agent Orchestration Patterns
summary: Principles and decision framework for coordinating multiple AI subagents without exhausting the main context window. Answers "when to delegate and how to structure it."
tags:
  - type/reference
  - domain/ai-agents
  - domain/orchestration
  - tool/claude-code
scope: global
last_updated: 2026-06-27
last_reviewed: 2026-06-30
related:
  - reference/agent-orchestration-cookbook
---

# Agent Orchestration Patterns

**Purpose**: When should you spawn agents vs. use tools directly, and how do you structure multi-agent work to keep token costs under control?

## Core Principle

Agents are **disposable contexts**: each subprocess starts fresh, does its work, writes output to files, then disappears. Only the minimal return value lands in the main conversation. Heavy file reading happens in agent context — never in main context.

## Decision Framework

```
How many items?
  │
  ├─ 1–3 ──────────────────────► Direct tools only
  │                               Tool tax > benefit
  │
  ├─ 4–10 ─────────────────────► Single specialist agent
  │         Can batch by type? ──► Yes: 1 agent handles all
  │                               No:  2–3 typed agents
  │
  ├─ 11–30 ────────────────────► 2–4 specialist agents
  │   Speed critical? ─────────► Parallel specialists
  │   Cost critical?  ─────────► Sequential specialists
  │
  └─ 30+ ──────────────────────► Specialists + phase rotation
      └─ Re-evaluate: is agent pattern right here?
```

### Parallelism vs. Cost Tradeoff

| Approach | Relative Cost | Speed | Best When |
|---|---|---|---|
| 1 agent per item | Very high (N × tool tax) | Fast | Never — this is an anti-pattern |
| Batched specialists (5–8/agent) | Low | Medium | Default choice |
| Sequential specialist | Lowest | Slow | Cost-critical, interruptible tasks |
| Parallel specialists | Medium | Fast | Speed-critical, failures must isolate |

## The Patterns

### 1. Disposable Context
**When**: Any time you need to read N files and process them.
**Why**: Each agent's file reads vanish when the agent finishes; only the return value (200–400 tokens) stays in main context.
**Anti-example**: Main conversation reads 20 files → context grows to 100K+ tokens and never shrinks.

### 2. Minimal Prompt, File-Specified Paths
**When**: Always.
**Why**: Agents read what they need; do not pre-load them with full project context.
**Rule**: Prompt = task description + paths + decision criteria + return schema. No more.

```
Update {component} with Alpine.js.
- Source: {jsx_path}
- Target: {erb_path}
- Audit:  {audit_path}
Decision: clear→update, ambiguous→skip+note, no-op→skip
Return: {"status": "updated|skipped|ambiguous", "changes": [...]}
```

### 3. State via Files, Not Memory
**When**: Agents need to share data or pass results forward.
**Why**: Agents cannot communicate directly; files are the coordination bus.
**Pattern**: Each agent writes `reports/{item}.md`; a consolidation agent reads `reports/*.md`.

### 4. Single-Message Parallel Spawn
**When**: You want agents to run concurrently.
**Why**: Multiple Task tool calls in one message → parallel. Separate messages → sequential.
**Rule**: Prepare all agent prompts, then issue all Task calls in a single message.

### 5. Batch by Similarity (2-of-3 Rule)
**When**: Deciding how to group items across specialists.
**Why**: Similar items share setup cost; the "tool tax" (~20–25K tokens) is paid once per agent.
**Rule**: Items are similar enough to batch if they share 2 of 3: input format, transformation logic, output format.
**Batch size**: 5–8 items per specialist (avoids rate limits; keeps per-agent context manageable).

### 6. Four-Phase Structure
**When**: Any multi-item orchestration task.

| Phase | Who | What | Returns |
|---|---|---|---|
| Inventory | Agent (haiku) | Discovery only — no file reading | JSON item list |
| Processing | Specialist agents (sonnet) | Read, transform, write reports | Minimal JSON status |
| Consolidation | Agent (sonnet) | Read all reports, generate summary | Executive summary |
| Cleanup | Main conversation (direct tools) | `rm`, `mv` | — |

## Model Selection

| Task | Model |
|---|---|
| Inventory, file discovery | haiku |
| Simple transforms, mechanical | haiku |
| Analysis, code generation | sonnet (default) |
| Architecture decisions | sonnet |

## Anti-Patterns

| Anti-Pattern | Problem | Fix |
|---|---|---|
| 1 agent per item | N × tool tax; 20 items = 550K tokens | Batch 5–8 items per specialist |
| Main reads all files | Context grows monotonically; no recovery | Delegate reads to agents |
| Over-sharing context in prompt | Wasted tokens on unused info | Paths + instructions only |
| Verbose agent responses | Bloats main context with detail | Return JSON status; write detail to files |
| Skip consolidation phase | User must parse N raw responses | Always run a summary agent |
| Silent failure on error | Items silently lost | Log errors, continue batch, report in summary |

## Error Handling Rules

1. Let other agents in the batch **complete** — don't abort on one failure.
2. Return structured error: `{"item": "X", "status": "error", "error": "reason"}`.
3. Consolidation agent treats missing reports as errors.
4. Report failures in summary; let the user decide on retry.
5. Design for **idempotency** — re-running a specialist should be safe (check-before-modify).

## Context Budget Reference

| Component | Tokens |
|---|---|
| System tools (fixed overhead) | ~15–20K |
| CLAUDE.md / project files | ~3–5K |
| Agent prompt | ~1–2K |
| **Minimum per agent** | **~20–25K** |

**20-item example**:
- Naive (1:1): 20 agents × 30K = **600K tokens**
- Batched (4 specialists × 5 items): 4 × 37K = **148K tokens** (75% reduction)

## Known Limitations

**Note:** Task tool behavior is version-sensitive and may change with tool updates. Verify tool capabilities in current Claude Code documentation before relying on the patterns below in production systems.

- Task tool does **not** return agent IDs programmatically (visible in UI only).
- No API to list active/completed agents.
- `resume` parameter requires manual ID tracking — not suitable for automated orchestration.
- **Workaround**: track progress via manifest files; design for idempotency.

## Related

- [[reference/agent-orchestration-cookbook]] — concrete walkthroughs, token budgets, error recovery patterns
- [[orchestration-prompting-claude-5-era]] — model-generation-specific prompting guidance (Fable 5 / Opus 4.8 / Sonnet 5); why delegation thresholds must be re-keyed when the main-loop tier changes
