2026年9月17日改稿:本記事の初稿はClaude Codeが執筆しました。今回、ChatGPTで本文を改稿し、Claude Codeの公式Hooksガイドとリファレンスを確認して、設定例を公式に確認できる内容へ改めました。各設定例は公式例の紹介で、筆者の環境での動作実績を示すものではありません。
Claude CodeのHooksは、特定のイベントが起きたときに、決めておいた処理を実行する仕組みです。例えばツールを使う直前の確認、編集後の整形、入力待ちの通知に使えます。いっぽう、Hooksそのものは「毎朝7時にパソコンを起動して仕事を始める」予約機能ではありません。時間指定の定期実行とは役割が違います。
この記事では、非エンジニアでも安全に試しやすい通知の設定を1つ示し、残りの用途は実装時に確認すべき条件として整理します。筆者の過去の運用記録と、今すぐコピーして動く設定例を混同しません。仕様の確認日は2026年9月17日です。
社長:フックを入れれば、朝の定期作業まで全部勝手に動くのか?
凛:そこは分けよう。フックは何かが起きた時に反応する仕組みよ。
策:時刻で開始する処理は別のスケジューラーが担当します。まずは通知の例で仕組みを確認しましょう。
Hooksが動く場面と、動かない場面
Claude Codeには複数のHookイベントがあります。よく使う例は、ツール実行前のPreToolUse、成功後のPostToolUse、ユーザーが指示を送った時のUserPromptSubmit、入力待ちの通知を受けるNotificationです。「3種類だけ」ではありません。新しいイベントや条件が追加される可能性があるため、一覧は公式Hooksリファレンスで確認してください。

Hookを入れたからといって、Claude Codeが起動していない時間に任意の作業が始まるわけではありません。定時の処理が目的なら、Macでの定期実行と切り分けます。特にPCがスリープ中・電源OFFのときは、予定時刻の実行や後追い処理を別途検証する必要があります。
設定場所はユーザー全体なら~/.claude/settings.json、特定のプロジェクトだけなら.claude/settings.jsonなどです。既存の設定があれば、そのJSONの中のhooksへ追加し、他のイベント設定を消さないでください。設定ファイルには認証情報を直接書かず、共有するプロジェクト設定に個人のパスや秘密を持ち込まないことも大切です。
📌 2026年10月8日追記:新しく出た「Mods(モッド)」との違い
2026年10月1日、Claude Codeに「Mods」という仕組みが加わりました。この記事のHooks(公式ドキュメントでは「settings hook」と呼び分け)は、設定ファイルに書いたコマンドを決まった場面で動かし、操作を止めたり記録したりするものです。
Modsはプラグインとして入れる小さなプログラム(JavaScript/TypeScript)で、Claude Codeの中で動きます。画面の横に専用の表示やボタンを足したり、指示文やツールの実行を書き換えたりできます。Claudeに「こんなModを作って」と頼んで作ってもらうこともできます。「止める・記録する」だけなら、この記事のHooksで足ります。
⚠️ 他人が配るModは、信用できる作者・配布元のものだけを入れてください。Modはあなたと同じ権限で動き、ファイルの読み書き、ネット通信、設定ファイルに置いた秘密情報の読み取りまでできます(安全のための隔離=サンドボックスの外で動きます)。入れる前にclaude plugin validateで、そのModが何をするか一覧できます。(2026年10月8日時点・出典:Claude Code公式ドキュメント「Mods overview」/Claude公式ブログ)
社長:ツールを使う前なら何でもブロックできるのか?
凛:「書いたつもり」の設定が動いていないと危ないわ。
策:イベント名、対象ツール、入力内容、終了コードを合わせてテストします。保護用途は特に実物で確認します。
最初の設定:入力待ちをMacに通知する
公式ガイドの通知例は、危険なファイル操作をせずにHookの動作を確認できます。以下は設定の構造を示す例です。すでにsettings.jsonがある場合、ファイル全体をこの内容で上書きしてはいけません。既存設定を退避し、hooks内にNotificationを追加します。

{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
}
]
}
]
}
}
Notificationイベント時にmacOSのosascriptで通知を表示します。Mac以外ではコマンドをその環境向けに変えてください。実行前に「どの端末で、どの通知を出すか」を確認し、試験用の小さな設定から始めるのが安全です。これは通知であり、Notionへの投稿でもバックアップでもありません。公式Hooksガイドの通知例に沿っています。
設定後はClaude Codeの/hooksでイベントと設定元を確認し、実際に入力待ちとなる操作で通知が出るか試します。/hooksは参照用なので、設定の追加・修正そのものは設定ファイルで行います。通知が出ない場合は、JSON構文、設定ファイルの場所、対象イベント、macOS側の通知許可を順に見ます。ログの出力先を一律に~/.claude/logs/と決めつけないでください。
社長:この設定なら、いきなりブログを更新したりはしないな。
凛:うん。まず「発火したか」を通知で確かめるのが分かりやすい。
策:成功を確認してから、対象を絞った別のHookを検討しましょう。既存の設定は必ず残します。
次に検討できる5つの用途
1. ツール実行前の保護
PreToolUseは操作の前に走ります。保護対象を明確にしたスクリプトで入力JSONを読み、該当操作だけを止める設計にします。公式リファレンスでは、コマンド型Hookが終了コード2を返すと、ブロック可能なイベントでは処理を止められます。終了コード1だけでは通常、操作を止められない点に注意してください。公式:終了コードとブロック。
2. ツール実行後の整形
PostToolUseはツールが成功した後に走ります。例えば編集したファイルの整形に使えます。ただし、後から走るので元の操作を取り消す安全装置にはなりません。失敗時のイベントや複数Hookの動きは別に確認が必要です。全ファイルを無条件で整形すると、変更していないものまで巻き込むため対象を絞ります。
3. 入力前の文脈追加
UserPromptSubmitは指示送信時のイベントです。定型の注意事項を文脈として渡すような用途がありますが、送信文の改変・拒否に関わる設定は慎重に扱います。実際にどう見えるかを小さな入力で確認し、重要な承認判断をHookだけに任せないでください。
4. 入力待ちの通知
Notificationなら、画面から離れている間に入力が必要になったことを知らせられます。上の設定はこの用途です。通知文に秘密情報、記事本文、顧客情報を含めないようにします。外部のSlackやメールに転送する場合は、送信自体が別の操作なので宛先と内容を事前に確認してください。
5. 設定変更の監査
公式ガイドには設定変更を監査する用途もあります。記録だけでよいのか、変更自体を止める必要があるのかを先に決めます。「削除前にログへ時刻を書く」ような設定は監査ログであり、ファイルのバックアップにはなりません。復元可能な退避が目的なら、対象、保存場所、同名ファイル、復元テストまで別途設計してください。
社長:ログが残っていても、消したファイルは戻らないんだな。
凛:そう。記録とバックアップは別物よ。
策:危険な操作にはHookだけでなく、通常の権限設定、事前承認、バックアップを重ねます。
導入前に確認する5つの落とし穴
設定ファイルを壊さない
JSONは通常コメントを書けません。説明は別のメモに残し、設定ファイルはJSONとして検証します。変更前のコピーを保存し、エラーが出ても設定全体を初期化せず、直前の差分だけを戻せるようにします。

「動いたはず」を検証する
Hookのコマンドが存在しない、タイムアウトする、条件に一致しないなどの場合、保護が効かないことがあります。公式リファレンスは、コマンドが起動できない場合や一般的なタイムアウトでは、PreToolUseが通常の権限確認へ進むケースを説明しています。重要な禁止操作はHookだけに依存せず、テスト用の安全な入力で「壊れていたら失敗する」検査をしてください。
副作用と複数Hookを考える
同じイベントに複数のHookがある場合、別のHookが拒否しても、兄弟Hookのコマンドが走ることがあります。通知・書き込み・外部送信を混ぜると、止めたつもりでも副作用が残り得ます。まず単一の小さなHookで試し、複数を組み合わせるときは実行順序と副作用を別々に検算します。公式ガイド:複数Hookの動作。
実行時間と情報漏洩を抑える
長い処理を毎回のイベントに入れると、会話中の待ち時間が増えます。またHookは自分の端末上でコマンドを動かすため、認証情報や作業本文を不用意にログ・通知へ送らないでください。秘密情報を含む作業では、入力JSON全体をそのまま外部へ転送しない設計にします。
設定したまま忘れない
試験用のHookを残したままにすると、後から追加した設定と重なって予期せぬ動きになります。/hooksで設定元とイベントを定期的に一覧し、不要になった設定を判別できるよう、目的と変更日を設定ファイルとは別のメモに残します。停止するときは他のHookまで消さないよう差分を確認してください。
よくある質問
Claudeの無料プランならHooksも使えますか?
利用可否と料金は契約状態や提供条件で変わるため、利用前に公式料金ページとClaude Codeの案内を確認してください。Hooksの設定機能と、Claude Code自体を使える契約条件は分けて考えます。
一時的に止めるには?
設定全体を消す前に、/hooksで設定元を確認します。公式リファレンスにはHook全体を無効化するdisableAllHooksがありますが、個別の一時停止スイッチではありません。どの設定に影響するか確認してから使います。JSONにコメントを書いて停止する方法は使えません。
初心者は何から試す?
最初は入力待ち通知のような、失敗しても元データを変えない用途がおすすめです。削除の禁止、WordPressの投稿前ゲート、外部サービスへの自動投稿は、対象・停止条件・復旧方法の設計が必要です。基本操作を知りたい方はClaude Code入門、日常での使い道は最初に試す10のことへ進んでください。
まとめ:まず安全な通知から試す
HooksはClaude Codeのイベントに処理を結びつける仕組みです。定期実行や完全なバックアップとは別です。操作を止めるには終了コード2を使うこと、JSONにはコメントを書けないことに注意してください。まず通知で設定元と発火を確認し、保護や外部連携は公式仕様と実地テストをそろえてから導入してください。
次の一手は、既存のsettings.jsonを退避し、上の通知設定を追加して/hooksと実際の通知を確認することです。自動化全体の設計が必要なら、副業の全体マップも参照できます。設定例を丸ごと貼り替える前に、今あるHookを必ず一覧にしてください。
社長:まず通知で確かめてから、守る仕組みを足す。
凛:一歩ずつなら、間違った設定を増やさずに済むね。
策:設定が読めることと、実際に期待どおり動くことの両方を確認します。
※ 本記事は、初稿を Claude Code(筆者が使用中のAIアシスタント)が執筆し、ChatGPT で改稿しています。出典と確認日は該当箇所に記載しています。
初稿:Claude Code。2026年9月17日改稿:ChatGPT。仕様の根拠はClaude Code公式Hooksガイドと公式リファレンスです。この記事の通知設定は公式例の紹介であり、筆者の環境での動作実績を示すものではありません。
2026年10月15日更新(見直し):AIで執筆していることの明示文を、末尾にも他の記事と同じ形で入れました。それ以外の箇所は今回確認していません。

