# How to let Claude control your iPhone

> Give Claude Code or Claude Desktop a real iPhone to use - install Zeptap on your Mac, plug in the phone, pair Bluetooth, connect Claude, and hand it a first task. No jailbreak, Xcode or developer account.

Source: https://zeptap.com/docs/guides/claude-iphone



Claude can't reach an iPhone on its own, but it can use one through Zeptap, a Mac app that gives AI agents a local MCP server for a real iPhone. You plug the iPhone into your Mac, pair it over Bluetooth, and add Zeptap to Claude Code or Claude Desktop. Claude then sees the screen, taps, swipes and types in any app, with nothing installed on the phone.

The same steps work for Codex, Cursor and any other MCP client; only step 4 changes.

## What you need [#what-you-need]

| Needs       | Detail                                                                                                                 |
| ----------- | ---------------------------------------------------------------------------------------------------------------------- |
| A Mac       | macOS 14 or later, with Bluetooth                                                                                      |
| An iPhone   | Any iPhone you can plug in and unlock. It can be signed in to a different Apple Account from the Mac                   |
| A USB cable | The screen comes over the cable, so the phone stays within cable reach of the Mac                                      |
| Claude      | Claude Code or Claude Desktop on the same Mac. Or skip both and use Zeptap's built-in chat on your Claude subscription |

You don't need a jailbreak, Xcode, Developer Mode or an Apple Developer account, and the iPhone stays on its normal iOS.

## Set it up [#set-it-up]

<Steps>
  <Step>
    ### Install Zeptap [#install-zeptap]

    Download Zeptap from [zeptap.com](https://zeptap.com), drag it to **Applications** and open it. The setup assistant starts on first launch and asks for **Camera** access (to see the iPhone's screen over USB) and **Bluetooth** access (to tap and type on it).
  </Step>

  <Step>
    ### Plug in the iPhone and tap Trust [#plug-in-the-iphone-and-tap-trust]

    Connect the iPhone with a USB cable and unlock it. When it asks **Trust This Computer?**, tap **Trust** and enter the passcode. Zeptap turns on AssistiveTouch over USB, which is what lets a Bluetooth pointer act as your finger.
  </Step>

  <Step>
    ### Pair over Bluetooth [#pair-over-bluetooth]

    On the iPhone, open **Settings › Bluetooth** and tap your Mac's name under **Other Devices**. Click **Connect** on the Mac and **Pair** on the iPhone if asked. This is the only step you do on the phone, and you do it once.

    The Mac now acts as a Bluetooth keyboard and pointer for the iPhone. If another app on the Mac already does that, quit it first: only one can hold the connection.
  </Step>

  <Step>
    ### Connect Claude [#connect-claude]

    The last setup step lists the agents installed on your Mac. Click **Add** next to Claude Code or Claude Desktop. You can do the same later from **Settings › Connectors**.

    <Tabs items="[&#x22;Claude Code&#x22;, &#x22;Claude Desktop&#x22;]">
      <Tab value="Claude Code">
        **Add** runs this, which you can also run yourself:

        ```sh
        claude mcp add --transport http --scope user zeptap http://127.0.0.1:47801/mcp
        ```

        Start a new Claude Code session to pick it up.
      </Tab>

      <Tab value="Claude Desktop">
        **Add** puts a `zeptap` entry in `~/Library/Application Support/Claude/claude_desktop_config.json`. Quit and reopen Claude Desktop to pick it up.
      </Tab>
    </Tabs>

    [Connect an agent](/agents/connect) covers Codex, Cursor, other clients and manual config.
  </Step>

  <Step>
    ### Check that Claude can see the phone [#check-that-claude-can-see-the-phone]

    Ask Claude:

    ```txt
    Take a screenshot of my iPhone and tell me what's on the screen.
    ```

    Claude calls Zeptap's `screenshot` tool and describes the screen. If it can't find the tool, start a new session. If the tool returns an error, see [Troubleshooting](/reference/troubleshooting).
  </Step>

  <Step>
    ### Give Claude a task [#give-claude-a-task]

    Describe the outcome you want, in plain language:

    ```txt
    On my iPhone, open Settings and turn on Dark Mode.
    ```

    Claude works out the taps itself and reports back with a screenshot of the result.
  </Step>
</Steps>

## What Claude does on the phone [#what-claude-does-on-the-phone]

Claude drives the iPhone with Zeptap's MCP tools, one action at a time. Every action returns a screenshot taken once the screen stops moving, so Claude checks the result before its next step. A request like *turn on Dark Mode* becomes calls like these:

```txt
open_app("Settings")
tap_text("Display & Brightness")
tap_text("Dark")
```

`tap_text` finds a label on the screen with on-device text recognition and taps its center, so Claude doesn't have to guess coordinates. `open_app` opens any installed app through Spotlight, and `type_text` types through the Bluetooth keyboard. The [tool reference](/agents/tools) lists every tool.

## Things to ask Claude [#things-to-ask-claude]

| Goal              | Example prompt                                                                                                   |
| ----------------- | ---------------------------------------------------------------------------------------------------------------- |
| Personal errand   | *Open the Uber app and tell me how much a ride to the airport costs right now. Don't book it.*                   |
| Phone setting     | *Turn off Background App Refresh for every app except Messages and Maps.*                                        |
| Test your own app | *Open MyApp from TestFlight, sign up with a new email, and report anything that looks broken, with screenshots.* |
| Brand Instagram   | *Open Instagram, read the new DMs and draft a reply to each. Show me the drafts before sending anything.*        |
| Read something    | *Open Messages and summarize what Jay sent me today.*                                                            |

Claude asks before it does anything hard to undo or that reaches other people, such as sending a message, posting, buying or deleting. Say so in the prompt if you want it to stop earlier, for example *ask me before every tap in the banking app*.

For multi-day routines on brand accounts, see [Playbooks](/playbooks).

## Let Claude unlock the phone (optional) [#let-claude-unlock-the-phone-optional]

By default the iPhone has to be unlocked when Claude starts. To let Claude unlock it, open **Settings › Phones** in Zeptap, click **Set Up Unlock…** and enter the passcode. It's stored in your Mac's Keychain (not iCloud), Claude never sees it, and each unlock makes a single attempt so a wrong passcode can't lock you out. See [Lock and unlock](/features/lock-and-unlock).

To keep the screen from locking during long tasks, set **Settings › Display & Brightness › Auto-Lock** to **Never** on the iPhone.

## Without a terminal: Zeptap's chat [#without-a-terminal-zeptaps-chat]

If you don't use Claude Code or Claude Desktop, Zeptap has a chat panel next to the phone mirror (**⌘L**). It runs Claude Code on your own Claude plan (Pro or Max), so there's nothing extra to pay Zeptap for the model. Sign in from **Settings › Agents › Claude Code**; [Use your own AI account](/get-started/accounts) has the steps.

## Limits [#limits]

* **A Mac is required.** Zeptap doesn't run on Windows or Linux.
* **The phone is wired.** The screen comes over USB and touch goes over Bluetooth, so the iPhone sits next to the Mac. It isn't a remote or cloud phone.
* **iPhone only.** Zeptap doesn't drive Android phones or the iOS Simulator.
* **Typing is US-keyboard ASCII.** Accents, emoji and curly quotes can't be typed, so Claude rephrases text without them.
* **Claude works from what's on the screen.** It reads screenshots and text, not an app's internal structure. Icon-only buttons are tapped by position.

## FAQ [#faq]

### Can Claude control an iPhone without a jailbreak? [#can-claude-control-an-iphone-without-a-jailbreak]

Yes. Zeptap doesn't modify iOS or install anything on the phone. It reads the screen over USB and taps and types as a Bluetooth keyboard and pointer through AssistiveTouch, an accessibility feature built into iOS.

### Do I need Xcode or Developer Mode? [#do-i-need-xcode-or-developer-mode]

No. Tools built on WebDriverAgent need Xcode, a signed runner and Developer Mode, and a free Apple ID means re-signing every 7 days. Zeptap needs none of that; Developer Mode stays off.

### Does this work with Claude on the web or the Claude iPhone app? [#does-this-work-with-claude-on-the-web-or-the-claude-iphone-app]

No. Zeptap's MCP server runs on your Mac and only accepts connections from that Mac, so Claude has to run there too: Claude Code, Claude Desktop, or Zeptap's built-in chat.

### Does my phone's data go through Zeptap's servers? [#does-my-phones-data-go-through-zeptaps-servers]

No. Zeptap has no account and no cloud. Screenshots go from your Mac to the agent you connect, and from there to Anthropic under your Claude plan. See [Privacy and security](/reference/privacy).

### Can I use ChatGPT, Codex or Cursor instead? [#can-i-use-chatgpt-codex-or-cursor-instead]

Yes. Anything that speaks MCP can connect to `http://127.0.0.1:47801/mcp`, and Codex and Cursor have one-click connectors in **Settings › Connectors**.

### What does it cost? [#what-does-it-cost]

Your first hour of live use is free. After that, Zeptap is a monthly or one-time license; see [pricing](https://zeptap.com/pricing). The Claude model is billed separately by Anthropic, through your existing plan.
