The alpha, twice a week
That was 3 min.
Get the best new moments in your inbox every Wednesday and Saturday. It's free.
Check your inbox
We sent a link to your address. Click it to finish signing up. Not there in a minute? Look in spam.
or
The Pragmatic Engineer · 3 min · Mar 4, 2026
Claude Code grew from letting the model use tools
Boris Cherny started with a terminal chatbot, then gave it Bash and watched it solve a task by writing a small script. That led him to treat the model as an agent, not a boxed-in component.
Boris Cherny is creator and Head of Claude Code at Anthropic.
Created Claude Code at Anthropic and leads its team; previously spent about five years at Meta.

Gergely Orosz, Host · Host, The Pragmatic Engineer
Spent four years at Uber heading mobile, web and backend teams; shipped part of its payments system.
About this segment
Boris Cherny started with a terminal chatbot, then gave it Bash and watched it solve a task by writing a small script. That led him to treat the model as an agent, not a boxed-in component.
From “Building Claude Code with Boris Cherny”, Mar 4, 2026. Watch the full episode
Thanks. We'll look at and fix what's off.
“The way to think about it is the model is its own thing. You give it tools.”
Boris Chernyat 26:32 · The Pragmatic Engineer26:32Takeaways
- A terminal chat tool was the project’s starting point.
- Giving the model Bash let it work out how to use tools.
- Build around the model’s capabilities instead of boxing it in.
In this episode
Full episode24:03Claude Code grew from letting the model use tools3:12
- 40:26Repeated review comments can become lint rules6:03Up next
- 1:05:11Cowork was built quickly, with safety as the hard part6:13
- 5 more moments in the full episode
Transcript
Transcribed by machine (Whisper) from the episode’s audio, so a word may be off here and there.
- 24:07
And I didn't want to build a UI. I just wanted to, you know, hack something up quite quickly because we didn't have cloud code back then. We're still writing code by hand. And I wrote this little batch tool that all it did was it hit the Anthropic API and it was essentially like a chat-based application, but just in the terminal, because that's what AI used to be. And, you know, I still think about it, like engineers are the first adopters.
- 24:31
And so when we started to move out of conversational AI to agentic AI, it took a little bit, but engineers understood it pretty quick. And I think now when you ask non-engineers about like, what is AI? they would say it's this conversational AI. It's like a chatbot or something. And that's why I'm actually very excited for, you know, Cowork, this new product that we launched, because it's going to bring the same thing that engineers saw very early to everyone.
- 25:00
But when I think about, you know, co-work, I think back to this moment that we're talking about, like very early on. QuadCode originally wasn't QuadCode. It was a chatbot because that's what I thought AI was. But we had to kind of figure out kind of what is the next thing. And so at the time I built this chatbot, it was somewhat useful, but it was just a chatbot. And the next thing that I tried was I wanted it to use tools because tool use just came out and I didn't know what it was. And I was like, let's experiment.
- 25:27
it and i i gave it a single tool which was the bash tool and i didn't know what to do with the bash tool and so i asked it you know like i actually didn't know if it could even do this but i asked like what music am i listening to and uh it just wrote a little apple script program using like said or whatever to uh open up my music player and then like query it to see what music it's listening to and just one shot at this with sonnet 3.5 this is actually my second aj field agi moment very quickly after the first one and the model just wants to use tools that that's that's just what i realized like this thing like if you give it a tool it will figure out how to use it to get the thing done and i think at the time when when i think about the way that people were approaching ai encoding everyone essentially had this mental model of
- 26:16
you take the model and you put it in a box and you figure out like what is the interface like How do you want to interact with this model? What do you need it to do? Essentially, it's like if you have a program, you stub out some module, stub out some function, and you say, okay, this is now AI, but otherwise the rest of the program is just a program. And so this is just not the way to think about the model.
- 26:35
The way to think about it is the model is its own thing. You give it tools. You give it programs that it can run. You let it run programs. You let it write programs. But you don't make it a component of this larger system in this way. And I think there's just like, you know, this is a version of the bitter lesson. So there's, the bitter lesson is a very specific framing, but there's many corollaries to it.
- 26:56
This is one of the corollaries is just let the model do its thing. Don't try to put it in a box. Don't try to force it to behave a particular way. One of the first ways you saw it was giving it tools, giving access to the bash and then later to the file system and then to more tools, right? That's right.