[BUG] [Windows/Desktop] Cross-session messages to idle sessions are silently lost after auto-update; wake attempts wedge the session

Status Open
Maintainer reply None cached
Activity 2 comments · opened Aug 12, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Title: [Windows/Desktop] Cross-session messages to idle sessions are silently lost after auto-update; wake attempts wedge the session

Environment

  • Windows 11 Pro (build 10.0.26200)
  • Claude Code Desktop app, MSIX install (package Claude_pzs8sxrjxfjjc)
  • Started immediately after a desktop app auto-update today (previous version unknown — no version history is kept on disk for MSIX installs)
  • Likely related to #53717 (message content missing after auto-update), #81658, #66835

Summary

We run a multi-session orchestration setup (one verifier session coordinating worker
sessions via the ccd_session_mgmt send_message tool). After today's auto-update,
cross-session message delivery became state-dependent and lossy:

  1. Messages sent to an IDLE session are silently lost. The sender gets a success

response ("Message sent" / "Message queued"). The message sometimes even RENDERS
in the receiving session's transcript UI. But it is never persisted to the
receiver's session JSONL and the receiving model never processes it.
Verified by grepping the receiver's ~/.claude/projects/<project>/<session>.jsonl
for unique marker strings: 0 occurrences, while the sender-side record exists.

  1. Messages sent while the receiver is ACTIVE (mid-turn) deliver normally at the

next turn boundary. We confirmed this repeatedly in the same session pair, same day.

  1. Wake attempts wedge the session. A message that should wake an idle session

instead starts a turn that spins for ~10 minutes with no output and no JSONL
growth. The session shows a warning icon and only recovers when the user types
into its input box manually. User-typed input persists fine; cross-session
deliveries into the same session do not — so the failure is specific to the
background delivery path, not the transcript writer in general.

  1. Transcript truncation on restart. One receiving session's transcript dropped

from 5,916 to 5,866 messages (~50 lost) across an app restart. Notably, the model
had already acted on instructions contained in the now-vanished messages — i.e.
the content reached the model in memory but was never flushed to the JSONL, and
the restart discarded it. This matches the IndexedDB/JSONL desync described in #53717.

Repro

  1. Two sessions in one project, A (sender) and B (receiver).
  2. Let B go idle.
  3. From A, send B a message containing a unique marker string via send_message.
  4. Observe: A gets success; B's UI may render the message; B's JSONL never contains

the marker (grep), B's model never responds; B may enter a wedged turn (~10 min).

  1. Repeat while B is mid-turn: the marker appears in B's JSONL and B processes it.

Impact

Multi-session workflows are effectively broken: an orchestrating session cannot wake
or task idle worker sessions. Rulings/instructions sent between sessions vanish
without any error, which cost us ~50 messages of coordination state today.

Workaround (for other affected users)

We replaced the message channel with a file-based bus: instructions are written to
files, each worker arms a background file-watcher loop whose completion notification
self-wakes the session, and reports are appended to shared files that the
orchestrator watches. This fully restores automation, which also suggests the
background-task notification path is healthy while the cross-session delivery path
is not.

Asks

  • Fix persistence of cross-session deliveries to idle sessions (flush before ack,

or fail loudly to the sender instead of returning success).

  • Fix the wedged wake turn (idle session receiving a message spins ~10 min).
  • Consider fsyncing session JSONL before/after auto-update to prevent transcript loss.

What Should Happen?

Title: [Windows/Desktop] Cross-session messages to idle sessions are silently lost after auto-update; wake attempts wedge the session

Environment

  • Windows 11 Pro (build 10.0.26200)
  • Claude Code Desktop app, MSIX install (package Claude_pzs8sxrjxfjjc)
  • Started immediately after a desktop app auto-update today (previous version unknown — no version history is kept on disk for MSIX installs)
  • Likely related to #53717 (message content missing after auto-update), #81658, #66835

Summary

We run a multi-session orchestration setup (one verifier session coordinating worker
sessions via the ccd_session_mgmt send_message tool). After today's auto-update,
cross-session message delivery became state-dependent and lossy:

  1. Messages sent to an IDLE session are silently lost. The sender gets a success

response ("Message sent" / "Message queued"). The message sometimes even RENDERS
in the receiving session's transcript UI. But it is never persisted to the
receiver's session JSONL and the receiving model never processes it.
Verified by grepping the receiver's ~/.claude/projects/<project>/<session>.jsonl
for unique marker strings: 0 occurrences, while the sender-side record exists.

  1. Messages sent while the receiver is ACTIVE (mid-turn) deliver normally at the

next turn boundary. We confirmed this repeatedly in the same session pair, same day.

  1. Wake attempts wedge the session. A message that should wake an idle session

instead starts a turn that spins for ~10 minutes with no output and no JSONL
growth. The session shows a warning icon and only recovers when the user types
into its input box manually. User-typed input persists fine; cross-session
deliveries into the same session do not — so the failure is specific to the
background delivery path, not the transcript writer in general.

  1. Transcript truncation on restart. One receiving session's transcript dropped

from 5,916 to 5,866 messages (~50 lost) across an app restart. Notably, the model
had already acted on instructions contained in the now-vanished messages — i.e.
the content reached the model in memory but was never flushed to the JSONL, and
the restart discarded it. This matches the IndexedDB/JSONL desync described in #53717.

Repro

  1. Two sessions in one project, A (sender) and B (receiver).
  2. Let B go idle.
  3. From A, send B a message containing a unique marker string via send_message.
  4. Observe: A gets success; B's UI may render the message; B's JSONL never contains

the marker (grep), B's model never responds; B may enter a wedged turn (~10 min).

  1. Repeat while B is mid-turn: the marker appears in B's JSONL and B processes it.

Impact

Multi-session workflows are effectively broken: an orchestrating session cannot wake
or task idle worker sessions. Rulings/instructions sent between sessions vanish
without any error, which cost us ~50 messages of coordination state today.

Workaround (for other affected users)

We replaced the message channel with a file-based bus: instructions are written to
files, each worker arms a background file-watcher loop whose completion notification
self-wakes the session, and reports are appended to shared files that the
orchestrator watches. This fully restores automation, which also suggests the
background-task notification path is healthy while the cross-session delivery path
is not.

Asks

  • Fix persistence of cross-session deliveries to idle sessions (flush before ack,

or fail loudly to the sender instead of returning success).

  • Fix the wedged wake turn (idle session receiving a message spins ~10 min).
  • Consider fsyncing session JSONL before/after auto-update to prevent transcript loss.

Error Messages/Logs

Steps to Reproduce

Title: [Windows/Desktop] Cross-session messages to idle sessions are silently lost after auto-update; wake attempts wedge the session

Environment

  • Windows 11 Pro (build 10.0.26200)
  • Claude Code Desktop app, MSIX install (package Claude_pzs8sxrjxfjjc)
  • Started immediately after a desktop app auto-update today (previous version unknown — no version history is kept on disk for MSIX installs)
  • Likely related to #53717 (message content missing after auto-update), #81658, #66835

Summary

We run a multi-session orchestration setup (one verifier session coordinating worker
sessions via the ccd_session_mgmt send_message tool). After today's auto-update,
cross-session message delivery became state-dependent and lossy:

  1. Messages sent to an IDLE session are silently lost. The sender gets a success

response ("Message sent" / "Message queued"). The message sometimes even RENDERS
in the receiving session's transcript UI. But it is never persisted to the
receiver's session JSONL and the receiving model never processes it.
Verified by grepping the receiver's ~/.claude/projects/<project>/<session>.jsonl
for unique marker strings: 0 occurrences, while the sender-side record exists.

  1. Messages sent while the receiver is ACTIVE (mid-turn) deliver normally at the

next turn boundary. We confirmed this repeatedly in the same session pair, same day.

  1. Wake attempts wedge the session. A message that should wake an idle session

instead starts a turn that spins for ~10 minutes with no output and no JSONL
growth. The session shows a warning icon and only recovers when the user types
into its input box manually. User-typed input persists fine; cross-session
deliveries into the same session do not — so the failure is specific to the
background delivery path, not the transcript writer in general.

  1. Transcript truncation on restart. One receiving session's transcript dropped

from 5,916 to 5,866 messages (~50 lost) across an app restart. Notably, the model
had already acted on instructions contained in the now-vanished messages — i.e.
the content reached the model in memory but was never flushed to the JSONL, and
the restart discarded it. This matches the IndexedDB/JSONL desync described in #53717.

Repro

  1. Two sessions in one project, A (sender) and B (receiver).
  2. Let B go idle.
  3. From A, send B a message containing a unique marker string via send_message.
  4. Observe: A gets success; B's UI may render the message; B's JSONL never contains

the marker (grep), B's model never responds; B may enter a wedged turn (~10 min).

  1. Repeat while B is mid-turn: the marker appears in B's JSONL and B processes it.

Impact

Multi-session workflows are effectively broken: an orchestrating session cannot wake
or task idle worker sessions. Rulings/instructions sent between sessions vanish
without any error, which cost us ~50 messages of coordination state today.

Workaround (for other affected users)

We replaced the message channel with a file-based bus: instructions are written to
files, each worker arms a background file-watcher loop whose completion notification
self-wakes the session, and reports are appended to shared files that the
orchestrator watches. This fully restores automation, which also suggests the
background-task notification path is healthy while the cross-session delivery path
is not.

Asks

  • Fix persistence of cross-session deliveries to idle sessions (flush before ack,

or fail loudly to the sender instead of returning success).

  • Fix the wedged wake turn (idle session receiving a message spins ~10 min).
  • Consider fsyncing session JSONL before/after auto-update to prevent transcript loss.

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

lastest

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

PowerShell

Additional Information

_No response_

View original on GitHub ↗

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