Claude Code Voice Notify
Plays a sound and shows a toast in VS Code when Claude Code finishes a task or asks
for your input — so you can look away while it works and get pulled back at the right moment.
Unofficial. This extension is not affiliated with, endorsed by, or sponsored by
Anthropic. "Claude" and "Claude Code" are referenced only to describe what the extension
works with.
Why it works everywhere
The extension doesn't hook into VS Code's terminal. Instead it installs two Claude Code
hooks (Stop and Notification) that write a tiny trigger file. A file watcher in the
extension reacts to that file and plays the notification.
Claude Code event (Stop / Notification)
│ hook writes the event JSON (from stdin) to a file
▼
~/.claude-notify/trigger.json
│ file change
▼
Extension's file watcher ──► sound + toast + (optional) speech
Because the link is a file, it fires no matter where Claude Code runs — the integrated
terminal, an external terminal, the CLI, even a JetBrains IDE — as long as it's on the same
machine.
Setup
- Install the extension.
- When prompted, click Install to add the hooks (or run Claude Notify: Install
Claude Code Hooks from the Command Palette).
- Restart any running Claude Code sessions so they pick up the new hooks.
That's it. Use Claude Notify: Test Sound to hear the bundled chime.
To undo, run Claude Notify: Remove Claude Code Hooks — a settings.json.bak backup is
written before any change either way.
A 🔔 Claude Notify button sits in the status bar (bottom-right, next to items like
"Go Live"). The bell icon shows the current state (🔔 on / 🔕 off).
Click (or hover) the button to open a menu — no settings hunting. On hover it
appears right at the status bar; on click it opens as a quick pick:
- Turn notifications ON / OFF — the bell icon shows the current state.
- Add sound file… — pick a
.wav or .mp3 from your computer; it plays when Claude
finishes or needs input. You can add several and play one right away.
- Remove sound file… — drop sounds from the list (when empty, the bundled sounds return).
- Test sound — hear the current sound.
- Open settings… — jump to the full settings page.
Commands
| Command |
What it does |
Claude Notify: Open Menu |
Opens the status-bar quick menu (toggle, add/remove sounds, test). |
Claude Notify: Install Claude Code Hooks |
Adds the Stop + Notification hooks to ~/.claude/settings.json. |
Claude Notify: Remove Claude Code Hooks |
Removes only the hooks this extension added. |
Claude Notify: Add Sound File |
Pick a .wav/.mp3 to add to the play list. |
Claude Notify: Remove Sound File |
Remove sounds from the play list. |
Claude Notify: Test Sound |
Plays the current notification sound. |
Claude Notify: Enable / Disable Notifications |
Toggles claudeNotify.enabled. |
Settings
| Setting |
Default |
Description |
claudeNotify.enabled |
true |
Master on/off switch. |
claudeNotify.notifyOnStop |
true |
Notify when Claude finishes a task. |
claudeNotify.notifyOnInput |
true |
Notify when Claude asks for input. |
claudeNotify.volume |
1 |
Playback volume, 0–1. |
claudeNotify.selectionMode |
random |
random, sequential, or fixed (used with your own sound list). |
claudeNotify.sounds |
[] |
Absolute paths to your own .wav/.mp3 files. Empty = bundled sounds. |
claudeNotify.showToast |
true |
Show a VS Code notification toast. |
claudeNotify.maxPlaySeconds |
20 |
Hard cap on how long a sound may play. |
claudeNotify.tts.enabled |
false |
Speak a short message instead of / with the sound. |
claudeNotify.tts.doneMessage |
Claude finished the task |
Spoken on Stop. |
claudeNotify.tts.askMessage |
Claude needs your input |
Spoken on Notification. |
How sound playback works (no native dependencies)
The extension shells out to a player that already ships with your OS:
- Windows — PowerShell
System.Windows.Media.MediaPlayer (supports .wav and .mp3, with volume).
- macOS —
afplay.
- Linux — the first available of
paplay, ffplay, aplay, mpg123, play.
Bundled sounds are .wav (universally supported). Add your own .mp3 via claudeNotify.sounds
if you like — on Linux, .mp3 needs ffplay/mpg123 to be installed.
Privacy
Everything is local. The extension only reads/writes files in your home directory
(~/.claude-notify/ and, with your consent, ~/.claude/settings.json) and plays audio.
No network calls.
License
MIT