ゼスト Tech Blog

ゼストは「護りたい。その想いを護る。」をミッションに、在宅医療・介護業界向けのSaaSを開発しています。

Claude Codeで通知を出す方法3選

こんにちは!株式会社ゼストでエンジニアをしている山下です。

ここ数ヶ月、Claude Codeの話題で盛り上がっていますね。ゼストでもClaude Codeを導入して、日々の業務で活用しています。

しかしClaude Codeを使っていると、

  • 放置していたらツールの使用確認で止まって全然進んでいない時がある
  • 作業が完了していることに気づかず放置してしまっていた

というような体験をみなさん一度はしたことがあるのではないでしょうか。

そこで今回は、Claude Codeで通知を出す方法をまとめました。

通知を実現する3つの方法

1. hooksを使う(個人的一番おすすめ)

Claude Codeには、特定のステップが完了したときに任意のコマンドを実行できるhooks機能があります。

公式ドキュメント:Hooks - Anthropic

設定例

{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "cat | jq -r '\"display notification \\\"\" + .message + \"\\\" with title \\\"\" + .title + \"\\\" sound name \\\"Glass\\\"\"' | xargs -I {} osascript -e '{}'"
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"作業が完了しました。\" with title \"Claude Code\" sound name \"Glass\"'"
          }
        ]
      }
    ]
  }
}

Notification : Claude Code が入力または何かを実行する許可を待機しているときに通知を受け取る方法をカスタマイズします。
Stop : Claude Code が停止したときに通知を受け取る方法をカスタマイズします。

このほかにも PreToolUsePostToolUse など、さまざまなフックが用意されています。

この機能を使うことで、ツールの実行確認や作業完了時にも通知が出るようになります。

osascriptを使うことで通知が届きます

メリット

  • Claude Codeのライフサイクルに応じて確実に通知を出すことができる
  • ツールの実行結果に応じて通知内容をカスタマイズできる

デメリット

  • hooksで実行されるコマンドは、確認なしでユーザ権限で実行されるため、セキュリティ上の注意が必要
  • 設定例にある osascriptmacOS専用のコマンドです。他のOSでは環境に応じた通知コマンドに変更してください
  • macOSで初めて使用する際は、スクリプトエディタ.appから一度手動でスクリプトを実行し、通知の許可を与える必要があります*1

2. CLAUDE.mdを使う

グローバルのCLAUDE.mdファイルに通知の指示を記述することで、Claude Codeに通知を出すよう促す方法です。
hooks を知る前は、私はこれを使っていました。

設定例

## Notifications to users
When a task is completed or you need to ask the user to confirm before executing the command, 
be sure to execute the following command to notify the user: 
If you request confirmation, be sure to run the command before doing so.

`osascript -e 'display notification "<notification message for user>" with title "Claude Code" sound name "Glass"'`

メリット

  • 作業内容に応じて通知メッセージをカスタマイズできる

デメリット

  • Claude Codeの判断に依存するため、必ず通知が出るとは限らない

3. preferredNotifChannelを使う

Claude Codeが標準で提供している通知機能を使用する方法です。
私自身一度こちらも設定したのですが、通知音に気づかないことが多々あり osascript に戻ってしまいました。

claude config set --global preferredNotifChannel terminal_bell

公式ドキュメント:Claude Code設定 - Anthropic

メリット

  • 設定が非常にシンプルで、すぐに使い始めることができる
  • ターミナルのベル音で通知を受け取るため、環境に依存しない

デメリット

  • 音を聞き逃すと通知に気づかない可能性がある
  • 通知内容をカスタマイズすることができない
  • 実行環境によっては、ターミナルのベル音が鳴らない場合がある(例:VSCodeで使用する場合は、アクセシビリティ設定 accessibility.signals.terminalBell を有効にする必要がある*2

まとめ

Claude Codeで通知を実現する方法を3つ紹介しました。それぞれの方法には特徴があるので、用途や環境に応じて選択してください。

  • 確実性を求める場合hooksを使用
  • 柔軟なメッセージを求める場合CLAUDE.mdを使用
  • シンプルな設定を好む場合preferredNotifChannelを使用

お好みの方法を活用して、より快適なClaude Codeライフをお送りください!