Skip to main content
CoreWeave サンドボックス内のリポジトリを対象に Codex を実行します。 サンドボックス内で Codex コマンドラインインターフェース (CLI) を実行する方法、ローカルの CLI を Codex app server に接続する方法、リモートprojectでデスクトップアプリやモバイルアプリを使用する方法の 3 つがあります。 いずれの方法でも、エージェントのプロセス、ワークスペース、コマンドの実行はすべてサンドボックス内で完結します。 これらの例では、モデルへのリクエストに OpenAI を使用します。

サンドボックスで Codex を実行する方法を選択する

app server は、リモート CLI およびデスクトップ接続のためのエージェントバックエンドです。 エージェントを操作する場所を選択してください。 アタッチ型の CLI は cws-agent を使用してサンドボックスを作成します。ローカル CLI とデスクトップ アプリは、共通の SSH サンドボックスのセットアップを使用します。 モバイルからアクセスするには、Remote でスマートフォンをデスクトップホストとペアリングします。 スマートフォンはそのホストに接続し、ホストが SSH 経由でサンドボックスに接続します。デスクトップ ホストはスリープさせず、オンラインの状態でアプリを起動したままにしてください。 Remote を介したモバイルと別のデスクトップを参照してください。 ローカルのターミナルユーザーインターフェース (TUI) は、入力の送信、出力の表示、承認の処理を 担います。リモートのエージェントセッションは app server が管理します。ラップトップ上で実行されている エージェントからコマンドを 1 つずつ転送する仕組みではありません。 OpenAI app server ガイドを参照してください。 app server を起動しても、そのセッションがデスクトップアプリやモバイルアプリに登録されるわけではありません。 これらのインターフェースでは、デスクトップアプリとモバイルアプリを使用するで 説明する別途の接続セットアップを使用します。OpenAI の Remote ドキュメントでは、このセルフホストセッションに Web サイトからアタッチするフローは 示されていません。ブラウザーからのアクセスは本ガイドのスコープ外です。 プログラムから利用する Agents API ワークフローは、別の実行モデルを使用します。 OpenAI Agents API レシピを参照してください。

前提条件

開始する前に、以下を準備してください。
  • SANDBOX_USER action が付与された CoreWeave API アクセストークン。CPU サンドボックス用のキャパシティも必要です。
  • Codex でサポートされている OpenAI アカウント、または OpenAI APIキー。このガイドの app server の例では、APIキー認証と API 請求を使用します。
  • 公開リポジトリの URL。非公開リポジトリをクローンする場合は、サンドボックス内に Git の認証情報が必要です。
  • OpenAI、パッケージレジストリ、および Git ホストへのアウトバウンド接続
ローカルのターミナルで [API-ACCESS-TOKEN] を CoreWeave API アクセストークンに置き換えてから、 サンドボックスの認証情報を読み込みます。
サンドボックス作成の例では、非アクティブ状態によるタイムアウトではなく、実時間で最大 8 時間の 有効期間を設定しています。作業が終了したらサンドボックスを停止してください。モデルの使用料と サンドボックスのコンピュートには、それぞれ別に料金が発生する場合があります。

サンドボックスで Codex CLI を実行する

cws-agent を使用してサンドボックスを起動し、ターミナルをアタッチします。Codex TUI とエージェントプロセスは、どちらもサンドボックス内で実行されます。
  1. cws-agent のインストール手順に従います。 API キー認証を使用する場合は、起動前にローカルで OPENAI_API_KEY をエクスポートしておきます。 ツールがこのキーをサンドボックスに渡し、Codex のログインコマンドを使って保存します。
  2. [SANDBOX-NAME] を、英小文字、数字、ハイフンからなる 1~40 文字で、 先頭が英小文字または数字の名前に置き換えます。[REPOSITORY-URL] は公開リポジトリの URL に置き換えます。
    スキルまたは Model Context Protocol (MCP) のインポートを確認するプロンプトが表示された場合、 この例では Enter を押してスキップします。Codex はサンドボックスの project ディレクトリで起動します。ワークスペースの 信頼と認証に関するプロンプトに従って操作します。 --permission-mode native を指定すると、Codex 独自の権限設定がそのまま使用されます。指定しない場合、ラッパーは デフォルトで承認プロンプトをスキップします。詳しくは、 cws-agent の権限モードを参照してください。
  3. アカウントへのサインインが必要な場合は、TUI を終了してから、サンドボックス内で認証します。
    Codex に表示されるログイン手順に従います。ヘッドレス環境でのデバイスサインインやワークスペースの 制限については、Codex の認証を参照してください。
  4. セッションを確認するの手順を実行します。サンドボックスの実行中に後から再接続する場合は、 同じ connect コマンドを使用します。保存済みの Codex 会話を再開する方法については、cws-agent のセッションを参照してください。

SSH でアクセス可能なサンドボックスを作成する

ローカル CLI とデスクトップアプリのどちらを使用する場合も、このセットアップを完了してください。この手順では Sandboxes ソフトウェア開発キット (SDK) を使用して、Codex がインストールされ、 root 以外の SSH ユーザーとして認証済みのサンドボックスを作成します。cws-agent は不要です。 このセットアップでは、Transport Layer Security (TLS) パススルーエンドポイント と stunnel を使用して、エンドポイント経由で SSH 通信を転送します。生成された Python の ProxyCommand が TLS 証明書を検証した後、SSH が ユーザーのキーを認証し、ホストキーを検証します。app server は公開 リスナーを持ちません。この構成は OpenAI のネットワーク公開に関するガイダンスに準拠しています。

SSH クライアントを準備する

Python 3.12 以降、uv、OpenSSH がインストールされた macOS または Linux コンピューターを使用します。 デスクトップからアクセスする場合は、OpenAI の SSH ホストの手順に記載されている、サポート対象のアプリとオペレーティングシステムを使用してください。 このセットアップでは、前提条件で用意したサンドボックスの認証情報と、 API 請求が有効な OpenAI APIキーを使用します。 [OPENAI-API-KEY] をお使いの OpenAI APIキーに置き換えます。
生成された SSH 設定では、TLS フォワーダーの実行にこの Python インタープリターの絶対パスを使用します。サンドボックスを使用している間は、Python のインストールと出力ディレクトリを 削除せず、利用可能な状態のままにしてください。 専用の SSH キーを作成し、実行中の SSH エージェントに読み込みます。使用されていないファイル名を選択し、 プロンプトが表示されたらパスフレーズを入力してください。
秘密鍵はお使いのコンピューターから外部に出ることはありません。セットアップスクリプトがサンドボックスにコピーするのは、 公開鍵のみです。

SSH サンドボックスを作成する

以下の内容を create_codex_ssh.py ファイルに保存します。このスクリプトは 8 時間有効なサンドボックスを作成し、 Codex 0.154.0 をインストールして、公開鍵による SSH 認証を使用する非 root の agent アカウントを設定します。OpenAI キーは標準入力 (stdin) 経由で codex login に渡されるため、 キーがサンドボックスの作成設定に保存されることはありません。Codex のログイン情報は サンドボックス内に保存されます。 また、このスクリプトは有効期間 1 日の TLS 証明書を作成し、認証済みの Sandboxes SDK を使用して公開 証明書と SSH ホストキーを取得します。生成される クライアント設定では、この両方が検証されます。再接続に必要なため、出力ディレクトリは削除せずに保持してください。
create_codex_ssh.py
[REPOSITORY-URL] を公開 Git リポジトリの URL に置き換え、 リポジトリ外に新しい出力ディレクトリを選択します。
セットアップが成功すると、ssh_config ファイルの場所が出力され、 サンドボックスは実行中のままになります。出力ディレクトリには、sandbox-id、tls.crt、 known_hosts の各ファイルに加えて、tls_proxy.py フォワーダーも格納されます。サンドボックスの作成後にセットアップが失敗した場合、 スクリプトはサンドボックスの停止を試みます。停止にも失敗した場合は、 手動でクリーンアップできるよう、元のエラーにサンドボックス ID が含まれます。 Codex を接続する前に、SSH 接続を確認します。
出力に agent、codex-cli 0.154.0、repository-ready が含まれていることを確認してください。 最初の接続に失敗した場合は、エンドポイントとサービスの起動が完了するのを待ってから 再試行してください。それでも接続に失敗する場合は、Sandboxes SDK を使用して /var/log/codex-sshd.log と /var/log/codex-stunnel.log の各ファイルを確認してください。 SSH 接続を確認したら、 ローカル CLI または デスクトップアプリとモバイルアプリ の手順に進みます。

ローカルの CLI を Codex app server に接続する

まず SSH でアクセス可能なサンドボックスを作成する を完了してください。サポートされている Node.js の長期サポート (LTS) リリースを使用して、同じバージョンの Codex をローカルにインストールします。npm パッケージでは、最小要件として Node.js 16 以降が指定されています。
OpenAI は、app server の WebSocket トランスポートを実験的な機能と位置付けており、 本番ワークロードでのサポート対象外としています。この例では、リスナーと転送先ポートを ループバックアドレスにバインドし、トラフィックを SSH 経由で転送します。ただし、これらの ホスト上の他のプロセスからもループバックポートにアクセスできます。信頼できるホストを使用してください。
SSH トンネル経由でローカル CLI を接続します。
  1. サンドボックスの project ディレクトリで app server を起動します。このコマンドを使用すると、app server が終了した場合でも起動時の 出力が保存されます。ターミナルは開いたままにしてください。
    -t オプションによってリモートターミナルが割り当てられるため、Ctrl+C がリスナーに送られます。
  2. 2 つ目のターミナルで、ローカルポートをこのリスナーに転送し、 接続を維持します。
  3. 3 つ目のターミナルで、ローカルの TUI を接続し、リモートの project ディレクトリを明示的に指定します。
  4. TUI に /workspace/project が表示されていることを確認してから、 セッションを確認する の手順を実行します。接続に失敗した場合は、 保存されている起動時の出力を確認してください。
リスナーの実行中に保存済みの会話を再開するには、SSH トンネルを 再確立してから、リモートセッションピッカーを開きます。
再開する会話を選択します。新しい会話を開始する場合は、 元の codex --remote コマンドを使用します。 このリスナーは、デスクトップアプリが管理する app server とは別のものです。 両者の間で会話を共有できるかどうかは検証されていません。OpenAI の ローカル TUI 接続リファレンスを参照してください。 作業が終わったら TUI を終了し、リスナー用のターミナルと 転送用のターミナルで Ctrl+C を押します。 SSH サンドボックスへの再接続と停止 の手順に従って、ファイルを取得し、コンピュートを停止します。

デスクトップアプリとモバイルアプリを使用する

まず SSH でアクセス可能なサンドボックスを作成する の手順を完了してください。デスクトップアプリでサンドボックスを SSH projectとして追加したら、Remote を使用して ペアリング済みのスマートフォンから作業を続けられます。SSH 接続はデスクトップ側のホストが維持します。

デスクトップアプリを接続する

サンドボックスをリモートprojectとして追加し、Codex がそのファイルシステムに書き込めることを確認します。
  1. ~/.ssh/cw-codex-session/ssh_config ファイルから、生成された Host cw-codex ブロックをコピーします。これを ~/.ssh/config ファイル内の Host * のデフォルト設定より前に貼り付けます。既存の Host cw-codex エントリがある場合は、重複して追加せずに置き換えてください。
  2. ssh cw-codex 'codex --version' を実行します。認証エラーやホストキーのエラーが発生した場合は、解決してから次に進んでください。
  3. デスクトップアプリで Settings > Connections を開き、cw-codex SSH ホストを追加するか有効にします。
  4. リモートprojectのフォルダーとして /workspace/project を選択し、projectを保存します。
  5. そのリモートprojectを開いて会話を開始します。シークレットではない一意の値を /workspace/project/sandbox-proof.txt ファイルに書き込むよう、Codex に依頼します。
  6. ターミナルから、結果を別途確認します。
ファイルの内容が、依頼した値と一致していれば成功です。 デスクトップアプリは、SSH ユーザーのログインシェルを使用してリモートのapp serverを起動します。そのため、Codex はそのユーザー環境にインストールされ、認証済みである必要があります。詳しくは、OpenAI のデスクトップ SSH セットアップを参照してください。

Remote を介したモバイルや別のデスクトップからの接続

OpenAI の Remote 機能は、ペアリングされたホストを介して、サポートされているデスクトップアプリとモバイルアプリを接続します。 ドキュメントに記載されているモバイルのセットアップは、Mac または Windows ホスト上の ChatGPT デスクトップアプリから開始します。両方のデバイスで同じアカウントとワークスペースを使用してください。 組織設定やロールアウトの提供状況によっては、アクセスが制限される場合があります。 スマートフォンからサンドボックスで作業するには、まずそのデスクトップホストをサンドボックスの SSH project に接続します。 次に、スマートフォンをデスクトップホストとペアリングします。iOS または Android 版の ChatGPT で Remote を使用します。スマートフォンはデスクトップホストに接続し、そのデスクトップホストがサンドボックスに接続します。デスクトップアプリは起動したまま、スリープさせず、オンラインの状態を維持しておく必要があります。Control other devices が利用可能な場合は、サポートされている別の Mac または Windows デスクトップアプリからも同じホストに接続できます。 OpenAI の Remote セットアップ手順に従ってください。 app serverの WebSocket URL は、モバイルのペアリング用 URL ではありません。また、Agents API の codex exec-server --remote 接続でも、モバイルデバイスはペアリングされません。

セッションの継続性とその他のエントリポイント

Remote では、接続先ホストのチャットをペアリング済みのデバイスから継続できます。ただし、 codex --remote を直接実行する例で開始した会話が、 個別に設定したデスクトップの SSH project に表示されるとは限りません。 このセットアップでは、こうしたインターフェース間でのセッションの引き継ぎは未検証として扱ってください。 公開されている Remote のセットアップ手順には、モバイルクライアントとサポート対象のデスクトップクライアントが記載されています。 ChatGPT や Codex の Web サイトをこのサンドボックスセッションに接続する方法は記載されていません。Web サイトからの アクセスは、このガイドで扱うインターフェースの対象外です。 一部の Codex ビルドでは、実験的な codex remote-control start コマンドと codex remote-control pair コマンドが公開されています。これらはapp serverのデーモンとペアリングを管理するものですが、 公開されているモバイル向けの手順からは、ヘッドレスな Linux サンドボックスでのペアリングフローがサポートされているかどうかは確認できません。 このガイドでは、これらのコマンドを Claude Remote Control と同等の検証済み機能としては扱いません。 利用する前に、インストール済みの CLI のヘルプと OpenAI の最新のガイダンスを確認してください。

セッションを確認する

サンドボックスで Codex CLI を実行するまたは ローカル CLI を Codex app server に接続するの手順を実施した場合は、 Codex がサンドボックスのファイルシステムに書き込めることを検証します。デスクトップからアクセスする場合は、 デスクトップアプリを接続するの手順に従ってください。 [PROOF-VALUE] を機密情報ではない一意の値に置き換えてから、接続済みの Codex TUI で次のプロンプトを 送信します。
プロンプトが表示された場合は、書き込みを承認します。TUI を終了し、お使いのセットアップに応じたコマンドを使用して、ローカルのターミナルからファイルを別途確認します。
値が一致すれば、エージェントがこのサンドボックスのファイルシステムに書き込んだことを確認できます。 ただし、モバイルのペアリングや別のアプリからのアクセスまで確認できるわけではありません。

SSH サンドボックスへの再接続と停止

サンドボックスの実行中は、引き続き同じ cw-codex ホストとprojectを使用します。 SSH 接続やデスクトップアプリを閉じても、サンドボックスのコンピュートは停止しません。 サンドボックスを停止する前に、作業内容を Git に保存するか、必要なファイルをコピーしておいてください:
保存しておいたサンドボックスの ID を使用して、サンドボックスを停止します:
この例では Persistent Volume やスナップショットを使用しません。サンドボックスが停止するか有効期限切れになると、 そのファイル、ログイン状態、エンドポイントにはアクセスできなくなります。やり直すには、新しい サンドボックスと出力ディレクトリを作成し、Host cw-codex ブロックを新しい 設定に置き換えてください。エンドポイント、TLS 証明書、SSH ホストキーはサンドボックスごとに新しく発行されます。

結果を保持して停止する

ローカルの CLI とデスクトップアプリの場合は、 SSH サンドボックスに再接続して停止するの手順に従ってください。 cws-agent の場合は、ワークスペースのスナップショットを保存してから、コンピュートを停止します。
スナップショットの作成に失敗した場合は、再試行する前に報告されたエラーを確認してください。保存せずに 停止するには、cws-agent down [SANDBOX-NAME] --no-snapshot を使用します。 TUI を終了してもコンピュートは停止しません。サンドボックスを停止するか有効期限が切れると、 そのプロセスは終了します。コンピュートを再開するには、保存済みのファイルをリストアしてから Codex を 再起動します。スナップショットには実行中のプロセスは保持されません。保持する内容を選択する際は、保存済みの Codex の 認証ファイルとセッションファイルを機密情報として扱ってください。

トラブルシューティング

よくある問題は、以下の項目を確認して解決してください。
  • 認証に失敗する: サンドボックスのプロビジョニング用認証情報、Codex のモデル認証、SSH キーを区別してください。これらはそれぞれ用途が異なります。
  • app serverのフラグが拒否される: ローカルとサンドボックスで codex --version の出力を比較してください。ローカル CLI の例では、ドキュメントに記載されている WebSocket フラグが必要です。
  • TUI は接続できるが処理が失敗する: モデルへのアクセス、請求、ワークスペースの 信頼設定、承認設定を確認してください。トランスポート接続が確立できても、それだけでモデルにアクセスできるとは限りません。
  • 接続が切断される: サンドボックスの実行中に再接続してください。エンドポイントや トランスポートのタイムアウトによってサンドボックスの有効期間が延長されることはなく、処理中のターンが完了したことも保証されません。
  • モバイルアプリでRemoteが利用できない: OpenAI のアカウント、ワークスペース、 ホスト、ロールアウトに関する要件を確認してください。app serverを起動するだけでは有効になりません。
最終更新日 2026年10月15日