ANTIGRAVITY LABEN
記事一覧/連携・プラグイン
連携・プラグイン/2026-06-18中級

エージェントのコミットを pre-commit で止める — 壊れた変更を本番リポジトリに入れない仕組み

Antigravity のエージェントが書いたコードを、コミットの瞬間に lint・型チェック・高速テスト・秘密情報スキャンで自動検査する pre-commit ゲートの組み方を、実測の所感とともにまとめました。

Antigravity348pre-commit2Git8品質ゲート6エージェント65

プレミアム記事

エージェントに「このバグを直して」と頼んだ翌朝、コミット履歴を見たら緑のテストが赤く変わっていたことがあります。個人開発で運用しているアプリのリポジトリでした。

直した箇所は確かに直っていました。ただ、その過程で別のファイルの import を一つ消していて、関係のないモジュールが起動時に落ちるようになっていたのです。

エージェントは悪くありません。私自身が、生成された変更を「読まずに」コミットできる状態を放置していたことが原因でした。

人間のレビューを毎回挟めれば理想ですが、1 日に何度もエージェントへ作業を投げる運用では、その都度全 diff を精読するのは続きません。そこで私が頼っているのが pre-commit です。コミットという一点に検査を集約すれば、エージェントの出力でも人間の手作業でも、同じ網に必ずかかります。

なぜ「コミットの瞬間」が最適な検問所なのか

エージェントの作業はファイルを次々に書き換えていきます。途中の状態は壊れていて当然で、そこを検査しても意味がありません。

検査すべきは「これで一区切り」とエージェントが判断し、変更を確定しようとする瞬間です。それがまさに git commit のタイミングです。

CI で検査する手もありますが、CI はプッシュの後に回ります。壊れたコミットはすでにローカル履歴に残り、エージェントは次の作業へ進んでしまっています。pre-commit なら、壊れた変更はコミットとして成立すらしません。エージェントの作業ループの内側で完結するのが利点です。

私はブログ運営でも同じ考え方を使っています。4 つの技術ブログを自動更新するパイプラインでは、記事を push する直前に Python 製の品質ゲートを必ず通し、違反が出たら記事そのものを捨てて書き直す運用にしています。検査を「最終地点の手前」に置くという発想は、コードでも文章でも変わりません。

最小構成から始める

最初から重いフックを並べると、エージェントの待ち時間が伸びて運用が嫌になります。まずは速くて効果の大きいものだけを置きます。

.pre-commit-config.yaml をリポジトリ直下に作ります。

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v5.0.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-merge-conflict
      - id: check-added-large-files
        args: ["--maxkb=500"]
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.12.1
    hooks:
      - id: ruff
        args: ["--fix"]
      - id: ruff-format

導入は 2 コマンドです。

pip install pre-commit
pre-commit install

pre-commit install を一度実行すると、.git/hooks/pre-commit が差し替わり、以降の git commit すべてに検査が挟まります。エージェントが内部で git commit を呼んでも、この網は同じように作動します。エージェント側に特別な設定は要りません。

ここまでで、構文エラーを含むコミットやマージ衝突マーカーの残骸、巨大ファイルの混入はコミット段階で止まります。実測では、この最小構成のフック群はステージ済みファイルが数個なら 1 秒未満で終わります。待ち時間として体感されない範囲です。

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

この記事の続きを読む

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

この記事で得られること
エージェントが直したつもりで壊した変更を、コミット前に 1 〜 3 秒で弾く .pre-commit-config.yaml の実例
フックが落ちたときにエージェント自身へ失敗ログを返し、人間を介さず自己修正させる回し方
秘密情報スキャン・型チェック・高速テストの 3 段を、待ち時間を増やさず並べる順序の設計
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Agents & Manager2026-07-10
エージェントが書いたファイルが .gitignore に飲まれる — commit 前に気づくための検出ゲート
エージェントが生成したファイルが .gitignore に一致していると、差分レビューでは正常に見えるのに commit には含まれません。ignored な生成物を push 前に検出するゲートスクリプトと、その運用調整をまとめました。
連携・プラグイン2026-06-25
翻訳済みの一行が、いつの間にか英語へ戻っていた — エージェントが触った文字列リソースを差分で守る
エージェントに values フォルダの整理を任せると、訳済みの値が静かに原文へ戻ることがあります。既定言語を正、各ロケールを差分として鍵単位で突き合わせ、欠落・戻し訳・書式引数の崩れだけを pre-commit で止める設計と実装をまとめました。
Agents & Manager2026-07-15
エージェントのコミットに .bak が混じる — 自動修正ツールの副産物がリポジトリに入る原因と対処
エージェントに --fix 系ツールを走らせた後のコミットに .bak や .orig が紛れ込む症状について、再現条件と原因、ステージ範囲の限定・副産物の即時掃除・pre-commit での拡張子ゲートという3つの対処をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →