Claude Codeに自動安全ガードを設定する方法——Hooksで作業ミスをゼロにする

あなたが10〜30人規模の会社で経理や総務を担当していて、最近Claude Code(AIが自動でファイルを編集したりコードを書いてくれるツール)を使い始めたとします。最初は便利に感じていても、こんな不安が出てくることがないでしょうか。

「AIが勝手に大切なファイルを削除してしまわないか不安」 「毎回、同じお願い(書式を整えてとか、確認してから実行してとか)を繰り返すのが手間」 「AIが間違いをしても、誰も気づかないまま作業が終わってしまうのでは?」

このような不安を解消してくれる機能が、Hooks(フックス)です。Hooksとは、Claude Codeが特定の操作をする直前・直後に、あらかじめ決めた処理を自動で実行する仕組みのことです。一度設定しておけば、「AIが何かするたびに必ずこれを実行する」というルールが、AIの気分や判断に関係なく機械的に守られます。

この記事では、Hooksとは何か・どんな場面で役立つか・どう設定するかを、エンジニアでない方でも理解できる言葉で解説します。

図: Claude Code Hooksの全体像(画像生成待ち)

Hooksを一言で言うと「AIへの強制ルール」

AIに「コミット(変更を保存する操作のこと)する前に必ず書式チェックをして」と毎回指示しても、AIが忘れることがあります。AIの回答には「ブレ」があるからです。これはClaude Codeに限らず、現時点のAI全般に共通する特性です。

Hooksはこの問題を根本から解決します。settings.json(セッティングスジェイソン)という設定ファイル——テキストで書かれた設定メモのようなもの——にルールを書いておくと、そのルールは対応するタイミングで必ず実行されます。AIが「そのルールを言われたかどうか」に関係なく、機械的に動きます。

料理に例えると、「食材を切ったら(操作)、必ず手を洗う(自動処理)」というルールを台所に貼り紙するのではなく、自動洗浄センサーを設置するようなイメージです。センサーが自動で反応するので、忘れることがありません。

どんな職場で役に立つか

Hooksは、次のような職場環境で特に効果を発揮します。

15人規模のECサイト(ネット販売)運営会社で、商品ページの更新作業にClaude Codeを使っているとします。誤って全商品の価格を0円に変更するような大規模ミスを防ぐため、「価格データを一括変更する操作は必ず確認を求める」というHooksを設定しておけば、ヒューマンエラーを防ぐ安全弁になります。実際に、このような「一括上書き系」のミスは気づくまでに数時間かかることがあり、その間の損失は無視できません。

20人規模の税理士事務所で、顧客データの整理補助にClaude Codeを使っている場合、「顧客フォルダへの書き込みは必ずログを残す」というHooksを設定しておけば、万一のトラブル時に作業履歴を追跡できます。個人情報を扱う職場では、操作の記録を残すこと自体がコンプライアンス対応にもなります。

フリーランスのWebデザイナーであれば、「画像ファイルを保存したら自動で圧縮処理をかける」というHooksを設定することで、1案件あたり30〜60分かかっていた納品前の手動チェックが不要になった、という活用例もあります。

月に数十件の見積書・請求書を作成する個人事業主の方なら、「ドキュメントを編集したら自動でバックアップを作成する」というHooksを設定しておくと、データ消失のリスクを大幅に減らせます。

7種類の自動実行タイミング

Hooksは「どのタイミングで動くか」を7種類から選べます。以下の表で整理します。

図: Hooksが動く7つのタイミング(画像生成待ち)

非エンジニアの方が特に覚えておきたい4つを解説します。

PreToolUse(プリツールユース)とは、Claude Codeがツール——ファイル編集やターミナルコマンド(コンピューターへの直接命令)などの操作機能——を使う直前に実行されるHooksです。「危険な操作をする前に止める」用途に向いています。たとえば、大量のファイルを削除するコマンドが実行されようとしたとき、自動でブロックできます。

PostToolUse(ポストツールユース)とは、ツールを使った直後に動くHooksです。「作業後に自動で仕上げ処理をする」用途に向いています。ファイルを編集するたびに自動で書式を整えてくれる設定が代表例で、毎回の手動修正が不要になります。

Stop(ストップ)は、Claude Codeが一連の作業を終えたタイミングで動きます。「作業完了後に動作確認を自動実行する」用途に向いています。テスト(プログラムが正しく動くか確認する処理)を実行して、全部通ってから終了する、という設定ができます。

UserPromptSubmit(ユーザープロンプトサブミット)は、あなたがClaude Codeに指示——プロンプト(AIへの指示文のこと)——を送った瞬間に動きます。「指示文の中に機密情報が含まれていないか確認する」用途に向いています。個人情報や顧客データが誤って貼り付けられた場合に警告を出す設定が可能です。

残りの3種——SubagentStop(サブエージェントストップ)・Notification(ノーティフィケーション)・SessionStart(セッションスタート)——は、複数のAIエージェントを連携させる上級者向けの活用や、初回起動時の環境設定に使います。最初は上の4つを覚えるだけで十分です。

設定ファイルの基本構造

Hooksはsettings.jsonというファイルに書いて設定します。このファイルは2か所に置けます。

ひとつは、パソコン全体に適用される設定(~/.claude/settings.json)です。どのプロジェクトでも共通して守らせたいルールはここに書きます。もうひとつは、特定の作業フォルダだけに適用される設定(.claude/settings.json)です。案件ごとに異なるルールを設定したい場合に向いています。

基本的な書き方の例を示します。この設定は「ファイルを編集・作成するたびに、書式を自動で整える」という意味です。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write \"$CLAUDE_FILE_PATHS\""
          }
        ]
      }
    ]
  }
}

Prettier(プリティア)とは、コードやテキストの見た目を一定のルールに従って自動で整えてくれるツールのことです。この設定があれば、「書式がバラバラ」という問題を毎回手動で直す手間が省けます。$CLAUDE_FILE_PATHS(クロードファイルパス)という部分には、Claude Codeが実際に操作したファイルのパス(場所)が自動で入ります。

実務で使える設定例 その1:危険な操作をブロックする

削除コマンドや強制上書きコマンドを実行しようとしたとき、自動でブロックする設定です。ITに詳しくないスタッフがClaude Codeを使う環境で特に有効です。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/guard-bash.sh"
          }
        ]
      }
    ]
  }
}

Bash(バッシュ)とは、ターミナル(コンピューターへの直接命令ウィンドウ)で使われるコマンドのことです。上の設定と組み合わせるスクリプト(自動処理プログラム)の例を示します。

#!/usr/bin/env bash
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')

if echo "$CMD" | grep -qE '(rm -rf|--force|DROP TABLE)'; then
  echo "危険な操作が検出されました。実行を中止します。" >&2
  exit 2
fi
exist 0

「exit 2」という終了コード——処理の結果をコンピューターに伝える番号——を返すと、Claude Codeはその操作を中断し、別の方法を探し直します。「うっかり全部消してしまった」「元に戻せない変更をしてしまった」というミスを防ぐ安全弁として機能します。

この設定で防げる主なリスクは3つです。1つ目は大量ファイルの誤削除、2つ目はデータベースの重要テーブルの誤削除、3つ目はGit(ジット)——変更履歴を管理するツール——の強制上書きです。これらは一度起きると復旧に数時間から数日かかることがあります。

実務で使える設定例 その2:作業完了後にテストを自動実行する

Claude Codeが一連の作業を終えるたびに、自動でテストを実行する設定です。「実装はできたが動かない状態で作業が終わってしまう」という状況を防ぎます。

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "npm test -- --run 2>&1 || (echo 'テスト失敗。修正を継続してください' >&2; exit 2)"
          }
        ]
      }
    ]
  }
}

テストとは、プログラムが想定通りに動くかを自動で確認する仕組みのことです。この設定があると、Claude Codeは「テストが通るまで作業を終えない」状態になります。人間が毎回「動作確認をして」と言わなくても、自動で確認してから次のステップに進むようになります。

図: Hooksあり・なしの作業フロー比較(画像生成待ち)

実務で使える設定例 その3:個人情報の誤送信を防ぐ

あなたがClaude Codeに送る指示文の中に、顧客のメールアドレスや電話番号が含まれていないかチェックする設定です。

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/scan-pii.sh"
          }
        ]
      }
    ]
  }
}

顧客データをAIに直接貼り付けることには、情報漏洩のリスクがあります。このHooksを設定しておくことで、誤操作を事前にブロックする仕組みが作れます。個人情報保護法の観点からも、こうした技術的な対策を設けておくことが望ましいとされています。

設定するときに気をつけること

Hooksは強力な機能である分、いくつか注意点があります。

他の人が作ったプロジェクトフォルダを開くとき(.claude/settings.jsonが含まれている場合)、Claude Codeは初回起動時に「このHooksを許可しますか?」と確認画面を表示します。内容を確認してから許可するようにしてください。信頼できるプロジェクトのファイルかどうかを確認する習慣が大切です。

APIキー(外部サービスにアクセスするためのパスワードに相当する文字列)やパスワードを設定ファイルの中に直接書かないようにしましょう。設定ファイルが外部に漏れたときのリスクを最小限にするため、機密情報は別の環境設定ファイルで管理することが一般的に推奨されています。

処理に時間がかかるコマンドを設定する場合は、タイムアウト(一定時間後に強制終了する仕組み)を設定しておくと、Claude Codeが長時間止まってしまうことを防げます。具体的には「timeout 30」というコマンドの前置きを付けると、30秒で処理を強制終了する設定になります。

シェルインジェクション(シェルインジェクションとは、外部から悪意のある命令を混入させる攻撃手法のこと)を防ぐため、Hooksスクリプトの中で外部からのデータを扱うときは、jq(ジェイキュー)というJSONパース専用ツールを使うことが推奨されています。

うまく動かないときの確認方法

Hooksが期待通りに動かない場合、「claude --debug」というオプションを付けて起動すると、フックがどのように実行されたかの詳細なログ(動作記録)が表示されます。

また、Hooksスクリプトの先頭に以下の1行を追加しておくと、Claude Codeからどんなデータが渡されているかを確認できます。

tee /tmp/hook-input.json | jq .

この1行を追加すると、/tmp/hook-input.jsonというファイルに受信データが記録されます。「何も動いていない」「エラーが出る理由がわからない」というときの最初の調査手段として便利です。

それでも解決しない場合は、スクリプトをターミナルで単独実行して動作確認するか、Claude Codeの公式サポートに問い合わせる選択肢があります。

Hooksを使うとどう変わるか

Hooksを設定する前と後では、日常の作業フローが次のように変わります。

設定前は、AIに作業を依頼するたびに「書式を整えて」「テストを忘れないで」「危ないコマンドは使わないで」と毎回指示する必要がありました。それでもAIが指示を忘れることがあり、後から問題が発覚して修正する手間が発生していました。毎回の追加指示で1〜3分のロスが積み重なると、週に30分以上の無駄が発生していた、という例もあります。

設定後は、こうした定常的な指示が不要になります。AIが何かするたびに自動で書式が整い、テストが走り、危険な操作は未然にブロックされます。あなたは「何をやってほしいか」という本質的な指示だけに集中できるようになります。

まとめ:まず1つから始める

Claude Code Hooksは、AIに確実に守らせたいルールを機械的に強制する仕組みです。プロンプト(AIへの指示文)の中で毎回お願いしていたことを、Hooksに移すことで忘れなく実行されるようになります。

始め方としては、まずPostToolUseでPrettier(書式整形ツール)を自動実行する設定から試してみることをお勧めします。設定ファイルの変更はテキストを1か所編集するだけで済み、すぐに効果を確認できます。これで「毎回手動で書式を直す手間」がなくなります。

次のステップとして、PreToolUseで危険コマンドをブロックする設定を追加すると、AIへの安心感が大幅に高まります。さらに慣れてきたら、Stopでテスト自動実行、UserPromptSubmitで機密情報スキャンと、少しずつ拡張していく選択肢があります。

AIに任せる作業が増えるほど、「AIが何をするか」を制御する仕組みの重要性も増します。Hooksはその制御層として、Claude Codeの活用度が高まる前に準備しておきたい設定のひとつです。