There are five ways to get Claude Code notifications: the built-in terminal notification, a hook you write that shows a desktop alert, a hook that sends a push through a service such as ntfy, Telegram, Slack or Discord, Anthropic's own Remote Control with the Claude mobile app, and a dedicated notifier tool. The first three are free and tell you that something happened. Remote Control and the dedicated tools also let you answer from your phone. Which one is best depends on whether you only need to know, or also need to act.
01The options at a glance
preferredNotifChannel)The terminal on your computerNoNone, or one settingosascript, notify-send, PowerShell)Your computerNoA few lines in settings.json02Built-in: the terminal tells you
Claude Code already raises a notification when it finishes or waits on a permission prompt and you seem to be away. By default it sends a desktop notification in iTerm2, Ghostty and Kitty, rings the bell in Apple Terminal only in one specific case, and does nothing in other terminals. The preferredNotifChannel setting changes this, for example to "terminal_bell" so every terminal gets the bell character.
Strengths: nothing to install, works over SSH in terminals that forward the notification. Limits: it only reaches the computer in front of you, many terminals (including IDE terminals) get nothing by default, and you cannot reply. The details are in the terminal bell guide.
03Your own hooks: desktop alerts
Hooks let Claude Code run a command at fixed points. A Notification hook fires when Claude needs your attention (a permission prompt that has waited about six seconds, or Claude idle about 60 seconds after finishing). A Stop hook fires the moment a turn ends. Point either at your platform's notification command and you have alerts on Mac, Windows and Linux in any terminal. The guide to getting notified when Claude finishes walks through it.
Strengths: free, private, fully under your control, no network needed. Limits: still only on that computer, and on a headless server or over SSH a desktop command has no desktop to show on (see notifications over SSH).
04Your own hooks: push to your phone
The same hook can call a push service instead. Common choices:
- ntfy: publish with one
curlline to a topic, receive it in the ntfy app on iPhone or Android. Free on ntfy.sh, and you can host your own server. See the ntfy guide. - Pushover: an API with a free monthly message allowance and its own apps. Messages are limited to 1,024 characters.
- Telegram, Slack or Discord: a bot or an incoming webhook posts a message to a chat you already watch. See the Telegram, Slack and Discord guide.
Strengths: reaches your phone wherever you are, cheap or free, and you see exactly what is sent. Limits: one way only. The phone can tell you Claude is waiting, but the session still waits for you to get back to the keyboard. You also have to handle secrets (topic names, tokens, webhook URLs) and decide when not to send, because a hook fires whether you are at the desk or not.
05Anthropic's Remote Control and the Claude app
Remote Control connects the Claude app on iPhone and Android, or claude.ai/code in a browser, to a Claude Code session running on your computer. You see the whole conversation and can type into it, and permission prompts and AskUserQuestion questions are forwarded to the phone. With Push when actions required and Push when Claude decides turned on in /config, the app sends push notifications. It skips them while you are typing in, or focused on, the connected terminal.
Strengths: made by Anthropic, the full session on your phone, no third party involved. Limits (from Anthropic's documentation): it needs a Pro, Max, Ultra, Team or Enterprise plan signed in through claude.ai, API keys are not supported, and it is not available with Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry or a custom ANTHROPIC_BASE_URL. On Team and Enterprise an Owner must switch it on. The session has to be started with Remote Control (or set to connect at startup), and Claude decides when to send the "decides" pushes; there is no per-event configuration beyond the two toggles.
06Dedicated notifier tools
Several tools are built on the hooks above and add a reply path.
- claude-remote-approver is an open source (MIT) npm package that uses the
PermissionRequesthook and ntfy. Each permission request becomes a notification with Approve and Deny buttons, andAskUserQuestionoptions become buttons too. If nothing comes back within its timeout (120 seconds by default), Claude Code falls back to the terminal prompt. - Pushary is a hosted service set up with
npx pushary@latest setup. It installs Claude Code hooks, sends a push when Claude finishes, and lets you approve or answer from the phone. - Claude Code Notifier (ours) is
ccn, a free command line tool for Mac, Windows and Linux, plus phone apps for iPhone and Android. It is independent and not made by Anthropic.
Other open source projects send alerts to ntfy, Discord or the desktop with a ready-made script. They are worth a look if you want DIY without writing the script.
07Where Claude Code Notifier fits
If one-way alerts are all you need, a ten-line hook with ntfy or your desktop notifier is a perfectly good answer, and it costs nothing.
Claude Code Notifier is for the moment after the alert. Installed on its own, ccn shows a desktop notification on Mac, Windows or Linux when Claude finishes, needs a permission or asks a question. With a phone paired, you can:
- allow once, allow for the session, or deny a permission request from the phone
- pick an answer when Claude asks you to choose
- send the next instruction right after Claude finishes
It also handles presence. If you typed in the last 30 seconds, nothing waits: the terminal asks as usual and the phone gets at most a note. If you are away, the terminal waits for the phone's answer up to a ceiling you choose, and stops waiting the moment you touch the keyboard. Because it is a hook, it works in any terminal, including IDE terminals, and does not need Remote Control turned on in the session. The phone apps need a subscription or a lifetime purchase; see pricing. Install it from the ccn page.
08How to choose
- You sit at the computer and want a nudge: the built-in notification or a desktop hook.
- You want your phone to buzz, and you will walk back to answer: ntfy or a chat webhook.
- You want the whole conversation on your phone and you sign in with a claude.ai plan: Remote Control.
- You want to approve, answer and continue from the phone, with alerts that stay quiet while you are at the keyboard: a dedicated tool such as Claude Code Notifier.
09FAQ
Does Claude Code have built-in notifications?
Yes. It sends a desktop notification in iTerm2, Ghostty and Kitty, and you can set preferredNotifChannel to "terminal_bell" to get the bell in any terminal. It only reaches the computer running the terminal. For phone pushes Anthropic offers Remote Control with the Claude app.
What is the free way to get Claude Code notifications on my phone?
A Notification or Stop hook that runs curl against a free ntfy topic, then the ntfy app on your phone. The ntfy guide has a copy-paste setup. It tells you Claude is waiting but cannot answer for you.
Can I approve Claude Code permission requests from my phone?
Yes, with Remote Control or with a tool built on the PermissionRequest hook, such as claude-remote-approver or Claude Code Notifier. See approving permissions from your phone.
Can I use several of these at once?
Yes, hooks from different sources all run. Avoid two tools that both answer permission requests, and expect duplicate alerts if two tools notify on the same event.