Desktop: finished same-machine scheduled-task sessions show permanent 'Remote Control disconnected' + blinking sidebar dot under 'Other' group
Summary
In the Claude desktop app (macOS, app-bundled Claude Code 2.1.258, macOS Darwin 27.0), every session created by a recurring scheduled task appears as its own row in the sidebar under an "Other" group (the group field is null). For finished one-shot runs, the sidebar dot blinks grey indefinitely, and opening the session shows:
"Remote Control disconnected — Claude Code on the computer running this session is offline… If Claude Code was closed, start it there again and reopen this conversation."
This happens even though the session ran entirely on the same machine, finished normally hours or days earlier, and its process exited cleanly. The banner and blinking persist across app restarts. With a 5-minute-cadence task this produces dozens of permanently-blinking rows per hour, making the sidebar unusable for finding anything else.
This looks related to #79057 (Remote Control disconnected on resuming a scheduled-task session from another machine) and #74875 (sidebar indicator pulsing gray while idle), but is distinct from both: it reproduces on the same machine that ran the task (no cross-machine resume involved), and it is specific to scheduled/recurring-task sessions rather than general idle sessions. Filing separately since neither existing report captures the "Other" grouping or the always-on remoteControlAutoEligible flag below; happy to have this merged if a maintainer judges it's the same root cause.
Measurements (macOS, local machine, 2026-09-03)
- App-side session records live at
~/Library/Application Support/Claude/claude-code-sessions/<workspace>/<org>/local_<id>.json. Of 771 records on this machine, 595 have ascheduledTaskId. Of those 595, 321 carry a non-emptybridgeSessionIdsarray while no local process exists for them. (For comparison, 111 of the 176 non-scheduled records also carry a non-emptybridgeSessionIds, so this isn't unique to scheduled tasks, but it's far more common among them.) - Scheduled-task records carry a field
remoteControlAutoEligible: true. Ordinary finished (non-scheduled) sessions do not have that field at all. - For one recurring task sampled in isolation: 43 of 45 records have a
bridgeSessionIdsentry, and 33 of 45 never recordedcompletedTurns.lastActivityAtequalscreatedAton 12 of them (i.e., the record never got a second timestamp despite the task having run). - The CLI-side session registry (
~/.claude/sessions) and theget_sessionAPI both reportisRunning: falsefor these sessions — i.e., by every other signal the run is finished, only the sidebar/bridge state disagrees. - Reproduce: create any scheduled/recurring task on a short cadence (I used 5 minutes), let it fire a handful of times, then look at the sidebar. Each fire is its own permanently-blinking "Other" row.
Hypothesis (unconfirmed, still under independent check on my end): scheduled-task sessions are auto-enrolled for Remote Control bridging (remoteControlAutoEligible: true), and the bridge id (bridgeSessionIds) is left on the record after the one-shot process exits. The app then renders the disconnected-bridge state for a session that never had — or no longer has — a bridge to reconnect to, rather than recognizing the process exited cleanly and rendering it as done/idle.
Additional data point requested by my own review
I tried to compare the state claude agents --all --json assigns to a couple of scheduled-task sessions versus a normal finished session, but the command is unavailable on this machine right now — the globally-installed claude CLI errors with "claude native binary not installed" (missing postinstall / optional native dependency), independent of this bug. Noting this so it's clear that data point isn't in this report, rather than silently omitted.
Asks
- A finished scheduled-task run should render as done/idle in the sidebar, not as a disconnected remote bridge, once the originating process has exited cleanly.
- An option to fold recurring-task runs into a single sidebar row (or group them under something like "Routines") instead of creating one permanent "Other" row per fire — a 5-minute cadence currently produces dozens of stuck rows per hour.
Environment
- Claude desktop app, macOS, app-bundled Claude Code 2.1.258
- macOS Darwin 27.0
3 Comments
Correction to the hypothesis in the original report (independent check completed after filing; symptom unchanged, proposed mechanism withdrawn).
remoteControlAutoEligibleis not the cause. The app's own policy gate readsremoteControlPolicyCovers(e){return !!e.remoteControlAutoEligible && !e.scheduledTaskId}, so the flag is inert for exactly the scheduled-task sessions this report is about. The flag is also set unconditionally on first turn, so it is a "first turn happened" marker, not an enrolment. Please disregard that part of the original text.bridgeSessionIdsis not a leaked/dangling value. The app reads it on session end/delete and issues a bridge delete ([LocalSessionManager] Requested CCR delete of N Remote Control bridge session(s)appears in main.log). It is a durable identifier the app keeps on purpose.claude_desktop_config.jsonhasccRemoteControlDefaultEnabled: true, and main.log shows[rcAutoEnable] verdict: enable=true source=explicit_prefon each run. That preference disagrees with~/.claude/settings.jsonremoteControlAtStartup: false; the desktop pref wins.app.asardoes not contain the string "Remote Control disconnected"; the nearest shipped caption is "Remote access ended. This session could not reconnect to the conversation it was started from…". Treat the quoted text as approximate.What survives, and is the actual report: finished one-shot scheduled-task sessions are reported as done by both of the app's read-side surfaces (
get_session→isRunning: false, isRemote: false;claude agents --jsondoes not list them at all), yet the sidebar renders them as a blinking/reconnecting remote session under "Other", persistently, with a Remote Control ended-style banner on open. That is a renderer / state-sync issue for sessions that have no live process and never will. The ask stands: render such sessions as idle, and give recurring-task runs a group of their own instead of one "Other" row per fire.Since the desktop app auto-updated (Windows 11, MSIX install, app 1.40609.1.0 -> 1.44121.2.0, bundled Claude Code CLI 2.1.255 -> 2.1.258), sessions spawned by the built-in scheduler ([CCDScheduledTasks]) are never connected to Remote Control. Interactive sessions started from the desktop still connect normally and show up in the mobile app.
Global setting "Connect new sessions to Remote Control" is enabled. Fully quitting and reopening the app did not change the behaviour.
Evidence from %LOCALAPPDATA%\Claude\Logs\main.log:
Before the update (2 Sept, every scheduled spawn):
2026-09-02 14:39:37 [CCDScheduledTasks] Spawning new session for scheduled task ticket-triage-incremental
2026-09-02 14:39:37 [rcAutoEnable] verdict: enable=true source=explicit_pref trigger=first_turn
2026-09-02 14:39:37 Enabling remote control for session local_e1c52813-...
2026-09-02 14:39:40 [remote-control] bridge_state: "connected"
After the update (3 Sept, every scheduled spawn, e.g. 08:31, 09:09, 10:39, 11:09, 12:39, 13:09, 14:40):
2026-09-03 14:40:13 [CCDScheduledTasks] Spawning new session for scheduled task ticket-triage-incremental
2026-09-03 14:40:14 Starting local session local_50d972a8-...
2026-09-03 14:40:15 Mapping internal session local_50d972a8-... to CLI session 7fc88f46-...
(no [rcAutoEnable] line, no "Enabling remote control", no bridge_state line)
Interactive session on the same build, same folder, minutes earlier:
2026-09-03 14:15:25 [rcAutoEnable] verdict: enable=true source=explicit_pref trigger=first_turn
2026-09-03 14:15:25 Enabling remote control for session local_d91b492a-...
2026-09-03 14:15:27 [remote-control] bridge_state: "connected"
Impact: PushNotification calls inside scheduled sessions now return "Mobile push not sent (Remote Control inactive)", so the scheduled workflows can no longer send decision cards to the phone, and the scheduled sessions do not appear in the mobile app's Remote Control list.
Expected: scheduled-task sessions should get the same rcAutoEnable evaluation as interactive sessions when the "Connect new sessions to Remote Control" preference is on, as they did on 1.40609 / CLI 2.1.255.
Confirming this reproduces on Windows too (this issue currently only has macOS evidence).
Environment: Windows 11, Claude Desktop, bundled CLI 2.1.260
A session created by one of my scheduled tasks (Routine) carries
remoteControlAutoEligible: truein its session record, even though the global "Connect new sessions to Remote Control" toggle had
already been off for some time when this session was created — every other local session created
that day from ~19:33 onward already correctly shows
remoteControlAutoEligible: false:For comparison, I checked every other local session record created in the same window
(interactive sessions and sub-agent/"spawn_task"-created sessions) — all of them correctly
reflect the toggle state at creation time (
falseafter it was turned off). Only thescheduled-task-created session is unconditionally
true, which matches the separate-code-pathroot cause already identified in this issue. Might be useful confirmation that the bug is scoped
specifically to scheduled-task/Routine session creation, not to session creation generally.
*(Edit: corrected an arithmetic error in the original timing claim — it said "off for ~40
minutes" when the gap is actually ~2h40m, and I don't have a precise timestamp for when the
toggle itself was flipped, only that it was already off by ~19:33 that day.)*