AIエージェント
AIエージェントの組み込み、OpenAIはループを渡し承認を残す
目次
自社の業務アプリの中でコーディングエージェントを働かせたい、という状況を考える。そのアプリには顧客の記録があり、業務の規則があり、変更を通す前に人が確かめる承認の手順がある。望むのは、この記録と規則と手順のただ中でエージェントが仕事をすることであり、アプリの横に別の窓を開くことではない。
これまでの作法は二つあった。一つは、仕事のほうを汎用のコーディングアシスタントへ移すことである。この作法では、アプリが持つ記録や規則はアシスタントの側から見えず、承認の手順はアプリの外で起こるか、起こらない。もう一つは、エージェントが考えて道具を呼び、結果を読んでまた考えるという繰り返しの部分と、コマンドを隔離された場所で走らせる部分を、チームが自分で書くことである。本稿の見立てでは、この部分は作るのがもっとも難しく、しかも自社の製品に固有の中身をもっとも含まない。
どちらの作法も、同じ場所で行き詰まる。エージェントの働きのうち、どの部分を外へ渡し、どの部分を手元に残すのかを、チームがまだ決めていないからである。決めるには、いま組み込みの形がどちらへ向かっているかを知る必要がある。
業務アプリにエージェントを組み込むとき、どの部分を外へ渡し、どの部分を手元に残すのか。組み込みの形はどちらへ向かっているのか。
OpenAIはCodexの組み込みで、公開したハーネスのループと実行の隔離をプロトコル経由で渡し、画面と承認と道具はアプリの側に残すという線を引いた。仕事を汎用のアシスタントへ移す型に対する、作った側自身の答えである。 ハーネスとは、モデルを包み、何を見せるかと、どの道具を呼ばせるかと、コマンドをどこで走らせるかを決めて、実際の作業に当たらせる外側のソフトウェア一式を指す。作った側はこの分担を自分の文章とプロトコルの文書に書き、自社のクライアントも同じプロトコルで動かしている12。研究の側は、ハーネスをモデルと別の層として測り、結果をモデルとハーネスの組で報告するよう求め始めた34。代償は、製品の完了率と失敗の振る舞いが自分の書いていないハーネスに依存することで、これはこの型に内在するので一時的ではない。一方、組み込みの経路が実験的で本番に対応しないという制約は文書の現在の状態であり、モデルへのアクセスが公開の範囲に入らないことは、線の位置とは別の、作った側の事業上の決定である12。
本稿が読むのはOpenAIのCodex app-serverである。OpenAIは企業で、Codexはその製品であり、公開されているハーネスはopenai/codexリポジトリにあって2025年4月13日に作られた1。組み込みの作法は三つに分けられる。エージェントのループを自分で書く型、仕事のほうを汎用のアシスタントへ移す型、そして公開されたハーネスのループをプロトコル経由で組み込み、自分の画面を保つ型である。この例は第三の型に属する。本稿がこの例を選んだのは、作った側が分担とその理由を自社の開発者向けサイトに書いており、プロトコルが文書化されており、ハーネスのリポジトリが公開されていて読者が自分で読めるからである12。第一の型では線引きはチームの内部にあり、第二の型ではアシスタントの内部にあって、どちらも外から読めない。第三の型は、線引きを二つのプログラムの間の約束事として書き出すので、読者は線がどこにあるかを文書から確かめられる。
承認はサーバからクライアントへの要求として置かれ、ループとサンドボックスは向こう側にある
OpenAIの開発者向けサイトにある「Codex as a platform」の頁は、2026年9月15日の時点で、公開されたハーネスを組み込みの土台として位置づけている。頁に公開日は示されていない1。分担は作った側の言葉でこう置かれる。アプリが持つのは「product context, business rules, and tools」、つまり製品の文脈と業務規則と道具である。「Codex app-server provides the agent loop and sandboxed execution」、つまりapp-serverがエージェントのループとサンドボックス化された実行を提供する。アプリが手元に残すものとして頁は「dashboards, editors, queues, maps, records, and approval flows」を挙げる。ダッシュボード、エディタ、キュー、地図、記録、そして承認の流れである1。頁がこの文で名指す公開部品はCodex CLI、Codex app-server、公式のCodex SDKの三つで、頁が併せて指す公開部品の案内は八つの部品を表にし、IDE拡張とCodex cloudは公開していないと書く15。
同じ線は、プロトコルの文書では要求の向きとして現れる。文書は目的を「Embed Codex into your product with the app-server protocol」と書き、同じプロトコルがVS Code拡張のようなクライアントを動かしていると述べる2。やり取りの形は「bidirectional communication using JSON-RPC 2.0 messages」、JSON-RPC 2.0のメッセージによる双方向通信である。JSON-RPCとは、呼び出したいメソッドの名前と引数をJSONで送り、結果を同じ形式で受け取る、遠隔呼び出しの約束事を指す。プロトコルは、会話をスレッド、一つの依頼とそれに続く作業をターン、入出力の単位をアイテムと呼ぶ三つの型で会話の形を固定する。クライアントは接続ごとに一度初期化し、スレッドを開始または再開し、ユーザーの入力でターンを始め、ターンが完了するまで通知を読み続ける2。
分担はここで線になる。プロトコル文書は分担を一覧にはしないが、コマンド実行とファイル変更の承認、動的な道具の実行、追加の権限は、いずれもサーバがクライアントへ送る要求であり、クライアントが決定や結果を返す2。ループとサンドボックス化された実行をapp-serverが提供する、というのは作った側の頁の図の言葉である1。したがって承認の判断はクライアント側にあり、ループとサンドボックスはサーバ側にあって、線はその間を通る。ただし線の位置は固定ではない。承認は利用者の設定次第で要求され、隔離もホストが自前で行うならapp-serverの強制を省く設定(externalSandbox)がある2。どちらも、クライアントがスレッドやターンを始めるときに渡す設定で決まる。
仕事ではなくエージェントを動かす、という作った側の一文
作った側は、それまでの作法と自分の答えを一文で書く。「Instead of asking every team to move its work into a general-purpose coding assistant, you can bring the agent into software designed around the actual job」1。すべてのチームに仕事を汎用のコーディングアシスタントへ移すよう求めるかわりに、実際の仕事に合わせて設計されたソフトウェアの中へエージェントを持ち込める、という意味である。向きは、仕事を動かすことではなく、エージェントを動かすことにある。
自作の型に対しては、頁は「再利用できる部分」という見出しでループを名指し、新しい実行系を発明するかわりにCodexから始めて、周りのアプリが何を持つべきかをそのあとで決めればよいと書く1。作る難しさの序列は頁に無く、ループがもっとも難しく製品固有の中身をもっとも含まないという見立ては本稿のものである。公開する理由も同じ頁が書く。ハーネスが公開されているので、アプリとモデルの間にある層を検査し、その振る舞いを理解し、統合を製品に合わせて調整できる、という1。
完了率は他人のハーネスに依存し続け、実験的という制約だけが一時的
第一の代償は、ループとサンドボックスを外から受け取るということが、製品の完了率と失敗の振る舞いを、チームが書いていないハーネスに依存させることである。作った側の頁自身が、ハーネスの設計は結果を大きく変えうると書き、その例として自社の ARC-AGI-3 の得点が 13.3% から 38.3% へ動いた別記事を引いている1。Yaoらは、ハーネスを「文脈、道具、状態、制約、権限、追跡、回復を管理するシステム層」と定義し、要旨によれば、106のサンドボックス化されたオフライン課題で5,194の実行軌跡を集め、モデルとハーネスの組み合わせによって完了、過程の質、効率、失敗の振る舞いが大きく変わると観察した。同じ論文は Codex そのものも既定構成で106課題すべてに走らせ、参考値として別枠で報告している——GPT-5.4 を土台にした総合得点は 80.4 で、同じモデルを載せた構成型ハーネス六本の幅は 54.3 から 81.3 だった3。著者らは、エージェントの能力は基盤モデル単独に帰すのではなく、モデルとハーネスの構成の単位で報告すべきだと結論する3。Zhangらは立場論文で、長期のタスクを同程度の最前線能力を持つモデルの間で比べる場面では、エージェントの実行ハーネスがそれの包むモデルよりも強く性能を決めることがしばしばあると主張する4。同じ論文は SWE-bench Verified の100課題で3モデル×3ハーネスを走らせ、ハーネス由来の分散がモデル由来の 7.80 倍だったと報告している4。どちらもあらかじめ用意された課題で測った数であり、承認の手順を持つ業務アプリを測ったものではない。この二本を本稿の主張に当てると、ハーネスを組み込んだチームは、結果をアプリとハーネスの組として報告することになり、自分の側に変更がなくても、ハーネスの更新が結果を動かすと見込んでおくことになる。この代償は、ループを外から受け取るという型そのものから出るので、文書が整っても消えない。
第二の代償は文書の現在の状態であり、こちらは一時的である。作った側自身が、app-serverコマンドとWebSocketの経路は実験的で、本番の作業には対応しないと文書に書いている2。クライアント側で道具を走らせる動的な道具の流れも、既定では拒否される実験的なAPIである2。作った側の頁は、app-serverを選ぶ理由の中にアプリが道具を渡せること(expose tools)を挙げる一方で、アプリが持つ道具の例として名指すのはアプリが所有するMCPサービスである1。
第三は代償というより公開の範囲の限界で、線の位置とは別に決まっている。「The open-source layer is the harness and integration surface; model access and managed services remain separate.」公開されている層はハーネスと統合面であり、モデルへのアクセスと管理されたサービスは別に残る1。検査できるという性質はモデルの境界で止まる。これは作った側の事業上の決定であり、頁はそれを一文で明示している。
承認を手元に残す線は、作った側の製品と研究の測り方に現れ、組み込む側の採用はまだ読めない
方向は、本稿の出典が届く範囲で二つの側から読める。作った側は、公開したハーネスを組み込みの土台と位置づけ、自社のVS Code拡張を同じプロトコルで動かしている12。線は、外向けの約束であるだけでなく、作った側自身の製品を既に通っている。研究の側は、ハーネスをモデルと別の層として定義して測り、結果をモデルとハーネスの組で報告するよう求めている34。ループと隔離を製品から切り離して扱う見方は、作る側と測る側の両方に現れた。同じ形の約束事はOpenAIの外にもある。Agent Client Protocolは、エディタとコーディングエージェントの間をJSON-RPC 2.0で結び、権限の要求をエージェントからクライアントへの要求として置く公開のプロトコルである6。エージェント側にはCodex CLI、Gemini CLI、GitHub Copilot、JetBrainsのJunieなどが、クライアント側にはJetBrainsなどが載る6。ただしこのプロトコルは、利用者が主にエディタの中にいることを想定すると自分で書いており、業務アプリへの組み込みをどれだけ担っているかは、その一覧からも読めない6。OpenAIの頁が挙げる公開実装のうちapp-serverを使うと書かれたものは無く、本稿はそれらを根拠に使わない1。
ループを自分で書く型が残る場面もある。製品に固有のループが要る場合や、結果の変動を他人のハーネスの更新に委ねられない場合が、それに当たる。代わりに、もっとも難しい部分をチームが引き受ける。
最初に探すものは一つである。 どのエージェント実行系に出会っても、読者が最初に探すのは、承認がどこにあるかである。コマンドを走らせてよいか、ファイルを変えてよいかを、誰が、どちらの側で決めるのか。この例では、プロトコルはその承認をサーバからクライアントへの要求として置き、作った側の頁はアプリが残すものの中に承認の流れを数えた21。頁の図は承認を二つに分けて描き、app-serverの箱には「runtime approvals」が、アプリの箱には「human decisions」がある1。承認を求める仕掛けは向こうにあり、決める判断はこちらにある。承認が手元にあれば、そこから先が読者の責任であり、そこまでが実行系の責任である。承認が実行系の内側にあれば、線はそのぶん読者から遠くにあり、製品の記録と規則は線の向こうでは参照されない。そして線がどこにあっても、モデルへのアクセスが公開の範囲に入るかどうかは、線の位置とは別に確かめる1。
出典6件
-
OpenAI Developers, “Codex as a platform: build on the open agent harness”(developers.openai.com/blog、2026年9月15日時点の頁の内容。頁に公開日は示されていない)。作った側が公開されたハーネスを組み込みの土台として位置づける文章である。ハーネスのリポジトリはgithub.com/openai/codexで、GitHub APIの記録では2025年4月13日に作られ、2026年9月15日の時点で124,061のスターと19,132のフォークを持つ(api.github.com/repos/openai/codex の
created_at・stargazers_count・forks_count)。頁はそれまでの作法と自分の答えを「Instead of asking every team to move its work into a general-purpose coding assistant, you can bring the agent into software designed around the actual job」と書き、公開の理由を「Because the harness is open source, you can inspect the layer between your application and the model, understand how it behaves, and adapt the integration to fit your product.」と書く。分担については、アプリが「product context, business rules, and tools」を持ち、「Codex app-server provides the agent loop and sandboxed execution」と述べ、アプリが手元に残すものとして「dashboards, editors, queues, maps, records, and approval flows」を挙げる。公開されている部品として頁が名指すのはCodex CLI、Codex app-server、公式のCodex SDKの三つで、続けて「open-source components guide」を指す。頁の図(Figure 1)は、alt文で「Codex app-server agent loop and sandboxed execution」と「application-owned interface, business context, and consent」を書き分け、目視ではapp-serverの箱に「Sandboxed execution: Filesystem · network · runtime approvals」、アプリの箱に「Business rules & consent: Allowed actions · human decisions」を置く。ループについて頁は「The reusable part is the agent loop」と見出しを立て、「you can start with Codex instead of inventing a new runtime, then decide what the surrounding application should own」と書くが、作る難しさの序列は書いていない。頁は公開の範囲を「The open-source layer is the harness and integration surface; model access and managed services remain separate.」と自分で区切っており、本稿はこの一文に重みを置く。頁が挙げる公開実装は三つ(GitHubとJetBrains、Cisco、Thrive HoldingsとCrete)で、数値を伴うのは Thrive HoldingsとCrete の税務申告の試行が「processed 7,000 returns and reduced preparation time by about a third」と書かれる一件だけである。三つのうち app-server を使うと頁が書くものは無く、app-server の例は頁自身が架空データで作ったサンプル Relay である。これらは頁自身の例であり、本稿は主張の根拠には使わない。頁は位置づけと分担を述べる文章で、ハーネスの挙動を自分で測ってはいない。ただし「Harness design can materially change results」と書き、ARC-AGI-3 で retained reasoning と context compaction が GPT-5.6 Sol の得点を 13.3% から 38.3% へ上げたとする OpenAI 自身の別記事を数値ごと引いている。https://developers.openai.com/blog/codex-as-a-platform ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 -
Codex App Server protocol documentation(learn.chatgpt.com/docs/app-server、2026年9月15日時点の頁の内容)。目的を「Embed Codex into your product with the app-server protocol」と書き、同じプロトコルが「the interface Codex uses to power rich clients (for example, the Codex VS Code extension)」と述べる。やり取りは「bidirectional communication using JSON-RPC 2.0 messages」で、経路は標準入出力(改行区切りのJSON)、WebSocket、Unixソケットである。要求は
method、params、idを持ち、応答は同じidにresultまたはerrorを載せ、通知はidを持たない。三つの型は、ターンを含む会話であるスレッド、ユーザーの一つの依頼とそれに続くエージェントの作業でアイテムを含むターン、メッセージ・コマンド・ファイル変更・道具の呼び出しといった入出力の単位であるアイテムである。流れは、接続ごとに一度の初期化、スレッドの開始または再開、ユーザー入力によるターンの開始、ターン完了までのthread/*、turn/*、item/*の通知の読み取りである。文書は分担を一覧にはせず、要求の向きで示す。承認は「The app-server sends a server-initiated JSON-RPC request to the client, and the client responds with a decision payload.」であり、動的な道具の呼び出しは「item/tool/callas a server request to the client」、追加の権限は「item/permissions/requestApproval(server request)」で、いずれもサーバからクライアントへ向く。「agent loop」の語は文書に無い。承認は「Depending on a user’s Codex settings, command execution and file changes may require approval.」と条件つきで、隔離は「UsesandboxPolicy.type = "externalSandbox"if you already sandbox the server process and want Codex to skip its own sandbox enforcement.」と、ホストの側で行う道がある。動的な道具は「dynamicToolsonthread/startand the correspondingitem/tool/callrequest or response flow are experimental APIs.」で、実験的なAPIは「Omitcapabilities(or setexperimentalApitofalse) to stay on the stable API surface, and the server rejects experimental methods/fields.」と既定では拒否される。文書は自分の限界も書く。「The app-server command and WebSocket transport are experimental and aren’t supported for production workloads.」文書はプロトコルの形と分担を述べるもので、クライアントが承認の判断をどう実装するか、サンドボックスがどの範囲を隔離するかの測定は含まない。https://learn.chatgpt.com/docs/app-server ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 -
Yilun Yao, Xinyu Tan, Chao-Hsuan Liu, Yaoming Li, Zhengyang Wang, Wenhan Yu, Zhewen Tan, Yuxuan Tian, Guangxiang Zhao, Lin Sun, Xiangzheng Zhang, Tong Yang, “Harness-Bench: Measuring Harness Effects across Models in Realistic Agent Workflows”(arXiv:2605.27922、2026年5月27日投稿)。ハーネスが結果に何をするかを説明するために引く論文である。ハーネスを「the system layer that manages context, tools, state, constraints, permissions, tracing, and recovery」と定義する。本稿が引く数字は要旨と、Table 2 の Codex の行(総合 80.4)と、Figure 3 右の値ラベル(GPT-5.4 を載せた構成型ハーネス六本の 0.5432〜0.8132)によるもので、Table 2 の Score 列は 8 バックエンド平均(52.4〜76.2)なので別の数である。Codex 80.4 は著者らが「制御されたハーネスの切り分けではなく実用上の参照点」と断る値——逐語
Codex is included as a practical reference point rather than a controlled harness ablation——で、論文は Codex を既定のモデル構成の下で、独自の実行インタフェースを持つ専用スタックとして測ったと書き、呼び出しの経路は書いていない(app-server の語は無い)。論文は、106のサンドボックス化されたオフライン課題における5,194の実行軌跡を対象に、「substantial variation in completion, process quality, efficiency, and failure behavior across model-harness pairings」を観察したと述べ、エージェントの能力は基盤モデル単独に帰すのではなく、モデルとハーネスの構成の単位で報告すべきだと結論する。論文は自分の限界として、制御されたサンドボックス化されたオフラインの作業に焦点を絞り、そのぶん稼働中のサービス、ユーザーからのフィードバック、変化する外部状態、長期の本番メモリを扱っていないと述べる。本稿の主張に当てると、ループとサンドボックスを第三者のハーネスへ渡すということは、製品の完了と失敗の振る舞いがそのハーネスに依存するということであり、読者は自分のアプリだけをハーネスから切り離して測れない。https://arxiv.org/abs/2605.27922 ↩ ↩2 ↩3 ↩4 -
Yunbei Zhang, Janet Wang, Yingqiang Ge, Weijie Xu, Jihun Hamm, Chandan K. Reddy, “Stop Comparing LLM Agents Without Disclosing the Harness”(arXiv:2605.23950、2026年5月7日投稿)。著者ら自身が立場論文と名乗るが、SWE-bench Verified から層化抽出した100課題で3モデル×3ハーネスを各2回走らせる制御実験を含む。Table 2 はハーネス由来の分散がモデル由来の分散の 7.80 倍、順位の逆転が9組中6組と報告する。主張は「for long-horizon tasks evaluated across models with comparable frontier capability, the agent execution harness … is often a stronger determinant of agent performance than the model it wraps」で、「harness-induced variance can substantially exceed model-induced variance, including cases of model ranking reversal」と述べ、開示の基準を伴うハーネスを意識した評価の枠組みを提案する。本稿の主張に当てると、自分で書いていないハーネスを組み込んだチームは、結果をアプリとハーネスの組として報告することになり、自分の側に変更がなくてもハーネスの更新が結果を動かすと見込んでおくことになる。本稿はこれを、報告の作法についての提案と、その提案を支える小規模な実測として引く。https://arxiv.org/abs/2605.23950 ↩ ↩2 ↩3 ↩4
-
OpenAI, “Open Source”(learn.chatgpt.com/docs/open-source、2026年9月15日時点の頁の内容。developers.openai.com/codex/open-source から転送される)。「Codex as a platform」の頁が「open-source components guide」として指す案内である。表「Open-source components」はCodex CLI、Codex SDK、Codex Security CLI、Codex Security TypeScript SDK、Codex App Server、Skills、Plugins、Universal cloud environmentの八つにGitHubの所在を示し、IDE extensionとCodex cloudの行は「Not open source」と書く。本稿の主張に当てると、app-serverが動かしていると文書が書くVS Code拡張の側は公開されておらず、読者が読める線はサーバ側で止まる。https://learn.chatgpt.com/docs/open-source ↩
-
Agent Client Protocol, “Introduction” / “Protocol Overview” / “Agents” / “Clients”(agentclientprotocol.com、2026年9月20日時点の頁の内容)。「The Agent Client Protocol (ACP) standardizes communication between code editors/IDEs and coding agents」と書き、「The protocol follows the JSON-RPC 2.0 specification」で、プロンプトのターンでは「Agent → Client: File operations or permission requests as needed」、権限の要求は
session/request_permission(「Request user authorization」)である。Agents の頁は Codex CLI(ACP のアダプタ経由)、Claude Agent(Zed の SDK アダプタ経由)、Gemini CLI、GitHub Copilot(public preview)、Junie by JetBrains を含む一覧を置き、Clients の頁は JetBrains を Editors and IDEs に置く。射程は「ACP assumes that the user is primarily in their editor」と自分で区切る。本稿はこれを、第三の型の約束事が OpenAI の外にも在ることの地図として引き、採用の多寡の根拠には使わない。https://agentclientprotocol.com/overview/introduction https://agentclientprotocol.com/protocol/overview https://agentclientprotocol.com/overview/agents https://agentclientprotocol.com/overview/clients ↩ ↩2 ↩3
この記事はAIが執筆しています。内容には誤りが含まれる可能性があります。ご注意ください。