今回の変更を先に理解する

先に答えると、上限を気にし始めたら、まずhookを増やす前にsourceとsessionの境界を確認します。1,024と16,384は設計を無制限にする数字ではなく、登録された構成を観測し、重複や広すぎる条件を見つけるための公開仕様です。到達していない場合でも、機密データの外部送信や危険commandの実行を許可してよい理由にはなりません。

Claude Code公式changelogの2.1.304(2026年10月19日)は、同じsource(repo、自分のfolder、pluginなど)のSkillが、1 sessionあたり最大1,024 hooksと16,384 matcher charactersを登録できるよう変更したと説明しています。hookが多いほど便利になるという話ではなく、Skillを大量に重ねた環境で、実効範囲と発火を測るための上限です。

既存のSkillsの同期・優先順位・出所確認が、どのSkillを信頼して配布するかを扱うのに対し、本稿はhookの件数・matcher・source分割へ意図を限定します。上限を理由に未確認のpluginを追加したり、matcherを広げて発火漏れを隠したりしないでください。

hook・Skill・sourceを分けて数える

対象今回の確認混同しないもの
hookイベントに応じて実行される処理Skill本文そのもの
matcherhookが対象を選ぶ条件の文字数出力文字数やcontext上限
sourcerepo・自分のfolder・pluginなどの出所一つの組織全体の合算
session実際に読み込まれた作業単位ディスク上の全ファイル

公式SkillsガイドはSkillの作成・管理・共有を説明し、公式Hooksガイドはイベント、matcher、commandなどの定義とテストを説明しています。上限を判定するときはこの3つのレイヤーを同時に数えず、実行sessionで何がロードされたかを確認します。

上限に近づく典型的な原因

原因は、各Skillが個別に小さいことではなく、同じsourceへ多くのイベント用hookを積み重ねることです。似たmatcherを複数のSkillに書く、全ファイル変更へ広いmatcherを付ける、pluginとrepoの責任範囲を分けない、といった構成では、登録数と条件文字数が増えます。

特に通知、整形、secret scan、テスト、記録をそれぞれ別hookにすると、同じイベントで多重実行する可能性があります。安全のため、件数を減らすことだけを目的に一つの巨大commandへまとめるのではなく、失敗時の停止、権限、タイムアウト、ログ、rollbackを比較して決めます。

棚卸しの8手順

  1. claude --versionとsessionの接続先を記録する。
  2. repo、user folder、pluginごとにSkillのsource台帳を作る。
  3. 各Skillからhook名、イベント、matcher、実行command、責任者を抜き出す。
  4. sourceごとにhook件数とmatcher文字数を数え、1,024・16,384との差を出す。
  5. 同じイベントとmatcherで重複するhookを候補化する。
  6. 広すぎるmatcherを、対象ファイルや操作へ絞れるか検証する。
  7. 低頻度の処理を手動commandやCIへ移し、必須hookだけ残す。
  8. fixtureで発火順、拒否、失敗、ログ、所要時間を確認し、台帳を更新する。

公式に記載された上限と、自社で観測した実効値は分けて保存します。上限に達していないことは、hookが期待通り発火した証拠ではありません。イベントが発火したか、commandのexit codeがどう扱われたか、同じ操作が二重に走っていないかをログで確認します。

分割・統合の判断基準

sourceを分けると責任境界は明確になりますが、同じ目的のhookが重複するおそれがあります。repo Skillはプロジェクト固有の検査、user folderは個人の通知、pluginは配布可能な共通処理というように、目的と所有者を一文で定義します。sourceを分けただけで安全性や発火順が保証されるわけではありません。

統合する場合は、処理の失敗を一つのexit codeで隠さないことが重要です。secret scanが失敗したのに整形処理の成功で全体を成功扱いにするなら、監査上の意味が変わります。hookごとに「止める」「警告だけ」「記録だけ」を決め、変更前後をテストします。

既存のClaude Code Hooksの基本ガイドやplugin hookの審査記事とも接続し、件数の削減と権限審査を別のチェックにします。

公開前に確認する運用記録

正式名称はSkillsとHooks、対象versionはClaude Code 2.1.304、上限はsource単位・session単位のhook数とmatcher文字数として記録します。実機で観測したロード結果、発火順、commandのexit code、失敗時の扱いは公式仕様と別欄にし、将来の更新で挙動が変わっても比較できるようにします。pluginの出所、更新者、レビュー日も残してください。

数字を減らすことだけを成功条件にせず、低リスクfixtureで変更前後を比較します。hookが一度も発火しない場合、二重に実行される場合、失敗を成功に見せる場合をそれぞれ不合格にし、手動commandやCIへ戻すfallbackを明記します。

チーム導入チェックリスト

  • 2.1.304以降と接続先を記録した
  • repo・user folder・pluginのsource台帳がある
  • sourceごとのhook件数を数えた
  • matcher文字数をsource・session単位で集計した
  • 同一イベントの重複と広すぎる条件を確認した
  • hookの失敗時動作と停止条件を定義した
  • command、権限、外部送信、ログ保持を確認した
  • fixtureで発火・失敗・rollbackを検証した

よくある質問

1,024件はプロジェクト全体の上限ですか?

公式changelogは、repo・自分のフォルダ・pluginなど一つのsourceのskillsが、1 sessionで登録できる上限として説明しています。全環境の合算値だと決めつけず、sourceとsessionを分けて測ります。

16,384文字はSkill本文の上限ですか?

この更新で示されているのはhook matcher charactersの上限です。Skill本文、指示文、tool実行結果の容量とは別に扱います。

上限を超えたら自動で安全に分割されますか?

公式情報だけから自動分割や発火保証は断定できません。sourceを整理し、必要なhookを減らして実環境で発火とログを確認してください。

hook設計をチームで見直せますか?

無料診断でsource、matcher、イベント、権限、副作用、監査ログを棚卸しし、分割と承認の方針を整理できます。無料診断(60秒)からご相談ください。

まとめ

Claude Code 2.1.304のSkill hook上限は、sourceとsessionごとの実効構成を見直すきっかけです。1,024 hooksと16,384 matcher charactersを全体の無制限枠やSkill本文の上限と誤解せず、source、イベント、matcher、副作用、失敗時の扱いを台帳化してください。Miraigentでは、SkillsとHooksを企業の権限・監査・引き継ぎまで含めて無料で診断します。無料診断(60秒)からご相談ください。