Skip to main content

How Stripe Uses Claude Code: Enterprise Case Study

· 19 min read
Vadim Nicolai
Senior Software Engineer

The most load-bearing sentence in the most detailed public account of Claude Code at Stripe is not about Claude. It concerns a permissions programme that started in 2017 — nine years before Patrick Collison sat down for the interview this piece is built on.

Stripe spent a multi-year stretch tagging its data, annotating it, and building what Collison calls "semantically aware guardrails." All of it was for security. None of it was for AI. Then agentic coding arrived, and his description of the payoff is almost apologetic: the work "kind of accidentally put us in a better position when agentic development came along" (Collison (2026)).

A word on evidence, because it matters more here than usual. No peer-reviewed study examines Stripe's Claude Code usage. My research pass for this piece returned ten papers and four of them were not even in computer science. So what follows is a synthesis — one long primary interview plus adjacent empirical work on agents, tooling, and code health — and where I am inferring rather than reporting, I say so.

The popular version of this story is a model story. Claude Code got good, Stripe has thousands of engineers, multiply the two and you get a productivity miracle. The version Collison actually narrates is an infrastructure story in which the model is the least interesting variable. Almost every number he offers measures the machinery around the model — the deployment ladder, the permissioning layer, the VM orchestration — rather than the model itself.

Which is inconvenient, because the machinery is the part you cannot buy.

Concretely, Stripe runs this. Every devbox ships with Claude Code pre-installed, and it is the first place the median engineer goes. Agents are disposable VMs requested from Slack, a web interface, or in principle any tool. Stripe Projects — a customer-facing product, not an internal tool — went from first idea to public launch in about two months with two or three engineers, integrating roughly 50 services along the way (Collison (2026)). That is the whole published footprint.

The Load-Bearing Asset Was Built in 2017, for Security, Not for AI​

Stripe's core APIs run at five and a half nines: 99.9995% availability (Collison (2026)). That permits about 13 seconds of downtime in a 30-day month, or roughly two and a half minutes a year. Four nines — the figure most organisations quote when they want to sound serious — allows 4.3 minutes a month. The gap between those two positions is a factor of twenty, and it is not a gap you close with effort.

What interests me more is what Stripe refused to trade for it. Collison sets continuous deployment, with customer feedback multiple times a day, against financial-services norms of monthly, quarterly, or in places half-yearly releases. His description of the alternative is unflattering: migration moments become "incredibly fraught and scary" because you have accumulated the detritus of months of progress (Collison (2026)). Most firms accept that trade. Stripe's position is that the trade is fake — you do not get stability, you get latency plus a cliff.

So the guardrails are not review culture, or a style guide, or a sternly worded policy. Collison is explicit that the whole approach comes back to "relying on invariance and hard barriers rather than things that are somewhat more subjective or discretionary or probabilistic" (Collison (2026)). A model can be aligned and still be wrong on a given Tuesday. Stripe bets on controls that cannot be talked around: an agent with no grant on a table cannot exfiltrate it, whatever a prompt injection puts in its context window.

That work began in 2017 and took years of annotating and granular permissioning — "a multi-year journey" (Collison (2026)). Three consequences follow. Only one of them is comfortable.

The first is timing. The precondition is measured in years, so a team starting in 2026 is starting roughly nine years late. The second is sponsorship: the work pays out through a security guarantee nobody can observe and a velocity benefit that arrives nine years after the budget was spent, which is not a business case most planning cycles can hold. The third is that it is the only part of this story nobody can copy retroactively.

Six Hundred Pull Requests and One Revert Is a Detection Metric​

The number everyone quotes: one engineer merged more than 600 pull requests in the first half of the year, every one written with AI, exactly one reverted (Collison (2026)). Spread across roughly 129 working days, that is about 4.7 merged pull requests per working day for six months straight. Whatever else that is, it is not a person reading their own diffs carefully.

One revert in 600 is a revert rate near 0.17%, which sounds like an argument and is mostly an artefact. A revert requires three things simultaneously: the defect was caught, it was attributed to a specific change, and the change was cleanly unwindable (Collison (2026)). None of those three correlates tightly with whether the code was good. My reading of a near-zero revert rate is that it is ambiguous rather than flattering — at least as consistent with light review as with clean code — and I would not put it on a dashboard without a second number beside it.

It is also a sample of one, selected by the accident that Collison spoke to that engineer that morning. Across thousands of engineers the figure describes a right tail, not a median, and Collison says as much: he suspects a distribution where "some things are massively faster, some things aren't" (Collison (2026)).

The stakes live in what you choose to manage. Make revert rate the KPI and you get behaviour that produces revert rate: smaller diffs, faster merges, fewer people reading closely enough to catch the change that would have needed reverting. A team that halves its revert rate while doubling pull-request volume carries the same absolute count of bad changes and shows a slide that says 50% improvement (Collison (2026)). You will have measured review throughput and shipped it under the word "quality."

If writing stops being the constraint, adjudication becomes it. Tang et al. (2024) built CodeAgent, an autonomous multi-agent system for code review, and released the dataset underneath it: 3,545 real-world code changes with commit messages, packaged self-contained so review can be evaluated honestly (Tang et al. (2024)). The team reports CodeAgent outperforming target models on consistency checking and format alignment, with better average edit progress on revision suggestions. Those are precisely the two things a human reviewer stops doing first at 4.7 pull requests a day: checking that a change is consistent with everything around it, and checking that it matches the house. If review is the new bottleneck, that paper is a specification for what the next tooling round has to do.

Reliability Didn't Improve — It Was Defended​

The quietest claim in the interview is the most important, and it is not about speed. Over the last 18 months, Collison says, quality per pull request has gone up. Incidents per unit time have gone up slightly too. They are mostly minor, the secondary mechanisms catch them, and total reliability is "essentially unchanged" (Collison (2026)).

Strip the optimism off that sentence: AI-authored code increased the rate at which things broke, and the deployment machinery absorbed it.

Essentially unchanged is not an improvement, and it is worth being pedantic about the difference. A system with more incident triggers and flat availability has been defended, not upgraded. The defence is described in the same conversation — roll out to a handful of machines, then 1% of machines, then a progressive strategy from there, with instrumentation and observability at the devbox level (Collison (2026)). That ladder converts many small breakages into near-zero user-visible ones. Without it, 600 pull requests per engineer per half-year is not a productivity story. It is an outage schedule.

The prediction is a separate artefact from the result. Collison expects AI to make Stripe "quite a bit more reliable" over the next year or two, as new observability, instrumentation, and automated scrutiny get built (Collison (2026)). It may well come true. It is not evidence today, and the honest state of the record after 18 months is: more change, slightly more incidents, same uptime.

This is where the case study earns its keep as a warning rather than a brochure. Incident rate is the leading indicator; availability is the lagging one. Instrument only the lagging indicator and you will see nothing at all until the buffer is gone — and the size of the buffer is not something you know in advance. Stripe knows the size of theirs because they were measuring it before it mattered.

The Reversal: The Bottleneck Was the Plan, Not the Model​

I expected this story to be about capability. It turned out to be about allocation. Collison corrects himself mid-answer: "I think that recently I myself undervalued the plan modality… and I've changed how I use the model" (Collison (2026)). A small confession with a large implication. The workflow producing 600 pull requests per engineer was not unlocked by a smarter model. It was unlocked by spending differently.

He describes a colleague's practice. Work with the smartest model available to construct a very complicated, extensive plan. Invest heavily in the planning. Then dispatch around ten devboxes with different agents executing different parts of it, running all day — or, in the extreme case, multiple days (Collison (2026)).

The natural reading is "agents got better." The reading Collison supports is that the allocation of tokens moved: away from generation, toward planning and parallel execution, with the human doing specification and adjudication. Ten agents running for two days is twenty agent-days of compute for one feature. That is a capital line item, not a per-seat subscription.

The academic record reached the same decomposition first. Bairi et al. (2023) built CodePlan around planning-based decomposition for repository-level edits — plan across files and dependencies first, because a repository does not fit into a context window, then execute the plan (Bairi et al. (2023)). What changed between that work and Collison's description is not the idea. It is that the executor is now good enough, and cheap enough, to run ten copies of the execution phase in parallel for days at a time.

That distinction matters more than it sounds. If the constraint had been capability, a model release would have dissolved it and every seat-holder would have woken up faster. If the constraint is orchestration and budget, the gap between teams widens with spend and process design, and no release closes it for you.

The stakes are organisational. If your Claude Code budget is a per-seat licence with a monthly usage cap sized for interactive coding, the ten-devbox workflow does not exist for you. You will keep reading case studies describing a workflow your procurement model forbids.

Fifty Integrations in Eight Weeks Works Because the Task Is Wide and Shallow​

Stripe Projects is the clearest worked example in the interview. The premise: when you build anything substantial with Claude Code you inevitably need to couple it to other services — PostHog for logging, Vercel for hosting, a database. Most of those companies are already Stripe customers, so Stripe could expose their capabilities such that an agent instantiates an account in one step. The idea arrived at the beginning of the year. Two or three engineers. About two months. Roughly 50 services integrated, each with, in Collison's words, "their own idiosyncrasies and occasional bugs." First idea to public launch (Collison (2026)).

Collison asked one of the engineers what it would have taken before. The answer — a bigger team, maybe twice the size, and six months — becomes his 6x. He then qualifies his own number twice. First, software engineers are famously optimistic estimators. Second, even if the improvement is only 2x across everything Stripe does, that is "a preposterously large deal" (Collison (2026)).

So the honest band is 2x to 6x, and I would bet the mean sits nearer the low end — because the task shape here is the favourable one. Fifty-odd integrations are wide, shallow, well-specified, individually testable, and embarrassingly parallel. Each is a known API surface. Agentic tools are strongest exactly there. A payments core held at 99.9995% is the opposite shape: stateful, order-dependent, and with a blast radius measured in other people's money (Collison (2026)).

Which is where the ratio turns dangerous. The distance between a 2x assumption and a 6x assumption is the difference between a flat hiring plan and one cut by two-thirds. And the 6x came from one engineer estimating a project Stripe had not built before. Budget on a greenfield integration sprint, apply the number to a migration of your billing engine, and you will miss by something near a factor of three — then blame the tool.

The Binding Constraint Is the Tool Layer, Not the Model​

On top of the pre-installed Claude Code sit what Collison calls "minions": a way to orchestrate VMs from Slack, a web interface, or in principle any tool. Ask for a feature. It creates a fresh VM, performs the work, packages it, submits it, builds it, and runs the test suite end to end (Collison (2026)).

That layer, not the model, is where the engineering difficulty now lives — and there is a paper describing why at organisational scale. Dunkel (2026) argues that MCP has two structural problems once an enterprise adopts it seriously. Process sprawl: every API integration ships as a dedicated server process with its own deployment pipeline, dependency tree, and credential handling. Credential and governance fragmentation: secrets scatter across N servers instead of being centrally managed. The proposed fix is a declarative description language that collapses many tool servers into a shared runtime (Dunkel (2026)).

I want to be precise about what that argument is and is not. It is a structural claim about deployment topology, not a measured effect size, and I would not quote it as a finding. What makes it credible for a Stripe-shaped organisation is the arithmetic underneath: Stripe Projects alone fronts roughly 50 external services (Collison (2026)). Fifty integrations built the MCP way is 50 pipelines and 50 credential surfaces, each one a compliance artefact in a regulated business.

Then the ecosystem number, which is the part most commentary gets backwards. Stein (2026) counts 177,000 MCP tools in the census of the ecosystem — a landslide by any standard, and clear evidence that MCP is winning decisively as an interface. Read against Dunkel, that looks like a contradiction and is not one. A standard every tool speaks is enormously valuable; a standard that arrives as 177,000 separately deployed, separately credentialed processes is a governance liability that scales linearly with adoption. MCP can win as an interface while losing as a deployment model, and both papers describe the same event from opposite ends. For an organisation that has just wired 50 services into one agent-facing product, that distinction decides whether the integration work compounds or becomes a maintenance queue (Collison (2026)).

There is a second half to the tool layer that gets even less attention: the code itself. Borg et al. (2026) quantify "AI-friendliness" using code health metrics and LLM-based refactoring experiments on 5,000 Python files, and find that code health predicts whether an agent can reliably edit a file, independent of model capability. I would treat that as the most under-reported result in this area, because it reframes adoption from a tooling purchase into a refactoring programme. It also explains why Collison's answers keep circling back to architecture — Stripe is "undertaking more projects now to improve our architecture and improve our code base" (Collison (2026)). Some of that is opportunity. Some of it is the precondition for the next round of gains.

Stripe's Public Story Is a Level 2–3 Story, Whatever the Marketing Says​

Anderson (2026) proposes a six-level AI Codebase Maturity Model, CMMI-style, in which each level is defined by the topology of the feedback loop rather than by which tool you bought. The central claim is blunt: AI coding tools are widely adopted, but most teams plateau at prompt-and-review without a framework for systematic progression (Anderson (2026)).

Handle it carefully. ACMM is vocabulary, not a finding — a framework with two citations and no longitudinal validation, and nothing in my research set tests whether organisations traverse the levels in order. Cited as evidence it would invert the hierarchy. Used as a coordinate system it is fine.

So use it as a coordinate system. Pre-installed Claude Code plus human review places Stripe at Level 2 (Collison (2026)). Minions that spin up isolated VMs, run the suite, and feed a progressive rollout bring it to Level 3 — the loop closing automatically at the gate, with a person at the merge. The colleague dispatching ten agents against a multi-day plan is the leading edge of that level, and Collison's qualifier, "if properly orchestrated and guided," keeps a human inside the loop. Nothing in the public account describes anything above it, however the story gets retold.

Then the instrument problem. Tran et al. (2026) built Vibe Code Bench around 100 web application specifications — 50 public validation, 50 held out — and 964 browser-based workflows, roughly ten per spec, explicitly on the argument that pass rates on isolated tasks dramatically overstate end-to-end success (Tran et al. (2026)). That ratio is the methodological point: a hundred specs score whether a model produces plausible code, while nearly a thousand workflows score whether the resulting application does the thing when a browser drives it. The first number is always higher, and buyers keep quoting the first one. Stripe's 600 merged pull requests measure merge events rather than completed behaviour, and the closest thing to a whole-task figure in the interview is a single product shipped in about two months (Collison (2026)).

I do not read that as dishonesty. Measuring whole-task completion for an engineering organisation is expensive and the results would be awkward in public. It is still a poor basis for an industry allocating budget on the strength of merge counts.

What I'd Check Before Buying Seats​

Four gates, sequential, and none of them about which model you pick.

First, measure editability before you buy. Borg et al. (2026) make code health a predictor of whether an agent can edit a file reliably; if your worst modules are the ones holding the money, you do not have a rollout, you have a refactoring programme with a tooling line item attached.

Second, tier review by blast radius rather than by team. Stripe's 600-PR engineer works inside a system with a canary ladder and secondary detection, holding 99.9995% while incidents per unit time drifted upward (Collison (2026)). A payment path and an internal dashboard do not deserve the same review policy, and pretending otherwise is how you get neither speed nor safety.

Third, count your tool surfaces. This one is my heuristic, not a paper's: if you are running MCP servers in the dozens and credentials are provisioned per process, the declarative layer Dunkel (2026) describes is worth more than the next model release. Rotation, patching, and audit cost scale with the count — and the count is the one variable here you actually control.

Fourth, instrument three numbers and only three. Defect escape rate per AI-authored diff. Whole-task completion on a fixed spec suite shaped like the one Tran et al. (2026) built. Code-health delta per quarter. Revert rate is not on the list, for the reasons in the second section (Collison (2026)).

The list most likely to be cut from the budget, and the one I would defend hardest:

  • Code health gates the return on every seat you buy (Borg et al. (2026)).
  • Deployment machinery, not model quality, converts incident rate into flat availability (Collison (2026)).
  • Budget compute for the plan modality, not seats for the prompt modality (Bairi et al. (2023)).
  • Consolidate the tool layer before you scale the agent population (Dunkel (2026)).
  • Report whole-task completion upward, not seat count (Tran et al. (2026)).

The Asset Compounds Twice​

Go back to the permissions programme. Stripe spent years on tagging and granular permissioning as a pure security cost centre, and it turned out to be the thing that made agentic development safe enough to run at five and a half nines (Collison (2026)). That is the pattern worth internalising. In infrastructure, the assets that pay off in a new regime are almost always the ones justified under the old one.

Now extend it. Stripe's house view is that most transactions will be between agents within about three years — not necessarily most dollar volume, but a continuous churn of reasonably small agent-to-agent payments (Collison (2026)). Which makes "how does an agent sign up for Stripe, use Stripe, and pay another agent?" the same question as "how does an agent use our internal tools?" The permissioning layer becomes the product surface. The 2017 cost centre gets paid for twice, and the second payment is revenue.

The model will keep improving without anyone's help. The permission grants, the canary ladder, and the code health are on you — and their lead times are measured in years, not sprints. Start the parts you cannot accelerate.