【Windows】
Codex CLIがよく止まる?
(sandbox helper エラーとelavated)

WindowsのPowershellで OpenAI の Codex CLI を使っていたら、Get-ContentGet-ChildItem のような単純なコマンドの実行に失敗して、AIエージェントがやり直しているメッセージがよく出てきました。

<svg class="eyecatch-svg" viewBox="0 0 192 192" xmlns="http://www.w3.org/2000/svg">

  <!-- Background -->
  <rect width="192" height="192" rx="32" ry="32" fill="white"/>

  <!-- Sandbox outer frame -->
  <rect x="16" y="28" width="152" height="128" rx="8" ry="8" fill="#E3F2FD" stroke="#1976D2" stroke-width="5"/>

  <!-- Terminal window -->
  <rect x="24" y="36" width="136" height="112" rx="6" ry="6" fill="#263238"/>

  <!-- Terminal header bar -->
  <rect x="24" y="36" width="136" height="26" rx="6" ry="6" fill="#37474F"/>
  <rect x="24" y="50" width="136" height="12" fill="#37474F"/>

  <!-- Traffic lights -->
  <g transform="translate(42, 49)">
    <circle r="5" fill="#EF5350"/>
  </g>
  <g transform="translate(57, 49)">
    <circle r="5" fill="#FFCA28"/>
  </g>
  <g transform="translate(72, 49)">
    <circle r="5" fill="#66BB6A"/>
  </g>

  <!-- Command lines -->
  <!-- Line 1: prompt + command -->
  <g transform="translate(32, 82)">
    <rect width="8" height="6" rx="2" fill="#66BB6A"/>
    <rect x="14" width="68" height="6" rx="2" fill="#B0BEC5"/>
  </g>

  <!-- Line 2: prompt + command -->
  <g transform="translate(32, 98)">
    <rect width="8" height="6" rx="2" fill="#66BB6A"/>
    <rect x="14" width="48" height="6" rx="2" fill="#B0BEC5"/>
  </g>

  <!-- Line 3: error output -->
  <g transform="translate(32, 114)">
    <rect width="116" height="6" rx="2" fill="#EF5350"/>
  </g>

  <!-- Line 4: error output continued -->
  <g transform="translate(32, 130)">
    <rect width="80" height="6" rx="2" fill="#EF5350"/>
  </g>

  <!-- Error badge (top-right, overlapping corner) -->
  <g transform="translate(158, 34)">
    <circle r="22" fill="white"/>
    <circle r="18" fill="#F44336"/>
    <!-- X mark -->
    <line x1="-8" y1="-8" x2="8" y2="8" stroke="white" stroke-width="4" stroke-linecap="round"/>
    <line x1="8" y1="-8" x2="-8" y2="8" stroke="white" stroke-width="4" stroke-linecap="round"/>
  </g>

</svg>【Windows】<br class="chiilabo-br is-on">Codex CLIがよく止まる?<br class="chiilabo-br is-on">(sandbox helper エラーとelavated)

sandbox helper エラーCreateProcessAsUserW failed: 2 というメッセージが出て、ファイルを読むことすらできない。
Linux版ではあまり感じなかったのですが、結論から言うと、config.toml の設定の問題ではありませんでした。

関連記事

1. そもそも Windows の sandbox とは何か

1. そもそも Windows の sandbox とは何か

Codex は単なるチャットではなく、ローカル環境でコマンドを実際に動かします。
gitGet-Content、テスト実行など、何でも実行できてしまうと、AI がPC上のファイルやネットワークに広くアクセスできてしまいます。

1. そもそも Windows の sandbox とは何か

そこで Codex は、生成したコマンドを「sandbox(サンドボックス)」と呼ばれる制限付き環境の中で実行します。
sandbox は技術的に何を許すかを決める境界で、approval_policy(ユーザーへの承認要求)とは別物です1

Windows 版の sandbox には、elevatedunelevated の2種類があります2

  • elevated は、推奨される強い方式です。
    専用の低権限ユーザー、ファイル権限境界、ファイアウォール規則、ローカルポリシー変更を使って、コマンドをより強く隔離します。
  • unelevated は、 fallback(代替)方式で、現在のユーザー権限の範囲内で、制限付き token や ACL(Access Control List、ファイルやフォルダのアクセス権リスト)を使って sandbox を作ります。
    管理者権限が不要なため動きやすい一方、elevated より隔離は弱くなります3

config.toml での設定はこうなります。

approval_policy = "on-request"
sandbox_mode = "workspace-write"

[sandbox_workspace_write]
network_access = false

[windows]
sandbox = "elevated"   # または "unelevated"Code language: TOML, also INI (ini)

1.1. 「codex-windows-sandbox-setup.exe が見つからない」?

1.1. 「codex-windows-sandbox-setup.exe が見つからない」?

エラーはこんな内容でした。

1.1. 「codex-windows-sandbox-setup.exe が見つからない」?
windows sandbox failed: orchestrator_helper_launch_failed:
  setup refresh failed to launch helper:
  helper=codex-windows-sandbox-setup.exe,
  error=program not found

最初は「Get-Content が sandbox で許可されていない」と思いました。
ですが、sandbox_mode = "workspace-write" はワークスペース内の読み取り・編集・通常コマンド実行を許す設定です。
許可設定の問題ではありませんでした4

program not found が示すのは、sandbox を構成するための helper 実行ファイル codex-windows-sandbox-setup.exe が見つからないという問題です5

1.2. Sandbox helper ファイルの調査の過程

1.2. Sandbox helper ファイルの調査の過程

helper ファイルの存在を確認すると、ファイル自体は存在していました。

Get-ChildItem "$env:LOCALAPPDATA\OpenAI\Codex" -Recurse -Filter "codex-windows-sandbox-setup.exe"
# → C:\Users\username\AppData\Local\OpenAI\Codex\bin\330bd0cba6496126\codex-windows-sandbox-setup.exeCode language: PowerShell (powershell)

ただし where.exe codex-windows-sandbox-setup.exe では見つからない。
つまり、helper は存在するが PATH が通っていないため、Codex が起動時に見つけられていない状態でした。

一時的に PATH を追加して試すと、エラーが変わりました。

windows sandbox failed: runner error: CreateProcessAsUserW failed: 2

CreateProcessAsUserW は、別ユーザーのセキュリティコンテキストでプロセスを起動する Windows API です6
failed: 2 は Windows エラーコード ERROR_FILE_NOT_FOUND にあたります7
cmd.exe の存在は確認できているので、sandbox runner が制限付きユーザーとして子プロセスを起動できていない状態です。

elevated でも unelevated でも同じエラーが出たため、「設定の問題」ではなく「Windows native sandbox 全体でプロセス起動に失敗している」と判断できました。

2. 原因は version regression だった

2. 原因は version regression だった

GitHub issue #26158 に同じ症状の報告がありました。
0.136.0 以降で Windows sandbox に regression(不具合の再発)が発生しており、0.132.0 では正常に動作するというものです8

当時の環境にインストールされていたのは codex-cli 0.140.0-alpha.19 でした。
設定を何度見直しても直らなかったのは当然で、sandbox runner 自体が壊れていたためです。

2.1. 3つの Codex が混在していた

2.1. 3つの Codex が混在していた

環境を整理すると、where.exe codex の結果はこうなっていました。

C:\Users\username\AppData\Local\OpenAI\Codex\bin\330bd0cba6496126\codex.exe
C:\Users\username\AppData\Local\Programs\OpenAI\Codex\bin\codex.exe
C:\Users\username\AppData\Roaming\npm\codex.cmdCode language: CSS (css)

3つが混在していた原因はインストール方法の違いです。

  • PowerShell スクリプト経由irm https://chatgpt.com/codex/install.ps1 | iex)はスタンドアロンの Windows アプリとして入れる方法で、Programs\OpenAI\Codex に置かれます。
    自動更新されます。
  • npm 経由npm install -g @openai/codex)は Node.js パッケージとして入れる方法です。
    Roaming\npmcodex.cmd が作られます。
    バージョンを @0.132.0 のように明示できるのが利点です。
  • Codex Desktop(MS Store版)は、GUIアプリです。
    ただし、内部で使う CLI を 330bd0cba6496126 のようなハッシュ付きディレクトリに展開します。
    これが PATH に紛れ込み、alpha 版が最優先されていました9

PATH の優先順位の都合で、常に alpha 版の 0.140.0 が使われていたことが今回のトラブルの根本原因です。

2.2. 解決した手順(npm版に)

2.2. 解決した手順(npm版に)

npm で 0.132.0 をインストールし、フルパスで動作確認しました。

npm install -g @openai/codex@0.132.0

& "C:\Users\username\AppData\Roaming\npm\codex.cmd" --version
# codex-cli 0.132.0

$cmd = "$env:WINDIR\System32\cmd.exe"
& "C:\Users\username\AppData\Roaming\npm\codex.cmd" -c 'windows.sandbox="unelevated"' sandbox windows -- $cmd /c echo CODEX_OK
# CODEX_OKCode language: PowerShell (powershell)

その後、Programs\OpenAI\Codex 配下の PowerShell スクリプト版をアンインストールし、ターミナルを開き直すと PATH が整理されて codex --version で 0.132.0 が使われるようになりました。

3. 【注意】しばらくupdateはスキップ

3. 【注意】しばらくupdateはスキップ

バージョンを固定しているため、codex update や MS Store の Codex Desktop 自動更新が走ると、また同じ問題が起きます。
GitHub issue がクローズされるまでは更新を止めておくのが安全です10

修正バージョンがリリースされたら、npm で明示してアップグレードできます。

npm install -g @openai/codex@<修正バージョン>Code language: PowerShell (powershell)

動作する config.toml はこれです。

model = "gpt-5.5"
model_reasoning_effort = "medium"

approval_policy = "on-request"
sandbox_mode = "workspace-write"

[sandbox_workspace_write]
network_access = false

[windows]
sandbox = "unelevated"Code language: TOML, also INI (ini)

elevated でも同じ症状が出る場合は unelevated を試してください。
両方失敗するなら、設定の問題ではなく version regression を疑うのが先です。

  1. 公式ドキュメントでは「sandbox は技術的境界を定め、approval policy は境界を越える前に停止して確認する条件を決める」と明確に区別されている。approval_policy = “on-request” は境界を越える操作が必要になったときだけ確認を求める設定で、sandbox の範囲内であれば確認なしに実行される。 – Sandbox – Codex | OpenAI Developers
  2. 公式ドキュメントでは、Windows ネイティブ実行では elevated が preferred native Windows sandbox、unelevated が fallback と位置づけられている。WSL2 上で Codex を実行した場合は Linux sandbox 実装が使われ、この2つとは別経路になる。 – Windows – Codex | OpenAI Developers
  3. Permissions ドキュメントでは、elevated は専用の低権限 sandbox ユーザー・ファイル権限境界・ファイアウォール規則を使えるのに対し、unelevated はネットワーク分離が弱く、一部の読み書きの切り分け(split read/write carveout)に対応できないポリシーは拒否されると説明されている。 – Permissions – Codex | OpenAI Developers
  4. 公式ドキュメントでは workspace-write を「現在の workspace の読み取り・編集と通常のローカルコマンド実行を許すモード」と説明している。Get-Content のような読み取りコマンドはデフォルトで許可範囲内であり、このモードで別途許可を追加する必要はない。 – Sandbox – Codex | OpenAI Developers
  5. OpenAI のブログでは、elevated sandbox の構成に専用の setup helper が必要な理由として、CreateProcessAsUserW の権限境界を越えるためにサンドボックスユーザーとして既に動いているプロセスが必要という設計上の制約が説明されている。helper がない場合、runner はその前の段階で失敗する。 – Building a safe, effective sandbox to enable Codex on Windows | OpenAI
  6. Microsoft のドキュメントでは、CreateProcessAsUserW は指定したユーザートークンのセキュリティコンテキストで新しいプロセスとその主スレッドを作成する関数と定義されている。指定した実行ファイルやディレクトリへのアクセスができない場合に失敗する。 – CreateProcessAsUserW 関数 – Microsoft Learn
  7. Windows システムエラーコード一覧では、エラーコード 2 は ERROR_FILE_NOT_FOUND(「指定されたファイルが見つかりません」)と定義されている。CreateProcessAsUserW の場合、このエラーは実行ファイルそのものの不在だけでなく、内部の SearchPath によるパス解決の失敗でも発生する。 – System Error Codes (0-499) – Microsoft Learn
  8. issue では npm install -g @openai/codex@0.132.0 へのロールバックで sandbox が正常に動作するという回避策が報告されている。elevated・unelevated 両方で CreateProcessAsUserW failed: 2 が出る症状も再現確認されている。codex doctor が正常を示していても sandbox 実行だけ失敗するケースも含まれている。 – Windows sandbox regression in Codex CLI 0.136.0 · Issue #26158 · openai/codex
  9. OpenAI のブログでは、Windows sandbox の実装が複数バイナリ・カスタムユーザー・ファイアウォール規則・昇格セットアップ・非同期プロセスなど複数の層で構成されていると説明されている。Desktop アプリがバージョン管理のためにハッシュ付きディレクトリへ CLI を展開する構造は、この多層構成の副産物として PATH 混在を起こしやすい。 – Building a safe, effective sandbox to enable Codex on Windows | OpenAI
  10. issue は現在もオープンで、Windows sandbox の regression として追跡されている。GitHub の Watch 機能でリポジトリをウォッチしておくと、issue がクローズされたタイミングで通知が届く。 – Windows sandbox regression in Codex CLI 0.136.0 · Issue #26158 · openai/codex