<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Remote Compact</title><link>https://blog.ast.moe/tags/remote-compact/</link><description>Recent posts from 五里霧中</description><generator>Hugo</generator><item><title>Codexの「Error running remote compact task: {"detail":"Bad Request"}」とは何か</title><link>https://blog.ast.moe/blog/2026-09-17/</link><pubDate>Thu, 17 Sep 2026 11:53:02 +0900</pubDate><guid>https://blog.ast.moe/blog/2026-09-17/</guid><description>&lt;p&gt;Codexで長い作業を続けていると、&lt;code&gt;remote compact&lt;/code&gt;が実行されることがあります。そのときに次のエラーが出る場合があります。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Error running remote compact task: {&amp;#34;detail&amp;#34;:&amp;#34;Bad Request&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これは、Codexのコンテキスト圧縮処理が正常に完了しなかった、という意味です。&lt;/p&gt;
&lt;p&gt;ただし、&lt;code&gt;{&amp;quot;detail&amp;quot;:&amp;quot;Bad Request&amp;quot;}&lt;/code&gt;は具体的な原因名ではありません。この表示だけでは、コンテキストが大きすぎたのか、画像が多かったのか、履歴項目が不正だったのか、サーバー側の一時的な問題だったのかまでは分かりません。&lt;/p&gt;
&lt;h2 id="remote-compactとは"&gt;remote compactとは&lt;/h2&gt;
&lt;p&gt;コーディングエージェントとの会話が長くなると、過去のやり取りやツール実行結果をすべて同じ形でモデルへ渡し続けるのが難しくなります。&lt;/p&gt;
&lt;p&gt;そこで、過去の会話状態を圧縮して、必要な情報を残したまま同じ作業を続けられるようにする処理があります。Codexで表示される&lt;code&gt;remote compact&lt;/code&gt;は、そのための処理です。&lt;/p&gt;
&lt;p&gt;OpenAIのAPIドキュメントでも、長時間のツール実行を含む処理に対してcompactionを使い、圧縮後の状態を次のリクエストへ渡して会話を継続する仕組みとして説明されています。&lt;a href="https://developers.openai.com/api/docs/guides/latest-model?model=gpt-5.2"&gt;Compactionの出力は暗号化された不透明な項目として扱う&lt;/a&gt;設計です。&lt;/p&gt;
&lt;p&gt;Codex内部の&lt;code&gt;remote compact&lt;/code&gt;が、公開APIのcompactionと完全に同じリクエストや制限で動いているかは、表示されたエラーだけでは判断できません。ここでは、Codexで実際に見えるエラーの意味を整理します。&lt;/p&gt;
&lt;h2 id="error-running-remote-compact-taskとは"&gt;Error running remote compact taskとは&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Error running remote compact task&lt;/code&gt;は、compactを実行するタスク自体が失敗したことを示しています。&lt;/p&gt;
&lt;p&gt;通常の応答を生成している途中で出たエラーではなく、長くなったコンテキストを圧縮して次のターンへ進むための処理で失敗しています。&lt;/p&gt;
&lt;p&gt;そのため、単に「今回の応答だけ生成できなかった」という状態より面倒になることがあります。Codexが次の応答を作る前に、もう一度compactを必要とする状態に戻る可能性があるためです。&lt;/p&gt;
&lt;h2 id="detailbad-requestは何を意味するか"&gt;&lt;code&gt;{&amp;quot;detail&amp;quot;:&amp;quot;Bad Request&amp;quot;}&lt;/code&gt;は何を意味するか&lt;/h2&gt;
&lt;p&gt;HTTPの400 Bad Requestは、送信されたリクエストをサーバーが受け付けられなかったことを表します。&lt;/p&gt;
&lt;p&gt;ただし、400というステータスだけでは失敗理由を一つに絞れません。Codexの画面に表示された&lt;code&gt;{&amp;quot;detail&amp;quot;:&amp;quot;Bad Request&amp;quot;}&lt;/code&gt;も、サーバー側から返された詳細がその短い文字列だけだった、ということしか分かりません。&lt;/p&gt;
&lt;p&gt;原因としては、例えば次のようなものが考えられます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コンテキスト全体が大きすぎる&lt;/li&gt;
&lt;li&gt;リクエストボディの構造やサイズが受け付けられなかった&lt;/li&gt;
&lt;li&gt;画像やファイルなど特定の履歴項目をcompact側で処理できなかった&lt;/li&gt;
&lt;li&gt;履歴の一部が不正、または現在の処理では扱えない状態だった&lt;/li&gt;
&lt;li&gt;サーバー側の一時的な不具合や、経路上の失敗が起きた&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このうちどれなのかは、&lt;code&gt;Bad Request&lt;/code&gt;だけでは判定できません。&lt;/p&gt;
&lt;p&gt;400を見てすぐに「コンテキスト上限を超えた」「画像が原因だ」と決めつけるのは危険です。実際の原因を絞るには、エラーの詳細、発生直前の履歴、画像やファイルの有無、同じ条件での再現性などを確認する必要があります。&lt;/p&gt;
&lt;h2 id="context_length_exceededとの違い"&gt;&lt;code&gt;context_length_exceeded&lt;/code&gt;との違い&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;context_length_exceeded&lt;/code&gt;のようなエラーは、コンテキスト長が上限を超えたことを、エラー名としてより具体的に示します。&lt;/p&gt;
&lt;p&gt;一方、次の表示にはその情報がありません。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&amp;#34;detail&amp;#34;:&amp;#34;Bad Request&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コンテキストが大きい状態で発生したとしても、&lt;code&gt;Bad Request&lt;/code&gt;という表示だけから&lt;code&gt;context_length_exceeded&lt;/code&gt;と同じだとは言えません。&lt;/p&gt;
&lt;p&gt;逆に、compactを実行する段階まで会話が長くなっているなら、コンテキストや履歴のサイズが関係している可能性はあります。ここで重要なのは、「関係している可能性」と「エラーの直接原因が確定していること」を分けることです。&lt;/p&gt;
&lt;h2 id="413-payload-too-largeとの違い"&gt;&lt;code&gt;413 Payload Too Large&lt;/code&gt;との違い&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;413 Payload Too Large&lt;/code&gt;は、HTTPリクエストのペイロードが大きすぎるため、サーバーが処理を拒否したことを示すステータスです。&lt;/p&gt;
&lt;p&gt;今回のような400とは、表示上も意味上も別です。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;400 Bad Request
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; リクエストを受け付けられないが、表示だけでは理由が分からない
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;413 Payload Too Large
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; リクエストのペイロードが大きすぎることを示す
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;画像が大量に含まれていたとしても、サーバーから413が返っていなければ、413が原因だったとは言えません。400の本文が短い場合は、内部でサイズに関係する処理が失敗していても、利用者には400としてしか見えない可能性があります。&lt;/p&gt;</description></item></channel></rss>