macOS: CLI 0.154.0 experimental capability breaks bundled Messages and Computer History MCP startup
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of Codex CLI is running?
codex-cli 0.154.0, installed through Homebrew. This was the latest stable release when checked on September 10, 2026.
What subscription do you have?
ChatGPT Pro 20x.
Which model were you using?
gpt-6-astra. Both servers fail during startup, before I submit a prompt.
What platform is your computer?
Darwin 25.6.0 arm64 arm, macOS 26.6.0, Apple Silicon.
What terminal emulator and version are you using (if applicable)?
Ghostty 1.3.1. Also reproduced in a diagnostic PTY.
Codex doctor report
Output from codex doctor --json, with my username, project path/name, and unrelated thread IDs redacted. Doctor reports that MCP configuration is locally consistent, but both plugins fail to connect.
Full doctor report, with personal identifiers redacted
{
"schemaVersion": 1,
"generatedAt": "1789025821s since unix epoch",
"overallStatus": "warning",
"codexVersion": "0.154.0",
"checks": {
"app_server.status": {
"id": "app_server.status",
"category": "app-server",
"status": "ok",
"summary": "background server is not running",
"details": {
"control socket": "$HOME/.codex/app-server-control/app-server-control.sock",
"daemon state dir": "$HOME/.codex/app-server-daemon",
"mode": "ephemeral",
"pid file": "$HOME/.codex/app-server-daemon/app-server.pid (missing)",
"settings": "$HOME/.codex/app-server-daemon/settings.json (missing)",
"status": "not running",
"update-loop pid file": "$HOME/.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/.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/.codex",
"active thread overrides": "not inspected",
"config.toml": "$HOME/.codex/config.toml",
"config.toml parse": "ok",
"configuration load ms": "6",
"configuration scope": "invocation config, including cloud-managed policy",
"cwd": "$WORKSPACE",
"enabled feature flags": "shell_tool, view_image, sleep_tool, unified_exec, unified_exec_tty, unified_exec_zsh_fork, shell_snapshot, content_item_kinds, code_mode_host, terminal_resize_reflow, sqlite, memories, chronicle, hooks, enable_request_compression, unbounded_connection_retries, multi_agent, multi_agent_v2, apps, tool_search_always_defer_mcp_tools, tool_suggest, plugins, in_app_browser, in_app_chat, in_app_dictation, in_app_local_automation, 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, context_management, collaboration_modes, tool_call_mcp_elicitation, auth_elicitation, personality, fast_mode, realtime_conversation, tui_app_server, prevent_idle_sleep, remote_compaction_v2, compaction_image_budget, workspace_dependencies",
"feature flag overrides": "memories=true, chronicle=true, multi_agent_v2=true, context_management=true, realtime_conversation=true, prevent_idle_sleep=true",
"feature flags enabled": "54",
"log dir": "$HOME/.codex/log",
"mcp servers": "3",
"model": "gpt-6-astra",
"model provider": "openai",
"sqlite home": "$HOME/.codex"
},
"remediation": null,
"durationMs": 0
},
"desktop.app.version": {
"id": "desktop.app.version",
"category": "desktop",
"status": "ok",
"summary": "the desktop application is installed",
"details": {
"log directory": "$HOME/Library/Logs/com.openai.codex",
"running": "true",
"version": "26.903.61454"
},
"remediation": null,
"durationMs": 0
},
"desktop.app_server.handshake": {
"id": "desktop.app_server.handshake",
"category": "desktop",
"status": "ok",
"summary": "the desktop app-server initialized successfully",
"details": {},
"remediation": null,
"durationMs": 0
},
"desktop.security.enforcement": {
"id": "desktop.security.enforcement",
"category": "desktop",
"status": "ok",
"summary": "the desktop application passed available macos security assessments",
"details": {
"gatekeeper": "accepted"
},
"remediation": null,
"durationMs": 0
},
"git.environment": {
"id": "git.environment",
"category": "git",
"status": "ok",
"summary": "git executable found; execution not verified",
"details": {
".git entry": "directory",
"PATH git #1": "/opt/homebrew/bin/git",
"PATH git #2": "/usr/bin/git",
"PATH git #3": "/opt/homebrew/Library/Homebrew/shims/shared/git",
"PATH git entries": "3",
"git execution": "not inspected (PATH helpers are not executed)",
"repo detected": "true",
"repo root": "$WORKSPACE",
"selected git": "/opt/homebrew/bin/git"
},
"remediation": null,
"durationMs": 0
},
"installation": {
"id": "installation",
"category": "install",
"status": "ok",
"summary": "installation looks consistent",
"details": {
"PATH codex #1": "/opt/homebrew/bin/codex",
"current executable": "/opt/homebrew/bin/codex",
"install context": "brew (package /opt/homebrew/Caskroom/codex/0.154.0, bin /opt/homebrew/Caskroom/codex/0.154.0/bin, resources /opt/homebrew/Caskroom/codex/0.154.0/codex-resources, path /opt/homebrew/Caskroom/codex/0.154.0/codex-path)",
"managed by Vite+": "false",
"managed by bun": "false",
"managed by npm": "false",
"managed by pnpm": "false",
"managed package root": "not set"
},
"remediation": null,
"durationMs": 2
},
"mcp.config": {
"id": "mcp.config",
"category": "mcp",
"status": "ok",
"summary": "MCP configuration is locally consistent",
"details": {
"configured servers": "3",
"disabled servers": "1",
"stdio servers": "2",
"streamable_http servers": "1"
},
"remediation": null,
"durationMs": 204
},
"network.env": {
"id": "network.env",
"category": "network",
"status": "ok",
"summary": "network-related environment looks readable",
"details": {
"managed proxy": "not configured",
"proxy env vars": "none",
"respect system proxy": "disabled",
"system proxy": "direct"
},
"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 inference URL": "https://chatgpt.com/backend-api/<redacted> reachable (HTTP 405)",
"desktop assets CDN": "https://chatgpt.com/backend-api/<redacted> reachable (HTTP 200)",
"reachability mode": "ChatGPT auth"
},
"remediation": null,
"durationMs": 239
},
"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",
"provider name": "OpenAI",
"proxy env vars": "none",
"reasoning header": "false",
"server model present": "false",
"supports websockets": "true",
"wire API": "responses"
},
"remediation": null,
"durationMs": 1084
},
"runtime.provenance": {
"id": "runtime.provenance",
"category": "runtime",
"status": "ok",
"summary": "running brew on macos-aarch64",
"details": {
"commit": "unknown",
"current executable": "/opt/homebrew/bin/codex",
"install method": "brew (package /opt/homebrew/Caskroom/codex/0.154.0, bin /opt/homebrew/Caskroom/codex/0.154.0/bin, resources /opt/homebrew/Caskroom/codex/0.154.0/codex-resources, path /opt/homebrew/Caskroom/codex/0.154.0/codex-path)",
"platform": "macos-aarch64",
"version": "0.154.0"
},
"remediation": null,
"durationMs": 0
},
"runtime.search": {
"id": "runtime.search",
"category": "search",
"status": "ok",
"summary": "search command found (bundled); execution not verified",
"details": {
"search command": "/opt/homebrew/Caskroom/codex/0.154.0/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",
"denied-read glob rules": "0",
"denied-read rules": "0",
"execve wrapper helper": "$HOME/.codex/tmp/arg0/codex-arg07q3RLz/codex-execve-wrapper",
"filesystem sandbox": "restricted",
"glob scan max depth": "unbounded",
"managed filesystem source": "none",
"network sandbox": "enabled"
},
"remediation": null,
"durationMs": 0
},
"security.endpoint": {
"id": "security.endpoint",
"category": "security",
"status": "ok",
"summary": "no supported endpoint protection detected",
"details": {
"endpoint products": "none detected"
},
"remediation": null,
"durationMs": 21
},
"state.paths": {
"id": "state.paths",
"category": "state",
"status": "ok",
"summary": "state paths and databases are inspectable",
"details": {
"CODEX_HOME": "$HOME/.codex (dir)",
"active rollout files": "679 files, 1349358868 total bytes, 1987273 average bytes",
"archived rollout files": "4707 files, 3521955952 total bytes, 748237 average bytes",
"goals DB": "$HOME/.codex/goals_1.sqlite (file)",
"goals DB integrity": "ok",
"log DB": "$HOME/.codex/logs_2.sqlite (file)",
"log DB integrity": "ok",
"log dir": "$HOME/.codex/log (dir)",
"memories DB": "$HOME/.codex/memories_1.sqlite (file)",
"memories DB integrity": "ok",
"queue DB": "$HOME/.codex/queue_1.sqlite (file)",
"queue DB integrity": "ok",
"sqlite home": "$HOME/.codex (dir)",
"state DB": "$HOME/.codex/state_5.sqlite (file)",
"state DB integrity": "ok",
"thread history DB": "$HOME/.codex/thread_history_1.sqlite (file)",
"thread history DB integrity": "ok"
},
"remediation": null,
"durationMs": 5917
},
"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": "670",
"rollout DB active rows": "665",
"rollout DB archive mismatches": "0",
"rollout DB archived files": "4707",
"rollout DB archived rows": "4707",
"rollout DB duplicate DB paths": "0",
"rollout DB duplicate rollout thread id sample": [
"<redacted-thread-id>",
"<redacted-thread-id>",
"<redacted-thread-id>",
"<redacted-thread-id>"
],
"rollout DB duplicate rollout thread ids": "4",
"rollout DB malformed file names": "0",
"rollout DB missing active rows": "5",
"rollout DB missing active sample": [
"$HOME/.codex/sessions/2026/09/08/rollout-2026-09-08T12-45-59-<redacted-thread-id>.jsonl",
"$HOME/.codex/sessions/2026/09/08/rollout-2026-09-08T17-53-41-<redacted-thread-id>.jsonl",
"$HOME/.codex/sessions/2026/09/07/rollout-2026-09-07T13-24-13-<redacted-thread-id>.jsonl",
"$HOME/.codex/sessions/2026/09/04/rollout-2026-09-04T00-04-00-01a067ca-e94f-7d61-84cd-ffe0af142dd1_01a067cc-597a-7a11-ac09-1b2bf1738664.jsonl",
"$HOME/.codex/sessions/2026/09/04/rollout-2026-09-04T00-02-26-<redacted-thread-id>.jsonl"
],
"rollout DB missing archived rows": "0",
"rollout DB model providers": "openai=4149, proxx=1206, opencodex=11, cliproxyapi=4, kimi=2",
"rollout DB rows": "5372",
"rollout DB scan cap reached": "false",
"rollout DB scan error sample": [
"$HOME/.codex/sessions/2025/09/06/rollout-2025-09-06T01-30-52-<redacted-thread-id>.jsonl (rollout at $HOME/.codex/sessions/2025/09/06/rollout-2025-09-06T01-30-52-<redacted-thread-id>.jsonl has no usable header record)",
"$HOME/.codex/sessions/2025/09/05/rollout-2025-09-05T12-12-34-<redacted-thread-id>.jsonl (rollout at $HOME/.codex/sessions/2025/09/05/rollout-2025-09-05T12-12-34-<redacted-thread-id>.jsonl has no usable header record)",
"$HOME/.codex/sessions/2025/09/04/rollout-2025-09-04T02-13-50-<redacted-thread-id>.jsonl (rollout at $HOME/.codex/sessions/2025/09/04/rollout-2025-09-04T02-13-50-<redacted-thread-id>.jsonl has no usable header record)",
"$HOME/.codex/sessions/2025/09/04/rollout-2025-09-04T02-16-18-<redacted-thread-id>.jsonl (rollout at $HOME/.codex/sessions/2025/09/04/rollout-2025-09-04T02-16-18-<redacted-thread-id>.jsonl has no usable header record)",
"$HOME/.codex/sessions/2025/09/04/rollout-2025-09-04T02-52-04-<redacted-thread-id>.jsonl (rollout at $HOME/.codex/sessions/2025/09/04/rollout-2025-09-04T02-52-04-<redacted-thread-id>.jsonl has no usable header record)"
],
"rollout DB scan errors": "9",
"rollout DB sources": "subagent:thread_spawn=1692, cli=1004, exec=961, vscode=850, subagent:review=711, subagent:other=153, unknown=1",
"rollout DB stale rows": "0"
},
"issues": [
{
"severity": "warning",
"cause": "rollout files are missing from the state DB",
"measured": "5 active, 0 archived",
"expected": "every rollout file has a matching threads row",
"remedy": null,
"fields": []
},
{
"severity": "warning",
"cause": "duplicate thread inventory entries found",
"measured": "4 duplicate rollout thread ids, 0 duplicate DB paths",
"expected": "one rollout path and thread id per thread",
"remedy": "Attach the doctor report to a bug report so support can inspect samples.",
"fields": []
},
{
"severity": "warning",
"cause": "rollout scan was incomplete or found bad files",
"measured": "9 scan errors, 0 malformed names, scan cap reached: false",
"expected": "rollout directories are fully scannable",
"remedy": "Check file permissions and unexpected files under CODEX_HOME sessions.",
"fields": []
}
],
"remediation": null,
"durationMs": 2171
},
"system.disk": {
"id": "system.disk",
"category": "disk",
"status": "ok",
"summary": "sufficient free disk space (396.7 GiB)",
"details": {
"CODEX_HOME available": "396.7 GiB",
"failure threshold": "1.0 GiB",
"warning threshold": "5.0 GiB",
"worktree available": "396.7 GiB"
},
"remediation": null,
"durationMs": 0
},
"system.environment": {
"id": "system.environment",
"category": "system",
"status": "ok",
"summary": "OS language en-JP",
"details": {
"EDITOR": "set",
"GH_PAGER": "set",
"GIT_PAGER": "set",
"LANG": "en_JP.UTF-8",
"LC_ALL": "en_US.UTF-8",
"LC_CTYPE": "C.UTF-8",
"LESS": "set",
"PAGER": "set",
"VISUAL": "not set",
"os": "Mac OS 26.6.0 [64-bit]",
"os language": "en-JP",
"os type": "Mac OS",
"os version": "26.6.0"
},
"remediation": null,
"durationMs": 5
},
"terminal.env": {
"id": "terminal.env",
"category": "terminal",
"status": "ok",
"summary": "terminal metadata was detected",
"details": {
"COLORTERM": "truecolor",
"NO_COLOR": "1",
"TERMINFO": "/Applications/Ghostty.app/Contents/Resources/terminfo (dir)",
"TERM_PROGRAM": "ghostty",
"color output": "disabled (NO_COLOR)",
"effective locale": "en_US.UTF-8",
"stderr is terminal": "false",
"stdin is terminal": "false",
"stdout is terminal": "false",
"terminal": "Ghostty",
"terminal size": "80x24",
"terminal version": "1.3.1"
},
"remediation": null,
"durationMs": 7
},
"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": "<project>",
"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.154.0",
"check for update on startup": "true",
"last checked at": "2026-09-10T07:19:26.727076Z",
"latest version": "0.154.0",
"latest version status": "current version is not older",
"update action": "brew upgrade --cask codex",
"version cache": "$HOME/.codex/version.json"
},
"remediation": null,
"durationMs": 182
}
}
}
What issue are you seeing?
Messages and Computer History fail to start with Codex CLI 0.154.0. Both work with the desktop app's bundled CLI 0.153.4 and the same installed helpers.
MCP client for `computer-history` failed to start: MCP startup failed: handshaking with MCP server failed: JSON-RPC error: -32603: Internal error: The data couldn’t be read because it isn’t in the correct format.
MCP client for `messages` failed to start: MCP startup failed: handshaking with MCP server failed: JSON-RPC error: -32603: Internal error: The data couldn’t be read because it isn’t in the correct format.
MCP startup incomplete (failed: computer-history, messages)
Installed versions:
- Desktop app:
26.903.61454, build8378. - Computer Use helper:
26.902.1000968, build1000968. messages@openai-bundledandcomputer-history@openai-bundled:1.0.1000968.
Both plugins use SkyComputerUseClient.
What steps can reproduce the bug?
- Install and enable Messages and Computer History through the desktop app, using the helper version above.
- Start Codex CLI 0.154.0.
- Both MCP servers fail to initialize before any prompt is submitted.
To reproduce the handshake failure directly, start either helper:
client="${CODEX_HOME:-$HOME/.codex}/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient"
"$client" messages mcp
# Repeat separately with: "$client" computer-history mcp
Paste the following JSON as one line and press Enter. This is the initialization request captured from CLI 0.154.0:
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{"experimental":{"codex/auth-change":{}},"elicitation":{"form":{},"url":{}}},"clientInfo":{"name":"codex-mcp-client","title":"Codex","version":"0.154.0"}}}
Both helpers return:
{"error":{"code":-32603,"data":{"detail":"The data couldn’t be read because it isn’t in the correct format."},"message":"Internal error: The data couldn’t be read because it isn’t in the correct format."},"id":0,"jsonrpc":"2.0"}
Start a fresh helper process for each variation below. Change only capabilities.experimental:
| Value | Messages | Computer History |
|---|---|---|
{"codex/auth-change":{}} |
Error -32603 | Error -32603 |
{"example/unknown":{}} |
Error -32603 | Error -32603 |
{} |
Initializes | Initializes |
| Field omitted | Initializes | Initializes |
These tests make no model requests and read no messages or history.
Removing elicitation while keeping codex/auth-change still fails. The CLI flag --disable auth_elicitation does not remove codex/auth-change and does not fix the failure.
With the bundled CLI 0.153.4, /mcp reports Computer History connected with 5 tools and Messages connected with 6 tools.
What is the expected behavior?
Both bundled plugins should connect with the latest stable CLI.
The helpers should accept experimental capabilities they do not support and ignore them. An entry such as example/unknown: {} should not prevent startup. The fix should handle future capability additions without exceptions for specific plugin names.
Additional information
PR #43428, merged September 7, adds codex/auth-change to stdio MCP initialization.
In the inspected source:
codex-rs/codex-mcp/src/connection_manager.rssupplies an auth-change receiver for stdio connections when an auth manager is present.start_server_taskincodex-rs/codex-mcp/src/rmcp_client.rsthen addscodex/auth-changetocapabilities.experimental. There is no per-server switch for this, and it is independent ofauth_elicitation.
The tests show that both codex/auth-change: {} and an unrelated example/unknown: {} trigger the error. This suggests the shared helper cannot decode these experimental capability entries. I have not inspected its parser, so the exact decoding defect still needs investigation.
A regression test should initialize both helpers with an unknown experimental capability containing {} and check that initialization succeeds. Auth-change notifications should still require server opt-in.
I searched the issue tracker for the error, both plugin names, codex/auth-change, and 0.154.0 MCP. I did not find a matching report.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure with codex-cli 0.154.0 on Apple Silicon macOS using the bundled Messages and Computer History MCP servers, then inspect the startup behavior and logs under $HOME/.codex/log. Compare the experimental capability path with the MCP configuration reported by codex doctor --json; done means both bundled servers complete startup without failing before a prompt.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, rust
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 45/100