[Desktop] Auto-update relaunch drops all Remote Control sessions and they don't reconnect until opened locally
Summary
When the Claude Desktop app auto-updates and relaunches itself overnight, every Code tab session that had Remote Control connected goes offline, and none of them come back until I physically open each session on the machine. From claude.ai/code and the mobile app, all sessions look disconnected for hours, which defeats the purpose of checking on them remotely.
What happened
Timeline from ~/Library/Logs/Claude/main.log (local time, KST):
| Time | Event |
| --- | --- |
| up to 05:08 | [remote-control] bridge_state: "connected" for the running sessions |
| 04:31 | [updater] Update downloaded and ready to install { releaseName: 'Claude 2.26454.0' } |
| 05:25:14 | [stealth-relaunch] — app quits itself (onQuitCleanup handlers run, including pty-host-shutdown) |
| 05:25:27 | Starting app, [updater] Previous update install succeeded (2.19675.1 -> 2.26454.0) |
| 05:25:29 | [LocalSessionManager] Initialization succeeded — ... existingSessions=0 |
| 05:25 – ~10:00 | no Enabling remote control / bridge_state lines at all |
| ~10:00 | Remote Control comes back only after I opened the sessions by hand (4x Enabling remote control for session ... → connected) |
Expected
After an unattended update relaunch, sessions that had Remote Control connected before the relaunch should be reconnected automatically (or the relaunch should be deferred while Remote Control sessions are connected), so they stay reachable from other devices.
Actual
All Remote Control sessions stay offline after the relaunch until each one is opened locally. Nobody is at the machine at 05:25, so they stay offline until someone arrives.
Notes
remoteControlAtStartupistruein~/.claude/settings.json("Connect new sessions to Remote Control"). It doesn't help here, because no session process is started after the relaunch.- Not a sleep or network issue: the Mac is on AC power with system sleep disabled (
sleep 0), and has been up without reboot for 5+ days. - I did not check whether the sessions were mid-turn or idle at the moment of the relaunch.
- I could not find a user-facing setting to disable or schedule desktop auto-updates (docs mention MDM policy only), so there is no workaround inside the app.
Environment
- Claude Desktop for macOS, 2.19675.1 -> 2.26454.0 (auto-update)
- macOS (Darwin 27.0.0)
- Local Code tab sessions in git worktrees, Remote Control connected
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
Happened again the next night, on the following update (2.26454.0 → 2.26454.2). Same sequence, so this looks like it reproduces on every auto-update relaunch rather than being a one-off.
Timeline from
~/Library/Logs/Claude/main.log(KST, 2026-10-08):| Time | Event |
| --- | --- |
| 03:19:01 | last
[remote-control] bridge_state: "connected"|| 03:21:59 |
[updater] Found an update, downloading|| 03:22:17 |
[updater] Update downloaded and ready to install { releaseName: 'Claude 2.26454.2' }|| 03:32:47 |
[stealth-relaunch]— app quits itself || 03:32:56 |
[stealth-relaunch] Version changed since the last launch: loading the saved page instead of restoring history|| 03:32:59 – 03:33:09 | exactly one Code session is warmed (
[CCD] Warming session ...→warmed successfully) || 03:33 – 08:45+ | zero
Enabling remote controllines and zero[remote-control] bridge_statelines |Extra observations this time:
remoteControlAutoEligible: trueand abridgeSessionIdsentry in eachlocal_*.json). After the relaunch only two session processes exist on the machine: the one warmed at 03:33 and a scheduled-task run that started at 08:13. Every other session has no process, so nothing is holding its Remote Control connection.updated_at18:32:47Z, i.e. 03:32:47 KST). So from mobile / claude.ai/code they don't just show as disconnected — they drop out of the default list.pending/connection_status: disconnected, but the desktop app does not react to that (nothing inmain.log), and they stay disconnected. As far as I can tell there is no way to wake them remotely; the only recovery is opening each session by hand on the machine.[sessions-bridge]path does the right thing at startup (Reconnecting persisted session ...→reconnected successfullywithin 3 seconds of launch), so the gap seems specific to per-session Remote Control for Code tab sessions.Expected: after an update relaunch, sessions that had Remote Control connected are re-attached automatically (or at least woken when a remote client sends a message), the same way the persisted bridge session is.
Environment: macOS, Claude Desktop 2.26454.2, bundled Claude Code 2.1.293.
Same here on macOS, and it reproduces on every update relaunch — 4 of the last 4 days.
Environment: Claude desktop 2.31226.1 (Apple Silicon), bundled Claude Code 2.1.295, macOS 27.0. A Mac Studio used unattended via Remote Control from a MacBook / iPhone; 4 Code-tab sessions with
remoteControlUserEnabled: true.Relaunches (
[stealth-update] Triggering stealth update after idle timeout, KST): 10-07 04:50 (2.26454.0) · 10-08 03:01 (2.26454.2) · 10-09 13:12 (2.31226.0) · 10-10 05:16 (2.31226.1). After each one the app warms only the focused session and emits no[remote-control] bridge_stateline on its own:| relaunch | RC back | gap | what ended it |
|---|---|---|---|
| 10-09 13:12 | 15:26 | 2h14m | someone touched the app window on the Mac |
| 10-10 05:16 | 11:55 | 6h39m | sessions woken remotely — see below |
Two findings that may help narrow it down:
claude --remote-controlsession running in tmux on the same Mac is unaffected by the relaunch (it survived both 10-09 and 10-10). From it, sending a cross-session message to the one app session that was warmed, and having that session use the Code-tab session tools (send_message) to ping the other RC-enabled sessions, made each of them resume and produce a turn — and each reconnected within ~1 s of resuming:``
`11:55:52 Resuming session local_19e1…
11:55:54 [remote-control] bridge_state: "ready"
11:55:55 [remote-control] bridge_state: "connected" (×4 sessions by 11:55:57)
open -a Claude` / activating the window remotely does nothing.)So RC registration itself works; what is missing is only that the app does not resume RC-enabled sessions after the relaunch. (
Expected, as above: after a relaunch, resume (or at least wake on an incoming remote message) every non-archived session that had Remote Control enabled — the app already does the equivalent for the persisted
[sessions-bridge]session within 3 s of launch. Same symptom as the stale-closed #77871 (Windows).Follow-up with code evidence (desktop app 2.31226.1, macOS). Yesterday's stealth update (04:55 KST,
[stealth-update] Triggering stealth update after idle timeout) again relaunched the app with 4 sessions that had Remote Control on; none reconnected until a human sent each session a message 5.5 h later.Looking at
app.asar, the restore path already exists: on quit, sessions are taggedremoteControlLiveAtUpdateQuit, and on launchrestoreBridgesAtLaunch/restoreBridgeAfterUpdatere-enable RC with triggerlaunch_remote_control_restore(log line[CCD] Remote Control restore after update: …). In my logs that line has never appeared across 6 update relaunches (10-07 → 10-14); the only trigger ever logged iswarm_send. The quit-side tagging is gated (eP()→ flag ids3106428025+3188054034), so I assume the feature is dark for my account. Could it be enabled, or at least the gate surfaced? Happy to test a build or share logs.