メインコンテンツへスキップ
見出し画像

Claude Codeのhooksで事故を止める、制作会社の3つの使い方──実行前に止めるPreToolUse、編集後に整えるPostToolUse、待ちを知らせるNotificationと、入れる前の注意

    この記事は、Claude Codeの hooks(フック)を使って、制作会社の作業の事故を止める方法を扱います。

    「.env は触らないで」と書いたのに、触られた

    CLAUDE.md に「.env と本番の設定は編集しない」と書いておいた。
    それでも、ある日の作業で、AIが設定ファイルに手を入れようとした。


    指示書に書いたことは、守られることが多くても、必ず守られるとは限りません。
    公式ドキュメントも、CLAUDE.md は強制ではなく文脈として扱われると説明しています。

    hooksとは、Claude Codeの作業の決まった時点で、自社が書いたコマンドを必ず実行させ、操作を止めたり整えたり知らせたりする仕組みである

    黒字化の外科医です。Claude Codeの hooks を、事故を止める道具として解剖します。


    hooks を使うべき理由は、三つあります。


    第一に、AIの判断に頼らず、必ず動くから。
    公式ドキュメントは、hooks を「決まった時点で必ず動く」決定的な制御として説明しています。


    第二に、操作の前に止められるから。
    PreToolUse(道具を使う前)の hook が終了コード2で終わると、その操作は止まり、理由がAIに伝わります。


    第三に、権限モードを変えても止まるから。
    公式ドキュメントでは、hook が deny を返した操作は、確認を飛ばす bypassPermissions のモードでも止まると説明されています。

    Claude Codeのhooks、公式で確認できたこと

    2026年10月27日に、公式ドキュメント(code.claude.com/docs の Automate actions with hooks、Hooks reference、Example settings files)で確認した内容です。

    【書く場所】settings.json の "hooks"
     ~/.claude/settings.json(自分の全プロジェクト)
     .claude/settings.json(プロジェクト、コミットして共有できる)
     .claude/settings.local.json(自分だけ)/組織の管理設定 など
    
    【制作会社がまず使う3つの時点】
    PreToolUse:道具を使う前。止められる(終了コード2、または JSON で deny)
    PostToolUse:道具が成功した後。もう起きた操作は取り消せない
    Notification:Claude Codeが通知を出すとき(承認待ち、入力待ちなど)
    
    【確認】
    /hooks で、登録された hook を一覧で確かめられる

    今すぐ試せる:止めたい操作を hooks に落とすプロンプト

    私はWeb制作会社の技術責任者です。Claude Codeの hooks で止めたい操作を整理してください。
    (顧客名や秘密情報は入力しません)
    
    【前提】
    ・これまでにAIでひやりとした操作:〔記載〕
    ・編集させたくないファイル(.env、ロックファイル、本番設定など):〔記載〕
    ・社員のPCのOS:〔記載〕
    ・すでに permissions の deny に入れているもの:〔記載〕
    
    1. 止めたい操作を「permissions の deny で足りる」「hooks で中身を見て止める」「人のレビューで止める」に分ける。
    2. hooks で止めるものについて、PreToolUse の matcher(Bash、Edit|Write など)と、判定の条件を書く。
    3. hook が止めたときにAIに返す理由の文面を、短く書く。

    hooks工場:制作会社の3つの雛形

    1. 守るファイルの編集を止める(公式の例)

    公式ドキュメントの例をそのまま使います。`.claude/hooks/protect-files.sh` に保存します。

    #!/bin/bash
    # protect-files.sh
    
    INPUT=$(cat)
    FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')
    
    # Normalize Windows backslash separators so the patterns below match
    FILE_PATH="${FILE_PATH//\\//}"
    
    PROTECTED_PATTERNS=(".env" "package-lock.json" ".git/")
    
    for pattern in "${PROTECTED_PATTERNS[@]}"; do
      if [[ "$FILE_PATH" == *"$pattern"* ]]; then
        echo "Blocked: $FILE_PATH matches protected pattern '$pattern'" >&2
        exit 2
      fi
    done
    
    exit 0


    `.claude/settings.json` に登録します。

    {
      "hooks": {
        "PreToolUse": [
          {
            "matcher": "Edit|Write",
            "hooks": [
              {
                "type": "command",
                "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-files.sh"
              }
            ]
          }
        ]
      }
    }


    PROTECTED_PATTERNS に、自社の守るファイル(例:wp-config.php)を足します。スクリプトは jq を使い、macOS・Linuxでは実行の許可(chmod +x)が要ります。

    2. 編集のあとに整形する

    公式には、PostToolUse に `"matcher": "Edit|Write"` を指定し、編集したファイルに Prettier をかける例があります。書き方の統一を、人の注意ではなく仕組みで行えます。

    3. 承認待ちを知らせる(公式の Windows の例)

    {
      "hooks": {
        "Notification": [
          {
            "matcher": "",
            "hooks": [
              {
                "type": "command",
                "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""
              }
            ]
          }
        ]
      }
    }


    通知は個人の `~/.claude/settings.json` に入れます。承認待ちに気づかず止まっている時間が減ります。

    計算例:入れる手間と、事故1回の手間(数字はすべて例)

    hooks を作って試す時間:2時間 × 7,645円 = 15,290円
    設定ファイルを壊して直す時間:8時間 × 7,645円 = 61,160円


    事故が1回でも防げれば、作る手間は回収できます。時間単価は例です。自社の数字に置き換えてください。

    構造的なリスク

    逆説を指摘しておきます。


    hooks は、あなたのユーザーの権限で、どんなコマンドでも動かせます。公式も、ファイルを変更・削除できるため、入れる前に必ず中身を読み、試すよう警告しています。
    リポジトリに入った hook のスクリプトは、取り込んだ全員のPCで動きます。


    だから、hooks の追加と変更は、コードと同じくレビューを通します。
    また、止める規則は hooks だけに頼らず、permissions の deny と sandbox を重ねます。

    ▶ Claude Codeのsettings.jsonをチームで共有する設定──共有・個人・組織の4つの置き場所、permissionsのallow・ask・denyの決め方、効かないときの確かめ方

    よくあるQ&A

    Q. Windowsでも動くか?


    公式の例のうち、シェルスクリプトは Bash 向けです。hook ごとに `"shell": "powershell"` を指定して PowerShell で動かす方法も公式に載っています。社内の標準のOSで、まず1つ試してください。


    Q. 「rm -rf」を止めたい。


    公式には、Bash の PreToolUse で rm -rf を含むコマンドを終了コード2で止める組み合わせの例があります。あわせて、コマンドの書き方で規則をすり抜けることがある点も、公式が注意しています。
    ## 最後に


    hooks は、指示書では守りきれない決まりを、操作の前で必ず止める仕組みです。


    守るファイル、整形、通知の3つから小さく始め、追加と変更をレビューする会社だけが、AIに任せる範囲を広げても事故を増やさずにいられるのです。


    hooks を含む設定ファイル一式と、点検の運用表は、導入設定キットにまとめました。

    ▶ Claude Code導入設定キット、制作会社がそのまま置くファイル一式──チーム共有・個人・組織のsettings.json、CLAUDE.mdの雛形、hooksの守りの設定、席の割当表と運用表

    これまでの記事は、メンバーシップ「黒字化オペ室」でまとめて読めます。月額1,980円、記事2本分の金額です。詳しくはプロフィールから。


    #Web制作会社 #ClaudeCode #hooks #事故防止 #AIコーディング #品質管理 #制作会社経営 #中小企業 #AI駆動開発 #生成AI

     
     
    Web制作・開発会社の「労働集約という病」をAIで冷徹に切除し、利益率を極限化する組織ハッキング術を公開。 人間の感情と作業を排除し、社長一人で莫大な富を搾取する「完全無人ファクトリー」を構築する覚悟を持つ経営者のみ、有料記事で圧倒的な暴利と勝利を手に入れてください。

    あなたへのおすすめ