A chat tab makes you the courier: copy code out, paste the fix back, copy the next file out. Claude Code stops the ferrying — the AI moves into your real folder and edits the files in place.
The first weeks of this were done in a browser chat tab. The loop went like this: paste a file in, ask for the fix, copy the answer back into the editor, run it, hit a new error, copy that file in, paste the next fix back. The AI never saw the real project — only the snippets I hand-fed it. So it kept "fixing" code that didn't match what was actually on disk: it patched a file it had imagined from two messages ago, missed the import three files over it had never been shown, and confidently rewrote a function I'd already changed. I was the courier carrying parts between a workshop and a mechanic who was never allowed in the building.
"It felt like describing my house to a builder over the phone. He'd tell me how to fix a wall he'd never stood in, based on the one photo I'd texted. Half his fixes were for a room that didn't exist anymore because I'd already changed it. I spent more time being the messenger than getting anything built."
"Honest version: in a chat tab I only know what you paste. I can't open the other files, I can't run the thing, I can't see that you already edited line 40. So I answer about a project I'm guessing at — and a confident guess about code I can't see is exactly how the wrong fix looks right. The fix isn't a better prompt. It's letting me work where the real files actually live."
A chat tab and Claude Code are the same model — but in completely different rooms. A chat tab lives in a browser, walled off from your computer. It only ever sees the text you paste, and the only thing it can hand back is more text for you to carry. That's the courier loop: you ferry every file in, you carry every fix back out, you run everything yourself, and the AI is blind to anything you didn't personally show it. Claude Code is the same AI given a workbench inside your actual project folder. It's a program you run in your terminal — the black text window where you type commands to your computer — pointed at one real folder on your disk. Now it can read any file in that folder itself, edit files in place, run the project and read the real error, and — when you say so — commit the change to git. You stopped being the courier. The AI is in the shop, with the real parts, the real tools, and the real engine running.
paste-in, paste-outLives in the browser, sealed off from your files. Sees only what you paste; hands back text you must carry into the editor and run yourself.
where you run itThe plain text window where you give commands to your computer. You start Claude Code here, aimed at one real folder. That folder is its workshop.
reads · edits · runsThe same AI, now living in your project. It opens the real files, edits them in place, runs the code, reads the real error — no courier in the middle.
The model: picture a master mechanic. In the chat-tab world he's stuck in another building; you photograph one part, text it over, he texts back instructions, you walk the part back, bolt it on, find the next problem, photograph that. In the Claude Code world you hand him the keys to the garage. He walks the rows himself, picks up whatever part he needs, turns the engine over to hear the real knock, and fixes it on the spot. Same mechanic, same skill — the difference is whether he's looking at the actual car or guessing from your photos. Claude Code isn't a smarter model. It's the same model standing inside your real project instead of you ferrying parts to it through a window.
You start Claude Code inside a real project folder — say a small web app — and type one sentence: "the app crashes when I click Save, fix it." You paste no code. You name no file. In a chat tab this question would be useless: it can't see anything you didn't paste. Here, what does it do first?
claude. It opens pointed at that one folder — its workshop. Everything it does happens to the real files on your disk, not a copy.utils.js where the real error lives. The thing you'd have spent ten messages pasting, it just does.commit the change to git (your project's save-history). You watched it work, on the real files, before trusting it.Same rule as always: answer it right, or the module isn't done.
A chat tab makes you the courier; Claude Code moves the AI into your real project. Same model — the difference is whether it's looking at your actual files or guessing from what you pasted.
Two things you own the second the gate opens. FIRST-CLAUDE-CODE-SESSION.md is a plain-language checklist for your very first run: install it, open your terminal, go into a real project folder, start claude, give it one small honest task, watch it read and edit the real files, then verify with your own eyes before you let it commit. No jargon left unexplained — terminal, folder, commit, and the rest. And starter-project/ is laid out as a tiny but real project — a sane starter layout carrying the files a real project carries, including the one file Claude Code actually reads on its own: a CLAUDE.md (the standing-instructions file it loads at the start of every session, so your house rules outlive the chat). Claude Code works on any folder — it doesn't require this shape — but a real project usually has a README.md that tells it what the project is, a .gitignore + .env.example so secrets never ride along, and a src/ folder for the actual code. Standing instructions are one layer; enforcing them automatically (a hook — an automation it runs for you) is its own module later. You now own the thing that ends the courier loop — and this is the layer the whole factory stands on: once the AI works on the real files instead of pasted snippets, the workflow becomes the asset, and the asset survives any one model getting yanked overnight.
Don't take "it edits in place" on faith — that's the whole lesson, and the fastest way to learn it is to break it on purpose first. Run the starter script, start Claude Code in the folder, and deliberately do the lazy thing: give a one-word task and don't tell it to read the file. Watch it patch from a guess. Then you'll undo that in one move and do it right.
You just lived both halves: the vague ask let it patch from a guess — the chat-tab failure, now happening on your real disk — and git checkout . threw that away in one move, which is exactly why you can let it try at all. Then the precise ask had it read the actual file and your grep proved the words landed in the real src/app.js. Verifying with your own eyes — and knowing the undo is one command — is the whole difference between a chat tab and Claude Code.