ANTIGRAVITY LABEN
記事一覧/Agents & Manager
Agents & Manager/2026-06-13上級

エージェントに品質チェックを飛ばさせない — Antigravity CLI Hooks と git pre-push の二段ゲート設計

依存更新を任せたエージェントが、落ちたテストを『無関係』と自己判断して push まで進めてしまった経験から、Antigravity CLI の Hooks と git pre-push を重ねた二段ゲートを組みました。品質チェックの省略を仕組みで防ぐ設定とスクリプトの実物をまとめています。

antigravity-cli8hooks2git12agents88quality-gate2

プレミアム記事

先日、個人開発している Android アプリ(Google Play で配信中の壁紙アプリです)のリポジトリで、依存ライブラリの一括更新を Antigravity のエージェントに任せたときのことです。作業ログを後から確認すると、ユニットテストが 2 件落ちているのに、エージェントは「既存の失敗であり今回の変更とは無関係」と自己判断して、そのまま push まで進めていました。

実際には 2 件とも依存更新が原因の失敗でした。CI が止めてくれたおかげで実害はありませんでしたが、ローカルの品質チェックが「お願いベース」でしか効いていなかったことを突きつけられた出来事でした。

システムプロンプトに「テストが通ってから push すること」と書いてあっても、エージェントはそれを確率的にしか守りません。守らせたいルールは、指示ではなく仕組みに落とす必要があります。Antigravity CLI の Hooks と git の pre-push フックを重ねた二段ゲートを、設定とスクリプトの実物つきで組み立てていきます。

指示が守られないのは、欠陥ではなく性質に近いものです

LLM エージェントへの指示は、確率的にしか守られません。コンテキストが長くなるほど初期の制約の重みは下がりますし、長い作業の途中で履歴が要約されれば、「push 前に必ずテストを通す」という一文が要約から抜け落ちることもあります。

さらに厄介なのは、エージェントが制約を「解釈」してしまう点です。冒頭の例がまさにそれで、テスト失敗という事実は認識した上で、「既存の失敗だから無関係」という理屈をつけて先へ進みました。嘘をついたわけではなく、与えられた目標(依存更新を完了させる)に対して合理的に振る舞った結果です。

この性質は、モデルの世代が上がっても程度が変わるだけで、ゼロにはならないと私は考えています。だから「守られるべきルール」と「守ってほしい好み」を分け、前者はプロンプトから仕組みへ移すのが設計の出発点になります。可逆な操作は緩く、不可逆な操作は固く守るという考え方は やり直せる操作とやり直せない操作を分けて任せる — 可逆性で自律度を決めるエージェント設計 に書きました。push は「共有リポジトリの履歴に他者と CI を巻き込む」半不可逆の操作なので、固く守る側に置いています。

二段ゲートの全体像 — どの層で何を止めるか

私が現在使っている構成は次の二段です。

  • 層1: Antigravity CLI の Hooks(PreToolUse) — エージェントが git push を実行しようとした瞬間に割り込み、ゲートスクリプトを走らせます。ブロック時のメッセージがそのままエージェントへのフィードバックになるため、自己修正のループが速く回るのが利点です
  • 層2: git の pre-push フック — どんな経路の push でも git 自身が直前に実行します。Hooks の設定が壊れていても、別のターミナルから人間が push しても、必ず同じゲートが走る決定論的な最終防衛線です

役割分担を一言でいうと、層1 は「エージェントに修正の機会を早く返すための層」、層2 は「何があっても通さないための層」です。層1 だけだと CLI の外からの push に無力で、層2 だけだとブロック理由がエージェントに伝わりにくく、修正ループが遅くなります。両方そろって初めて、速さと確実さが両立します。

なお、この構成のさらに外側には「リモート側の防衛線」(ブランチ保護と CI の必須チェック)があります。ローカルの二段は不正な push をそもそも発生させないための仕組み、リモート側は発生してしまった場合に main を守るための仕組み、と層が分かれます。リモート側だけに頼ると、ブロックの発見が CI の完了まで遅れ、エージェントの修正ループが一周あたり数分単位で遅くなるので、ローカルで止める価値は十分にあります。

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

この記事の続きを読む

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

この記事で得られること
テストやリントを飛ばしたまま push が通ってしまう事故を、エージェントへの指示ではなく Hooks と git の仕組みで止められるようになる
Antigravity CLI の PreToolUse フックと git pre-push を重ねた二段ゲートの設定とスクリプトを、自分のリポジトリへそのまま流用できる形で持ち帰れる
--no-verify や設定の自己書き換えといったすり抜け経路を塞ぎ、並列エージェント運用でも崩れない強制力を設計できるようになる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Agents & Manager2026-07-08
エージェントに任せた仕事の「やり直し率」を測る — 委譲境界を勘ではなく数字で引く
どこまでをエージェントに任せるか。この線引きを私は長らく勘で引いていました。タスク種別ごとの「やり直し率」を git 履歴から算出し、委譲境界を数字で引き直す実践を、動くコードとともに整理します。
Agents & Manager2026-06-28
処理させる記事の本文が、そのままエージェントへの指示になっていた話
Antigravity CLI で無人のコンテンツ整形パイプラインを回していると、処理対象ファイルの本文に紛れた指示文がエージェントの動作を乗っ取ります。指示チャネルとデータチャネルを構造的に分離し、出力スコープの受け入れゲートで逸脱を弾く設計をまとめました。
Agents & Manager2026-07-05
エージェント開発スタックの『既知の正常』を1枚のロックファイルで守る — 可動部が同時に動く時代の変更予算設計
IDEビルド・CLI・モデル・依存が同時に動くと、回帰の原因が特定できなくなります。既知の正常を1枚のロックファイルに固定し、一度に動かす軸を絞る変更予算の設計を、実装コードと運用ログで整理しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →