MENU

Claude Code Hooks 入門 ─ AIに”勝手に動くクセ”をつける、イベント駆動の自動化

「ちょっと聞いてみたい」だけでもOK! ツールや業務効率化についての相談をすべて1対1で丁寧にお答えします。 まずはお気軽にメッセージをどうぞ!LINE公式アカウントはこちら!

「Claude Code」に毎回同じ指示を書いていませんか。「保存したらバックアップして」「コミット前に Lint かけて」——繰り返す指示ほど、実は書かなくていい指示です。ところが多くの解説は開発者向けで、「matcher」「jq」「exit code 2」と専門用語が続き、非エンジニアは入り口で止まってしまいます。

● 毎回同じ指示を書くのに疲れている
● ドキュメントを読んでも専門用語で挫折した
● 非エンジニアの業務に「Hooks」をどう使えばいいか分からない

プロンプトを打たなくても、「Claude Code」に自動で動いてもらう仕組みがあります。それが「Hooks」です。イベントをトリガーに決まった処理を走らせる、いわば AI に”クセ”をつける仕組みです。この記事では、仕組みの本質・全イベント一覧・最小構成・matcher 記法・環境変数・業務への応用・セキュリティ注意点・デバッグ方法まで、コピペで試せる形で網羅します。

目次

そもそも「Hooks」とは ─ 指示を出さなくても AI が動く仕組み

「Hooks」とは、「Claude Code」が特定のイベント(ファイル編集、セッション開始、ツール実行前後など)を検知したときに、あらかじめ決めておいたコマンドを自動で走らせる仕組みです。公式日本語ドキュメント(code.claude.com/docs/ja/hooks-guide)に詳細が公開されています。

従来の使い方は「プロンプト駆動」です。ユーザーが毎回指示を書いて発射するタイプ。一方の「Hooks」は「イベント駆動」で、条件が揃えば勝手に動きます。ルンバで例えるなら、毎回「ゴミを吸って」と言うのが前者、「朝7時に自動で動く」のが後者です。

観点プロンプト駆動イベント駆動(Hooks)
トリガーユーザーの指示ファイル編集・セッション開始など
労力毎回書く1回書けば以降は自動
適した用途単発の相談毎回同じ処理の自動化
具体例「この関数をリファクタして」「保存したら自動でバックアップ」

指示文例(ビフォー): 「ファイルを保存するたびに、同じファイル名に .bak を付けたコピーを作って」を毎回打ち込む
指示文例(アフター): .claude/settings.json に PostToolUse の Hook を1回だけ書いておけば、Edit/Write のたびに自動でコピーが作成される

Hooks が発火するタイミング ─ 全イベント一覧と「よく使う5つ」

Hooks のイベントは2026年時点で10種類以上用意されていて、Anthropic 側で随時追加されています。非エンジニア業務で実際に使うのは、5つでほぼ足りるのが実情です。まずは「よく使う5つ」から見ていきましょう。

イベント名発火タイミング典型用途非エンジニア向け例
SessionStartセッション開始時初期設定の読み込み朝一で今日の予定を読み込む
PreToolUseツール実行の直前危険コマンドをブロックrm * を事前に止める
PostToolUseツール実行の直後バックアップ・通知編集後に .bak を作成
StopAI の応答が終わった瞬間完了音・通知作業終了時に音を鳴らす
SessionEndセッション終了時ログの書き出し日次メモに作業終了時刻を追記

この5つのうち、PostToolUseSessionEnd の2つだけで8割カバーできます。残りの5つ以上のイベントは、特定用途で必要になったときに学べば十分です。参考までに全体像も置いておきます。

イベント名何のときに発火するか
UserPromptSubmitユーザーがプロンプトを送信した瞬間
NotificationAI から通知が発生した瞬間
PreCompact会話履歴の圧縮(コンパクション)直前
SubagentStopサブエージェントが終了した瞬間(2026年追加)
StopFailureAPIエラーで応答が打ち切られた瞬間(2026年追加)
FileChanged監視対象ファイルが変更された瞬間(2026年追加)
CwdChanged作業ディレクトリが変更された瞬間(2026年追加)

2026年に追加された SubagentStop FileChanged CwdChanged などはより細かい制御が必要な場面で活きるイベントです。たとえば FileChangeddirenv のような環境変数自動読み込みに使えます。とはいえ、全部を覚える必要はありません。必要になった時点で公式ドキュメントを見れば十分間に合います。

最小構成で試す ─ .claude/settings.jsonmatcher 記法

Hooks の本体は .claude/settings.json というファイルです。このファイルは3階層に分かれていて、置く場所によって効く範囲が変わります。

階層パス効く範囲推奨用途
user~/.claude/settings.json全プロジェクト共通個人の共通ルール
project.claude/settings.jsonそのリポジトリのみチーム共有設定(git 管理)
local.claude/settings.local.json自分だけ個人の上書き(.gitignore)

Hook 定義は3段構造になっています。「どのイベントに」「どのツールに当てはまったら」「何を走らせるか」の3層です。この「どのツールに当てはまったら」を指定するのが matcher フィールドで、正規表現で柔軟に絞り込めるのが強みです。

matcher の書き方意味
EditEdit ツール実行時のみ発火
Edit|WriteEdit または Write のどちらかで発火(OR)
.* または省略全ツールで発火
BashBash 実行時のみ(コマンドブロック用)

一番ハードルの低い例を置きます。PostToolUseEdit または Write の後に、対象ファイルを .bak にコピーする最小設定です。Hook 実行時には CLAUDE_TOOL_INPUT_* という環境変数で実行対象の情報が渡ってくるので、$CLAUDE_TOOL_INPUT_file_path のように参照できます。

指示文例①(PostToolUse・コピペ可):

{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "cp \"$CLAUDE_TOOL_INPUT_file_path\" \"$CLAUDE_TOOL_INPUT_file_path.bak\""
}
]
}
]
}
}

動かない時のチェックポイントは3つです。JSON 構文(カンマやカッコの閉じ忘れ)・ファイルの置き場所・コマンドのパス。この3つを見直せば、ほとんどのトラブルは解消します。まず stdout にログを吐くだけの最小版を動かしてから、実コマンドに差し替えるのがデバッグの王道です。

デバッグ方法やり方
stdout に何が来ているか見るcommand: "echo \"$CLAUDE_TOOL_INPUT_file_path\" >> /tmp/hook.log"
JSON 構文を確認cat .claude/settings.json | jq . でパースエラーが出ないか
再起動を忘れないsettings.json を編集したら Ctrl+C → 起動し直し

コードはスマホだと横スクロールが発生します。長押しコピーでターミナルに貼れば、そのまま動きます。

非エンジニアの業務に効く 5つの自動化パターン

ここが本記事の差別化の核です。他の解説記事が書いていない「コード以外の用途」を5つ並べます。

業務トリガーHook 概要効果
議事録バックアップPostToolUse議事録ファイル編集後に Notion API で複製保存忘れゼロ
下書き完成通知Stop記事下書き完成時に Slack へ webhookチーム共有の漏れ防止
機密ワードブロックPreToolUse顧客名・金額を含むコマンドを自動停止情報漏洩事故防止
週次 SEO スナップショットSessionStart月曜朝にサジェスト取得スクリプト自動実行月曜朝の3分ルーティン削減
日次メモ追記SessionEnd日次ログディレクトリに作業終了時刻を追記振り返りの自動化

指示文例②(SessionEnd で日次メモ追記・コピペ可):

{
"hooks": {
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "echo \"- [$(date +%H:%M)] セッション終了\" >> daily-log/$(date +%Y-%m-%d).md"
}
]
}
]
}
}

Slack webhook で通知を飛ばす実装例も置いておきます。Slack の Incoming Webhook URL を取得しておけば、下書き完成時の自動通知が数行で組めます。

指示文例③(Stop で Slack 通知・コピペ可):

{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "curl -X POST -H 'Content-type: application/json' --data '{\"text\":\"Claude の応答完了\"}' $SLACK_WEBHOOK_URL"
}
]
}
]
}
}

実務事例として参考になるのが Plaid の運用です。AI コーディング支援の活用でPR 数が約4倍・マージ時間が約30%短縮という成果が公開されており、その背景には Hooks と権限設定を組み合わせた「ルールを徹底させるのではなく、ルールを守らざるを得ない環境を設計する」という思想があります。

daily-log/ のパスは自社の運用ディレクトリに合わせて変えてください。Notion API や Slack webhook の URL を差し込めば、議事録バックアップや下書き通知もすぐ作れます。

やらかさないための3つの注意点 ─ セキュリティと暴走対策

Hooks はシェルコマンドを自動実行する仕組みです。つまり、使い方を間違えると権限が強すぎて事故につながります。落とし穴を3つに整理しました。

現象起きる理由対策
他人の settings.json が勝手に動く無検証でコピペ=任意コード実行相当中身のコマンドを必ず目で読む。怪しい curlrm は排除
無限ループで止まらないStop フックが Stop を再度発火させるstop_hook_active フラグを確認。exit code 2 の挙動も理解しておく
想定外の環境で動かないOS やシェルの違い(Windows と Mac)最初は stdout にログを吐くだけで動作確認してから実コマンドに差し替える

2つ目の exit codestop_hook_active は、Hooks の動作を理解するうえで重要な概念です。

概念意味使いどころ
exit code 0Hook が正常終了。何もしない通常のバックアップ・通知
exit code 2処理をブロックする特殊コードPreToolUse で危険コマンドを止める
stop_hook_activeStop フック実行中のフラグStop フックが再発火する無限ループを防ぐ

特に注意したいのがOS 依存の挙動差です。Windows と macOS では、プロセスの起動方法や標準入力パイプの扱いが異なるため、同じ Hook が Mac で動いて Windows で動かない(あるいはその逆)は珍しくありません。最初は「まず stdout にログだけ出す」最小版から組み、動作確認してから実コマンドに差し替えるのが事故を防ぐコツです。

指示文例④(危険な rm を PreToolUse でブロック・まずは確認だけ):

{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "if echo \"$CLAUDE_TOOL_INPUT_command\" | grep -qE 'rm +-rf|rm +\\*'; then echo 'BLOCKED: 危険な rm'; exit 2; fi"
}
]
}
]
}
}

この例では exit 2 を返すことで、Claude 側に「このコマンドは実行しないでください」と伝えています。exit 0exit 1 だと実行が続行してしまうので、ブロックしたいときは必ず exit 2 を使います。

明日から試す3ステップ ─ 1行コピペ→1業務自動化→チーム共有

最後に、週末30分で試せる3ステップをまとめます。

ステップ所要時間やること到達点
①コピペで動かす30分本記事の PostToolUse 例をコピペして動作確認Hooks の挙動を体感
②自分の業務を1つ載せる1時間毎日書いている同じ指示を1つだけ Hook 化自分の業務で1個自動化
③チーム共有10分.claude/settings.json を配布(中身のコマンドを見せる)再現性のある仕組みへ

読後感としては、「自分の業務で自動化できそうなことが3つ思いつく」状態になっているはずです。その3つのうち一番簡単なものから試してみてください。

サブエージェントが「役を分ける」仕組み、Skills が「仕事を残す」仕組みだとすれば、Hooks は「自動で動かす」仕組みです。3つを組み合わせることで、あなたの業務は「毎回指示する」段階から「勝手に回り始める」段階へと進みます。

Hooks は、AI に”任せる範囲”を広げる仕組みです。毎日書いている同じ指示を1つだけ、今週末に自動化してみませんか。

最後に

「ちょっと聞いてみたい」だけでもOK! ツールや業務効率化についての相談をすべて1対1で丁寧にお答えします。 まずはお気軽にメッセージをどうぞ!LINE公式アカウントはこちら!

地道ラボでは、「Claude Code」の Hooks 設計テンプレート(議事録バックアップ・日次メモ追記・機密ワードブロックの3点セット)を LINE で配布しています。業種や業務内容を聞き、それに合わせた .claude/settings.json の雛形を提案します。

申し込みは LINE で「Hooks テンプレ」または「自動化テンプレ」とメッセージを送るだけです。

大げさなコンサルティングではなく、明日から試せる具体的な一歩をお伝えするのが私たちのスタイルです。

AI に”勝手に動くクセ”をつける一歩を、今日ここから踏み出しませんか

次の一歩として、まずは「毎日『Claude Code』に書いている同じ指示」を一つ教えてください。その指示を、具体的に Hooks 化する JSON にして提案します。

引用・参考URL

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次