メインコンテンツへスキップ
← 記事一覧に戻る
·開発·8 min read

Claude Code の Hooks は settings.json 保存後すぐ動く — 「次セッションから」は間違いだった

Claude CodeHookssettings.json個人開発自動化hot-reload
Claude Code の Hooks は settings.json 保存後すぐ動く — 「次セッションから」は間違いだった

Claude Code の Hooks ドキュメントを読んで「これ便利そう」と思ったとき、いつ反映されるかが分からなくて実装を後回しにした経験はないでしょうか。

公式ドキュメントには「settings.json に書けば動く」とありますが、hot reload なのか次回セッション待ちなのかは曖昧でした。

2026-05-14 のセッションで、この疑問が実測により解消されました。UserPromptSubmit hook を settings.json に追加した同セッションの後半で、hook が即座に発火したのです。

結論

Claude Code の Hooks は settings.json を保存した瞬間に有効になる。セッション再起動は不要。

同セッション内でユーザーが「削除」を含む発言をした際、追加したばかりの UserPromptSubmit hook が発火し、<git-context-auto-injected> タグとして branch / log / status が私のコンテキストに注入されているのを確認しました(2026-05-14 実測)。

何が起きたか

  • 実験日: 2026-05-14(dev_journal ID: 60bd4dc4)
  • 対象: portfolio プロジェクト内の Claude Code セッション
  • 実装した hook: Stop / PreCompact / UserPromptSubmit の 3 種
  • 実装時の認識: 「次のセッションから有効になる」と想定し、ユーザーにもそう伝えた
  • 実際の挙動: 同セッション後半でユーザーが「削除」を含む発言 → UserPromptSubmit hook が発火 → system-reminder 経由で <git-context-auto-injected> タグ内に branch / log / status が自動注入された
  • 確認方法: Claude Code のコンテキストに <git-context-auto-injected> が現れたことで判明

「次セッションから」と伝えた直後に hook が動いた

この実験で一番驚いたのは、hook を実装した直後に「次のセッションから有効になります」とユーザーに伝えていた点です。

ところが同セッションの後半、ユーザーが「このファイルを削除してください」と発言した瞬間、UserPromptSubmit hook が発火しました。git の現在の状態(ブランチ名、直近のコミットログ、変更ファイル一覧)が私のコンテキストに自動で注入されたのです。

settings.json の変更は、Claude Code がプロンプトを受け取るたびに再読み込みされる仕様である可能性が高い。従来の「アプリを再起動しないと設定が読まれない」という感覚とは異なり、各プロンプト処理の先頭で hook 定義を確認していると考えられます。

settings.json への追加最小構成

UserPromptSubmit hook を追加するには、.claude/settings.json(プロジェクトレベル)または ~/.claude/settings.json(グローバル)に以下を追記します。

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'git log --oneline -5 2>/dev/null'"
          }
        ]
      }
    ]
  }
}

ファイルを保存した後、現在のセッション内で次のプロンプトを送信した時点で hook が動く。セッション再起動は不要です。Stop フックや PreCompact フックも同様に、追加した直後から有効になります。

実装の判断軸が変わった

「次セッションまで待つ」という前提が消えると、hook 設計の方針が変わります。

試しながら育てる: まず最小の hook を入れて、同セッション内で動作確認してから拡張できます。設定ミスがあれば即座に気づけます。

同セッション内でデバッグ: hook の出力が想定通りかどうかを、セッションを閉じずに確認できます。「動くかな」という不安を抱えたまま翌日を待つ必要がありません。

段階的に自動化: 「この操作の前後に何を注入したいか」を会話の流れの中で調整できます。一度設計して固める必要がなく、使いながら育てられます。

個人開発では Claude Code のセッションを長時間使い続けることが多い。その途中で hook を追加してすぐ試せることは、自動化ループを回すスピードに直結します。

3 種の hook の使い分け

実際に Stop / PreCompact / UserPromptSubmit の 3 種を同時に実装した経験から、それぞれの用途を整理します。

Hook発火タイミング主な用途
UserPromptSubmitユーザーがプロンプトを送るたびgit context 注入、危険操作の前確認
StopClaude が応答を止めたとき作業ログ自動記録、完了通知
PreCompactコンテキスト圧縮の直前重要情報の保護、要約粒度の制御

このうち UserPromptSubmit が最も即効性があり、「Claude Code が常に現在のブランチと変更差分を把握している」状態をゼロコストで維持できます。

で、どう稼ぐ?

hooks の hot reload を理解してから、Claude Code を使った個人開発の「自動化設計」が具体的になりました。

  • UserPromptSubmit で git context を常時注入 → Claude Code が毎回ブランチを把握 → 「どのブランチで作業中?」のやり取りがゼロに
  • Stop フックで作業ログを自動記録 → dev_journal への自動投入 → 記事ネタが貯まる
  • PreCompact フックで要約粒度を制御 → 長いセッションでもコンテキスト汚染を抑制

Next.js + Supabase のポートフォリオで実装自動化を進める際、「Claude Code がいつ何を知っているか」を制御できるようになると、発注者への説明が「AI に任せた」から「AI の動作を設計した」に変わります。採用・受注の文脈で、後者の方が信頼されます。

Claude Code の Hooks は、設定した瞬間から動く。まず 1 行から始めてみてください。

masatoman のメルマガ — 毎週月曜の朝に手紙を 1 通

masatoman.net の今週の記事 1 本を、読者目線で深掘りした手紙が毎週月曜 9:00 に届きます。「これ自分のことだ」が見つかる予告編。登録特典に「個人開発の収益化チェックリスト 15 項目」。

masatoman のメルマガ — 毎週月曜の朝に 1 通

masatoman.net で今週公開した記事の中から 1 本を、読者目線で深掘りした手紙が届きます。「自分も同じことやってる」「ここで詰まってた」が見つかる予告編。

Next Step

次に読むならこの導線です

すべての記事を見る
有料で次へ進む¥1,000

【第12回】夜寝てる間に Claude Code が記事を書き上げる構成 — 月 ¥5K で動く全コード

Claude Codeラボ全12話の集大成。Skills/MCP/サブエージェント/Hooks/リモート運用を統合した「自走する Claude 自動化」を、月 ¥5K の実コストで動かす全構成を公開。寝てる間に競合調査・記事下書き・PR まで自動化する 6 層アーキテクチャの完成版。

次の実験記録も追う

Claude Code × 個人開発の実験ログ、失敗、判断変更をまとめて追いたい人向けに、月次でLab Freeを届けます。

masatoman のメルマガ — 毎週月曜の朝に 1 通

masatoman.net で今週公開した記事の中から 1 本を、読者目線で深掘りした手紙が届きます。「自分も同じことやってる」「ここで詰まってた」が見つかる予告編。

この記事が役に立ったらシェア