[BUG] Remote Control: session archived without user action after phone messages silently fail to send
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/polland per-session heartbeats returned 200 withlease_extended=truebefore, during and after. - Child process:
CCRClient: Heartbeat sentevery 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
initializecontrol_request and got an answer within about 15 ms. Times: 21:46:35Z, 21:50:32Z and 21:52:59Z. - Phone messages: no
usermessage 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?
- Messages sent from the phone reach the session, or the app shows that the send failed.
- 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_sessionexits 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
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗