ANTIGRAVITY LABEN
記事一覧/Antigravity 基本
Antigravity 基本/2026-08-09上級

弾かれるフックより、弾かれないフックのほうが高くつく — matcher 到達可能性を静的に測る

実行され得ないフック設定が読み込み時に拒否されるようになりました。ところが自分の設定を 21 個のツール名へ総当たりで突き合わせると、問題は拒否されなかった側に集まっていました。matcher の到達可能性を静的に検査するスクリプトと、過剰一致の実コストの実測です。

hooks3matcherregexvalidation3antigravity455measurement2

プレミアム記事

保存するたびに整形が走るはずでした。走っていませんでした。

エラーも出ていません。ログにも何も残りません。フックは登録されていて、設定ファイルには確かにそう書いてあります。ただ、一度も呼ばれていなかっただけでした。

IDE 2.6.0 で、どう転んでも実行されないフック設定が読み込み時に明確なエラーで拒否されるようになりました。黙って無視されていたものが、その場で分かるようになった変更です。ありがたい話でした。

ありがたい話だったのですが、この機を借りて自分の設定を全部洗い直したところ、痛かったのは拒否された側ではありませんでした。

「動かないフック」には二種類あります

一つは、一度も呼ばれないフックです。matcher がどのツール名にも当たりません。イベント名を間違えています。コマンドが PATH 上にありません。読み込み時の拒否が捕まえてくれるのは、おおむねこの系統です。

もう一つは、呼ばれすぎるフックです。こちらは設定として何も壊れていません。正規表現は正しくコンパイルできて、コマンドも実在して、フックは元気に動きます。ただ、書いた本人が想定していなかったツールにまで乗っています。

前者は、何も起こさないまま黙っています。後者は静かに何かをします。厄介なのは明らかに後者のほうでした。

そこで、自分の設定を機械的に測ることにしました。

matcher を全ツール名へ総当たりで突き合わせる

matcher が「当たるかどうか」は、matcher 単体を眺めても分かりません。相手側のツール名の集合と突き合わせて初めて決まります。

まず、セッションに実際に登場するツール名を 21 個並べました。組み込みのツールに加えて、接続している MCP サーバが公開する mcp__github__create_issue のような名前も含めています。

そのうえで、自分と身近な開発者がよく書く matcher を集めて、二通りの照合方式で当ててみました。部分一致(re.search 相当)と、完全一致(re.fullmatch 相当)です。

matcher状態部分一致完全一致
""(空文字)ok21021
*コンパイル失敗
.*ok21210
Bashok211
Editok312
Write|Editok523
^Bash$ok110
Bash.*ok220
mcp__.*ok550
Read|Glob|Grepok330
Notebookok101
editok000
(Write|Editコンパイル失敗

コンパイルできた 12 件のうち 5 件、率にして 41.7% が、照合方式を切り替えると当たる本数を変えました。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
matcher に空文字を書くと、部分一致で照合する実装では 21 ツール全部に、完全一致で照合する実装では 1 つも当たらない。同じ 1 文字も書かれていない文字列が、照合方式ひとつで意味を反転させる
読み込み時に弾かれる不達フックの実行コストは 0ms。高くつくのは検査を素通りする過剰一致で、Node のフックなら意図しないツール呼び出し 1 回につき 31.6ms が上乗せされる
hooks.json の到達可能性・イベント名・コマンド解決を静的に検査する 126 行のスクリプト。1,000 グループでも検査部 48.28ms で、CI の 1 ステップに置ける
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

Antigravity 基本2026-08-26
読み取りが自動承認になったレビューモードで、ワークスペースの範囲を決め直す
Antigravity CLI 1.1.20 でレビューモードの読み取りが自動承認になりました。承認が減った代わりに何が読める状態になったのかを、実際の作業ツリーで数えた記録です。
Antigravity 基本2026-08-23
Remote Control をホスト機に入れる判断は、daemon の生存条件と遮断経路で決まります
Antigravity 2.0 の Remote Control を有効にする前に確かめておく点を、headless daemon の OS ごとの挙動、二重になっているサインアウト経路、ホスト機の読み取り面の棚卸しという三つの角度から整理します。
Antigravity 基本2026-07-11
付与した権限は、本当に全部使われていますか — Antigravity 統一パーミッションを実使用ログから絞り込む
統一パーミッションで一度「全許可」に倒すと、使われない権限が静かに溜まります。付与した権限と行動ログを突き合わせ、未使用の許可を回収して最小権限へ絞り込む「付与→観測→回収」ループを、動くTypeScript実装と個人運用の実測値でまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます