MENU

Claude Code が終わったら音や通知で知らせる

Claude Code には、決まったタイミングでコマンドを実行する仕組みがあります。フックと呼ばれるもので、設定ファイルに書くだけで使えます。応答が終わったときに動くのが Stop です。

音で知らせる設定

  1. 設定ファイルを開く

    ~/.claude/settings.json を開きます。無ければ作ります。
  2. hooks を書き足す

    下の内容を貼ります。すでに他の設定があるときは、hooks の行だけを足してください。
  3. Claude Code を開き直す

    設定は起動時に読まれます。開いたままだと効きません。
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "aplay -q /usr/share/sounds/freedesktop/stereo/complete.oga"
          }
        ]
      }
    ]
  }
}

これで、Claude Code が応答を終えるたびに音が鳴ります。ファイルの場所は環境で違うので、鳴らないときは ls /usr/share/sounds/freedesktop/stereo/ で中身を見て、別のファイル名に変えてください。macOS なら afplay /System/Library/Sounds/Glass.aiff です。

設定ファイルの置き場所

全部のプロジェクトで効かせたいなら ~/.claude/settings.json、そのフォルダだけなら .claude/settings.json、自分だけで共有しないなら .claude/settings.local.json です。同じ項目があれば、フォルダ側が優先されます。
目次

画面に通知を出す

音ではなく通知を出したいときは、コマンドの中身を差し替えます。

"command": "notify-send 'Claude Code' '作業が終わりました'"

Linux の場合、通知を受け取る常駐プログラムが動いている必要があります。動いていないと org.freedesktop.Notifications was not provided というエラーになります。実際に手元で試したときも、デスクトップにログインしていない状態では出ませんでした。音のほうが確実です。

スマホに飛ばす

席を外すなら、スマホに送るのが確実です。ntfy というサービスを使うと、登録なしで送れます。

"command": "curl -s -d '作業が終わりました' https://ntfy.sh/自分だけの長い文字列"

スマホに ntfy のアプリを入れて、同じ文字列を購読しておくと届きます。この文字列を知っている人は誰でも同じ通知を見られるので、推測されない長いものにしてください。

複数を同時にやる

コマンドは ; でつなげます。音を鳴らしつつ、記録も残す形です。

"command": "aplay -q /usr/share/sounds/freedesktop/stereo/complete.oga; date >> /tmp/claude-hook.log"

動いていないと思ったら

コマンドの中に date >> /tmp/hook.log のような行を足して、ファイルが増えるか見てください。増えていればフックは動いていて、通知の側に原因があります。増えていなければ設定が読まれていません。

実際に試した結果

この記事の内容は Ubuntu で実際に動かして確かめました。フックに書いたコマンドが実行されること、音が鳴ること、ntfy にメッセージが届くことを確認しています。デスクトップ通知だけは、通知を受け取る常駐プログラムが無い環境では出ませんでした。エラーの文言もそのまま載せてあります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次