Claude Code on a Mac

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.py

Both 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

  1. Make sure the repository has at least one commit, and add .claude/worktrees/ to .gitignore so the copies do not show up as untracked files.
  2. 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.
  3. 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 tab

Each 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] locked

Each 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.py

Give 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-rename

The 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 Notification hook runs when a session waits on a permission prompt, and a Stop hook 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's Agents widget with two rows: Claude, tests-run, Needs your permission, and Claude, checkout-fix, Needs your permission
Two of our three test sessions, each started with claude --worktree, waiting on a permission prompt. The worktree's name is the session's name.

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.

Crest's Agents screen: tests-run and checkout-fix with Needs your permission and an orange Answer button each, and docs-pass, Finished just now
Click the widget for every session: an Answer button on the waiting ones, the finished one below. Other sessions on this Mac are cropped out.

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.
  1. Download Crest. Signed and notarized.Free tier, no account · 7-day Pro trial, no card · macOS 14 or later
  2. Open Crest’s Settings, go to Coding agents and turn on “Allow or deny commands here”.
  3. Hold a widget in the notch to edit the page, and add Agents.

The tools at a glance

RouteCost, read 7 October 2026What it runsHow you see who needs you
Terminal tabs + --worktreeFreeOne session per tab, each on its own branchYou look at each tab; add hooks for banners
claude --bg + claude agentsFree, research previewBackground sessions you can attach to laterAgent view groups them: needs input, working, completed
--tmuxFree, needs tmuxA tmux session (or iTerm2 panes) per worktreeYour tmux panes
Claude desktop appComes with ClaudeParallel sessions in its sidebar, worktree optionalThe sidebar
ConductorFree with your own keys; Pro $50 a monthA Mac app that runs Claude Code, Codex and Cursor agents in worktreesIts own window
SupersetFree for one user; Pro $20 a user a monthAny coding agent, each in its own worktree; macOS, Linux in testingIts own window
CrestFree answering; Agents widget in ProYour own terminals, untouchedThe 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.99

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