In partnership with

Yes, that Arnold Schwarzenegger.

He has a newsletter on beehiiv. So do Codie Sanchez, Jay Shetty, David Begnaud, Colin & Samir, and Joanna Stern.

They could publish just about anywhere. They chose beehiiv to build a direct connection with the people who want to hear from them most. And you can do the same, whether you’re world-famous or just at the start of your plan for world domination.

Anthropic Checks Out Its Repo 833 Times Per Merge
                   
researchaudio.io · par avion posted
nov 06
2026

Anthropic Checks Out Its Repo 833 Times Per Merge

Git bent under reads, not writes. Inside the server that answers instead.

from: anthropic engineering, oct 13 2026 (updated oct 15) contents: scion, a new version control system

In September, Anthropic's monorepo took in a little over 30,000 merged changes a day. Roughly 25 million times a day, a CI job checked that same repo out. Divide one by the other and you get roughly 833 reads of the repository for every change written, and that count leaves out developer machines, agent sandboxes and research jobs.

Most coverage led with the 30,000. The ratio is the more useful number. Claude made writing code fast and plentiful. What broke was everything that reads it, and that is why Anthropic's answer was a server that answers questions rather than a faster way to copy files.

route 01What shipped

postmark: a 7-person team, five months, one migration

Anthropic built Scion, an in-house version control system, and moved its entire monorepo off git in five months. In the same window the team shipped a code review tool called Antique, code search, and an access control system for source. Seven people built Scion, Antique and about half a dozen related systems while daily merges grew roughly tenfold.

12x
daily merges, May to Sept
(about 2,500 to 30,000+)
200x
smaller CPU and memory
than the git mirror fleet
25%
CPU capacity CI
got back

fig. 1 · the daily mailbag

itemfigurewhere it comes from
Merged changes per day (Sept)30,000+post
One merge every~2.9 sarithmetic
CI checkouts per day~25,000,000post (approximate)
CI checkouts per second~289arithmetic
Checkouts per merged change~833arithmetic
Git traffic per day if fetched naively600+ PBpost (hypothetical)
Implied size of one naive checkout~24 GBarithmetic, matches the 25 GB working copy
History of the main branch~100 GBpost

Source: Anthropic's post. Arithmetic rows divide the post's rounded figures and are approximate.

route 02Why git bent

postmark: a design for offline readers, used by readers who never go offline

Git is decentralized. Every clone is a complete repository that can diff, read history, run blame and check out any revision with no network. For most repos that is the right call, and it is a big reason git won.

Think of it as mailing every reader a copy of the whole library so they can read on a plane. Anthropic, like most companies, actually ran git around one authoritative copy, and nearly all of its readers were agents and jobs that are online by definition. If every reader sits next to the library, mailing them the library is pure overhead.

The team tried the standard workarounds first: shallow clones, sparse checkouts, promisor remotes, internal mirrors (several hundred at peak) and repo snapshots in blob storage called seeds. They bought time. But seeds drifted further from the tip of main between refreshes, and keeping diff and blame working on partial clones took more and more care.

fig. 2 · who does the work

jobgitscion
Create a commitclient, then pushserver, nothing to push
Blame, file historyclient, from local historyserver, also exposed as API
Merge, rebaseclientserver
Data kept locallycomplete copybounded object cache
Repo maintenancepackfiles to managenone, no packfiles exist
Working copyfull tree by defaultoptional; sparse or virtualized

Source: the "principles" section of Anthropic's post. Virtualized means files appear on disk when a process first reads them.

route 03How a checkout travels

postmark: ask for what you want, never describe what you have

Git's fetch starts with negotiation: the client tells the server what it already has, and the server computes the difference and ships a packfile. Scion flips this. The client starts at a root tree, checks its local store for missing trees, requests them one level at a time, then does the same for file contents.

Every request names one object by its content hash, and that object never changes. So any cache anywhere can answer it, nothing has to be computed per client, and a dropped transfer resumes instead of restarting a multi-gigabyte download. Sparse checkouts need no special support: the client simply never asks for the trees it does not want.

fig. 3 · the delivery route

scn client
the job or agent asking
your mailbox
→
scion-daemon
one per node, shared by every job on it; boots from a snapshot
local post office
→
scion-cache
regional; streams objects from memory in the format the daemon stores
regional sorting center
→
scion-server
authoritative; reads Spanner or cloud storage on a miss
central depot
99%+ cache hit rate at each tier same RPCs at every tier, so the client never needs the topology tiers enforced so one failed regional cache cannot flood the servers

Source: "Scaling Scion" section of Anthropic's post. Postal labels are this newsletter's analogy.

The payoff is the 833 problem solved from the read side. CI and research jobs check out code in seconds rather than minutes, roughly 100x faster, and neither clients nor caches run repository maintenance.

route 04The changeset

postmark: a delivery slip, not a photo of the warehouse

Scion's unit of work is a changeset, an entry in a write-ahead log. A git commit points at a full tree. A changeset lists the files that changed relative to its first parent, plus content-addressed pointers to their compressed contents in blob storage.

That shape is why the server keeps up. Accepting a changeset involves no packfiles, no locks, no coordination between servers and no refs. Moving a ref, such as main, is a compare-and-swap on a single Spanner row, done separately. The team discourages refs beyond main and release branches, because global state every server must agree on is a scaling problem waiting to happen.

A slip of changes cannot answer "who last touched this line" on its own. So Scion builds derived data (blame structures, path history, skip lists over the commit graph), each type defined recursively from its parents' values. Each can be computed eagerly or deferred, and because clients never see the internals, the team keeps adding new types, like indexes for copy detection and path-based file search.

The design rule: the cost of a commit scales with the size of the change, never the size of the repo. Anything that grows with the repo has to live in derived data, built incrementally, off the write path.
route 05The merge queue they could not keep

postmark: green main moves from before merge to before deploy

The quietest line in the post is the one with the most consequence for anyone running agents at volume. Anthropic says it could not effectively replicate the industry standard, a global repository lock on the merge queue. Instead it invested in post-merge and pre-deploy automated testing, and accepts that concurrent changes can conflict, because Claude usually fixes those conflicts faster than a human could spot them.

The arithmetic shows why. At September's average of one merge every 2.9 seconds, a 10-minute test suite watches about 200 other changes land before it finishes. A queue that tested each change alone, one after another, behind that suite would clear about six an hour.

fig. 4 · where "main passed tests" lives

stagehuman-scale merge queueanthropic at agent scale
before mergetested against the tip, behind a lockreviewed for intent; no global lock
at mergemain advances one tested change at a timemany changes land concurrently
after mergelittle to doautomated post-merge testing
before deployrelease gatesautomated pre-deploy testing
collisioncaught before mainreaches main; Claude repairs it

Source: "We're completely rethinking our priors" in Anthropic's post. The 200-merge figure is this newsletter's arithmetic on the September average.

Our reading: at agent merge rates, "main is green" stops being a property of the branch and becomes a property of the deploy gate. If your agents are pushing a merge queue toward its limit, that is the trade to plan for, not a faster queue.

route 06The engineers' job was saying no

postmark: the agents scanned the log the API was built to replace

All of the engineers on the project rate Claude as better than themselves at writing code. What they supplied was knowledge of how systems connect, and judgment about which trade-offs mattered at the scale they needed.

The best example is a small irony. Several systems tried to find out when a change merged to main by reading the commit log line by line instead of asking the code review tool. That brute-force scan is the exact pattern Scion's API exists to retire, and agents reached for it anyway. Agents, the post says, will sometimes break a core system constraint to satisfy a pattern that should never have been allowed.

fig. 5 · division of labor

claude didengineers did
Rewrote the handwritten git-to-Scion ingestion prototype (Mythos Preview snapshot): 20x less memory, 4x faster, sequencing invariants keptChose the problems, the scale target and the cross-system design
Hermetic simulations, fuzzing and rate limiting on a tight timelineStopped agents from bypassing the review tool with log scans
Found an ancestry-query optimization that missed an indexReined in over-engineering from adversarial review (one review distrusted another internal service and added needless validation)
Ran "superfan" channels in Claude Tag, each watching one component's telemetry and logsReviewed every change request for intent rather than reading every line

Source: "What we learned building Scion" in Anthropic's post.

route 07The return address

postmark: prior art, credited two days late

Centralized source control for huge monorepos has a lineage: Google's Piper and Meta's Sapling. On October 14, a former Meta engineer writing as Rain on sunshowers.io argued that Scion's changeset model closely tracks Mononoke, Sapling's server, and its Bonsai changesets, with the complaint framed as "The problem is attribution, not copying."

Anthropic updated the post on October 15. The updated post credits Piper and Sapling in the body, and a footnote names Mononoke and its Bonsai data model as pioneering many of the techniques Scion uses. Worth knowing if you go looking for the design: the open-source version of these ideas already exists, in Sapling's repo.

route 08What to carry into your own repo

postmark: you do not need Scion to borrow the idea

Anthropic says plainly that Scion is no general replacement for git and that a broadly useful public version would be difficult to provide. Its stated hope is narrower: git servers need not work like git clients, forges could expose server-side RPCs (perhaps standardized), and git's sparse and shallow features could compose better. Five checks follow from the post.

fig. 6 · five checks

#checkwhy it matters
1Divide clones and fetches per day by merges per dayTells you whether reads or writes are your real load. Anthropic's ratio was about 833.
2List jobs that clone just to ask a questionDiff, merge base, blame and ancestry can come from a forge API. Scion's API is what made automated bisect and revert practical at scale.
3Slice what git already lets you slicegit clone --filter=blob:none and git sparse-checkout set. Anthropic used these and they bought real time.
4Treat refs as shared global stateEvery branch is something every server must agree on. Fewer long-lived refs, fewer contention points.
5Decide where green livesAt high merge rates the queue lock gives first. Know whether your safety net is pre-merge or pre-deploy before an agent swarm decides for you.

Source: checks derived from Anthropic's post; git flags from the git documentation.

return to sender · what the post does not say

□ No cost figures for building or running Scion.

□ No split of the 30,000 daily merges between Claude and people.

□ The 25 million checkouts are stated as approximate, and the 600 PB is a naive hypothetical, so the 833 ratio is a rough scale, not a measurement.

□ No code released. Anthropic notes its internal token spend far exceeds what other businesses would choose.

□ Its expectation that others hit these limits within six to twelve months is a forecast.

The headline was 30,000 merges. The engineering was in the 25 million reads. Scion stopped mailing the library to every reader and started answering their questions at the counter, and if your agents read far more than they write, that is the part worth copying.

ResearchAudio.io · sources

Redesigning source control at Anthropic · Sapling · Mononoke docs · Scion and Mononoke (HN) · Main HN thread · Credit timeline · git partial clone · git sparse-checkout