Statusline no longer renders in daemon-hosted sessions since 2.1.283 (new conversations from session UI included); daemon-held sessions excluded from --resume
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:
- 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. - 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. - Only the first conversation of a fresh interactive
claudeprocess (new terminal) still renders the statusline. - 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
- Configure any statusline command (e.g. claude-hud).
- Start
claudein a terminal → statusline renders. ✅ - From the in-app session interface, open a past conversation (or type a new prompt) → no statusline. ❌
claude --resume <id-of-daemon-held-session>→ "No sessions match <id>". ❌- Kill that session's
bg-spareprocess →claude --resume <id>now works, statusline renders. ✅
Evidence
- Job registry (
~/.claude/jobs/<id>/state.json) showsbackend: "daemon"for both old conversations and newly created ones (e.g.createdAttoday,backend: "daemon",firstTerminalAtpresent for interactive-born ones). - Process list shows the session hosted by
claude bg-spare --bg-spare /tmp/cc-daemon-501/<user>/spare/<id>.claim.sockwith abg-pty-hostwrapper. - 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.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗