codex Plugin のオプトイン機能です。Gateway コンピューターおよびオプトインしたペアリング済みコンピューター上の、アーカイブされていない Codex CLI、VS Code、Atlas、ChatGPT のソースセッションを、通常のセッションサイドバーとチャットペインに表示します。
初回リリースでは、意図的に所有範囲を限定しています。
- 保存済みまたはアイドル状態のローカルセッションは、範囲が制限された永続化済みのユーザーおよびアシスタント履歴から、モデルがロックされた OpenClaw チャットを作成できます。最初のメッセージによってネイティブのスナップショットフォークが開始され、その後、そのフォーク用に Codex App Server が選択したモデルとプロバイダーを正確に使用して、完全な Codex ハーネススレッドが開始されます。以降のターンでは、正規のネイティブスレッドに永続化されたペアを復元し、監督対象のバインディングによって、OpenClaw が別のランタイム、モデル、フォールバックに置き換えることを防ぎます。独立したネイティブ Codex コントロールからは、その永続化されたペアを引き続き変更できます。作成済みのブランチについては、既存のチャットが開きます。
- 別の Codex プロセスから検出された保存済みセッションでは、現在のアクティビティは不明です。ブランチを作成するか、他の Codex クライアントが使用していないことをオペレーターが確認した後にのみアーカイブできます。
- アクティブなソースは表示されたままですが、現在のターンが完了するまでブランチの作成やアーカイブはできません。監督対象のチャットがすでに存在する場合、チャットを開くは引き続き利用できます。
- ペアリング済み Node 上のセッションでは、範囲が制限され、カーソルでページ分割された App Server 読み取りを通じて、永続化済みトランスクリプトが公開されます。リモートでの継続には、今後実装されるストリーミング Node ブリッジが必要です。リモートでのアーカイブにはさらに、ランナー所有権のリースまたは同等のフェンシングが必要です。
- アーカイブ済みセッションは一覧表示されません。保存済みまたはアイドル状態のローカルセッションは、他の Codex クライアントが使用していないことをオペレーターが確認した後にのみアーカイブできます。
始める前に
- Gateway に公式
@openclaw/codexPlugin をインストールします。OpenClaw macOS アプリでは、Codex 機能を有効にするとインストールできます。CLI インストールではopenclaw plugins install @openclaw/codexを実行できます。 - セッションを一覧表示する各コンピューターに Codex Desktop または Codex CLI をインストールし、サインインします。
- リモートコンピューターを OpenClaw Node としてペアリングします。各コンピューターでローカルにオプトインする必要があります。Gateway でのみ監督を有効にしても、別の Node は認可されません。
- 所有者が管理する Gateway を使用します。セッションタイトル、作業ディレクトリ、Git ブランチから、機密性の高いプロジェクト情報が明らかになる可能性があります。
監督を有効にする
ガイド付きopenclaw onboard および macOS の初回実行セットアップでは、ネイティブ Codex のインストールを検出し、選択した推論バックエンドの有効化に成功した後、Codex 監督のインストールと有効化を試みます。Codex がプライマリバックエンドである必要はありません。この機会的な Plugin 有効化が成功すると、監督を利用できるようになります。App Server の可用性は、監督が最初に接続するときに確認されます。Codex Plugin が明示的に無効化されているか、ポリシーによってブロックされている場合、機会的な有効化は行われません。また、既存の明示的な supervision.enabled: false はエージェント向け監督ツールを無効にします。Codex Plugin がアクティブである限り、sessionCatalog.enabled: false で無効にしない限り、オペレーターカタログは登録されたままです。この独立したスイッチは、Codex プロバイダー、ハーネス、エージェント向け監督ポリシーを変更せず、このホストからペアリング済み Node のカタログ一覧および読み取りコマンドも削除します。既存のインストールでは、同じ機能を手動で有効にできます。
openclaw.json で codex Plugin とその監督機能を有効にします。
plugins.allow が存在する場合は、codex を含めます。Plugin の有効化設定を変更した後、Gateway を再起動します。
明示的な appServer 接続設定がない場合、監督はネイティブユーザーの Codex ホームに対して、独立して管理される stdio 監督接続を使用します。通常の Codex ハーネスは、デフォルトではエージェント単位のままです。これにより、通常の OpenClaw ターンでネイティブ Codex の状態を共有することなく、両方のアプリでネイティブセッションを表示できます。ハーネスでもその状態を共有する必要がある場合は、appServer.homeScope: "user" を明示的に設定します。監督では、ローカルユーザーホームのデフォルト設定で置き換えるのではなく、明示的な appServer 接続設定が優先されます。
Codex サイドバーグループから取り込まれたチャットは、通常のハーネスセッションではありません。その専用の監督バインディングでは、ソースの読み取り、正規ブランチの作成、履歴の注入、およびそれ以降のすべてのターンに監督接続を使用します。デフォルトのローカル接続では、他のセッションのデフォルトを変更することなく、ネイティブユーザーの Codex ホーム、認証、プロバイダー設定が維持されます。監視対象として取り込まれたチャットも、セッション状態の認識に参加します。
デフォルトのローカル監督接続では、ストアはネイティブ Codex クライアントと共有されます。OpenClaw は、別のクライアントが同じ稼働中の App Server プロセスを共有しているとは見なしません。また、ネイティブステータスの所有権はプロセスローカルです。そのため、監督 App Server が notLoaded と報告するスレッドは、アイドルではなく、保存済み / アクティビティ不明として扱われます。
セッションを表示する各ヘッドレス Node ホストでも、同じオプトインを適用します。ネイティブ OpenClaw macOS アプリは、ペアリング済み Gateway に Codex カタログを通知するときに、同じローカル設定を読み取ります。そのペアリング済みネイティブ Mac カタログでサポートされるのは、デフォルト設定、または appServer.transport: "stdio" を明示的に指定し、appServer.homeScope: "user" を未設定または明示的に指定した構成のみです。その stdio プロセスでは、command、args、clearEnv が適用されます。Mac の設定で "unix"、"websocket"、homeScope: "agent" のいずれかが選択されている場合、アプリはカタログ機能やコマンドを通知しません。また、古い直接呼び出しは、ユーザーの Codex ホームを公開したり、別のローカル stdio App Server を起動したりせず、失敗します。
新しく通知された Node コマンドは、Node で承認済みのコマンド範囲を変更します。Gateway ホストから更新を承認します。
thread/turns/list API を itemsView: "full" とともに使用し、1 回のリクエストで最大 20 ターンを読み込みます。古いトランスクリプト項目を読み込むを選択すると、最新ページの不透明な App Server カーソルに従います。読み込まれたページは時系列順に表示されます。ビューアーが無制限の thread/read 履歴を読み込むことはありません。20 MiB の転送安全上限を超えるページは、Node または Gateway 接続を危険にさらさないよう、フェイルクローズします。
通常のセッションサイドバーで Codex グループを開きます。同じセッションがホスト別にグループ化して一覧表示されます。さらにセッションを読み込むを選択すると、古い行がある各ホストから次のページが追加されます。追加された行は、サイドバーの定期更新後も維持されます。各ホストは、そのホスト自身のネイティブ一覧取得が完了するとすぐに表示されます。表示中のページは、Node の接続状態が変化したとき、フォーカスを再取得したとき、および最大でも 30 秒ごとに再調整されます。結果が変化した場合は、より短い間隔で追加確認が行われます。そのため、Codex Desktop、CLI、または別のネイティブクライアントで作成されたセッションは、ページ全体を再読み込みしなくても表示されます。最初のページは Codex 自身の最終更新日時順に従うため、新しく作成されたネイティブセッションは直ちに対象になります。
返される各検索ページでは、クエリを App Server に送信するのではなく、ホストごとに限られた数のネイティブページを走査します。これは、ネイティブ検索ではトランスクリプトのプレビューも一致対象にできるためです。
ホストの可用性とスレッドのステータスは別々です。オフラインまたは利用不可はホストの更新状態を示します。利用できないホストは新しいセッション行を返さず、スレッドのネイティブステータスを offline に変更しません。セッション行では、idle、active、notLoaded、エラーなどの Codex ステータスが使用されます。あるホストで障害が発生しても、正常なホストの結果は非表示になりません。
サイドバーの警告には、カタログのエラーコードと、安全に表示できる基礎的な Gateway エラーが含まれます。Codex を無効にせず検出を無効にするには、Settings > Automation > Plugins > Codex > Native Session
Discovery を開きます。NODE_LIST_FAILED の場合は、openclaw nodes list と Settings > Devices を比較してください。詳細な原因には、修復が必要なペアリングストア、Node レジストリ、権限、または Gateway ライフサイクルの障害が示されます。
オペレーター CLI を使用する
ターミナル CLI では、アーカイブされていない同じカタログ、および Gateway ローカルのブランチ作成とアーカイブ操作を利用できます。openclaw codex sessions のオプション:
--search <text>は、セッションタイトルを大文字と小文字を区別せずに検索します。--host <id>は、レスポンスをgateway:localやnode:<node-id>など、1 つの安定したカタログホストに制限します。--limit <count>は、ホストごとの行数を 1 から 100 に設定します。デフォルトは 50 です。--cursor <cursor>は、1 つのホストページを継続するため、--hostが必要です。--jsonは、構造化された Gateway レスポンスを出力します。
--url、--token、--timeout <ms> を継承します。セッション一覧のデフォルトは 75,000 ms で、コールド状態のペアリング済み Node カタログが完了できるようにしています。継続とアーカイブのデフォルトは 30,000 ms です。また、共有の --expect-final スイッチも公開されますが、これらの単項監督 RPC は変更されません。各コマンドには、operator.write Gateway スコープが必要です。
各サブコマンドでは、標準の -h, --help 出力を使用できます。
アーカイブ済み、またはアーカイブ済みを含めるオプションはありません。sessions はペアリング済みホストを一覧表示できますが、continue と archive は常に gateway:local を対象とします。ペアリング済みの行は一覧表示専用です。アーカイブには常に --confirm-no-other-runner が必要です。
これらのシェルコマンドは、チャット内の /codex ランタイムコマンドとは異なります。/codex threads [filter] は、現在の会話接続で使用可能な App Server スレッドを一覧表示します。/codex sessions --host <node> は、監督対象フリートのカタログではなく、1 つの Node 上にある再開可能な Codex CLI セッションファイルを一覧表示します。/codex resume と /codex bind は、安全な監督対象ブランチを作成するのではなく、現在の会話をアタッチします。また、モデルがロックされた監督対象チャットでは、そのようなバインディング変更は拒否されます。/codex continue または /codex archive ランタイムコマンドはありません。
ローカルセッションからブランチを作成する
Gateway コンピューター上の保存済みまたはアイドル状態の行で、ブランチとして続行を選択します。OpenClaw は通常のチャットエントリを作成し、ソースの最後の終端永続化ターン(完了、中断、失敗)までの、範囲が制限されたユーザーおよびアシスタント履歴をミラーリングし、保留中のハーネスブランチを記録して、チャットを開きます。汎用モデルピッカーはロックされますが、具体的なモデルやプロバイダーはまだ選択されていません。ソースは再開されず、正規のハーネススレッドもまだ開始されません。この操作を繰り返すと、別のブランチを作成するのではなく、既存のチャットが開きます。 ミラーには、3 つの制限すべてに収まる最新の表示可能な末尾が保持されます。ユーザーまたはアシスタントのメッセージは最大 200 件、UTF-8 テキストの合計は 512 KiB、メッセージごとは 64 KiB です。サイズを超えるメッセージはマーカー付きで切り詰められ、上限に達すると古いメッセージは省略されます。画像またはローカル画像の入力は、リテラルの[Image attachment] プレースホルダーになります。画像データとローカルパスはコピーされません。
作業を開始するには、最初の通常のChatメッセージを送信します。Codexハーネスは、
実際の承認、情報要求、イベント、配信の各ハンドラーをインストールします。監督接続上で
一時的なネイティブフォークを使用し、モデルやプロバイダーのオーバーライドを
指定せずにソーススナップショットを固定します。Codex App Serverは現在の
ネイティブ設定から両方を選択し、実際の選択結果を返します。同じ
接続上で、OpenClawはcwdとランタイムポリシーの下、返された組み合わせを厳密に使用して
正規のappServerソース完全ハーネススレッドを開始し、
範囲を限定した可視履歴を注入して、一時フォークをアーカイブします。正規スレッドでは、
OpenClawハーネスの全ツールサーフェスを使用できます。これは可視履歴のブランチであり、
ネイティブロールアウト全体のクローンではありません。ソースの推論、ツール呼び出し、
ツール結果は省略されます。このターンと以降のすべてのターンは、別のOpenClawモデル
ランタイムや通常のエージェントホームハーネスではなく、監督対象のCodex接続上に留まります。
返された選択結果は、ソースが過去に使用したモデルの証明ではありません。
現在のネイティブ設定がソースの最終ターンに記録されたモデルと異なる場合、
Codexは通常のモデル差異警告を出力します。OpenClawは返された組み合わせを
正規スレッドの開始に使用します。Codexはその正規スレッドのネイティブモデルと
プロバイダーを永続化し、その後の再開ではOpenClawがモデルとプロバイダーの
オーバーライドを省略するため、それらが維持されます。別のネイティブCodexコントロールを
通じて正規スレッドが変更された場合、OpenClawはCodexが永続化した選択結果を
受け入れます。OpenClawが外側のモデルやフォールバックチェーンで置き換えることはありません。
監督対象でモデルがロックされたChatは、削除、モデルの切り替え、/new
または/resetの使用、Gatewayのセッションリセットアクションの呼び出し、
汎用のセッションをフォークアクションの使用ができません。/codex model <model>、/codex bind、/codex resume(--bind hereを使用するNodeセッションを含む)、
および/codex detachまたは/codex unbindの変更も、ロックされた
ネイティブバインディングを置換または消去するため拒否されます。/codex modelクエリと/codex fast、
/codex permissions、/codex threadsは引き続き使用できます。別のモデルまたは
新しいスレッドが必要な場合は、別の通常セッションを開始してください。
このChatでは監督を有効なままにしてください。監督が無効になった場合、または
保存された接続バインディングが利用不能または不整合になった場合、そのターンは
通常のエージェントホームセッションへ移行せず、フェイルクローズします。
codex Pluginを無効化またはアンインストールしても、その所有権は解放されず、
Chatが別のモデルを使用できるようにもなりません。ロックされたChatは保持されますが
利用不能になります。同じPluginを再インストールまたは再有効化し、Gatewayを再起動して
再開してください。この意図的なフェイルクローズ動作により、保持データのクリーンアップや
一時的なPlugin障害によってネイティブバインディングが暗黙的に孤立することを防ぎます。
codex_threadsエージェントツールにも同じ境界が適用されます。別のフォークを
アタッチしたり、Chatにバインドされたネイティブスレッドをアーカイブしたりすることは
できません。リスト表示とメタデータのみの読み取りは引き続き使用できます。生のトランスクリプトの
読み取りにはallowRawTranscriptsが必要です。
生データへのアクセスが無効な場合、ネイティブ検索にはトランスクリプトのプレビューが
含まれるため、codex_threadsはリスト検索も拒否します。Control UIとオペレーターCLIでは、
範囲を限定したタイトルのみの検索を引き続き使用できます。名前変更、アーカイブ解除、
分離フォーク、および所有されていない無関係なスレッドのアーカイブには
allowWriteControlsが必要です。どちらのオプションもロックされたバインディングを回避しません。
OpenClawは、ソーススレッドの一覧表示または保留中のChatの表示だけを行っている間は、
承認リクエストを購読したり応答したりしません。最初のターンで別個の正規
ハーネススレッドを開始することで、競合するロールアウトライターを作成せずに、
別のCodexプロセスがソースの所有を継続できます。
元のCLI、VS Code、Atlas、またはChatGPTのソースは、ネイティブクライアントと
OpenClawカタログに引き続き表示されます。正規ブランチはネイティブ
Codexスレッドとして保存されますが、そのソース種別はappServerです。Codex Desktopや別の
ネイティブクライアントがそのソース種別を除外する場合があるため、ブランチ自体が
すべてのネイティブ履歴ビューに表示される保証はありません。
OpenClawのApp Serverがアクティブと報告した行から新しいブランチを開始することはできません。
現在のターンが完了するまで待ってから、カタログを更新してください。Codex App Serverは
単一プロセス内の変更を直列化しますが、プロセスをまたぐ排他的なランナーまたは
承認所有者のリースは提供しません。
保存済み/アクティビティ不明の行では、Chatミラーと最初のターンのスナップショット固定に、
最後に永続化された終了済みターンまでのCodexの状態が使用されます。ソース
スレッドが再開、中断、アーカイブされることはありません。別のプロセスに
進行中のターンがある場合、その最新の処理中作業はブランチに含まれない可能性があります。
ローカルセッションをアーカイブする
保存済みまたはアイドル状態のGatewayローカル行でアーカイブを選択し、他の CodexクライアントまたはOpenClawランナーがそのスレッドや、そこから生成された 子孫を使用していないことを確認します。OpenClawはプロセスローカルの状態を改めて読み取り、idleまたはnotLoadedの場合にのみ処理を続行し、ネイティブCodexの
アーカイブ操作を呼び出して、セッションを未アーカイブ一覧から削除します。
ネイティブCodexは、スレッドから生成された子孫のアーカイブも試みます。
最新の読み取りでセッションがアクティブまたはエラー状態と報告された場合、
ペアリング済みNodeに属する場合、あるいは新しく作成された監督対象Chatに、そのソースからの
保留中ブランチがまだある場合、アーカイブは使用できません。ソースをアーカイブする前に、
Chatの最初のメッセージを送信して正規ブランチを実体化してください。OpenClawが、
アクティブなバインディングによって対象スレッドそのもの、または未アーカイブの生成済み子孫が
所有されていると認識している場合も、アーカイブはブロックされます。OpenClawは試験的な
Codex子孫クエリをすべてのページにわたって追跡します。無効な応答、
リクエスト失敗、カーソルまたはスレッドの重複、安全上限の超過が発生した場合、
アーカイブは拒否されます。
読み取り、子孫の列挙、アーカイブの各リクエストは単一の条件付き操作ではないため、
それらの間にターンが開始される可能性があります。App Serverの状態も
独立したプロセス間では共有されません。したがって、確認操作が未知のクライアントと
この競合状態に対する安全境界になります。確認する前に、他のすべてのクライアントを終了するか、
使用されていないことを別の方法で検証してください。Codex Desktop、Codex CLI、または
所有者に承認されたネイティブスレッド管理フローを使用して、アーカイブ済みスレッドを
復元してください。アーカイブを解除すると再表示されます。
ペアリング済みNodeの制限を理解する
ペアリング済みNodeは、バージョン管理された読み取り専用のcodex.appServer.threads.list.v1コマンドと
codex.appServer.thread.turns.list.v1コマンドを公開します。Codex CLIを使用できる
ネイティブNodeホストは、許可リストに登録されたcodex.terminal.resume.v1
コマンドも公開します。Gatewayが受信するのは正規化された
メタデータと、明示的に要求された範囲限定のトランスクリプトページであり、生のApp Server
エンドポイントではありません。オペレーターターミナルで行を開くと、所有ホスト上で
codex resume <thread-id>が実行され、そのコマンドのPTYが中継されます。汎用
シェルやGatewayから指定されたargvが公開されることはありません。
ターミナルリレーは、ハーネス継続またはアーカイブ所有権の
契約を提供しません。そのため、リモートスレッドがアイドル状態でも、リモート行は
表示され続けますが、続行やアーカイブは提供されません。そのコンピューター上のCodexを
ターミナルで開くから使用するか、安全なランナー所有権境界を備えた
将来の継続フローを使用してください。
メタデータと権限
カタログ行には次の情報が含まれる場合があります。- スレッドおよびセッション識別子
- タイトルおよび作業ディレクトリ
- 現在の状態およびアクティブな待機フラグ
- 作成、更新、アクティビティのタイムスタンプ
- ソース、モデルプロバイダー、Codex CLIバージョン、Gitブランチ
operator.write Gateway
スコープが必要です。これは、両方のNodeコマンドが読み取り専用であっても、
フリート集約が標準のnode.invokeパスを使用するためです。
supervision.allowRawTranscriptsとsupervision.allowWriteControlsは、
自律エージェントおよびスタンドアロンMCPツールを制御します。どちらもデフォルトはfalseです。
監督が有効な場合、codex_threadsは、生のトランスクリプトが許可されていない限り、
リストおよびメタデータのみの読み取り結果からトランスクリプトのプレビューとターンを削除します。
ターンを含む読み取りはフェイルクローズします。フォーク、名前変更、アーカイブ、
アーカイブ解除のすべてに書き込み制御が必要です。これらのオプションは、認証済みControl UIでの
トランスクリプト表示を制限せず、バインディング、ホスト、状態、確認の各チェックも回避しません。
互換性ツール
公式codex Pluginは、既存のエージェントおよびスタンドアロンMCPクライアント向けに、
リリース済みの5つのSupervisorツール名を維持します。
codex_endpoint_probecodex_sessions_listcodex_session_readcodex_session_sendcodex_session_interrupt
codex_sessions_listはデフォルトでロード済み項目のみを対象とし、loaded_only
パラメーターはありません。Codexの状態データベースから未アーカイブの保存済み行も読み取るには、
include_stored: trueを設定します。省略可能なmax_stored_sessions上限のデフォルトは200で、
エンドポイントごとに1〜1,000行を受け付けます。ロード済みの行には上限を適用しません。
生のトランスクリプト権限がない場合、リスト結果からトランスクリプト由来の名前、
プレビュー、詳細なエンドポイントエラーが省略されます。
codex_session_readにはallowRawTranscriptsが必要です。include_turns: trueでは、
さらにCodexへターンを要求します。
codex_session_sendとcodex_session_interruptには
allowWriteControlsが必要です。送信ではmode: "auto" | "start" | "steer"を使用できますが、
"start"は常に拒否され、"auto"と"steer"はどちらも、
読み取り可能なアクティブターンのみを誘導できます。アイドル状態のスレッドは拒否され、
Codexセッションを使用するよう案内されます。そこでは、継続前に完全なハーネスが
承認ハンドラーとツールハンドラーをインストールします。同様に、中断にも読み取り可能な
アクティブターンが必要です。これらのツールは、アイドル状態のソーススレッドを
再開または開始しません。
openclaw doctor --fixは、廃止されたcodex-supervisorエントリ、そのエンドポイント
および権限フィールド、Pluginの許可/拒否ポリシー参照を、明示的な正規設定を上書きせずに
公式codex Pluginへ移動します。スタンドアロン
互換性MCPアダプターは、同じ5つのツールをそのPluginから引き続きロードします。
従来のポリシー環境変数は、その信頼済みアダプター内でのみ適用されます。
すべての監督設定フィールドについては、
Codexハーネスリファレンスを参照してください。
トラブルシューティング
セッションが表示されない:@openclaw/codexがインストールされ、Pluginと
supervision.enabledの両方がtrueであり、現在のPlugin許可リストで
codexが許可され、セッションがアーカイブされていないことを確認してください。
有効化設定を変更した後はGatewayまたはNodeを再起動してください。
続行が無効: マッピングされていない行がアクティブである、ペアリング済みNodeに属する、
ホストがオフラインである、または別のアクションが保留中です。Gatewayローカルの保存済み行と
アイドル行では、安全でない同一スレッドの引き継ぎではなく、ブランチとして続行を使用できます。
監督対象Chatがすでに存在する行では、Chatを開くを使用できます。
アーカイブが無効: 他のランナーが存在しないことを確認した後、
保存済み/アクティビティ不明およびアイドル状態のGatewayローカル行をアーカイブできます。
アクティブ、エラー、オフライン、ペアリング済みNode、保留中ブランチ、既知の
同一バインディング所有者に該当する行は、アーカイブに対して引き続き読み取り専用です。
アーカイブ済みセッションが消えた: これは想定された動作です。監督ページには
アーカイブ済みビューがありません。再表示するにはcodex unarchive <thread-id>を実行するか、
Codex Desktopを使用してください。
古いcodex-supervisor設定が残っている: openclaw doctor --fixを実行してください。Doctorは、
明示的なCodex設定を上書きせずに、廃止されたPluginエントリと関連するPluginポリシー参照を
plugins.entries.codex.config.supervisionへ移動します。