exec_command intermittently unsupported: "unsupported call: exec_command" then tool disappears entirely after disabling shell_tool
What version of Codex CLI is running?
codex-cli 0.143.0
What subscription do you have?
ChatGPT Plus
Which model were you using?
gpt-5.5 (also reproduced on gpt-5.4)
What platform is your computer?
Linux 7.0.0-27-generic x86_64 unknown Ubuntu 26.04 LTS
What terminal emulator and version are you using (if applicable)?
Standard Linux terminal (pts), no multiplexer (tmux/screen/zellij) in use
Codex doctor report
{
"schemaVersion": 1,
"generatedAt": "1783568819s since unix epoch",
"overallStatus": "ok",
"codexVersion": "0.143.0",
"checks": {
"app_server.status": {
"id": "app_server.status",
"category": "app-server",
"status": "ok",
"summary": "background server is not running",
"details": {
"control socket": "/home/seb/.codex/app-server-control/app-server-control.sock",
"daemon state dir": "/home/seb/.codex/app-server-daemon",
"mode": "ephemeral",
"pid file": "/home/seb/.codex/app-server-daemon/app-server.pid (missing)",
"settings": "/home/seb/.codex/app-server-daemon/settings.json (missing)",
"status": "not running",
"update-loop pid file": "/home/seb/.codex/app-server-daemon/app-server-updater.pid (missing)"
},
"remediation": null,
"durationMs": 0
},
"auth.credentials": {
"id": "auth.credentials",
"category": "auth",
"status": "ok",
"summary": "auth is configured",
"details": {
"auth file": "/home/seb/.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": "/home/seb/.codex",
"config.toml": "/home/seb/.codex/config.toml",
"config.toml parse": "ok",
"cwd": "/home/seb",
"enabled feature flags": "unified_exec, shell_snapshot, terminal_resize_reflow, sqlite, memories, 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, personality, fast_mode, tui_app_server, remote_compaction_v2, workspace_dependencies",
"feature flag overrides": "shell_tool=false, memories=true",
"feature flags enabled": "33",
"log dir": "/home/seb/.codex/log",
"mcp servers": "0",
"model": "gpt-5.5",
"model provider": "openai",
"sqlite home": "/home/seb/.codex"
},
"remediation": null,
"durationMs": 0
},
"git.environment": {
"id": "git.environment",
"category": "git",
"status": "ok",
"summary": "git version 2.53.0",
"details": {
".git entry": "directory",
"PATH git #1": "/usr/bin/git",
"PATH git #2": "/bin/git",
"PATH git entries": "2",
"git build options": "git version 2.53.0; cpu: x86_64; no commit associated with this build; sizeof-long: 8; sizeof-size_t: 8; shell-path: /bin/sh; rust: disabled; gettext: enabled; libcurl: 8.18.0; zlib: 1.3.1; SHA-1: SHA1_DC; SHA-256: SHA256_BLK; default-ref-format: files; default-hash: sha1",
"git exec path": "/usr/lib/git-core",
"git version": "git version 2.53.0",
"repo detected": "true",
"repo root": "/home/seb",
"selected git": "/usr/bin/git"
},
"remediation": null,
"durationMs": 94
},
"installation": {
"id": "installation",
"category": "install",
"status": "ok",
"summary": "installation looks consistent",
"details": {
"PATH codex #1": "/home/seb/.nvm/versions/node/v26.3.0/bin/codex",
"current executable": "/home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin/codex",
"install context": "npm (package /home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl, bin /home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin, resources /home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-resources, path /home/seb/.nvm/versions/node/v26.3.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 package root": "/home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex",
"npm update target": "/home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex"
},
"remediation": null,
"durationMs": 147
},
"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 404)",
"reachability mode": "ChatGPT auth"
},
"remediation": null,
"durationMs": 237
},
"network.websocket_reachability": {
"id": "network.websocket_reachability",
"category": "websocket",
"status": "ok",
"summary": "Responses WebSocket handshake succeeded",
"details": {
"DNS": "2 IPv4, 2 IPv6, first IPv6",
"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": 707
},
"runtime.provenance": {
"id": "runtime.provenance",
"category": "runtime",
"status": "ok",
"summary": "running npm on linux-x86_64",
"details": {
"commit": "unknown",
"current executable": "/home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin/codex",
"install method": "npm (package /home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl, bin /home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin, resources /home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/codex-resources, path /home/seb/.nvm/versions/node/v26.3.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.143.0"
},
"remediation": null,
"durationMs": 0
},
"runtime.search": {
"id": "runtime.search",
"category": "search",
"status": "ok",
"summary": "search is OK (bundled)",
"details": {
"search command": "/home/seb/.nvm/versions/node/v26.3.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": 0
},
"sandbox.helpers": {
"id": "sandbox.helpers",
"category": "sandbox",
"status": "ok",
"summary": "sandbox configuration is readable",
"details": {
"approval policy": "OnRequest",
"codex-linux-sandbox helper": "/home/seb/.codex/tmp/arg0/codex-arg0VJihLX/codex-linux-sandbox",
"execve wrapper helper": "/home/seb/.codex/tmp/arg0/codex-arg0VJihLX/codex-execve-wrapper",
"filesystem sandbox": "restricted",
"network sandbox": "restricted"
},
"remediation": null,
"durationMs": 0
},
"state.paths": {
"id": "state.paths",
"category": "state",
"status": "ok",
"summary": "state paths and databases are inspectable",
"details": {
"CODEX_HOME": "/home/seb/.codex (dir)",
"active rollout files": "54 files, 153403743 total bytes, 2840810 average bytes",
"archived rollout files": "1 files, 27089637 total bytes, 27089637 average bytes",
"goals DB": "/home/seb/.codex/goals_1.sqlite (file)",
"goals DB integrity": "ok",
"log DB": "/home/seb/.codex/logs_2.sqlite (file)",
"log DB integrity": "ok",
"log dir": "/home/seb/.codex/log (missing)",
"memories DB": "/home/seb/.codex/memories_1.sqlite (file)",
"memories DB integrity": "ok",
"sqlite home": "/home/seb/.codex (dir)",
"state DB": "/home/seb/.codex/state_5.sqlite (file)",
"state DB integrity": "ok"
},
"remediation": null,
"durationMs": 299
},
"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": "54",
"rollout DB active rows": "54",
"rollout DB archive mismatches": "0",
"rollout DB archived files": "1",
"rollout DB archived rows": "1",
"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=55",
"rollout DB rows": "55",
"rollout DB scan cap reached": "false",
"rollout DB scan errors": "0",
"rollout DB sources": "cli=54, subagent:review=1",
"rollout DB stale rows": "0"
},
"remediation": null,
"durationMs": 3730
},
"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 26.4.0 (resolute) [64-bit]",
"os language": "en-US",
"os type": "Ubuntu",
"os version": "26.4.0"
},
"remediation": null,
"durationMs": 24
},
"terminal.env": {
"id": "terminal.env",
"category": "terminal",
"status": "ok",
"summary": "terminal metadata was detected",
"details": {
"COLORTERM": "truecolor",
"SSH_CLIENT": "present",
"SSH_CONNECTION": "present",
"SSH_TTY": "present",
"TERM": "xterm-256color",
"color output": "enabled",
"effective locale": "en_US.UTF-8",
"stderr is terminal": "true",
"stdin is terminal": "true",
"stdout is terminal": "true",
"terminal": "unknown",
"terminal size": "143x33"
},
"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": "seb",
"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.143.0",
"check for update on startup": "true",
"last checked at": "2026-07-09T02:19:51.256678201Z",
"latest version": "0.143.0",
"latest version status": "current version is not older",
"npm update target": "/home/seb/.nvm/versions/node/v26.3.0/lib/node_modules/@openai/codex",
"update action": "npm install -g @openai/codex",
"version cache": "/home/seb/.codex/version.json"
},
"remediation": null,
"durationMs": 595
}
}
}
What issue are you seeing?
Every invocation of the exec/shell tool (starting with a trivial pwd) fails with "unsupported call: exec_command" — at one point the error string appeared doubled as "unsupported call: exec_commandexec_command". This occurred both in normal approval mode and in --dangerously-bypass-approvals-and-sandbox (YOLO) mode, ruling out sandbox/approval config as the cause.
codex features list showed both shell_tool and unified_exec set to stable: true simultaneously. Disabling shell_tool (codex features disable shell_tool) and restarting fully resolved it for one session — pwd executed and returned correct output.
However, in later sessions (same config, shell_tool still disabled, unified_exec still enabled), the model instead reports "no shell/command runner tool is available in this session" — a different failure mode (tool absent vs tool rejected) — recurring across:
- fresh sessions (not resumed)
- both gpt-5.5 and gpt-5.4
- before and after a mid-session model switch (which triggered a "Context compacted" event, after which the tool became unavailable for the rest of that session)
No custom model_providers or wire_api overrides are configured — using default ChatGPT sign-in auth.
What steps can reproduce the bug?
Uploaded thread: 019f44f4-f381-7c92-9718-13df9f628992
What is the expected behavior?
The shell/exec tool should be reliably available for every turn within a session once the client reports it as a supported capability, and should not silently disappear or become unavailable following a model switch or context compaction event.
Additional information
Possibly related to #31665, #31664, #30902, and #26977, which report similar "unsupported call" / MCP tool-routing failures on recent Codex CLI builds.
12 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
+1 on mac
+1 how to fix it?
+1 I use Window. same error
getting this
+1 in wsl on windows 11
Workaround is to install an older version:
Yep, that version works fine.
npm install -g @openai/codex@0.138.0 --save-exactI have the same issue on fedora linux.
Same thing here
After the 0.144.1 update the toml order is corrected. I only had to switch shell-tool = false to true and Codex is back and better than ever.
Let's say you are using main model as Opus. Basically claude code (main) agent doesn't have an option to spawn subagent as sonnet with desired thinking effort. If main agent (Opus) was on "low effort", then the spawned sonnet subagent is also on low effort. This is crazy that is has not been fixed yet. I had to write tons of /agents/ like 'generic-sonnet-low', 'generic-sonnet-high', 'generic-opus-low' ,'generic-opus-medium' and so on and so on. And all these files are exactly the same (no SSOT, no DRY principle), so just a copy and different front matter, this is crazy.
Things like this could be solved with just skills. Now you need a skill where you have to explain (route) main agent to different subagents that you previously prepared in 10 agents/something.md files which are all the same in content except 'effort' param in frontmatter!
Please fix this, should be fairly simple?