UX footgun: `/feedback <text>` can be routed like a normal prompt instead of opening or pre-filling the feedback flow
What version of Codex CLI is running?
codex-cli 0.143.0-alpha.29
What subscription do you have?
ChatGPT Pro
Which model were you using?
Not model-specific. This is about Codex CLI/TUI slash-command parsing and feedback UX.
What platform is your computer?
Linux 6.18.33.2-microsoft-standard-WSL2 x86_64 x86_64
What terminal emulator and version are you using (if applicable)?
Windows Terminal 1.24.11321.0, WSL 2.7.10.0
Codex doctor report
{
"schemaVersion": 1,
"generatedAt": "1782751269s since unix epoch",
"overallStatus": "warning",
"codexVersion": "0.143.0-alpha.29",
"checks": {
"app_server.status": {
"id": "app_server.status",
"category": "app-server",
"status": "ok",
"summary": "background server is not running",
"details": {
"control socket": "/home/roku/.codex/app-server-control/app-server-control.sock",
"daemon state dir": "/home/roku/.codex/app-server-daemon",
"mode": "ephemeral",
"pid file": "/home/roku/.codex/app-server-daemon/app-server.pid (missing)",
"settings": "/home/roku/.codex/app-server-daemon/settings.json (missing)",
"status": "not running",
"update-loop pid file": "/home/roku/.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/roku/.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/roku/.codex",
"config.toml": "/home/roku/.codex/config.toml",
"config.toml parse": "ok",
"cwd": "/home/roku/codex-consultant-20260517",
"enabled feature flags": "shell_tool, unified_exec, shell_snapshot, 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, 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": "none",
"feature flags enabled": "32",
"log dir": "/home/roku/.codex/log",
"mcp servers": "3",
"model": "gpt-5.5",
"model provider": "openai",
"sqlite home": "/home/roku/.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": "/home/roku/codex-consultant-20260517",
"selected git": "/usr/bin/git"
},
"remediation": null,
"durationMs": 24
},
"installation": {
"id": "installation",
"category": "install",
"status": "ok",
"summary": "installation looks consistent",
"details": {
"PATH codex #1": "/home/roku/.local/bin/codex",
"current executable": "/home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract/bin/codex",
"install context": "other (package /home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract, bin /home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract/bin, resources /home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract/codex-resources, path /home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract/codex-path)",
"managed by bun": "false",
"managed by npm": "false",
"managed package root": "not set"
},
"remediation": null,
"durationMs": 1
},
"mcp.config": {
"id": "mcp.config",
"category": "mcp",
"status": "ok",
"summary": "MCP configuration is locally consistent",
"details": {
"configured servers": "3",
"disabled servers": "0",
"stdio servers": "1",
"streamable_http servers": "2"
},
"remediation": null,
"durationMs": 3820
},
"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": 201
},
"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": 497
},
"runtime.provenance": {
"id": "runtime.provenance",
"category": "runtime",
"status": "ok",
"summary": "running local build on linux-x86_64",
"details": {
"commit": "unknown",
"current executable": "/home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract/bin/codex",
"install method": "other (package /home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract, bin /home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract/bin, resources /home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract/codex-resources, path /home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract/codex-path)",
"platform": "linux-x86_64",
"version": "0.143.0-alpha.29"
},
"remediation": null,
"durationMs": 0
},
"runtime.search": {
"id": "runtime.search",
"category": "search",
"status": "ok",
"summary": "search is OK (bundled)",
"details": {
"search command": "/home/roku/.local/share/codex/releases/rust-v0.143.0-alpha.29/extract/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": "Never",
"codex-linux-sandbox helper": "/home/roku/.codex/tmp/arg0/codex-arg0JoW3gL/codex-linux-sandbox",
"execve wrapper helper": "/home/roku/.codex/tmp/arg0/codex-arg0JoW3gL/codex-execve-wrapper",
"filesystem sandbox": "unrestricted",
"network sandbox": "enabled"
},
"remediation": null,
"durationMs": 0
},
"state.paths": {
"id": "state.paths",
"category": "state",
"status": "ok",
"summary": "state paths and databases are inspectable",
"details": {
"CODEX_HOME": "/home/roku/.codex (dir)",
"active rollout files": "12253 files, 18765070414 total bytes, 1531467 average bytes",
"archived rollout files": "0 files, 0 total bytes, 0 average bytes",
"goals DB": "/home/roku/.codex/goals_1.sqlite (file)",
"goals DB integrity": "ok",
"log DB": "/home/roku/.codex/logs_2.sqlite (file)",
"log DB integrity": "ok",
"log dir": "/home/roku/.codex/log (dir)",
"memories DB": "/home/roku/.codex/memories_1.sqlite (file)",
"memories DB integrity": "ok",
"sqlite home": "/home/roku/.codex (dir)",
"state DB": "/home/roku/.codex/state_5.sqlite (file)",
"state DB integrity": "ok"
},
"remediation": null,
"durationMs": 397
},
"state.rollout_db_parity": {
"id": "state.rollout_db_parity",
"category": "threads",
"status": "warning",
"summary": "rollout files and state DB thread inventory differ",
"details": {
"default model provider": "openai",
"rollout DB active files": "10000",
"rollout DB active rows": "12253",
"rollout DB archive mismatches": "skipped (scan cap reached)",
"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=10365, openai-https=1887, openai_http=1",
"rollout DB rows": "12253",
"rollout DB scan cap reached": "true",
"rollout DB scan errors": "0",
"rollout DB sources": "exec=7361, subagent:thread_spawn=2259, cli=1825, subagent:other=638, vscode=164, subagent:review=6",
"rollout DB stale rows": "skipped (scan cap reached)"
},
"issues": [
{
"severity": "warning",
"cause": "rollout scan was incomplete or found bad files",
"measured": "0 scan errors, 0 malformed names, scan cap reached: true",
"expected": "rollout directories are fully scannable",
"remedy": "Check file permissions and unexpected files under CODEX_HOME sessions.",
"fields": []
}
],
"remediation": null,
"durationMs": 259581
},
"system.environment": {
"id": "system.environment",
"category": "system",
"status": "ok",
"summary": "OS language C",
"details": {
"EDITOR": "set",
"LANG": "C.UTF-8",
"VISUAL": "set",
"os": "Ubuntu 24.4.0 (noble) [64-bit]",
"os language": "C",
"os type": "Ubuntu",
"os version": "24.4.0"
},
"remediation": null,
"durationMs": 6
},
"terminal.env": {
"id": "terminal.env",
"category": "terminal",
"status": "ok",
"summary": "terminal metadata was detected",
"details": {
"COLORTERM": "truecolor",
"DISPLAY": "present",
"WAYLAND_DISPLAY": "present",
"WSL_DISTRO_NAME": "present",
"WSL_INTEROP": "present",
"WT_SESSION": "present",
"color output": "disabled (stdout is not a terminal)",
"effective locale": "C.UTF-8",
"stderr is terminal": "true",
"stdin is terminal": "true",
"stdout is terminal": "false",
"terminal": "Windows Terminal",
"terminal size": "225x62"
},
"remediation": null,
"durationMs": 0
},
"terminal.title": {
"id": "terminal.title",
"category": "title",
"status": "ok",
"summary": "terminal title configured",
"details": {
"terminal title activity": "true",
"terminal title items": "activity, thread-title",
"terminal title source": "configured"
},
"remediation": null,
"durationMs": 0
},
"updates.status": {
"id": "updates.status",
"category": "updates",
"status": "ok",
"summary": "update configuration is locally consistent",
"details": {
"cached latest version": "0.142.4",
"check for update on startup": "true",
"last checked at": "2026-06-29T13:22:16.437329836Z",
"latest version": "0.142.4",
"latest version status": "current version is not older",
"update action": "manual or unknown",
"version cache": "/home/roku/.codex/version.json"
},
"remediation": null,
"durationMs": 145
}
}
}
What issue are you seeing?
/feedback is documented and presented as a slash command for sending feedback/logs to the Codex maintainers, but the UX around inline text after the command is misleading.
If I type /fee and press Tab, Codex autocompletes it to /feedback , including a trailing space. From a user's point of view, that trailing space strongly suggests that the command accepts text after it, for example:
/feedback Non-Japanese characters appearing in Japanese responses in the Codex
The /feedback token is also shown in blue, which makes it look like the slash command was recognized correctly.
However, instead of clearly opening the feedback UI, rejecting the inline text, or using the inline text as the initial feedback body, the input can be treated like an ordinary model prompt. The assistant may then respond with something like "Feedback received" or otherwise acknowledge it conversationally. That creates a false sense that the feedback was submitted successfully, even though the user did not go through a clear feedback submission flow.
This is a serious UX footgun because developers who rarely use /feedback may try to submit valuable feedback this way once, receive an apparently successful assistant acknowledgement, and then never realize that the message may not have reached the intended feedback channel.
What steps can reproduce the bug?
Uploaded thread: 019f135d-dc73-7cd3-97d3-d40788c7bcca
What is the expected behavior?
One of the following should happen:
- If
/feedbackdoes not accept inline arguments, then submitting/feedback some textshould show a clear error before sending, preferably in red, and preserve the typed text in the TUI so the user can select and copy it.
- If inline arguments are acceptable, then the feedback flow should open and the text after
/feedbackshould be pre-filled into the feedback body.
- If
/feedbackis recognized as a slash command, it should not also be routed to the model as a normal prompt. The assistant should not produce a conversational acknowledgement such as "I received your feedback", because that looks like a successful submission confirmation.
- The visual styling should match behavior. If
/feedbackis shown as a recognized command, pressing Enter should execute the feedback command path, not silently fall back to ordinary prompt handling.
Additional information
Related but not exact existing issues found during duplicate search:
- #20497:
/feedback ...is treated as normal chat content in a safety-blocked conversation. - #27583: mentions that
/feedbacklooked like a normal Codex conversation and did not clearly show a feedback submission dialog.
This issue is specifically about the slash-command autocomplete and inline-argument UX: /fee + Tab produces /feedback with a trailing space, which strongly implies that the user should type something after it, but that text is not clearly handled as feedback content.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗