claude-code - 💡(How to fix) Fix Desktop (Windows): remote SSH session loses UI message history after reboot [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#50982Fetched 2026-04-20 12:07:41
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Author
Participants
Timeline (top)
labeled ×4

When using Claude Desktop (Windows) with a remote workspace over SSH, the conversation UI history disappears after rebooting Windows, even though:

  • The underlying session JSONL on the remote host is intact and complete
  • The ccd-cli subprocess is respawned with --resume <UUID> and successfully loads the context (Claude "remembers" prior conversation when prompted)

The issue is UI-only: message history is not re-rendered after client restart. This does not occur when using a local (non-SSH) workspace.

Root Cause

When using Claude Desktop (Windows) with a remote workspace over SSH, the conversation UI history disappears after rebooting Windows, even though:

  • The underlying session JSONL on the remote host is intact and complete
  • The ccd-cli subprocess is respawned with --resume <UUID> and successfully loads the context (Claude "remembers" prior conversation when prompted)

The issue is UI-only: message history is not re-rendered after client restart. This does not occur when using a local (non-SSH) workspace.

Fix Action

Fix / Workaround

  • Users cannot visually review prior conversation after reboot, even though the data is safe.
  • Workaround: users have to manually prompt Claude to summarize prior progress every time they reboot.
  • Pro Max subscribers in particular use Claude Desktop heavily across multi-day / multi-session workflows, where this gap is especially noticeable.

Code Example

2026/04/20 07:23:27 [Server] New connection from: @
2026/04/20 07:23:41 [process.Manager] Process 0071cf77-... started, PID=6332, command=/var/services/homes/claude/.claude/remote/ccd-cli/2.1.111
2026/04/20 07:23:41 [process.Manager] Starting stdout streaming for process 0071cf77-...
2026/04/20 07:23:41 [process.Manager] WriteStdin called for process 0071cf77-... with 400 bytes
(initialize request)

---

--output-format stream-json --verbose --input-format stream-json \
  --resume <session-uuid> --include-partial-messages --replay-user-messages ...
RAW_BUFFERClick to expand / collapse

Bug Report: Remote SSH sessions lose UI message history after Windows client reboot

Summary

When using Claude Desktop (Windows) with a remote workspace over SSH, the conversation UI history disappears after rebooting Windows, even though:

  • The underlying session JSONL on the remote host is intact and complete
  • The ccd-cli subprocess is respawned with --resume <UUID> and successfully loads the context (Claude "remembers" prior conversation when prompted)

The issue is UI-only: message history is not re-rendered after client restart. This does not occur when using a local (non-SSH) workspace.

Environment

Windows client

  • Claude Desktop (Windows) — latest version at time of report
  • Workspace: Remote SSH, mapped to a folder on a Synology NAS

NAS (remote host)

  • Synology DSM, Linux 4.4.302+ (x86_64)
  • Remote binaries installed at ~/.claude/remote/:
    • serverclaude-ssh cee98937dc257e6af64e712d71dbe4497eb82452 (built 2026-04-14T16:53:35Z)
    • ccd-cli/2.1.1112.1.111 (Claude Code)
  • Communication: Unix socket ~/.claude/remote/rpc.sock (JSON-RPC)
  • Session JSONL storage: ~/.claude/projects/<flattened-cwd>/<session-uuid>.jsonl (persisted via bind mount)

Expected behavior

After rebooting the Windows client and reconnecting to the same remote workspace, selecting a session from the sidebar should re-render the full message history in the main pane — the same behavior as local workspaces.

Actual behavior

After reboot and reconnection:

  1. Sidebar session list is still present (persisted on Windows).
  2. Selecting any remote-workspace session shows "No messages yet." in the main pane.
  3. Sending a new prompt to that session gets a response that clearly uses the prior context — Claude can summarize progress, recall decisions, and continue work from where it left off. This proves the underlying session state is fully intact; only the UI replay is missing.
  4. Behavior is consistent across multiple remote sessions. Only sessions bound to local (non-SSH) workspaces render their history correctly.

Closing the Windows app (X button / tray minimize) without rebooting does not trigger the bug. Only a full Windows reboot does.

Steps to reproduce

  1. Set up Claude Desktop on Windows, add a remote workspace over SSH pointing to a folder on a remote host.
  2. Have a meaningful multi-turn conversation in that remote session so the JSONL accumulates messages.
  3. Reboot Windows (do not just close the app — full OS reboot).
  4. Launch Claude Desktop, reconnect to the remote workspace, select the prior session from the sidebar.
  5. Observe: main pane shows "No messages yet." despite the JSONL on the remote host being intact.
  6. Send any prompt like "Summarize where we left off" — Claude responds correctly using prior context.

Evidence from the remote server log

Excerpt from ~/.claude/remote/remote-server.log on the NAS:

2026/04/20 07:23:27 [Server] New connection from: @
2026/04/20 07:23:41 [process.Manager] Process 0071cf77-... started, PID=6332, command=/var/services/homes/claude/.claude/remote/ccd-cli/2.1.111
2026/04/20 07:23:41 [process.Manager] Starting stdout streaming for process 0071cf77-...
2026/04/20 07:23:41 [process.Manager] WriteStdin called for process 0071cf77-... with 400 bytes
(initialize request)

ps shows the spawned ccd-cli has:

--output-format stream-json --verbose --input-format stream-json \
  --resume <session-uuid> --include-partial-messages --replay-user-messages ...

The --replay-user-messages flag suggests some form of replay is intended, but the UI does not show any messages (user or assistant) after reconnect.

The JSONL for one affected session contains:

  • 689 user messages
  • 1035 assistant messages
  • Other events: queue-operation, attachment, ai-title, last-prompt, system

All present, ~7.2 MB, 2052 lines total. None of this is reflected in the UI post-reboot.

Scope

ScenarioHistory visible in UI
Local workspace, any restart pattern✅ Yes
Remote workspace, session switching without reboot✅ Yes
Remote workspace, close Windows app via X✅ Yes
Remote workspace, after Windows reboot❌ No ("No messages yet.")

Working hypothesis

Local workspaces likely have the Desktop app read the JSONL files directly from the filesystem to re-hydrate the message list. In remote mode, the app apparently relies on live RPC events forwarded from the server, and after a fresh reconnect the server/ccd-cli respawn pathway re-establishes CLI-side context but does not push historical messages back through the RPC stream to the UI.

Impact

  • Users cannot visually review prior conversation after reboot, even though the data is safe.
  • Workaround: users have to manually prompt Claude to summarize prior progress every time they reboot.
  • Pro Max subscribers in particular use Claude Desktop heavily across multi-day / multi-session workflows, where this gap is especially noticeable.

Suggested fix directions

  1. On Desktop app reconnect, have the remote server stream the persisted JSONL history through RPC so the UI can re-render messages, matching local-workspace behavior.
  2. Alternatively, expose an RPC method the Desktop UI can call on session selection to request full history replay.
  3. As a stopgap, document this limitation so users understand context is preserved even when the UI shows "No messages yet."

Additional context

Happy to provide more log excerpts, full ps output, or test against newer ccd-cli builds if helpful. Diagnosis was done from the NAS host side and the JSONL contents are confirmed intact.

extent analysis

TL;DR

The most likely fix involves modifying the remote server to stream the persisted JSONL history through RPC upon reconnect, allowing the UI to re-render messages.

Guidance

  • Investigate the ccd-cli subprocess and its interaction with the server to understand why historical messages are not being pushed through the RPC stream after a reconnect.
  • Consider adding an RPC method for the Desktop UI to request full history replay upon session selection, as an alternative to streaming the entire JSONL history.
  • Review the --replay-user-messages flag and its implementation to ensure it is functioning as intended, and if it can be leveraged to solve the issue.
  • Verify that the JSONL files are being correctly persisted and can be read by the server after a reboot.

Example

No code snippet is provided as the issue requires a deeper understanding of the ccd-cli and server implementation.

Notes

The fix may require modifications to the server and ccd-cli to handle the streaming of historical messages through RPC. Additionally, the Desktop UI may need to be updated to handle the receipt of this historical data.

Recommendation

Apply a workaround by documenting the limitation and providing users with instructions on how to manually prompt Claude to summarize prior progress after a reboot, while working on a permanent fix that involves modifying the remote server to stream the persisted JSONL history through RPC.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

After rebooting the Windows client and reconnecting to the same remote workspace, selecting a session from the sidebar should re-render the full message history in the main pane — the same behavior as local workspaces.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING