Claude Codeには、AIが何かを実行する前に「実行してよいですか?」と聞く確認画面があります。ただ、使ううちに「はい、今後は聞かない」を選んだ許可が溜まったり、確認なしで動かすモードを使ったりすると、この確認だけでは守りきれなくなります。
そこで役に立つのが、Claude Codeの「hooks(フック)」です。当記事では、2026年10月29日時点の公式ドキュメントをもとに、フックで「確認画面で『はい』を押しても止まる守り」を作る考え方を、AI初心者向けにわかりやすく解説します。
Claude Code hooks(フック)とは?確認画面とは別の「見張り」
フックは「決まったタイミングで必ず動く」自分用の処理
Claude Codeの公式ドキュメントによると、フックは利用者が用意したシェルコマンド(パソコンに指示を出す命令)で、Claude Codeの決まったタイミングで実行されます。
ポイントは、AIが「やるかどうか」を判断するのではなく、決まったタイミングで必ず動くことです。CLAUDE.mdに「設定ファイルは書き換えないで」と書いても、AIがそれを守るかどうかはAI次第ですが、フックはAIの判断とは関係なく動きます。
>>hooks でアクションを自動化する(Claude Code 公式ドキュメント)
PreToolUse:AIが道具を使う直前に動くフック
フックにはいくつかの種類(イベント)があり、守りに使うのは主に「PreToolUse」です。PreToolUseは、AIがファイルの書き込みやコマンドの実行などの道具(ツール)を使おうとしたとき、実際に使う前に動きます。
フックには、AIがこれから何をしようとしているか(使う道具の名前・書き込む先のファイル・実行するコマンドなど)が渡されます。フックはその中身を見て、問題があれば「止める」と返事をします。これで、その操作は実行されません。
確認画面で「はい」を押しても止まる理由
公式ドキュメントによると、PreToolUseのフックは、確認画面(権限の確認)より前に動きます。さらに、フックが止めた操作は、許可の設定(「今後は聞かない」で溜まった許可を含む)で認められている操作でも止まります。
公式ドキュメントでは、フックの「拒否」は、確認なしで何でも実行するモードを含む、すべての権限モードで有効と説明されています。つまり、確認画面がうっかり「はい」を押してしまう人間の守りだとすると、フックは「はい」を押しても、確認を省くモードにしても止まる、もう1段の守りです。
ただし例外もあります。公式ドキュメントによると、組織の管理設定がなく、TeamやEnterpriseのプランでログインしていない場合は、後から入れた拡張機能(mod)が、フックが止めた操作を通せることがあります。拡張機能は、中身を信頼できるものだけを入れましょう。
>>権限を設定する(Claude Code 公式ドキュメント)
▶ 関連記事:Claude Codeの権限設定を見直そう!溜まった許可の点検とdenyの書き方
Claude Code hooksで止めたい3つの操作
セキュリティのためにフックで止める操作として、次の3つが考えられます。どれも「AIが外から読んだ文章にだまされたとき」に被害が大きくなる操作です。
1. 設定ファイルの書き換え
Claude Codeの許可やフックは、設定ファイル(settings.json)に書かれています。もしAIが設定ファイルを書き換えられると、許可を広げたり、フック自体を外したりできてしまいます。
公式ドキュメントにも、ファイルの書き込み・編集の直前に動くフックで、.envファイル(パスワードなどを入れるファイル)や.gitフォルダの中のファイルなど、大切なファイルへの編集を止める例が載っています。同じ考え方で、Claude Codeの設定ファイルやCLAUDE.mdをAIが書き換えようとしたら止めるフックを作れます。
また、「ConfigChange」というフックを使うと、セッション(Claude Codeを起動してから終了するまで)の途中で設定ファイルが変更されたときに、その変更を記録したり、反映されないようにしたりできます。
2. 個人情報の送信
AIが調べものの途中で、読んだページに書かれた指示にだまされ、メールアドレスや住所などを外部のサービスに送ってしまう、という事故が考えられます。
公式ドキュメントでは、コマンドの中のURLを調べて、許可していない送り先をブロックするフックの使い方が紹介されています。これを応用して、コマンドやWebへのアクセス、外部サービスにつながる道具(MCPツール)に渡す中身に、自分の個人情報が入っていたら止める、という見張りが作れます。
▶ 関連記事:AIの個人情報漏洩対策!調べもの中にメールアドレスを送る事故と防ぎ方
3. ネットから取ってきたものの実行
「このコマンドを実行してインストールして」とWebページやファイルに書かれていて、AIがそれに従ってしまうのも危険です。ネットから取ってきたプログラムをそのまま実行するコマンドは、何が起きるか分かりません。
PreToolUseのフックでコマンドの中身を調べ、取ってきたものをその場で実行するコマンドや、勝手なインストールを止めるようにしておくと、AIがだまされても実行の手前で止まります。
▶ 関連記事:プロンプトインジェクション対策は「手」を縛る!Claude Code・Codexの守り方
Claude Code hooksの設定のしかたと、日本語での頼み方
フックはどこに書く?
公式ドキュメントによると、フックは設定ファイルの「hooks」という項目に書きます。主な置き場所は次のとおりです。
| 設定ファイル | 効く範囲 |
|---|---|
| ユーザー設定(ホームフォルダの .claude/settings.json) | そのパソコンのすべてのプロジェクト |
| プロジェクト設定(.claude/settings.json) | そのプロジェクトだけ(チームで共有できる) |
| ローカル設定(.claude/settings.local.json) | そのプロジェクトだけ(自分のパソコンのみ) |
| 管理設定 | 組織全体(管理者が配る) |
個人の守りとして使うなら、すべてのプロジェクトに効くユーザー設定に書くのが分かりやすいでしょう。
設定の中身は「いつ・どの道具に・何を動かすか」
設定の中身は、次の3つを組み合わせるだけです。実際の判定は、別に用意した小さなスクリプト(処理を書いたファイル)にまかせます。
| 項目 | 書くもの | 例 |
|---|---|---|
| イベント | いつ動くか | PreToolUse(道具を使う直前) |
| matcher | どの道具のときに動くか | Bash(コマンド実行)、Edit|Write(ファイルの編集・書き込み) |
| command | 動かすスクリプト | 判定用のスクリプトのファイル |
スクリプトは、止めたいときは「終了コード2」(止めるという合図)で終わり、理由を書いて返します。公式ドキュメントによると、止めた理由はClaudeに伝わり、Claudeは別のやり方を考えます。
設定したら、Claude Codeで「/hooks」と入力すると、登録されたフックの一覧を確認できます。設定ファイルの変更は通常は自動で反映されますが、一覧に出てこないときはClaude Codeを起動し直しましょう。
>>フックリファレンス(Claude Code 公式ドキュメント)
Claude Codeにそのまま頼める指示文の例
スクリプトを自分で書けなくても、Claude Codeに日本語で頼めば作ってもらえます。ただし、いきなり設定を変えさせず、「まず案を見せて」「控えを取ってから」と確認をはさむのがコツです。
- 「今の Claude Code に登録されているフックを、ユーザー設定とプロジェクト設定に分けて一覧にして。まだ何も変えないで」
- 「Claude Code の設定ファイルと CLAUDE.md を書き換えようとしたら止める PreToolUse フックを作りたい。まず、どの設定ファイルにどう書くか、案だけ見せて」
- 「その案で進めて。設定ファイルを書き換える前に、今の設定ファイルの控えを取ってから変えて」
- 「作ったフックが正しく止まるか、止めたい例と止めたくない例を何個か用意して、実際には実行せずに判定だけ試して結果を見せて」
最後の「試す」の頼み方は特に大切です。公式ドキュメントでも、AIに渡されるのと同じ形の情報をスクリプトに流し込んで、手で動きを試す方法が紹介されています。
Claude Code hooksで守るときの注意点
フックがエラーになると、基本は「通してしまう」
公式ドキュメントによると、フックが「止める」以外の形でエラー終了した場合、多くのイベントでは操作はそのまま続きます。つまり、スクリプトの書き間違いや、必要な道具が入っていないだけで、見張りが素通りになることがあります。
フックが時間切れになった場合も、PreToolUseでは操作を止めません。失敗したときや時間切れのときに操作を止める設定(onFailure)も用意されています。フックを作ったら、エラーで終わっていないか、本当に止まるかを必ず試しておきましょう。
誤判定はよくある。試験で確かめる
見張りは、止めすぎることもあります。筆者(編集部)の環境で個人情報の送信を止めるフックを試したところ、Macのユーザー名がファイルの場所を表す文字列に入っていたため、ふつうのファイル操作まで「個人情報」として止まってしまいました。
止めすぎると作業にならず、結局フックを外したくなります。止めたい例と止めたくない例をいくつも用意して、両方を確かめる「試験」をしてから使い始めましょう。
止める道具の範囲に抜けがないか確かめる
フックは、matcherで指定した道具のときだけ動きます。たとえば、ファイルの編集・書き込み(Edit|Write)だけを見張っても、コマンド(Bash)でファイルを書き換える操作は別の道具なので、その見張りには引っかかりません。
公式ドキュメントでも、「Edit|Write」のフックはコマンド(Bash)を使ったときには動かないと説明されています。コマンドでの書き換えも見張りたいなら、コマンドにも反応するフックを足す必要があります。なお、ファイルが変わったあとに反応する「FileChanged」というイベントもありますが、こちらは変更を止めることはできません。「この見張りは、どの道具を見ているか」を一覧にして確かめておきましょう。
フックだけに頼らず、許可設定・サンドボックスと組み合わせる
公式ドキュメントは、コマンドの文字に頼らずにファイルやネットへのアクセスを制限したい場合は、サンドボックス(AIが動ける範囲を区切る安全装置)を使うよう案内しています。
フックは、許可設定の「禁止(deny)」やサンドボックスに足す、もう1段の守りです。外から来た文章の指示でAIが動いてしまう攻撃の例は、次の記事も参考にしてください。
▶ 関連記事:Claude Codeのセキュリティ注意!ダウンロードフォルダのAGENTS.md攻撃と対策
※2026年10月29日時点・Claude Code 公式ドキュメント(hooks でアクションを自動化する・フックリファレンス・権限を設定する)より
【まとめ】Claude Code hooksで「はい」を押しても止まる守りを足そう
Claude Codeのフック(PreToolUse)は、AIが道具を使う直前に必ず動き、確認画面で「はい」を押しても、確認を省くモードでも、操作を止められる見張りです。設定ファイルの書き換え・個人情報の送信・取ってきたものの実行の3つを止める用途から、「まず案を見せて」と頼んで作り、試験してから使い始めましょう。
AIの技術・サービス・ルールは変化が速く、本記事の予測や見通しは将来を保証するものではありません。各サービスの仕様・料金は公式サイトで最新の情報をご確認ください。本記事の情報は2026年10月29日時点のものです。
