Remote Control (/remote-control) disconnects frequently
Status Open
Reported on v2.1.72
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 14 comments · opened Mar 11, 2026
Description
The /remote-control feature disconnects frequently and automatically without any user action. The session drops every few minutes and needs to be restarted manually.
Environment
- Claude Code version: 2.1.72
- OS: macOS Darwin 25.3.0 (Apple Silicon)
- Location: Egypt
- ISP: Egyptian ISP (WE/Orange)
- Shell: zsh
What I tried (none of these helped)
- TCP keepalive — set
net.inet.tcp.keepidle=15000,keepintvl=5000,always_keepalive=1 - DNS — changed to Cloudflare (1.1.1.1) + Google (8.8.8.8)
- Background HTTPS pings to api.anthropic.com every 20s to keep the network path alive
- VPN (Mullvad) — connected to Sweden server, still disconnects
- Mac sleep is disabled —
caffeinateis running,sleep 0
Since VPN didn't fix it, the issue is not network/ISP related. The disconnection appears to be in the remote-control feature itself.
Steps to reproduce
- Start a Claude Code session
- Run
/remote-control - Connect from claude.ai/code or phone
- Wait a few minutes — connection drops automatically
Expected behavior
Remote control session should stay connected as long as the terminal is open and network is available.
🤖 Generated with Claude Code
14 Comments
I can confirm this bug and provide evidence that the disconnection is definitively server-side.
Environment
| | Device A (RPi 500) | Device B (WSL2) |
|---|---|---|
| Hardware | Raspberry Pi 500 | Windows PC (WSL2) |
| OS | Debian GNU/Linux 12 (bookworm), aarch64 | Ubuntu 22.04.5 LTS, x86_64 |
| Kernel |
6.12.62+rpt-rpi-2712|6.6.87.2-microsoft-standard-WSL2|| tmux | 3.3a | 3.2a |
| Install |
curl -fsSL https://claude.ai/install.sh \| bash| same || Network | Independent (different physical location) | Independent (different physical location) |
Key Evidence: Simultaneous Drop Across Two Independent Networks
Both devices dropped within ~45 seconds of each other, despite different session ages and completely separate networks in different physical locations.
WSL2 (session age ~20min):
RPi 500 (session age ~10min):
A per-session timeout would drop them 10 minutes apart — not simultaneously. This points to a server-side event (restart, cleanup job, deployment) around
11:51–11:52 UTC+8.Additional Observations
https://claude.ai/code/session_{id}redirects tohttps://claude.ai/code/familywhile the CLI still shows "Connected", sometimes for 10+ minutesclaude(local, no remote-control) on the same machine and network runs stably for 12+ hours — confirming the issue is specific toremote-controlThis confirms your finding that the issue is not network/ISP related. The server is terminating environments unexpectedly.
same here. remote-control drops
+1 — experiencing the same on macOS Darwin 25.3.0 (ARM64) with Claude iOS app.
Specifics from our case:
Additional issue: We also hit API 400 errors after context compaction drops
media_typefrom base64 images (#36554). When that happens, the remote control sees the API failure as a connection issue and enters the reconnect loop permanently — it can never recover because every API call returns 400.Workaround: Running Claude Code in tmux and using
claude --continueafter drops.Same here. /remote-control shows “connected” and it previously worked perfectly. Right now, not even the web URL shows any updates, nor does the Claude iOS App. When it does work, it often drops—especially as chats get larger. I have to close the connection (on my PC) and reconnect before I can see updates again, and even that workaround isn’t working anymore.
I'm seeing the same thing on Ubuntu 24.04 and 25.10
The server side of /remote-control seems quite unstable, making the feature useless. Maybe a persistent server-side service needs more careful supervision?
Every time I try to use it, it fails, and when I return to the local session, it's "Remote Control reconnecting..." forever.
2.1.81 (Claude Code) on macOS 26.3.1
It does connect in my case, however I dont get the latest state on other devices, Claude Code crafted an issue report for me:
Summary
Remote Control fails to sync the latest conversation state to connected clients (both mobile app and Claude Desktop). Both clients show a stale state from an earlier point in the conversation, despite the main CLI session being further ahead.
Environment
setup-coding-team-projectSteps to Reproduce
Expected Behavior
Actual Behavior
Reading (partial failure)
Writing (complete failure)
Screenshots
Three screenshots from the Android mobile app are available:
Hypothesis
The sync failure appears to correlate with a large agent task completion:
Impact
Workaround
None identified. The only option is to continue using the CLI directly.
!Image
!Image
!Image
Tonight, on version
2.1.112 (Claude Code), I'm seeing Remote Control disconnect after a minute or less. I can have a CCCLI session open in Terminal and in the iOS Claude app, type something in the Terminal, see the session become active in the iOS app, and then it disappears from the iOS app after just a few seconds.I have done the usual troubleshooting: made sure everything is up to date, logged out and back in from both CCCLI and the iOS app. It does work briefly -- very briefly -- and then just disconnects.
~I often see the same result as @theonlyquics. One thing I noticed the last time it happened to me is that my session was in plan mode and had several subagents running. One of the subagents needed permission but the mobile UI did not show a permissions prompt, it just continued to show the "subagents working" state. I eventually stopped the task on my mobile device and asked if claude was stuck. There was no response from Claude but the mobile UI continued to show its "working on it" state. Once I returned to the CLI, I could see the permissions prompt and after giving permission, Claude then saw my "are you still working" message and responded the he was. At that point the mobile app began showing me the latest state again. At this point I'm back on my local network so I don't know if the issue was a network connection issue or a bug with the UI failing to show subagent permission requests.~
This just happened to me while I was on my home network so my issue is not a connection issue. It seems to be a "mobile app doesn't show permission prompt sometimes" issue.
The recent comments make this look like more than a simple websocket drop.
It may help to separate three states in the report:
Those can fail independently. A session can still be running locally while the mobile client is stale, or the transport can reconnect while a terminal-local permission prompt remains invisible to the remote surface.
For repro evidence, I would try to capture the exact transition where mobile goes stale: last message visible on mobile, local CLI state at the same time, whether the host is waiting on a prompt/subagent/tool, and whether a fresh text input from mobile reaches the local terminal. That would distinguish "connection dropped" from "state stream alive but blocked prompt not represented remotely".
For people seeing this during Plan mode or subagents: does the mobile UI ever show the concrete pending prompt/tool identity, or only a generic working/disconnected state?
Some time ago I switched to using the discord plugin, which has been infinitely more reliable. However, I can tell you that, for me, I would start a session at home, have some back and forth, then leave home and have a few more messages back and forth, and then I'd send a message and get no response at all. When I would return home, I would see that the cli client never received my last message, and there would be a status message "remote control reconnecting...".
The discord plugin doesn't have that problem, so now, neither do I.
In my case, it was not an issue of provoking permissions prompts or anything like that.
Thanks, that is a useful distinction. Your case narrows it to remote-to-host ingress failing: the local CLI never received the last mobile message, while the host-side UI was stuck at "remote control reconnecting...".
That is different from the invisible permission-prompt case. It suggests the report should track whether a mobile input is merely accepted by the remote surface or actually delivered to the host CLI/session.
I am having similar issues.
Adding a feature-level framing that goes a step beyond "the drops are a bug": a remote-control session should be persistent by design — alive until the user explicitly ends it — and, when a drop is unavoidable, recoverable entirely from the controlling device, without ever needing physical access to the controlled machine.
The reason the distinction matters is that the impact scales sharply with distance from the controlled machine:
Requested behavior:
Use case in one line: leaving a long-running session under remote control and travelling for weeks — checking in from a phone — is exactly the workflow this feature promises, and the periodic silent drop plus physical-access-only recovery is what currently defeats it.