Run several Claude Code agents at once
Run parallel Claude Code agents with git worktrees and tmux: subagents vs parallel sessions, the tools that manage them, and how to stop being the bottleneck.
Updated
To run several Claude Code agents at once, give each one its own git worktree so their edits don’t collide, then run each in its own terminal tab or tmux window. Claude Code has this built in: claude --worktree <name> creates the worktree and starts a session in it. The hard part comes after that: with four agents running, you become the queue they all wait on.
Commands here follow the Claude Code worktree docs as of October 2026.
Subagents vs parallel sessions
They solve different problems.
- Subagents run inside one session. Claude hands a side task (search the codebase, run the tests, read the logs) to a helper with its own context window, and gets a summary back. You talk to one agent. Define your own in
.claude/agents/or~/.claude/agents/. - Parallel sessions are separate Claude Code conversations, each with its own task, branch and terminal. You talk to each one. That’s what this guide is about.
Use subagents to keep one task’s context clean. Use parallel sessions when you have several independent tasks: a feature, a bug fix and a refactor at the same time.
Step 1: one worktree per agent
A git worktree is a second working directory of the same repo, on its own branch, sharing the same history. Two agents in two worktrees can’t overwrite each other’s files.
The built-in way:
cd ~/code/hawkins
claude --worktree auth-flow # or: claude -w auth-flow
That creates .claude/worktrees/auth-flow/ on a new branch worktree-auth-flow and starts Claude there. Run it again with another name in another terminal for a second agent. A few details worth knowing:
- Add
.claude/worktrees/to your.gitignore. - A worktree is a fresh checkout, so
.envfiles aren’t there. List them in a.worktreeincludefile at the repo root (gitignore syntax) and Claude Code copies them in. - New worktrees branch from your default branch. Set
"worktree": { "baseRef": "head" }in settings to branch from your current work instead. claude --worktree "#1234"starts from a pull request.- On exit, a clean worktree is removed. One with changes asks whether to keep it, and prints the
claude --worktree <name> --resumecommand to come back.
The manual way, when you want a specific branch or a folder outside the repo:
git worktree add ../hawkins-auth -b auth-flow
git worktree add ../hawkins-bugfix fix-issue-456
cd ../hawkins-auth && claude
git worktree list
git worktree remove ../hawkins-auth
Each worktree needs its own dependencies installed, and two dev servers need two ports. Plan for that before you start five.
Step 2: one terminal per agent
Tabs in your terminal work fine for two or three agents. tmux scales better, and sessions survive a closed terminal or an SSH drop:
tmux new -s hawkins -c ~/code/hawkins 'claude -w auth-flow'
# inside tmux:
tmux new-window -n bugfix -c ~/code/hawkins 'claude -w bugfix'
tmux split-window -h -c ~/code/hawkins 'claude -w refactor'
Switch windows with your prefix and a number (⌃B 1, ⌃B 2), and detach with ⌃B D. For working this way over SSH, see Claude Code over SSH and tmux.
Claude Code also has agent view: claude agents opens one screen that lists your background sessions with their state (working, needs input, idle, done). Send a session there with /background or start one with claude --bg "<prompt>". It only lists background sessions, not interactive ones in other terminals. Inside one session, /batch splits a big change into units and runs a subagent per unit, each in its own worktree.
Step 3: the real bottleneck is you
Parallel agents don’t run in parallel for long. Each one stops to ask for permission, to ask a question, or because it finished. With four agents, something is always waiting, and it’s usually waiting on you while you’re reading another one’s diff.
So the work becomes triage:
- Which agent is waiting, and since when? An agent that has waited 20 minutes for a “yes” is 20 minutes of lost work.
- What does it want? A permission prompt you can answer in a second, or a design question that needs thought.
- Where is it? Which tab, which tmux window, which editor.
A few habits help on their own. Give agents tasks that don’t touch the same files. Allow safe commands up front in /permissions so they ask less (see Claude Code permission prompts). Add a Notification hook so you hear when one needs you. And watch your plan: every agent draws from the same limits, so four agents use them up much faster. See Claude Code usage limits.
Tools that manage parallel agents
As of October 2026. Most of these start and run the agents for you, each in its own workspace:
| Tool | What it is | Agents |
|---|---|---|
| Conductor | Mac app. Each task gets its own workspace, branch, terminal and diff to review and merge. | Claude Code, Codex, Cursor |
| Claude Squad | Terminal app (cs). tmux for each session, a git worktree per branch. Open source, AGPL-3.0. | Claude Code, Codex, Gemini, Aider |
| Vibe Kanban | Kanban board that runs each task in a workspace with its own branch, terminal and dev server. Apache-2.0. The project says it is sunsetting. | 10+, including Claude Code, Codex, Gemini CLI |
| Crystal | Desktop app for parallel sessions in worktrees. Deprecated in February 2026 in favor of Nimbalyst. | Claude Code, Codex |
| Claude Code agent view | Built in: claude agents lists background sessions and their state. | Claude Code |
How they compare with Coral: Coral vs Conductor, Coral vs Claude Squad, Coral vs Vibe Kanban.
Where Coral fits
Coral doesn’t run your agents. You keep starting them however you like: claude -w in Ghostty, tmux panes, VS Code’s terminal, Codex in another tab. Coral solves Step 3.
- Every running agent in your Mac’s notch. Grouped into Needs you, Done, Working and Idle. The one that has waited longest comes first.
- By project. Agents group by the git repo they work in, and a worktree joins its repo, so
hawkins/auth-flowandhawkins/bugfixsit together. Needs you stays on top across every project. Press N to start a new agent in the selected project. - Answer in one key. Press 1, 2 or 3 to answer a permission prompt or a question. You see what the agent wrote just before asking. ⌘Z takes it back within two seconds.
- Jump to the right terminal. One key lands on the exact tab, in tmux, Ghostty, iTerm2, Terminal, WezTerm, kitty, Alacritty and the terminals in VS Code, Cursor and Windsurf.
- Across agents. Claude Code, Codex, the Copilot CLI, OpenCode and Grok in one list, plus an iPhone app for when you step away.
All of that is in Coral Free. Pro adds approval rules that answer the same kind of request for you (never destructive commands), and agents on your SSH servers in the same notch.
If you want one app that creates worktrees and runs agents for you, Conductor or Claude Squad fit. If you already like your terminal and just need to stop agents waiting on you, Coral fits, and it works alongside them.
Questions
How do I run multiple Claude Code sessions at once?
Open a terminal per session and run claude --worktree <name> in each, with a different name. Each gets its own worktree and branch, so edits don’t collide.
Does Claude Code support git worktrees?
Yes. claude --worktree <name> (or -w) creates one under .claude/worktrees/ and starts a session in it. Subagents can also run in their own worktree with isolation: worktree.
What’s the difference between Claude Code subagents and parallel agents?
A subagent is a helper inside one session that returns a summary to the main conversation. Parallel agents are separate sessions, each with its own task and terminal, that you talk to directly.
How many Claude Code agents can I run at once?
There’s no fixed cap, but every agent draws from the same plan limits, and each one needs your attention when it stops. Most people find their limit is review time, not the machine.
Is there a dashboard for all my Claude Code agents?
Claude Code’s claude agents lists its background sessions. Conductor and Claude Squad show the agents they start. Coral shows every agent running on your Mac, in any terminal, in the notch.