[FEATURE] Remote Control: manual Reconnect / Disconnect controls on the session row (Desktop and mobile apps)
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Remote Control connection state is currently entirely implicit and the user has no control over the behavior. Automatic connection management is difficult to make fool-proof and there are a lot of corner cases that leads to a many bugs or consequences a user doesn't expect or desire.
Note that this feature request is for the desktop and mobile GUI apps - not for CLI (which is the only thing #78784 covers).
There's no good way to reconnect or resume an existing session in the mobile app once a session is marked as Disconnected on mobile. At least if you're away and don't have access to the desktop (even though the Claude desktop app is running on the desktop).
The problem is exacerbated when the sessions are local projects, not cloud projects. The user can't even create a new session for local projects in the mobile app - the "+ New session" button only works for cloud projects. The only way to continue working in the mobile app is to continue an existing session, making the new feature to reconnect to existing sessions when they're marked Disconnected on mobile critical.
A Desktop Code session's bridge is armed by a predicate the user cannot see or invoke, and it is never torn down deliberately — only by the hosting process dying. When the state ends up wrong, the only recovery is physical access to the machine.
This produces a family of dead ends that no amount of fixing the automatic behavior eliminates, because each one leaves the user with a session in a known-bad state and no control to act on it: a resumed session that never re-arms (#82140, #78730, #78564), registration lost to /clear (#82462), a bridge dead after transport loss with no recovery (#34255, #79388, #81109), a row reporting Connected against a dead process (#80100), and rows that cannot be dismissed individually (#83193, #83378).
Scope: this is a Desktop app and mobile app request. It does not touch the Claude Code CLI. The CLI already exposes /remote-control for arming; #78784 covers the non-interactive CLI equivalents. The gap is that neither GUI surface exposes the same authority, and the mobile app — the surface where the failure is observed — has none.
Proposed Solution
Add Reconnect and Disconnect as user options to the per-session context menu: long-press on the session row in the mobile app's Code tab, and the … menu on the session in the Desktop app's Code sidebar.
Reconnect rebinds the existing remote session rather than minting a new one, so the row flips from Disconnected to Connected, in place, with its history intact and bridgeSessionIds does not grow (see the suggested fix in #83378, and #81299 for the same requirement stated as supersession).
Disconnect tears down the transport and marks the row Disconnected in both the mobile and desktop app. The local session remains running unbridged and is now available in the session list to be reconnected later, if desired.
NOTES:
- Reconnect requires the hosting process to be alive but unbridged. When the process is gone, the control should be disabled with a reason shown rather than silently failing.
- Reconnect from mobile is the case that carries the feature. Reconnect on Desktop is a convenience over typing /remote-control; Reconnect on the phone is the only path that does not require walking back to the machine.
Alternative Solutions
- Fixing the arming predicate (#82140) removes one trigger but leaves every other bad state unrecoverable from mobile.
- Machine-level or always-on Remote Control (#77985, #48949, #76070) changes the persistence model. That is a larger, orthogonal change, and even with it a user still needs a way to deliberately drop a connection.
- #78784 requests --status/--disconnect/--reconnect on the CLI. Same verbs, different surface; it does not help when the phone is the only device at hand.
Priority
High - Significant impact on productivity
Feature Category
Other
Use Case Example
- Three named Desktop Code sessions, one per project, Remote Control on by default, all Connected on the phone.
- The Desktop app relaunches (update, reboot, crash). All three go Disconnected on the phone.
- Away from the machine, I open the mobile Code tab, long-press each session, and tap Reconnect. Each returns to Connected on its existing row with history intact.
- Later, finishing a project, I long-press its row and tap Disconnect. The session is now marked Disconnected and remains in the session list.
Additional Context
Interaction with existing bugs: Reconnect shares its server-side operation with the fix proposed in #83378 and the supersession behavior in #81299, so implementing it likely resolves both. A working Disconnect makes the toggle-off failures in #78336 and #78482 recoverable from the UI rather than requiring a session restart.