Desktop app: session status dot stays "running" after turn and all background tasks complete

Open 💬 0 comments Opened Jul 3, 2026 by astontek

What's Wrong?

In the macOS desktop app, the per-session status indicator in the session list keeps showing a session as running long after the agent has completely finished.

In the observed session, everything had completed cleanly:

  • the final assistant message was delivered (turn ended, no pending permission prompts),
  • both background shells started during the task had completed (their completion notifications fired),
  • a background subagent had finished,
  • Docker containers started during the task were torn down,
  • no monitors, scheduled tasks, or servers remained.

The dot still showed the session as running, and stayed that way until the user re-engaged the session with a new message. The stale indicator repeatedly pulls the user back to check on sessions that are actually done ("I always come back because of that").

What Should Happen?

The session status dot should flip to idle/done when the turn ends and no tracked background work (shells, subagents, monitors, tasks) remains.

Error Messages/Logs

None — UI state only. Happy to run diagnostics or provide more detail on request. A screenshot of the stale indicator can be attached in a comment.

Steps to Reproduce

  1. In the desktop app, give a session a long autonomous task during which the agent runs background shells (run_in_background) and a background subagent — all of which complete before the turn ends.
  2. Let the turn finish fully (final summary message rendered).
  3. Leave the session; look at the session list.
  4. Observed: the session's status dot still shows running, indefinitely, until the user sends another message to that session.
  5. Expected: dot goes idle at end of turn.

Environment

  • Claude Code: 2.1.160 (desktop app)
  • OS: macOS 26.5.2 (Darwin 25F84)
  • Model: claude-fable-5

Regression?

Unknown / last working version unknown.

Related issues

  • #25539 — status line stays stuck after response completes
  • #56770 — status dot stuck perpetually (closed as duplicate)
  • #61150 — stale background shells/monitors counters after /clear

View original on GitHub ↗