Codex CLI 0.146.0: /backend-api/codex/responses/compact returns 404 {"detail":"Not Found"}
What version of Codex CLI is running?
0.146.0
What subscription do you have?
pro 20x
Which model were you using?
gpt-5.6-sol
What platform is your computer?
macOS
What terminal emulator and version are you using (if applicable)?
_No response_
Codex doctor report
{
"schemaVersion": 1,
"generatedAt": "1786606181s since unix epoch",
"overallStatus": "ok",
"codexVersion": "0.146.0",
"checks": {
"app_server.status": {
"id": "app_server.status",
"category": "app-server",
"status": "ok",
"summary": "background server is not running",
"details": {
"control socket": "/Users/admin_1/.codex/app-server-control/app-server-control.sock",
"daemon state dir": "/Users/admin_1/.codex/app-server-daemon",
"mode": "ephemeral",
"pid file": "/Users/admin_1/.codex/app-server-daemon/app-server.pid (missing)",
"settings": "/Users/admin_1/.codex/app-server-daemon/settings.json (missing)",
"status": "not running",
"update-loop pid file": "/Users/admin_1/.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": "/Users/admin_1/.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": "/Users/admin_1/.codex",
"config.toml": "/Users/admin_1/.codex/config.toml",
"config.toml parse": "ok",
"cwd": "/Users/admin_1/Desktop/sensebeingProjects/ualter/alter-service",
"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, in_app_updates, browser_use, browser_use_full_cdp_access, browser_use_external, computer_use, remote_plugin, plugin_sharing, image_generation, resize_all_images, item_ids, skill_mcp_dependency_install, skill_search, mentions_v2, steer, guardian_approval, goals, collaboration_modes, tool_call_mcp_elicitation, auth_elicitation, personality, fast_mode, tui_app_server, workspace_dependencies",
"feature flag overrides": "remote_compaction_v2=false",
"feature flags enabled": "37",
"log dir": "/Users/admin_1/.codex/log",
"mcp servers": "5",
"model": "gpt-5.6-sol",
"model provider": "openai",
"sqlite home": "/Users/admin_1/.codex"
},
"remediation": null,
"durationMs": 0
},
"git.environment": {
"id": "git.environment",
"category": "git",
"status": "ok",
"summary": "git version 2.50.1 (Apple Git-155)",
"details": {
".git entry": "directory",
"PATH git #1": "/usr/bin/git",
"PATH git entries": "1",
"git branch": "main",
"git build options": "git version 2.50.1 (Apple Git-155); cpu: arm64; no commit associated with this build; sizeof-long: 8; sizeof-size_t: 8; shell-path: /bin/sh; feature: fsmonitor--daemon; libcurl: 8.7.1; zlib: 1.2.12; SHA-1: SHA1_DC; SHA-256: SHA256_BLK",
"git exec path": "/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core",
"git version": "git version 2.50.1 (Apple Git-155)",
"repo detected": "true",
"repo root": "/Users/admin_1/Desktop/sensebeingProjects/ualter/alter-service",
"selected git": "/usr/bin/git"
},
"remediation": null,
"durationMs": 49
},
"installation": {
"id": "installation",
"category": "install",
"status": "ok",
"summary": "installation looks consistent",
"details": {
"PATH codex #1": "/Users/admin_1/.local/bin/codex",
"current executable": "/Users/admin_1/.local/bin/codex",
"install context": "standalone (unix, package /Users/admin_1/.codex/packages/standalone/releases/0.146.0-aarch64-apple-darwin, bin /Users/admin_1/.codex/packages/standalone/releases/0.146.0-aarch64-apple-darwin/bin, resources /Users/admin_1/.codex/packages/standalone/releases/0.146.0-aarch64-apple-darwin/codex-resources, path /Users/admin_1/.codex/packages/standalone/releases/0.146.0-aarch64-apple-darwin/codex-path)",
"managed by bun": "false",
"managed by npm": "false",
"managed by pnpm": "false",
"managed package root": "not set"
},
"remediation": null,
"durationMs": 6
},
"mcp.config": {
"id": "mcp.config",
"category": "mcp",
"status": "ok",
"summary": "MCP configuration is locally consistent",
"details": {
"configured servers": "5",
"disabled servers": "1",
"stdio servers": "5"
},
"remediation": null,
"durationMs": 0
},
"network.env": {
"id": "network.env",
"category": "network",
"status": "ok",
"summary": "network-related environment looks readable",
"details": {
"SSL_CERT_FILE": "readable file /Users/admin_1/Desktop/sensebeingProjects/ualter/alter-service-alter-release/tools/alter-release/.venv/lib/python3.12/site-packages/certifi/cacert.pem",
"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": 1096
},
"network.websocket_reachability": {
"id": "network.websocket_reachability",
"category": "websocket",
"status": "ok",
"summary": "Responses WebSocket handshake succeeded",
"details": {
"DNS": "1 IPv4, 0 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": 1583
},
"runtime.provenance": {
"id": "runtime.provenance",
"category": "runtime",
"status": "ok",
"summary": "running standalone on macos-aarch64",
"details": {
"commit": "unknown",
"current executable": "/Users/admin_1/.local/bin/codex",
"install method": "standalone (unix, package /Users/admin_1/.codex/packages/standalone/releases/0.146.0-aarch64-apple-darwin, bin /Users/admin_1/.codex/packages/standalone/releases/0.146.0-aarch64-apple-darwin/bin, resources /Users/admin_1/.codex/packages/standalone/releases/0.146.0-aarch64-apple-darwin/codex-resources, path /Users/admin_1/.codex/packages/standalone/releases/0.146.0-aarch64-apple-darwin/codex-path)",
"platform": "macos-aarch64",
"version": "0.146.0"
},
"remediation": null,
"durationMs": 0
},
"runtime.search": {
"id": "runtime.search",
"category": "search",
"status": "ok",
"summary": "search is OK (bundled)",
"details": {
"search command": "/Users/admin_1/.codex/packages/standalone/releases/0.146.0-aarch64-apple-darwin/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": "none",
"execve wrapper helper": "/Users/admin_1/.codex/tmp/arg0/codex-arg0jy5Bfx/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": "/Users/admin_1/.codex (dir)",
"active rollout files": "536 files, 1474952200 total bytes, 2751776 average bytes",
"archived rollout files": "0 files, 0 total bytes, 0 average bytes",
"goals DB": "/Users/admin_1/.codex/goals_1.sqlite (file)",
"goals DB integrity": "ok",
"log DB": "/Users/admin_1/.codex/logs_2.sqlite (file)",
"log DB integrity": "ok",
"log dir": "/Users/admin_1/.codex/log (dir)",
"memories DB": "/Users/admin_1/.codex/memories_1.sqlite (file)",
"memories DB integrity": "ok",
"sqlite home": "/Users/admin_1/.codex (dir)",
"standalone release cache": "1 entries in /Users/admin_1/.codex/packages/standalone/releases",
"state DB": "/Users/admin_1/.codex/state_5.sqlite (file)",
"state DB integrity": "ok",
"thread history DB": "/Users/admin_1/.codex/thread_history_1.sqlite (file)",
"thread history DB integrity": "ok"
},
"remediation": null,
"durationMs": 5335
},
"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": "536",
"rollout DB active rows": "536",
"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=536",
"rollout DB rows": "536",
"rollout DB scan cap reached": "false",
"rollout DB scan errors": "0",
"rollout DB sources": "subagent:thread_spawn=406, cli=119, vscode=11",
"rollout DB stale rows": "0"
},
"remediation": null,
"durationMs": 325
},
"system.environment": {
"id": "system.environment",
"category": "system",
"status": "ok",
"summary": "OS language zh-Hans-US",
"details": {
"EDITOR": "not set",
"LANG": "en_US.UTF-8",
"LESS": "set",
"PAGER": "set",
"VISUAL": "not set",
"os": "Mac OS 26.6.1 [64-bit]",
"os language": "zh-Hans-US",
"os type": "Mac OS",
"os version": "26.6.1"
},
"remediation": null,
"durationMs": 1
},
"terminal.env": {
"id": "terminal.env",
"category": "terminal",
"status": "ok",
"summary": "terminal metadata was detected",
"details": {
"COLORTERM": "truecolor",
"TERMINFO": "/Applications/Ghostty.app/Contents/Resources/terminfo (dir)",
"TERM_PROGRAM": "ghostty",
"color output": "enabled",
"effective locale": "en_US.UTF-8",
"stderr is terminal": "true",
"stdin is terminal": "true",
"stdout is terminal": "true",
"terminal": "Ghostty",
"terminal size": "188x47",
"terminal version": "1.3.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": "alter-service",
"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.147.0",
"check for update on startup": "true",
"dismissed version": "0.147.0",
"last checked at": "2026-08-13T03:17:36.249932Z",
"latest version": "0.147.0",
"latest version status": "newer version is available",
"update action": "standalone installer",
"version cache": "/Users/admin_1/.codex/version.json"
},
"remediation": null,
"durationMs": 1546
}
}
}
What issue are you seeing?
■ Error running remote compact task: unexpected status 404 Not Found: {"detail":"Not Found"}, url: https://chatgpt.com/backend-api/codex/responses/compact, cf-ray: a2a5f3a0dd12a5bb-BOS,
request id: 149cd99d-fab9-4e76-a94a-6cbbf0d6a5a9
What steps can reproduce the bug?
I consistently encounter this issue whenever Codex CLI attempts to compact the conversation context.
There are several ways to reproduce it:
- Automatic compaction
- Continue using a Codex CLI session until the context window approaches its limit.
- When Codex automatically triggers context compaction, the compaction request fails with the following error:
Error running remote compact task:
unexpected status 404 Not Found:
{"detail":"Not Found"},
url: https://chatgpt.com/backend-api/codex/responses/compact
- Manual
/compactin a long-running session
- Run
/compactmanually in an existing session. - The same
404 Not Founderror is returned.
- Manual
/compactin a brand-new session
- Start a completely new Codex CLI session.
- Have only a short conversation, with context usage at approximately 1%.
- Run
/compactmanually. - The exact same
404 Not Founderror still occurs.
Therefore, the issue does not appear to depend on the amount of context being used or whether the context window is actually close to its limit.
Both automatic compaction and manually invoking /compact consistently fail because the request to:
https://chatgpt.com/backend-api/codex/responses/compact
returns:
{"detail":"Not Found"}
This makes context compaction effectively unavailable in Codex CLI. In long-running sessions, once the context reaches the automatic compaction threshold, I can no longer continue the session normally because the compaction step fails.
What is the expected behavior?
_No response_
Additional information
_No response_
10 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
This appears closely related to #38323, but my reproduction is on Codex Desktop for Windows rather than Codex CLI on macOS.
This suggests the same /backend-api/codex/responses/compact 404 may affect multiple platforms and Codex clients.
Same failure is occurring in JetBrains IntelliJ's built-in Codex integration, so this is not limited to standalone Codex CLI 0.146.0.
Environment:
This has happened repeatedly in the same setup. Two earlier occurrences returned the same
/responses/compact404 through CloudflareORD, while this occurrence is throughMSP, suggesting it is not isolated to one edge location.Expected: remote compaction should succeed so the existing Codex conversation/task can continue.
Another occurrence from the same IntelliJ setup at approximately 2026-08-13 20:44 CDT:
This is a second MSP edge occurrence with a distinct Cloudflare ray and request ID, in addition to prior MSP/ORD failures already reported above. The failure remains reproducible/intermittent rather than a one-off request.
Confirmed here too, reproducible on CLI 0.147.0 as wwell
A/B model test from the same IntelliJ installation also fails on GPT-5.4 High with the identical remote compaction endpoint and HTTP status:
This rules against the issue being specific to the previously selected model. Same JetBrains environment, different model, same
/backend-api/codex/responses/compact404 through MSP.This is a good real-world control case for
codex-rescue: compaction itself is failing upstream with 404 even in a fresh thread, so the useful question is whether the local persisted session remains healthy versus accumulating an interrupted/recovery condition.I’m field-testing the tool on real Codex failures. It is experimental, local-first, and keeps source rollouts read-only. If you’re willing, please run:
A
HEALTHY/no-damage result is useful evidence here too; I specifically don’t want the tool to misclassify a server-side compact failure as local corruption.Please share only sanitized output plus versions/exit codes—no raw JSONL/SQLite, prompts, credentials, or unredacted paths. Repo: https://github.com/shleder/codex-rescue
Client-side, this 404 is handled worse than it needs to be, which is why it kills sessions (#38240 is the same failure "blocking session completely").
When the remote compact call fails, the only recovery codex attempts is retrying the same remote endpoint with a fallback model —
should_retry_with_current_modelmatchesUnexpectedStatus(https://github.com/openai/codex/blob/1f41cc5d92/codex-rs/core/src/compact_model_fallback.rs#L9-L20, retry wiring incore/src/compact_remote.rs#L225-L240). But a route-level 404 ({"detail":"Not Found"}from/backend-api/codex/responses/compact) is model-independent — the fallback model hits the identical 404, the error is rethrown, and the turn dies. Since compaction was triggered because the context is full, the session is then wedged: every continuation re-triggers compaction and re-fails.A local compaction implementation exists (
run_compact_taskincore/src/compact.rs) but the remote path never falls back to it. Fix outline: (1) on remote-compact 404/route-missing, fall back to local compaction instead of a same-endpoint model retry; (2) treat 404 specifically as "endpoint unavailable" and remember it for the session rather than re-probing every attempt. Server-side, the route intermittently 404ing for some accounts (0.146.0 era) is its own question for the backend team.I honestly thought I was the only one struggling with this issue, it's been driving me mad for weeks now and it happens almost every single time.
use
/plan, answer a few questions and mid-flight implementing the changes codex just dies (compacting)! And there's no possibility to recover, attempting to resume the conversation is a no-go, the first prompt will automatically re-trigger compactionTried:
nothing works
Edit:
Using Rider with codex in a [Rider] terminal, not using a Codex plugin
Client-side handling of this 404 deserves its own fix track: when remote compact fails, the thread should not become unresumable. In my affected sessions the rollouts were intact afterwards -
vetto rescue diagnose <session.jsonl>verifies that per-thread if anyone wants to confirm their data survived the 404 loop.