[FEATURE] User-facing way to clear or edit the TodoWrite/task tray without /clear wiping the conversation

Resolved 💬 2 comments Opened May 23, 2026 by mreza0100 Closed May 27, 2026

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

  1. Have the model write a TodoWrite/task list where most items are completed but at least one stays non-completed (deferred, blocked, "await review", etc.).
  2. The model stops writing new todo updates (work is effectively done).
  3. The tray remains visible turn after turn. There is no command, keypress, or setting to clear or edit it.
  4. /compact does not remove it. /clear removes 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:

  1. A /todos clear (or /clear-todos) command that empties the tray without touching conversation history.
  2. A /todos edit affordance — let the user mark an item complete/dismissed, delete an item, or close the list manually (e.g. an interactive picker, or an X/dismiss control on the tray).
  3. Auto-retire a list once all items reach a terminal state (completed or a deferred/cancelled terminal status) and N turns pass with no new writes.
  4. A settings.json flag 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_progress entries.
  • #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

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗