Claude Code on iPhone approve, answer and steer it from your phone

Claude Code runs on your computer, not your phone. You can still watch it, answer its questions and approve its commands from an iPhone. Here is every way to do that, what each one needs, and where each one falls short.

Last updated: · Cadence Labs

Short answer

Use Anthropic's Remote Control. In your project folder, run claude --remote-control, or type /rc in a session that is already open. Then open the Claude app on your iPhone, tap Code and pick the session. You can send messages and answer permission prompts from there. Your computer still does the work, so it has to stay on with Claude Code running. It needs a Pro, Max, Team or Enterprise plan.

What you can do with Claude Code from a phone

There is no Claude Code that runs on iOS. It runs on your Mac, a Linux server or a cloud machine, and the phone connects to it. From the phone you usually want one of three things:

Option 1: Remote Control in the Claude app

Remote Control is Anthropic's own way to drive a local Claude Code session from the Claude app or from claude.ai/code. Claude keeps running on your machine with your files, tools and MCP servers; the phone is a window into that session. See Anthropic's Remote Control and Claude Code on mobile.

What you need

Set it up

  1. Start a session with Remote Control on, in your project folder:
    cd ~/Developer/my-app
    claude --remote-control "my-app"
    In a session that is already running, type /remote-control (or /rc) instead. It keeps the conversation so far.
  2. On your iPhone, open the Claude app, tap Code and pick the session. Or run /remote-control again in the terminal to show a QR code and scan it.
  3. Turn on pushes: run /config and enable Push when actions required for permission prompts and questions, and Push when Claude decides for finished tasks.

Server mode, claude remote-control without the dashes, serves several sessions from one terminal and shows a QR code when you press the space bar. Enable Remote Control for all sessions in /config makes every interactive session reachable.

From the phone you can send messages, answer permission prompts and questions (they stay open until you do), attach photos and files, and see a diff of your changes. Some commands, such as /plugin and /resume, only work in the terminal, and Bypass permissions mode is not offered.

The trade-offs

If your computer will be off, use Anthropic's cloud sessions instead: from the same Code tab, pick a GitHub repository and branch and describe the task, and it runs on Anthropic's infrastructure.

Using Codex too? OpenAI's equivalent pairs the ChatGPT phone app with the ChatGPT desktop app on your Mac or PC: Settings → Connections → Control this Mac or PC, then scan the QR code. You can start and steer Codex tasks and approve commands. Setup starts in the desktop app, not the Codex CLI. See OpenAI's remote connections docs.

Option 2: push alerts with a hook

If you mainly want to know when to walk back to your desk, a Claude Code hook can send a push to your phone. It works on any plan, including API keys, and on any machine with curl. It is one-way: you still answer at the keyboard or over SSH.

With ntfy

ntfy is free and needs no account. Install the ntfy app on your iPhone and subscribe to a topic name that is hard to guess, because anyone who knows the topic can read it. openssl rand -hex 12 makes a good one. Save this as ~/.claude/hooks/phone.sh and run chmod +x on it. It needs jq.

#!/bin/sh
# Push Claude Code events to your phone with ntfy.
topic="claude-3f9a1c7e5b2d04a8"   # your own topic
input=$(cat)
msg=$(printf '%s' "$input" | jq -r '.message // "Finished"')
dir=$(basename "$(printf '%s' "$input" | jq -r '.cwd // "."')")
curl -s -H "Title: Claude Code: $dir" -d "$msg" "https://ntfy.sh/$topic" >/dev/null

Register it in ~/.claude/settings.json for the Notification event, which fires on permission requests and idle prompts, and the Stop event, which fires when Claude finishes:

{
  "hooks": {
    "Notification": [
      { "matcher": "", "hooks": [ { "type": "command", "command": "~/.claude/hooks/phone.sh" } ] }
    ],
    "Stop": [
      { "matcher": "", "hooks": [ { "type": "command", "command": "~/.claude/hooks/phone.sh" } ] }
    ]
  }
}

Start a new session so the hooks load. For pushes on permission requests only, set the Notification matcher to "permission_prompt" and drop the Stop entry.

With Pushover

Pushover is a paid app with a simple API. Replace the last line of the script with:

curl -s https://api.pushover.net/1/messages.json \
  --form-string "token=YOUR_APP_TOKEN" \
  --form-string "user=YOUR_USER_KEY" \
  --form-string "title=Claude Code: $dir" \
  --form-string "message=$msg" >/dev/null

The same two hook events drive desktop banners too. The Claude Code notifications on Mac guide has that version.

Chat apps through Channels

Anthropic's Channels, a research preview, connect a running session to Telegram, Discord or iMessage, so you can message Claude from your phone and get the reply in the same chat. Channels with permission relay can forward Allow and Deny prompts too.

Option 3: open-source phone clients (Happy, Happier)

Community projects wrap the CLI on your computer and mirror the session to a phone app. Both of these are MIT-licensed and have iOS and Android apps in the stores:

The appeal is one app for more than one CLI. The cost is that you start each agent through their wrapper and trust a third party's relay and app with your sessions, so read their code and docs first.

Option 4: SSH and tmux from your phone

The oldest route still works for every CLI. Run your agents inside tmux on the Mac, then attach from an SSH app on the iPhone such as Blink Shell or Termius.

  1. On the Mac, turn on System Settings → General → Sharing → Remote Login.
  2. Install tmux (brew install tmux) and start your agents inside it:
    tmux new -s agents     # run claude here
    # Ctrl-b c opens another window, Ctrl-b d detaches
  3. From the phone, connect and attach:
    ssh you@your-mac.local
    tmux attach -t agents

your-mac.local works on the same Wi-Fi. Away from home, use a private route such as a VPN like Tailscale rather than exposing SSH to the internet. You get full control with any CLI and no third party, at the cost of a desktop terminal on a phone keyboard. Add a push hook from Option 2 so you know which window is waiting.

Option 5: Cadence's iPhone app (beta)

Cadence is a free Mac app that puts every coding agent in one Inbox: Claude Code (hosted natively), Codex, Gemini and other CLIs in herdr terminals, and, since 0.5.7, agents on your Linux servers. Its iPhone app takes that Inbox with you. It is in a private TestFlight beta (version 0.4.0); to ask for an invite, join the iPhone waitlist. What the beta does:

The limits, plainly: the app is invite-only for now, it needs Cadence on an Apple Silicon Mac with macOS 13 or later, and the Mac has to be awake, because the agents run there. Testers can try a preview of Continue in the cloud, which moves a Claude Code agent to a private cloud sandbox while the Mac sleeps; it is off for new installs. Claude Code you start yourself can come along too: with Settings → Agents → Your own terminals on, claude typed in any terminal runs through Cadence and reaches the phone.

Which one to use

OptionAnswer promptsOther CLIsWhat you needStatus
Remote ControlYesNo (Codex has its own)Pro, Max, Team or Enterprise; the Claude appAvailable
Push hookNo, alerts onlyVia each CLI's own notify settingntfy or Pushover; a scriptAvailable
Happy, HappierYesYesTheir CLI wrapper and appAvailable, third party
SSH + tmuxYes, in the terminalYesAn SSH app and a private route homeAvailable
CadenceYes, one list for every agentYes, through herdrCadence on a Mac; a TestFlight invitePrivate beta

For one Claude Code session, Remote Control is the simplest. For alerts on any plan, use a push hook. For several agents or CLIs answered from one list, that is the gap Cadence's app fills, once you have an invite.

Keep your Mac awake

Every option except cloud sessions stops when the Mac sleeps. To keep it awake while an agent works, start the session through caffeinate:

caffeinate -i claude --remote-control "my-app"

caffeinate -i blocks idle sleep until the command exits; a MacBook with its lid closed still sleeps unless it is plugged in with an external display. Cadence's toolbar ⋯ menu can keep the Mac awake: on, for an hour, or until no agent is working. For agents that never depend on your laptop, see Run Claude Code on a remote server.

Common questions

Is there a Claude Code app for iPhone?

Not a separate one. Claude Code sessions live in the Code tab of the Claude app for iOS and Android. That covers cloud sessions and Remote Control sessions running on your own computer.

Can I approve Claude Code permission prompts from my phone?

Yes, with Remote Control. Permission prompts and questions show up in the Claude app and stay open until you answer them. Turn on Push when actions required in /config to get a push for each one. Cadence's iPhone beta also puts every waiting agent on its Home screen, including Claude Code's Allow and Deny requests.

Does my computer need to stay on?

For Remote Control, SSH and Cadence, yes, because the agent runs there. Cloud sessions run on Anthropic's infrastructure and keep going with your laptop closed, but they work from a GitHub repository, not your local folder.

Does Remote Control work with an API key?

No. It needs a claude.ai login on a Pro, Max, Team or Enterprise plan. It is also not available through Amazon Bedrock, Google Cloud, Microsoft Foundry, or an ANTHROPIC_BASE_URL that points at a gateway.

Can I control Codex from my iPhone?

Yes. OpenAI's remote connections pair the ChatGPT phone app with the ChatGPT desktop app on your Mac or PC, and setup starts in the desktop app rather than the Codex CLI. Open-source clients like Happy also wrap Codex, and Cadence's iPhone beta shows Codex agents that run in herdr.

How do I get Cadence's iPhone app?

It is in a private TestFlight beta. Join the iPhone waitlist on the Cadence home page to ask for an invite. The Mac app is a free download with no account.