How to run several Claude Code sessions at once, and know which one needs you
Open one terminal tab per session and start each with claude --worktree and a name, for example claude --worktree fix-login. Each session gets its own copy of the repository on its own branch, under .claude/worktrees/, so two agents never edit the same files. To know which one needs you, add a Notification hook that puts the project in a Mac banner, or start them in the background with claude --bg and watch them all in claude agents.
Last updated: October 2026
Written by the developer of Crest, 7 October 2026. Every command was run that day on a 16-inch MacBook Pro (Mac16,7) on macOS 27.0.1 with Claude Code 2.1.288, in a throwaway repository with a small Python file, so the outputs below are real and the paths are shortened. Conductor and Superset are described from their own sites; we did not run them. Crest comes last, and you need none of it to run sessions in parallel.
Why not just open two sessions in one folder
You can, and for reading code it is fine. For editing, we tried it: two sessions in the same checkout, one asked to rename a function, the other to add a new one, both in the same file, started at the same moment. Claude Code noticed. Each session saw the file change under it and said so:
Session 1: I renamed greet to welcome in app.py ... While I was editing,
something else changed the file. It now contains a multiply function and a
print(multiply(2, 3)) call, and I didn't add either one.
Session 2: I added multiply(a, b) right after add ... Something else changed the
file while I was working. Between my first read and my edit, greet was renamed
to welcome.
$ git status --short
M app.pyBoth edits landed, but as one uncommitted change on one branch. You cannot review or commit them apart, and each session runs its tests against the other’s half-finished work. On a longer task, one agent’s refactor becomes the other’s mystery bug. That is what worktrees are for.
One worktree per session
- Make sure the repository has at least one commit, and add
.claude/worktrees/to.gitignoreso the copies do not show up as untracked files. - Open a terminal tab and start a session with a name:
claude --worktree rename. The short form is-w. With no name, Claude Code makes one up. - Open another tab and start the next one with a different name. Repeat for as many sessions as you want to run.
claude --worktree rename
claude --worktree multiply # in a second terminal tabEach name becomes a folder under .claude/worktrees/ and a branch called worktree- plus the name, starting from your default branch (or from where you are, if the repository has no remote). Here are the two from our test, after both sessions had made their edits:
$ git worktree list
~/demo-app e99fef9 [main]
~/demo-app/.claude/worktrees/multiply e99fef9 [worktree-multiply] locked
~/demo-app/.claude/worktrees/rename e99fef9 [worktree-rename] lockedEach folder held exactly one session’s change, and the main checkout had none. A worktree is a fresh checkout, so install dependencies in it, and list files such as .env in a .worktreeinclude file to have them copied into every new one.
One thing worktrees do not do is make conflicts go away. They move them to the merge, where git shows them. Our two sessions both touched the last line of the file, so the second merge stopped:
$ git merge worktree-rename
$ git merge worktree-multiply
Auto-merging app.py
CONFLICT (content): Merge conflict in app.pyGive parallel sessions work that touches different files, and merge one branch before the next session starts on top of it.
Cleaning up. When you leave an interactive session, Claude Code removes a worktree that has no changes, and asks about one that does. Runs with -p are never cleaned up, and in our test they were left locked (“claude session rename”), so remove them yourself:
git worktree unlock .claude/worktrees/rename # only if git says it is locked
git worktree remove .claude/worktrees/rename
git branch -d worktree-renameThe first time you use --worktree interactively in a folder, Claude Code wants you to have accepted its trust prompt there, so run plain claude in that folder once first.
Background sessions and agent view
If you would rather not keep a tab per session, claude --bg with a prompt starts a session in the background and prints its id, and claude agents opens agent view: Anthropic’s docs describe it as “one screen for all your background sessions: what’s running, what needs your input, and what’s done.” The docs say each background session gets its own worktree. claude attach, logs, stop and rm take that id. Agent view is marked as a research preview in the docs.
We tried it with one read-only session. claude agents --json listed it as a background session, named from its prompt (“summarize app.py”), with its state going to done; claude logs showed its answer, and claude rm removed it. That read-only session made no worktree of its own.
Two more routes from the CLI’s own help: --tmux, which needs --worktree, opens a tmux session for the worktree, or iTerm2’s own panes when it can. And subagents are not the same thing: a subagent runs inside one session, in its own context, and hands back a summary, which suits splitting one job, not running separate ones.
Know which session needs you
With three tabs open, the hard part is noticing that one stopped to ask you something. People have asked Anthropic for this since 2025: issue #2654, “We need to be able to monitor multiple sessions at once”, is closed as completed, and #36885, a notification when a session waits for input, was closed as not planned. Three ways that work today:
- A banner that names the project. A
Notificationhook runs when a session waits on a permission prompt, and aStophook when it finishes. The hook receives the session’s folder, so the banner can say which one. The exact config, timed on macOS 27, is in Claude Code notifications on a Mac. In a worktree, that folder is the worktree’s, so the name you gave it shows up in the banner. - Agent view, for background sessions, groups them by what they need.
- The notch. Below.
Every session in the notch

Crest, a Mac notch app, reads your Claude Code, Codex and Copilot CLI sessions and lists the ones active in the last 20 minutes. The Agents widget puts a session that is waiting for you first, then what each of the others is doing, or when it finished, and a count such as “1 waiting · 2 working”. Click it and the list opens, with a button to jump to each session’s terminal tab. When a session asks for permission, the request itself comes up on the notch, with Deny and Allow, so you can answer without finding the tab.

In our test the three sessions, each started with --worktree, showed up under their worktree names, so naming a worktree after its task names the session too. The two waiting on a prompt came first, with an Answer button, and the one that had finished said so.
- Free: answering prompts from the notch, with no account.
- Crest Pro: the Agents widget that lists the sessions. Pro, with Take and Minutes, is $24.99 once or $2.99 a month, with a 7-day trial.
- What it does not do: start sessions or make worktrees. Your terminals stay as they are; Crest only watches and answers.
- Download Crest. Signed and notarized.Free tier, no account · 7-day Pro trial, no card · macOS 14 or later
- Open Crest’s Settings, go to Coding agents and turn on “Allow or deny commands here”.
- Hold a widget in the notch to edit the page, and add Agents.
The tools at a glance
| Route | Cost, read 7 October 2026 | What it runs | How you see who needs you |
|---|---|---|---|
Terminal tabs + --worktree | Free | One session per tab, each on its own branch | You look at each tab; add hooks for banners |
claude --bg + claude agents | Free, research preview | Background sessions you can attach to later | Agent view groups them: needs input, working, completed |
--tmux | Free, needs tmux | A tmux session (or iTerm2 panes) per worktree | Your tmux panes |
| Claude desktop app | Comes with Claude | Parallel sessions in its sidebar, worktree optional | The sidebar |
| Conductor | Free with your own keys; Pro $50 a month | A Mac app that runs Claude Code, Codex and Cursor agents in worktrees | Its own window |
| Superset | Free for one user; Pro $20 a user a month | Any coding agent, each in its own worktree; macOS, Linux in testing | Its own window |
| Crest | Free answering; Agents widget in Pro | Your own terminals, untouched | The notch: waiting first, one click to the tab |
Only the Claude Code commands and Crest were run on this Mac.
Sources
- Anthropic, Claude Code docs: Run parallel sessions with worktrees, CLI reference, Agent view, Subagents and Hooks. Read 7 October 2026.
- GitHub, anthropics/claude-code: #2654 “We need to be able to monitor multiple sessions at once” and #36885 “Notification when Claude Code is waiting for user input”. Read 7 October 2026.
- Conductor: conductor.build and its pricing page. Superset: superset.sh and its pricing page. Read 7 October 2026; neither run.
- Our own runs, 7 October 2026, Claude Code 2.1.288 on macOS 27.0.1, in a throwaway repository: the shared-checkout and worktree tests above, and three sessions in Terminal for the notch picture.
- Crest source, read 7 October 2026: AgentsWidget.swift, AgentSessionsReading.swift, AgentMonitor.swift, WidgetKind.swift.
FAQ
How do I run multiple Claude Code sessions at once?
Open a terminal tab per session and start each with claude --worktree and a different name. Each session works in its own copy of the repository on its own branch under .claude/worktrees, so they never edit the same files. Merge the branches when each is done.
What does claude --worktree do?
It creates a git worktree in .claude/worktrees, in a folder with the name you give, on a new branch called worktree- followed by that name, starting from your default branch, and starts the session there. With no name it makes one up. When you leave, a worktree with no changes is removed, and one with changes is kept if you say so.
Can two Claude Code sessions work in the same folder?
They can, but their edits mix. In our test, two sessions editing one file both noticed the other's change and both edits landed, as one uncommitted change on one branch that cannot be reviewed or committed apart. Use a worktree per session for edits.
How do I know which Claude Code session needs input?
Add a Notification hook that shows a Mac banner with the session's folder name, run sessions in the background and watch claude agents, or use a notch app such as Crest, which lists every session with the waiting one first.
Do worktrees stop merge conflicts?
No. They stop sessions from editing the same files while they work. If two sessions change the same lines, git reports a conflict when you merge the second branch, as it did in our test. Give each session work in different files.
How do I clean up Claude Code worktrees?
Interactive sessions offer to remove theirs on exit. For runs with -p, or any worktree left behind, run git worktree remove on its folder in .claude/worktrees, then git branch -d on its worktree- branch. If git says it is locked, run git worktree unlock on it first.
Is a subagent the same as a second session?
No. A subagent runs inside one session with its own context and returns a summary to it. Separate sessions are separate conversations, each with its own task and, with --worktree, its own branch.
Try Crest free
Download it with no account. Now Playing, the Shelf, the Clipboard and window snapping are free for good, and signing in gives you 7 days of Pro with no card. Pro, with Take and Minutes, is $24.99 once, on 2 Macs, or $2.99 a month.
Download Crest for macOS Get Crest Pro, $24.99Free forever. Pro free for 7 days, no card needed.
macOS 14 Sonoma or later · signed and notarized by Apple · 7-day refund
Keep reading: Claude Code notifications on a Mac · Make the agents ask less · Notch apps for AI agents · Claude Code in the notch · Are notch apps safe? · Crest overview