Contents
Measurements
The numbers on the front page come from a replay of real agent pull requests, from the study by Xu et al. and from our own tests. This page explains how we got each one.
Agent pull requests that are open at the same time
Xu, Subramanian and Karthik looked at 33,596 agent pull requests in 2,807 GitHub repositories. 79.4% of them were open at the same time as another agent pull request in the same repository (Xu et al., 2026).
Replay of real agent pull request pairs
We took 747 pairs of agent pull requests that were open at the same time, from the same AIDev dataset the study uses, one pair for each repository. We merged each pair with Git. 12 repositories were gone and 2 pull requests had lost their refs, so 733 pairs could be replayed.
| Result | Pairs |
|---|---|
| Git reports a textual conflict | 179 of 733 (24.4%) |
| Pairs from two different agents with a conflict | 52 of 120 (43.3%) |
| Pairs from one agent with a conflict | 127 of 613 (20.7%) |
| Git merges cleanly | 554 of 733 (75.6%) |
The study reports 41.7% for pairs from different agents and 19.8% for pairs from one agent, so our replay gives close to the same rates.
One clean merge still broke. Devin opened pull requests #72 and #73 on firecrawl-mcp-server with the same title. Git merged them without a conflict, and the merged code failed to compile with TypeScript error TS1117. gitta pr-check warned that both pull requests edited the same part of src/index.ts, and the test gate reported the TS1117 error. The worktrees guide tells the full case.
Two AI agents on real tasks
Two Claude Code agents each got the task of a real pull request from an open source project, on the same starting commit, and worked at the same time. We merged their work once with plain Git and once with gitta, in both orders, twice each. That is 48 runs on six projects, among them requests and firecrawl-mcp-server.
| Plain Git | gitta | |
|---|---|---|
| Runs that left main broken | 8 of 24 | 0 of 24 |
| Repair rounds per run | 0.33 | 1.38 |
With gitta, the agents fixed each clash before it reached main, which took more rounds. Measured in October 2026.
Agent trial
We tested the warning and sync with real agents on an early prototype of gitta. Headless Claude Code with Sonnet worked on five scenarios in which two agents work in parallel and one agent’s change affects the other’s new code. We ran each scenario twice with gitta and twice without it. A first round of twenty runs showed that agents act on a warning only when they may run the sync, so the second round allowed it in both arms. With gitta, the agent got warnings and could use gitta sync.
| Result | Without gitta | With gitta |
|---|---|---|
| Work correct after the merge | 0 of 10 | 10 of 10 |
| Extra run time | About 6 seconds |
A control case without a collision passed in both arms.
Blind merge cases
We wrote 48 new Python and TypeScript cases, each with two agents changing the same code. The cases were written without looking at how gitta works. Plain Git let 4 broken merges through. gitta let none through.
All measurements are from October 2026.
The controlled examples show three collisions between parallel agents on real repositories. How gitta works explains where the warnings come from.