
Run Claude Code From Your Phone: The 2026 Remote Setup
May 30, 2026
You can run Claude Code from your phone two ways in 2026: the official Claude Code remote control feature, which links your local session to the Claude mobile app with zero networking setup, or a DIY stack that puts SSH or mosh into a tmux session over Tailscale. The official route is fastest to set up. The DIY route wins for API-key users, other agents, and runs that go all night.
The fast path: Claude Code from your phone via Remote Control#
Anthropic shipped Remote Control as a research preview in February 2026. It runs on your local machine and makes only outbound HTTPS calls. No inbound ports, no port forwarding, no VPN.
Start it cold with claude remote-control. That prints a session URL, and pressing spacebar shows a QR code you scan with the Claude app.
Already running a session? Type /remote-control (alias /rc) to hand off your current history to your phone, no restart needed.
# Start a fresh remotely-controllable session
claude remote-control
# Or hand off an existing session from inside Claude Code
/rc
The limits matter, so read them before you rely on it. The requirements are specific and the plan gating is strict. Miss the version floor and the command will not even show up.
- Needs Claude Code v2.1.51 or newer. Mobile push notifications need v2.1.110+.
- Pro, Max, Team, and Enterprise plans only. API keys are not supported.
- On Team and Enterprise it ships off by default, so an admin enables it.
- It reconnects after brief network drops. But the session dies after roughly 10 minutes unreachable.
Full details live in the Remote Control docs. For most subscribers this is the whole answer. If you pay with an API key, keep reading.
The DIY stack: SSH, tmux, and Tailscale#
This is the classic setup, and it works on any plan including API keys. It also drives other agents, not just Claude Code, since you are just attaching to a real terminal.
Tailscale builds a WireGuard mesh between your devices. That lets your phone reach a home box stuck behind NAT or CGNAT with no port forwarding at all. tmux keeps claude alive when your SSH connection drops.
# 1. On BOTH the home box and the phone client, join the mesh
tailscale up
# 2. On the home box: start a persistent session and run Claude
tmux new -s claude
claude
# detach without killing it: press Ctrl-b, then d
# 3. From your phone: SSH in over the Tailscale network
ssh user@homebox # or the MagicDNS name, e.g. ssh [email protected]
# 4. Reattach to the running session
tmux attach -t claude
That sequence is the whole game. Detach on the home box, attach from your phone, and claude never knew the difference. It is the most durable way to run Claude Code from your phone.
Stuck behind carrier-grade NAT with no public IP? Tailscale routes around it, which is exactly why I lean on it for home servers.
I walk through the same CGNAT problem in my post on hosting a game server with Claude Code. A fuller mobile walkthrough lives in this Termux and Tailscale guide.
Why your run dies when the phone locks#
This is the pain point everyone hits. Your agent is halfway through a refactor, you lock your phone, and the run is gone. There are three distinct failure layers, and each one needs a different tool.
Three layers that kill a mobile run
- SSH connection dropped. The process itself survives because
tmuxholds it. You reattach and it is still running. - Network roamed, phone slept, or packets lost. Plain SSH gives up. mosh uses UDP and survives IP changes, so swapping WiFi for cellular does not kill the link.
- Android killed the process. Termux needs
termux-wake-lockplus a battery-optimization exemption. Android 12+ also has a phantom process killer that reaps background processes.
Warning: The phantom process killer is disabled via an ADB device-config command, but the exact setting key varies by Android version. Verify the correct key for your version before running it. See the Termux issue thread for current details.
Picking a phone SSH client#
Your client choice decides whether mosh and a usable keyboard are even on the table. Here is how the three I actually use compare.
- Termius is cross-platform and polished. But sync, port forwarding, and SFTP sit behind the Pro tier.
- Blink Shell is iOS only, a one-time purchase, and open source. It has the fastest renderer and first-class mosh support.
- Termux is Android only and gives you a full Linux userspace with its own package manager. You install
opensshandmoshstraight frompkg.
On iOS I reach for Blink every time, mostly for the mosh integration and the extra keyboard row. On Android, Termux is less an SSH client and more a pocket Linux box, which is why it pairs so well with Tailscale for SSH from your phone.
Approving prompts and other mobile gotchas#
Running Claude Code on mobile surfaces friction you never feel on a laptop. The worst offender is permission prompts on a tiny screen.
There is an open Claude Code issue where the mobile app prompts for every edit and bash command, even when you set skip-permissions locally. Tapping approve fifty times on a phone is its own punishment. Narrow terminal width, mobile keyboards, and copy-paste all add their own papercuts.
Notifications soften the wait on long runs. The official path supports prompts like "notify me when the tests finish" and needs v2.1.110+. The DIY path uses ntfy to push a phone alert the second a long job exits.
# DIY push: ping your phone when a long run finishes
claude -p "run the full test suite and fix failures"; \
curl -d "Claude run finished" ntfy.sh/my-private-topic
Security: a local session becomes a remote console#
Driving Claude Code from your phone widens your attack surface in real ways. A local-only session is now reachable from outside your house. Three risks deserve attention.
- Stolen session tokens. A lost or compromised phone hands an attacker your live agent session.
- Malicious-repo config attacks. A cloned repo can override
ANTHROPIC_BASE_URLand route your traffic somewhere hostile. I cover this in every Claude Code environment variable that matters. - Sandboxing is off by default. The agent can touch your whole filesystem unless you turn the sandbox on.
Lock down your Tailscale ACLs so only your devices can reach the box. Enable the sandbox so a bad command cannot wander your disk. Never expose a raw terminal to the public internet without auth in front.
Note: If you front a browser terminal like ttyd with Tailscale Funnel, put real authentication ahead of it. An unauthenticated shell on a public URL is a root console for anyone who finds it.
To pull it together: on Pro or Max, run claude remote-control, scan the QR, and you are done in a minute. On an API key or driving other agents, build the Tailscale plus tmux session stack and add mosh for flaky links. Then lock your ACLs and turn the sandbox on before you trust it overnight.
Either path lands in the same place: running Claude Code from your phone, kicking off real work and approving the next step from the couch, the train, or a beach two time zones from your desk.
Frequently asked questions