GEMINI LABEN
CLI — Gemini CLIとGemini Code Assist IDE拡張は6/18でリクエスト受付を終了しました。移行先はAntigravity、ターミナル派にはGo製のAntigravity CLIですFLASH — Gemini 3.5 Flashが一般提供(GA)に。エージェントとコーディング用途で持続的にフロンティア性能を出す最も賢いモデルと位置づけられていますIMAGE — gemini-3.1-flash-image-previewとgemini-3-pro-image-previewが非推奨となり、6/25にシャットダウン予定です。参照コードは後継へ切替をAGENTS — Managed Agentsが公開プレビューに。Googleがホストする隔離Linuxサンドボックスでステートフルな自律エージェントを動かせますSEARCH — File Searchがgemini-embedding-2による画像のマルチモーダル検索に対応しましたMIGRATE — 期限つきの非推奨や停止が続くため、CLIや旧モデルを組み込んだ自動化は移行状況の記録が欠かせませんCLI — Gemini CLIとGemini Code Assist IDE拡張は6/18でリクエスト受付を終了しました。移行先はAntigravity、ターミナル派にはGo製のAntigravity CLIですFLASH — Gemini 3.5 Flashが一般提供(GA)に。エージェントとコーディング用途で持続的にフロンティア性能を出す最も賢いモデルと位置づけられていますIMAGE — gemini-3.1-flash-image-previewとgemini-3-pro-image-previewが非推奨となり、6/25にシャットダウン予定です。参照コードは後継へ切替をAGENTS — Managed Agentsが公開プレビューに。Googleがホストする隔離Linuxサンドボックスでステートフルな自律エージェントを動かせますSEARCH — File Searchがgemini-embedding-2による画像のマルチモーダル検索に対応しましたMIGRATE — 期限つきの非推奨や停止が続くため、CLIや旧モデルを組み込んだ自動化は移行状況の記録が欠かせません
記事一覧/API / SDK
API / SDK/2026-06-19上級

Managed Agents の請求はトークンだけでは読めない — サンドボックス稼働時間に予算境界を引く設計

公開プレビューの Managed Agents は、トークンに加えてサンドボックスの稼働時間でも課金されます。ハングした1実行が静かに予算を削る第二の課金軸を切り分け、壁時計上限・アイドル切断・同時実行の天井を動く Python で設計します。

gemini-api244managed-agents3cost-management2production89automation28agent-design2

プレミアム記事

ある朝、Managed Agents の請求の内訳を眺めていて、手が止まりました。

トークンの消費量は、事前に見積もった範囲のほぼそのままでした。にもかかわらず、合計額が頭の中の数字と合いません。差分をたどっていくと、原因はトークンではなく、Google ホストのサンドボックスが立ち上がっていた「時間」のほうにありました。

私自身、個人開発のかたわらで複数サイトのコンテンツ更新を自動で回しています。Managed Agents の公開プレビューを差し込んだのは、エージェントループの面倒を一段減らしたかったからでした。ところが、ひとつの実行がツール応答を待ったまま静かにハングし、サンドボックスは生きたまま 18 分ほど居座っていました。トークンは1円も増えていないのに、稼働秒数だけが積み上がっていたわけです。

ここでお伝えしたいのは、Managed Agents の費用は トークンと稼働時間という二つの軸 で動く、という前提に立った予算設計です。片方だけを見張っていると、もう片方の軸で静かに削られます。

Managed Agents の課金は二つの軸で動きます

まず、何にお金がかかっているのかを分けて見ます。Managed Agents は、1回の呼び出しで Google ホストの隔離 Linux サンドボックスを起動し、その中で推論・ツール実行・コード実行・ファイル操作までを完結させます。便利さの裏側で、課金の対象も二つに増えます。

何で決まるか膨らむ典型例従来の監視で気付けるか
トークン課金入力・出力・思考トークン量長いコンテキスト、冗長な再試行気付ける(既存のコスト監視で追える)
サンドボックス稼働時間サンドボックスが生きていた壁時計秒数ツール応答待ちのハング、アイドル放置、過剰な並列気付きにくい

トークン側は、これまで API を使ってきた感覚がそのまま効きます。問題は稼働時間側です。エージェントが「考え込んで止まっている」「外部 API の応答を待っている」「処理は終わったのにサンドボックスが畳まれていない」——こうした状態は、トークンを一切消費しないまま秒数だけを刻みます。

私の手元では、ハングした1実行がサンドボックスを 18 分生かし、同じ朝に走った正常な実行の平均稼働が 40 秒前後だったので、たった1件の取りこぼしが正常実行 27 回ぶんの稼働に化けていました。費用そのものより、この軸を見ていなかったという事実のほうが、静かに効いてくる種類の怖さでした。

予算境界は「実行あたりの壁時計上限」から引きます

最初に引くべき境界は、1実行が生きていてよい最大の壁時計秒数です。トークンの上限ではなく、時間の上限です。

考え方はシンプルです。実行を非同期に投げ、asyncio.wait_for で全体に締め切りをかけ、超えたらサンドボックスを明示的に切断する。ハングしても、上限の秒数で必ず畳まれる構造にします。

import asyncio
import time
from dataclasses import dataclass
 
@dataclass
class RuntimeBudget:
    max_wall_seconds: float = 180.0   # 1実行が生きてよい上限
    idle_seconds: float = 45.0        # 進捗が止まったら畳むまでの猶予
    max_concurrent: int = 2           # 同時に生かすサンドボックス数の天井
 
class RuntimeBudgetError(Exception):
    """壁時計上限・アイドル上限の超過を表します。"""
 
async def run_with_wall_clock(client, *, model, instruction, budget):
    """Managed Agents の1実行に壁時計の締め切りをかけます。
 
    client.agents は公開プレビューの想定インターフェースです。
    create_run / poll_run / cancel_run は手元の SDK 名に読み替えてください。
    """
    started = time.monotonic()
    run = await client.agents.create_run(model=model, instruction=instruction)
    try:
        result = await asyncio.wait_for(
            _poll_until_done(client, run.id, budget),
            timeout=budget.max_wall_seconds,
        )
        return result, time.monotonic() - started
    except asyncio.TimeoutError:
        # ここを忘れるとサンドボックスが生きたまま秒数を刻み続けます
        await client.agents.cancel_run(run.id)
        raise RuntimeBudgetError(
            f"run {run.id} が壁時計上限 {budget.max_wall_seconds}s を超えました"
        )

ここで一番大切なのは except 節の cancel_run です。締め切りで wait_for を抜けても、サンドボックス自体は黙って生き続けます。明示的に切断して初めて、稼働秒数が止まります。私が最初に取りこぼしたのは、まさにこの一行でした。

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

この記事の続きを読む

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

この記事で得られること
Managed Agents の請求がトークン課金の見積もりと合わない方が、サンドボックスの壁時計稼働という第二の課金軸を切り分け、費用が膨らむ箇所を特定できるようになります
実行あたりの壁時計上限・アイドル時のサンドボックス自動切断・同時実行数の天井を、asyncio でそのまま動く Python のラッパとして手に入れられます
稼働秒数を工程ごとに帰属させる JSONL 台帳の設計で、請求書を見る前に「どの自動化が時間を食っているか」を数字で言えるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API / SDK2026-06-16
Managed Agents が作った成果物を本番に入れる前に — 受け入れゲートを自前で設計する
公開プレビューの Managed Agents にファイル生成まで任せると、品質がぶれたまま本番へ流れ込みます。サンドボックスの成果物を受け入れる前に通す検証ゲートを、そのまま動く Python コードと却下フィードバックの設計まで含めて組み立てます。
API / SDK2026-06-13
Gemini の生成は通ったのに公開が落ちた朝 — 高価な出力を取りこぼさない『生成アウトボックス』の設計
生成は成功したのに、公開処理の直前でプロセスが落ちる。すると高価な出力が消え、もう一度同じ生成に課金することになります。生成結果を先に永続化し、公開を冪等な後続処理に分離する『生成アウトボックス』の実装と、6月の障害下での運用記録をまとめました。
API / SDK2026-06-13
Gemini API の Managed Agents に自前のエージェントループを移すべきか — 移す処理と残す処理を分ける3つの質問
Gemini API の Managed Agents が公開プレビューになり、自前のエージェントループとの使い分けが現実の検討事項になりました。実行環境・状態の所有・失敗時の回収という3つの質問で、移す処理と残す処理を分ける考え方を整理します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →