Cowork mode sessions never survive app restart — CLI session ID ≠ API conversation ID causes perpetual "No conversation found"

Resolved 💬 2 comments Opened Apr 12, 2026 by ANittur Closed May 24, 2026

What happened?

Cowork mode (research preview) loses all conversation history on every app restart. The desktop app attempts to resume using the CLI session ID, but the Anthropic API tracks conversations by a different internal ID (cse_...). The mapping between these two IDs is not persisted, so resume always fails.

On a single day (2026-04-12), this happened 10 times with 5+ distinct session IDs, each following the exact same failure pattern.

Reproduction steps

  1. Open Claude Desktop with Cowork mode enabled (Ubuntu 22.04, x86_64)
  2. Have a substantive conversation in a Cowork session
  3. Close Claude Desktop completely (or reboot the machine)
  4. Reopen Claude Desktop

Expected: Session resumes with conversation history intact.
Actual: Error "No conversation found with session ID: \<cli-session-id\>" appears. The app clears the stale CLI session ID and spins up a brand new session. All conversation history is lost from the UI.

Log evidence from ~/.config/Claude/logs/main.log

2026-04-12 14:10:48 [info] Clearing stale cliSessionId 0d3aa319-d09d-4456-bd5f-6c91bc11adff for session local_e35a8a4e-c59a-4ac3-8504-fcb3adc25405 — transcript was unresumable (queue-ops only)
2026-04-12 14:13:21 [info] Clearing stale cliSessionId 37dd8137-64e2-4d05-a2ca-af0c4d668883 for session local_e35a8a4e-c59a-4ac3-8504-fcb3adc25405 — transcript was unresumable (queue-ops only)
2026-04-12 14:17:32 [info] Clearing stale cliSessionId f3266344-af8b-49ae-8e96-0b3636a47374 for session local_e35a8a4e-c59a-4ac3-8504-fcb3adc25405 — transcript was unresumable (queue-ops only)
2026-04-12 14:19:55 [info] Clearing stale cliSessionId 3d31d097-b629-491d-945e-3ba51f52e80a for session local_e35a8a4e-c59a-4ac3-8504-fcb3adc25405 — transcript was unresumable (queue-ops only)
2026-04-12 14:22:08 [info] Clearing stale cliSessionId 24658be8-fae3-4966-861b-cb8d37c551b5 for session local_e35a8a4e-c59a-4ac3-8504-fcb3adc25405 — transcript was unresumable (queue-ops only)

Root cause analysis

Three layers of session identity exist:

  1. Desktop app session (local_e35a8a4e-...)
  2. CLI session (UUID stored in session JSON as cliSessionId)
  3. API conversation (cse_...)

On restart, the app reads the CLI session ID from the session JSON and sends it to the API. The API only recognizes the cse_ ID. There is no field in the session JSON that persists the API conversation ID, and no code path to use it on resume.

The conversation JSONL files are fully intact on disk — the data isn't lost, the app just can't reconnect to it.

Suggested fix

Persist the API conversation ID (cse_...) in the session JSON alongside cliSessionId, and use it when attempting to resume the session on app restart.

Environment

  • OS: Ubuntu 22.04.4 LTS (x86_64)
  • Claude Code version: 2.1.100
  • Claude Desktop: Cowork mode (research preview)
  • Node: v18.0.0

View original on GitHub ↗

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