Plays a sound and shows a notification when Claude Code finishes a task, needs permission, or asks a question.
Stop watching the screen — go grab a coffee and let Claude ping you when it needs you.
Works with VSCode, terminal CLI, vim, or any editor where you use Claude Code — on macOS, Windows, and WSL.
Install from the VS Marketplace:
code --install-extension SingularityInc.claude-notifierOr search for "Claude Notifier" in the Extensions tab (Cmd+Shift+X / Ctrl+Shift+X).
The extension auto-configures everything on activation. Reload VSCode after installing.
brew tap ashmitb95/claude-notifier
brew install claude-notifierIf brew install fails (e.g. outdated Command Line Tools), use the curl method below.
To uninstall:
brew uninstall claude-notifier
claude-notifier-uninstall # remove hooks from ~/.claude/settings.jsonmacOS / Linux / WSL:
curl -fsSL https://raw.githubusercontent.com/ashmitb95/claude-notifier/main/install.sh | bashTo uninstall:
curl -fsSL https://raw.githubusercontent.com/ashmitb95/claude-notifier/main/uninstall.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/ashmitb95/claude-notifier/main/install.ps1 | iexIf you don't have a PowerShell install script yet, use the VSCode extension — it auto-configures everything on Windows.
Open Settings → search "Claude Notifier" (Cmd+, / Ctrl+,), or add to your settings.json:
Notification levels:
| Level | Sound | OS notification | VSCode toast |
|---|---|---|---|
sound+popup |
Yes | Yes | Yes |
sound |
Yes | No | No |
popup |
No | Yes | Yes |
off |
No | No | No |
Sound presets:
- macOS: Basso, Blow, Bottle, Frog, Funk, Glass, Hero, Morse, Ping, Pop, Purr, Sosumi, Submarine, Tink
- Windows: Windows Notify, tada, chimes, chord, ding, notify, ringin, Windows Background
The global mute toggle (status bar speaker icon or Claude Notifier: Toggle Sound in the command palette) overrides all per-event settings.
Three Claude Code hooks are registered:
| Hook | Trigger |
|---|---|
Stop |
Claude finishes responding |
PermissionRequest |
Claude needs tool approval |
PreToolUse (AskUserQuestion) |
Claude asks a question |
Each hook reads ~/.claude/hooks/claude-notifier-config.json (synced from VSCode settings) to determine which sound to play and whether to show notifications.
On macOS, hooks use afplay and osascript. On Windows and WSL, hooks use PowerShell with NotifyIcon balloon tips and system sounds.
macOS / Linux / WSL:
touch ~/.claude/hooks/claude-notifier-muted # mute
rm ~/.claude/hooks/claude-notifier-muted # unmuteWindows PowerShell:
New-Item "$env:USERPROFILE\.claude\hooks\claude-notifier-muted" # mute
Remove-Item "$env:USERPROFILE\.claude\hooks\claude-notifier-muted" # unmute| Platform | VSCode Extension | CLI Install | Hook runner |
|---|---|---|---|
| macOS | Yes | Yes | Node.js |
| Windows | Yes | VSCode only | PowerShell |
| WSL | Yes | Yes | Node.js (calls powershell.exe for sounds/notifications) |
{ // Per-event notification level: "sound+popup" | "sound" | "popup" | "off" "claudeNotifier.taskCompleted.level": "sound+popup", "claudeNotifier.needsPermission.level": "sound+popup", "claudeNotifier.asksQuestion.level": "sound+popup", // Per-event sound preset (see list below) "claudeNotifier.taskCompleted.sound": "Hero", "claudeNotifier.needsPermission.sound": "Glass", "claudeNotifier.asksQuestion.sound": "Funk" }