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.

ResultPairs
Git reports a textual conflict179 of 733 (24.4%)
Pairs from two different agents with a conflict52 of 120 (43.3%)
Pairs from one agent with a conflict127 of 613 (20.7%)
Git merges cleanly554 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 Gitgitta
Runs that left main broken8 of 240 of 24
Repair rounds per run0.331.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.

ResultWithout gittaWith gitta
Work correct after the merge0 of 1010 of 10
Extra run timeAbout 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.