The 5 Levels of Agentic Coding: Why I Mostly Stay at Level 2
This post is about the levels of agentic coding Iāve worked at while building 4 apps that are all in production. My sweet spot is level 2 (one agent in one conversation) or level 3 (several agents at once in parallel git worktrees), depending on the roadmap and the deadline.
Level 4 is a software factory: an agent called pm that runs a Linear board and hands the work out to the other agents. One has been building Daiku nonstop since 13 October. Itās working better than I expected!! I also keep having to ask my own project what it did today, which is something I never had to do at level 2.
The 4 apps are Dewfall, for reading the whole Bible one verse at a time; PrayingPeople, for praying together in groups; Daiku, which gives your AI its own browser; and this site. All 4 are side projects and none of them interferes with my full-time job as an AI Engineer at IBM. Across all of them Iāve tried pretty much every way of working with agents I know of. Every level below comes with what it felt like, where it broke and what you can do about it.
What is agentic coding?
Agentic coding is writing software by telling an AI agent what you want and letting it read your code, edit files and run commands by itself while you review what it did. The agent is a program like Claude Code, which is what I use for all of this, or Codex. It works in a loop: it changes something, checks the result and goes again until it thinks itās done.
Agentic coding vs vibe coding
Vibe coding is the same loop with the reviewing taken out. Andrej Karpathy named it in February 2025: āa new kind of coding I call āvibe codingā, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.ā Every level in this post has somebody reading the code at some point. What changes as you go up is how many agents there are and whether that somebody is still you.
The 5 levels of agentic coding
| Level | What it looks like | Where it breaks |
|---|---|---|
| 1. Manual | Every line typed by hand | Obsolete |
| 2. One agent | 1 conversation: I describe it, it cooks, I review, we ship | Slow |
| 3. Parallel agents | 7 or 8 sessions, each in its own worktree | Worktrees to set up and clean up |
| 4. Software factory | Agents called pm, maintainer and sentry work a Linear board |
I lose track of my own project |
| 5. ??? | Tell me (end of the post) |
Iām not the first person to number these. Dan Shapiro modeled his 5 levels on the levels of self-driving cars, from āspicy autocompleteā to the ādark factoryā. Steve Yeggeās 8 stages in Welcome to Gas Town go from no AI at all to building your own orchestrator. Mine are coarser. They come from shipping 4 apps. Each one is about what I actually did all day at that level and what it cost me.
Level 1: manual coding
Level 1 is you, an editor and every line typed by hand. For me itās obsolete.
The skill isnāt obsolete though (sorry!!). Levels 2 and 3 are mostly reading code an agent wrote and I read it with everything I learned typing it myself. If youāre early in your career, keep writing some code by hand. Youāll need it to review any of the levels after this one.
Level 2: one agent, one conversation
Level 2 is 1 agent in 1 conversation. I describe what I want, it cooks, I review, we ship. Then the next thing, then the next.
Itās slow. Itās slow the way a coworker is slow when they can only do one thing at a time and youāre watching them do it. Itās also the level that feels the most like working with somebody: itās basically pair programming, where the agent is the ādriverā typing and Iām the ānavigatorā watching where itās going and catching whatās off.
Spec driven development: let it grill you first
The bigger version of level 2 is spec coding, which GitHub calls spec driven development. I describe a spec or a product requirements document (PRD), the agent grills me about it until neither of us has a question left, and then it builds while I review.
What you can take from level 2:
- Ask to be grilled before anything gets built. Something like āask me one question at a time until you could build this without meā gets your vague idea written down as a spec. The agent finds the gaps while theyāre still cheap to fill.
- Keep the spec in the repo. Dewfall and Daiku both still have the spec they started from, in a file called
GENESIS.mdat the root. Every new conversation can read it and you donāt have to explain the app again. - Review every diff while itās small. Level 2 is the one level where you see each change as it happens. Use it for the code youāll have to debug yourself later.
Level 3: parallel agents in git worktrees
Level 3 is 7 or 8 Claude Code sessions at once, each one told some version of āin a separate branch and separate worktree, build thisā. A git worktree is a second working folder for the same repository, checked out on its own branch. That way 2 agents can edit the same app without touching each otherās files. They each finish on their own, I review each one on its own, then we merge it all into main and deploy once at the end.
Itās kinda nice!! Iām not alone in it either: Boris Cherny, who created Claude Code, runs 5 sessions in his terminal and 5 to 10 more on claude.ai, each local one in its own git checkout (InfoQ, January 2026). Simon Willison wrote about the parallel coding agent lifestyle last October and found the same catch I did: you can start lots of tasks at once, but you still review them one at a time.
What I donāt love is the worktrees. Every one has to be set up (a fresh checkout has no node_modules and no .env), torn down and cleaned up. Iām bad at the cleaning up part. Dewfallās repository has 17 worktrees in .claude/worktrees/ right now. The oldest is from 2 July and 13 of them are already merged into main⦠theyāre just sitting there. PrayingPeople has 5 more that Cursor made.
How to make worktrees less annoying
-
Let Claude Code make them.
claude --worktree feature-auth(or-w) creates one under.claude/worktrees/feature-auth/on a branch calledworktree-feature-auth(the docs). Add.claude/worktrees/to your.gitignore. -
Copy your secrets in automatically. List
.envand any other ignored files you need in a.worktreeincludefile at the root. Claude Code copies them into every new worktree. -
Know which ones clean up after themselves. When a session in a worktree exits with nothing in it, Claude Code removes an unnamed worktree by itself and asks first about a named one. Anything with work in it is up to you.
-
Sweep the merged ones. This removes every worktree whose branch is already in
main.git worktree removerefuses one with uncommitted changes. Work you havenāt committed stays put:git worktree list --porcelain \ | awk '/^worktree /{w=$2} /^branch /{b=substr($2,12); if (b!="main") print w, b}' \ | while read -r w b; do git merge-base --is-ancestor "$b" main && git worktree remove "$w"; done -
Split the work by files. Give 2 agents tasks that touch different files, or the merge at the end is where youāll pay for it. Claude Codeās own docs say the same about agent teams: āTwo teammates editing the same file leads to overwrites.ā
Level 4: an AI software factory
An AI software factory is a group of AI agents that works through a whole roadmap by itself, with agents in roles like product manager, maintainer and engineer, while a person sets the goal.
For Daiku I made a Linear workspace and worked with an agent to fill it with a whole roadmap: projects, epics, tickets, the lot. Then I started more agents: one called pm, one called maintainer and as many engineers as I needed. pm never writes code. It hands out the work in order, reviews it and checks it against git, the live site, PostHog, Sentry and Cloudflareās wrangler. Claude Code lets one session message another with an @-mention (cross-session messaging). I just tell pm to tell @maintainer to do something and they coordinate it between themselves. I only ever talk to pm. This is what /list-agents showed in one of my sessions on 16 October (trimmed):
Peer sessions (5):
sentry [49a9ce] Ā· interactive Ā· idle Ā· started 4d ago
pm [df54eb] Ā· bg Ā· idle Ā· started 3d ago
maintainer [34091f] Ā· interactive Ā· idle Ā· started 4d ago
Then I gave pm one goal: āfinish the entire Linear boardā. Itās been going since 13 October and itās still going. Iām paying a fortune in tokens for this but itās worth it because itās for science!!
What itās like to actually run one
On 16 October, 3 days in, the board had 475 tickets across 25 projects and 273 of them were done.
The factory doesnāt sleep. Between midnight and 6 in the morning it pushed 17 commits on 15 October and 27 on 16 October. Hereās some of that second night, trimmed, from git log:
23:53 Correction: the /app chmod did not fix it; isolate the real layer instead
00:07 DAI-456: the chmod fix holds. A clean dry run proves it, full fidelity this time
00:23 DAI-456: fix the tarball at the source, root the extraction, scan /app's own modes
02:37 DAI-468: fix a real double-attach bug found before the test-mode run
02:53 DAI-468: a Workers regression test for the double-attach fix, per pm
05:14 DAI-351: the ensureBrowserReady fix was itself wrong; corrected
Thatās a whole debugging story at 2 in the morning, with a fix of a fix at the end. pm makes calls too. The agents write every decision down in a file called DECISIONS.md. It has lines like āpmās call, having seen the numbersā and āpmās review before deploy caught three real gaps, all fixed before shippingā. It even set itself a bar for when to bother me: a change that adds more than about 200 milliseconds to starting someoneās browser has to go past me first.
Cognitive debt: asking my own project for an update
Iām happy because itās moving forward. Iām also kinda confused. I have impostor syndrome and fear of missing out (FOMO) in my own project because I donāt really know where it is, whatās happening or what the last few things that happened were. I keep having to ask pm for an update. On my own product!! When something breaks I tell them to fix it and they do. I donāt really know more than that.
I even have one more agent, sentry, that watches Daikuās 3 projects in Sentry. Iād have told you it pings pm to fix every exception right away. Then I asked them for this post. sentry files the bugs in Linear itself, with the trace and a suggested fix. It has never messaged pm and pm has never had a ping from it. And on 16 October, when a deploy added a database column without bumping the schema version and no AI could start a task on Daiku for about 6 hours, I was the one who noticed!! pm has since added a check in PostHog that catches that kind of outage within the hour.
I didnāt know how my own factory handles an exception until I asked it!!
Thereās a name for this. Margaret-Anne Storey calls it cognitive debt: the debt from going fast ālives in the brains of the developersā. Even when agents write code thatās easy to understand, āthe humans involved may have simply lost the plotā. Simon Willison hit it on his own projects in February: āI no longer have a firm mental model of what they can do and how they work.ā
Hereās my version of it as a number: on 16 October DECISIONS.md was 66,725 words long and the repository is 12 days old!! About 18,000 of those words came in the 3 days pm has been in charge. Thatās what Iād have to read to know where my own project is.
| Day | Words |
|---|---|
| 4 | 2.0 |
| 5 | 9.0 |
| 6 | 20.5 |
| 7 | 28.3 |
| 8 | 30.7 |
| 9 | 38.0 |
| 10 | 43.4 |
| 11 | 44.3 |
| 12 | 48.7 |
| 13 | 51.4 |
| 14 | 52.0 |
| 15 | 63.3 |
| 16 | 66.7 |
In my React Summit talk last year I said āProductivity is our ability to get stuff doneā. Level 4 gets a lot of stuff done, some of it at 3 in the morning. What that sentence leaves out is that I need to know what got done. Level 4 is where I stopped knowing.
How to keep a software factory readable
If you build one of these, build the part that keeps you in the loop first:
- Make every decision land in one file, then read only what changed.
git log -p --since=yesterday -- DECISIONS.mdis the last day of decisions and nothing else. - Put a ticket number in every commit. Every Daiku commit starts with its ticket, like
DAI-468. That waygit logreads as a changelog by ticket and every line leads back to why it exists. - Schedule the update instead of asking for it. Have
pmwrite you one note a day, in plain words: what shipped, what broke, what it decided without you and what it needs from you. If youāre out and about, just tell Claude to push-notify you. With Remote Control on, Claude Code sends the update to the Claude app on your phone when you ask for one (ānotify me when the migrationās doneā). - Write down when it has to ask you. Daikuās
pmcame up with its own 200 millisecond bar. Set yours before you start: money, peopleās data, anything a user sees, anything you canāt undo. - Give it a way to check its own work. Boris Cherny says giving Claude a feedback loop, āsuch as running a bash command, a test suite, or testing the app through the browserā, can make the result 2 to 3Ć better. In a factory the agents are the only ones checking.
- Ask the agents what they actually do. Every so often, ask each one to describe its job and its last few days in a few lines, the way I did for this post. Mine didnāt match what Iād have told you about them.
Whatās level 5?
I donāt know!! Dan Shapiroās level 5 is āa black box that turns specs into softwareā, where āhumans are neither needed nor welcomeā, and he says the people he knows doing it are āsmall teams, less than five peopleā. StrongDMās AI team runs one of those, where āCode must not be written by humansā and āCode must not be reviewed by humansā. They also say that āIf you havenāt spent at least $1,000 on tokens today per human engineer, your software factory has room for improvementā, which is wild.
Maybe level 5 is more of that, with no pm to talk to because the agents write the roadmap too. Maybe itās a factory that goes as fast as level 4 and still keeps me knowing my own project. Iād love to hear from you on this one.
The sweet spot is level 2 or 3
After all this, Iād pick a mix of level 2 and level 3 depending on the roadmap and the timeline. And I find the āseparate worktree, separate branchā setup kinda annoying to set up, tear down and clean up. So I tend to lean toward level 2 even though itās somewhat slower.
How to pick your level
- Will you be the one debugging it? Stay at level 2 and read every diff while itās small.
- Is it a pile of small, independent tasks with a deadline? Level 3, split by files, and sweep the worktrees as you merge.
- Is it a whole roadmap youāre happy to review as results instead of code? Level 4, but only once the readout from the last section is in place. Look at the token budget before you start.
- Run as many agents as you can review. Starting agents is free. Reviewing them is where your day goes.
- Change levels inside the same week. A level 3 morning for a stack of small fixes and a level 2 afternoon for the feature you care about is a normal week for me.
Maybe I lean toward level 2 because itās the closest to actual human communication. Itās one conversation, back and forth, about one thing. It feels like community, like pair programming, and maybe thatās what weāre all after anyway.
We were made for community
That pull toward having somebody next to me while I build goes all the way back to the first pages of the Bible!!
In Genesis, God makes the world in 6 days. When Heās done, āGod looked upon all that He had made, and indeed, it was very goodā (Genesis 1:31). Then chapter 2 tells it again from the ground. God puts the first man in the Garden of Eden āto cultivate and keep itā (Genesis 2:15) and brings him every animal to name. And for the first time in the Bible, God calls something not good: āIt is not good for the man to be alone. I will make for him a suitable helperā (Genesis 2:18). Nothing had gone wrong yet. There was no sin, no pain, a perfect garden with work to do and God right there with him. Being alone was still not good. Godās answer was Eve, in the story everybody knows as Adam and Eve.
An agent isnāt a person. Iām pretty firm on that: software isnāt made in the image of God. People are, made for community the way Genesis 2 says. Level 2 is a pretty good imitation of that: one conversation, back and forth, somebody to think out loud with. At level 4 I lose even that. I think thatās why I keep drifting back to level 2.
So thatās where Iāve landed, for now. Have you found a sweet spot of your own? Have you worked at something youād call level 5? What do you think?
Questions
What are the 5 levels of agentic coding?
The 5 levels of agentic coding I've worked through are: 1, writing every line by hand; 2, one agent in one conversation; 3, several agents at once, each in its own git branch and worktree; 4, a software factory where agents with roles like PM and maintainer work through a whole roadmap; 5, still an open question. My sweet spot is level 2 or level 3.
What is agentic coding?
Agentic coding is writing software by telling an AI agent like Claude Code or Codex what you want and letting it read your code, edit files and run commands by itself while you review what it did. The agent works in a loop: it changes something, checks the result and goes again until it thinks it's done.
Is agentic coding the same as vibe coding?
No. Vibe coding, Andrej Karpathy's term from February 2025, means accepting what the AI writes without reading the code. In agentic coding a person still reviews the work, even when several agents write it at once.
What is an AI software factory?
An AI software factory is a team of AI agents with roles like product manager, maintainer and engineer that works through a roadmap on its own while a person sets the goal and checks the results. I gave one the goal "finish the entire Linear board" for my product Daiku on 13 October 2026. By 16 October it had finished 273 of the board's 475 tickets.
How do you run multiple Claude Code sessions in parallel?
Give each Claude Code session its own git worktree (a separate folder on its own branch) and no 2 sessions edit the same files. Claude Code makes one for you when you start it with the worktree flag and a name. Review each session's work when it finishes, merge it, then remove its worktree so they don't pile up.
What is cognitive debt in AI coding?
Cognitive debt is what you lose when agents build faster than you can follow: the code can be fine while you no longer know what the system does or why. Margaret-Anne Storey named it in February 2026. I ran into it with a software factory on my own product, where I kept having to ask the agents what had happened.
Which level of agentic coding is most productive?
For me it's level 2 or level 3, depending on the roadmap and the deadline. A software factory (level 4) gets the most done while I'm away from it, but I lose track of what happened. Level 3's worktrees are a chore to set up and clean up. So I lean toward level 2 even though it's slower.
Written by me, Tejas Kumar, an AI Engineer at IBM based in Berlin. Read everything else I have written, or go to Fluent React, my O'Reilly book on how React works inside, the talks I give at conferences, and ConTejas Code, my podcast.