False-positive "Invalid prompt" safety rejection in benign ML research conversations
What version of Codex CLI is running?
codex-cli 0.148.0
What subscription do you have?
20x Pro
Which model were you using?
gpt-5.6-sol xhigh
What platform is your computer?
Linux 5.4.143.bsk.8-amd64 x86_64 unknown
What terminal emulator and version are you using (if applicable)?
_No response_
Codex doctor report
{
"schemaVersion": 1,
"generatedAt": "1787220565s since unix epoch",
"overallStatus": "fail",
"codexVersion": "0.148.0",
"checks": {
"app_server.status": {
"id": "app_server.status",
"category": "app-server",
"status": "warning",
"summary": "background server socket is stale or unreachable",
"details": {
"app-server version": "unavailable (failed to connect to control socket)",
"control socket": "/home/tiger/.codex/app-server-control/app-server-control.sock",
"daemon state dir": "/home/tiger/.codex/app-server-daemon",
"mode": "ephemeral",
"pid file": "/home/tiger/.codex/app-server-daemon/app-server.pid (missing)",
"settings": "/home/tiger/.codex/app-server-daemon/settings.json (missing)",
"status": "stale or unreachable",
"update-loop pid file": "/home/tiger/.codex/app-server-daemon/app-server-updater.pid (missing)"
},
"remediation": "Run codex app-server daemon version for more details.",
"durationMs": 22
},
"auth.credentials": {
"id": "auth.credentials",
"category": "auth",
"status": "ok",
"summary": "auth is configured",
"details": {
"auth file": "/home/tiger/.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/tiger/.codex",
"config.toml": "/home/tiger/.codex/config.toml",
"config.toml parse": "ok",
"cwd": "/mlx_devbox/users/keyisi/flame",
"enabled feature flags": "shell_tool, view_image, unified_exec, shell_snapshot, code_mode_host, terminal_resize_reflow, sqlite, hooks, enable_request_compression, unbounded_connection_retries, 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, remote_compaction_v2, workspace_dependencies",
"feature flag overrides": "none",
"feature flags enabled": "40",
"log dir": "/home/tiger/.codex/log",
"mcp servers": "0",
"model": "gpt-5.6-sol",
"model provider": "openai",
"sqlite home": "/home/tiger/.codex"
},
"remediation": null,
"durationMs": 0
},
"git.environment": {
"id": "git.environment",
"category": "git",
"status": "ok",
"summary": "git version 2.39.5",
"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.39.5; 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.39.5",
"repo detected": "true",
"repo root": "/mlx_devbox/users/keyisi/flame",
"selected git": "/usr/bin/git"
},
"remediation": null,
"durationMs": 5704
},
"installation": {
"id": "installation",
"category": "install",
"status": "ok",
"summary": "installation looks consistent",
"details": {
"PATH codex #1": "/home/tiger/.local/bin/codex",
"PATH codex #2": "/home/tiger/codex-wrapper/bin/codex",
"PATH codex entries": "2",
"current executable": "/home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl/bin/codex",
"install context": "standalone (unix, package /home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl, bin /home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl/bin, resources /home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl/codex-resources, path /home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl/codex-path)",
"managed by bun": "false",
"managed by npm": "false",
"managed by pnpm": "false",
"managed package root": "not set"
},
"remediation": null,
"durationMs": 144
},
"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 present": "NO_PROXY, https_proxy, no_proxy"
},
"remediation": null,
"durationMs": 0
},
"network.provider_reachability": {
"id": "network.provider_reachability",
"category": "reachability",
"status": "fail",
"summary": "one or more required provider endpoints are unreachable over HTTP",
"details": {
"ChatGPT base URL": "https://chatgpt.com/backend-api/ request timed out (required)",
"reachability mode": "ChatGPT auth"
},
"remediation": "Check proxy, VPN, firewall, DNS, and custom CA configuration.",
"durationMs": 5595
},
"network.websocket_reachability": {
"id": "network.websocket_reachability",
"category": "websocket",
"status": "ok",
"summary": "Responses WebSocket handshake succeeded",
"details": {
"DNS": "1 IPv4, 1 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",
"provider name": "OpenAI",
"proxy env vars present": "NO_PROXY, https_proxy, no_proxy",
"reasoning header": "false",
"server model present": "false",
"supports websockets": "true",
"wire API": "responses"
},
"remediation": null,
"durationMs": 7822
},
"runtime.provenance": {
"id": "runtime.provenance",
"category": "runtime",
"status": "ok",
"summary": "running standalone on linux-x86_64",
"details": {
"commit": "unknown",
"current executable": "/home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl/bin/codex",
"install method": "standalone (unix, package /home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl, bin /home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl/bin, resources /home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl/codex-resources, path /home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl/codex-path)",
"platform": "linux-x86_64",
"version": "0.148.0"
},
"remediation": null,
"durationMs": 0
},
"runtime.search": {
"id": "runtime.search",
"category": "search",
"status": "ok",
"summary": "search is OK (bundled)",
"details": {
"search command": "/home/tiger/.codex/packages/standalone/releases/0.148.0-x86_64-unknown-linux-musl/codex-path/rg",
"search command readiness": "file exists",
"search provider": "bundled"
},
"remediation": null,
"durationMs": 7
},
"sandbox.helpers": {
"id": "sandbox.helpers",
"category": "sandbox",
"status": "ok",
"summary": "sandbox configuration is readable",
"details": {
"approval policy": "OnRequest",
"codex-linux-sandbox helper": "/home/tiger/.codex/tmp/arg0/codex-arg0IAX1XT/codex-linux-sandbox",
"execve wrapper helper": "/home/tiger/.codex/tmp/arg0/codex-arg0IAX1XT/codex-execve-wrapper",
"filesystem sandbox": "restricted",
"network sandbox": "enabled"
},
"remediation": null,
"durationMs": 0
},
"state.paths": {
"id": "state.paths",
"category": "state",
"status": "fail",
"summary": "state database integrity check failed",
"details": {
"CODEX_HOME": "/home/tiger/.codex (dir)",
"active rollout files": "15 files, 49628013 total bytes, 3308534 average bytes",
"archived rollout files": "7 files, 6823803 total bytes, 974829 average bytes",
"goals DB": "/home/tiger/.codex/goals_1.sqlite (file)",
"goals DB integrity": "ok",
"log DB": "/home/tiger/.codex/logs_2.sqlite (file)",
"log DB integrity": "*** in database main ***\nFailed to read ptrmap key=5\nTree 5 page 751 right child: invalid page number 1230\nTree 5 page 751 right child: invalid page number 1229\nTree 5 page 751 right child: invalid page number 1227\nTree 5 page 751 right child: invalid page number 1226\nTree 5 page 751 right child: invalid page number 1225\nTree 5 page 751 right child: invalid page number 1224\nTree 5 page 751 right child: Failed to read ptrmap key=96\nTree 5 page 751 right child: Failed to read ptrmap key=503\nTree 5 page 751 right child: Failed to read ptrmap key=144\nTree 5 page 751 right child: Failed to read ptrmap key=202\nTree 5 page 751 right child: Failed to read ptrmap key=306\nTree 5 page 751 right child: Failed to read ptrmap key=326\nTree 5 page 751 right child: Failed to read ptrmap key=359\nTree 5 page 751 right child: Failed to read ptrmap key=233\nTree 5 page 751 right child: Failed to read ptrmap key=382\nTree 5 page 751 right child: Failed to read ptrmap key=394\nTree 5 page 751 right child: Failed to read ptrmap key=340\nTree 5 page 751 right child: Failed to read ptrmap key=410\nTree 5 page 751 right child: Failed to read ptrmap key=117\nTree 5 page 751 right child: Bad ptr map entry key=255 expected=(5,751) got=(3,4047260220)\nTree 5 page 751 right child: Failed to read ptrmap key=81\nTree 5 page 751 right child: Failed to read ptrmap key=287\nTree 5 page 751 right child: Failed to read ptrmap key=557\nTree 5 page 751 right child: Failed to read ptrmap key=496\nTree 5 page 751 right child: Failed to read ptrmap key=339\nTree 5 page 751 right child: Failed to read ptrmap key=403\nTree 5 page 751 right child: Failed to read ptrmap key=234\nTree 5 page 751 right child: Failed to read ptrmap key=285\nTree 5 page 751 right child: Failed to read ptrmap key=103\nTree 5 page 751 right child: Failed to read ptrmap key=521\nTree 5 page 751 right child: Failed to read ptrmap key=273\nTree 5 page 751 right child: Bad ptr map entry key=427 expected=(5,751) got=(4,33714281)\nTree 5 page 751 right child: Bad ptr map entry key=270 expected=(5,751) got=(3,33714281)\nTree 5 page 751 right child: Failed to read ptrmap key=530\nTree 5 page 751 right child: Failed to read ptrmap key=436\nTree 5 page 751 right child: Failed to read ptrmap key=315\nTree 5 page 751 right child: Failed to read ptrmap key=223\nTree 5 page 751 right child: Failed to read ptrmap key=369\nTree 5 page 751 right child: Failed to read ptrmap key=173\nTree 5 page 751 right child: Failed to read ptrmap key=524\nTree 5 page 751 right child: Failed to read ptrmap key=284\nTree 5 page 751 right child: Failed to read ptrmap key=99\nTree 5 page 751 right child: Failed to read ptrmap key=525\nTree 5 page 751 right child: Failed to read ptrmap key=489\nTree 5 page 751 right child: Failed to read ptrmap key=453\nTree 5 page 751 right child: Failed to read ptrmap key=418\nTree 5 page 751 right child: Bad ptr map entry key=218 expected=(5,751) got=(3,33714281)\nTree 5 page 751 right child: Bad ptr map entry key=257 expected=(5,751) got=(3,33714281)\nTree 5 page 751 right child: Failed to read ptrmap key=197\nTree 5 page 751 right child: Failed to read ptrmap key=519\nTree 5 page 751 right child: Failed to read ptrmap key=430\nTree 5 page 751 right child: Failed to read ptrmap key=354\nTree 5 page 751 right child: Failed to read ptrmap key=261\nTree 5 page 751 right child: Failed to read ptrmap key=321\nTree 5 page 751 right child: Failed to read ptrmap key=214\nTree 5 page 751 right child: Failed to read ptrmap key=154\nTree 5 page 751 right child: Failed to read ptrmap key=406\nTree 5 page 751 right child: Bad ptr map entry key=385 expected=(5,751) got=(1,3799178300)\nTree 5 page 751 right child: Failed to read ptrmap key=68\nTree 5 page 751 right child: Failed to read ptrmap key=45\nTree 5 page 45 cell 2: Failed to read ptrmap key=188\nTree 5 page 751 right child: Failed to read ptrmap key=320\nTree 5 page 751 right child: Failed to read ptrmap key=122\nTree 5 page 751 right child: Failed to read ptrmap key=250\nTree 5 page 751 right child: Failed to read ptrmap key=312\nTree 5 page 751 right child: Failed to read ptrmap key=478\nTree 5 page 478 cell 0: Failed to read ptrmap key=452\nTree 5 page 751 right child: Bad ptr map entry key=244 expected=(5,751) got=(3,33714281)\nTree 5 page 751 right child: Failed to read ptrmap key=219\nTree 5 page 751 right child: Failed to read ptrmap key=215\nTree 5 page 751 right child: Failed to read ptrmap key=429\nTree 5 page 751 right child: Failed to read ptrmap key=428\nTree 5 page 751 right child: Failed to read ptrmap key=383\nTree 5 page 751 right child: Failed to read ptrmap key=409\nTree 5 page 751 right child: Failed to read ptrmap key=330\nTree 5 page 751 right child: Failed to read ptrmap key=146\nTree 5 page 751 right child: Failed to read ptrmap key=102\nTree 5 page 751 right child: Failed to read ptrmap key=324\nTree 5 page 751 right child: Failed to read ptrmap key=323\nTree 5 page 751 right child: Failed to read ptrmap key=325\nTree 5 page 751 right child: Failed to read ptrmap key=404\nTree 5 page 751 right child: Failed to read ptrmap key=186\nTree 5 page 751 right child: Bad ptr map entry key=322 expected=(5,751) got=(3,33714281)\nTree 5 page 751 right child: Failed to read ptrmap key=311\nTree 5 page 751 right child: Failed to read ptrmap key=266\nTree 5 page 751 right child: Failed to read ptrmap key=89\nTree 5 page 751 right child: Failed to read ptrmap key=313\nTree 5 page 751 right child: Failed to read ptrmap key=268\nTree 5 page 751 right child: Failed to read ptrmap key=276\nTree 5 page 751 right child: Failed to read ptrmap key=267\nTree 5 page 751 right child: Failed to read ptrmap key=249\nTree 5 page 751 right child: Failed to read ptrmap key=534\nTree 5 page 751 right child: Bad ptr map entry key=533 expected=(5,751) got=(2,1885955130)\nTree 5 page 751 right child: Failed to read ptrmap key=526\nTree 5 page 751 right child: Failed to read ptrmap key=571\nTree 5 page 751 right child: Bad ptr map entry key=480 expected=(5,751) got=(2,40921444)\nTree 5 page 751 right child: Failed to read ptrmap key=522\nTree 5 page 751 right child: Failed to read ptrmap key=357\nTree 5 page 751 right child: Failed to read ptrmap key=242",
"log dir": "/home/tiger/.codex/log (missing)",
"memories DB": "/home/tiger/.codex/memories_1.sqlite (file)",
"memories DB integrity": "ok",
"queue DB": "/home/tiger/.codex/queue_1.sqlite (file)",
"queue DB integrity": "ok",
"sqlite home": "/home/tiger/.codex (dir)",
"standalone release cache": "2 entries in /home/tiger/.codex/packages/standalone/releases",
"state DB": "/home/tiger/.codex/state_5.sqlite (file)",
"state DB integrity": "wrong # of entries in index idx_threads_archived_cwd_recency_at_ms; wrong # of entries in index idx_threads_recency_at_ms; wrong # of entries in index idx_threads_archived_cwd_updated_at_ms; wrong # of entries in index idx_threads_archived_cwd_created_at_ms; wrong # of entries in index idx_threads_updated_at_ms; wrong # of entries in index idx_threads_created_at_ms; wrong # of entries in index idx_threads_provider; wrong # of entries in index idx_threads_source; wrong # of entries in index idx_threads_archived; wrong # of entries in index idx_threads_updated_at; wrong # of entries in index idx_threads_created_at; row 8 missing from index idx_threads_visible_recency_at_ms; row 8 missing from index idx_threads_archived_cwd_recency_at_ms; row 8 missing from index idx_threads_recency_at_ms; row 8 missing from index idx_threads_visible_updated_at_ms; row 8 missing from index idx_threads_archived_cwd_updated_at_ms; row 8 missing from index idx_threads_updated_at_ms; row 8 missing from index idx_threads_updated_at; row 9 missing from index idx_threads_visible_recency_at_ms; row 9 missing from index idx_threads_archived_cwd_recency_at_ms; row 9 missing from index idx_threads_recency_at_ms; row 9 missing from index idx_threads_visible_updated_at_ms; row 9 missing from index idx_threads_visible_created_at_ms; row 9 missing from index idx_threads_archived_cwd_updated_at_ms; row 9 missing from index idx_threads_archived_cwd_created_at_ms; row 9 missing from index idx_threads_updated_at_ms; row 9 missing from index idx_threads_created_at_ms; row 9 missing from index idx_threads_provider; row 9 missing from index idx_threads_source; row 9 missing from index idx_threads_archived; row 9 missing from index idx_threads_updated_at; row 9 missing from index idx_threads_created_at; row 10 missing from index idx_threads_visible_recency_at_ms; row 10 missing from index idx_threads_archived_cwd_recency_at_ms; row 10 missing from index idx_threads_recency_at_ms; row 10 missing from index idx_threads_visible_updated_at_ms; row 10 missing from index idx_threads_visible_created_at_ms; row 10 missing from index idx_threads_archived_cwd_updated_at_ms; row 10 missing from index idx_threads_archived_cwd_created_at_ms; row 10 missing from index idx_threads_updated_at_ms; row 10 missing from index idx_threads_created_at_ms; row 10 missing from index idx_threads_provider; row 10 missing from index idx_threads_source; row 10 missing from index idx_threads_archived; row 10 missing from index idx_threads_updated_at; row 10 missing from index idx_threads_created_at; row 11 missing from index idx_threads_visible_recency_at_ms; row 11 missing from index idx_threads_archived_cwd_recency_at_ms; row 11 missing from index idx_threads_recency_at_ms; row 11 missing from index idx_threads_visible_updated_at_ms; row 11 missing from index idx_threads_visible_created_at_ms; row 11 missing from index idx_threads_archived_cwd_updated_at_ms; row 11 missing from index idx_threads_archived_cwd_created_at_ms; row 11 missing from index idx_threads_updated_at_ms; row 11 missing from index idx_threads_created_at_ms; row 11 missing from index idx_threads_provider; row 11 missing from index idx_threads_source; row 11 missing from index idx_threads_archived; row 11 missing from index idx_threads_updated_at; row 11 missing from index idx_threads_created_at",
"thread history DB": "/home/tiger/.codex/thread_history_1.sqlite (file)",
"thread history DB integrity": "ok"
},
"remediation": "Move the damaged SQLite database aside, then restart the interactive CLI or app server so it can rebuild that runtime database from saved data. Other entry points may not rebuild automatically.",
"durationMs": 21390
},
"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": "15",
"rollout DB active rows": "15",
"rollout DB archive mismatches": "0",
"rollout DB archived files": "7",
"rollout DB archived rows": "7",
"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=22",
"rollout DB rows": "22",
"rollout DB scan cap reached": "false",
"rollout DB scan errors": "0",
"rollout DB sources": "vscode=8, cli=7, subagent:other=7",
"rollout DB stale rows": "0"
},
"remediation": null,
"durationMs": 6228
},
"system.disk": {
"id": "system.disk",
"category": "disk",
"status": "ok",
"summary": "sufficient free disk space (266.7 GiB)",
"details": {
"CODEX_HOME available": "266.7 GiB",
"failure threshold": "1.0 GiB",
"warning threshold": "5.0 GiB",
"worktree available": "266.7 GiB"
},
"remediation": null,
"durationMs": 15
},
"system.environment": {
"id": "system.environment",
"category": "system",
"status": "ok",
"summary": "OS language en-US",
"details": {
"EDITOR": "not set",
"LANG": "en_US.UTF-8",
"LC_ALL": "en_US.UTF-8",
"LC_CTYPE": "en_US.UTF-8",
"VISUAL": "not set",
"os": "Debian 12.0.0 (bookworm) [64-bit]",
"os language": "en-US",
"os type": "Debian",
"os version": "12.0.0"
},
"remediation": null,
"durationMs": 538
},
"terminal.env": {
"id": "terminal.env",
"category": "terminal",
"status": "warning",
"summary": "height 18 rows - content may scroll off (recommended >=24)",
"details": {
"SSH_CLIENT": "present",
"SSH_CONNECTION": "present",
"SSH_TTY": "present",
"TERM": "xterm-256color",
"color output": "disabled (stdout is not a terminal)",
"effective locale": "en_US.UTF-8",
"stderr is terminal": "true",
"stdin is terminal": "true",
"stdout is terminal": "false",
"terminal": "unknown",
"terminal size": "122x18"
},
"issues": [
{
"severity": "warning",
"cause": "height 18 rows - content may scroll off (recommended >=24)",
"measured": "122 x 18",
"expected": ">= 24 rows",
"remedy": "resize the window to at least 24 rows",
"fields": [
"terminal size"
]
}
],
"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": "flame",
"terminal title source": "default"
},
"remediation": null,
"durationMs": 0
},
"updates.status": {
"id": "updates.status",
"category": "updates",
"status": "warning",
"summary": "update configuration is locally consistent",
"details": {
"cached latest version": "0.148.0",
"check for update on startup": "true",
"last checked at": "2026-08-20T09:29:59.330115135Z",
"latest version probe": "curl: (22) The requested URL returned error: 403",
"update action": "standalone installer",
"version cache": "/home/tiger/.codex/version.json"
},
"remediation": null,
"durationMs": 1929
}
}
}
What issue are you seeing?
Codex repeatedly returns the following safety error during completely benign machine-learning research and software-engineering conversations:
"Invalid prompt: your prompt was flagged as potentially violating our usage policy."
The affected conversation contains only ordinary ML research content: source code, mathematical explanations of gradients and Hessian-vector products, project documentation, normal shell output, AGENTS.md repository instructions, and training or benchmark scripts.
What steps can reproduce the bug?
Uploaded thread: 01a01e03-f470-7e00-98e3-20bf049635ba
What is the expected behavior?
Codex should answer benign questions about legitimate machine-learning source code and configuration. Ordinary repository content and previous tool output should not cause subsequent harmless prompts to be rejected by the safety system.
Additional information
This appears to be a false positive caused by the safety classification of the accumulated conversation or tool context rather than the current user prompt.
I found multiple occurrences of the same error across sessions in this repository. The uploaded thread contains the relevant prompts, tool context, and diagnostics needed to investigate the classifier decision.
2 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
RCA from an enterprise fleet hit by this today (2026-08-20, ~16:11–17:05 UTC): Codex's built-in compaction summary prefix was being flagged by the server-side input classifier.
Symptom: every thread that had auto-compacted failed with
invalid_prompt("…flagged as potentially violating our usage policy…"); fresh threads worked until they compacted. Forking/resuming did not help, because the fork replays the compacted history.We reproduced outside the Codex client with a raw
POST /v1/responsesreplay of a failing thread's context, then bisected. Minimal trigger — the first two sentences ofcodex-rs/prompts/templates/compact/summary_prefix.md, sent as plain user input with nothing else:During the incident window this ~40-token pair was rejected on 100% of attempts on
gpt-5.6-sol(every reasoning effort, and with reasoning omitted) andgpt-5.1; either sentence alone always passed, and every bisected sub-payload containing the pair failed while every one missing it passed (~15 interleaved calls). Presumably the classifier reads it as an attempt to extract another model's chain-of-thought — the error links to the reasoning-prompting docs. Codex prepends exactly this text to every compaction summary, which is why only compacted threads were affected.As of ~17:05 UTC the byte-identical payloads — including the full ~141k-token previously-failing context — complete normally, and the previously-dead thread forks and resumes fine. So this looks like a server-side classifier change that has since been rolled back; affected threads should recover with no client action.
Suggestion to prevent recurrence: reword
summary_prefix.md(it is a textbook match for "reveal another model's thinking") and/or exempt Codex's own compaction preamble from the input classifier.(Repro detail: our fleet routes Codex through OpenRouter's Responses endpoint to the OpenAI provider — OpenRouter returned HTTP 200 and relayed the upstream
response.failed/invalid_prompt, and the same input passed on non-OpenAI models, so the rejection was upstream of OpenRouter.)