Investigation: Codex VS Code Extension
[Created by Codex: 019be564-39d9-7b12-a4cf-fb7a7f1af223 2026-01-22]
Purpose
Provide a fast, repeatable workflow to diagnose why the Codex VS Code extension cannot spawn or connect to the local codex app-server.
When to Use
Use when a user reports that Codex in VS Code will not start, errors on spawn, or fails after an extension or CLI update.
Warning Flags (Check First)
- •Non-default CLI override is set: If
"chatgpt.cliExecutable"is configured, the extension will run that binary instead of the bundled 45MBcodex. - •Assume “custom build” risk: An override often points at a locally built or modified Codex repo; the user must know exactly what it is and why it differs.
- •Always surface it explicitly: State the resolved
codexpath andcodex --versionin the RCA, and ask the user to confirm the repo/build they intended to run.
Incident Example (2026-01-22)
- •Symptom: “Cannot spawn a Codex agent in VS Code” after updating the extension to
openai.chatgpt0.4.62. - •Root cause: The extension started
codex app-server --analytics-default-enabled, but the user had"chatgpt.cliExecutable"pinned to acodex-cli 0.77.0binary that did not recognize that flag, so the process exited with code2. - •Evidence:
~/Library/Application Support/Code/logs/.../window*/exthost/openai.chatgpt/Codex.logcontainederror: unexpected argument '--analytics-default-enabled' found. - •Fix: Remove or update
"chatgpt.cliExecutable"to a compatiblecodexbinary (or let the extension use its bundled one), then reload VS Code.
Workflow (Non-Invasive)
- •Identify the actual
codexbinary VS Code is running (this is frequently the root cause):- •Check for
"chatgpt.cliExecutable"in:- •
~/Library/Application Support/Code/User/settings.json - •
<repo>/.vscode/settings.json
- •
- •If set, treat it as a high-priority hypothesis: VS Code is running a non-default
codex(often a custom build). - •If set, tell the user the resolved path and ask them to confirm which repo/build that binary came from.
- •Check for
- •Identify extension version and entrypoint:
- •
ls ~/.vscode/extensions | rg -i 'openai.chatgpt' - •
cat ~/.vscode/extensions/<ext>/package.json(readmain) - •
rg -n -- 'spawn|CLI_EXECUTABLE|codex|app-server' ~/.vscode/extensions/<ext>/out/extension.js
- •
- •Determine which
codexbinary the extension uses:- •If
"chatgpt.cliExecutable"is set, it wins. - •Otherwise, the fallback is typically:
~/.vscode/extensions/<ext>/bin/<platform>/codex.
- •If
- •Pull extension logs (most authoritative):
- •
~/Library/Application Support/Code/logs/<latest>/window*/exthost/openai.chatgpt/Codex.log - •
.../exthost/exthost.logfor activation and stack traces. - •Prioritize explicit CLI errors (unknown flags,
ENOENT,EACCES, exit code).
- •
- •Correlate failure with CLI arguments:
- •Compare args in
extension.jswithcodex app-server --helpfor the selected binary. - •If flags mismatch, conclude the extension is running an older CLI (often via
chatgpt.cliExecutable).
- •Compare args in
- •Run sanity checks:
- •Compare
codex --versionfor (a) terminal PATH (b) configuredchatgpt.cliExecutabletarget (c) extension-bundled binary. - •Verify executable permissions or quarantine status on macOS when
EACCESappears.
- •Compare
- •Draft RCA and minimal fix:
- •Cite the exact log line and file path.
- •Provide the smallest fix: remove/update
chatgpt.cliExecutable, point to newer binary, reload window.
Common Root Causes
- •
chatgpt.cliExecutablepinned to an older CLI missing new flags. - •Extension update changed CLI arguments but local binary stayed old.
- •Missing or non-executable bundled binary after update.
- •macOS quarantine or code signing issues (
EACCES).
Output Expectations
- •Provide a short RCA (1–3 bullets) and minimal fix steps.
- •Avoid invasive code changes unless explicitly requested.