I ran five Claude Code agents in parallel one morning this week. By the time the dust settled I'd had three separate git collisions, one branch with two unrelated tabs' commits tangled together, and a recovery that needed a force-push I had to explicitly approve. Everyone's work survived. But the lesson cost me an hour I didn't plan to spend, and it comes down to a single file.

This is a follow-up to the seven-PRs-before-lunch morning. That post was the highlight reel. This one is the bug I hit running the same pattern without one rule in place.

The setup

The parallel-tab pattern looks like this: one coordinator tab holds the day's context and makes merge decisions, and several satellite tabs each carry one scoped piece of work. That morning I had five satellites going — Phase 2 of a content feature, Phase 3 of another, a Stripe doc fix, a Supabase security pass, and an investigation tab chasing a separate bug.

Two of those tabs were dispatched correctly: each got its own git worktree, a separate working directory linked to the same repository. The other two were not. They both ran their git commands inside the shared main checkout, because the work seemed small enough not to bother.