Link copied

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:

LocationScope
~/.claude/settings.jsonAll projects on this machine
.claude/settings.json in a repoThat 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:

Suno track list for Claude Code themed music

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.

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 Sound Effects UI: prompt for Claude Code completion sound, four 1.0s clips

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 Stop hook with afplay (or another short sound) on macOS to notice when Claude Code finishes a turn.
  • Configure ~/.claude/settings.json or 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