Codex CLI 0.144.1 sandboxed commands hang, but the exact bwrap probe completes in 47 ms

Open 💬 1 comment Opened Jul 10, 2026 by keviniling

What version of Codex CLI is running?

0.144.1

What subscription do you have?

Pro 20x

Which model were you using?

gpt-5.6

What platform is your computer?

Linux 6.8.0-48-generic x86_64 x86_64

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

terminal in VS Code

Codex doctor report

{
  "schemaVersion": 1,
  "generatedAt": "1783705425s since unix epoch",
  "overallStatus": "ok",
  "codexVersion": "0.144.1",
  "checks": {
    "app_server.status": {
      "id": "app_server.status",
      "category": "app-server",
      "status": "ok",
      "summary": "background server is not running",
      "details": {
        "control socket": "$USER/.codex/app-server-control/app-server-control.sock",
        "daemon state dir": "$USER/.codex/app-server-daemon",
        "mode": "ephemeral",
        "pid file": "$USER/.codex/app-server-daemon/app-server.pid (missing)",
        "settings": "$USER/.codex/app-server-daemon/settings.json (missing)",
        "status": "not running",
        "update-loop pid file": "$USER/.codex/app-server-daemon/app-server-updater.pid (missing)"
      },
      "remediation": null,
      "durationMs": 4
    },
    "auth.credentials": {
      "id": "auth.credentials",
      "category": "auth",
      "status": "ok",
      "summary": "auth is configured",
      "details": {
        "auth file": "$USER/.codex/auth.json",
        "auth storage mode": "File",
        "stored API key": "false",
        "stored ChatGPT tokens": "true",
        "stored agent identity": "false",
        "stored auth mode": "chatgpt"
      },
      "remediation": null,
      "durationMs": 0
    },
    "config.load": {
      "id": "config.load",
      "category": "config",
      "status": "ok",
      "summary": "config loaded",
      "details": {
        "CODEX_HOME": "/net/kihara/home/ling59/.codex",
        "config.toml": "/net/kihara/home/ling59/.codex/config.toml",
        "config.toml parse": "ok",
        "cwd": "$USER/",
        "enabled feature flags": "shell_tool, unified_exec, shell_snapshot, code_mode_host, terminal_resize_reflow, sqlite, hooks, enable_request_compression, multi_agent, apps, tool_search_always_defer_mcp_tools, tool_suggest, plugins, in_app_browser, browser_use, browser_use_full_cdp_access, browser_use_external, computer_use, remote_plugin, plugin_sharing, image_generation, resize_all_images, skill_mcp_dependency_install, mentions_v2, steer, guardian_approval, goals, collaboration_modes, tool_call_mcp_elicitation, auth_elicitation, personality, fast_mode, tui_app_server, remote_compaction_v2, workspace_dependencies",
        "feature flag overrides": "none",
        "feature flags enabled": "35",
        "log dir": "$USER/.codex/log",
        "mcp servers": "0",
        "model": "<default>",
        "model provider": "openai",
        "sqlite home": "$USER/.codex"
      },
      "remediation": null,
      "durationMs": 0
    },
    "git.environment": {
      "id": "git.environment",
      "category": "git",
      "status": "ok",
      "summary": "git version 2.43.0",
      "details": {
        ".git entry": "directory",
        "PATH git #1": "/usr/bin/git",
        "PATH git #2": "/bin/git",
        "PATH git entries": "2",
        "git branch": "main",
        "git build options": "git version 2.43.0; cpu: x86_64; no commit associated with this build; sizeof-long: 8; sizeof-size_t: 8; shell-path: /bin/sh",
        "git exec path": "/usr/lib/git-core",
        "git version": "git version 2.43.0",
        "repo detected": "true",
        "repo root": "",
        "selected git": "/usr/bin/git"
      },
      "remediation": null,
      "durationMs": 381
    },
    "installation": {
      "id": "installation",
      "category": "install",
      "status": "ok",
      "summary": "installation looks consistent",
      "details": {
        "PATH codex #1": "$USER/.nvm/versions/node/v22.17.0/bin/codex",
        "current executable": "$USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin/codex",
        "install context": "npm (package $USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl, bin $USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin, resources $USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-resources, path $USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-path)",
        "managed by bun": "false",
        "managed by npm": "true",
        "managed by pnpm": "false",
        "managed package root": "$USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex",
        "npm update target": "$USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex"
      },
      "remediation": null,
      "durationMs": 7050
    },
    "mcp.config": {
      "id": "mcp.config",
      "category": "mcp",
      "status": "ok",
      "summary": "no MCP servers configured",
      "details": {},
      "remediation": null,
      "durationMs": 0
    },
    "network.env": {
      "id": "network.env",
      "category": "network",
      "status": "ok",
      "summary": "network-related environment looks readable",
      "details": {
        "proxy env vars": "none"
      },
      "remediation": null,
      "durationMs": 0
    },
    "network.provider_reachability": {
      "id": "network.provider_reachability",
      "category": "reachability",
      "status": "ok",
      "summary": "active provider endpoints are reachable over HTTP",
      "details": {
        "ChatGPT base URL": "https://chatgpt.com/backend-api/ reachable (HTTP 403)",
        "reachability mode": "ChatGPT auth"
      },
      "remediation": null,
      "durationMs": 431
    },
    "network.websocket_reachability": {
      "id": "network.websocket_reachability",
      "category": "websocket",
      "status": "ok",
      "summary": "Responses WebSocket handshake succeeded",
      "details": {
        "DNS": "2 IPv4, 2 IPv6, first IPv4",
        "auth mode": "chatgpt",
        "connect timeout": "15000 ms",
        "endpoint": "wss://chatgpt.com/backend-api/<redacted>",
        "handshake result": "HTTP 101 Switching Protocols",
        "model provider": "openai",
        "models etag present": "true",
        "provider name": "OpenAI",
        "proxy env vars": "none",
        "reasoning header": "false",
        "server model present": "false",
        "supports websockets": "true",
        "wire API": "responses"
      },
      "remediation": null,
      "durationMs": 1556
    },
    "runtime.provenance": {
      "id": "runtime.provenance",
      "category": "runtime",
      "status": "ok",
      "summary": "running npm on linux-x86_64",
      "details": {
        "commit": "unknown",
        "current executable": "$USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin/codex",
        "install method": "npm (package $USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl, bin $USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin, resources $USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-resources, path $USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-path)",
        "platform": "linux-x86_64",
        "version": "0.144.1"
      },
      "remediation": null,
      "durationMs": 0
    },
    "runtime.search": {
      "id": "runtime.search",
      "category": "search",
      "status": "ok",
      "summary": "search is OK (bundled)",
      "details": {
        "search command": "$USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-path/rg",
        "search command readiness": "file exists",
        "search provider": "bundled"
      },
      "remediation": null,
      "durationMs": 8
    },
    "sandbox.helpers": {
      "id": "sandbox.helpers",
      "category": "sandbox",
      "status": "ok",
      "summary": "sandbox configuration is readable",
      "details": {
        "approval policy": "OnRequest",
        "codex-linux-sandbox helper": "$USER/.codex/tmp/arg0/codex-arg06h9OSr/codex-linux-sandbox",
        "execve wrapper helper": "$USER/.codex/tmp/arg0/codex-arg06h9OSr/codex-execve-wrapper",
        "filesystem sandbox": "restricted",
        "network sandbox": "restricted"
      },
      "remediation": null,
      "durationMs": 3
    },
    "state.paths": {
      "id": "state.paths",
      "category": "state",
      "status": "ok",
      "summary": "state paths and databases are inspectable",
      "details": {
        "CODEX_HOME": "$USER/.codex (dir)",
        "active rollout files": "3 files, 277514 total bytes, 92504 average bytes",
        "archived rollout files": "0 files, 0 total bytes, 0 average bytes",
        "goals DB": "$USER/.codex/goals_1.sqlite (file)",
        "goals DB integrity": "ok",
        "log DB": "$USER/.codex/logs_2.sqlite (file)",
        "log DB integrity": "ok",
        "log dir": "$USER/.codex/log (missing)",
        "memories DB": "$USER/.codex/memories_1.sqlite (file)",
        "memories DB integrity": "ok",
        "sqlite home": "$USER/.codex (dir)",
        "state DB": "$USER/.codex/state_5.sqlite (file)",
        "state DB integrity": "ok"
      },
      "remediation": null,
      "durationMs": 605
    },
    "state.rollout_db_parity": {
      "id": "state.rollout_db_parity",
      "category": "threads",
      "status": "ok",
      "summary": "rollout files and state DB thread inventory agree",
      "details": {
        "default model provider": "openai",
        "rollout DB active files": "3",
        "rollout DB active rows": "3",
        "rollout DB archive mismatches": "0",
        "rollout DB archived files": "0",
        "rollout DB archived rows": "0",
        "rollout DB duplicate DB paths": "0",
        "rollout DB duplicate rollout thread ids": "0",
        "rollout DB malformed file names": "0",
        "rollout DB missing active rows": "0",
        "rollout DB missing archived rows": "0",
        "rollout DB model providers": "openai=3",
        "rollout DB rows": "3",
        "rollout DB scan cap reached": "false",
        "rollout DB scan errors": "0",
        "rollout DB sources": "exec=2, cli=1",
        "rollout DB stale rows": "0"
      },
      "remediation": null,
      "durationMs": 558
    },
    "system.environment": {
      "id": "system.environment",
      "category": "system",
      "status": "ok",
      "summary": "OS language en-US",
      "details": {
        "EDITOR": "not set",
        "LANG": "en_US.UTF-8",
        "VISUAL": "not set",
        "os": "Ubuntu 24.4.0 (noble) [64-bit]",
        "os language": "en-US",
        "os type": "Ubuntu",
        "os version": "24.4.0"
      },
      "remediation": null,
      "durationMs": 117
    },
    "terminal.env": {
      "id": "terminal.env",
      "category": "terminal",
      "status": "ok",
      "summary": "terminal metadata was detected",
      "details": {
        "COLORTERM": "truecolor",
        "SSH_CLIENT": "present",
        "SSH_CONNECTION": "present",
        "TERM_PROGRAM": "vscode",
        "VSCODE_IPC_HOOK_CLI": "present",
        "color output": "enabled",
        "effective locale": "en_US.UTF-8",
        "stderr is terminal": "true",
        "stdin is terminal": "true",
        "stdout is terminal": "true",
        "terminal": "VS Code",
        "terminal size": "214x46",
        "terminal version": "1.128.0"
      },
      "remediation": null,
      "durationMs": 0
    },
    "terminal.title": {
      "id": "terminal.title",
      "category": "title",
      "status": "ok",
      "summary": "terminal title default",
      "details": {
        "terminal title activity": "true",
        "terminal title items": "activity, project-name",
        "terminal title project source": "git repo root",
        "terminal title project value": "Nufold_multimer",
        "terminal title source": "default"
      },
      "remediation": null,
      "durationMs": 0
    },
    "updates.status": {
      "id": "updates.status",
      "category": "updates",
      "status": "ok",
      "summary": "update configuration is locally consistent",
      "details": {
        "cached latest version": "0.144.1",
        "check for update on startup": "true",
        "last checked at": "2026-07-10T17:25:22.419304237Z",
        "latest version": "0.144.1",
        "latest version status": "current version is not older",
        "npm update target": "$USER/.nvm/versions/node/v22.17.0/lib/node_modules/@openai/codex",
        "update action": "npm install -g @openai/codex",
        "version cache": "$USER/.codex/version.json"
      },
      "remediation": null,
      "durationMs": 1475
    }
  }
}

What issue are you seeing?

All commands executed through the Codex managed sandbox hang indefinitely without producing stdout or stderr.

Even trivial commands such as:

/bin/pwd
/bin/echo CODEX_OK

do not return when launched by Codex in sandboxed mode.

The same commands complete immediately outside the Codex sandbox. Repeated attempts leave multiple background terminal sessions running.

This looks similar to #20017 and #20807, but the previously identified slow or stale NFS/autofs Bubblewrap root cause does not reproduce on this host.

The exact Codex-style Bubblewrap probe completes successfully in 47 ms:

time timeout 30s bwrap \
--unshare-user \
--unshare-net \
--ro-bind / / \
/bin/true

Result:

real 0m0.047s
user 0m0.007s
sys 0m0.009s
exit code 0

User namespaces also work:

unshare -U true
echo $?

Result:

0

A full strace -f of:

bwrap --ro-bind / / true

shows that Bubblewrap successfully:

  • creates user and mount namespaces
  • writes uid_map and gid_map
  • performs pivot_root
  • remounts the filesystem read-only
  • changes into the working directory
  • executes /usr/bin/true
  • exits with status 0

Relevant end of the trace:

chdir("/path/to/project") = 0
execve("/usr/bin/true", ["true"], ...) = 0
exit_group(0)
+++ exited with 0 +++

Therefore, Bubblewrap itself, user namespaces, network namespaces, and the NFS-backed working directory all appear functional.

The failure appears specific to the Codex managed sandbox launcher, terminal/session handling, process-exit collection, or the additional sandbox policy generated by Codex.

What steps can reproduce the bug?

  1. Start Codex CLI normally in a repository.
  2. Ask Codex to run exactly:

/bin/pwd

  1. The command produces no output and remains running indefinitely.
  2. Repeat with:

/bin/echo CODEX_OK

  1. The same behavior occurs.
  2. Run Codex without the managed sandbox. The commands complete immediately.
  3. Run /ps and observe multiple background terminal sessions accumulating.

What is the expected behavior?

Simple sandboxed commands such as /bin/pwd and /bin/echo should complete immediately and return their output.

If sandbox initialization fails, Codex should fail fast with a clear diagnostic instead of silently leaving background terminal sessions running.

Additional information

Environment:

Codex CLI: 0.144.1
OS: Ubuntu 24.04.4 LTS
Kernel: Linux 6.8.0-48-generic x86_64
Bubblewrap: 0.9.0
Shell: bash
Home directory: NFS-mounted
Working directory: NFS-mounted

Reinstalling Codex and resetting its local state did not resolve the issue.

The exact Bubblewrap probe used to diagnose #19828 completes in 47 ms on this host, so this does not appear to be the same slow NFS/autofs bind-mount problem.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗