[BUG] Windows desktop: Remote Control not restored after app relaunch (silent update / restart), sessions show as archived on mobile
What's wrong
On the Windows desktop app (Code tab), Remote Control is not restored for existing sessions after the app relaunches. On the phone (Claude mobile app, Code), every session that was connected moves to Archive. Unarchiving one on the phone wakes it on the desktop and it then disappears from the phone's list until the link reconnects.
The only way to keep sessions visible on the phone is to manually revive each session on the desktop every few hours. The computer and the app stay on the whole time.
None of the archive settings are on:
- "Auto-archive sessions when their pull request closes" = Off
- "Archive inactive sessions" = Never
- "Connect new sessions to Remote Control" = On
Desktop side: zero sessions are archived. It is only the phone or claude.ai side that shows them as archived.
Root cause seen in the desktop log
Any app relaunch drops Remote Control for every session, and nothing re-enables it afterwards. The most frequent trigger is the silent auto-update, which happened on 25 Sep, 6 Oct and 7 Oct.
From %LOCALAPPDATA%\Claude\Logs\main.log (session ids redacted):
05:46:43 [stealth-update] Triggering stealth update after idle timeout
05:46:43 [CCD] Stopping 11 active session(s) on quit
05:46:46 [CCD] CLI exit before update: 11 of 11 exited within 2592ms
05:46:48 beforeQuitForUpdate handler fired, going down for update
05:46:57 [sessions-bridge] identity reevaluate: <none> -> <account>
05:47:01 [outbound-ccr] started
... no "Enabling remote control for session" line for any session ...
A Windows restart has the same effect:
09:59:42 Windows session ending (shutdown) - quitting the app
10:01:03 Starting app
10:01:07 [outbound-ccr] started
... nothing until the user wakes sessions from the phone ...
10:04:55 Enabling remote control for session <id-1>
10:05:00 Enabling remote control for session <id-2>
10:05:06 Enabling remote control for session <id-3>
Before the update, all of these sessions had Remote Control enabled. The previous afternoon's log shows "Remote control enabled" for each one.
A related line from the earlier day:
[warn] Cannot toggle remote control for <id>: no active query
So Remote Control can only come back once the session process is running again, and after a relaunch nothing starts it.
What should happen
Sessions that had Remote Control on before a quit for update or a restart should get their Remote Control links back after relaunch, without the user touching each session. At minimum, the remote side should not archive them. This looks like the desktop counterpart of the preserve-on-shutdown gap described in #92194 (which covers claude remote-control on macOS after a network give-up).
Steps to reproduce
- On the Windows desktop app, turn on "Connect new sessions to Remote Control" and open several Code sessions. Confirm they appear on the phone.
- Leave the app idle until a silent update runs (
[stealth-update] Triggering stealth update after idle timeout), or restart Windows. - Open the Claude app on the phone. The sessions are under Archive.
- On the desktop,
remoteControlStatefor those sessions isoffuntil each session is opened or woken.
Environment
- Claude desktop 2.26454.0, MSIX (Microsoft Store install), Windows 11 Pro 10.0.26200
- Claude Code CLI 2.1.289 (bundled)
- Phone: Claude mobile app
4 Comments
Update: why it happens every night
It happened again last night with the same pattern. Windows did not sleep or restart (no System events 42/107/1074/6006 overnight).
What the shipped bundle shows (2.26454.2)
6e5ms) once an update is staged andidleBlocker()returns null.idleBlocker()blocks only in three cases:"sessions active""window focused""window fullscreen"Workarounds and why they are not enough
autoUpdaterEnforcementHoursdefaults to 72, so the force-restart still happens within 3 days.disableAutoUpdatespolicy stops it, but it also stops security fixes.remoteControlStayReachabledoes not help. It only keeps the machine awake for rc-serve; it does not restore existing sessions.Suggested fix (either would solve it)
idleBlocker(), or let the user schedule when the stealth update may run.Another occurrence on Windows, with timestamps from
%LOCALAPPDATA%\Claude\Logs\main.log(2026-10-09 JST).Environment
Claude_2.31226.0.0_x64(version after the relaunch)Timeline
13:32:27the Code session finishes a turn and goes idle (Remote Control connected)13:42:27[stealth-update] Triggering stealth update after idle timeout→[CCD] Stopping 3 active session(s) on quit— Remote Control drops13:42:32–13:42:36after the relaunch:[CCD] Warming session <id>→warmed successfully in 3392ms. No Remote Control enable line at this point13:46:44only when the user sends a message locally:LocalSessions.sendMessage→Enabling remote control for session <id>→Remote control enabled→[remote-control] bridge_state: "connected"Expected
Sessions that had Remote Control on before the stealth-update relaunch (and sessions covered by the "On" default) should be reconnected when they are restored/warmed, without waiting for a local message. Otherwise a user controlling the session from the phone or claude.ai/code loses it and cannot get it back remotely. In this case Remote Control was off for about 4 minutes until someone typed on the PC.
Same behavior here, Windows 11, Claude desktop 2.31226.0. After the silent relaunch every Code session came back with Remote Control off, and they stayed that way until each one was opened or messaged on the desktop.
Excerpt from
%LOCALAPPDATA%\Claude\Logs\main.log(09 Oct 2026, local time):The same pair of lines appears in the same log on earlier days, with the number of stopped sessions in parentheses:
Before the relaunch one session had an explicit Remote Control bridge and the app logged "Skipping pause ... remote control is active" every 15 minutes, so the app knew the link was live, yet it still fired the update. This supports the
idleBlocker()point above: an active Remote Control link does not count as a reason to postpone the stealth update."Connect new sessions to Remote Control" is On in my settings and did not help, since the relaunched sessions are not new.
Another Windows occurrence on the current build, with the server-side state and a recovery that works without sending a turn.
Environment
Timeline (
%LOCALAPPDATA%\Claude\logs\main.log, JST, ids redacted)No
Enabling remote control for sessionline follows for any restored session.remote-control.logat the quit:quit: 0 attached session(s) queued for unarchive, 0 parked for the next launch.At 08:36 the Android app showed session A with a "session archived" notice in place of the message box (the app is in Chinese: 此会话已归档). On the desktop the session was not archived.
The same
[stealth-update]relaunch appears five times in nine days in this log: 02 Oct 17:00, 06 Oct 03:54, 07 Oct 11:22, 08 Oct 03:32 and 10 Oct 05:59 (1, 6, 4, 2 and 5 sessions stopped).Server-side state after the relaunch (session records, both tagged
remote-control-sdk)| Session |
session_status|connection_status|updated_at(UTC) ||---|---|---|---|
| A |
SESSION_STATUS_ARCHIVED|disconnected| 2026-10-09T20:59:12.738Z || B, stopped by the same quit |
SESSION_STATUS_PENDING|disconnected| 2026-10-09T20:59:12.791Z |20:59:12Z is 05:59:12 JST, the second the app logged
Stopping 5 active session(s) on quit. So the archive is written at quit time, but not for every session that the same quit stops.Recovery that worked on 2.31226.1 without sending a turn
For a session whose process has not started since the relaunch, the Remote Control switch is still refused, as reported in #95364:
Opening the session is enough to change that. No message is needed:
Start-Process "claude://claude.ai/epitaxy/local_<C>".set_remote_control).Session A, which had been opened in the sidebar after the relaunch, took the switch directly, and its server record went from
ARCHIVED/disconnectedback toSESSION_STATUS_IDLE/connectedunder the same session id.Both steps also worked from a session that was started from the phone on that computer, so the recovery can be done while away. It is still manual and one session at a time.
Expected
As in the original report: after a relaunch for an update, sessions that had Remote Control connected should get it back without anyone touching them, or the relaunch should wait while a Remote Control link is up. Warming a session and switching Remote Control on already restores the same claude.ai session, so doing that at launch for the sessions that were connected at quit would close the gap.