[BUG] Remote/SSH sessions render blank ("No messages yet") on switch/reopen after 2.1.205 — backend resumes correctly, Desktop doesn't hydrate transcript
Summary
With Claude Code Desktop connected to a Linux host over SSH, switching to / reopening a remote session renders the message list empty ("No messages yet"), even though the session's transcript on the remote host is complete and the backend resumes it correctly. This began immediately after the remote toolchain auto-updated to ccd-cli 2.1.205 (Jul 10) and a host reboot + desktop relaunch.
This looks like the same client-side hydration bug for remote/SSH sessions described in #76124 (macOS), here reproduced on a different setup and a newer version, plus two extra failure modes.
Environment
- Remote host (SSH target): x86_64, Ubuntu 24.04.4 LTS,
Linux 6.8.0-134-generic - Remote backend:
CLAUDE_CODE_ENTRYPOINT=claude-desktop, exec path~/.claude/remote/ccd-cli/2.1.205; active server build under~/.claude/remote/srv/ - Toolchain update timeline on the remote:
2.1.197(Jul 5) →2.1.202(Jul 7) →2.1.205(Jul 10 23:28). Blank-on-switch appeared right after this update, following a host reboot + desktop relaunch.
Steps to reproduce
- From Claude Code Desktop, connect to a Linux host over SSH and hold a multi-turn conversation.
- Reboot the remote host (or fully quit + relaunch the Desktop app).
- Reopen / switch to the remote (SSH) session.
Expected
The full message history renders in the tab (as local sessions do).
Actual
- The tab shows "No messages yet" over a fully intact transcript.
- The transcript
.jsonlon the remote host is complete and well-formed. Two examples verified on the host: 547user +1315assistant messages,wc -l=2559, 0 malformed JSON lines153user +341assistant messages,wc -l=655, 0 malformed lines- Context is not lost — the backend still reads the transcript.
Evidence that this is client-side (backend resume works)
- The remote server accepts the connection and spawns, per open tab, exactly one:
ccd-cli … --resume <sessionId> … --replay-user-messages --include-partial-messages
psshows one clean2.1.205--resumeprocess per tab — no orphaned/older-version processes.remote-server.logshows connections established, processes streaming stdout/stderr, and every subprocess exiting0. No errors.
So the backend resumes the correct session and reads its transcript; only the Desktop UI fails to hydrate/repaint the message list.
Two additional failure modes observed
- Silent fork to a new empty session. One tab kept its title but was bound to a freshly-created, near-empty
sessionId(new UUID containing only post-reboot turns), while the original full transcript sat untouched under a different UUID. Matches #73526. ~/.claude.json→projects[<remote-project>].historyis[]after the relaunch. Matches #63025's "projects field nulled after desktop restart," here specifically thehistoryarray.
Workaround
SSH into the remote host and run claude --resume <id> from a terminal — the CLI hydrates the full history correctly. Close the Desktop tab for that session first so two processes don't attach to one session.
Related
Appears to be the same root cluster: #76124, #63025, #50982, #73526, #53717. Filing as a standalone tracked report; happy for maintainers to consolidate.