Boris Cherny: How We Built Claude Code
These notes were generated by AI and may contain inaccuracies.
At Anthropic, they build for the model six months from now, not today's model. Advice to founders building on LLMs: think about the frontier where the model is not very good at today because it's going to get good at it. All of Claude Code has been written and rewritten over and over. No part of Claude Code was around 6 months ago. Try a thing, give it to users, talk to users, learn, and eventually might end up at a good idea. Sometimes you don't. In 6 months, might not need to prompt explicitly; the model will figure it out on its own. Maybe no more need for plan mode in a month.
Welcome to another episode of the Light Cone with Boris Cherny, creator engineer of Claude Code. Boris has created a thing that has taken away sleep for about 3 weeks; it's like rocket boosters. Felt like this for Boris when he first created Claude Code in September 2024, three straight months without a single day vacation, working weekends and nights because he thought it was going to be a thing, though it couldn't actually code yet.
Most surprising now: unbelievable that they're still using a terminal; it was supposed to be the starting point, not the ending point. Second: it's even useful because at the beginning it didn't write code. Even in February, it wrote maybe 10% of code; most code was still written by hand. Bets paid off and it got good at what they thought it would get good at, which wasn't obvious. Build for the model 6 months from now.
Idea evolved accidentally. Anthropic's bet has been coding for a long time: path to safe AGI is through coding—teach model to code, then use tools, then use computers. First team Boris joined at Anthropic was Anthropic Labs team, produced three products: Claude Code, MCP, and the desktop app. No one asked to build a CLI. Knew it was time for a coding product as model was ready, but insane product overhang—no one had built it yet.
Started hacking: built a little terminal app to use the API (hadn't used Anthropic API before), a chat app because that's what most non-coders use. In terminal, no UI needed. Then tool use came out; tried it. Gave model bash tool (first tool, from docs example, ported from Python to TypeScript). Asked it to read a file—it did cat. Asked "What music am I listening to?"—wrote AppleScript to script Mac and look up music in player. This was Sonnet 3.5. First "holy shit AGI moment": model just wants to use tools.
Built in terminal because easiest, no UI. IDEs like Cursor, Windsurf taking off, but no pressure to build plugin or full IDE; team in explore mode, no one high confidence. After 2 days, gave prototype to team for dogfooding. Next day, engineer Robert was using it to code, even though just a prototype. At launch review (November/December 2024), internal usage chart vertical; Dario asked if forcing engineers to use it—no, just posted about it and they told each other.
Model not very good at coding yet. Used for automating git, bash commands, operating Kubernetes. Some used for coding, first use case writing unit tests (lower risk). People wrote markdown files for model to read—this is where Claude MD came from.
Biggest principle: latent demand—every bit of product built through it. Claude MD example. General principle: build scaffolding around model to improve performance 10-20%, but gains wiped out with next model. Either rebuild scaffolding or wait for next model and get it free. Claude MD and scaffolding example; stayed in CLI because no UI would be relevant in 6 months as model improves quickly.
Boris's Claude MD is short, two lines: 1) Whenever you put up a PR, enable automerge so it merges as soon as accepted. 2) Post PR in internal team Slack channel for stamp to unblock. Every other instruction in team Claude MD checked into codebase, team contributes multiple times a week. Often sees preventable mistake in PR, tags Claude to add to Claude MD.
Managing Claude MD Size
Team Claude MD couple thousand tokens. If hit token limit, delete Claude MD and start fresh. Don't overengineer; do minimal to get model on track. With every model, add less and less.
Boris considers himself average engineer: uses VS Code (simpler), not Vim. Team has Vim users like Adam Wolf. Every engineer holds dev tools differently—no one tool works for everyone. Claude Code good because users don't need to know Vim, TMUX, SSH; tool guides and does it.
Decide verbosity based on feedback. Early on, tried summarizing bash output; Anthropic employees revolted—want to see it (useful for Kubernetes jobs, git). Recently hid file reads/searches (e.g., "read 1 file" instead of content)—couldn't ship 6 months ago as model read wrong things often. Now model on track almost every time; summarizing better as it uses tools more. Dogfooded month, GitHub feedback wanted details—added verbose mode in /config. Iterated based on feedback.
Enjoy fixing bugs now: good logging, say "check this object messed up," searches log, makes production tunnel, looks at production DB. Soon just copy markdown from Sentry straight to MCP, autobug fixing and test making.
New school: anytime human looks at code is bad.
Dan Chipper: when model mistakes, put in Claude MD or skills for reusability. Agents' capabilities change with every model. New team members sometimes use Claude Code better. Example: memory leak debug—Boris manually took heap dump, used DevTools. New engineer Chris asked Claude Code, which took heap dump, wrote tool to analyze it, found leak faster. Jared Summer crusade killing memory leaks.
Beginner mindset, humility. Engineers rewarded for strong opinions, but much not relevant anymore as model improves. Biggest skill: think scientifically from first principles.
Hiring for This
Ask: "What's an example of when you're wrong?" See if they recognize mistake, claim credit, learn. Senior people sometimes won't take blame. Boris wrong half the time; try stuff, give to users, learn. Now important skill for every engineer.
Would hire based on Claude Code transcript: shows how they think, check logs, correct agent, use plan mode, ensure tests, understand systems. Imagine spiderweb graph of Claude Code skills: systems, testing, user behavior, design, product sense, automating.
Engineer Profiles
Most effective engineers bimodal: extreme specialists (e.g., Jared on memory leaks, Bun team on dev tools/JavaScript runtime) or hyper generalists spanning product/eng, product/design, etc. Like people doing weird stuff.
Engineer Daisy transferred after PR: first PR gave Claude Code tool to test arbitrary tools, then had Claude write the feature. Use Claude agents SDK to automate code review, security review, issue labeling, shepherd to production. Externally, people starting to figure out using LLMs this way.
Visionary founders have a crystal palace of the product in their brain, knowing the user, their feelings, and motivations. In Claude Code, they achieve 50x productivity, while their engineers, lacking this vision, only get 5x. This dynamic exists in teams with a core designer blasting ideas from their brain. It forms a stable configuration where the visionary is now unleashed with AI tools.
Solo builders face challenges like needing to eat, sleep, and having a job. Solutions include launched quad teams or building custom setups, which is easy.
Quad Teams enable collaboration via agent topologies, including uncorrelated context windows. Multiple agents have fresh context windows not polluted by each other's or previous context. Adding more context is test-time compute, increasing capability. Proper topology allows agents to communicate and build bigger things. Plugins feature was entirely built by a swarm over a weekend with minimal human intervention, remaining largely unchanged since launch.
An engineer gave Quad a spec, instructed it to use an Asana board, and Quad created tickets, spawning agents that picked up tasks independently without the full spec context. Most agents today are prompted by Mama Quad as sub-agents, which are recursive Quad code calls.
For debugging, use multiple sub-agents: one for logs, one for code paths. Claude insights recommend this. For weird bugs, fix in plan mode to search broadly; inline is narrower. Calibrate sub-agent count (3, 5, or 10) based on task difficulty for parallel research.
Put repeated instructions in .claude.md file, but case-by-case prompting works too.
In a month, no explicit prompting for sub-agents or plan mode needed; models will decide autonomously. Quad Code now enters plan mode itself at human-appropriate points. Plan mode adds one prompt sentence: "please don't code."
Feature development follows YC's "talk to your users" approach. Plan mode originated from GitHub issues and Slack feedback where users said variations of "come up with a plan but don't code yet." Boris implemented it Sunday night at 10 p.m. in 30 minutes, shipping Monday.
Planning counters models heading wrong. With improving models like Opus 4.5/4.6, once a plan is good, execution stays on track without babysitting. Boris starts 80% of sessions in plan mode across multiple tabs (terminal, desktop app code tab). Future: prompt once, Quad figures it out.
Quads talk to each other, users on Slack, and occasionally tweet (though Boris deletes cheesy ones). Co-work Quad loves browser use. Common pattern: Quad sees git blame, messages engineer on Slack for clarification, then proceeds.
Key principle: latent demand—people only do things they already do. Make existing efforts easier; don't push new behaviors. Claude excels at finding these by analyzing feedback and logs.
Plan mode captured latent demand for spec planning in Claude chat windows.
Boris observes usage by standing behind people in the office and reviews GitHub issues.
Terminal has surprised; initially predicted 3-month lifespan. Now in web, desktop app code tab (3-6 months), iOS/Android apps, Slack, GitHub, VS Code, JetBrains extensions. Future UI unclear.
Build for what the model wants to do. Early Claude Code needed tools to interact with the world; enable naturally, not via boxed APIs. Solve user problem, then enable model's approach technically and product-wise.
Boris wrote a TypeScript book early 2010s when JavaScript dominated. TypeScript made weird decisions: literal types (even Haskell doesn't), conditional types. Built for existing JavaScript practices—reflection, mutation—without changing coder habits. Practical innovations from observing JS programmers beat academic approaches. Haskell remains niche; TypeScript dominates.
Claude Code is practical: Unix utility (pipe in/out), built for team needs, proves results over principles.
Terminal uses React terminal, delightful for generalists. Prioritizes joy per YC advice. Constraints: 80x100 characters, 256 colors, one font, no mouse. Prototyped mouse but dropped due to scrolling virtualization issues.
Rediscovered UX principles; old apps (ed curses) look janky. Iterated spinner 50-100 times, 80% discarded. AI enables 20 prototypes in hours vs. weeks with tools like Origami/Framer.
- Build for model 6 months out: find PMF now, get leapfrogged by next model releases.
- Bitter Lesson (Rich Sutton): general models beat specific. Never bet against the model. Trade-off: scaffold now (10-20% gain) or wait for next model.
Claude Code constantly rewritten; unship/ship tools every couple weeks. No part from 6 months ago; ~80% codebase <2 months old. Expect code shelf life of months.
Anthropic engineers average 1000x Google peak engineer productivity. All technical employees use Claude Code daily; half the sales team does, shifting to co-work for VM safety. Team doubled last year, but
The team doubled in size last year, but productivity per engineer grew 70%, measured by pull requests, cross-checked against commits and commit lifetime. Since Claude Code came out, productivity per engineer at Anthropic has grown 150%.
Boris was responsible for code quality at Meta across Facebook, Instagram, WhatsApp, etc. Improving productivity by 2% was a year of work by hundreds of people. A 100% gain is unheard of.
Living in rural Japan, Boris read Hacker News daily and saw AI dominance. Early AI products took his breath away during Claude 2 days. He talked to friends at OpenAI, then met Anthropic founder Ben Mann, who won him over, along with the rest of the team.
Anthropic operates as a research lab focused on building safe models, close to model development. After years in product, this resonated. It's mission-driven; as a sci-fi reader aware of risks, he wanted a place internalizing AI safety. Conversations in lunchrooms and hallways focus on AI safety.
Six months ago, Dario predicted 90% of Anthropic code would be written by Claude—this is true. For Boris, it's been 100% since Opus 3.5; he uninstalled his IDE, doesn't edit code by hand, lands 20 PRs a day. Anthropic-wide, it's 70-90%, often 100% per team or person.
In May with Claude Code release, Boris predicted no IDE needed to code; audience gasped. It's tracing the exponential, in Anthropic's DNA from founders co-authoring the scaling laws paper.
Coding will be generally solved for everyone; today it's practically solved for Boris. The title software engineer will fade—perhaps to builder or product manager, but work expands to writing specs, talking to users.
Engineers become generalists: PMs, designers, EMs, finance code. Everyone on Boris's team codes.
Upper bound: hitting ASL-4 (Anthropic Safety Levels). ASL-3 is current; ASL-4 is recursively self-improving models, requiring criteria before release. Extreme: catastrophic misuse like designing bioviruses or zero-days. Anthropic works actively to prevent this.
Seeing Claude Code usage is exciting and humbling. Over holidays, many discovered it, especially Opus 3.5.
Internally, exponential growth for months, steepened post-holidays.
Stats: 70% of startups choose Claude (Mercury); 4% of all public commits by Claude Code (Semi Analysis). Used by biggest companies to smallest startups. Plotted course for Perseverance Mars rover—team printed posters.
Feels like the very beginning.
Inspired by Twitter: using Claude Code to monitor tomato plants, recover wedding photos from corrupted hard drive, finance.
Internally: every designer, finance team, data science team uses it—not for coding. Non-technical users jump hoops for terminal install.
Experimented with ideas; breakthrough was Claude Code wrapper in GUI desktop app—same agent under the hood.
Felix (early Electron contributor) and team built it in 10 days, 100% written by Claude Code. Tailored for non-technical: runs in virtual machine, deletion protections, permission prompting, guardrails.
Boris, thank you so much for making something that is taking away all my sleep, but in return, it's making me feel creator mode again, sort of founder mode again. It's been an exhilarating 3 weeks. I like can't believe I waited that long since November to actually get into it. Thank you so much for being with us. Thank you for building what you're building.
Yeah, thanks for having me. And send bugs.
Keep Y Combinator in your library
Save the videos and channels worth coming back to, and find them again in one place.





