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

Antigravity の OAuth トークンが OS キーリングに保存されるようになった—ヘッドレス運用で認証を崩さない設計

v2.2.1 で更新後の OAuth トークンが OS キーリングへ自動保存されるようになりました。デスクトップでは快適な一方、ヘッドレスのスケジュール実行では保管庫そのものが存在せず認証が崩れます。バックエンドの明示指定・安全なファイルフォールバック・保存場所ごとの生死確認までを設計します。

Antigravity315OAuth認証5キーリングヘッドレス自動化27

プレミアム記事

デスクトップの Antigravity では一度ログインすれば数日間プロンプトが出ない。ところが同じアカウントで組んだサーバー側のスケジュール実行だけ、数時間おきに認証が切れて空振りする——この非対称に、しばらく首をかしげていました。

原因は権限でもネットワークでもなく、トークンをどこに置くかでした。v2.2.1 で、更新後の OAuth トークンは OS のキーリングへ自動保存されるようになっています。デスクトップではこれが効いて再認証が激減します。けれど端末も画面もないヘッドレスのサーバーには、その「キーリング」という保管庫がそもそも立ち上がっていないことがあります。保存しようとして黙って失敗し、次の起動ではトークンが見つからず、また最初から取り直す。この繰り返しが「数時間おきに切れる」の正体でした。

個人開発で Dolice Labs の複数サイトを無人で回している私にとって、この手の「デスクトップでは再現しない不具合」が一番やっかいです。手元では起きないので、ログを保管場所の視点で読み直すまで見当がつきませんでした。同じ静かな失敗に手を焼く方が、保管庫という視点を最初から持てるように、仕組みからヘッドレス向けの設計、そして本番運用での落とし穴の回避まで順にたどっていきます。

OS キーリングという保管庫の正体

まず、「キーリング」が具体的に何を指すのかを OS ごとに揃えておきます。ここが曖昧なままだと、対処が当て推量になります。

OS保管庫の実体アクセスの前提
macOSKeychain(login キーチェーン)ログインセッションが解錠されていること
WindowsCredential Locker(資格情報マネージャー)対話ユーザーのログオンセッション
Linux(デスクトップ)Secret Service(gnome-keyring / KWallet)D-Bus セッションと解錠済みの keyring デーモン
Linux(ヘッドレス)多くの場合、存在しないD-Bus セッションが立たず Secret Service に応答者がいない

要点は、macOS と Windows は「対話ログインしたユーザーのセッション」に強く結びついている点です。SSH で入っただけのシェルや、ログイン画面を通らずに起動する常駐サービスからは、同じユーザー名でも解錠済みのキーチェーンに手が届かないことがあります。

Linux のデスクトップでは Secret Service という共通規格があり、gnome-keyring や KWallet がその応答者として動きます。逆に言えば、その応答者がいない環境では、保存要求そのものが宛先を失うということです。ヘッドレスのサーバーやコンテナがまさにこれに当たります。

ヘッドレスでキーリングが消える瞬間

症状を分解します。無人のスケジュール実行で認証が崩れるとき、内部では次の順に事が起きています。

  1. エージェントがトークンを更新する(ここまでは成功する)
  2. 更新後のトークンを OS キーリングへ保存しようとする
  3. キーリング(Secret Service の応答者)が存在せず、保存が失敗する
  4. その失敗が致命傷として扱われず、実行はそのまま進む
  5. 次回の起動でキーリングを読みにいくが、当然何もない
  6. トークンが見つからず、再取得か、端末のない環境での再ログイン待ちに落ちる

厄介なのは 4 の「黙って進む」部分です。保存の失敗はしばしば警告どまりで、終了コードには表れません。以前に扱った、Antigravity CLI が無人実行中に 401 で止まるとき の「成功と記録されるのに中身が空」という現象と、根は同じ静かな失敗です。あちらがトークンの寿命の問題なら、こちらはトークンの置き場所の問題、という違いがあります。

まず、自分の実行環境に保管庫の応答者がいるかを確かめます。

#!/usr/bin/env bash
# 目的: Secret Service(キーリングの応答者)が実際に応答するかを判定する。
# いる/いないを最初に確定させないと、以降の対処が当て推量になる。
set -uo pipefail
 
has_secret_service() {
  # D-Bus セッションが無ければ、その時点で応答者はいない。
  [ -n "${DBUS_SESSION_BUS_ADDRESS:-}" ] || return 1
  # org.freedesktop.secrets が bus 上に存在するかを問い合わせる。
  command -v dbus-send >/dev/null 2>&1 || return 1
  dbus-send --session --dest=org.freedesktop.DBus \
    --type=method_call --print-reply \
    /org/freedesktop/DBus org.freedesktop.DBus.ListNames 2>/dev/null \
    | grep -q "org.freedesktop.secrets"
}
 
if has_secret_service; then
  echo "[keyring] Secret Service あり: OS キーリングを使えます"
else
  echo "[keyring] Secret Service なし: ヘッドレス向けの保管戦略へ切り替えます"
fi

この判定を「本処理の前」に置くのが肝心です。保存が失敗してから気づくのではなく、保管庫の有無を先に確定させてから経路を選ぶ。そうすることで、後段の分岐が推測ではなく事実に基づきます。

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

この記事の続きを読む

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

この記事で得られること
デスクトップでは動くのにサーバーのスケジュール実行だけ認証が切れる、という不可解な症状の原因を保管庫の視点から特定できるようになる
Secret Service の有無を判定してキーリングバックエンドを明示指定し、無い環境では権限を 0600 に絞ったファイルフォールバックへ安全に切り替える実装を今日から手元に持ち帰れる
複数マシンでエージェントを回すときにトークンを同期すべきか、という判断基準を運用の実体験から得られる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

連携・プラグイン2026-06-17
Antigravity CLI が無人実行中に 401 で止まるとき — 認証切れと再ログイン待ちを切り分ける
Antigravity CLI を無人のスケジュール実行に組み込んだあと、ある朝から 401 が一度出て止まる症状の原因と、認証切れと再ログイン待ちを切り分けて自動運用を立て直す手順をまとめます。
連携・プラグイン2026-06-27
無人のエージェントを止めずに鍵を入れ替える — 重複期間つきローテーション設計
API キーやトークンは、漏れる前に定期的に入れ替えたいものです。ところが無人で動くエージェントは、入れ替えの瞬間に認証が切れて静かに止まります。個人開発で複数サイトを自動運用してきた立場から、止めずに鍵を回す重複期間つきの設計をまとめます。
連携・プラグイン2026-03-20
Google Stitch MCP × Antigravity — Vibe Design から実装までを完全自動化するパイプライン
Google Stitch の MCP サーバーと Antigravity を接続し、Vibe Design で作成したUIデザインを自動的にコード化する統合パイプラインを構築する方法。Voice Canvas との連携も解説。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →