Symphony Apps Development logo — teal interlocking S monogram beside the studio wordmark
All writing

Running two coding agents on the same codebase

We tried assigning parallel tickets to two agents at once on the same repository. The bottleneck was not the agents, it was the branch strategy.

Category
AI
Reading time
6 min
Published
11 Jun 2026
Topics
AI, Engineering, Delivery

It is tempting to treat a second coding agent as a second pair of hands and simply hand it another ticket. On a shared codebase that assumption falls over quickly, and not for the reason we expected.

The expected failure and the actual one

We expected the agents to step on each other's code directly — two changes touching the same file, a messy merge. That happened occasionally and was easy to resolve. The bigger problem was slower and less visible: both agents made small, individually reasonable refactors to shared utility code, and by the time either change reached review, the other's assumptions about that utility no longer held.

What we changed

  • Ticket scoping got stricter — each ticket now explicitly lists which shared files it may and may not touch, enforced the same way we enforce it for human engineers, which turned out to be the actual fix, not an AI-specific one.
  • Shorter-lived branches — parallel work merges within a day where possible, rather than accumulating for a week, so the shared-file conflicts surface while they are still cheap to resolve.
  • One agent, one reviewer, always — we stopped letting agent output from two parallel tasks land in the same review batch, because a reviewer context-switching between two unrelated diffs missed more than one reviewing one diff at a time.

The genuine speed gain

Independent, well-scoped tickets — a new endpoint here, an unrelated UI component there — did parallelise well, and that is most of what a small team's backlog actually looks like day to day. The failure mode was specific to shared infrastructure code, not general.

Parallelism does not remove coordination cost. It just moves it from "who writes this" to "whose assumptions about this shared file are current".

What we still do sequentially on purpose

Anything touching the data layer, the authentication path, or a shared type definition goes through one agent or one engineer at a time, with the change merged and settled before the next one starts. The cost of serialising that narrow slice of work is small compared to the cost of untangling two overlapping refactors.

Where this leaves us

Two agents on a codebase is not fundamentally different from two engineers on a codebase — the same discipline about scope and shared files applies, and teams that already had that discipline adapted with less friction than teams that did not.

Tell us what you’re trying to ship

A first call is thirty minutes and costs nothing. Bring the problem, not a spec — working out what to build is the part we are good at.

Or email office@symphonyapps.ro. We reply within one business day, in English or Romanian.