Anthropic の公式の説明(下の「公式のページ」)を、内容を足さずに読みやすい日本語に書き直したものです。公式の翻訳ではなく、Anthropic が作ったものでもありません。公式は予告なく変わるので、使う前に公式のページもご覧ください。
このページで分かること
- フックが何で、どんなときに決まった動作を自動で挟めるか
- フックを書く場所(設定ファイル)と、場所ごとに効く範囲
- 公式が挙げている例の要点と、動かないときに確かめること
先に知っておく言葉
- フック:Claude Code の決まった時点(道具を使う前、ファイルを直したあと、セッションの始まりなど)に、自動で動く自分で決めた処理。Claude がその都度決めるのではなく、決まった時点で必ず動きます
- 道具(ツール):Claude がする一つ一つの操作。ファイルを読む・コードを直す・コマンドを動かす、など
- コマンド:パソコンに文字で出す命令
- セッション:Claude との一続きの会話
- イベント:フックが動くきっかけになる時点
- 設定ファイル:Claude Code の設定を書いておく JSON 形式のファイル
- マッチャー:フックが動く場面を絞り込む条件
- 終了コード:命令が終わるときに返す数字。フックではこれで「止める」などを伝えます
- 要約(コンパクション):会話の記憶がいっぱいに近づいたとき、会話をまとめて場所を空けること
- サブエージェント:自分専用の記憶の枠で、任された作業をする手伝いの AI
フックでできること
フックは、あなたが決めた処理を、Claude Code の決まった時点で必ず動かす仕組みです。Claude の判断に任せずに、毎回同じことを起こしたいときに使います。公式は、プロジェクトの決まりを守らせる、繰り返しの作業を自動にする、今使っている道具とつなぐ、を挙げています。
処理の種類は5つあります。
- command:シェルのコマンドを動かします。ほとんどのフックはこれです
- http:起きたことのデータを、指定した URL に送ります
- mcp_tool:設定済みの MCP サーバーの道具を呼びます
- prompt:Claude のモデルに1回だけ判断させます。決まった規則でなく、判断が要るときに使います
- agent:サブエージェントがファイルを読む・コードを探すなどして確かめてから判断します。試験的な機能で、変わることがあります
最初のフックを作る
公式の手順で作るのは、Claude の作業が止まってあなたの返事を待つ状態になったら、パソコンの通知で知らせるフックです。
~/.claude/settings.json(無ければ作る)に、hooksの中にNotificationのフックを足します。通知を出す命令は、macOS・Linux・Windows で違います。すでにhooksがあるときは、丸ごと置き換えずに、並べて足します/hooksを打つと、イベントの一覧と、それぞれに設定されたフックの数が出ます。Notificationを選び、足したフックがあるか確かめます。このメニューは見るだけなので、足す・変える・消すときは設定ファイルを直すか、Claude に指示します- CLI で
Shift+Tabを押して権限モードを Manual にし(画面の下に⏸ manual mode onと出るまで)、許可が要る作業を指示し、ターミナルから別の画面に移ります。通知が届けば動いています
CLI では、したいことを説明して、Claude にフックを書かせることもできます。デスクトップアプリも同じ設定ファイルを読むので、設定に書いたフックはデスクトップアプリでも効きます。
どこに書くか(効く範囲)
~/.claude/settings.json:自分のすべてのプロジェクト。自分のパソコンだけ.claude/settings.json(プロジェクトの中):そのプロジェクトだけ。リポジトリに入れて共有できます.claude/settings.local.json:そのプロジェクトだけ。共有しません- 組織の管理設定:組織全体。管理者が決めます
- プラグイン・スキル・サブエージェント:プラグインが有効な間/スキルを呼んだあとのセッションの残り/そのサブエージェントが動いている間
すべてのフックを止めるときは、設定ファイルに "disableAllHooks": true を書きます。どの値が効くかは設定ファイルの優先順で決まり、プロジェクトの設定ファイルが自分の設定より優先されることがあります。また、組織の管理設定にあるフックは、管理設定のほうにも書かないと動き続けます。Claude Code が動いている間に設定ファイルを直しても、ふつうは自動で読み込まれます。
動くきっかけと、絞り込み
公式の一覧には33のイベントがあります。このページで扱う主なものは次のとおりです。
- SessionStart:セッションを始めたとき・再開したとき
- UserPromptSubmit:あなたが指示を送ったとき(Claude が読む前)
- PreToolUse:道具を使う前。ここでは操作を止められます
- PermissionRequest:あなたに許可を聞こうとするとき
- PostToolUse:道具の操作がうまくいったあと
- Notification:Claude Code が通知を出すとき
- Stop:Claude が返事を終えたとき
- SessionEnd:セッションが終わるとき
マッチャーを付けないと、そのイベントが起きるたびに動きます。たとえば PostToolUse に Edit|Write のマッチャーを付けると、ファイルを直す道具のあとだけ動きます。当てはまるフックが複数あると、全部が同時に動きます。
フックからの返し方
フックは、起きたことのデータを JSON で受け取り、終了コードと出力で Claude Code に返します。
- 0:異議なし。PreToolUse では「許可」にはならず、ふだんの確認の流れのままです
- 2:その操作を止めます。理由を書いておくと、イベントによって Claude に伝わったり、あなたに見えたりします。止められないイベントもあります
- 0 で JSON を返す:より細かく決められます。たとえば PreToolUse では「許可・拒否・あなたに聞く」を返せます
PreToolUse で複数のフックの許可の答えが割れたときは、いちばん厳しい答えが使われます。
公式が挙げている使いどころ
公式のページに書いてある例・すすめだけを並べます。
- 入力待ちを知らせる:Claude が入力や許可を待っているときに、デスクトップの通知を出す
- 直したファイルを自動で整える:Claude がファイルを直すたびに、整形の道具(Prettier)をかける
- 大事なファイルを守る:
.envや.git/の中などを直そうとしたら、直す前に止める。Claude には止めた理由が伝わり、やり方を変えられます - 要約のあとに大事な前提を入れ直す:要約で細かい所が落ちることがあるため、要約のあとに決まりや最近の作業を思い出させる。セッションを始めるたびに入れたいなら CLAUDE.md を使う手も、とあります
- 設定の変更を記録する:作業中に設定やスキルのファイルが変わったら記録する。変更を止めることもできます
- フォルダやファイルが変わったら環境を読み直す:フォルダごとに設定が違うプロジェクトで使います
- 決まった確認だけ自動で認める:たとえば、Plan の案ができたときの確認。マッチャーはできるだけ狭くするように、とあります。空や何にでも当たる形にすると、ファイルの書き込みやコマンドも含め、すべての確認を自動で認めてしまいます
- prompt と agent の使い分け:フックが受け取るデータだけで決められるなら prompt、コードの実際の状態を確かめる必要があるなら agent。本番の作業の流れでは、agent より command を使うのが公式のすすめです
- http:Web サーバーや外のサービスで処理したいとき。たとえば、チーム全体の道具の使い方を記録する共有の仕組み
- 権限モードで外せない決まりを作る:PreToolUse のフックが拒否すると、Bypass permissions でも止まります。逆に、フックが許可しても、設定の禁止のルールは越えられません。フックは制限を強めることはできても、権限のルールが認める範囲を超えて緩めることはできません
- 確実に許可・禁止したいとき:フックの絞り込み(
ifの欄)は完全ではないため、権限の仕組みのほうを使うように、とあります - 共有や本番の環境に入れる前に:リファレンスの安全についての節を読むように、とあります
気をつけること
- PostToolUse は、道具の操作が済んだあとに動くので、操作を取り消せません
- Stop は、作業が終わったときだけでなく、Claude が返事を終えるたびに動きます。あなたが途中で止めたときは動きません
- Stop のフックが、進みのないまま8回続けて止めると、Claude Code はそのフックを越えて止まります。この回数の上限は、環境変数で上げられます
- command のフックは、
/で始まる命令や道具の呼び出しはできません
動かないとき
/hooksで、正しいイベントの下にあるかを見ます。マッチャーは大文字と小文字を区別します- 「command not found」と出たら、スクリプトの場所を絶対パスか
${CLAUDE_PROJECT_DIR}で書きます - スクリプトが動いていないなら、実行できる状態にします(
chmod +x) /hooksに出ないなら、JSON の書き方(末尾のカンマやコメントは使えない)と、ファイルの場所を確かめますCtrl+Oで記録の画面を開くと、フックの結果が見られます。うまく動いたときは、ふつう何も出ません。詳しく見るときは、claude --debug-fileで記録を残すか、途中で/debugを打ちます
あわせて読む
- 権限モード(Permission mode):Claude に聞かずに進めさせる範囲と、切り替え方
- コンテキストウィンドウ(Context window):作業の記憶がいっぱいになったとき
- CLAUDE.md と自動メモリ(Auto memory):プロジェクトの決まりごとを覚えさせる
公式のページ
- Automate actions with hooks(英語・原文)code.claude.com ↗
- hooks でアクションを自動化する(公式の日本語版)code.claude.com ↗
- Use Claude Code Desktop の「Shared configuration」(デスクトップアプリでの説明)code.claude.com ↗
- Glossary(用語集。「フック」「道具」「セッション」「要約」「サブエージェント」の言い換えに使いました)code.claude.com ↗
確認メモ:2026年10月1日に、公式のフックのガイドのページ(英語・日本語)とデスクトップアプリのページ、用語集を開いて、フックの種類・最初のフックの手順・書く場所・イベント・返し方・例を突き合わせました。公式のページに更新日の表示は無いため、この日付は「このサイトが確かめた日」です。公式のページは約6万字あり、設定の例(JSON とシェルの命令)、各 OS の通知の命令と通知が出ないときの対処、通知の種類ごとのマッチャーの一覧、33のイベントの全部と、イベントごとのマッチャーの値、JSON の欄の細かい書き方、if の欄の書き方、待ち時間の上限、ターミナルを使わない実行(-p)のときの扱い、JSON が効かないときの原因(シェルの設定ファイルの出力など)は、このページには載せていません。「イベント」「設定ファイル」「マッチャー」「終了コード」の言い換えは公式の用語集に無く、ふつうの意味を一言で添えたものです。「コマンド」は、公式の用語集では /名前 で呼ぶ指示を指しますが、このページでは「パソコンへの命令」の意味で使っています。公式の英語版と日本語版で、内容に違いはありませんでした。