Pushary

Claude finished coding.
Your phone knows.

Pushary sends a push notification when Claude Code finishes or needs your permission, and lets you approve from your phone in one tap.

Push notifications + human-in-the-loop for Claude Code. Answer questions from your lock screen.

One command

npx @pushary/agent-hooks@latest setup

Pick Claude Code when prompted. Installs the hooks and connects over MCP.

Which Claude Code actions can Pushary hold until I approve them?

Pushary installs Claude Code hooks, so PreToolUse fires before a tool call runs and your permission policy decides whether it needs you. A gated call is held open, the question goes to your phone, and Claude continues on your answer. The Stop hook pushes when a turn ends. Unlike preferredNotifChannel, which never leaves the machine, this reaches you anywhere.

Shipping an agent of your own?

The same loop runs the other direction.

Getting a push when Claude Code finishes is one person watching their own agent. If you are building a product that runs an agent for other people, the question flips: your agent needs to ask your customer before it issues that refund or sends that message. That is the same primitive pointed outward. Human-in-the-loop for AI agents covers the API and the framework adapters. The Partner plan is what you embed when the person approving is someone who has never heard of us.

99.9%Delivered
Hacker NewsFeatured on Hacker News
3-4xvs Email

The Claude Code workflow without notifications

You kick off a database migration in the terminal, walk away, and come back to find Claude has been stuck on a yes/no question for half an hour.

Without Pushary
Start a long refactor or migration in the terminal
Tab away to read docs or your inbox
Claude hits a permission prompt and waits
You check the terminal half an hour later
It blocked 28 minutes ago on one yes/no
With Pushary
Start a long refactor or migration in the terminal
Walk away with your phone in your pocket
Claude needs a permission? Tap yes or no.
Your phone buzzes the moment the run ends
The terminal never sits idle waiting on you

Every way to get notified when Claude Code finishes

There are four ways to get notified when Claude Code finishes or needs your input: the built-in terminal bell, a desktop alert from a Notification hook, a free ntfy push to your phone, and Pushary, which adds two-way approvals so you can answer Claude from your lock screen. The first two only help while you are at the machine. The last two reach you anywhere.

1. Terminal bell and desktop notifications

Free

Built into Claude Code, zero setup

In Ghostty, Kitty, and iTerm2, Claude Code already sends a desktop notification when it finishes or pauses for permission, and it reaches your local machine even over SSH. In other terminals, switch the notification channel to the terminal bell. Most guides still tell you to run `claude config set --global preferredNotifChannel terminal_bell`, which now fails with `error: unknown option '--global'`: the config subcommand was removed, so set it in settings.json instead. Or run the one-liner below, which adds a Notification hook that rings the bell and raises the desktop alert itself, so it works whatever channel you are on. Either way it stays on this machine and cannot reach you once you step away.

free, no account, nothing leaves your machine
npx @pushary/agent-hooks@latest bell

2. Desktop alert with a Notification hook

Free

Deterministic, fires on permission prompts and idle waits

Claude Code fires a Notification event when it needs your approval (permission_prompt) or is done and waiting for your next prompt (idle_prompt). A hook in .claude/settings.json turns that into any command you want, like a macOS notification via osascript or notify-send on Linux. Add a matcher such as permission_prompt to only fire for specific types. This is the mechanism most DIY tutorials skip: no prompt hacks in CLAUDE.md, just a documented event.

.claude/settings.json
{
  "hooks": {
    "Notification": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Claude Code needs you\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

3. Free phone push with ntfy

Free

A Stop hook plus curl reaches your phone, one-way

The Stop event fires when Claude finishes responding. Point a Stop hook at ntfy.sh and your phone gets a push for free. The trade-offs: it is one-way, so when Claude is blocked on a question you still have to walk back to the terminal to answer, and public ntfy topics are readable by anyone who guesses the name unless you reserve one or self-host.

.claude/settings.json
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "curl -s -d 'Claude Code finished' ntfy.sh/your-topic"
          }
        ]
      }
    ]
  }
}

4. Pushary: push plus approvals from your phone

$9.99/mo

The only option where you can answer Claude remotely

One command installs the hooks and connects Claude Code over MCP. You get a push when Claude finishes, and when it is blocked on a permission or a question, the notification carries the question itself. Tap yes or no from your lock screen and Claude continues. Permission policies decide which tools need your approval, and every decision lands in an audit trail. This is the difference from every free option above: they tell you Claude is waiting, Pushary lets you unblock it.

terminal
npx @pushary/agent-hooks@latest setup

How the options compare

MethodReaches your phoneAnswer from the notificationPrice
Terminal bell and desktop notificationsFree
Desktop alert with a Notification hookFree
Free phone push with ntfyFree
Pushary: push plus approvals from your phone$9.99/mo

Stop watching Claude Code spin. Start getting notified.

One command. Your phone buzzes when Claude Code is done.

Claude Code notification questions

What is preferredNotifChannel in Claude Code?

preferredNotifChannel is the Claude Code setting that chooses how it tells you it finished or needs permission. The accepted values are auto, terminal_bell, iterm2, iterm2_with_bell, kitty, ghostty, and notifications_disabled. The default, auto, sends a desktop notification in iTerm2, Ghostty and Kitty and does nothing in any other terminal, so use terminal_bell there. Set it as a top-level key in ~/.claude/settings.json. The command most guides still show, claude config set --global preferredNotifChannel terminal_bell, fails on current versions with error: unknown option '--global', because the config subcommand was removed; npx @pushary/agent-hooks bell avoids the setting altogether, raising the alert itself through osascript or notify-send. Every value is local to the machine Claude Code runs on, so none of them reaches you once you walk away.

How do I get a notification when Claude Code finishes?

Claude Code fires a Stop event when it finishes responding. Hook it in .claude/settings.json to ring a bell, show a desktop alert, or curl a push service. For notifications you can act on from your phone, run npx @pushary/agent-hooks setup and pick Claude Code.

How do I know when Claude Code is waiting for my input?

The Notification event fires with type permission_prompt when Claude needs an approval and idle_prompt when it is done and waiting for your next prompt. A Notification hook turns those into alerts. Pushary routes the same events to your phone and lets you answer without going back to the terminal.

Can Claude Code send notifications to my phone?

Yes, two ways. A Stop hook that curls a free service like ntfy gets you a one-way push. Pushary gets you a two-way push: when Claude is blocked on a question, the notification carries the question and you answer yes or no from your lock screen.

How is Pushary different from free options like ntfy or a hook script?

Free options are one-way: they tell you Claude finished or is stuck, and then you walk back to the terminal. Pushary is two-way: you approve permissions and answer questions from the notification itself. It also adds per-tool permission policies and an audit trail of every decision.

Can Claude ask me questions via push notification?

Yes. Pushary's human-in-the-loop feature lets Claude send yes/no questions to your phone. You answer from your lock screen and Claude continues based on your response.

Does it work with Claude Desktop and Claude Code?

Yes. Pushary works with both Claude Desktop and Claude Code (terminal) via MCP. Any Claude client that supports MCP servers can use Pushary.

How much does Pushary cost?

Pushary starts with a 3-day free trial at $9.99/month. Includes 5,000 notifications per month and full MCP API access.