BlogParallel agents

What's the difference between Claude Code subagents and running multiple sessions?

A subagent is a helper that one Claude Code session spawns. It works in its own context window, often in the background, and returns only a summary to the session that started it. Multiple sessions are independent conversations, each with its own context and history, that you start, steer and merge yourself. Use subagents to keep one conversation clean; use separate sessions to work on separate tasks.

Subagents: delegation inside one session

Per Claude Code's documentation, as of October 2026, each subagent:

  • runs in its own context window, with its own system prompt, tool access and permissions;
  • does a side task (searching, reading logs, reviewing) and returns a summary to the conversation that spawned it;
  • sends its own requests, which count toward the same usage limits as your main conversation;
  • starts in the background by default when Claude spawns it from your main conversation. Its permission prompts surface in your main session, naming the subagent.

Built-in subagents include Explore, Plan and general-purpose. You define your own as markdown files in .claude/agents/ (project) or ~/.claude/agents/ (user):

---
name: code-reviewer
description: Reviews a diff for bugs and missing tests
tools: Read, Grep, Glob
---

Review the changes you're given. Report bugs and missing tests, nothing else.

Two limits apply by default: subagents can nest up to three layers below the main conversation, and spawning fails once 20 subagents are running in a session.

Use a subagent when the task produces output you won't reference again, you want to restrict its tools, or the work is self-contained and a summary is enough.

Multiple sessions: independent conversations

A second session is a second claude process with its own conversation. Nothing flows between sessions unless you, or cross-session messaging, move it.

claude -w feature-auth     # terminal 1
claude -w fix-billing      # terminal 2

Or as background sessions:

claude --bg "fix the billing rounding bug"
claude agents              # research preview: one table for all background sessions

Use separate sessions when the tasks are independent, need back-and-forth with you, or will each end up as their own branch and pull request.

Agent teams: coordinated sessions

Agent teams sit in between. One session is the lead, teammates are separate Claude Code instances with their own context windows, and they message each other and can share a task list. They are experimental and off by default:

{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

The docs warn that teams use significantly more tokens than a single session, since each teammate is a separate Claude instance. Teammates aren't isolated in worktrees, so each one should own a different set of files.

Side by side

Subagents Separate sessions Agent teams
Who coordinates the parent session you a lead session
Context own window, summary returns to parent fully independent own window per teammate
Talk to each other report to parent only via cross-session messaging message each other directly
File isolation optional (isolation: worktree) --worktree, or automatic for background sessions none; split files
On by default yes yes (agent view is a research preview) no, experimental

Limits of each

  • Subagents keep the parent's context clean, but you only see their summary unless you open their transcript. See how to see what subagents are doing.
  • Separate sessions give you full control, and with it all the coordination: which one waits, which branch merges first. See stopping agents from overwriting each other's files.
  • Agent teams cost more tokens and have known limitations around resuming sessions, task coordination and shutdown.

None of the three is "more parallel". They differ in who decides what runs and where the results go.

With Kanbell

Kanbell is a macOS app (Apple Silicon) for the "separate sessions" style, and it also shows subagents.

  • Agent map: for Claude Code, the agents in your project and the subagents they spawn appear on one map with their state: working, waiting or done, and whether the wait is a question or a permission.
  • One window per project, with real terminals in panes and tabs for your sessions.
  • Waiting is visible: orange dot in the window, menu bar and overview, a macOS notification, and ⌘⇧J to jump to the next waiting agent.
  • Usage: Claude Code subscription usage for the session and the week, so you see the effect of spawning more.

Limits: the subagent tree is Claude Code only. Codex CLI shows state and permission waits but no subagent tree yet; Gemini CLI doesn't publish subagents, so Kanbell shows them as not available.

FAQ

Do subagents use my usage limits?

Yes. Each subagent sends its own requests, which count toward the same usage limits as your main conversation.

How many subagents can run at once?

By default, spawning fails once 20 subagents are running in a session. CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS changes the limit (v2.1.217 or later).

Can subagents spawn subagents?

Yes, by default up to three layers below the main conversation. CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH changes the depth; 1 turns nesting off.

How do I turn on agent teams?

Set CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 in your environment or in the env block of settings.json. They are experimental and disabled by default.

Do subagents edit files in a separate checkout?

Not by default. Add isolation: worktree to a subagent's frontmatter, or ask Claude to use worktrees for its agents, to give each one a temporary worktree.