I was in London, at work, running 15 parallel Claude Code agents.

Scoping and planning felt smooth.

Review became a nightmare.

The merge conflicts overlapped.

Merging one pull request blocked the others.

I spent more time on review than on every step before it.

I had gone from over-planning to over-reviewing

I listened to Matt Pocock's conversation with Robert C. Martin.

What I took from it was frequent review, in small slices.

I was reviewing one pile, after all 15 agents had already written.

I split the work now.

Each agent gets the same attention.

Each agent gets the tickets around the work

The plan goes out with the context around it.

That context is the tickets.

  • Tickets already in flight.
  • Tickets that block this one.
  • Tickets I am not working on.
  • Comments shared across the tickets and the worktrees.

I revise the plan in Claude Artifacts

This is my practice.

An artifact opens beside the conversation, and you ask Claude to change it.

That line is from Anthropic's help center, read on 2 November 2026.

I use Claude Artifacts to talk a plan through and change it over time.

The agent asks what I am working on.

I answer.

It tells me what it was thinking.

We combine the two.

My plan skill checks the other worktrees

This is my practice too.

My plan skill has the context of my other worktrees.

It notices when another worktree is already open.

It checks the linked tickets, and whether they are related.

I set a limit so the pull requests stay bite-sized.

When the estimated work is too big, the skill suggests another worktree or another ticket.

I comment on the plan whenever I see it.

I improve the skill over time.

Flat tangerine cover. Brace buddy, two ink braces and two eyes with no outline, sits above the words Parallel agents.

Git worktrees give each Claude Code agent its own checkout

A git worktree is a second working directory for one repository.

It has its own files and its own branch, and it shares that repository's history.

git worktree add creates it.

Git refuses to check out a branch that another worktree already has, unless you pass --force.

The docs' example, claude --worktree feature-auth, creates a directory under .claude/worktrees/, named with the argument you passed, on a branch named worktree- plus that argument, and starts Claude there.

A second terminal, with a different name, starts the second session.

Leave the name off and Claude picks one, such as bright-running-fox.

Add .claude/worktrees/ to .gitignore.

The first claude in a directory is where you accept the trust dialog.

--worktree exits if that dialog has never been accepted.

A -p run skips the check.

A worktree stays inside the repository you started from.

New worktrees branch from the default branch on the remote.

That is worktree.baseRef set to "fresh", the default.

Set it to "head" when the new session has to start from the branch you are on, including commits you have not pushed.

The setting accepts those two values.

For a branch that already exists, create the worktree with git:

git worktree add ../repo-fix-list -b fix-list
cd ../repo-fix-list
claude

A worktree is a fresh checkout.

Gitignored files stay behind unless .worktreeinclude names them, and a match is copied only when it is also gitignored.

While the session is in the worktree, Claude Code blocks an edit aimed at the main checkout, and a git command that points back at that checkout.

A shell copy into the main checkout, with no git command, sits outside those checks.

In how I use Claude Code I wrote that every concurrent session or subagent runs in its own worktree.

The parallel agents page names the cases.

A session you start can have a worktree.

A subagent gets one with isolation: worktree.

Agent teams do not put teammates in worktrees.

These commands are from the worktrees page and the git page above, read on 2 November 2026.

The brief is the task, the files, the decision, and the stop

One session found two bugs, in two repositories.

It started a git worktree for each fix, with a fresh agent in each.

Every brief had four parts.

The task.

A verified background, with file paths.

The decision already made.

Numbered steps.

Two steps were in every brief: "Tell me the rule you chose and why before you build it" and "Ask me for the ticket key before you name the branch or commit."

The block is that shape, filled in with a generic task.

Task
Stop a failed item from looking like a success.
 
Background
Verified by reading these files:
- app/list.tsx renders one row for each item in the response.
- api/list.ts builds that response.
 
Decision already made
The check belongs in the API. The page renders what the API returns.
 
Steps
1. Tell me the rule you chose and why before you build it.
2. Ask me for the ticket key before you name the branch or commit.
3. Change the API so it matches the decision.

A new session has none of the investigation transcript.

A default worktree has none of the uncommitted files from the checkout you were in.

The frontend agent planned a warning label

This is my judgement of that session.

The frontend agent planned a warning label.

I pushed back.

The warning cannot work when the backend drops those items first, because the page never receives them.

The fix changed before any code was written.

The backend agent found that the rule needs a change in a shared package too.

It asked before it touched two repositories.

Frequently asked questions

What is a Claude Code worktree?
A git worktree is a separate checkout with its own files and branch, sharing one repository's history. Passing a name to claude --worktree creates a directory under .claude/worktrees/ on a branch named worktree- plus that name, and starts Claude there: https://code.claude.com/docs/en/worktrees
How do you run multiple Claude Code agents in worktrees?
Run claude --worktree with a different name in a second terminal, and give each session the same attention. A new session has no transcript from the others, so the brief has to carry the tickets around the task.
Do Claude Code agent teams use worktrees?
No. Agent teams are experimental and disabled by default, and they do not isolate teammates in worktrees, so each teammate has to own different files. A session you start, or a subagent with isolation set to worktree, can have one: https://code.claude.com/docs/en/agents
How is Claude Code plan mode different from a written brief?
The brief in this post tells the agent to state the rule before it builds. Plan mode has Claude read, explore, and write a plan, and it blocks source edits until you approve, except in an interactive terminal session where bypass permissions are available: https://code.claude.com/docs/en/permission-modes
What is the difference between git worktree add and claude --worktree?
git worktree add creates a linked worktree at a path you choose, on a branch you name, and you start Claude in that directory yourself. claude --worktree plus a name creates the directory under .claude/worktrees/, on a branch named worktree- plus that name, and starts Claude there: https://git-scm.com/docs/git-worktree and https://code.claude.com/docs/en/worktrees
What context does each parallel agent need?
The plan, plus the tickets already in flight, the tickets that block this one, the tickets you are not working on, and the comments shared across the tickets and the worktrees.
What does a plan skill check before the agent builds?
Mine has the context of my other worktrees, notices when one is already open, and checks whether linked tickets are related. I set a limit so pull requests stay bite-sized. When the estimated work is too big, it suggests another worktree or another ticket.
What does claude remote-control --spawn worktree do?
In Remote Control server mode, --spawn worktree gives each on-demand session its own git worktree. The session created at startup stays in the current directory, and --capacity defaults to 32: https://code.claude.com/docs/en/remote-control