Claude Code のフックで自動チェック|通知・守りたいファイルを止める
このレッスンの要点
- フックは、決まったタイミングで必ず動く自分のコマンド。Claude が忘れても、毎回実行されます
- 書く場所は settings.json の hooks。「いつ(イベント)」「どの道具のとき(matcher)」「何をする(command)」の3段で書きます
- フックは、あなたのパソコンの上でそのままコマンドを動かします。中身を読んで、試してから使います
フックとは
Claude Code の決まったタイミング(ファイルを書く前・書いたあと・通知のときなど)で、必ず動く自分のコマンド。
くわしく見るは、Claude Code の決まったタイミングで、必ず動く自分のターミナルに打ちこむ、パソコンへの短い指示のこと。打ってから Enter を押すと動きます。
くわしく見るです。CLAUDE.md の指示は Claude が忘れることもありますが、フックは Claude が選ぶかどうかに関係なく、そのときが来るたびに実行されます。
| イベント | 動くとき |
|---|---|
SessionStart | セッションが始まったとき・再開したとき |
UserPromptSubmit | お願いを送って、Claude が読む前 |
PreToolUse | 道具(ファイルの編集やコマンド)を使う前。ここで止められる |
PostToolUse | 道具を使ったあと(もう実行済みなので、取り消しはできない) |
Notification | Claude Code がお知らせを出すとき(入力待ちなど) |
Stop | Claude が返事を終えたとき |
書き方の3段
フックは settings.json の hooks に書きます。「いつ(イベント)」→「どの道具のとき(matcher)」→「何をする(command)」の3段です。matcher に "Edit|Write" と書けば、ファイルの編集と書きこみのときだけ動きます。空の "" なら、いつでも動きます。
全部のプロジェクトで使うならユーザー設定(~/.claude/settings.json)、チームで使うなら .claude/settings.json に書きます。すでに hooks があるときは、全体を置きかえずに、その中に足します。自分で書かなくても、したいことを説明して Claude にフックを書いてもらえます。
守りたいファイルの編集を止める
PreToolUse のフックは、道具を使う前に動き、2 で終わると、その操作を止められます。そのときエラーの出力に書いた理由が、Claude に伝わります。
使うには、スクリプトを .claude/hooks/protect-files.sh に保存して、chmod +x .claude/hooks/protect-files.sh で動かせるようにし、.claude/settings.json に登録します(3つとも下の「やってみよう」にあります)。スクリプトは jq というコマンドを使うので、入っていなければ先に入れます(Mac なら brew install jq)。
確かめる・安全に使う
/hooks と打つと、設定されているフックと、どの設定ファイルから来ているかが見られます(見るだけの画面です)。フックが出てこないときは、JSON に最後のカンマやメモが入っていないか、置き場所が合っているかを見ます。全部のフックを一度止めたいときは、"disableAllHooks": true を設定します。
・ターミナルで一度試してから登録する
・matcher はしぼる
・リポジトリに入っているフックを、確かめずに動かす
「CLAUDE.md に『毎回〜して』と書けば、必ずやってくれる」わけではありません
やってみよう
- Mac なら、下の依頼文で「入力待ちを知らせる通知」(その下の JSON と同じもの)を、ユーザー設定(~/.claude/settings.json)に足してもらいます(Windows・Linux 用のコマンドも公式ドキュメントにあります。「Windows 用の通知のフックを作って」のように頼めます)
claudeを起動して/hooksと打ち、Notification の下に入っているか確かめますShift + Tabで「⏸ manual mode on」にして、確認が必要な作業を頼み、別のウィンドウに切りかえて通知が出るか待ちます- 通知が出ないときは、ターミナルで
osascript -e 'display notification "test"'を一度打ってから、Mac の「システム設定 > 通知」で Script Editor の通知を許可します
確認問題
/hooks でできることは?普段、Claude に毎回お願いしている「作業のあとの決まりごと」を1つ書き出してみましょう。それがフックにする候補です。
この記事の用語
コース3 設定編の目次
- 1設定ファイル(settings.json)の基本✓ できた
- 2許可ルールを決めて確認を減らす✓ できた
- 3CLAUDE.md の育て方✓ できた
- 4自分用のコマンド・スキルを作る✓ できた
- 5フックで自動チェック✓ できた
- 6MCP で外部サービスとつなぐ✓ できた
- 7サブエージェントの使い分け✓ できた
- 8Git と GitHub で変更を守る✓ できた