cd /news/ai-agents/i-checked-what-6-ai-coding-tools-wri… Β· home β€Ί topics β€Ί ai-agents β€Ί article
[ARTICLE Β· art-98198] src=dev.to β†— pub= topic=ai-agents verified=true sentiment=Β· neutral

I checked what 6 AI coding tools write to disk to stop the agent forgetting its plan. Half write nothing.

A developer investigated why AI coding tools forget their plans and found that the issue is often a filesystem problem, not a context-window limitation. The developer's own tool suffered because the plan was never saved to disk, and a review of six popular tools showed that those that don't persist plans (Cursor and bolt.new) have the most complaints about forgetting. The developer recommends persisting plans and archiving them on completion, and warns that prompting a model to maintain a file is unreliable.

read4 min views1 publishedAug 15, 2026

Every AI coding tool has the same top complaint: "it forgot what we were doing."

I spent weeks assuming that was a context-window problem. It mostly isn't. It's a filesystem problem β€” and you can predict which tools suffer from it by asking one question: where does the plan get written down?

Our own builder had it badly. You'd say "build me a CRM," the agent would plan it, start building, hit its step limit, stop. You'd type "continue" β€” and it would either start over from a different angle or silently drop half the plan.

The cause was mundane and a little humbling. The plan was never saved anywhere. It was a local variable inside one function, parsed out of the model's own output text, used for step tracking during that single turn, then discarded:

// inside one turn, then gone
const activePlan = parsePlanFromModelOutput(text);

A savePlan()

function existed. Nothing in the codebase ever read a plan back. The UI reset the plan to null

on every new message. So "continue" was always a cold start β€” the agent had no record that a plan had ever existed.

Then it got worse. We had a completePlan()

that fired whenever the agent hit its max iteration limit β€” i.e. in the exact moment before a user types "continue" β€” and it marked every pending step skipped

. We were actively erasing the roadmap at the worst possible moment.

And one more: the plan object was only ever built on one model provider's code path. Route the session through a different provider and there was no plan at all. The bug was load-bearing on which model you happened to be using.

So I went and read the docs, changelogs and forum threads for the tools people actually use. (This is from public documentation and user reports β€” I can't read their source.)

Tool Durable plan? Always-injected memory
Claude Code
Yes β€” plan files under ~/.claude/plans/ , survive compaction
CLAUDE.md , re-read from disk after every compaction
Lovable
Yes β€” .lovable/plan.md + an archive dir, inspectable and diffable
AGENTS.md + knowledge layers injected every message
Replit Agent
Yes β€” .local/session_plan.md + a native task board
replit.md , persists across sessions
Devin
Yes β€” structured JSON plan, editable, survives crashes scoped memory layers + playbooks
Cursor
No first-class plan; the community maintains a TODO.md by hand
.cursor/rules/*.mdc
bolt.new
No β€” Plan Mode keeps the plan in the chat
agents.md + Project Knowledge

The two that write nothing to disk are the two with the loudest "it forgets" threads. Cursor's forum has the "completely forgets it's trying to solve a problem" thread; bolt's own documentation concedes that after many prompts the AI loses track of earlier decisions and contradicts its own code.

That correlation isn't proof of causation. But it's a strong hint that this is an engineering decision, not a model-intelligence ceiling.

If you're building something similar, persistence alone isn't the finish line. Both of these are real and documented:

session_plan.md

isn't cleared between sessions, so the agent abandons what you just asked for to go finish an old plan. A plan that survives forever is its own bug.So: persist the plan, and archive it on completion.

The plan now lives as plan.json

plus a human-readable PLAN.md

on the workspace's persistent volume. It's written through on every step transition, re-read at the start of every turn, and archived when complete. If the agent stops early, pending steps persist untouched instead of being wiped. We added a provider-parity test so the plan can't silently exist on only one code path again.

This is the part I'd actually tell other people building agents:

You cannot ask a model to maintain a file by putting it in the prompt.

We told our agent to keep a NOTES.md

of its decisions. It never created it. Not once. I only found out by inspecting the container.

It also kept referring to a "bug log" it claimed to have been writing. There was no such file anywhere in the codebase β€” I grepped. It had hallucinated its own persistence layer, and it described it confidently.

The moment we made it a tool the agent has to call, it worked β€” because a tool call shows up in the trajectory and is verifiable. A prompt instruction is a suggestion; a tool call is evidence.

Enforce it in code. Don't ask the model nicely.

Stop tuning your prompt and go ask where the plan is written to disk. If the answer is "nowhere," you've found your bug. It's a persistence problem wearing a memory problem's clothes.

I build NoCoder, an AI app builder where you review every change as a diff before it applies. It's a beta. If you want to try to break it, I'd genuinely value that more than a compliment.

Curious what the folks here have hit β€” has anyone found a tool that handles long-running plan state well?

── more in #ai-agents 4 stories Β· sorted by recency
── more on @claude code 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/i-checked-what-6-ai-…] indexed:0 read:4min 2026-08-15 Β· β€”