ANTIGRAVITY LABEN
記事一覧/Agents & Manager
Agents & Manager/2026-07-10上級

エージェントが書いたファイルが .gitignore に飲まれる — commit 前に気づくための検出ゲート

エージェントが生成したファイルが .gitignore に一致していると、差分レビューでは正常に見えるのに commit には含まれません。ignored な生成物を push 前に検出するゲートスクリプトと、その運用調整をまとめました。

Antigravity354エージェント66Git9CI7品質ゲート6

プレミアム記事

エージェントに「生成した HTML を public/content 配下へ書き出してください」と頼み、アーティファクト・ビューアで差分を確認し、満足して commit しました。ところが本番には何も反映されていません。ログを追い直すと、git status にそのファイルは最初から一度も現れていませんでした。.gitignorepublic/content/ が入っていたからです。

原因が分かるまで半日近く費やしました。エージェントは確かに書き込んでおり、ファイルはディスク上に存在し、差分 UI もそれを表示します。ただ Git だけが黙って無視していました。この「三者のうち一者だけが黙る」構造が、デバッグを難しくします。

エージェントの差分と Git の差分は別物です

Antigravity のアーティファクトは、エージェントが実際に触れたファイルの一覧と内容を提示します。これはファイルシステム上の事実です。一方 git status が示すのは、追跡対象かつ ignore 規則に一致しない変更だけです。

観点アーティファクト・ビューアgit status(既定)
対象エージェントが書いたファイル全て追跡中 + 未追跡かつ非 ignored
.gitignore 一致そのまま表示完全に沈黙
失敗の見え方成功に見える差分ゼロ = 何もしていないように見える

つまり「エージェントの作業は成功、Git は何も検出しない」という状態が、正常系と見分けがつきません。ビルド生成物を ignore しているリポジトリでは、生成物をあえて commit したい局面(静的アセットの事前生成、コンテンツ HTML の同梱など)で必ず踏みます。

ignored なファイルだけを列挙する

Git には ignored なパスを明示的に見せるオプションがあります。既定の --ignored はディレクトリ単位で丸めてしまうため、ファイル単位で欲しいときは matching を指定します。

# ignored なパスをファイル単位で列挙する(!! が ignored を示す)
git status --porcelain --ignored=matching | grep '^!!' | cut -c4-
 
# 特定のパスがどの規則で ignore されているかを逆引きする
git check-ignore -v public/content/articles/ja/agents/foo.html
# → .gitignore:12:public/content/	public/content/articles/ja/agents/foo.html

git check-ignore -v は「どのファイルの何行目の規則に当たったか」まで返します。私自身、.gitignore ではなく .git/info/exclude 側に古い除外が残っていたケースを、この出力で初めて特定できました。ファイル名まで表示されるので、原因の候補を一つずつ潰す必要がなくなります。

複数パスをまとめて確認するなら標準入力を使います。

# エージェントが触れたファイル一覧を渡して、ignored なものだけを抜き出す
printf '%s\n' "${TOUCHED[@]}" | git check-ignore --stdin --verbose

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

この記事の続きを読む

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

この記事で得られること
git status --porcelain --ignored=matching でエージェントの生成物のうち追跡されないものだけを列挙する手順
commit 前に ignored な生成物を検出して exit 1 する60行のゲートスクリプト(allowlist 付き)
4サイト運用で誤検知を10%前後に抑えるための .gitignore 見直しの順序
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Agents & Manager2026-07-29
agent.md の綴り誤りが権限を広げていた — frontmatter を厳格に検証する lint を書く
agent.md の frontmatter は綴りを間違えてもエラーになりません。既定値へ静かに落ちた結果、意図と逆の権限が適用されていた実例と、権限キーだけを厳しく検証する lint の実装・実測を記録しました。
Agents & Manager2026-07-15
エージェントのコミットに .bak が混じる — 自動修正ツールの副産物がリポジトリに入る原因と対処
エージェントに --fix 系ツールを走らせた後のコミットに .bak や .orig が紛れ込む症状について、再現条件と原因、ステージ範囲の限定・副産物の即時掃除・pre-commit での拡張子ゲートという3つの対処をまとめました。
Agents & Manager2026-07-10
半年前にエージェントが書いた行の意図を追えるようにする — コミット粒度と来歴トレーラの設計
エージェントが 14 ファイル 800 行を 1 コミットに詰め込むと、半年後の git blame は何も語ってくれません。コミットを意図の単位に割り、Git trailer に来歴を機械可読で残し、blame から設計判断まで逆引きする仕組みを、動くコードとともにまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →