Windows サンドボックス

Windows サンドボックス

Windows でネイティブ Codex サンドボックスを設定し、トラブルシューティングする

Windows では、ネイティブの ChatGPT デスクトップアプリ、 CLI、または IDE 拡張機能で Codex を使用できます。

Windows 版 ChatGPT デスクトップアプリは、並列チャット、ワークツリー、スケジュール済みタスク、Git 機能、組み込みブラウザー、ファイルプレビュー、プラグイン、スキルなどの主要なワークフローをサポートしています。

アプリは WSL や仮想マシンを必要とせず、Windows サンドボックスを使って PowerShell でネイティブに実行できます。これにより、Codex を Windows ネイティブの ワークフローで使用しながら、ファイルシステムとネットワークの権限を制限できます。

企業でのインストールについては、Windows 展開ガイドをご覧ください。

Windows で ChatGPT デスクトップアプリを使用するWindows ネイティブアプリで、複数のプロジェクトに取り組み、チャットを並行して進め、結果を一か所で確認できます。

Codex は、Windows サンドボックスの 3 種類の実装をサポートしています。

  • mxc:対応する Windows デバイスで推奨されるサンドボックスです。ネイティブのプロセス分離を使用し、管理者が承認するセットアップ、追加の Windows アカウント、ローカルのファイアウォールルールを必要としません。
  • elevated:MXC が利用できないか無効になっている場合に優先される従来方式のフォールバックです。管理者が承認するセットアップが必要です。サンドボックス内のコマンドは管理者権限なしで実行されます。
  • unelevated:管理者権限でのセットアップが利用できず、組織のポリシーで許可されている場合に使用する従来方式のフォールバックです。elevated よりネットワークの分離が弱く、パス単位の読み取り拒否に対応していません。

Windows サンドボックスを設定する

Windows サンドボックスは、コマンドとその子プロセスに対して、有効なファイルシステムとネットワークの権限を適用します。権限プロファイルによって、読み取りや書き込みが可能なパスと、ネットワークアクセスを許可するかどうかが決まります。承認ポリシーはこれとは別に、より広いアクセス権でのコマンド実行を Codex がいつ確認するかを制御します。サンドボックスと承認を参照してください。

MXC を有効にする

デスクトップアプリは、個人向けアカウントでデバイスが対応している場合、自動的に MXC を優先します。企業での導入や CLI 単体での使用でも、以下の設定で同じ動作を有効にできます。

config.toml に設定します。

[features]
prefer_mxc = true

prefer_mxc = true を設定すると、デバイスとポリシーが対応している場合、Codex は Windows コマンドに MXC を使用します。 それ以外の場合は、既存の従来方式の選択とセットアップのフローを使用します。

デバイスの対応状況やポリシーが異なる企業環境では、windows.sandbox を、組織で許可されている従来方式の実装である elevated または unelevated にフォールバックとして設定しておいてください。

管理者は、この設定をデフォルトとして配布するか、features.prefer_mxc = true を requirements.toml を通じて強制できます。どちらの場合も、従来方式へのフォールバックが許可されます。デフォルトと要件の違いについては、管理対象の設定を参照してください。

MXC を無効のままにする

組織内での MXC の使用を禁止するには、管理対象の requirements.toml に次の設定を追加します。

[windows]
allow_mxc = false

これにより、MXC の自動選択と明示的な windows.sandbox = "mxc" の両方がブロックされます。従来方式のサンドボックスに関する既存の設定と要件は引き続き適用されます。

MXC の互換性

ホストには、必要な Microsoft Execution Containers (MXC) の機能がすでに備わっている必要があります。Microsoft はこの機能を Windows 11 デバイスに順次展開しています。Microsoft は Windows 11 24H2 (build 26100.9278) と 25H2 (build 26200.9278) で MXC のプロセス分離を導入しました。以下のコマンドで、デバイスが MXC に対応しているか確認してください。

Codex CLI 0.162.0 以降では、保存済みのサンドボックスの選択を変更せずに、1 つのコマンドで MXC をテストできます。プロジェクトディレクトリから次を実行します。

codex -c windows.sandbox=mxc sandbox --include-managed-config --permission-profile :workspace -- cmd.exe /d /c echo MXC_OK
$LASTEXITCODE

想定される出力は MXC_OK、終了コードは 0 です。これにより、ワークスペースの権限プロファイルと管理対象の要件を適用した状態でコマンドが起動することを確認できます。

必要なネイティブ機能を利用できない場合や、ポリシーで MXC がブロックされている場合、明示的な windows.sandbox = "mxc" の選択は失敗します。

以下の互換性に関する制限に注意してください。

  • マネージドネットワークには、実効設定で allow_local_binding = true が必要です。MXC は、ホストのループバック上のサービスとの双方向の接続を許可します。プロキシ経由のトラフィックには引き続きプロキシのドメインルールが適用されますが、プロキシによるプライベートネットワーク宛先への追加チェックは解除されます。
  • フォアグラウンドのコマンドが終了すると、残っている子プロセスは停止します。切り離された開発サーバーに依存するワークフローは、テストしてください。
  • 読み取り拒否の glob パターンは、Linux や WSL と同様に、サンドボックス内の各プロセスが起動する時点で一致するファイルに適用されます。後から作成された一致ファイルは、ほかの権限でアクセスが許可されていれば、その実行中のプロセスから引き続き読み取れます。長時間実行されるシェル、スクリプト、ウォッチャー、開発サーバーは、それぞれの実行期間中、このスナップショットを保持します。Codex セッション全体で保持するわけではありません。読み取り拒否の glob パターンの評価タイミングをご覧ください。

従来の実装へのフォールバックを設定する

config.toml でフォールバック先の実装を選択します。

[windows]
sandbox = "elevated" # or "unelevated"

elevated は、優先される従来方式のフォールバックです。権限を抑えた専用のサンドボックスユーザー、ファイルシステムの権限境界、ファイアウォールルール、およびサンドボックス内で実行するコマンドに必要なローカルポリシーの変更を使用します。

MXC と同様に、elevated は、サンドボックス内の各プロセスが起動する時点で、読み取り拒否の glob パターンに一致するファイルを列挙します。後から作成された一致ファイルは、ほかの権限でアクセスが許可されていれば、その実行中のプロセスから引き続き読み取れます。長時間実行されるプロセスへの影響については、読み取り拒否の glob パターンの評価タイミングをご覧ください。

unelevated は従来方式のフォールバックです。現在のユーザーから派生した制限付きの Windows トークンでコマンドを実行し、ACL に基づくファイルシステムの境界を適用します。また、専用のオフラインユーザー向けファイアウォールルールの代わりに、環境レベルのオフライン制御を使用します。elevated よりネットワークの分離が弱く、パス単位の読み取り拒否には対応していませんが、ローカルまたは企業のポリシーによって管理者が承認するセットアップがブロックされている場合には役立ちます。

デバイスとポリシーが対応している場合は、MXC を使用してください。それ以外の場合は elevated を優先し、unelevated を第 2 のフォールバックとして使用してください。

企業の管理者は、Codex が使用できる従来方式のサンドボックス実装を requirements.tomlを通じて制限できます。

[windows]
allowed_sandbox_implementations = ["elevated"]

この例では、elevated を許可し、unelevated へのフォールバックを防ぎます。MXC が利用できる場合の mxc は制限しません。管理対象の他の権限要件とネットワーク要件は引き続き適用されます。従来方式のどちらの実装も許可するには、両方の値を含めてください。モードが選択されていない場合、Codex は elevated を優先します。

対応する値については、requirements.toml リファレンスを参照してください。MXC もブロックするには、別途 windows.allow_mxc 要件を使用してください。

デフォルトでは、従来方式のどちらのサンドボックスモードも、UI の分離を強化するためにプライベートデスクトップを使用します。

IT 部門主導による従来方式の elevated サンドボックスのプロビジョニング

ローカル管理者権限を持たない従業員に対しては、その従業員が Codex を起動する前に、IT 部門が CLI をインストールし、elevated サンドボックスをプロビジョニングできます。管理者権限で実行する デプロイプロセスから、次を実行します。

codex sandbox setup --elevated --user 'DOMAIN\alice' --codex-home 'C:\Users\alice\.codex'

ID とパスを、従業員の Windows ID と CODEX_HOME に置き換えてください。このコマンドは、そのユーザーの設定を読み取り、サンドボックスを準備して、windows.sandbox = "elevated" を保存します。その後、従業員は通常のターミナルから Codex を実行します。

サンドボックスの権限

Windows バージョンの対応表

Windows バージョン サポートレベル 注記
Windows 11 推奨 Windows で Codex を使用するための最適な基準です。エンタープライズ展開を標準化する場合は、こちらを使用してください。
最新の更新がすべて適用された Windows 10 ベストエフォート 動作する可能性はありますが、Windows 11 より信頼性が劣ります。Windows 10 では、Codex は ConPTY を含む最新のコンソールサポートに依存します。実際には、Windows 10 バージョン 1809 以降が必要です。
古い Windows 10 ビルド 非推奨 ConPTY などの必須コンソールコンポーネントが不足している可能性が高く、エンタープライズ環境で問題が発生しやすくなります。

その他の環境上の前提条件は次のとおりです。

  • winget が利用可能である必要があります。見つからない場合は、Windows を更新するか、 Windows Package Manager をインストールしてから Codex をセットアップしてください。
  • 従来の elevated サンドボックスには、管理者が承認したセットアップが必要です。
  • 企業が管理するデバイスの中には、OS のバージョン自体が要件を満たしていても、 必要なセットアップ手順がブロックされるものがあります。
  • MXC には、さらに以下で説明するネイティブ機能が必要です。 MXC の互換性を参照してください。この対応表だけでは、特定のデバイスで MXC が 利用可能かどうかは判断できません。

サンドボックスの読み取りアクセスを確認する

コマンドがディレクトリを読み取れない場合は、有効な権限プロファイル、管理対象の要件、Windows のファイル権限を確認してください。CLI では、/status と /debug-config を使用して、現在のセッションと設定を確認します。サンドボックスを無効にするのではなく、管理対象の制限を見直すよう管理者に依頼してください。

通常はネイティブの Windows サンドボックスを使用してください。WSL は、 Linux ネイティブのツールが必要な場合、すでに WSL2 で作業している場合、または利用可能なネイティブの Windows 実装がニーズを満たさない場合に選択してください。

トラブルシューティングと FAQ

管理対象の Windows マシンでトラブルシューティングを行う場合は、まずネイティブのサンドボックスモード、Windows のバージョン、Codex に表示されるポリシーエラーを確認してください。MXC では、 互換性と実際に適用されているネットワークポリシーを確認してください。レガシーサンドボックスの問題は、セットアップ、ログオン権限、ファイルシステムのアクセス許可が原因で発生することがあります。

レガシーサンドボックスのセットアップに失敗しました

Codex が elevated サンドボックスの設定を完了できない場合、最も一般的な原因は次のとおりです。

  • Windows UAC または管理者プロンプトを拒否した
  • マシンでローカルユーザーまたはグループの作成が許可されていない
  • マシンでファイアウォールルールの変更が許可されていない
  • サンドボックスユーザーに必要なログオン権限がマシンによってブロックされている
  • または、別のエンタープライズポリシーによって設定フローの一部がブロックされている

試すこと:

  1. elevated サンドボックスのセットアップをもう一度試し、管理者承認のプロンプトが表示されたら、環境で許可されている場合は承認してください。
  2. 会社のノート PC でこの操作がブロックされる場合は、ローカルユーザーやグループの作成、ファイアウォールの設定、サンドボックスユーザーに必要なログオン権限の設定について、管理者の承認によるセットアップがそのマシンで許可されているか、IT チームに確認してください。
  3. それでもセットアップに失敗し、管理ポリシーで許可されている場合は、問題の調査中は unelevated を使用してください。

Codex によって unelevated サンドボックスへ切り替えられました

unelevated 実装は、設定で選択される場合や、 elevated のセットアップを利用できないときのフォールバックとして使われる場合があります。

  • Codex は、引き続きサンドボックスモードで実行できます。
  • ACL ベースのファイルシステム境界は引き続き適用されますが、elevated の独立したサンドボックスユーザー境界は使用されず、ネットワークの分離も弱くなります。
  • これは有用なフォールバックですが、長期的なエンタープライズ構成としては推奨されません。

企業の管理対象ノート PC では、まず MXC の互換性を確認してください。MXC を利用できない場合や無効になっている場合は、IT チームに elevated の導入を依頼してください。

Windows エラー 1385 が表示されます

サンドボックス化されたコマンドがエラー 1385 で失敗する場合、コマンドを開始するためにサンドボックスユーザーが必要とするログオンの種類を Windows が拒否しています。

実際には、Codex によるサンドボックスユーザーの作成は成功したものの、 Windows ポリシーによって、それらのユーザーがサンドボックス化されたコマンドを起動できない状態であることを通常は意味します。

対処方法:

  1. デバイスポリシーによって、Codex が作成したサンドボックスユーザーに必要なログオン権限が付与されているか、IT チームに確認してください。
  2. 問題が一部のマシンまたはチームだけで発生する場合は、グループポリシーや OU の違いを比較してください。
  3. すぐに作業を続ける必要がある場合は、ポリシーの問題を調査している間、unelevated サンドボックスを使用してください。
  4. CODEX_HOME/.sandbox/sandbox.log に加えて、Windows のバージョンと問題の簡単な説明を送信してください。

Codex から、一部のフォルダーが Everyone によって書き込み可能だと警告されます

Codex は、一部のフォルダーが Everyone によって書き込み可能であると警告する場合があります。

この警告が表示された場合、それらのフォルダーに対する Windows の権限が広すぎるため、サンドボックスで完全には保護できません。

対処方法:

  1. 警告に表示されたフォルダーを確認してください。
  2. お使いの環境で適切であれば、それらのフォルダーから Everyone の書き込みアクセス権を削除してください。
  3. 権限を修正した後、Codex を再起動するか、サンドボックスの設定をもう一度実行してください。

権限の変更方法がわからない場合は、IT チームに支援を依頼してください。

サンドボックス化されたコマンドがネットワークに接続できません

使用している権限モードによっては、一部の Codex チャットは意図的に外部ネットワークへアクセスできない状態で実行されます。

ネットワークに接続できずタスクが失敗する場合:

  1. そのタスクが、ネットワークを無効にした状態で実行される想定だったか確認してください。
  2. ネットワークアクセスを想定していた場合は、Codex を再起動してもう一度試してください。
  3. 問題が引き続き発生する場合は、チームがマシンのサンドボックス状態が不完全または破損していないか確認できるように、サンドボックスログを収集してください。

以前はサンドボックスが動作していましたが、その後動作しなくなりました

これは、次の操作の後に発生することがあります。

  • リポジトリまたはワークスペースの移動
  • マシンの権限の変更
  • Windows ポリシーの変更
  • またはその他のシステム構成の変更

試すこと:

  1. Codex を再起動します。
  2. MXC の場合は、互換性プローブを再実行して、 実際に適用されているネットワークポリシーを確認します。従来の elevated 実装の場合は、 サンドボックスのセットアップをやり直します。
  3. 従来のサンドボックスが必要で、管理ポリシーで許可されている場合は、 unelevated を一時的な代替手段として使用します。
  4. 調査用にサンドボックスのログを収集します。

診断情報を OpenAI に送信する必要があります

問題が解決しない場合は、次を送信してください。

  • CODEX_HOME/.sandbox/sandbox.log

次の情報も含めると役立ちます。

  • 実行しようとしていた操作の簡単な説明。
  • 選択されている実装:mxc、elevated、または unelevated。
  • アプリに表示されたエラーメッセージ。
  • 1385、またはその他の Windows や PowerShell のエラーが表示されたかどうか。
  • Windows のビルド番号。
  • Windows 11 と Windows 10 のどちらを使用しているか。

次のものは送信しないでください。

  • CODEX_HOME/.sandbox-secrets/ の内容

IDE 拡張機能はインストールされていますが、応答しません

ネイティブ依存関係の一部で必要となる C++ 開発ツールがシステムにない可能性があります。

  • Visual Studio Build Tools(C++ ワークロード)
  • Microsoft Visual C++ Redistributable(x64)
  • winget を使用している場合は、winget install --id Microsoft.VisualStudio.2022.BuildTools -e を実行します

インストール後、VS Code を完全に再起動してください。