Codex 0.147.0: Workspace writes unexpectedly require approval with workspace-write + on-request

Open 💬 2 comments Opened Aug 18, 2026 by johnaweiss

What version of Codex CLI is running?

codex-cli 0.147.0

What subscription do you have?

Plus

Which model were you using?

luna xhigh

What platform is your computer?

Linux 6.18.33.2-microsoft-standard-WSL2 x86_64 unknown

What terminal emulator and version are you using (if applicable)?

PowerShell 7.6.5

Codex doctor report

Codex Doctor v0.147.0 · linux-x86_64

Environment
  ✓ system       en-US
      os                       Arch Linux [64-bit]
      OS language              en-US
      LANG                     en_US.UTF-8
      VISUAL                   not set
      EDITOR                   not set
  ✓ runtime      other
      version                  0.147.0
      install method           other
      commit                   unknown
      executable               /usr/bin/codex
  ✓ install      consistent
      context                  other
      managed by               npm: no · bun: no · pnpm: no · package root —
      PATH entries (4)         /usr/sbin/codex
                               /usr/bin/codex
                               /sbin/codex
                               … (full list with --all)
  ✓ search       ripgrep 15.2.0 (system, rg)
      search command           rg
      search provider          system
      search command readiness ripgrep 15.2.0
  ✓ git          git version 2.55.0
      selected git             /usr/sbin/git
      version                  git version 2.55.0
      exec path                /usr/lib/git-core
      repo detected            true
      repo root                /mnt/c/Users/Naj/git/ffishm
      .git entry               directory
      branch                   master
      PATH entries (4)         /usr/sbin/git
                               /usr/bin/git
                               /sbin/git
                               … (full list with --all)
  ✓ terminal     Windows Terminal
      terminal                 Windows Terminal
      stdin is terminal        true
      stdout is terminal       true
      stderr is terminal       true
      terminal size            133x35
      color output             enabled
      effective locale         en_US.UTF-8
      WSL_DISTRO_NAME          present
      WSL_INTEROP              present
      WAYLAND_DISPLAY          present
      DISPLAY                  present
      WT_SESSION               present
  ✓ title        default · project ffishm
      title source             default
      title items              activity, project-name
      activity item            true
      project source           git repo root
      project value            ffishm
  ✓ state        databases healthy
      CODEX_HOME               ~/.codex (dir)
      log dir                  ~/.codex/log (missing)
      sqlite home              ~/.codex (dir)
      state DB                 ~/.codex/state_5.sqlite (file) · integrity ok
      log DB                   ~/.codex/logs_2.sqlite (file) · integrity ok
      goals DB                 ~/.codex/goals_1.sqlite (file) · integrity ok
      memories DB              ~/.codex/memories_1.sqlite (file) · integrity ok
      active rollouts          5 files · 25.61 MB (avg 5.12 MB)
      archived rollouts        0 files · 0 B (avg 0 B)
      queue DB                 ~/.codex/queue_1.sqlite (file)
      queue DB integrity       ok
      thread history DB        ~/.codex/thread_history_1.sqlite (file)
      thread history DB integrity ok
  ✓ threads      rollout files and state DB thread inventory agree
      default model provider   openai
      rollout DB active files  5
      rollout DB archived files 0
      rollout DB scan errors   0
      rollout DB malformed file names 0
      rollout DB scan cap reached false
      rollout DB rows          5
      rollout DB active rows   5
      rollout DB archived rows 0
      rollout DB missing active rows 0
      rollout DB missing archived rows 0
      rollout DB stale rows    0
      rollout DB archive mismatches 0
      rollout DB duplicate rollout thread ids 0
      rollout DB duplicate DB paths 0
      rollout DB model providers openai=5
      rollout DB sources       cli=5

Configuration
  ✓ config       loaded
      model                    gpt-5.6-luna · openai
      cwd                      /mnt/c/Users/Naj/git/ffishm
      config.toml              ~/.codex/config.toml
      config.toml parse        ok
      MCP servers              0
      feature flags            39 enabled · 0 overridden (full list with --all)
  ✓ auth         auth is configured
      auth storage mode        File
      auth file                ~/.codex/auth.json
      stored auth mode         chatgpt
      stored API key           false
      stored ChatGPT tokens    true
      stored agent identity    false
  ✓ mcp          no MCP servers configured
  ✓ sandbox      restricted fs + restricted network · approval OnRequest
      approval policy          OnRequest
      filesystem sandbox       restricted
      network sandbox          restricted
      linux helper             ~/.codex/tmp/arg0/codex-…zrj/codex-linux-sandbox
      execve wrapper helper    ~/.codex/tmp/arg0/codex-…rj/codex-execve-wrapper

Updates
  ✓ updates      update configuration is locally consistent
      startup update check     true
      update action            manual or unknown
      version cache            ~/.codex/version.json
      cached latest version    0.147.0
      last checked at          2026-08-18 09:23 UTC
      latest version           0.147.0
      latest version status    current version is not older

Connectivity
  ✓ network      no proxy env vars
      proxy env vars           none
  ✓ websocket    connected (HTTP 101 Switching Protocols) · 15s timeout
      model provider           openai
      provider name            OpenAI
      wire API                 responses
      supports websockets      true
      proxy env vars           none
      connect timeout          15000 ms
      auth mode                chatgpt
      endpoint                 wss://chatgpt.com/backend-api/<redacted>
      DNS                      2 IPv4, 2 IPv6, first IPv4
      handshake result         HTTP 101 Switching Protocols
      reasoning header         false
      models etag present      true
      server model present     false
  ✓ reachability active provider endpoints are reachable over HTTP
      reachability mode        ChatGPT auth
      ChatGPT base URL         https://chatgpt.com/backend-api/ reachable (HTTP 404)

Background Server
  ○ app-server   not running (ephemeral mode)
      daemon state dir         ~/.codex/app-server-daemon
      settings                 ~/.codex/app-server-daemon/settings.json (missing)
      pid file                 ~/.codex/app-server-daemon/app-server.pid (missing)
      update-loop pid file     ~/.codex/app-server-daem…/app-server-updater.pid (missing)
      control socket           ~/.codex/app-server-cont…app-server-control.sock
      status                   not running
      mode                     ephemeral

─────────────────────────────────────────────────────────────
17 ok · 1 idle · 0 warn · 0 fail ok

--summary compact output   --all expand truncated lists
--json redacted report

What issue are you seeing?

Summary

With Codex CLI 0.147.0 on Arch Linux under WSL, workspace-write + on-request unexpectedly prompts for approval when modifying files inside the configured workspace.

Environment
Codex CLI: 0.147.0
OS: Arch Linux x86_64 under WSL
Terminal: Windows Terminal
Git repository: /mnt/c/Users/Naj/git/ffishm
Filesystem: Windows-mounted /mnt/c
Model: gpt-5.6-luna
Configuration

~/.codex/config.toml:

model = "gpt-5.6-luna"
model_reasoning_effort = "xhigh"
approvals_reviewer = "auto_review"

[projects."/mnt/c/Users/Naj/git/ffishm"]
trust_level = "trusted"

codex doctor reports:

sandbox restricted fs + restricted network · approval OnRequest
approval policy OnRequest
filesystem sandbox restricted
network sandbox restricted

Expected behavior

With workspace-write and on-request:

File operations within the workspace should execute without approval.
Operations requiring access outside the workspace should require approval.

Specifically, modifying /mnt/c/Users/Naj/git/ffishm/... should not trigger an approval prompt.

Actual behavior

Codex prompts for approval for actions that modify files inside the configured workspace.

The workspace is a trusted project:

/mnt/c/Users/Naj/git/ffishm

but workspace-local operations still require approval.

Reproduction

Start Codex from the repository:

cd /mnt/c/Users/Naj/git/ffishm
codex -s workspace-write -a on-request

Ask Codex to create or modify a file in the current repository, for example:

Create codex-test.txt containing "hello".

Observed: Codex requests approval for the workspace-local file operation.

Expected: The operation executes without an approval prompt.

For comparison, an operation outside the workspace should require approval, e.g.:

Create /tmp/codex-test.txt containing "hello".

Additional information

codex doctor reports the configuration as valid and the effective approval policy as OnRequest; there are no configuration parse errors or filesystem sandbox warnings.

The issue appears to be specifically related to approval behavior for workspace-local operations under workspace-write, potentially involving the /mnt/c WSL-mounted filesystem.

What steps can reproduce the bug?

initiate any action inside the workspace normally requiring approval with more restrictive settings.

What is the expected behavior?

no approval

Additional information

_No response_

View original on GitHub ↗

2 Comments

dajiaohuang · 9 days ago

Could you paste the exact approval card and the tool/command Codex attempted, with paths redacted if needed? In particular, it would help to know whether the tool call itself requested elevated sandbox permissions or whether the sandbox rejected an ordinary workspace-scoped write.

That distinction separates an unnecessary model-requested escalation from a workspace root/path classification bug (for example around /mnt/c). I am also a Pro 20x user and can compare the behavior in a matching WSL setup once the exact call and approval reason are available.

johnaweiss · 9 days ago

So sorry, the approval card isn't available after approving. I can't copy it.

I'm now trying:

model = "gpt-5.6-luna"
model_reasoning_effort = "xhigh"
approvals_reviewer = "user"

sandbox_mode = "workspace-write"
approval_policy = "never"

[projects."/mnt/c/Users/Naj/git/ffishm"]
trust_level = "trusted"

[tui]
status_line = ["model-with-reasoning", "current-dir", "context-remaining", "weekly-limit", "used-tokens", "total-input-tokens", "total-output-tokens"]
status_line_use_colors = true

[sandbox_workspace_write]
network_access = true
writable_roots = [
"/mnt/e/shared-project",
"/mnt/e/another-directory",
]