ANTIGRAVITY LABEN
記事一覧/Antigravity 基本
Antigravity 基本/2026-06-03中級

Antigravity のエージェント編集が patch does not apply で失敗するときの原因と対処

Antigravity のエージェントがファイルを編集しようとして patch does not apply や hunk failed で止まる症状の原因と直し方をまとめます。エージェントが読んだ後にファイルが変わってしまう競合を中心に、再発させない設定までを実体験ベースで解説します。

Antigravity338AIエージェント36patchdiff2トラブルシューティング26

Antigravity のエージェントに「この関数を直して」と頼んだのに、しばらく動いた末に patch does not applyhunk #2 FAILED といった一行を残して編集が止まる——。実装そのものはエージェントが正しく考えているのに、最後のファイル書き込みだけが空振りするこの症状は、複数のエージェントを並行で走らせ始めた頃から私の手元でも頻繁に起きるようになりました。

先に結論をお伝えします。このエラーのほとんどは、エージェントが書こうとしているコードの中身が間違っているわけではありません。エージェントがファイルを読んだ時点と、実際に差分を当てようとした時点で、ファイルの中身がずれてしまったことが原因です。つまりコードの問題ではなく、タイミングと状態管理の問題です。ここを取り違えると、何度プロンプトを書き直しても直りません。

まず「どちらの行で落ちているか」を読む

patch does not apply 系のエラーは、内部的には git apply や同等のパッチ適用処理が、差分の「文脈行(context line)」と実ファイルの行を照合できなかったときに出ます。エージェントは編集対象の前後数行を目印(アンカー)にして差分を作りますが、そのアンカー行が実ファイル側で1文字でも変わっていると照合に失敗します。

まず確認したいのは、エラーに添えられたハンク番号です。hunk #1 succeeded と出ていて hunk #2 FAILED で止まっているなら、ファイルの前半は当たっていて後半でずれたことを意味します。これは「ファイル全体が古い」のではなく「特定の箇所だけ別の何かが触った」サインで、原因の絞り込みに直結します。

なぜ「適用できないパッチ」が生まれるのか

私の環境で起きていた原因は、大きく三つに分かれていました。

一つ目は、保存時の自動整形(フォーマッタ)との競合です。Prettier や ESLint の --fix、エディタの format-on-save が、エージェントが読んだ直後にインデントやクォートを書き換えてしまうと、アンカー行が一致しなくなります。エージェントは 'single' クォートを前提に差分を作ったのに、保存フックが "double" に直してしまった、という食い違いが典型です。

二つ目は、複数エージェントの並行編集です。2014年から個人開発を続け、いまも壁紙・癒し系のアプリを複数本かかえているので、別々のサブエージェントに同じユーティリティファイルを触らせてしまうことがありました。片方がファイルを書き換えた直後にもう片方が古い差分を当てようとすれば、当然失敗します。

三つ目は、改行コードの不一致です。CRLF と LF が混在したリポジトリでは、エージェント側が LF を前提に差分を作っても、実ファイルが CRLF だと全行が「変更あり」と判定されて全滅します。Windows と macOS をまたいで開発していると静かに混入します。

対処1: 最新の状態を読み直させてから当てる

まず即効性があるのは、エージェントに編集対象をもう一度読み直させることです。Antigravity のチャットで、失敗したファイルを明示してから依頼し直します。

src/utils/format.ts を編集前にもう一度全文読み込んでから、
最新の内容に対して差分を作り直してください。
前回の差分は古いスナップショットに基づいていて適用に失敗しました。

これでアンカー行が現在のファイルに揃い、当たるようになることがほとんどです。状態がずれているだけなので、コードの考え直しは不要です。

対処2: 保存時フォーマッタとエージェント編集の順番を固定する

再発を断つには、保存フックがエージェント編集に割り込まないようにします。私は AGENTS.md にフォーマッタの方針を明記し、エージェントの出力が既存スタイルに最初から合うようにしています。

# AGENTS.md(抜粋)
 
## コードスタイル
- フォーマッタは Prettier。設定は .prettierrc に従うこと。
- 文字列はシングルクォート、セミコロンあり、インデントは半角スペース2。
- 差分を作る前に対象ファイルの現状スタイルを確認し、それに合わせること。

加えて、フォーマッタの設定ファイル自体をリポジトリに固定しておくと、エージェントの出力と保存後の状態が一致し、アンカーずれが起きにくくなります。

// .prettierrc
{
  "singleQuote": true,
  "semi": true,
  "tabWidth": 2
}

対処3: 改行コードをリポジトリ側で正規化する

改行コード由来の全滅は、.gitattributes で正規化すると根本から消えます。次の一行をリポジトリ直下に置き、テキストファイルの改行を LF に統一します。

# .gitattributes
* text=auto eol=lf

既に CRLF が混入している場合は、設定を入れた後に一度だけ全ファイルを正規化し直します。

git add --renormalize .
git commit -m "Normalize line endings to LF"

これでエージェントが前提とする LF と実ファイルが揃い、改行違いによる「全行変更」判定が起きなくなります。

並行編集をぶつけないための小さな運用

複数エージェントを使うときは、ファイル単位で担当を分けるのがいちばん確実です。私は Dolice Labs の4サイトと複数アプリを同時に回す中で、「同じファイルを二つのエージェントに同時に触らせない」という単純なルールだけで、適用失敗の大半が消えました。どうしても同じ領域を触るなら、片方の編集が完了してコミットされてから次を走らせる、という直列化で十分です。仕組みで防げる失敗は、プロンプトの工夫よりも運用の工夫で消すほうが安定します。

同じ症状で時間を溶かしている方の切り分けが少しでも早くなれば幸いです。

シェア

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

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

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

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Antigravity 基本2026-07-01
Antigravity 2.0 でチャット側に MCP が出てこないときに確認したこと
Antigravity 2.0 が IDE とチャット型エージェントの2アプリに分かれてから、IDE で設定した MCP サーバーがチャット側の一覧に出てこなくなりました。設定スコープが別々になっている原因と、ワークスペース単位に真実源を一本化して両アプリで揃える手順をまとめます。
Antigravity 基本2026-05-18
AntigravityでAGENTS.mdが反映されないときの切り分けと対処
AntigravityにAGENTS.mdを置いてルールを書いたのに、エージェントが無視して暴走する——よくあるこの症状を、配置場所・優先順位・コンテキスト枠の3軸から切り分けて修正するための実践ガイドです。
Antigravity 基本2026-04-30
Antigravity エージェントのオブザーバビリティ設計図
Antigravity 上で動く AI エージェントを本番運用するための、オブザーバビリティ設計の決定版ガイド。トレース・メトリクス・ログを統合した実用的なフレームワークを提示します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →