Claude Code · macOS
Claude Code Notifications: Know the Moment It Finishes
Claude Code can run for minutes at a time, and it stops silently — either done, or waiting for permission to run a tool. If you tab away, you lose that time. This guide shows two ways to get a sound and visual notification on your Mac the moment Claude Code finishes or needs your input: the zero-configuration way with AI Done Now, and the manual hooks configuration.
The zero-config way: AI Done Now
AI Done Now is a native macOS menu bar app that delivers a sound and a clickable notification banner whenever Claude Code needs you:
- Claude Code finishes a task
- Claude Code needs permission for a tool call (shell command, MCP tool)
- Claude Code sends a notification event
1. Get the app
One-time purchase, all future updates included. No data leaves your Mac except your license key for activation.
Buy Now2. Install & activate
Download the app, open it, and enter your license key. You're ready in under a minute.
3. Start monitoring Claude Code
Open AI Done Now from your menu bar and click Start next to Claude Code. That's it — no configuration files, no restarts.
Sound + banner
See the alert even with your volume off.
Click-to-focus
Clicking the notification jumps back to your tool.
All four tools
One app for Claude Code, Cursor, Codex and Gemini CLI.
The manual way: Claude Code hooks
Claude Code has a hooks system that runs shell commands on events. The Stop event fires when Claude finishes responding, and the Notification event fires when it needs your input. You can wire these to afplay for sound and osascript for a banner.
1. Open your Claude Code settings file
Edit ~/.claude/settings.json (create it if it doesn't exist).
2. Add Stop and Notification hooks
{ "hooks": { "Stop": [ { "matcher": "", "hooks": [ { "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" } ] } ], "Notification": [ { "matcher": "", "hooks": [ { "type": "command", "command": "osascript -e 'display notification \"Claude Code needs your input\" with title \"Claude Code\"'" } ] } ] } }3. Restart Claude Code
Hooks are loaded at startup, so restart your Claude Code session for the change to take effect.
Where the manual setup falls short
- -osascript banners show up as coming from "Script Editor", not Claude Code, and clicking them doesn't focus your terminal.
- -A JSON typo in settings.json silently breaks your hooks.
- -You maintain the config on every machine, and it only covers Claude Code — not Cursor, Codex or Gemini CLI.
Frequently asked questions
How do I get a notification when Claude Code finishes a task?
Two options: install AI Done Now, click Start next to Claude Code in the menu bar, and you get native macOS sound and banner notifications with zero configuration. Or add a Stop hook to ~/.claude/settings.json that runs a command like afplay or osascript when Claude Code finishes responding.
How do I make Claude Code play a sound when it's done?
Add a Stop hook running 'afplay /System/Library/Sounds/Glass.aiff' to ~/.claude/settings.json, or use AI Done Now which plays a sound and shows a clickable macOS notification banner — even when your volume is off you still see the banner.
Can I get notified when Claude Code needs permission?
Yes. Claude Code pauses when it's waiting for input or tool approval, and AI Done Now alerts you the moment that happens — so you know immediately when Claude pauses for an MCP call or shell command approval instead of discovering it minutes later.
Can I get different alerts for 'done' vs 'needs input'?
Yes. Claude Code signals separately when it finishes and when it's waiting for you, and AI Done Now surfaces them as distinct notifications, so you can tell the difference between 'task complete' and 'Claude is blocked on a permission prompt'. With manual hooks you can do the same by pointing the Stop and Notification events at different sound files.
Do Claude Code notifications work in any terminal?
Yes. Notifications work at the Claude Code level, not the terminal level, so they work whether you run Claude Code in Terminal, iTerm2, Warp, or the integrated terminal in VS Code or Cursor.
Why aren't my Claude Code notifications working?
Common causes: monitoring isn't started for Claude Code in the AI Done Now menu bar app, macOS Focus/Do Not Disturb is silencing banners, your AI tool is outdated, or you're running Claude Code from your home/root directory instead of a project folder.
Using other AI coding tools?
Cursor notifications
Get notified when Cursor finishes.
Codex notifications
Get notified when Codex finishes.
Gemini CLI notifications
Get notified when Gemini CLI finishes.
Full setup and troubleshooting in the documentation.