Claude Code · iPhone

Claude Code notifications on your iPhone

Claude Code already knows when it has finished or is waiting on you. Getting that signal to your phone takes one of three routes, and the right one depends on how you run it.

Updated · macOS 15.0 or later · 7-day trial

In short

  • If you run sessions with Remote Control on a Claude subscription, turn on Claude Code's built-in mobile push under /config. Nothing else is needed on the Mac.
  • If you want a signal from every session, add a Notification hook that publishes to ntfy with curl. It is free and you maintain one block of settings.
  • If you want the same route for Claude Code and your other Mac apps, let Claude Code post a normal Mac notification and forward it with NotiFerry.
  • In all three cases the Mac must stay awake while the task runs.

What Claude Code does by itself

When Claude Code finishes a task or stops at a permission prompt and you appear to be away from the terminal, it raises a notification event. What you see depends on the terminal. According to the Claude Code terminal documentation, a desktop notification is sent by default only in Ghostty, Kitty, and iTerm2. In other terminals, including Apple's Terminal, you get nothing until you turn on the terminal bell or add a hook.

  • Ghostty and Kitty pass the notification to macOS Notification Center without further setup.
  • iTerm2 needs forwarding switched on: in Settings, Profiles, Terminal, check Notification Center Alerts, then open Filter Alerts and enable Send escape sequence-generated alerts.
  • Inside tmux, notifications are swallowed unless allow-passthrough is on.

All of that stays on the Mac. To hear about it on your phone, pick one of the three routes below.

Route 1: Claude Code's own mobile push

Claude Code can push to the Claude mobile app while a session is connected through Remote Control. This is the route with the least to set up, and it needs nothing extra on the Mac.

  1. Install the Claude app on your iPhone and sign in with the same account you use for Claude Code.
  2. Allow notifications when iOS asks.
  3. Start the session with Remote Control active.
  4. In the terminal, run /config and enable Push when Claude decides, Push when actions required, or both.

Things to know, from the Remote Control documentation: Remote Control is available on Pro, Max, Team, and Enterprise plans and does not work with API keys or third-party model providers. Claude decides when a push is worth sending, and beyond those two switches there is no per-event configuration. Pushes are skipped while you are typing in or focused on the connected terminal. The session runs on your machine, so the computer has to stay on.

Route 2: a hook that publishes to ntfy

Claude Code hooks run a command of your choice at fixed points in a session. A Notification hook fires when Claude is waiting for input or permission, which makes it a good place to publish a message to the free ntfy service. Install the ntfy app on your iPhone, subscribe to a long, hard-to-guess topic name, and add this to ~/.claude/settings.json:

{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "curl -s -d 'Claude Code needs your attention' https://ntfy.sh/your-private-topic"
          }
        ]
      }
    ]
  }
}

The empty matcher fires on every notification type. Set it to permission_prompt to hear only about approvals, or to idle_prompt for the case where Claude finished and you have not typed since. Run /hooks inside Claude Code to confirm the hook is registered.

Anyone who knows an ntfy topic name can read and publish to it, so choose one nobody could guess and keep the message generic. Do not put prompts, file names, or secrets in it.

This route is free and works in any terminal, on any plan. The cost is that it covers Claude Code only, and you maintain the configuration yourself.

Route 3: forward the Mac notification

The third route treats Claude Code like any other Mac app: let it post a normal macOS notification, and forward that notification to your iPhone with NotiFerry. Nothing in Claude Code needs to know about your phone.

First make sure the notification really reaches Notification Center. In Ghostty and Kitty it already does, and in iTerm2 it does once alert forwarding is on. In any other terminal, use the documented macOS hook instead:

{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

macOS routes this through Script Editor and shows nothing until Script Editor is allowed to notify. Run osascript -e 'display notification "test"' once, then turn on Allow Notifications for Script Editor in System Settings, under Notifications.

Then set up NotiFerry: authorize the Notification Center folder, subscribe your iPhone in the ntfy app, and confirm the phone test. From then on the Claude Code alert arrives on your phone along with those of any other Mac app you have not switched off. Title only is the default privacy mode, so the message text stays on the Mac unless you choose otherwise.

NotiFerry sees only the notification. It does not read your prompts, Claude's responses, your repository, or the terminal.

Which route fits

RouteYou needCoversCost
Built-in mobile pushRemote Control, a supported Claude plan, the Claude appClaude Code sessions connected through Remote ControlIncluded in the plan
ntfy hookA few lines of settings and the ntfy appEvery Claude Code session on that MacFree
NotiFerryNotiFerry on the Mac and the ntfy appClaude Code and the other Mac apps that post notificationsOne-time purchase after the trial

If Remote Control already fits how you work, use the built-in push. If you only care about Claude Code and are comfortable editing a settings file, the ntfy hook is hard to beat. NotiFerry earns its place when the same phone should also hear about builds, exports, and other tools, or when you would rather not maintain a hook per tool. See getting notified when a Mac task finishes for those cases.

All three have the same hard limit: the session runs on your Mac, so the Mac has to stay awake.

Questions

Why do I get no notification from Claude Code in Apple's Terminal?

By default Claude Code sends a desktop notification only in Ghostty, Kitty, and iTerm2. In other terminals you can set preferredNotifChannel to terminal_bell for a bell, or add a Notification hook that runs a command such as osascript to post a macOS notification.

Can Claude Code send push notifications to an iPhone by itself?

Yes, when a session is connected through Remote Control. Install the Claude mobile app, sign in with the same account, allow notifications, and enable the push options under /config in Claude Code. Remote Control requires a Pro, Max, Team, or Enterprise plan.

Can I be notified only when Claude Code needs permission?

Yes. In a Notification hook, set the matcher to permission_prompt. Claude Code's built-in mobile push has a separate switch for it, called Push when actions required.

Does NotiFerry read my Claude Code session?

No. NotiFerry forwards the macOS notification that Claude Code or your hook posts, subject to your privacy mode. It does not read prompts, responses, files, repositories, or terminal output.

Does the Mac have to stay awake?

Yes, for every route. Claude Code runs on your machine, so a sleeping Mac neither works on the task nor sends a notification about it.

Is NotiFerry affiliated with Anthropic?

No. NotiFerry is an independent product. It works with Claude Code only in the sense that it forwards notifications Claude Code posts on your Mac.

Founding release

One route for Claude Code and everything else on your Mac.

The trial starts only after you confirm that a real test reached your phone. Keep NotiFerry with a one-time €9.99license for up to 2 Macs. Purchases include a 30-day full-refund window; mandatory consumer rights remain unaffected.

Buy NotiFerry · €9.99Download the free trial insteadOne-time purchase · up to 2 Macs · periodic online license validation