[FEATURE] User-facing way to clear or edit the TodoWrite/task tray without /clear wiping the conversation
Summary
There is no user-facing way to clear or edit the TodoWrite/task tray independently of conversation state. Once a list is written, the user is a spectator: they cannot dismiss it, edit it, or mark an item resolved. The only lever that removes the tray is /clear, which also discards the entire conversation (the prior session moves to /resume). /compact leaves the tray untouched.
This becomes a persistent annoyance when a list reaches a near-terminal state but one item is parked in a non-completed state (e.g. deferred / awaiting review). That single non-completed item holds the entire tray pinned to the UI indefinitely — across many turns, for hours — with no way for the user to retire it.
Repro
- Have the model write a TodoWrite/task list where most items are
completedbut at least one stays non-completed (deferred, blocked, "await review", etc.). - The model stops writing new todo updates (work is effectively done).
- The tray remains visible turn after turn. There is no command, keypress, or setting to clear or edit it.
/compactdoes not remove it./clearremoves it but destroys the conversation.
Why it happens (relevant existing behavior)
Per #15408, the tray auto-hides only when every item is completed, and reappears the moment any item is non-completed. So a single deferred/blocked item keeps the whole tray open — working as designed, but the user has no escape hatch because todo state is model-owned and there is no user-side control surface.
What I want
User-facing control over the todo/task tray, decoupled from conversation lifecycle. Any of:
- A
/todos clear(or/clear-todos) command that empties the tray without touching conversation history. - A
/todos editaffordance — let the user mark an item complete/dismissed, delete an item, or close the list manually (e.g. an interactive picker, or anX/dismiss control on the tray). - Auto-retire a list once all items reach a terminal state (
completedor a deferred/cancelled terminal status) and N turns pass with no new writes. - A
settings.jsonflag to hide the tray after completion / allow manual dismissal.
The core gap: the only existing control that clears the tray (/clear) is the one that also destroys the working context. Users need a way to retire a stale tray that costs nothing.
Related
- #15408 (closed, not planned) — documents the all-completed auto-hide behavior; the inverse request (wanting completed trays to persist).
- #59900 (open) — task list accumulates stale tasks across sessions; phantom
in_progressentries. - #59962 (open) — completed subagent work can leave a task stuck
in_progress. - #44917 (closed) — GC for stale session artifacts; never shipped.
Environment
- Claude Code 2.1.150
- macOS 26.4
- Terminal (TUI), default settings
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗