この記事では、ClaudeCodeのhooksについて解説していく。
skillsだの、hooksだの、effortだの、小難しいことをぺちゃくちゃ言いやがって、という気持ちはわかる。ただ、hooksの優先度は正直「中」くらい。なくても困らないけど、あると便利って感じ。
端的にいうと、hooksは「決まったタイミングで、決まった処理を必ず実行させる」機能だ。
非エンジニアにとっては、どんなときにどんなhooksを設定するのか、具体的なケースがわかった方がイメージしやすいと思う。なので、この記事では仕組みの説明はほどほどにして、使いどころを中心に紹介していく。
ClaudeCodeを触り始めたばかりの人や、一歩進んだ使い方をしたい人の参考になれば幸い。
ClaudeCodeの初心者向け講座を公開しているのでこちらもぜひ
ClaudeCodeのhooksとは
全体像をさくっと説明
hooksは、「〇〇したタイミングで、××を実行する」というルールをClaudeCodeに登録しておく機能だ。
たとえば、こんなことができる。
- Claudeの返答が終わったら、音を鳴らす
- Claudeがファイルを編集したら、自動で整形ツールをかける
- Claudeが特定のコマンドを実行しようとしたら、止める
この「〇〇したタイミング」のことを、公式ドキュメントでは「イベント」と呼んでいる。イベントは30種類以上あるけど、最初に知っておくのは次の4つくらいで十分。
Stop:Claudeが返答を終えたときNotification:ClaudeCodeが通知を出すとき(許可待ち・入力待ちなど)PreToolUse:Claudeがツール(ファイル編集やコマンド実行など)を使う直前PostToolUse:Claudeがツールを使い終わった直後

そして「××を実行する」の中身は、基本的にシェルコマンド(ターミナルで打つ命令)で書く。ここがCLAUDE.mdやskillsとの大きな違いだ。自然言語でお願いするというより、コードで「この処理を走らせろ」と指定するイメージ。
ちなみに、コマンドの代わりにClaudeのモデルに判断させる prompt タイプや agent タイプもある。ただ、まずは「hooksはコマンドで書くもの」と思っておけばOK。
それってCLAUDE.mdでいいのでは?
ここまで読んで、少しClaudeCodeを触ったことがある人なら「CLAUDE.mdに『〇〇のときは××して』って書いておけばいいんじゃない?」と思うかもしれない。
結論、確実にやらせたいことはhooksに書いた方がいい。
というのも、CLAUDE.mdに書いたルールは結構な頻度で守られないから。めっちゃ簡単な例だと、「日本語で返して」と書いてあっても英語で返ってくることがある。
CLAUDE.mdは、あくまで自然言語で「お願い」をしている感覚に近い。Claudeは読んだうえで従おうとはするけど、そこまでの厳密さはない。
一方でhooksは、決められたタイミングが来たらClaudeCode本体が処理を実行する。Claudeが「やるかどうか」を判断する余地がないんだ。公式ドキュメントでも、hooksはLLMが実行を選ぶかどうかに頼らず、特定の処理を必ず実行させるための仕組みだと説明されている。
使い分けとしてはこんな感じ。
CLAUDE.md:文体、方針、プロジェクトの前提など、Claudeに「理解してほしい」こと- hooks:通知、ブロック、自動整形など、毎回「必ず実行してほしい」こと

どうやって設定する?
設定の流れはざっくり3ステップ。
ただ、これらはClaudeCodeに「〇〇のhooksを設定して」と言えば簡単に設定できてしまうので、参考程度に見てもらえればOK。
① 設定ファイルにhooksを書く
hooksは settings.json という設定ファイルに書く。置き場所によって効く範囲が変わる。
~/.claude/settings.json:自分のPCの全プロジェクトで有効.claude/settings.json(プロジェクトのフォルダ内):そのプロジェクトだけで有効。チームで共有できる.claude/settings.local.json(プロジェクトのフォルダ内):そのプロジェクトだけで有効。自分専用

公式ドキュメントでも、やりたいことを伝えてClaudeにhooksを書いてもらう方法が紹介されている。
② /hooks で確認する
ClaudeCodeの入力欄で /hooks と打つと、設定されているhooksの一覧がイベントごとに表示される。ここに出てくれば登録はできている。
③ 実際に動かして試す
最後に、hooksが発動する状況を作って確認する。通知のhooksなら、Claudeに何か作業を頼んで、終わったときに通知が来るかを見ればOK。
ただ、hooksは自分のPCの上で、普通にコマンドとして実行される。中身がよくわからないhooksを、ネットからコピペして貼るのはやめておいた方がいい。Claudeに設定を頼んだときも、何をするコマンドなのかは一言説明してもらうのがおすすめ。
公式が紹介している使い方
抽象的な説明だけだとイメージしづらいと思うので、公式ドキュメントで紹介されている使い方をいくつか紹介する。
ファイルを編集したら自動で整形する
PostToolUse イベントを使う。Claudeがファイルを編集・作成した直後に、整形ツール(Prettier)を自動で実行する。
整形ツールは、文書の見た目を毎回同じルールに揃えてくれるツール。PrettierはMarkdownにも使えて、箇条書きの記号や空行のバラつきを自動で直してくれる。
また、実行するのは整形ツールでなくてもいい。原稿を編集したら校正ツール(textlintなど)で誤字をチェックする、といった使い方もできる。
大事なファイルの編集をブロックする
PreToolUse イベントを使う。Claudeが .env(パスワードやAPIキーなどを置くファイル)や .git/ の中身を編集しようとしたら止める。
つまり、「このファイルだけは触るな」というリストを作っておける。非エンジニアなら、公開済みの原稿や契約書のフォルダを入れておくイメージだ。
止めた理由はClaudeにも伝わる。なので、作業がそこで止まるのではなく、Claudeは別のやり方を考えてくれる。
特定の許可確認を自動で承認する
PermissionRequest イベントを使う。毎回「許可しますか?」と聞かれる操作のうち、決まったものだけを自動で許可する。
公式の例は、プランモードの確認。プランモードは、Claudeが作業の前に計画を出してくれるモードだ。計画ができるたびに「このまま進めていい?」と聞かれるので、この確認だけを自動で通す。
「どうせ毎回許可している確認」で作業が止まっているなら、そこを省けるわけだ。
ただ、対象を広げすぎると、ファイルの書き込みやコマンドの実行まで全部素通りになる。対象はできるだけ狭くしておこう。
非エンジニアが使うとしたら
ここまでは公式情報をもとに紹介してきた。ここからは、実際に僕がやっている設定を紹介するので、イメージを膨らませる参考にして欲しい。
基本的に、自分で処理を書く必要はない。ClaudeCodeに「〇〇のhooksを設定して」と頼めば大丈夫。
処理の完了・入力待ちを通知する

ClaudeCodeの処理が終わったときと、ユーザーの入力待ちになったときに、音とバナーで通知が来るようにしている。
これがないと、
「さっき頼んだタスクどうなってるかな〜」→ とっくに終わっている or 入力待ちで全然進んでいない → 悲しい
という事態が普通に起きる。
こだわりポイントは、音(聴覚)とバナー(視覚)の両方で知らせること。どっちか片方だと、地味に見逃す。
使っているのは次の2つのイベント。
Stop:Claudeが返答を終えたら、効果音を鳴らして「タスクが完了しました」とバナーを出すNotification:許可待ち・入力待ちになったら、同じ効果音を鳴らして「入力待ちです」とバナーを出す

ClaudeCodeには「処理が終わったときと入力待ちのときに、音とバナーで通知するhooksを設定して」と頼めばOK。
ただ、Stop はタスクが全部終わったときではなく、Claudeが返答を終えるたびに鳴る。途中で質問を返してきたときにも「完了しました」と出るので、そこだけ注意。
また、Macでバナーが出ないときは、システム設定の「通知」で「スクリプトエディタ」を許可しよう。
これは最初に設定しておくのを強くおすすめする。
ファイルを削除するときにユーザーに確認を求める
ClaudeCodeをはじめとするAIが取りうる一番破壊的な行動は、ファイルやフォルダの削除だと思っている。
元に戻せないこともあって、やられると結構絶望する。
そうならないように、ファイルを削除するときにはユーザーに確認を求めるhooksを入れておくのがおすすめ。
仕組みとしては、PreToolUse イベントで、Claudeが rm(削除のコマンド)を含むコマンドを実行しようとしたタイミングを捕まえる。そこで、いきなり実行させずに「許可しますか?」の確認を出させる(または完全にブロックする)。
ClaudeCodeには「rm を含むコマンドを実行する前に、毎回確認を出すhooksを設定して」と頼めばOK。
ただ、hooksでの判定は完璧ではない。rm 以外の方法でもファイルは消せるからだ。
公式ドキュメントでも、コマンドの絞り込みはベストエフォート(できる範囲での判定)だとされている。確実に許可・拒否したいなら、権限設定(permissions)を使うよう案内されている。hooksは保険の一枚と考えて、権限設定と組み合わせるのが安心。
まとめ〜確実に何かを実行させたい時に使え〜
最後に、今回の内容を振り返っておく。
- hooksは「決まったタイミングで、決まった処理を必ず実行させる」機能
CLAUDE.mdは「お願い」、hooksは「仕組み」。確実にやらせたいことはhooksに書く- 設定はClaudeCodeに頼めばOK。
/hooksで一覧を確認できる - 最初に入れるなら、完了・入力待ちの通知がおすすめ
hooksは、なくてもClaudeCodeは使える。ただ、使っているうちに「毎回これをやってほしい」「これだけは絶対にやらないでほしい」という場面がだんだん出てくる。
そのときにCLAUDE.mdに書き足すのではなく、hooksにする。この選択肢を持っておくだけで、ClaudeCodeとの付き合い方は一段ラクになると思う。
自分なりのhooksを作るヒントになれば嬉しい。
出典:
- Claude Code公式ドキュメント「Automate actions with hooks」 https://code.claude.com/docs/en/hooks-guide (2026年11月11日時点)
- Claude Code公式ドキュメント「Hooks reference」 https://code.claude.com/docs/en/hooks (2026年11月11日時点)
