[BUG] Remote Control: session archived without user action after phone messages silently fail to send

Status Open
Reported on v2.1.282
Maintainer reply None cached
Activity 1 comment · opened Oct 3, 2026

What's wrong?

I run Remote Control in spawn mode (claude rc --spawn=same-dir) on Windows and drive it from the Claude iOS app. A spawned session about 21.5 hours old stopped working from the phone. Over about 7 minutes I opened it three times and typed messages, and none of them reached the PC. The phone showed no error. Three seconds after the third open, the server sent the child end_session with reason: "archived", and the session was gone. I did not archive it. Getting it back meant going to the PC in person, because the bridge never respawns a child that exits non-zero.

The PC side was healthy the whole time, according to the --debug-file logs:

  • rc server: work/poll and per-session heartbeats returned 200 with lease_extended=true before, during and after.
  • Child process: CCRClient: Heartbeat sent every 5 minutes. The SSE stream was open; its last reconnect was 21:27:40Z, and it succeeded.
  • Phone opens: each one reached the bridge as an initialize control_request and got an answer within about 15 ms. Times: 21:46:35Z, 21:50:32Z and 21:52:59Z.
  • Phone messages: no user message arrived at the child at any point in that window. Its log has nothing but heartbeats from 21:27:40Z to 21:52:59Z.

Child log (--debug-file, per-session):

2026-10-03T21:48:03.591Z [DEBUG] CCRClient: Heartbeat sent
2026-10-03T21:52:59.632Z [DEBUG] SSETransport: Event seq=282 ... event_type=control_request payload_type=control_request
2026-10-03T21:53:02.856Z [DEBUG] SSETransport: Event seq=285 ... event_type=control_request payload_type=control_request
2026-10-03T21:53:02.860Z [DEBUG] [print.ts] end_session received, reason=archived
2026-10-03T21:53:02.933Z [ERROR] CCRClient: Epoch mismatch (409, reason=session_not_active), shutting down

Bridge log:

2026-10-03T21:52:59.634Z [DEBUG] [bridge:ws] sessionId=[REDACTED] <<< {"request":{"promptSuggestions":true,"subtype":"initialize"}, ...}
2026-10-03T21:53:02.857Z [DEBUG] [bridge:ws] sessionId=[REDACTED] <<< {"request":{"reason":"archived","subtype":"end_session"}, ...}
2026-10-03T21:53:02.991Z [DEBUG] [bridge:session] sessionId=[REDACTED] failed exit_code=1 pid=35812
2026-10-03T21:53:02.995Z [ERROR] Bridge session failed: Process exited with error
2026-10-03T21:53:02.995Z [DEBUG] [bridge:session] Session failed, returning to idle (multi-session mode)

Control case: 51 minutes later I archived a different session on purpose from the app. It produced exactly the same sequence: initialize, then end_session reason=archived 5 seconds later, then exit 1 and "Bridge session failed". So nothing on the client side distinguishes the unwanted archive from a real one. Whatever issued it is on the app or server side.

What should happen?

  1. Messages sent from the phone reach the session, or the app shows that the send failed.
  2. A session is never archived unless the user archives it. If the server decides a session can't be served, the phone should say so rather than silently archiving it.

Related

  • #93801: mobile sends silently disappear. That's the same first half; this report adds PC-side logs showing the messages never reached the worker.
  • #87963: an app-initiated end_session exits the child with code 1, so the bridge labels it a failure.
  • #89183: Epoch mismatch (409, session_not_active) after an archive.

Environment

  • Claude Code 2.1.282, Windows 11 Pro (build 26200)
  • claude rc --spawn=same-dir --debug-file <path>, multi-session mode
  • Phone: Claude iOS app
  • Anthropic status page: no incident open at the time
  • Session: cse_01AGH7bi9t5S2dBrvgmFw8CD, 2026-10-03 21:46–21:53 UTC

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗