Skip to content

Troubleshooting

Common failures and fixes for agent teams.


Symptom: Claude doesn’t respond to team-related requests.

Fix: Enable the experimental flag:

settings.json
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}

Or in your shell:

Terminal window
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

Symptom: Split-pane mode fails. Error: “No pane backend available.”

Fix: Install tmux:

Terminal window
# macOS
brew install tmux
# Linux (Debian/Ubuntu)
sudo apt install tmux
# Verify
which tmux

If you don’t need split panes, set teammateMode to "in-process":

{
"teammateMode": "in-process"
}

Symptom: In iTerm2, panes don’t split for teammates.

Fix: Install and configure the it2 CLI:

Terminal window
uv tool install it2
# Then: iTerm2 -> Settings -> General -> Magic -> Enable Python API
# Restart iTerm2
it2 --version

Symptom: /help doesn’t list swarm: skills.

Fix:

  1. Restart Claude Code after installing the plugin
  2. Verify the plugin directory has .claude-plugin/plugin.json
  3. Check the plugin was installed: claude /plugin list

Symptom: Error when spawning a teammate with a specific agent type.

Fix: The agent type references a plugin that isn’t installed. Built-in types that always work:

  • Bash, Explore, Plan, general-purpose, claude-code-guide

Plugin agents (like sdlc:security-reviewer) require the corresponding plugin to be installed.

Symptom: Can’t create a new team.

Fix: Clean up the existing team first:

// Shut down all teammates
SendMessage({ type: "shutdown_request", recipient: "worker-1", content: "Done" })
// Wait for approvals...
TeamDelete()

Symptom: Teammates don’t produce results or send messages.

Possible causes:

  1. Wrong agent type for the task — Read-only agents can’t write files
  2. Insufficient context in prompt — Teammates don’t inherit the lead’s conversation history
  3. Agent crashed — Check with Shift+Up/Down (in-process) or click pane (split mode)

Fix: Give teammates clear, detailed prompts with all necessary context.


Symptom: Teammate messages don’t appear at the lead.

Fix: Messages are delivered automatically between turns. If you’re mid-turn, messages queue and deliver when your turn ends. The UI shows a notification when messages are waiting.

Symptom: Token usage spikes after broadcasts.

Fix: Broadcasting sends N messages for N teammates. Use direct messages instead:

// Instead of broadcast, message specific teammates
SendMessage({ type: "message", recipient: "worker-1", content: "...", summary: "..." })

Reserve broadcasts for critical team-wide announcements only.


Symptom: A task stays pending even though dependencies are done.

Possible causes:

  1. Blocking task wasn’t marked completed
  2. Teammate failed to update status

Fix: Check the blocking task’s status. If the work is done but status wasn’t updated:

TaskUpdate({ taskId: "1", status: "completed" })

Symptom: Two teammates try to claim the same task.

Fix: This is handled automatically. Task claiming uses file locking — one will succeed, the other will see the task is already owned. No action needed.

Symptom: A dependent task doesn’t unblock after its blocker completes.

Fix: Verify the blocking task was marked completed (not just in_progress). Check with:

TaskGet({ taskId: "1" }) // Check status of the blocker

Symptom: TeamDelete() fails.

Fix: Shut down all teammates first, then wait for their approval:

SendMessage({ type: "shutdown_request", recipient: "worker-1", content: "Done" })
// Wait for shutdown_response with approve: true
// Then:
TeamDelete()

Symptom: Teammate takes a long time to shut down.

Explanation: Teammates finish their current request or tool call before shutting down. This is expected behavior. Wait for the shutdown_response.

Symptom: tmux session persists after the team ends.

Fix:

Terminal window
tmux ls # List all sessions
tmux kill-session -t claude-swarm # Kill the orphaned session

Symptom: Claude runs tasks sequentially or uses simple subagents instead of spawning coordinated teams.

Fix: Add the swarm orchestration instruction to your CLAUDE.md:

## Always use swarm orchestration patterns (TeamCreate, Task with team_name, SendMessage, TaskCreate/TaskUpdate) when work is best executed by parallel specialist agents.
This means:
- Spawning teams with specialized teammates for parallelizable work
- Using the task list for coordination and progress tracking
- Leveraging SendMessage for inter-agent communication
- Preferring concurrent execution over sequential when tasks are independent

Place this in your project-level CLAUDE.md or your user-level ~/.claude/CLAUDE.md. This tells Claude to prefer parallel teams when work is parallelizable.

Lead starts implementing instead of delegating

Section titled “Lead starts implementing instead of delegating”

Symptom: The lead does work itself instead of waiting for teammates.

Fix: Tell it to wait:

Wait for your teammates to complete their tasks before proceeding.

Or enable delegate mode (Shift+Tab) to restrict the lead to coordination-only tools.

Symptom: Teammate permission requests interrupt the lead frequently.

Fix: Pre-approve common operations in your permission settings before spawning teammates:

settings.json
{
"permissions": {
"allow": ["Bash(npm *)", "Bash(git *)", "Write"]
}
}

Symptom: A teammate encounters an error and stops working.

Fix:

  1. Check output: Shift+Up/Down (in-process) or click pane (split mode)
  2. Give additional instructions directly to the teammate
  3. Or spawn a replacement to continue the work

See Known Limitations for current feature limitations.

See Debugging Commands for diagnostic shell commands.