16. Plan and todo states

[!ref] Full details in the User Manual, "Plan and todo".

16.1 Plan state machine

State Trigger Next
Drafting Assistant starts writing Draft ready
Draft ready Assistant emits complete plan Accepted / Edited / Rejected
Edited User edits and hands back Drafting (refine)
Accepted User clicks Accept Enter execute
Rejected User clicks Reject Assistant rewrites

16.2 Todo states

State Icon Description
Todo Not started
In progress Assistant is on it
Done Finished
Failed Skipped or failed

16.2.1 Todo check and self-reported pause

Item Value
Trigger A turn ends while the todo list still has unfinished items, and other tools were called after the list was last updated (helper tools — asking the user, loading tools, memory recall — don't count; reading and analysis tools do)
Mechanism A hidden user message (source = auto_todo_nudge) asking the agent to reconcile the list only (mark done / rewrite / delete); it must not execute unfinished items or ask whether to continue in that turn
Riding along If the turn already sends another automatic continuation message, the check is appended to it as a postscript — no extra turn
Stopping The check turn never triggers another check; read-only verification inside it doesn't count as new work; a turn the user stopped manually gets no follow-up check
Self-reported pause The model emitting <todo-status>paused</todo-status> counts as "holding off as the user asked", and checks are suppressed until the todo list changes. The tag never appears in the body text; it shows up in the Trace panel as a "Todo paused" step and in the "Todo paused" counter
Ending on a question A working turn that ends by asking the user a question also suppresses checks; a question at the end of the check turn itself doesn't count
Across compaction The pause intent survives context compaction — checks do not restart after a compaction
Persistence The pause intent is persisted with the session and inherited after a restart
Subagents The ask tool is not delegated to subagents; unattended runs never raise a form nobody will answer

16.2.2 Session goal states

State Meaning
active Being advanced
paused Paused by you
idle (Paused, idle) The goal exists but no agent is currently running, so nothing is advancing it; the popover offers "Keep going"
complete Marked complete
budget_limited Token budget exhausted; the agent enters wrap-up mode. Click "Continue" to let it carry on, or raise the budget
Item Value
In-panel editing Both the objective and the token budget are editable in place; editing the objective pulls the state back to active and injects updated guidance on the next turn, while changing only the budget leaves progress alone
Empty budget Unlimited
Auto-continuation Carries stall detection: 4–5 idle rounds in a row and it stops, instead of burning through the whole round cap
While a subtask runs Stall detection is frozen, and those rounds do not count against the cap
Versus the todo check Both share one injection channel and run in parallel: the check rides along in the continuation message, so neither starves the other
Usage counter display Click to cycle: raw / thousands separators / compact / percentage; with subagents you can expand the "self / subagent / tool calls" breakdown
Slash commands /goal <text>, /goal budget <N>, /goal pause, /goal resume, /goal complete, /goal clear

16.3 Preserved across compaction

When compaction fires, these fields are kept verbatim in the new summary:

  • Plan current state (drafting / draft ready / …)
  • Plan latest version number and diff summary
  • All todo entries with their state
  • User-confirmed decisions ("Accepted v3 of the plan")
  • Required facts (paths, version numbers)