Why Anthropic Replaced Git With Scion — What Broke, What Changed, and What It Means for You
In October 2026, Anthropic published an engineering post explaining that it had moved its main monorepo off Git and onto Scion, a version control system it built in-house. Headlines quickly turned that into "Anthropic cancels Git." The real story is narrower, and more interesting: AI agents pushed one very large repository past the point where Git's design fit the way it was being used. This article explains what went wrong, what Scion does differently, and how each change solves a specific problem — with diagrams for every step.
Source: Redesigning source control at Anthropic, Anthropic Engineering, October 13, 2026 (updated October 15). All figures below come from that post.
The Problem: AI Agents Outgrew Git
Anthropic's post opens with a claim that would have sounded strange a few years ago: writing code is no longer its bottleneck. As Claude made writing code dramatically faster, the bottleneck moved to the infrastructure around it — source control, builds, and CI — which was, in Anthropic's words, built for human scale.
| Measure | Figure from Anthropic's post |
|---|---|
| Changes merged per day | About 2,500 in May 2026 → over 30,000 by September |
| History of the main branch | Almost 100 GB |
| Compressed working copy | Over 25 GB |
| Code checkouts for CI | On the order of 25 million per day |
| Traffic if fetched naively | Over 600 PB of git traffic per day |
| Git mirrors needed to cope | Several hundred at peak |
Anthropic did not give up on Git easily. It used the tools Git offers for working with a slice of a repository — shallow clones, sparse checkouts, and promisor remotes (the mechanism behind partial clones) — and built more on top: several hundred internal Git mirrors to spread the load, and repository snapshots called seeds, kept in blob storage so jobs did not have to clone from scratch.
Each workaround bought time and added its own cost. The mirrors became harder to operate as the merge rate climbed. Seeds fell further behind the tip of main between refreshes. And history-based operations such as diff and blame needed extra care to keep working on partial clones.
Git at Anthropic's scale: one authoritative repository, hundreds of mirrors and snapshots to spread the load, and millions of checkouts a day by clients that each expect a full repository.
Why Git's Design Worked Against Them
Git is a decentralized system. Every clone is a complete, self-contained repository with the entire history, so you can commit, branch, diff, and read the log on a plane with no network. That is exactly what makes Git so good for open source and for teams spread across the world.
Anthropic's situation was the opposite. It was, in its own words, using Git as a centralized system with one authoritative copy, and nearly all of its clients were agents and jobs that are online by definition. Every one of those clients paid for Git's offline-first promises — downloading and storing history, keeping a full repository on disk — without ever using them. The post's conclusion is blunt: the properties that make Git excellent for distributed, offline work were actively undermining its ability to scale as the repository grew.
What Anthropic Changed: Scion's Six Design Principles
A seven-person team built Scion around six principles. Each one reverses an assumption Git makes:
- Clients are always online — so they can fetch data on demand instead of holding everything locally.
- Client-server asymmetry — the server does most of the work; the client keeps only a bounded cache.
- A comprehensive source control service can power many novel applications — every query is available as an API, so many jobs need no local repository at all.
- Everything must be horizontally scalable — no packfiles and no repository maintenance.
- Commits must be cheap, incremental, and lock-free — their cost scales with the size of the change, not the size of the repository.
- The working copy is optional, and sparse by design — you only download what you read.
The next five sections show how those principles turn into concrete changes.
Change 1: The Server Does the Work
In Git, you commit locally and then push to share your work. Your clone does almost everything — commits, merges, rebases, log, blame — because it has the whole history. In Scion, every commit, rebase, or merge happens on the server, so there is nothing to push. The server also answers questions about file history and blame.
Git puts the work and the full history on every clone. Scion moves both to the server and keeps the client small.
The trade-off is deliberate. The Scion client can compute very little on its own, but in exchange it needs far less data locally. And because the client's queries are also exposed as an API, many jobs don't need a local repository at all — a CI job that needs the diff between a commit and its merge base, for example, can simply ask the server for it.
Problem solved: millions of jobs no longer each download, store, and process history they never use.
Change 2: Changesets Instead of Whole-Project Snapshots
A Git commit points at a tree: a snapshot of the entire project at that moment. Git is smart about it — files that didn't change are shared between commits by their hash — but every commit still describes the whole project, and finding out what changed means comparing two trees. New to how commits, trees, and HEAD fit together? Start with our guide to Git's working directory, staging area, and HEAD.
Scion's unit of work is a changeset, an entry in a write-ahead log. A changeset stores most of what you would expect from a commit, but instead of a pointer to a full tree, it stores the list of files that changed relative to its first parent, along with content-addressed pointers to the compressed file contents in blob storage. Changesets are created on the server and are available everywhere instantly.
A Git commit describes the whole project. A Scion changeset records only what changed, and separate derived-data indexes answer history questions quickly.
Recording only the difference has a cost: on its own, a changeset can't quickly answer questions like "who last edited this line?" or "which commits touched this file?". Scion answers them with what it calls derived data — dedicated structures for blame and path history, and skip lists for walking the commit graph. Each type is defined recursively: its value for a changeset is computed from its values for that changeset's parents. That means the work for each new commit is small, and Scion can choose, per type, whether to compute it eagerly or only when someone asks.
Problem solved: creating a commit costs work proportional to the size of the change, not the size of a 100 GB history.
Change 3: Fetch Exactly What You Need — No Packfiles
When you run git fetch, your client and the server negotiate: the client describes which commits it already has, and the server builds a packfile — one compressed bundle containing everything the client is missing — and streams it back. For a normal repository that is efficient. For a repository this size, that single response can be enormous, and it is built specifically for that one request.
Scion's client, scn, works differently. Its negotiation doesn't tell the server what the client already has. Instead, the client checks its own local store for missing trees and requests them, recursively, by their content hash.
Git negotiates one large, custom response. Scion makes many small requests for objects that never change, so they can be served from cache.
Because all Scion data is content-addressed, a stored object never changes. Every request is for one specific, immutable object, so any cache can answer it. The process is efficient and resumable because there is no single multi-gigabyte packfile response, and there is no equivalent of packfiles at all.
The same design makes sparse and virtual working copies almost free. Sparse checkouts need no special support: the client simply doesn't ask for trees it doesn't want. Virtualized checkouts go further and materialize files only when they are read, so a job pays only for what it actually touches.
Problem solved: no more giant per-request downloads, and no more full working copies for jobs that read a handful of files.
Change 4: Layers of Caches That Scale Out
Instead of hundreds of full Git mirrors, Scion serves objects through three layers. On each machine, the client talks to a local daemon that stores objects for the whole node. The daemon talks only to regional cache servers that stream objects straight from memory. Only when the cache doesn't have something does the request reach the authoritative servers, which read from Spanner (Google's distributed database) or cloud storage as needed.
Requests travel one tier at a time and stop at the first cache that has the object.
All three tiers respond to identical RPCs, so in principle any tier could talk to any other — but Anthropic strictly enforces the layering to isolate failures. A broken regional cache should never turn into a flood of traffic against the authoritative servers. Every component scales independently, the servers need little coordination, and there is no fully materialized copy of the repository anywhere, not even on the server.
Problem solved: capacity grows by adding servers, not by operating hundreds of full mirrors that each need maintenance.
Change 5: Lock-Free Commits and (Almost) No Branches
At 30,000 merges a day, any global lock becomes a traffic jam. Scion avoids them. Creating a changeset involves no packfiles to accept, no locking or cross-server coordination, and no refs to move.
That last point is the biggest cultural difference from Git. Scion's development lifecycle discourages refs — branches and tags — except for main and release branches. Refs still exist, but neither creating nor fetching commits involves them, and moving one is a single compare-and-swap on one database row, done separately from creating changesets.
Anthropic also moved away from the industry-standard merge queue with a global repository lock, which it hasn't been able to replicate effectively at agent scale. It relies instead on post-merge and pre-deploy automated testing. That does mean concurrent changes can conflict — but, as the post puts it, Claude can typically fix those conflicts faster than humans can even identify them.
Problem solved: landing a change no longer waits in line behind thousands of others.
Git vs Scion at a Glance
| Aspect | Git | Scion |
|---|---|---|
| Model | Distributed — every clone is a complete repository | Centralized — one authoritative service |
| Works offline? | Yes, fully | No — clients are assumed to be always online |
| Where commits, merges, and rebases happen | On your machine, then pushed | On the server — nothing to push |
| What a commit records | A pointer to a full-project tree | Files changed relative to the first parent |
| History questions (log, blame) | Computed locally from the full history | Answered by the server from derived-data indexes |
| Fetching | Negotiated packfile per request | Individual objects by hash, served from any cache |
| Working copy | Full by default; sparse is opt-in | Optional, sparse or virtual by design |
| Branches | Cheap and everywhere | Discouraged except main and releases |
| Repository maintenance | Needed (git gc, repacking) | None on clients or caches |
| Availability | Open source, used everywhere | Internal to Anthropic only |
The Results
| What Anthropic measured | Result after moving to Scion |
|---|---|
| Infrastructure CPU and memory | 200x smaller than the previous Git mirroring infrastructure |
| Code checkouts for CI and research jobs | Two orders of magnitude faster — seconds instead of minutes |
| CI capacity | 25% CPU capacity win in CI alone |
| Cache hit rate | Over 99% at every tier |
| Repository maintenance | None needed on clients or caches |
How a seven-person team pulled it off
A team of seven built Scion and a new code review tool called Antique, and fully migrated the monorepo off Git in five months — while daily merges grew more than tenfold. The post describes building Scion with Claude writing code, with engineers spending more of their time judging design intent and saying "no" to over-engineered solutions, and with AI-written code backed by heavy testing, fuzzing, and simulation.
Standing on the shoulders of Piper and Sapling
None of these ideas came from nowhere, and Anthropic says so. It credits Google's Piper and Meta's Sapling — in particular Sapling's server, Mononoke, which pioneered many of the techniques Scion uses, including its Bonsai data model. Large companies have run centralized, server-heavy source control for giant monorepos for years. What changed is that AI agents pushed a much younger company into that league in a matter of months.
What This Means for Git Users
For almost everyone: nothing changes. Anthropic is explicit that Scion "is by no means a suitable replacement for git for general use," and that its concepts really only make sense for truly enormous monorepos, with either tens of thousands of engineers or swarms of agents. Scion is not released, and Anthropic says it would be difficult to offer it in a form that is broadly useful to other organizations.
What Anthropic is sharing is the ideas. It suggests Git platforms could offer comprehensive server-side RPCs like Scion's — perhaps standardized across forges — and that Git's negotiation protocol and its sparse and shallow features could evolve, and says it hopes to partner with GitHub, GitLab, and the open-source community on this. Nothing concrete has been announced yet, but if it happens, it will arrive as improvements to Git rather than a replacement for it.
Working with a large Git repository today?
Git already ships with tools built on some of the same ideas — fetching less, checking out less, and deferring work until it is needed:
# Partial clone: download file contents only when they are needed git clone --filter=blob:none <url> # Sparse checkout: keep only the folders you work on in your working copy git sparse-checkout set src/app docs # Shallow clone: skip old history entirely (handy for CI) git clone --depth 1 <url> # Scalar (bundled with Git 2.38+): partial clone + sparse checkout + background maintenance scalar clone <url>
Frequently Asked Questions
- What is Anthropic Scion?
- Scion is Anthropic's in-house source control system. In 2026, Anthropic moved its main monorepo from Git to Scion in five months. Instead of every client holding a complete copy of the repository, Scion keeps history on horizontally scalable servers that create commits, perform merges and rebases, and answer history questions, while clients fetch only the files they actually need.
- Why did Anthropic stop using Git for its monorepo?
- AI agents pushed the merge rate from about 2,500 changes a day in May 2026 to over 30,000 a day by September, on a repository whose main-branch history is almost 100 GB and which was checked out around 25 million times a day for CI. Git's decentralized design, where every clone is a complete repository, worked against a setup where nearly every client was an always-online agent or CI job talking to one authoritative copy.
- Is Git being replaced?
- No. Anthropic says Scion "is by no means a suitable replacement for git for general use" and that its ideas only make sense for truly enormous monorepos. Git itself has not changed, and Git, GitHub, GitLab, and Git clients work exactly as before.
- Can I use Scion?
- No. Scion runs only inside Anthropic. Anthropic says it is difficult to offer Scion in a form that would be broadly useful to other organizations, so it is sharing the design ideas instead and hopes to work with GitHub, GitLab, and the open-source community to bring some of them to Git.
- How is Scion different from Git?
- Git is distributed: every clone holds the full history, and you commit locally and push. Scion is centralized and always online: commits, merges, and rebases happen on the server, each change is stored as a changeset listing only the files that changed, clients request individual objects by hash instead of downloading packfiles, and working copies are optional and sparse by design.
- What can I do today if my Git repository is very large?
- Git already has tools that follow some of the same ideas: partial clone (git clone --filter=blob:none) downloads file contents only when needed, sparse-checkout limits the working copy to the folders you use, shallow clones skip old history, and scalar clone sets up partial clone and sparse-checkout for you.