Play a Sound When Claude Finishes with a Stop Hook
If you're stepping away while Claude works, you need a way to know when it's done. Polling the terminal every few minutes defeats the purpose of automation.
Add a Stop hook that plays a sound the moment Claude finishes its turn. On macOS, afplay can play any system sound without installing anything.
Add this to your ~/.claude/settings.json:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Blow.aiff"
}
]
}
]
}
}
The Stop hook fires every time Claude finishes a turn and returns control to you. Walk away, make a coffee, switch to a different task — when you hear the sound, Claude is waiting.
You can swap in any sound from /System/Library/Sounds/:
# Preview available sounds
ls /System/Library/Sounds/
# Basso.aiff, Blow.aiff, Bottle.aiff, Frog.aiff, Glass.aiff...
afplay /System/Library/Sounds/Glass.aiff
This becomes especially useful when running multiple parallel sessions. Different sessions can play different sounds so you know which window just finished.
A two-line hook turns Claude into something that actually tells you when it's done.
via @mvanhorn
Log in to leave a comment.
The autoUpdatesChannel setting pins Claude Code to a stable release track that skips versions with major regressions.
The language setting makes Claude respond in your preferred language by default, across every session and project.
The attribution setting lets you customize or completely remove Claude's Co-Authored-By trailer from git commits and pull requests.