Get notified when Claude Code needs your action with native macOS notifications.
- Works in quiet environments - Know Claude Code's status even in offices or libraries where you can't use sound
- Step away freely - On-screen banners let you check status anytime you return
- Never miss a notification - Banners stay visible until you interact with them (If you miss sound, no worries!)
Works with any terminal app (Terminal.app, iTerm2, Warp, Alacritty, etc.).
brew install terminal-notifierterminal-notifier -title "Test" -message "Hello"If the notification appears, you're good to go. If not, enable notifications in System Settings → Notifications → terminal-notifier.
- Open System Settings
- Go to Notifications → terminal-notifier
- Change notification style to "Persistent" (banners will stay on screen until dismissed)
# For new installations
cp settings.json ~/.claude/settings.json
# If you already have settings.json, manually merge the "hooks" sectionRestart Claude Code to apply the settings.
Setup complete!
| Event | Notification | When |
|---|---|---|
Notification |
"Awaiting your input" + sound | Claude Code is awaiting your input or permission |
Stop |
"Task completed" + sound | Claude Code finishes responding |
UserPromptSubmit |
Remove notification | User sends a message |
Notifications disappear when you send a message, and reappear when Claude needs your attention.
Default sounds:
- Notification (waiting for input): Bottle.aiff
- Stop (task completed): Glass.aiff
Available macOS system sounds:
Basso, Blow, Bottle, Frog, Funk, Glass, Hero, Morse, Ping, Pop, Purr, Sosumi, Submarine, Tink
Preview a sound on your terminal:
afplay /System/Library/Sounds/Pop.aiffTo change sounds, edit the afplay path in ~/.claude/settings.json:
/usr/bin/afplay /System/Library/Sounds/YOUR_SOUND.aiffbrew install terminal-notifierChange notification style to "Alerts" in System Settings → Notifications → terminal-notifier.
- Check notification permissions: System Settings → Notifications → terminal-notifier → Enable "Allow Notifications"
- Check Focus mode: Make sure Focus / Do Not Disturb is disabled
- Run test command:
terminal-notifier -title "Test" -message "Hello"
The cat > /dev/null; at the beginning of hook commands consumes the JSON data that Claude Code passes via stdin, preventing unwanted terminal output.
MIT License - see LICENSE for details.

