Codex Cloud はクラウド上でコーディングタスクを実行するため、コンピューターがスリープ中でも作業を続けられます。Web、モバイル、デスクトップアプリから、コードの編集、コマンドの実行、結果の確認ができます。
クラウド環境は、タスクに必要なリポジトリ、依存関係、ツール、アクセス設定をまとめて再利用できるようにしたものです。Codex がリポジトリを調べ、環境を準備し、ユーザーと一緒に動作をテストします。新しいタスクごとに、公開済みの環境をもとに独立したワークスペースが用意されます。
初めて利用する場合は、Codex Cloud の概要をご覧ください。
Codex Cloud のレガシー版では、引き続きコードレビューと、Linear および GitHub との連携を利用できます。今後、このレガシー版は非推奨とする予定です。これらのワークフロー用の環境を作成、管理する方法は、レガシー版のガイドをご覧ください。
Codex Cloud でのタスクの開始
Web またはデスクトップアプリで、作業場所 > クラウドを選び、公開済みの環境を選択します。モバイルでは、Codex を開いて公開済みの環境を選択します。Codex に依頼したい作業を入力し、リクエストを送信します。新しい環境が必要な場合は、Web またはデスクトップアプリで環境を作成できます。
Enterprise の管理者は、Codex Cloud を導入する前にワークスペースのアクセス設定を確認できます。
環境の作成と公開
新しい環境は Web またはデスクトップアプリで作成できます。ChatGPT アカウントでサインインし、次の手順を進めます。
- 新しいタスクで作業場所 > クラウドを選び、環境を選択を開いて環境を作成を選択します。
- チェックアウトする GitHub リポジトリを選択します。接続を求められたら、GitHub に接続します。
- 開始を選択します。Codex がリポジトリを調べ、依存関係とツールをインストールし、ワークフローをテストします。
- アクセス権限や情報が不足している場合は、求めに応じて権限を付与するか、情報を入力します。特定のバージョン、コマンド、サービスの使用を依頼することもできます。
- セットアップのレポート、設定、ファイルを確認します。残っている作業を完了し、変更を保存して公開を選択します。
- 環境を公開しましたと表示されたら、新しいタスクを開始を選択し、Codex に依頼したい作業を入力します。
設定 > Codex Cloud > 環境 > 環境を作成からも作成を始められます。
保存すると設定が記録されます。一部の設定は進行中のセットアップにもすぐに反映されます。公開すると、準備したファイルシステムの状態が新しいタスク用に記録されます。共有設定では、環境を利用できるユーザーを指定します。
インストールと起動のカスタマイズ
Codex はリポジトリを調べて、使用するランタイム、パッケージのバージョン、ツール、サービスを特定します。会話を通じてセットアップを調整できるため、自分でインストールスクリプトを書く必要はありません。
Codex はテスト済みのセットアップ内容を次の 2 つの項目に記録できます。
- インストールスクリプト:依存関係をインストールし、開発に必要なファイルなどを準備するコマンド
- 起動スキル:サービスを起動し、利用できる状態になったことを確認するための手順
保存した状態の再利用と更新
- 新しいタスク:公開済みの環境で準備したファイルシステムを使って開始します。
- 既存のタスク:未コミットの変更やインストール済みのツールも含め、そのタスクに保存されたファイルを使って作業を続けます。
- リポジトリの更新:バックグラウンドで自動的に実行されます。依存関係のキャッシュは保持され、インストールコマンドや起動コマンドは再実行されません。
再利用する環境を更新するには、設定 > Codex Cloud > 環境を開きます。対象の環境の「…」メニューから編集を選択します。変更内容を伝え、Codex が準備とテストを終えたら、変更を保存して再公開を選択します。更新した環境を使うには、新しいタスクを開始してください。既存のタスクはそれぞれの状態を保持します。
重要な変更はコミットし、必要な出力は保存してください。タスクの状態の保存は、ソースコードのバージョン管理の代わりにはなりません。
環境変数とネットワークシークレットの設定
Codex は不足している設定を特定し、推測できない値の入力を求めます。環境の設定画面で管理を選択します。この項目は環境変数または HTTP シークレットの横にあります。値ごとに、用途に合った渡し方を選んでください。
| 設定項目 | 用途 | 値の渡し方 |
|---|---|---|
| 環境変数 | プログラムが直接読み取る必要のある値 | 環境内のプログラムに値を直接渡します。 |
| ネットワークシークレット | 特定の HTTPS サービスに送信する認証情報 | プログラムにはプレースホルダーを渡します。許可された宛先へのリクエストでは、プロキシがプレースホルダーを実際の値に置き換えます。 |
ネットワークシークレットには、キー、値、許可ドメインを設定します。プログラムに直接渡す環境変数とは異なるキーを使用してください。置換はセットアップ中もタスク実行中も、ポート 443 の HTTPS 接続で機能します。認証情報の実際の値がローカルのプロセスやファイルに渡ることはありません。
環境が所有するネットワークシークレットを保存すると、インターネットアクセスを制限した場合の許可リストに、そのシークレットの宛先が追加されます。プログラムに直接渡す環境変数や個人用の値を保存しても、宛先は追加されません。テストの前に保存済みのネットワークポリシーを確認してください。ワークスペースの要件については、エージェントのセキュリティをご覧ください。
個人用の値の設定
個人用保管庫には、ワークスペース内のクラウド環境で使う自分の環境変数とネットワークシークレットを保存できます。
共有環境では、各ユーザーに自分のアカウントから値を指定するよう求めることができます。環境を共有すると、どの値を指定する必要があるかが共有されます。個人の認証情報は共有されません。
入力を求められたら、個人用シークレットを追加で必須の値を入力し、保存して開始を選択します。任意の値は未設定のままでもかまいません。
あらかじめ値を設定するには、次の手順を実行します。
- 設定 > Codex Cloud を開き、個人用保管庫タブを選択します。
- 追加を選択します。環境変数またはネットワークシークレットを種類の欄で選び、環境が要求するキーと自分の値を入力します。
- 適用先ですべての環境または選択した環境を選び、保存を選択します。
タスクに渡されるのは、環境が要求した値だけです。特定の環境に設定した値は、すべての環境に適用されるデフォルト値より優先されます。個人用のネットワークシークレットでも、環境で許可された宛先に対して同じ仕組みでプレースホルダーが置き換えられます。
Enterprise ワークスペース内での共有
準備した環境を共有すると、同僚もその環境で自分のタスクを開始できます。
- 環境の設定画面を開きます。
- プライバシー > 利用できるユーザーで、自分のワークスペースを選択します。
- 変更を保存します。環境をまだ公開していない場合は、公開します。
自分のみを利用できるユーザーで選ぶと、環境を非公開にできます。タスクごとに作業ファイルは独立しています。環境を利用できても、他のユーザーのタスクにアクセスしたり、環境を編集したりする権限は付与されません。
共有する前に、準備したファイルと環境が所有する認証情報を確認してください。クラウド ID や VPN 接続を通じて、複数のユーザーが同じサービスにアクセスできる場合もあります。リポジトリへのアクセスと個人用の接続は、タスクを実行するアカウントによって決まります。
クラウドで Codex を使用する権限は、タスクへのアクセスを制御します。ワークスペース環境を管理する権限は、ワークスペースで共有する環境の作成と編集を制御します。詳しくは、ロールとワークスペースの権限をご覧ください。
エージェントのセキュリティ
環境のインターネットアクセス設定では、その VM がパブリックインターネット上のどの宛先に接続できるかを指定します。プライベートネットワーク上のサービスへの接続には、これとは独立した VPN 設定を使用します。
Enterprise ワークスペースでは、管理者がエージェントのセキュリティで、エージェントの動作、管理対象の実行環境でのネットワーク接続、サポート対象ツールの使用に関する要件を設定します。これらの要件は、各環境に保存されているドメイン設定と併せて適用されます。グローバルポリシーと、Codex Cloud で上書きできる設定については、エージェントのセキュリティをご覧ください。
サービスへの接続
ワークフローに必要なパッケージレジストリ、API、その他のサービスへのアクセスを設定します。
- 環境の設定画面で、ワークフローに必要なパブリックインターネットへのアクセス範囲を選びます。パブリックインターネット上のすべての宛先への接続を許可するには、パブリックインターネットへのすべてのアクセスを有効にするをオンにします。パッケージマネージャーや追加ドメインの設定で指定できる宛先もすべて含まれるため、それらの個別設定は無効になります。
- アクセスを制限するには、パブリックインターネットへのすべてのアクセスを有効にするをオフにし、パッケージマネージャーを許可するか、追加の許可ドメインに必要なホストを追加します。すべての宛先へのアクセスをオフにしても、個別に許可した宛先には接続できます。
- 設定を保存し、セットアップ中にサービスへの接続をテストします。環境を公開または再公開してから、新しいタスクでアクセスを確認します。
パブリックインターネットへのアクセスと VPN アクセスは独立しており、片方だけでも両方でも利用できます。パブリックインターネットの設定が適用されるのは Tailscale を経由しない接続です。Tailscale のサブネットルートでパブリック IP アドレスを使用する場合も同様です。パブリックインターネットへのアクセスを制限しても、設定済みの VPN は無効になりません。
ワークスペースの要件については、エージェントのセキュリティをご覧ください。宛先への接続を許可しても、そのサービスの認証情報や権限は付与されません。
パブリックインターネット経由で接続するサービスが送信元 IP アドレスで接続を制限している場合は、エージェントの送信元 IP アドレスのフィードを使用してください。公開されているすべてのアドレス範囲を許可し、フィードを毎日確認して、範囲が変わったらサービスの許可リストを更新します。これらの範囲は複数の顧客が共有するため、サービス側の認証と認可は引き続き有効にしてください。
プライベートネットワーク接続(VPN)
VPN に接続すると、クラウドタスクからプライベートネットワーク上のサービスにアクセスできます。Tailscale は、設定済みのプライベート DNS、サブネットルート、アクセスルールを使用します。HTTP、HTTPS、その他の TCP サービスを含め、Tailscale 経由で接続する宛先については、Codex 用の IP アドレスやドメインの許可リストを別途用意する必要はありません。
- 環境の設定画面で、Tailscale の横にある鉛筆アイコンを選択します。
- VPN プロバイダーから取得した接続用の認証情報を入力します。
- 環境の VPN ID で目的のサービスに接続できるよう、Tailscale で必要なルート、DNS、アクセスルールを設定します。
- 設定を保存し、環境を公開または再公開します。新しいタスクを開始して、サービスへの接続をテストします。
現在サポートしている VPN プロバイダーは Tailscale です。Tailscale の認証キーを作成する際は、Reusable と Ephemeral の両方を有効にしてください。再利用可能なキーにすると、新しいクラウドタスクの VM がネットワークに参加できます。一時デバイスは、オフラインになると Tailscale が自動的に削除します。今後、他の VPN プロバイダーにも対応する予定です。
プライベート IPv4 サブネットルートをサポートしています。タスクは Tailscale のスプリット DNS と MagicDNS を使い、ホスト名でプライベートサービスに接続できます。
サービスで組織の内部 DNS を使用している場合は、内部ドメインのクエリを組織の DNS サーバーに送るよう、Tailscale の管理コンソールでスプリット DNS を設定してください。サービスへの接続には、api.corp.example.com のような完全修飾ホスト名を使用します。このホスト名は IPv4 アドレスに解決できる必要があります。また、宛先には設定済みの Tailscale ルートで到達でき、Tailscale のアクセスルールで接続が許可されている必要があります。
共有環境で実行するタスクは、その環境に設定された VPN ID を使用します。
TCP サービスへの接続
データベースや SSH などの TCP サービスには、VPN 経由で接続できます。TCP の宛先には、Tailscale 経由でルーティングされる IPv4 アドレスを使用する必要があります。ホスト名を使う場合は、名前解決で得られるすべての IPv4 アドレスがそのルートを経由する必要があります。プラットフォームが保護するアドレスへの接続は引き続きブロックされます。
TCP クライアントは、環境の HTTP CONNECT プロキシ proxy:8088 を経由してサービスに接続する必要があります。プロキシには直接接続するか、ローカルの転送ツールを使って接続します。宛先にホスト名を指定する場合は、プロキシ側で DNS 解決できるよう、ホスト名のまま渡してください。TCP トンネルは TLS をインターセプトせず、ネットワークシークレットも挿入しません。クライアントがサービスの認証情報を渡し、TLS を使用する場合はその証明書を検証する必要があります。ネットワークシークレットによる置換が必要なリクエストでは、設定済みの HTTPS プロキシを使用し、シークレットの許可ドメインの条件を満たす必要があります。置換が機能するのはポート 443 です。
VPN 設定を変更したら、変更を保存して環境を公開または再公開します。実行中の環境に更新後の VPN 設定を適用するには、その環境を置き換えてください。新しいタスクを開始し、アクセスをテストします。下書きから VPN 接続を解除しても、既存の接続は取り消されません。アクセスを取り消すには、対象の環境を置き換えるか終了してください。
OIDC によるクラウドリソースへのアクセス
OpenID Connect(OIDC)を使うと、タスクはクラウドリソースにアクセスするための有効期間の短い認証情報を取得できます。組織がクラウドプロバイダーとの信頼関係を設定し、ワークフローに必要な権限を ID に付与します。
- 保存済みの環境で詳細設定 > OIDC を開きます。
- 追加を選び、利用可能な接続を選択します。対応プロバイダーの接続を新しく作成するには、「接続を作成…」を選択します。
- 新しい接続では、プロバイダーの ID 情報を入力して接続を作成します。プロバイダー側で、表示された発行者、対象者、サブジェクトまたはクレームの条件を使って信頼関係を設定し、リソースへのアクセス権限を付与します。
- 接続が環境に追加されていることを確認し、エイリアスを確認します。設定を保存し、環境を公開または再公開します。
- 新しいタスクを開始し、許可される操作と拒否される操作をそれぞれテストします。
設定方法はプロバイダーによって異なります。環境に追加できるのはサポート対象の接続のみです。アクセス範囲は ID に付与された権限で決まり、プロバイダーで自分が持つ権限は引き継がれません。必要なプロバイダーのエンドポイントとサービスの宛先は、ネットワークポリシーで別途許可してください。
環境に追加する接続やエイリアスを変更した場合は、保存するとセットアップに反映されます。新しいタスクに反映するには、環境を公開または再公開してください。共有の ID 接続を編集すると、その接続を使う他の環境にも影響する場合があります。
タスクの実行と再開
公開済みの環境を選択し、達成したいことを入力します。Codex はその環境のリポジトリとツールを使ってファイルを編集し、コマンドを実行して作業結果を確認します。コミットや pull request の作成に進む前に、変更内容とテスト結果を確認してください。
Web またはモバイルでの再開
Web では作業場所 > クラウドを選び、環境を選択します。モバイルでは Codex を開き、利用可能な環境を選択します。新しい環境は Web またはデスクトップアプリで作成できます。
別のデバイスで作業を続けるには、同じタスクを開き直してください。新しいタスクを作成すると、公開済みの環境から別の作業が始まります。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 プラン | vCPU 数 | メモリ | ディスク容量 |
|---|---|---|---|
| Plus、Edu Plus | 2 | 8 GiB | 8 GiB |
| Pro、Business、Enterprise | 4 | 16 GiB | 32 GiB |
| Edu、Edu Pro | 4 | 16 GiB | 32 GiB |
デフォルトでは、最後にターンを開始した時点またはタスクを再開した時点から最長 7 日間、保存されたタスクの VM 状態を復元できます。
Enterprise では、より大きな VM やカスタム仕様の VM を利用できます。選択可能な構成と料金については、OpenAI のアカウント担当チームにお問い合わせください。
現在の制限事項
以下はクラウド環境では現在サポートしていませんが、今後対応する予定です。
- コンピューターの使用とブラウザの使用
- GitLab とセルフホスト型の GitHub Enterprise Server
リポジトリに保存したスキルはクラウドタスクで利用できます。ローカルコンピューターにある個人用スキルはクラウド環境に同期されません。
セットアップと実行時のアクセスに関するトラブルシューティング
セットアップの失敗や必要なツールの不足
セットアップ時の会話で、失敗したコマンドを確認します。Codex にエラーの原因を調べ、修正後にコマンドを再実行するよう依頼してください。たとえば、「pnpm をインストールして、プロジェクトのテストを実行してください」と依頼できます。
- 初回のセットアップに失敗した場合は、再試行を選択すると、そのセットアップセッションで選択済みのリポジトリを使ってやり直せます。
- 修正にソースファイル、パッケージマニフェスト、ロックファイルの変更が必要な場合は、コーディングタスクで変更してからセットアップに戻ります。
Codex がセットアップの動作を確認したら、環境を公開または再公開します。
パッケージのダウンロードや HTTPS リクエストの失敗
宛先のホスト名と認証を個別に確認してください。
- 環境のインターネットアクセス設定で、宛先ホストが許可されていることを確認します。たとえば、プライベートレジストリが
packages.example.comにある場合は、そのホスト名が正確に登録されていることを確認します。ダウンロードにdownloads.example.comも使用する場合は、そのホストへのアクセスも許可する必要があります。 - パッケージマネージャーまたはクライアントに設定した URL と認証情報を確認します。ドメインを許可しても、サービスへのアクセス権限は付与されません。
- 認証にネットワークシークレットを使う場合は、その許可ドメインに宛先が含まれ、リクエストがポート 443 の HTTPS 接続を使用していることを確認します。
- Enterprise ワークスペースでは、環境の設定と併せて、適用されるエージェントのセキュリティの要件を確認するよう管理者に依頼してください。
設定を変更したら保存し、セットアップ中にリクエストをテストします。環境を公開または再公開してから、新しいタスクでアクセスを確認します。
必要な値が見つからない、または使用できない場合
環境の設定画面で、用途に合った項目に値を追加したことを確認します。
- 環境変数:
APP_MODE=developmentのように、プログラムが直接読み取る必要がある値に使用します。 - HTTP シークレット:プライベートレジストリのトークンなど、許可された HTTPS サービスに送る認証情報に使用します。プログラムにはプレースホルダーが渡され、条件に一致するリクエストでプロキシがプレースホルダーを認証情報に置き換えます。プログラムが実際の値を読み取る必要がある場合は、環境変数に追加してください。
個人用の値については、キーが環境の要求と一致し、適用先にその環境が含まれていることを確認します。特定の環境に設定した値は、すべての環境に適用されるデフォルト値より優先されます。
設定手順は、環境変数とネットワークシークレットの設定をご覧ください。
VPN 接続後に HTTP または HTTPS サービスに到達できない場合
- クライアントが環境に設定された HTTP/HTTPS プロキシを使用していることを確認します。
curlでテストする際は、リクエストがそのプロキシを経由するように--noproxyを指定しないでください。 - Tailscale 経由の宛先については、VPN のルートとアクセスルールを確認します。パブリックインターネット上の宛先については、環境の許可ドメインを確認します。
- IP アドレスでは接続できるのにホスト名では接続できない場合は、Tailscale の DNS 設定を確認します。社内ドメインについては、スプリット DNS の転送先が正しい DNS サーバーであり、Tailscale ネットワーク経由でそのサーバーに到達できることを確認します。サービスの完全修飾ホスト名を使用し、その名前が IPv4 アドレスに解決されることを確認してください。
接続の設定手順は、プライベートネットワーク接続をご覧ください。
タスクで環境や更新内容を利用できない場合
設定 > Codex Cloud > 環境で対象の環境を確認します。未公開のバッジが付いている場合は、セットアップを完了して公開を選択すると、タスクで利用できるようになります。
公開済みの環境を変更するには、環境の編集を開き、Codex が変更の準備とテストを終えたら、再公開を選択します。更新内容を使うには、その環境から新しいタスクを開始してください。既存のタスクはそれぞれの作業状態を保持します。