VS · HOOK SCRIPT

exit·0 vs a hook script

You don't need an app to get a ping when Claude Code stops. Two hooks in ~/.claude/settings.json and a free push service like ntfy will do it:

{
  "hooks": {
    "Stop": [
      { "hooks": [{ "type": "command",
          "command": "curl -s -d 'claude finished' ntfy.sh/your-topic" }] }
    ],
    "Notification": [
      { "hooks": [{ "type": "command",
          "command": "curl -s -d 'claude needs you' ntfy.sh/your-topic" }] }
    ]
  }
}

Install the ntfy app on your phone, subscribe to your-topic, and you're done. This works, and it's free. Here's what it does, what it doesn't, and when it's the better choice.

what a script gives you

  • One line per hook and nothing to install on the computer.
  • It runs wherever Claude Code runs: Linux, Windows, over SSH, in a container or on a server, even with your laptop shut.
  • ntfy has apps for Android and iPhone, and the same hook can post to Slack, Discord or Pushover instead.
  • You own every line. You can run your own ntfy server, and send whatever text you like, including fields from the hook's JSON if you add jq.

what exit·0 adds

  • Broke, not just stopped. The Stop hook fires the same way whether the run worked or not. Exit·0 calls it IT BROKE when the run stopped right after a failed command, and tells you the command and its exit code.
  • Crashed. When Claude itself stops on an API error, you get CRASHED. NOT YOUR FAULT. and the error in plain words.
  • Which run needs you. With several sessions open, the run list shows every one, and NEEDS YOU tells you which one is waiting. Pushes carry the project folder name.
  • How long it took. Every finished run lands in one list with its length, like 4m 12s.
  • Desk or away. At the Mac you get the menu bar device, a banner and an 8-bit sound. Leave the Mac idle for three minutes and the phone takes over, with a lock screen card that counts the run up.
  • Quiet when you want. Quiet hours (Needs you still gets through), mute, and a fails-only mode.
  • EDIT. One key brings back the exact tab in Terminal or iTerm.
  • Secrets blanked. The Mac blanks common password, key and token patterns before showing or saving anything.
  • One-click hooks. Turn them on with one click. Turn them off and Exit·0 removes only its own entries, and keeps a dated backup.

privacy, side by side

curl to ntfy.shexit·0
where it goes The ntfy.sh server, or your own if you run one. Your own iCloud between your devices, and pushes through a small relay that doesn't store what a push says.
who can read it Anyone who knows the topic name. ntfy's own FAQ: "the topic name is your password". Reserved, protected topics come with ntfy's paid plans, or set up access control on your own server. Your own phones. No accounts, no analytics.
how long it's kept ntfy caches messages, 12 hours by default (ntfy FAQ). The relay keeps no message text. To stop abuse it keeps a fingerprint of the Mac's relay key, your phones' push addresses and short-lived counts. See privacy.
what it says Whatever your script sends. The project folder name, the first line of your prompt (40 characters at most), how long the run took and how it ended. A failed command is sent only as the program's name and exit code.

ntfy details last checked 3 nov 2026 against docs.ntfy.sh/faq and ntfy.sh. Defaults can change.

when the script is the better choice

  • You're on Linux or Windows, or your phone is Android. Exit·0 is a Mac app with an iPhone app.
  • Claude Code runs on a remote machine, in a container or in CI. Exit·0 hears the hooks on the Mac it's installed on.
  • You want the ping in Slack or Discord.
  • You want no apps at all.
  • You close the lid and walk away mid-run. Exit·0 keeps the Mac awake while a run is going, but a closed lid, or the app not running, means nothing gets sent.

so which one?

If you're on a Mac and want to know which run broke or needs you, try Exit·0. It's free. If the script does the job, keep the script.

DOWNLOAD FOR MAC