{"id":"2096890699883123119","url":"https://x.com/u1/status/2096890699883123119","text":"以下Postで調査速報を書きましたが､AstraでSubagent利用時に異常にTokenを消耗してしまう問題の原因と対策をまとめました\n\nhttps://x.com/u1/status/2096839505269711302 https://x.com/i/article/2096877589805907968","author":{"name":"Yuichi Uemura","username":"u1","avatarUrl":"https://pbs.twimg.com/profile_images/2064373249296007168/IAFv2qP2_200x200.jpg"},"createdAt":"Mon Sep 07 09:17:55 +0000 2026","engagement":{"replies":3,"retweets":46,"likes":224,"views":17459},"article":{"title":"AstraでSubagent利用するとUsage消費ペースが激しすぎる問題への対策","previewText":"「Astraでサブエージェントを使うと、利用枠の減りが速い」という話を見かけました。 気になったので、2026年9月7日の手元のCodexログと、Astra以前のログを調査してみました｡","coverImageUrl":null,"content":"「Astraでサブエージェントを使うと、利用枠の減りが速い」という話を見かけました。 気になったので、2026年9月7日の手元のCodexログと、Astra以前のログを調査してみました｡\n\nそこで見つかったのが、親のAstraが10秒のsubagentの状態確認を何度も実行している怪しげな動きです。 これによって10秒毎に処理ターンが実行されて､コンテキストキャッシュのロードと実行が無駄に発生して､利用枠を消耗している事を発見しました｡\n\n対策として、Codexの設定ファイルで待機時間の最短値と既定値を120秒へ引き上げ、指示ファイルで推定残り時間の2倍を指定する運用へ改めました。 この記事では、調査で確認されたログの記録と、実際に行った設定変更の内容を紹介します。\n\n# 10秒待機の反復による追加消費の問題\n\nCodexでは、作業の一部をサブエージェントへ委譲できます。 本記事では、作業全体を統括するエージェントを親、作業を渡されたサブエージェントを子と呼びます。 親エージェントが子からの完了通知を待つためのツールが wait_agent です。\n\n2026年9月7日のログを集計したところ、親Astraによる待機呼び出しの約78%が明示的な10秒指定でした。 同日午前0時から14時46分までのログに含まれる wait_agent の呼び出し203件を集計した内訳は以下のとおりです。\n\n約78%が、明示的な10秒指定でした。203回のうち170回は、通知が来ないままタイムアウトしています｡\n\nある箇所では、次の動きが7回連続していました。 実ログの指定値と結果を簡略化すると、こうなります。\n\nこの7応答では、1回あたり約17万トークンの文脈を入力に持ち、入力トークンの合計は約120万でした。 何も価値ある事をしていないのにこれだけ無駄なトークンが入力されて浪費されていました｡\n\n# Astra移行前後の待機時間の変化\n\n過去のログと比べると、待機時間の指定には違いがありました。 親による直接のwait_agent呼び出しを集計した結果です。\n\nAstraでは指定時間の中央値が10秒まで低下し、10秒指定の比率も約79%に達しています。 もっとも、GPT-5.6 Solでも30秒待機とタイムアウトを繰り返す事例は確認されており、短周期の反復という現象自体は以前から存在していました。\n\nこの比較は同一の業務内容や同一バージョンのCodexによる統制実験ではないため、モデル固有の性質だけが原因とは断定できません。 SolとAstraの双方に長すぎる待機を避ける組み込み指示があることを確認していますが、その指示の有無だけで今回の30秒から10秒への短縮傾向を説明することはできません。\n\n# タイムアウト後の再実行と追加消費の構造\n\n待機中の追加消費は、待機時間中にモデルが推論を継続しているためではなく、タイムアウトごとの親モデルの再実行によって生じています。 \n\nwait_agent がタイムアウトすると制御が親エージェントへ戻り、親は次の行動を決めるために新たなモデル応答を生成します。 この仕組みにより、短い待機が繰り返されるたびに親モデルが呼び出され、会話文脈全体の入力トークンが再処理されます。\n\nキャッシュによって入力単価が割り引かれていても、応答回数が重なれば消費量は着実に積み上がります。 [公式のクレジット単価](https://learn.chatgpt.com/docs/pricing#what-are-tokens-and-credits)で示されているように、キャッシュ入力に対しても所定の料金が設定されています。 手元のログで親Astraが wait_agent を呼んだ203応答を標準クレジット単価で換算したところ、親Astra全体の換算利用量の約4.7%を占めていました。 さらに、子の起動や追加指示など、子とのやり取りを伴う応答全体（491回）では、親Astraの換算利用量の約14.3%に達していました。ほんと勿体ないですね｡\n\nsubagentに引き渡す前にはある程度調査･設計をしているケースも多くある程度コンテキストが育ってる状態でこの問題が発生することもAstraが消耗早すぎる問題に繋がってるようにも見えています｡\n\n# 短いタイミングの無駄なポーリングを抑える対策\n\n短いポーリングの反復を抑制するため、Codexの設定変更と指示ファイルへの追記という2つの対策を実施しました。\n\n前提としてですが､そもそもsubagentが早期に作業が終わった場合には即時に完了通知が来るので､想定していないフリーズをしてるときの検知をするのが本動作の話です｡そのため､長くすることでの不都合自体は思っている以上に軽いです｡\n\n## 最短値と既定値の120秒への引き上げ\n\nCodexの設定ファイルで待機時間の最短値と既定値を120秒（120,000ミリ秒）へ引き上げました。 調査に使用したCodex 0.153.4の既定値は、最短10秒、引数省略時30秒、最大60分です。 この最短10秒という下限は、短周期の確認呼び出しを抑える対処として2026年1月に導入されたものであり、Astra専用の新しい設定項目ではありません。\n\nしかし、今回の親Astraは自ら明示的に10秒を指定していたため、既定値の30秒を変更するだけでは10秒指定を回避できません。 そこで、config.toml の [features] に以下の2行を追加しました。\n\n設定値の単位はミリ秒です。 すでに [features] セクションが存在する場合は、その中へ追記します。\n\nCodex 0.153.4の実装では、モデルが指定した待機時間が設定上の最短時間を下回る場合、自動的に最短時間へと補正されます。[使用版の実装](https://github.com/openai/codex/blob/rust-v0.153.4/codex-rs/core/src/tools/handlers/multi_agents_v2/wait.rs)最短値と既定値をともに120秒へ揃えることで、モデルによる明示的な10秒指定と、指定省略時の両方で120秒未満の待機を防ぐことができます。\n\n## AGENTS.mdによる待機時間の一律2倍指定\n\n設定による下限の強制と併せて、エージェント自身が作業見込みに応じた十分な待機時間を指定するよう、指示ファイル（AGENTS.md）へ運用ルールを追加しました。 追加した指示の内容は以下のとおりです。\n\n完了まであと3分かかると見込まれる場合は、その2倍である6分に相当する 360000 を指定します。 残り時間を見積もれない場合は、既定値の 120000 を指定します。\n\nこの指示ルールは、待機処理を行うすべての場面で一律に適用します。 親エージェントに並行して進める別作業が残っているかどうかは、そもそも待機に入るかどうかの判断基準であり、ひとたび待機を選んだ後の時間指定は一律のルールに従います。\n\n## まとめ\n\nサブエージェント利用時の消費量を管理する際は、子側の処理量だけでなく、親エージェントによる待機時間と再開回数にも着目する必要があります。 仕事の結果が届くまで、親が何回モデルを呼び直しているか。 その回数は、子側の利用量だけを集計していても把握できません。 \n\n利用枠の消費ペースが急激に上がっていると感じたときは、親の待機設定と呼び出し履歴を確認することが、原因の切り分けと対策への足がかりになります。"},"quoteTweet":{"id":"2096839505269711302","url":"https://x.com/u1/status/2096839505269711302","text":"これが原因かなー\n待ってる間に確認ターンが何度も発生してしまって､そのたびにキャッシュロードが発生しちゃってるのが原因な雰囲気","author":{"name":"Yuichi Uemura","username":"u1","avatarUrl":"https://pbs.twimg.com/profile_images/2064373249296007168/IAFv2qP2_200x200.jpg"},"createdAt":"Mon Sep 07 05:54:30 +0000 2026","media":{"photos":[{"url":"https://pbs.twimg.com/media/HRl4Shpa8AEq44S.png?name=orig","width":1463,"height":128}],"videos":[]}}}