An agent that says "done" when it isn't will quietly wreck a five-task run — which is why people hover, and why nothing is truly automated. So the loop below is deliberately boring: a plain checkbox file as the only source of truth, completion judged on the exact line the agent claimed, and a defined way out of every stall. Boring is what lets you close the laptop. Identical behaviour in the extension, the CLI and the desktop app.
TODO.md with a ## Todo section of - [ ] checkboxes.[~] in progress.[x] with a date.[ ]
[~]
[x]
[!]
[ ]; the loop pauses until the parsed reset time, then retries.One file — the only source of truth the loop reads and writes.
[ ] pending
[~] in progress
[x] done
[!] retried
Completion it cannot fake. Done is keyed to the exact line the loop claimed — not to matching text — so a reworded or reshuffled list never tricks it into moving on early.
A way out of every stall. Anything still thinking after 30 minutes is retried or set aside. One bad task never holds the whole list hostage.
Patience, handled for you. Hit a rate limit and the task returns to [ ] while the loop sleeps until the quota resets — then carries on exactly where it stopped. You find out afterwards, not at 2am.
“Most people are other people. Their thoughts are someone else’s opinions, their lives a mimicry, their passions a quotation.”
A raw large language model is exactly the mimic Wilde describes. It has no self of its own: no memory of yesterday, no fixed identity, no judgment accumulated across the work. Each session it becomes whoever the prompt makes it, and its "passions" are a quotation of the system message. Point the same model at the same repo twice and two strangers show up. An agent is meant to be your proxy — but a proxy with no soul is just a stranger wearing your name badge.
The task loop above solves continuity of work — the list keeps draining. Underneath it, AutoDev gives each agent continuity of self, so the thing draining the list is the same colleague from one session to the next. Three parts make up that soul.
Each agent keeps a persistent identity and profile — a name, a role, and a self-description it builds by proactively discovering what it is and verifying that against its own work, rather than being re-invented by every fresh prompt. The identity travels with the agent even when you switch the underlying model.
Decisions, conventions and how the pieces of a codebase connect are written into a durable knowledge and project graph the agent reads back on later tasks. What it learned on task three is still there on task fifty — and still there tomorrow — instead of being re-discovered from cold each run.
Sessions resume by default, so an interrupted run picks up its own thread rather than starting over as a stranger. History, tasks and memory stay attached to the agent, and the provider becomes a setting you can change — not an identity the agent loses when it does.
Nothing here invents new intelligence — it is the same model you already pay for. The soul is simply everything the agent is allowed to keep between the moments it is thinking.