← All guides
ai-toolsautomationreality-check

How to Run Claude Code From Your Phone: Four Official Paths and the Conditions That Break Every One of Them

Can you run Claude Code from your phone? Yes, and Anthropic now ships four ways to do it. Each one refuses to start under a specific condition: an API key instead of a subscription, Bedrock, a proxy in ANTHROPIC_BASE_URL, zero data retention. That gap is where third-party chat bridges like zarazhangrui/lark-coding-agent-bridge and chenhg5/cc-connect still live. What each option requires, and what you hand over when you put a coding agent in a chat window.

2026-07-27 · 13 min read
How to Run Claude Code From Your Phone: Four Official Paths and the Conditions That Break Every One of Them

For most of the past year, running Claude Code from your phone meant SSH into your own machine and squinting at a terminal emulator, or installing something a stranger wrote. Both worked. Neither was pleasant.

That changed quietly. Anthropic now ships four separate mechanisms for driving a coding agent when you are not at your desk. What makes them worth reading closely is that each one has a precise condition under which it refuses to start, and those conditions catch a lot of people. If you pay with an API key rather than a subscription, if your company routes traffic through an LLM gateway, if you are on Bedrock, or if your org runs zero data retention, the official path is closed to you and the error message will say so.

This is a map of all of it: what each option does, what it needs, and where the third-party bridges still earn their keep.

The short answer

Yes, you can run Claude Code from your phone. Five things now do it, and they differ in what starts the work and where the code actually executes.

PathYou trigger it byClaude runs onSetup
Remote ControlDriving a live session from claude.ai/code or the Claude appYour machineclaude remote-control
DispatchMessaging a task from the Claude mobile appYour machine, via DesktopPair the app with Desktop
ChannelsSending a message in Telegram, Discord, or iMessageYour machineInstall a channel plugin
Claude Code on the webKicking off a task in a browserAnthropic's cloudConnect a repo
Claude in SlackMentioning @Claude in a channelAnthropic's cloudInstall the Slack app

The split that matters is the third column. Remote Control, Dispatch, and channels keep execution and filesystem access on your own machine, and the phone is a window into that. The web and Slack run somewhere else on a clone of your repo. If you need your local environment, your MCP servers, and the uncommitted mess in your working tree, only the first three will do.

Remote Control is the one most people mean

Remote Control connects claude.ai/code, or the Claude app for iOS and Android, to a session running on your machine. Start a task at your desk, pick it up on your phone. Three ways in:

# server mode: stays running, waits for connections
claude remote-control

# a normal interactive session that is also reachable remotely
claude --remote-control

# from inside a session you already started
/remote-control

Server mode prints a session URL, and pressing spacebar renders a QR code in the terminal you can scan straight into the Claude app. If you do not have the app yet, /mobile shows a download QR. To make every session reachable without thinking about it, run /config and set Enable Remote Control for all sessions.

What you get is genuinely your local environment. Typing @ autocompletes file paths from the real project. Your MCP servers stay connected. Attachments you send from the phone get downloaded to your machine and passed to Claude as file references. Push notifications land when a long task finishes or when Claude needs a decision, and you can ask for one in the prompt: notify me when the tests finish. There is a nice touch where a turn running long enough surfaces a Still working notice with a Check in from your phone link, so the URL finds you rather than the other way around.

Connection security is better than the feature sounds. Your machine makes outbound HTTPS only and never opens an inbound port. Traffic goes through the Anthropic API over TLS with short-lived, single-purpose credentials.

One thing to know before you rely on it: while Remote Control is connected, the session transcript is stored on Anthropic servers. That is what keeps the conversation in sync across devices and lets it survive a network drop. Execution stays local; the conversation does not.

Where Remote Control stops working

This is the part that sends people looking for alternatives, so here it is in full.

How you pay decides whether you get in at all. Pro, Max, Team, and Enterprise work. API keys do not. A long-lived token from claude setup-token or CLAUDE_CODE_OAUTH_TOKEN fails too, because those can only make model requests, and the error you get back says it needs a full-scope login token. You sign in through claude.ai or you go without.

Where your API traffic goes matters just as much. Remote Control is unavailable on Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry. Since v2.1.196 it also shuts off when ANTHROPIC_BASE_URL points anywhere other than api.anthropic.com, which rules out an LLM gateway or a corporate proxy even when you sign in with claude.ai. Unset the variable and restart, or lose the feature.

Then there is your org's data policy. Companies running zero data retention cannot turn it on: the admin toggle is greyed out and the documentation sends you to support rather than a setting. On Team and Enterprise it stays off until an Owner enables it, and an IT admin can disable it per device with disableRemoteControl in managed settings.

The local process has to stay alive through all of it. Close the terminal, quit VS Code, or kill the claude process and the session ends with it. If your machine is awake but cannot reach the network for more than roughly ten minutes, the session times out and the process exits.

A few things never leave the terminal. /plugin and /resume are local only. /model and /effort work from the phone but need the value passed as an argument, since there is no picker to tap. Starting an ultraplan session disconnects Remote Control, because both features want the claude.ai/code interface and only one can have it.

It is also a research preview, which is worth holding in mind before you build a habit on top of it.

Dispatch, when you want to throw a task over the wall

Remote Control assumes you have a session running. Dispatch works the other direction: you message a task from the Claude mobile app and it can spawn a Desktop session on your machine to handle it. You pair the app with Desktop once, and after that the work starts from your phone instead of being picked up from it. There is less to set up and less to steer, which is the right shape when you think of something on a walk and want it waiting when you get home.

Channels: the official chat bridge

This is the one that surprised me, because it is the thing the third-party bridges were built to do. A channel is an MCP server that pushes events into your running session. Telegram, Discord, and iMessage ship as official plugins in the research preview.

/plugin install telegram@claude-plugins-official
/telegram:configure <token from BotFather>
# restart with the channel enabled
claude --channels plugin:telegram@claude-plugins-official

Then message your bot, get a pairing code, run /telegram:access pair <code>, and lock it down with /telegram:access policy allowlist. The iMessage plugin skips tokens entirely: it reads ~/Library/Messages/chat.db directly and replies through AppleScript, so it needs Full Disk Access and macOS, and texting yourself bypasses the access gate with no setup at all. All of the plugins need Bun installed.

Channels are two-way, so the answer comes back in the same chat while the work runs on your machine against your real files. They also take webhooks, which is the underrated use: a CI failure or an error-tracker alert arrives in the session where Claude already has your files open and remembers what you were debugging.

Two limits to plan around. The plugins are Bun scripts and only run from an Anthropic-maintained allowlist during the preview. And events only arrive while the session is open, so an always-on setup means running Claude in a background process or a persistent terminal.

Then there is the permission problem, which deserves its own paragraph.

What happens when Claude needs your approval

If Claude hits a permission prompt while you are away from the terminal, the session pauses until you answer. Every remote setup runs into this, and each option handles it differently.

Remote Control shows the prompt on your phone, and after several of them in one session it surfaces an Approve tool calls from your phone notice with the session URL. Channels can forward prompts if the server declares the permission relay capability. For unattended runs, --dangerously-skip-permissions bypasses most checks, and the docs are blunt that this belongs only in environments you trust.

Here is the sentence from the channels documentation that I would print out before wiring any of this up:

Anyone who can reply through the channel can approve or deny tool use in your session, so only allowlist senders you trust with that authority.

What you are installing is remote code execution on your workstation, authorized by whoever controls a messenger account. That trade is fine when the account is yours and the allowlist has one entry on it. It gets a lot less fine once the bot is sitting in a team group chat.

What is left for third-party bridges

After all that, four situations still have no official answer, and they are common ones.

You are not on Claude at all, or not only on Claude. You use a messenger Anthropic does not support, which in practice means anything popular in China, Japan, or Korea. You pay with an API key or route through a gateway. Or you want several agents, several projects, and several chats running as separate background services.

That is the gap the bridges fill. Here is what is actually in it.

zarazhangrui/lark-coding-agent-bridge has 2.0k stars, TypeScript, MIT licensed. It bridges Feishu and Lark to a local Claude Code or Codex CLI. Install it globally, run lark-channel-bridge run, scan a QR code to bind a Feishu PersonalAgent app, and you are talking to your local agent from chat. Text and tool calls stream onto a single Lark card in real time. Each chat, topic, or document comment thread keeps its own session. The slash commands cover most of what you would otherwise SSH in for: /cd to switch project, /ws save and /ws use for named workspaces, /new to reset, /status, /resume. It installs a proper background service through launchd on macOS, systemd on Linux, or Task Scheduler on Windows, and profiles let you run Claude and Codex as two separate bots. It needs Node 20.12 or later. Search traffic for it spiked in the third week of July 2026, which is how it ended up in this article.

chenhg5/cc-connect has 14.4k stars and is written in Go. It covers far more ground: Feishu, DingTalk, Slack, Telegram, Discord, LINE, and WeChat Work on the messenger side, plus Claude Code, Cursor, Gemini CLI, and Codex on the agent side. It is also the popular choice here by a factor of seven. Check one thing before you deploy it, though: the repo has no license file, which under default copyright means all rights reserved no matter what the star count suggests. It currently carries 514 open issues against 1.4k forks.

grinev/opencode-telegram-bot has 962 stars, TypeScript, MIT. It is deliberately narrower, running OpenCode from Telegram with scheduled task support and everything else local. Worth a look if OpenCode is your agent and the official Telegram plugin does not reach you.

nanocoai/nanoclaw has 30.4k stars, TypeScript, MIT, and solves a slightly different problem. It runs agents in containers for isolation and connects to WhatsApp, Telegram, Slack, Discord, and Gmail, with memory and scheduled jobs. The container boundary is the whole argument for it, and it is a decent one.

amplifthq/opentag has 1.4k stars, TypeScript, MIT, and is shaped for teams rather than phones: @agent mentions in Slack and GitHub, routed to Codex or Claude Code, with results returned in the thread. It is the closest open alternative to Claude in Slack.

Picking one

If you pay for Pro or Max, talk to api.anthropic.com directly, and want to steer work in progress, use Remote Control. It is the least code, it keeps your files local, and it is the one Anthropic will keep improving.

If you want to hand off a task and walk away, use Dispatch. If you want your agent to react to things, chat messages, CI results, alerts, while a session sits open, use channels.

If any of the four blockers applies to you, or your team lives in Feishu or WeChat Work, a bridge is the honest answer. Read the license before you install it, put exactly one ID on the allowlist, and think twice before you turn permission checks off.

The phone stopped being the hard part somewhere in the last six months. What you are actually deciding now is how much of your machine a chat window gets to reach, and who else can reach it.

FAQ

Can you run Claude Code from your phone? Yes. Remote Control connects the Claude iOS or Android app to a session running on your computer, so the agent works against your real files while you drive it from the phone. Claude Code on the web is the alternative when you would rather not have a machine running at all.

How do I run Claude Code from my phone without a subscription? Remote Control will not do it. API keys are unsupported, and so are long-lived tokens from claude setup-token. Channels are the workaround, since those accept either claude.ai authentication or a Console API key.

Does Claude actually run code on my phone? No, and none of these options do. Execution and filesystem access stay on your machine or in Anthropic's cloud. The phone is an interface.

Can I run Claude Code in the background? Yes. claude remote-control in server mode stays running and waits for connections, and third-party bridges install OS-managed services with launchd, systemd, or Task Scheduler. Note that channels only deliver events while a session is open, so background operation is a requirement there rather than a bonus.

Can I run Claude Code remotely from the command line? SSH still works and always did. Remote Control is the better answer when you want the phone UI, push notifications, and the ability to approve a permission prompt with one tap instead of finding a terminal.