If You Run Claude Code in Parallel, Use Git Worktree
When you’re driving Claude Code in a single session, you start to notice something — there’s a surprising amount of dead time:
- Waiting for code generation
- Waiting for fixes
- Waiting for it to reorganize context
Honestly, it’s boring. You can use that time to grab a coffee, sure. But if you care about throughput, the natural reaction is “I’d rather be doing something else right now.”
The naive approach falls apart fast
The obvious move is to just hand more work to Claude in parallel. People typically:
- Throw a second task at Claude in another session
- Run both sessions inside the same repository
And then they walk straight into merge-conflict hell.
It’s not Claude’s fault. The setup is wrong. If two agents are editing the same working tree on the same branch, of course they’ll stomp on each other.
The fix is simple: Git Worktree
The answer is boring and obvious once you’ve seen it.
Use Git Worktree to physically separate the work.
How to do it
You don’t need anything elaborate. Tell the second Claude session something like this:
I'm running another implementation session in parallel.
Split this work onto its own branch and Git worktree.
That’s it. Claude will handle the rest.
What changes when you do this
- Branches are separated
- Working directories are separated
- Conflicts are avoided structurally, not by luck
The result: parallel development that actually holds together.
The mental picture
main repo
├── worktree-task-a ← Claude session A
└── worktree-task-b ← Claude session B
Each worktree is a fully independent checkout. Both sessions can build, run tests, and commit without ever fighting over the same files.
This is different from “agent role-splitting”
You’ll often see people split a single task across multiple agents — a Generator and a Reviewer, for example. That’s a useful pattern, but it’s a different axis.
That pattern is decomposing one task across multiple agents.
What I’m describing here is parallelizing multiple tasks across multiple agents.
Both can be useful. They aren’t substitutes for each other.
The real bottleneck (this part matters)
Worktree gives you the structural ability to run things in parallel. That’s the easy half. The hard half is that the bottleneck stops being the model and starts being you.
When you fan out too aggressively, you hit:
- You can’t review fast enough to keep up
- You lose track of what each session is actually doing
- You can’t tell which output is the correct one anymore
At that point, parallelism stops being a speedup and starts being a way to ship subtly wrong code faster.
How I actually run it
My personal rules for now:
- Two parallel sessions, max
- A human review step in the middle of each task, not just at the end
- No “fully autonomous” runs
The reason is simple: I don’t trust AI to 100% yet. The throughput gain isn’t worth the chance of merging something I never actually read.
Could you go fully parallel? In principle, yes.
You can push this much further, but only if all of the following are true:
- The spec is genuinely locked down
- Tests are automated and trustworthy
- You have a real evaluator gating the output
In other words, you need a proper harness around the agents — automated checks that catch the kind of mistakes a human reviewer would otherwise have to catch.
Without that harness, “more parallelism” is just “more unreviewed code.”
Bottom line
If you want to use Claude Code seriously:
- Use worktrees to parallelize cleanly
- Stay aware that the human is the bottleneck
- Don’t paper over that with more automation than you can verify
That’s the realistic version of “AI parallel development” today.
One-line version
- Claude is fast
- Humans are slow
- So separate them