上級テーマ E

自動のガードと記録

Claude Code の「フック」を使い、元データの書き換えを自動で止め、作業の記録(監査証跡)を自動で残します。人が毎回気をつけなくても、決まった安全策が必ず働くようにします。

要確認の箇所があります

  • Windows 用(PowerShell 版)のフックは、作成時に実機(Windows)で動作を確認できていません。Mac・Linux 用(Python 版)は、Claude Code で実際に動かして確認しました

基本情報

経理にとっての価値
「元データは書き換えていない」「いつ、何をしたか」を、あとから証拠つきで説明できます。監査で、AIを使った作業の信頼性を示す材料になります。
難しさの目安
Claude Code に慣れた方向け。設定ファイルを1つ置くだけで始められます
前提
  • Lv3(Claude Code)でのレシピを、練習データで試したことがあること
  • Mac・Linux は Python 3 が入っていること(Windows は PowerShell を使うため不要)
  • input(元データ)と output(結果)のフォルダを分けて作業していること
情報の時点
2026年10月時点(公式情報の確認日:2026年10月12日)

ひな形

このページで説明している設定やファイルの見本です。自社の環境に合わせて書き換えて使ってください。

  • フックのひな形一式(keiri-hooks-sample.zip)zipファイル。設定ファイル(Mac・Linux 用と Windows 用)と、3つのフックのプログラム、説明書(README.txt)が入っています。keiri-hooks-sample.zip をダウンロード

しくみ

フックは、Claude Code の作業の決まったタイミングで、自動的に動くプログラムです。公式ドキュメントでは「特定のことが必ず起きるようにする仕組み」と説明されています。

プロンプトや CLAUDE.md に「元データは書き換えないで」と書いても、それはお願いです。Claude が守らないこともあります。フックは、Claude の判断とは関係なく必ず動くので、守ってほしいルールを確実にできます。

タイミング(イベント)いつ動くかこのひな形でしていること
SessionStart新しく作業を始めたとき(ひな形では、再開時などには動かない設定)元データ(input)の「指紋」を記録する
PreToolUseファイルの書き込みやコマンドの実行の直前input・logs フォルダへの書き込みなら止め、止めたことを作業記録に残す
PostToolUseファイルの書き込みやコマンドの実行が成功したあと何をしたかを作業記録(CSV)に1行追加する
StopClaude が返答を終えるとき元データの指紋を比べ、変わっていたら報告させる

指紋とは、ファイルの中身から計算される固有の値(ハッシュ値)です。中身が1文字でも変わると、まったく違う値になります。作業の前後で指紋を比べれば、元データが変わっていないことを確かめられます。

実際に試して分かったこと

このページを作るとき、ひな形を実際の Claude Code で試しました。

  1. 最初は「ファイルの書き込み(Edit・Write)」だけを止めるフックにしていました。すると Claude は、コマンドを使った別の方法で元データに追記してしまいました。作業記録のフックは、その操作をきちんと記録していました。
  2. そこで、コマンドの中身も確かめるようにし、さらに元データの指紋の確認を加えました。直したひな形では、Claude は書き込みを止められ、「フックが input フォルダの書き換えを禁止しているため、変更していません」と報告しました。

この経験から言えるのは、1つの仕組みだけに頼らず、「止める」と「確かめる」を組み合わせることの大切さです。経理の内部統制で、予防的な統制と発見的な統制を組み合わせるのと同じ考え方です。

設定のしかた

1. ひな形を置く

ひな形(keiri-hooks-sample.zip)を展開し、中の .claude フォルダを、作業用のフォルダの直下にコピーします。

勘定照合/
├── .claude/
│   ├── settings.json        … フックの設定(Windows は settings.windows.json の名前を変えて使う)
│   └── hooks/               … フックのプログラム
├── input/                   … 元データ(フックで保護される)
├── output/                  … 結果の保存先
└── logs/                    … 作業記録(自動で作られ、フックで保護される)

Windows の場合は、settings.windows.json の名前を settings.json に変えます(もとの settings.json は削除します)。Mac では、「.」で始まるフォルダは Finder で隠れています。Command+Shift+.(ピリオド)で表示できます。

2. 設定ファイルの中身

Mac・Linux 用の設定(一部)は次のとおりです。matcher は「どの道具のときに動くか」、${CLAUDE_PROJECT_DIR} は「作業用のフォルダの場所」を表します。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write|Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3",
            "args": ["${CLAUDE_PROJECT_DIR}/.claude/hooks/guard_input.py"]
          }
        ]
      }
    ]
  }
}

フックのプログラムが「終了コード2」で終わると、その操作は止められ、プログラムが出したメッセージが Claude に伝わります(公式ドキュメントより)。ひな形では「input フォルダのファイルは書き換えられません。結果は output フォルダに保存してください」と伝えるようにしています。

3. 動きを確かめる

  1. Claude Code でフォルダを開きます。フォルダを信頼するか聞かれたら、.claude の中身を確認してから信頼します。信頼するまで、フックは動きません(公式ドキュメントより)。
  2. 入力欄に /hooks と入力し、4つのフックが表示されることを確かめます。
  3. 「input/ のCSVに1行追加して」と頼み、止められることを確かめます。
  4. logs/claude_sagyou_kiroku.csv を Excel で開き、記録が残っていることを確かめます。

作業記録の例

logs/claude_sagyou_kiroku.csv には、次のような記録が残ります。

日時セッションID使った道具対象(ファイル・コマンド)
2026-10-12 10:35:40f7ce…元データの確認作業開始時の元データの指紋を記録(2ファイル)
2026-10-12 10:36:02f7ce…Bashpython3 output/2026-09/shogo.py
2026-10-12 10:36:05f7ce…Write…/output/2026-09/sai_ichiran_202609.csv
2026-10-12 10:36:10f7ce…止めた操作(Bash)printf ‘1,2’ >> input/a.csv
2026-10-12 10:36:30f7ce…元データの確認元データの変更なし(2ファイル)

この記録と、テーマD(中級者の次の一歩)で作る照合の記録を合わせて保管すると、「どのデータを使い、どう処理し、元データは変わっていない」ことを説明できます。

必ず行う

自分で確かめること

仕組みを作ったら、本番で使う前に、次の点を自分で確かめてください。

  1. 練習用のフォルダで、ガードが働くことを確かめたか

    Claude Code に「input/ のCSVに1行追加して」と頼み、止められることを確かめます。止められたら、logs/claude_sagyou_kiroku.csv に「止めた操作」として記録が残っているかも見ます(止めた操作は実行されないため、ひな形では止めるフックの中で記録しています)。

  2. 結果の保存(output への書き込み)は止められていないか

    ふだんのレシピ(R1のLv3など)を実行し、結果が output フォルダに保存されることを確かめます。必要な作業まで止めていないかを見ます。

  3. 作業記録に、作業の始めと終わりの「元データの確認」が残っているか

    記録の中に「作業開始時の元データの指紋を記録」と「元データの変更なし」の行があるかを確かめます。「変更されています」の行があれば、すぐに原因を調べます。

  4. フックの中身を、自分(または詳しい人)が読んで確かめたか

    フックはあなたのパソコンの権限で動くプログラムです。ひな形であっても、中身を読んでから使います。入力欄に /hooks と入力すると、設定されたフックの一覧を見られます。

  5. 元データのコピーを別の場所に残しているか

    フックの判定は完全ではありません。元データは、Claude Code で開くフォルダとは別の場所にも保管しておきます。

注意点

  • フックは、あなたのパソコンの権限でプログラムを動かします。中身を確認したものだけを使い、出どころの分からないフックは入れないでください(公式ドキュメントより)。
  • コマンドの判定は「書き込みに使われやすい記号・命令」を探す簡易的なものです。Claude が作ったプログラムの中でファイルを書き換える場合などは、止められないことがあります。そのため、元データの指紋で「変わっていないこと」を確かめる仕組みを組み合わせています。
  • Windows では、ファイルの場所が「\」(バックスラッシュ)で区切られて届きます。ひな形はこれに対応していますが、自分で書き換えるときは注意してください(公式ドキュメントより)。
  • Windows 用(PowerShell 版)のフックは、作成時に実機で動作を確認できていません。練習用のフォルダで動きを確かめてから使ってください。

このページに出てくる用語

確認した公式情報

このページの説明は、次の公式情報で確認しました。Claude の機能や制度は変わることがあるため、使う前に最新の情報を確認してください。

記事名URL確認日
フックの使い方(Automate actions with hooks)https://code.claude.com/docs/en/hooks-guide2026年10月12日
フックのリファレンス(Hooks reference)https://code.claude.com/docs/en/hooks2026年10月12日
設定ファイル(Settings)https://code.claude.com/docs/en/settings2026年10月12日
権限(Permissions)https://code.claude.com/docs/en/permissions2026年10月12日