GUIDE

How to get Claude Code notifications on your Mac

The moments worth interrupting you are when Claude needs input, fails, or finishes. Claude Code now exposes those as separate hook events, so a local menu-bar app can label the exact session instead of guessing from silence.

The built-in option: the terminal bell

Claude Code rings the terminal bell when it stops. Most terminals turn that into a subtle dock bounce or badge - easy to miss on a second monitor, invisible if the terminal is hidden, and it can’t distinguish “done” from “waiting on your yes.”

The robust option: lifecycle hooks

Claude Code’s Notification, Stop,StopFailure, TaskCreated, andTaskCompleted events distinguish input, completion, failure, and progress. Anything local can subscribe: a shell script, sound, or menu-bar app. NapCat acknowledges these events immediately, so observation never stalls the session.

What NapCat does with it

  • A quiet chime and the notch opening by itself when Claude genuinely asks - with Allow and Deny buttons that answer the real prompt.
  • A separate, softer chime when an agent finishes, using an exact Stop event when the Control Bridge is on and local activity otherwise.
  • Nothing at all while a session is merely idle between your own messages - an idle agent is not news.

The hook is opt-in, written to ~/.claude/settings.json with a backup, and removes itself completely when you turn it off.

Questions

Does Claude Code notify you when it finishes?

It rings the terminal bell when it stops, which most terminals turn into a dock bounce or badge. That's easy to miss and can't tell 'done' apart from 'waiting on your permission'.

What is the Claude Code Notification hook?

One of several Claude Code lifecycle hooks. Notification covers surfaced prompts and input requests; Stop and StopFailure distinguish completion from errors, while task events can expose progress.

How does NapCat notify you?

A quiet chime plus the notch opening itself when Claude genuinely asks, a softer chime when an agent finishes a long stretch, and nothing at all while a session is merely idle between your messages.

Will I get pinged for every tool call?

No. PermissionRequest fires only when Claude is about to ask, while lifecycle hooks report input, completion, failure and task progress. Auto-approved tool calls do not become permission cards.

Related

See how to approve Claude Code from the menu bar, monitor multiple Claude Code sessions, or read the full Claude Code support page.

Keep AI coding sessions in sight from your Mac’s notch - $7.99, once.

Download - free 2-day trial