Audio notifications for Claude Code — only when you're away from the terminal
Audio + OS notification for Claude Code — notifies you when Claude stops and your terminal is not in focus.
claude plugin marketplace add Phan-Trong-Hau/claude-plugins
claude plugin install claude-notify@Phan-Trong-Hau
Add a "claude-notify" key to ~/.claude/settings.json:
{
"claude-notify": {
"enabled": true,
"delay": 0,
"mode": "sound",
"volume": 1.0,
"notify_os": true,
"sound_file": "sounds/mixkit-negative-tone-interface-tap-2569.wav",
"messages": {
"stop": "Claude is waiting for your input",
"permission": "Claude needs your approval"
}
}
}
Only include keys you want to override — the rest use plugin defaults.
| Key | Default | Description |
|---|---|---|
enabled | true | Enable/disable all notifications |
delay | 0 | Seconds to wait before checking focus and notifying |
mode | "sound" | "sound", "beep", "tts", or "all" |
volume | 1.0 | Playback volume (0–1) |
notify_os | true | Show OS toast notification (set false to disable) |
sound_file | bundled wav | Path to custom sound file (relative to plugin root) |
mode | Beep | Audio file | TTS voice |
|---|---|---|---|
"all" | ✅ | ✅ | ✅ |
"sound" (default) | ❌ | ✅ | ❌ |
"beep" | ✅ | ❌ | ❌ |
"tts" | ❌ | ❌ | ✅ |
Drop a .wav file anywhere and point sound_file to it (relative to plugin root).
Tip: If your sound is cut off at the beginning, prepend 1–2 seconds of silence. Windows needs a moment to wake the audio device on first playback.
import wave
src = "your-sound.wav"
SILENCE_SEC = 2
with wave.open(src, 'rb') as r:
params = r.getparams()
frames = r.readframes(r.getnframes())
silence = b'\x00' * int(params.framerate * SILENCE_SEC) * params.nchannels * params.sampwidth
with wave.open(src, 'wb') as w:
w.setparams(params)
w.writeframes(silence + frames)
| Platform | Beep | Audio | TTS | OS Toast | Focus detection |
|---|---|---|---|---|---|
| Windows (Git Bash / MSYS2) | ✅ | ✅ WinMM | ✅ SAPI | ✅ WinRT | ✅ Win32 API |
| macOS | ✅ osascript | ✅ afplay | ✅ say | ✅ osascript | ✅ osascript |
| Linux (Ubuntu) | ✅ printf \a | ✅ paplay / aplay / ffplay | ✅ espeak | ✅ notify-send | ✅ xdotool |
Linux dependencies:
notify-send(libnotify),xdotool, and one ofpaplay/aplay/ffplayfor audio. Install with:sudo apt install libnotify-bin xdotool pulseaudio-utils
MIT
Matches all tools
Hooks run on every tool call, not just specific ones
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub phan-trong-hau/claude-notify --plugin claude-notifyUltra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Memory compression system for Claude Code - persist context across sessions
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.