7.9 KiB
Agent Teams -- Examples, Best Practices & Troubleshooting
Source: https://code.claude.com/docs/en/agent-teams Version captured: Claude Code v2.1.80 (March 2026)
Use Case Examples
Parallel Code Review
Create an agent team to review PR #142. Spawn three reviewers:
- One focused on security implications
- One checking performance impact
- One validating test coverage
Have them each review and report findings.
Each reviewer applies different filter to same PR. Lead synthesizes across all three.
Competing Hypotheses Investigation
Users report the app exits after one message instead of staying connected.
Spawn 5 agent teammates to investigate different hypotheses. Have them talk to
each other to try to disprove each other's theories, like a scientific
debate. Update the findings doc with whatever consensus emerges.
Adversarial debate structure fights anchoring bias -- surviving theory is most likely correct.
Parallel Feature Implementation (with Worktree Isolation)
Create a team to implement the new dashboard feature.
Developer A owns src/api/* and src/models/*.
Developer B owns src/components/* and src/pages/*.
Tester writes tests after both devs finish.
Require plan approval for developers.
Use worktree isolation for each developer.
Each developer works in isolated worktree -- own branch, own working directory. No file conflicts even if ownership boundaries overlap accidentally. Tester blocked until both complete.
Best Practices
Give Enough Context
Teammates don't inherit lead's conversation. Include details in spawn prompt:
Spawn a security reviewer with prompt: "Review src/auth/ for vulnerabilities.
Focus on token handling, session management, input validation.
App uses JWT in httpOnly cookies. Report with severity ratings."
Size Tasks Right
- Too small: coordination overhead exceeds benefit
- Too large: teammates work too long without check-ins
- Right: self-contained units with clear deliverable (function, test file, review)
Start with Research/Review
If new to agent teams, start with read-only tasks (reviewing PRs, researching libraries, investigating bugs). Shows parallel value without coordination challenges of parallel implementation.
Use Worktree Isolation for Code Changes
For any template where teammates edit code (cook, fix), always use isolation: "worktree":
Agent(
subagent_type: "fullstack-developer",
model: "opus",
isolation: "worktree",
run_in_background: true,
prompt: "..."
)
Benefits:
- Each dev gets own git worktree + branch
- No file conflicts -- devs can edit same files independently
.gitdir shared (common config), everything else isolated- Lead merges branches after all devs complete
When NOT to use: Research and review templates (read-only, no file edits).
Spawn with run_in_background
Always use run_in_background: true when spawning multiple teammates:
# Spawn all 3 researchers concurrently (non-blocking)
Agent(subagent_type: "researcher", run_in_background: true, ...)
Agent(subagent_type: "researcher", run_in_background: true, ...)
Agent(subagent_type: "researcher", run_in_background: true, ...)
Lead continues orchestration immediately. TaskCompleted events notify when each finishes.
Wait for Teammates
If lead starts implementing instead of delegating:
Wait for your teammates to complete their tasks before proceeding
Avoid File Conflicts
Two teammates editing same file = overwrites. Mitigate with:
- Worktree isolation (recommended) -- each dev in own worktree
- File ownership boundaries -- define glob patterns per task
- Lead handles shared files -- restructure tasks if overlap unavoidable
Monitor & Steer
Check progress regularly. Redirect bad approaches. Synthesize findings as they arrive. Letting a team run unattended too long increases wasted effort risk.
File Ownership Enforcement
- Define explicit file boundaries in each task description
- Include glob patterns:
File ownership: src/api/*, src/models/* - If two tasks need same file: use worktree isolation OR escalate to lead
- Tester owns test files only; reads implementation files but never edits them
Leverage Event-Driven Hooks
With TaskCompleted and TeammateIdle hooks enabled:
- Lead is automatically notified when tasks complete -- no manual polling needed
- Progress is tracked via hook-injected context: "3/5 tasks done, 2 pending"
- Idle teammates trigger suggestions: "worker-2 idle, 1 unblocked task available"
- All tasks done triggers: "Consider shutting down teammates and synthesizing"
Cook workflow example:
1. Lead spawns 3 devs (run_in_background: true, isolation: "worktree")
2. TaskCompleted(dev-1, task #1) -> "1/4 done"
3. TaskCompleted(dev-2, task #2) -> "2/4 done"
4. TaskCompleted(dev-3, task #3) -> "3/4 done"
5. TaskCompleted(dev-1, task #4) -> "4/4 done. All tasks completed."
6. Lead merges worktree branches, then spawns tester
Use Agent Memory for Long-Running Projects
For projects with recurring team sessions:
- Code reviewer learns project conventions, stops flagging known patterns
- Debugger remembers past failures, faster root-cause identification
- Tester tracks flaky tests, avoids re-investigating known issues
- Researcher accumulates domain knowledge across projects (user scope)
Memory persists after team cleanup -- it's in .opencode/agent-memory/, not ~/.opencode/teams/.
Restrict Sub-Agent Spawning
Use Task(agent_type) in agent definitions to prevent:
- Recursive agent chains (agent spawns agent spawns agent)
- Cost escalation (teammate spawning expensive sub-agents)
- Scope creep (tester spawning developer to "fix" issues)
Recommended: Most agents get Task(Explore) only. Planner gets Task(Explore), Task(researcher).
Token Budget Guidance
| Template | Estimated Tokens | Notes |
|---|---|---|
| Research (3 teammates) | ~150K-300K | Read-only, all Opus |
| Cook (4 teammates) | ~400K-800K | Highest -- code generation |
| Review (3 teammates) | ~100K-200K | Read-only, all Opus |
| Debug (3 teammates) | ~200K-400K | Mixed read/execute |
Agent Teams use significantly more tokens than subagents (all teammates run Opus 4.6). Use only when parallel exploration + discussion adds clear value. For routine tasks, single session with subagents is more cost-effective.
Troubleshooting
Teammates Not Appearing
- In-process: press
Shift+Downto cycle through active teammates - Task may not be complex enough -- Claude decides based on task
- Split panes: verify tmux installed and in PATH
- iTerm2: verify
it2CLI installed and Python API enabled
Too Many Permission Prompts
Pre-approve common operations in permission settings before spawning.
Teammates Stopping on Errors
Check output via Shift+Up/Down or clicking pane. Give additional instructions or spawn replacement.
Lead Shuts Down Early
Tell lead to keep going or wait for teammates.
Orphaned tmux Sessions
tmux ls
tmux kill-session -t <session-name>
TeamCreate Fails
- Verify
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1is set in settings.json env - Agent Teams requires CLI terminal -- NOT supported in VSCode extension
- Only one team per session -- call TeamDelete before creating another
Limitations
- Model lock: All teammates must run Opus 4.6 (no mixed-model teams)
- No session resumption:
/resumeand/rewinddon't restore in-process teammates - Task status can lag: teammates may not mark tasks completed; check manually
- Shutdown can be slow: finishes current request first
- One team per session: clean up before starting new one
- No nested teams: only lead manages team
- Lead is fixed: can't promote teammate or transfer leadership
- Permissions at spawn: all inherit lead's mode; changeable after but not at spawn time
- Split panes: require tmux or iTerm2 only
- VSCode unsupported: Agent Teams requires CLI terminal