クラウド環境
Codex Cloud のタスクで再利用できる環境を作成、設定、共有します
Codex Cloud はコーディングタスクをクラウドで実行するため、 コンピューターがスリープ状態でも作業を続けられます。ウェブ、モバイル、デスクトップアプリで、 コードの編集、コマンドの実行、結果の確認ができます。
クラウド環境 は、タスクで使用するリポジトリ、 依存関係、ツール、アクセス設定をまとめた、再利用可能なセットアップです。Codex がリポジトリを調査し、 セットアップを準備して、一緒にテストします。新しいタスクにはそれぞれ、公開済みの環境から独立したワークスペースが作成されます。
概要については、Codex Cloud の概要をご覧ください。
Codex Cloud でタスクを開始する
ウェブまたはデスクトップアプリで、作業場所 > クラウド を選び、 公開済みの環境を選択します。モバイルでは、Codex を開き、 公開済みの環境を選択します。Codex に依頼したい作業を記述し、リクエストを送信してください。 新しいセットアップが必要な場合は、環境を作成してください。 ウェブまたはデスクトップアプリで作成できます。
Enterprise 管理者は、Codex Cloud を導入する前にワークスペースのアクセス権を確認 できます。
環境を作成して公開する
新しい環境は、ウェブまたはデスクトップアプリで作成します。 ChatGPT アカウントでサインインしてください。
- 新しいタスクで、作業場所 > クラウド を選び、環境を選択 を開いて、 環境を作成 を選択します。
- チェックアウトする GitHub リポジトリを選択します。接続を求められたら GitHub を接続します。
- 開始する を選択します。Codex がリポジトリを調査し、依存関係とツールをインストールして、ワークフローをテストします。
- 求められたら、不足しているアクセス権や情報を提供します。特定のバージョン、コマンド、サービスを指定することもできます。
- セットアップレポート、設定、ファイルを確認します。未完了の作業を解決し、 変更を保存して、公開 を選択します。
- 環境を公開しました と表示されたら、新しいタスクを開始 を選択し、 Codex に実行してほしいことを説明します。
設定 > Codex Cloud > 環境 > 環境を作成 から始めることもできます。
インストールと起動をカスタマイズする
Codex はリポジトリからランタイム、パッケージのバージョン、ツール、サービスを特定します。会話の中でセットアップを調整できるため、 インストールスクリプトを自分で書く必要はありません。
Codex は、テスト済みのセットアップを次の 2 つのフィールドに記録できます。
- インストールスクリプト: 依存関係をインストールし、開発用アセットを準備するコマンドです。
- 起動スキル: サービスを起動し、準備ができていることを確認する手順です。
保存済みの状態を再利用、更新する
- 新しいタスク: 公開済み環境の準備済みファイルシステムから開始します。
- 既存のタスク: コミットされていない変更やインストール済みのツールを含む、 そのタスク固有の保存済みファイルを使って続行します。
- リポジトリの更新: バックグラウンドで自動的に実行されます。依存関係のキャッシュは保持され、 インストールコマンドや起動コマンドは再実行されません。
再利用可能なセットアップを更新するには、設定 > Codex Cloud > 環境 を開きます。 環境の … メニューから、編集 を選択します。変更内容を説明し、 Codex に準備とテストを任せ、変更を保存して、再公開 を選択します。 更新を使用するには新しいタスクを開始してください。既存のタスクはそれぞれの状態を保持します。
重要な作業はコミットするか、必要な出力を保存してください。状態の保存は、 ソース管理の代わりにはなりません。
環境変数とネットワークシークレットを設定する
Codex は不足している設定を特定し、推測できない値の入力を求めます。 環境設定で、環境変数 またはネットワークシークレット の横にある 管理 を選択します。それぞれの値の提供方法を選びます。
| 設定 | 用途 | 提供方法 |
|---|---|---|
| 環境変数 | プログラムが直接読み取る必要がある値 | 環境内のプログラムに直接渡されます。 |
| ネットワークシークレット | 特定の HTTPS サービスに送信する認証情報 | プログラムにはプレースホルダーが渡され、許可された送信先に対してプロキシが実際の値に置き換えます。 |
ネットワークシークレットには、キー、値、許可ドメイン を設定します。 直接渡す変数とは異なるキーを使用してください。置換は、セットアップ中とタスクの実行中に、ポート 443 の HTTPS で機能します。 認証情報の生の値がローカルのプロセスやファイルに配置されることはありません。
環境が所有するネットワークシークレットを保存すると、その送信先が制限付きインターネットアクセスの許可対象に追加されます。直接渡す変数や個人用の値では、送信先は追加されません。 テスト前に保存済みのネットワークポリシーを確認してください。 ワークスペースの要件については、Agent Securityをご覧ください。
個人用の値を提供する
個人用保管庫を使うと、ワークスペース内のクラウド環境で使用する自分の環境変数やネットワークシークレットを保存できます。
共有環境では、各ユーザーが自分のアカウントから提供する値を要求できます。環境を共有すると、こうした要件が共有されますが、 個人の認証情報は共有されません。
入力を求められたら、個人用シークレットを追加 で必要な値を入力し、 保存して開始 を選択します。省略可能な値は未設定のままにできます。
値を事前に管理するには、次の手順を実行します。
- 設定 > Codex Cloud を開き、個人用保管庫 タブを選択します。
- 追加 を選択し、種類 で環境変数 またはネットワークシークレット を選び、対応するキー と自分の値 を入力します。
- 適用先 で、すべての環境 または選択した環境 を選び、 保存 を選択します。
要求された値だけがタスクに渡されます。特定の環境向けの値は、 共通のデフォルト値より優先されます。個人用ネットワークシークレットは、環境で許可された送信先を使用し、同じ方法でプレースホルダーを置き換えます。
Enterprise ワークスペース内で共有する
準備済みのセットアップを共有すると、同僚がそこから自分のタスクを開始できます。
- 環境設定を開きます。
- プライバシー > 使用できるユーザー で、ワークスペースを選択します。
- 変更を保存します。まだ環境を公開していない場合は、公開します。
環境を非公開にするには、使用できるユーザー で自分のみ を選択します。 各タスクの作業ファイルは独立しています。セットアップへのアクセス権があっても、 他のユーザーのタスクへのアクセス権や環境の編集権限が与えられるわけではありません。
共有する前に、準備済みのファイルと環境が所有する認証情報を確認してください。クラウドの ID や VPN 接続によって、サービスへの共有アクセスが提供される場合もあります。 リポジトリへのアクセスと個人用の接続は、タスクを実行するアカウントに依存します。
クラウドで Codex を使用 は、タスクへのアクセスを制御します。ワークスペース環境を管理 は、 ワークスペースと共有する環境の作成と編集を制御します。詳しくは、 ロールとワークスペースの権限をご覧ください。
Agent Security
環境のインターネットアクセス設定で、 その VM が接続できるドメインを定義します。VPN 設定では、その VM をプライベートネットワーク上のサービスに接続します。
Enterprise ワークスペースでは、管理者が Agent Security を使って、エージェントの動作、 管理対象の実行環境のネットワーク、サポートされているツールの使用に関するワークスペース要件を設定します。これらの要件は、各環境に保存されたドメイン設定と併せて適用されます。グローバルポリシーと、サポートされている Codex Cloud のオーバーライドについては、Agent Security をご覧ください。
サービスに接続する
ワークフローに必要なパッケージレジストリ、API、その他のサービスへのアクセスを設定します。
- 環境設定で、Codex のインターネットアクセスを許可 をオンにします。
- ドメインを許可 で、パッケージマネージャー またはカスタムドメインのみ を選び、 追加の許可ドメイン に必要なホストを追加します。 ワークフローでより広いアクセスが必要な場合は、すべて(制限なし) を使用します。
- 保存し、セットアップ中にサービスをテストします。公開または再公開してから、 新しいタスクでアクセスを確認します。
ワークスペースの要件については、Agent Security をご覧ください。送信先を許可しても、そのサービスの認証情報や権限が付与されるわけではありません。
パッケージマネージャーのプリセットに含まれるドメイン
パッケージマネージャー のプリセットでは、次のレジストリ、リポジトリ、 ダウンロードホストへのアクセスが許可されます。
- npm と Yarn:
registry.npmjs.org,registry.yarnpkg.com - PyPI と PyTorch:
pypi.org,files.pythonhosted.org,download.pytorch.org,download-r2.pytorch.org - Rust:
crates.io,index.crates.io,static.crates.io,static.rust-lang.org - Go:
proxy.golang.org,sum.golang.org - Maven と Gradle:
repo.maven.apache.org,repo1.maven.org,plugins.gradle.org,plugins-artifacts.gradle.org,services.gradle.org,downloads.gradle.org - Bazel:
bcr.bazel.build,mirror.bazel.build - Buf:
buf.build - CPAN:
cpan.metacpan.org - Ubuntu と Debian のリポジトリ:
archive.ubuntu.com,security.ubuntu.com,ports.ubuntu.com,ppa.launchpadcontent.net,deb.debian.org,security.debian.org - ベンダーのリポジトリ:
packages.microsoft.com,apt.buildkite.com,developer.download.nvidia.com,deb.nodesource.com - GitHub のソース、アーカイブ、リリース、LFS:
github.com,codeload.github.com,github-cloud.githubusercontent.com,github-cloud.s3.amazonaws.com,release-assets.githubusercontent.com - その他のダウンロード:
dl.google.com,pkgconfig.freedesktop.org
登録済みのルートドメインについては、対応する www ホスト名も Codex が許可します。
その他のサブドメインは、それぞれ許可ドメインとして登録する必要があります。依存関係で必要なその他のホストは、
追加の許可ドメイン に追加してください。
パブリックインターネット経由で接続し、送信元 IP で接続を制限するサービスには、エージェントの送信元 IP フィードを使用してください。 公開されているすべての範囲を許可し、フィードを毎日確認して、範囲が変更されたらサービスの許可リストを更新してください。これらの範囲は複数のお客様で共有されるため、 サービスの認証と認可の制御は維持してください。
プライベートネットワーク(VPN)
VPN 接続を通じて、クラウドタスクからプライベートネットワーク上の内部 API、パッケージレジストリ、その他の HTTP または HTTPS サービスにアクセスできるようにします。
- 環境の詳細設定 > VPN 設定を開き、追加 を選択します。
- VPN プロバイダーから提供された接続用の認証情報を入力します。
- VPN のアクセスルールと、 環境のインターネットアクセス設定の両方で、必要な送信先を許可します。
- 保存してから、公開または再公開します。新しいタスクを開始し、サービスをテストします。
現在サポートされている VPN プロバイダーは Tailscale です。Tailscale の認証キーを作成するときは、再利用可能 と一時的 の両方を有効にしてください。再利用可能なキーを使うと、新しいクラウドタスクの VM がネットワークに参加できます。Tailscale は、一時的なデバイスがオフラインになると自動的に削除します。今後、他の VPN プロバイダーにも対応する予定です。
プライベート IPv4 サブネットルートに対応しています。タスクでは Tailscale のスプリット DNS と MagicDNS を使い、ホスト名でプライベートサービスにアクセスできます。
サービスが組織の内部 DNS を使用している場合は、Tailscale 管理コンソールでスプリット DNS を設定し、
内部ドメインへのクエリが組織の DNS サーバーに送信されるように
してください。サービスには完全修飾ホスト名を使用します。たとえば、
api.corp.example.com のような名前で、IPv4 アドレスに解決される必要があります。接続先は、
環境のインターネットアクセス設定と
Tailscale のアクセスルールでも許可されている必要があります。
共有環境のタスクは、その環境に設定された VPN ID を使用します。
OIDC でクラウドリソースにアクセスする
OpenID Connect (OIDC) を使うと、タスクはクラウドリソースにアクセスするための有効期間の短い認証情報を取得できます。組織がクラウドプロバイダーとの信頼関係を設定し、 ワークフローに必要な権限を ID に付与します。
- 保存済み環境の詳細設定 > OIDC 設定を開きます。
- 追加 を選択し、利用可能な接続を選ぶか、 サポートされているプロバイダーの接続を作成… を選択します。
- 新しい接続の場合は、プロバイダーの ID 情報を入力して作成します。 プロバイダー側で、表示された発行者、対象者、 サブジェクト またはクレーム条件を使って信頼関係を設定し、リソースへの権限を付与します。
- 接続が関連付けられていることを確認し、エイリアスを確認します。保存してから、環境を公開または再公開します。
- 新しいタスクを開始し、許可される操作と拒否される操作をテストします。
設定方法はプロバイダーによって異なり、サポートされている接続のみ関連付けられます。 アクセスは ID の権限によって決まります。プロバイダーに対する個人の権限がその ID に引き継がれることはありません。必要なプロバイダーのエンドポイントとサービスの送信先は、ネットワークポリシーで別途許可してください。
関連付けやエイリアスの変更をセットアップ中に適用するには保存し、新しいタスクで使用するには公開または再公開してください。共有 ID の接続を編集すると、 それを使用する他の環境に影響することがあります。
OIDC は、Enterprise ワークスペース向けにリクエストに応じて提供されます。有効にするには、OpenAI のアカウント担当チームにお問い合わせください。
タスクを実行して再開する
公開済みの環境を選択し、目標を説明します。Codex はその環境のリポジトリとツールを使ってファイルを編集し、コマンドを実行して、作業内容を確認します。 コミットやプルリクエストの作成前に、変更内容とテスト結果を確認してください。
ウェブやモバイルで続行する
ウェブでは、作業場所 > クラウド を選び、環境を選択します。モバイルでは、 Codex を開き、利用可能な環境を選択します。新しい環境は、 ウェブまたはデスクトップアプリで作成してください。
同じタスクを開き直すと、デバイスを切り替えて作業を続けられます。新しいタスクでは、 公開済みのセットアップから独立した作業が始まります。Codex Cloud のタスクは、 コンピューターがスリープ状態でも作業を続けられます。
Slack や Microsoft Teams からタスクを開始する
クラウドへの委任が有効な Enterprise ワークスペースでは、
Slack または Microsoft Teams で @ChatGPT にリポジトリでの作業を依頼します。Codex は会話のコンテキストを使って、ワークスペースで共有され、かつタスクを実行するアカウントが利用できる環境を選択します。プロンプトで希望する環境を指定したり、
指示を追加したりできます。
Slack では、Codex Cloud のロールベースのアクセス制御を使用するワークスペースは、 デプロイのサービスアカウントとリクエストしたユーザーの両方に、Codex Cloud へのアクセス権を付与する必要があります。管理者による設定については、Slack 向けに Codex Cloud を有効にするをご覧ください。
接続や承認を求める画面で必要な操作を完了し、 会話内で結果を確認します。同じ接続済みアカウントから追加の依頼をすると、タスクを続行できます。 他の参加者からのリクエストで、自分のタスクが自動的に続行されることはありません。
ワークスペースの設定については、Slack と Teams で ChatGPT を管理するを、 Slack でのタスク操作については、Slack で ChatGPT を使用するをご覧ください。
VM の仕様
各クラウドタスクは、デフォルトで次のリソースを持つ VM で実行されます。
| ChatGPT プラン | vCPUs | メモリ | ディスク容量 |
|---|---|---|---|
| Plus, Edu Plus | 2 | 8 GiB | 8 GiB |
| Pro, Business, Enterprise | 4 | 16 GiB | 32 GiB |
| Edu, Edu Pro | 4 | 16 GiB | 32 GiB |
デフォルトでは、タスクに保存された VM の状態は、最後にターンを開始するかタスクを再開してから最大 7 日間復元できます。
Enterprise では、より大きな VM やカスタム仕様を利用できます。利用可能な構成と料金については、 OpenAI のアカウント担当チームにお問い合わせください。
現在の制限
次の機能は現在クラウド環境ではサポートされておらず、 今後の対応を予定しています。
- コンピューターとブラウザーの操作
- GitLab とセルフホスト型 GitHub Enterprise Server
リポジトリに保存されたスキルはクラウドタスクで使用できます。ローカルコンピューターの個人用スキルは、 クラウド環境に同期されません。
セットアップと実行時のアクセスに関するトラブルシューティング
セットアップが失敗する、または必要なツールがない
セットアップの会話で、失敗したコマンドを確認します。Codex にエラーの原因調査と、 修正後のコマンドの再実行を依頼してください。たとえば、「pnpm をインストールして、 プロジェクトのテストを実行してください」と依頼します。
- 初期セットアップが失敗した場合は、再試行 を選択すると、そのセットアップセッションですでに選択したリポジトリを使ってやり直せます。
- 修正のためにソースファイル、パッケージマニフェスト、ロックファイルの変更が必要な場合は、 コーディングタスクで変更してからセットアップに戻ってください。
Codex がセットアップを検証したら、環境を公開または再公開します。
パッケージのダウンロードや HTTPS リクエストが失敗する
送信先ホスト名と認証を別々に確認します。
- 環境の
インターネットアクセス設定でホストが許可されていることを確認します。プライベートレジストリが
packages.example.comにある場合は、そのホスト名を正確に確認してください。ダウンロードにdownloads.example.comも使う場合は、そのホストへのアクセスも必要です。 - パッケージマネージャーやクライアントに設定された URL と認証情報を確認します。 ドメインを許可しても、サービスへのアクセス権が付与されるわけではありません。
- 認証にネットワークシークレットを使う場合は、許可ドメイン に送信先が含まれ、リクエストがポート 443 の HTTPS を使用していることを確認します。
- Enterprise ワークスペースでは、環境の設定と併せて、適用される Agent Security の要件を確認するよう管理者に依頼してください。
設定の変更を保存し、セットアップ中にリクエストをテストします。公開または再公開してから、新しいタスクでアクセスを確認します。
必要な値がない、または使用できない
環境設定の適切な場所に値を追加したことを確認します。
- 環境変数: プログラムが直接読み取る必要のある値に使用します。
例として、
APP_MODE=developmentがあります。 - ネットワークシークレット: プライベートレジストリのトークンなど、許可された HTTPS サービスに送信する認証情報に使用します。プログラムにはプレースホルダーが渡され、 一致するリクエスト内でプロキシが認証情報に置き換えます。プログラムが生の値を読み取る必要がある場合は、環境変数 に追加してください。
個人用の値については、キー が環境の要求と一致し、 適用先 にその環境が含まれていることを確認します。特定の環境向けの値は、共通のデフォルト値より優先されます。
設定手順については、環境変数とネットワークシークレットをご覧ください。
VPN に接続できるが、HTTP または HTTPS サービスに接続できない
- クライアントが環境に設定された HTTP/HTTPS プロキシを使用していることを確認してください。
curlでテストする際は、リクエストがそのプロキシを使用するように--noproxyを省略してください。 - 接続先が、環境の許可ドメインと VPN のアクセスルールの両方で許可されていることを確認してください。
- IP アドレスではサービスにアクセスできるのにホスト名ではアクセスできない場合は、 Tailscale の DNS 設定を確認してください。社内ドメインの場合は、スプリット DNS が 正しい DNS サーバーを参照していることと、そのサーバーに Tailscale ネットワーク経由でアクセスできることを確認してください。サービスの完全修飾ホスト名を使用し、 IPv4 アドレスに解決されることを確認してください。
接続の設定については、プライベートネットワークをご覧ください。
環境またはその更新をタスクで利用できない
設定 > Codex Cloud > 環境 で環境を確認します。 未公開 バッジが付いている場合は、セットアップを完了して公開 を選択すると、 タスクで利用できるようになります。
公開済み環境を変更するには、編集 を開き、Codex に変更の準備とテストを任せてから、再公開 を選択します。新しいセットアップを使用するには、更新された環境から新しいタスクを開始してください。既存のタスクはそれぞれの作業状態を保持します。