メインコンテンツへスキップ
kt-tech.blog

【効率化】Claude Code の通知音設定 - タスク完了を見逃さない

設定・環境構築5分で読めます

この記事でわかること

  • ターミナルのベル音で済ませる一番簡単な設定
  • Notification hook で、通知の種類ごとに違う音を鳴らす方法
  • macOS / WSL / Linux それぞれの音の鳴らし方と、鳴らないときの切り分け

Claude Code を日常的に使っていること。~/.claude/settings.json を編集できれば十分です。

ポイント
Claude Code でタスクが完了したときに音で通知する方法を解説します。長時間の処理中に画面を見続ける必要がなくなります。

はじめに

Claude Code でビルドやテストを実行している間、ずっと画面を見つめていませんか?通知音を設定すれば、タスク完了時に音で知らせてくれるので、他の作業をしながら待つことができます。


方法1: Terminal Bell(シンプル)

最もシンプルな方法です。通知チャンネルをターミナルベルにするだけで済みます。

Bash
claude config set --global preferredNotifChannel terminal_bell
注意
設定方法はその後変わりました。現在の Claude Code には対話的な設定画面があり、/config と打って Settings から選ぶのが確実です(/config key=value で直接指定することもできます)。上のコマンドが効かない場合はそちらを使ってください。設定が反映されたかは /status で確認できます。

これで、タスク完了時にターミナルのベル音が鳴るようになります。動作確認は echo -e "\a" で行えます。

方法2: Hooks(カスタマイズ可能)

より柔軟な設定が可能な方法です。好きなサウンドファイルを指定したり、通知タイプごとに異なる音を設定できます。設定ファイルは ~/.claude/settings.json です。

基本設定(macOS)

JSON
{
  "hooks": {
    "Notification": [
      {
        "matcher": "idle_prompt",
        "hooks": [
          {
            "type": "command",
            "command": "afplay /System/Library/Sounds/Glass.aiff"
          }
        ]
      }
    ]
  }
}

通知タイプ(matcher)の種類

matcher 発火するタイミング
agent_completed エージェントが作業を終えた時
agent_needs_input エージェントが入力を必要としている時
idle_prompt 長めの処理の後、入力待ちになった時
permission_prompt ツール実行の許可を求める時
auth_success 認証成功時
elicitation_dialog MCP サーバーが入力を求めた時
elicitation_url_dialog MCP サーバーが URL 入力を求めた時
elicitation_complete 入力のやりとりが完了した時
elicitation_response 入力に応答があった時
Tips
この記事の目的、つまり「作業が終わったことを知りたい」なら、一番直接的なのは agent_completed です。idle_prompt は「入力待ちになった」という別の条件なので、両方仕掛けておくと取りこぼしが減ります。

複数の通知タイプに対応する設定

JSON
{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt",
        "hooks": [
          {"type": "command", "command": "afplay /System/Library/Sounds/Ping.aiff"}
        ]
      },
      {
        "matcher": "idle_prompt",
        "hooks": [
          {"type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff"}
        ]
      }
    ]
  }
}

macOS で使えるシステムサウンド

/System/Library/Sounds/ にある標準サウンドファイルを使用できます。

  • Glass.aiff - クリアなガラス音(おすすめ)
  • Ping.aiff - 短いピン音
  • Submarine.aiff - 潜水艦のソナー音
  • Blow.aiff - ポップな音
Bash
# 利用可能なサウンド一覧を確認
ls /System/Library/Sounds/

# サウンドを試聴
afplay /System/Library/Sounds/Glass.aiff

プラットフォーム別の設定

Windows(WSL)

JSON
"command": "powershell.exe -c [System.Media.SystemSounds]::Beep.Play()"

Linux

JSON
"command": "paplay /usr/share/sounds/freedesktop/stereo/complete.oga"

VS Code での設定

VS Code のターミナルで Terminal Bell を使う場合は、設定画面で「terminal bell」と検索し、Terminal > Integrated: Enable Bell を有効化してください。


Tips

Tips
/hooks コマンドで対話的に設定することもできます。JSON を直接書くよりキー名を間違えにくいので、最初の 1 つはこちらで作るのが楽です。
注意
hook の commandフルパスで書くのが安全です。hook はあなたのシェルの設定(.zshrc など)を読まない環境で走ることがあり、alias や PATH を前提にしたコマンドはしばしば見つかりません。上の例の afplay は macOS の標準パスにあるのでそのままで動きます。

トラブルシューティング

音が鳴らない場合の確認ポイント:

  1. echo -e "\a" で確認(ターミナル側の問題か切り分け)
  2. iTerm2: Preferences → Profiles → Terminal → 「Silence bell」のチェックを外す
  3. システムの音量がミュートになっていないか確認

まとめ

  • シンプルに使うなら terminal_bell 設定がおすすめ
  • カスタマイズしたいなら Hooks で好きなサウンドを設定
  • 通知タイプごとに音を分けられる
  • プラットフォームに応じてコマンドを調整する

参考リンク

更新履歴

  1. Notification hook の matcher 一覧を現行の 9 種類に更新(agent_completed / agent_needs_input / elicitation 系 3 つを追加し、表に整理)。「作業完了を知る」目的なら agent_completed が直接的だという指針を追加。現在は /config から設定するのが確実であることを注記。参考リンクがテキストだけで URL がなかったのを公式ドキュメントへのリンクに差し替え。ファイルパス・コマンド・matcher 名をインラインコードに統一し、エスケープが見えていた箇所を修正。コードブロックの言語指定を plain text から json に修正。hook の command をフルパスで書くべき理由を追加。「この記事でわかること」「対象読者」を概要プロパティへ移動。OGP Description を内容に即したものに差し替え。

この記事のタグ