A single working directory is fine for one person with one task. It stops being fine the moment two agents edit at once. Git can check out a given branch in only one working tree at a time, and a shared checkout means both agents write into the same set of files, the same index and the same uncommitted state. Worktrees exist precisely because that constraint is real: each has its own working directory while sharing the repository's history (Nx on worktrees for agents).
The collision is predictable once you look at what agents actually change. The task itself is rarely the conflict. It's the drive-by cleanup that overlaps. One practitioner who runs parallel implementation agents describes it precisely: two agents never fight over the task they were assigned, they fight over the shared utility file both decided to tidy up (the diff budget write-up).
There is a second, quieter cost: review. A stored git diff is the natural inspection surface for agent work, and a small, file-scoped change is quick to verify. When an agent rewrites half a function to fix a one-line bug, the diff becomes enormous even though the output is functionally correct. That is the over-editing problem, and it is invisible to test suites because the tests still pass (the minimal-editing analysis). Isolation does not fix over-editing by itself, but it makes each agent's output separable, which is what lets you review and compare diffs at all.



