When you run Claude Code in a terminal, it is easy to miss the moment a reply finishes—especially if you are looking at another window. Desktop notifications help; I also wanted a short audio cue, so I used the official hooks guide and attached a command to the Stop event.
Where hooks live
Hooks are defined in JSON under hooks. Typical locations:
| Location | Scope |
|---|---|
~/.claude/settings.json | All projects on this machine |
.claude/settings.json in a repo | That project only (good to commit) |
See the hooks guide for full details.
Play a sound on Stop
On macOS, afplay can play a short system sound:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Glass.aiff"
}
]
}
]
}
}Swap Glass.aiff for another short AIFF under /System/Library/Sounds/ if you prefer.
After editing, run /hooks in the CLI to confirm the Stop hook is registered.
Caveat: Stop fires on every completed reply
Per the docs, Stop runs whenever Claude finishes a response, not only when a “big task” is done. In long sessions you may hear the sound multiple times; pick a subtle cue or combine with Notification for idle / permission prompts only.
Suno: “Claude Code” themed tracks
I generated a few tracks with Suno using a Claude Code theme. Here is a screenshot of the list:

Example public share: “クロードコードのひらめき” on Suno.
Feeding a full-length export straight into afplay in a Stop hook would be noisy; a few seconds (or a system sound) is more practical.
Google Drive previews for audio
I host the files on Google Drive and embed them with /preview iframes (sharing must allow “Anyone with the link” as viewer). See also this blog post on Drive embeds.
Suno-related sample (Drive)
ElevenLabs sound effects
I also tried ElevenLabs Sound Effects. The quality is fun, but outputs tend to be longer than ideal for a Stop hook unless you trim them.
Here is the UI when I prompted 「claude code の完了音を作成して」 (create a completion sound for Claude Code). It returned four variations (#1–#4), each 1.0s, with a banner suggesting English prompts for best results.

ElevenLabs sample (Drive)
Beyond hooks: skills, subagents, plugins
The same docs ecosystem mentions skills, subagents, and plugins as other ways to extend Claude Code. Hooks are for deterministic lifecycle actions (like a sound on stop); skills and agents cover different workflows.
Summary
- Use a
Stophook withafplay(or another short sound) on macOS to notice when Claude Code finishes a turn. - Configure
~/.claude/settings.jsonor project.claude/settings.json. - Suno / ElevenLabs exports are fine to experiment with, but trim long audio for hooks.
- Official: hooks guide
Reference (Amazon US): Search for Claude-related items