◉ANTIGRAVITY LABEN
記事一覧/連携・プラグイン
⬡ 連携・プラグイン/2026-07-19上級

起動を止める一つのファイル — config.json の破損に備える設定健全性ガード

Antigravity 2.3.1 は config.json が空または壊れていると起動できない不具合を修正しました。修正されたのは症状で、壊れる原因は残ります。スケジュール実行の直前に設定を検証し、良い状態を控え、壊れていれば戻す3層のガードを、動くコードと個人運用の実測でまとめます。

Antigravity392config.json設定管理4自動化40スケジュール実行10resilience9

✦ プレミアム記事

夜間に走らせているジョブが、ある朝だけ何も残していませんでした。ログには短い一行、「起動できませんでした」。前日まで何百回と回っていた同じ手順が、その日は一歩目でつまずいていました。

原因は、たった一つのファイルでした。~/.gemini/config/ の下に置かれた config.json が、空になっていたのです。中身のない JSON をエージェントが読み込もうとして、そのまま立ち上がれなかった。私の側のコードには、何一つ間違いはありませんでした。

Antigravity 2.3.1(7/16)は、まさにこの不具合を修正しています。「config.json が空または壊れていると起動できなくなる」問題を塞いだ、と変更点にあります。ありがたい修正です。けれど、修正されたのは「壊れた設定で起動できない」という症状の方でした。設定が壊れる原因そのものは、私たちの環境の側に残ります。自動でタスクを回すほど、この一歩目の脆さは他人事ではなくなります。

なぜ一つのファイルが起動を止めるのか

エージェント型のツールは、起動時に自分の設定を読みます。モデルの選択、権限の既定、接続先の情報。それらが config.json のような一つのファイルにまとまっている構造は、扱いやすさと引き換えに、一点への集中というもろさを抱えます。

そのファイルが正しい JSON でありさえすれば、多少内容が古くても起動はできます。問題は、JSON として壊れているときです。閉じ括弧が一つ足りない、途中で切れている、あるいは中身が空。パーサは読み込みに失敗し、設定が無いのではなく「読めない」状態になります。無ければ既定で補える実装もありますが、壊れて読めないと、そこで判断が止まります。

私が経験したのは、この「空になっていた」ケースでした。書き込みの途中で何かが中断され、古い中身が消えたのに新しい中身が入りきらなかった。結果として、サイズ 0 のファイルだけが残りました。

壊れ方を先に知っておく

守りを設計する前に、どう壊れるのかを具体的に見ておきます。原因が分かれば、どこに手を当てるべきかが決まります。

壊れ方典型的な原因効く対策
サイズ0・途中で切れる書き込み中の中断、ディスク満杯アトミックな書き込み・実行前の検証
不正な JSON手編集のミス、並行書き込みパース検証・良い状態からの復元
古い状態への巻き戻りクラウド同期の競合解決世代管理・変更検知
キーの欠落スキーマ変更・部分的な移行最小スキーマの照合

個人開発で夜間の自動化を回している私自身の環境では、設定ディレクトリがクラウド同期の対象に入っていた時期があり、二台の端末が別々に書いた設定がぶつかって、同期側が中途半端なファイルを残したことがありました。ディスクが一時的に埋まって、書き込みが最後まで通らなかったこともあります。どれも、ツールのバグではなく環境の側の出来事です。だからこそ、ツールの修正を待つのではなく、実行前に自分で確かめる価値があります。

✦

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

この記事の続きを読む

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

この記事で得られること
✦config.json の JSON パースと最小スキーマを実行前に検証し、壊れた設定でエージェントを起動させない preflight ガードの実装
✦良い状態を sha256 で台帳化して直近3世代だけ控え、os.replace のアトミックな置換で復元する3層設計
✦壊れて戻せる控えも無いときに、最小の既定 config を書いて起動を通す fail-safe と、その一度きりを人間に知らせる線引き
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

◉ Antigravity 基本2026-08-10
非対話実行でターン境界を守る — コマンド分類テーブルと fail-closed ゲートの実装メモ
使用量を記録するはずの定期ジョブが、実行のたびにモデルを呼んでいました。ターンを開始するコマンドとしないコマンドを分類表にして、未分類を実行させないゲートを実装し、実運用のスクリプトを走査して測った記録です。
⬡ 連携・プラグイン2026-09-20
10月5日に止まる antigravity-preview-05-2026、差し替えで済む構成と済まない構成
antigravity-preview-05-2026 の停止日が10月5日に決まりました。公式が示すのは日付と後継名だけです。output_text だけを読む構成なら差し替えで終わり、steps を読む構成なら改修が要ります。その分かれ目を切り替え前に確かめる手順です。
⬡ 連携・プラグイン2026-09-18
MCP が欠けたまま始まったセッションを、どこで止めるか
MCP サーバーの初期化に失敗したまま始まったセッションで、エージェントは黙って別の手段に落ちます。ツールが本当に見えているかを手元で確かめる小さなスクリプトと、欠けていたときに取る三つの分岐をあらかじめ決めておく話です。