Statusline no longer renders in daemon-hosted sessions since 2.1.283 (new conversations from session UI included); daemon-held sessions excluded from --resume

Status Fixed / completed
Reported on v2.1.283
Maintainer reply None cached
Activity 2 comments · opened Oct 3, 2026 · closed Oct 3, 2026

Title: Statusline no longer renders in daemon-hosted sessions since 2.1.283 (new conversations from the session UI included); daemon-held sessions also excluded from --resume

Environment

  • macOS darwin-arm64, npm-global install
  • Affected: 2.1.283 – 2.1.288 (checked changelogs, no fix)
  • Working: 2.1.261
  • Statusline: custom command (claude-hud plugin's canonical setup command), verified to render correctly in interactive sessions on the same versions

What changed

In 2.1.261, the statusline rendered in all sessions, including background/daemon-hosted ones (claude bg-spare / bg-pty-host form factor). Since 2.1.283:

  1. Daemon-hosted sessions no longer render the statusline at all. Sessions opened by clicking a past conversation in the session UI respawn under the daemon backend (backend: "daemon" in the job registry) and show no statusline.
  2. Brand-new conversations created from the session UI are also affected — a completely new prompt typed into the agent interface spawns a daemon-hosted session (backend: "daemon" from creation), so the statusline never appears for it either.
  3. Only the first conversation of a fresh interactive claude process (new terminal) still renders the statusline.
  4. Related: while a session is held by a live daemon, claude --resume <sessionId> returns "No sessions match" for it. After killing the daemon holder process, the same session resumes fine interactively (and the statusline renders).

Repro

  1. Configure any statusline command (e.g. claude-hud).
  2. Start claude in a terminal → statusline renders. ✅
  3. From the in-app session interface, open a past conversation (or type a new prompt) → no statusline. ❌
  4. claude --resume <id-of-daemon-held-session> → "No sessions match <id>". ❌
  5. Kill that session's bg-spare process → claude --resume <id> now works, statusline renders. ✅

Evidence

  • Job registry (~/.claude/jobs/<id>/state.json) shows backend: "daemon" for both old conversations and newly created ones (e.g. createdAt today, backend: "daemon", firstTerminalAt present for interactive-born ones).
  • Process list shows the session hosted by claude bg-spare --bg-spare /tmp/cc-daemon-501/<user>/spare/<id>.claim.sock with a bg-pty-host wrapper.
  • The statusline command itself is healthy: running it with a sample payload in a minimal env (env -i HOME=... PATH=/usr/bin:/bin, BSD grep, no TTY) renders correctly.

Impact

For multi-session workflows that live in the session-switching UI, the statusline is effectively gone in 2.1.283+. The only workaround found is "one terminal per conversation" (fresh interactive process), or killing daemon holders to resume sessions interactively — both give up the session-switching workflow.

Suggestion

Either restore statusline rendering for daemon-hosted (pty-hosted) sessions, or provide an official way to bring a daemon-held session back into an interactive terminal without killing its holder.

View original on GitHub ↗

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