朝、壁紙アプリの Xcode プロジェクトで Antigravity のエージェントと作業した後、午後に Dolice Labs のリポジトリへ切り替えて続きを依頼したところ、エージェントが堂々と前のプロジェクトの Swift ファイルを編集しようとしてきた——個人開発で 2014年から複数アプリを並行管理している身としては、これは見過ごせない事故になりかねません。AdMob 経由の壁紙アプリと、Next.js のブログサイトの context を混ぜられたら、誤コミットや権限漏れに直結します。
このコンテキストブリード(context bleed)は、Antigravity 特有の「アクティブワークスペース」「Agent Memory」「Recent Files」が複合的に絡んだ結果として起きます。再現条件と切り分け方法、そして恒久的に分離するためのワークスペース運用を、実際に手を入れてきたメモから整理します。
症状の見分け方 — 似て非なる3パターンを切り分ける
まず、症状を以下の3パターンに分けて切り分けることが、無駄な再起動を避ける最短ルートです。
- (A) Recent Files 残骸型: 新しいプロジェクトを開いた直後、エージェントが
@リファレンスで前のリポジトリのファイル名を補完候補に出してくる。新規セッションで@Open Editorsを見たときに前のファイルが残っています。 - (B) Agent Memory 残骸型: チャットは新規でも、エージェントが「先ほどの App Delegate ですが」のように前のリポジトリの文脈を覚えています。これは Memory 機能(
agents.md配下や~/.antigravity/memory/)に保存された長期記憶が原因です。 - (C) Multi-root Workspace 漏洩型: 一見1プロジェクトに見えても、過去に「フォルダをワークスペースに追加」した残骸で multi-root 状態になっており、エージェントが両方を同時に index しています。
切り分けは、Command Palette から「Antigravity: Show Active Workspace Roots」を実行するのが最速です。出力に意図しないパスが含まれていたら (C)、含まれていなければ (A) か (B) を疑います。
原因1: Multi-root Workspace に意図せず残ったフォルダ
Antigravity は VS Code 系の多くと同様、ワークスペースに複数のルートフォルダを保持できます。「フォルダを開く」のつもりで File → Add Folder to Workspace... を選んでしまった、あるいは .code-workspace / .antigravity-workspace ファイルを開いてしまったケースで頻発します。
確認手順
- Command Palette →
Antigravity: Show Active Workspace Rootsを実行 - 表示されたパスが想定と一致するか確認
- 不要なルートがあれば、Explorer サイドバーで右クリック →
Remove Folder from Workspace
恒久対策
プロジェクト切り替えは「フォルダを開く(Open Folder)」で行うのを徹底すること。Add Folder to Workspace は意識的に使う時だけに限定します。私の場合、壁紙アプリ群とウェブサイト群でショートカット(macOS の Alfred 経由)を分け、間違って Add 側を呼ばない運用にしています。
原因2: Agent Memory に書き込まれた前プロジェクトの記憶
Antigravity の Agent には、セッションをまたいで保持される長期記憶があります。AGENTS.md(プロジェクトルート直下)の内容や、自動で蓄積される memory.jsonl 系のファイルが該当します。
問題は、グローバル側(ユーザーホーム配下)にも記憶が貯まる点です。プロジェクト固有の事実(「このリポジトリでは SwiftUI を使う」など)が、グローバルメモリに昇格してしまうと、別プロジェクトでもその情報を元に動こうとします。
確認手順
# macOS の場合
ls -la ~/Library/Application\ Support/Antigravity/User/globalStorage/
cat ~/Library/Application\ Support/Antigravity/agent-memory/global.jsonl 2>/dev/null | tail -20
# Linux の場合
ls -la ~/.config/Antigravity/User/globalStorage/
cat ~/.config/Antigravity/agent-memory/global.jsonl 2>/dev/null | tail -20tail -20 で直近のエントリを確認し、特定プロジェクト固有の事実(リポジトリ名、ファイルパス、関数名)が混ざっていたら、グローバルメモリに「漏れた」状態です。
解決ステップ
- グローバルメモリを直接編集する場合は Antigravity を完全終了してから バックアップを取り、該当行を削除
- アプリ内では
Settings → Agent → Memory → Manage Global Memoryから個別エントリを削除可能 - 今後の漏れを防ぐため、
AGENTS.mdの冒頭にScope: project-onlyのような明示を入れ、エージェントにグローバル昇格を抑制するよう指示
私は壁紙アプリ用と Dolice Labs 用で AGENTS.md の冒頭ルールを完全に分けて書いており、5,000万DL を超えたアプリ事業側の運用ノウハウがブログ側に流れ込まないようにしています。
原因3: Recent Files / Open Editors が前セッションを引きずる
新しいプロジェクトを開いても、Antigravity は「前回開いていたタブを復元する」設定がデフォルトで有効です。これにより、エージェントの @ リファレンス候補に前のプロジェクトのファイルが残ります。
確認と修正
Settings.json を開き、以下を確認します。
{
"window.restoreWindows": "none",
"workbench.editor.restoreViewState": false,
"antigravity.agent.includeRecentFilesInContext": false
}window.restoreWindows: "none" まで振ると毎回タブが消えてしまうので、複数プロジェクトを行き来する人は "folders" 設定にしておくと、フォルダ単位で復元され、別プロジェクトのタブは引きずりません。
原因4: 同一インスタンスでフォルダだけ切り替えた場合の Index 残留
File → Open Recent で別プロジェクトを開くと、Antigravity の Indexer は古いリポジトリの index を非同期で破棄します。しかし破棄が完了する前にエージェントを呼ぶと、エージェントは古い index を参照してしまいます。
確実な切り分け方法
プロジェクト切り替えのたびに New Window で開くのが最も安全です。Cmd+Shift+N / Ctrl+Shift+N を癖づけ、ウィンドウを閉じる前にエージェントセッションを終了させます。これだけで context bleed の発生率は体感で 9 割減ります。
複数プロジェクトをどうしても 1 ウィンドウで切り替えたい場合は、切り替え後に Command Palette から Antigravity: Reload Workspace Index を明示的に実行し、status bar の「Indexing...」表示が消えてからエージェントを呼ぶ運用にします。
二度と起こさないためのチェックリスト
- [ ]
Antigravity: Show Active Workspace Rootsを毎朝確認する習慣をつける - [ ]
AGENTS.mdの冒頭にプロジェクトスコープを明示する - [ ] グローバルメモリは週1回
tail -50で内容確認 - [ ] プロジェクト切り替えは原則
New Windowで - [ ]
restoreWindows: "folders"設定で別プロジェクトのタブ復元を防ぐ
複数の収益化アプリと 4 つの技術ブログを並行運用していると、context bleed は単なる不便ではなく、誤ったクレデンシャルをコミットするリスクに直結します。同じような並行運用をしている方にとって、安心して切り替えられる環境づくりの参考になれば幸いです。