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.