Originally published on Substack by Gergely Orosz, who previously worked at Uber, Skype, and Microsoft, and authored “The Software Engineer’s Guide.”
For easier reading, this article has been lightly compiled and edited. English original: https://substack.com/@pragmaticengineer ↗
Since Claude Code opened publicly in May 2024, it has rapidly swept the developer community, with annualized revenue now exceeding $500 million and users growing 10× in just three months. I recently spoke in depth with two founding engineers—Boris Cherny (original prototype author) and Sid Bidasaria (second engineer and creator of sub‑agents)—and PM Cat Wu to learn how Claude Code was built and to glimpse how an AI‑first engineering team operates. It felt like seeing the future of startup workflows—and encouragingly, software engineers remain very much in demand.
This article covers:
- Origin story: Claude Code began as a command‑line experiment—at first just using Claude to detect what music an engineer was listening to. After file‑system access was added, the tool spread quickly inside Anthropic. Today, Claude Code has a dedicated team.
- Tech stack and architecture: Primarily TypeScript, React, Ink, Yoga, and Bun. The team intentionally chose a stack the model excels at. Notably, about 90% of Claude Code’s code is generated by Claude Code itself.
- Rapid iteration, multiple releases per day: The team ships extremely fast; each engineer publishes around five versions per day. New features often have a dozen+ prototypes, with AI agents dramatically boosting development speed.
- Redefining the terminal experience: Claude Code introduces UX designs that only make sense in an LLM‑powered terminal.
- What “AI‑first” software engineering looks like: AI agents conduct code review and testing, help revive TDD, automate incident response, and use feature flags judiciously—hinting at how AI‑driven teams may work.
- Birth of sub‑agents: The sub‑agent feature was built in just three days—after discarding two days of work.
- AI‑enabled engineering teams: What can other teams learn from Anthropic’s practice, and which parts are hard to replicate?
1. The Beginning
Boris Cherny joined Anthropic in September 2024, started building various prototypes with the Claude 3.6 model, and aimed to get familiar with the company’s APIs.
“I initially experimented with Claude in the terminal. The earliest version was extremely barebones: it couldn’t read files, couldn’t use bash, and couldn’t do anything engineering‑related—but it could interact with the computer. I wired the prototype to AppleScript so it could tell me what music was playing and even switch tracks on command. It was fun, but not particularly useful.”
Meanwhile, Cat Wu was researching how AI agents interact with computers and the new capabilities that arise from this. After a conversation with Cat, Boris decided to give the terminal more powers.
“I added a few tools so it could operate the file system and run batch commands. Suddenly, the agent became fascinating. I pointed it at our codebase and started asking it questions. Claude would explore the file system on its own, read files, analyze imports, then follow those references… until it found the answer. It blew my mind, because I’d never seen a tool do this before.
In AI, we often talk about ‘product overhang’—capabilities the model already has that products haven’t exposed. Discovering Claude’s file‑system exploration was a textbook case: the model could do it, but the product hadn’t unlocked it yet.”
Product–market fit
After Claude Code rolled out an internal “dogfood” test, adoption was swift: on day one, about 20% of the engineering team started using it, and by day five roughly half were onboard. At that point, Boris felt confident the tool would resonate externally. However, the team debated whether to release it publicly.
Boris recalls:
“We even hesitated to release Claude Code publicly, thinking it might be our ‘secret weapon.’ If it gives us a competitive edge, why share it?
In the end, we decided:
Anthropic’s core is model safety.
By letting users use the tool, we help them understand the model’s safety and capabilities.
The whole company relies on Claude Code, which means it will inevitably see broad use.
So, a public release would help us learn more about model safety and capability.”
Team formation:
Initially, the team consisted only of Boris. By November, Sid Bidasaria joined after seeing the early version; he was highly interested and became a partner. The two‑person team worked with great freedom. Sid says:
“We spend most of our time prototyping at high speed to showcase the model’s strengths. There’s no formal process inside the team—it’s very flexible. We can pretty much choose whichever ideas seem most promising.”
By July, the team had expanded to about ten people and now includes engineering, product, design, and data science—still actively hiring.
Not just for programmers
Today, more than 80% of Anthropic engineers use Claude Code daily—but usage goes beyond engineering. Boris says:
“I walked past a data scientist’s desk and saw Claude Code open. I asked why, and he said it helps him write queries. Now, almost everyone in that row of data scientists uses Claude Code—some even run multiple instances for queries, visualization, and various tasks.”
Originally, Boris had programmers in mind, but the product has proved useful across more domains.
Productivity increased during expansion
Typically, when engineering teams double quickly, PRs per person drop as veterans onboard newcomers and rookies ramp up. At Anthropic, PRs per person instead increased by 67% during expansion. The credit goes to Claude Code: engineers finished PRs faster. Team growth overlapped with Claude Code’s adoption—a lucky combination. I’ve also found Claude Code noticeably speeds up work, especially when verifying correctness and running tests.
2. Tech Stack & Architecture
Claude Code’s tech stack includes:
- TypeScript: core language
- React + Ink: UI built in React, using Ink to create an interactive CLI
- Yoga: Meta’s open‑source layout engine, suited for varying terminal sizes
- Bun: build and bundling tool, faster than Webpack, Vite, etc.
On Node 18 or higher, you can globally install @anthropic-ai/claude-code and start it with the claude command. The team intentionally chose a stack the model excels at. In AI, “on‑distribution” refers to domains the model already handles well, while “off‑distribution” means areas it’s less familiar with. TypeScript and React are strengths of the Claude models. If you pick niche tech, Claude can learn it, but it requires extra teaching. So they selected what Claude is naturally good at, allowing Claude Code to “self‑evolve.” Today, about 90% of the code is generated by Claude Code itself.
Architecture: Minimalism Rules
Although the client can traverse the file system and understand the codebase, it’s essentially a thin shell over the Claude model. The model does nearly all the work:
- Define the UI and expose hooks the model can modify
- Provide tools for the model to call
- Then “get out of the way” and let the model run
The team’s philosophy is to write as little business logic as possible, letting users engage with the model “head‑on.” Boris says:
“We believe the model’s capabilities far outstrip what existing products reveal. Many developer tools actually hold the model back, layering on too much UI and scaffolding so it feels hand‑tied. We want the UI as simple as possible, so users can feel the model’s native power.
With every model upgrade, we delete a lot of code. For example, when 4.0 launched, we removed half the system prompts. We keep trimming prompts and tools, leaving only what’s truly necessary.”
and:
“We believe the model’s capabilities far exceed what current products let it show. Many developer tools actually hold the model back with excessive UI and scaffolding, leaving it feeling hand‑tied. We want the UI as simple as possible so users can experience the model’s native power.
With each model upgrade, we delete a lot of code. For example, when 4.0 launched, we removed half of the system prompts. We keep trimming prompts and tools, keeping only what’s truly essential.”
Permissions System
Claude Code’s most complex part is its permissions. Because it runs locally, an AI agent could perform irreversible actions (e.g., accidentally deleting files). The team adopted a minimalist yet safe approach: before any sensitive operation, the user is asked to authorize, with three choices:
- One‑time allow
- Always allow
- Deny
Boris says:
“Our most important principle is that Claude Code must not modify a user’s system without authorization. At the same time, we give users flexibility—there are scenarios where you won’t want to approve every single action.
The permissions system is carefully designed: it performs static analysis on commands to check whether they’re already allowed in settings.json. The settings system is multi‑level—project, user, and company—and can be shared across teams. Some teams even commit a whitelist to source control so Claude Code doesn’t pop up prompts too frequently.”
Other features:
Despite its simple architecture, Claude Code is feature‑rich. Highlights include:
- Hooks: customize shell commands to extend Claude Code’s capabilities
- MCP support: connect to servers via the MCP protocol to grant more powers
- GitHub and GitLab integration: supports CI/CD workflows
- Output styles: switch/customize styles like “Explainer” and “Learning” (Claude guides you hands‑on, great for newcomers)
- Configuration system: multiple config files to flexibly tailor terminal, model, status bar, and more
- Sub‑agents: built in three days—details below
- Enterprise features: IAM integration and org‑level analytics
- Claude Code SDK: build custom AI agents using the same agent framework