😇

Claude Codeで「/hooks」を設定したのに通知が来ない!!そんなあなたに読んでほしい【Mac】

に公開

はじめに

記念すべきZenn初投稿です!🎉
この記事では、AIコーディング支援ツール「Claude Code」をさらに便利にするHooks機能のセットアップ方法について、つまずきがちなシステム設定からご紹介します。

そもそも Claude Code とは?

本題に入る前に「Claude Codeって何?」という方のために簡単にご紹介します。
Claude Codeは、AIモデル「Claude」を開発したAnthropic社が提供する、ターミナル上で動作するAIコーディング支援ツールです。自然言語での指示で、コーディングに関する様々なタスクをこなしてくれます。

じゃあ Hooks って何?

簡単に言うと、Claude Codeの特定の動作の前後で、あらかじめ決めておいたシェルコマンドを自動実行させる仕組みです。
例えば、コードの実行開始や終了などのタイミングで、好きなコマンドを自動で実行してくれます。

Hooksでできることの例

  • 通知のカスタマイズ:処理の完了をSlackやデスクトップ通知で受け取る
  • 自動コードフォーマット:ファイル編集後にprettierなどのフォーマッターを自動実行する
  • コンプライアンスのためのログ記録:実行されたコマンドをすべて記録して監査証跡を残す
  • カスタム権限設定:本番環境のファイルなど、重要なファイルへの変更をブロックする

今回は通知のカスタマイズをしていきます!!

1. 前準備:通知ツールのインストール

まずは、Macのデスクトップに通知を送るためのコマンドラインツールterminal-notifierをインストールします。

まずはターミナルを開き、以下のコマンドを実行してください。

brew install terminal-notifier

2. macOSのシステム設定: スクリプトエディタ

Hooksで設定した通知はVSCodeやCursorといったエディターツールから通知を受け取るのではなく、macOSの「スクリプトエディタ」を使って通知を受け取ります。
そのため、スクリプトエディタで問題なく通知が受け取ることができるか、これから確認していきたいと思います!

MacのSpotlight検索(⌘ + Space)で「スクリプトエディタ」と入力し、アプリケーションを起動します。
起動したら以下の画面が表示されるので、「新規書類」をクリック。

新しいウィンドウに以下のAppleScriptコードを貼り付け、「実行(▶︎)」ボタンをクリックします。

display notification "この通知が見えればOKです!" with title "Claude Code Hooks テスト"

初めて実行する際には、権限を要求するダイアログが表示されるはずです。ここで「許可」をクリックしてください。

最後に「システム設定」>「通知」を開き、アプリケーションのリストの中に「スクリプトエディタ」が追加され、通知が許可されていることを確認すれば完了です。

ここまでの前準備・システム設定ができていないとClaude Codeで「/hooks」を設定しても通知が来ません😇

3. Claude CodeでHooksを設定する

さあ、いよいよClaude CodeでHooksを設定します!
以下、参考にさせていただいた記事です。
https://zenn.dev/the_exile/articles/claude-code-hooks

Claude Codeを起動し、/hooksコマンドを実行すると、設定画面に入ることができます。

/hooks

ここから、様々なイベントに対して実行したいコマンドを登録していきます。

3.1 Hook設定①: 確認待ちを通知する

まずは「Claude Codeがユーザーの許可が必要な操作を行うために一時停止し、確認を求めているタイミングで、デスクトップ通知を出す」というHookを設定してみます。

Notification - When notifications are sentを選択し

次の画面で+ Add new hook... を選択します。

次に以下のCommand欄に

以下のコマンドを入力してEnterを押します。

osascript -e 'display notification "Claude Codeが許可を求めています" with title "Claude Code" subtitle "確認待ち" sound name "Glass"'

次に、設定の保存場所を尋ねられるのでUser settingsを選択します。

設定スコープについて

  • Project settings (local)このプロジェクト内、かつ自分のPCでのみ有効です(Git管理外)
  • Project settingsこのプロジェクト内でのみ有効です(Git管理し、チームで共有可能)
  • User settingsどのプロジェクトでも共通で有効になります

なので、どのプロジェクトでも共通で使いたい通知設定はUser settingsを選ぶのがおすすめです💡

3.2 Hook設定②: タスク完了を通知する

次に「Claude Codeが、ユーザーから依頼された一連のタスク(コード生成やファイル編集など)をすべて完了したタイミングで、デスクトップ通知を出す」というHookを設定してみます。

Stop - Right before Claude concludes its responseを選択

先ほどと同様に+ Add new hook...を選択し、Commandの欄に以下のコマンドを入力します。

osascript -e 'display notification "タスクが完了しました" with title "Claude Code" subtitle "処理終了" sound name "Hero"'

次の画面で同様にUser settingsを選択します

これで、Claude Codeが何か作業を終えるたびに、デスクトップに通知が表示されるようになります!

まとめ

今回は、Claude Codeの「Hooks」について、その概要からMacでの具体的な設定方法までをご紹介しました。
私は最初Hooks機能を設定したときにシステム設定を飛ばしていたので「なんで通知こないんだ?🙂」と頭を悩ませていました…

この記事がみなさんの参考になれば幸いです🙏🏻

Discussion