In a Nutshell
Key Info
- Config:
~/.claude/settings.json- Command:
/hooksin Claude Code- Events:
idle_prompt,permission_prompt
Claude Code doesn’t play sounds by default when it finishes a task or needs permission. If you’re multitasking, you’ll miss the prompt and waste time checking back. With a simple hooks configuration in your settings.json, you can make Claude Code play a sound whenever it’s waiting for you.
This guide gives you copy-paste configs for both macOS and Windows.
Setting Up Sound Notifications
Add the following hooks block to your settings.json. You can open it via /hooks in Claude Code or edit the file directly.
File location:
- macOS:
~/.claude/settings.json - Windows:
%USERPROFILE%\.claude\settings.json
macOS
"hooks": {
"Notification": [
{
"matcher": "idle_prompt",
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Glass.aiff"
}
]
},
{
"matcher": "permission_prompt",
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Ping.aiff"
}
]
}
]
}To use a custom sound, replace the path with any .aiff, .wav, or .mp3 file:
"command": "afplay /path/to/your/sound.mp3"
Browse available system sounds in /System/Library/Sounds/ — you’ll find options like Glass, Ping, Hero, Purr, and Pop.
Windows
"hooks": {
"Notification": [
{
"matcher": "idle_prompt",
"hooks": [
{
"type": "command",
"command": "powershell -Command \"(New-Object System.Media.SoundPlayer 'C:\\Windows\\Media\\Ring10.wav').PlaySync()\""
}
]
},
{
"matcher": "permission_prompt",
"hooks": [
{
"type": "command",
"command": "powershell -Command \"(New-Object System.Media.SoundPlayer 'C:\\Windows\\Media\\Ring10.wav').PlaySync()\""
}
]
}
]
}To use a custom sound, replace the path with any .wav file:
"command": "powershell -Command \"(New-Object System.Media.SoundPlayer 'C:\\path\\to\\your\\sound.wav').PlaySync()\""
Browse available system sounds in C:\Windows\Media\ — try Ring10.wav, chimes.wav, or notify.wav.
How to Verify
- Restart Claude Code after editing
settings.json. - Run
/hooksand select Notification to confirm your hooks are registered.
If you hear the sound when Claude Code finishes a task or asks for permission, you’re all set.
FAQ
What events can I hook into?
The two most useful are idle_prompt (Claude finished and is waiting for your next input) and permission_prompt (Claude needs you to approve a tool call). You can use different sounds for each to distinguish them.
Can I use different sounds for different events?
Yes. Just set a different file path in the command field for each matcher. For example, use a subtle chime for idle_prompt and a more attention-grabbing sound for permission_prompt.
Do I need to install anything extra?
No. Both macOS (afplay) and Windows (System.Media.SoundPlayer) use built-in system tools. You just need a sound file — the OS ships with plenty.