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

Antigravity CLI(agy)を CI で非対話実行する — stdout が消える非TTY問題への対処

agy -p を GitHub Actions や cron で動かすと、ローカルでは見えていた出力が空になり、終了コードだけ 0 が返ることがあります。非TTY検出のしくみと、擬似TTY・テキスト出力の堅牢なパース・APIキー認証で確実に結果を受け取る設計をまとめます。

antigravity-cli2agy2ci-cd7github-actions8automation25

プレミアム記事

ある朝、GitHub Actions のログを開いて固まりました。agy -p "..." を呼ぶステップが緑のチェックで「成功」しているのに、出力が一行も残っていないのです。手元のターミナルでまったく同じコマンドを叩くと、エージェントは饒舌に応答を返します。それなのに、CI のログには空白だけが残り、終了コードは 0。「成功したのに、何もしていない」という、いちばん気づきにくい壊れ方でした。

私はいくつかのサイトの更新を無人で回すために、ターミナルからエージェントを呼ぶ仕組みを個人開発の延長で組んでいます。そこに Antigravity CLI(コマンド名 agy)を組み込もうとして、この罠に半日ほど溶かしました。原因は私のスクリプトのバグではなく、agy の出力モードが「人が見ているターミナルかどうか」で挙動を変えることにありました。

この挙動は公式のチュートリアルにはほとんど書かれていません。けれど無人実行では致命的なので、再現のしくみと、私が最終的に落ち着いた堅牢な構成を順に共有します。

なぜ CI だと agy の出力が消えるのか

agy のような対話的エージェント CLI は、起動時に標準出力が TTY(端末)に繋がっているかどうかを判定します。人が対話しているとき(TTY のとき)は、ストリーミングで色付きの応答を流し、スピナーやプログレスを描画します。一方、出力がパイプやファイル、サブプロセスにリダイレクトされている「非TTY」のとき、CLI はこの端末向けレンダリングを無効化します。

問題は、現行バージョンの agy --print-p が、非TTY で実行されると最終応答の標準出力を取りこぼすことがある点です。これは Antigravity CLI の課題として報告されているもので(後述)、端末描画と「機械可読な stdout」がまだ十分に分離されていないことに起因します。GitHub Actions のステップ、cron、subprocess.run()$(agy -p ...) のコマンド置換 — これらはすべて非TTY なので、どれも同じ症状に当たります。

つまり「ローカルでは動くのに CI だと空になる」のは、環境変数でもネットワークでも権限でもなく、標準出力の接続先が端末でないことが引き金です。ここを最初に疑えるかどうかで、調査時間が大きく変わります。agy の基本的な起動やスラッシュコマンドの読み解きはAntigravity CLI を触る:移行手順とスラッシュコマンドの整理にまとめています。

最小再現:パイプを一枚かませるだけで空になる

手元で再現するのにサーバーは要りません。ターミナルで次を順に試すと、症状がそのまま見えます。

# (1) 直接実行 — 端末に繋がっているので応答が見える
agy -p "現在のディレクトリの README を3行で要約して"
 
# (2) パイプを一枚かませる — 非TTYになり、出力が空になることがある
agy -p "現在のディレクトリの README を3行で要約して" | cat
 
# (3) コマンド置換でも同じ — OUT が空のまま終了コードは 0
OUT="$(agy -p "現在のディレクトリの README を3行で要約して")"
echo "captured length = ${#OUT}"   # → 0 になることがある
echo "exit code = $?"              # → 0(成功扱い)

(1) では応答が見えるのに、(2)(3) では空になる。しかも $?0 を返すので、素朴なスクリプトは「成功した」と判断して次に進みます。これが「成功したのに何もしていない」の正体です。CI のステップは本質的に (2)(3) と同じ状況に置かれています。

補足:この非TTY時の stdout 取りこぼしは Antigravity CLI のリポジトリで Issue として追跡されています(agy --print / -p silently drops stdout when run with a non-TTY)。バージョンによって改善・変化する可能性があるため、自分の agy --version で挙動を必ず確認してください。

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

この記事の続きを読む

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

この記事で得られること
CI や cron で agy -p の出力が突然消える原因(非TTY検出)を理解し、擬似TTYを与えて確実に結果を受け取れるようになる
まだ実装が安定しない --output-format json に頼らず、テキスト出力を壊れにくくパースする実装パターンを習得できる
APIキー認証・終了コード・冪等性を踏まえ、自動投稿のような無人パイプラインに agy を安全に組み込めるようになる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

連携・プラグイン2026-05-01
Antigravity × Lighthouse CI で Web パフォーマンス劣化を自動検出する — 予算・PR コメント・段階的ブロッキング戦略
Antigravity の AI と Lighthouse CI を GitHub Actions で結合し、パフォーマンス劣化を本番に出る前にせき止める実装ガイドです。予算設計から PR コメント、段階的ブロッキングまで本番運用で使える形でまとめました。
AIツール2026-04-02
Antigravity × Sentry × GitHub Actions でプロダクション品質を自動化する完全パイプライン構築ガイド
Antigravity AIエージェントをSentryのエラー追跡とGitHub Actionsに統合し、バグ検出から自動修復PRまでを全自動化するプロダクション品質パイプラインの構築手順を徹底解説します。
連携・プラグイン2026-05-04
Antigravity から Gmail を操作するまで:Google Workspace MCP の設定と実践パターン
Gmail・Google カレンダー・Sheets の操作を Antigravity から AI で直接実行できる MCP 連携の設定手順と実用的なワークフロー例を解説。日常の繰り返し作業を減らすための具体的なセットアップ付き。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →