Skip to content

Codex Desktop crashes on resume: sends unsupported thread_tools feature to bundled CLI #29361

Open

Description

@mvisl

Summary

Codex Desktop became effectively unusable on macOS because opening/resuming a thread repeatedly crashes the app-server/worker with SIGKILL. The most consistent root error is that the Desktop app sends a feature override named thread_tools, but the bundled CLI does not recognize that feature key.

Environment

  • Codex Desktop: 26.616.51431 (CFBundleVersion 4212)
  • Bundled CLI: codex-cli 0.142.0-alpha.6
  • Platform: macOS, Apple Silicon MacBook Air
  • Active workflow: Codex Desktop app, local project, Figma MCP integration enabled
  • Date observed: 2026-06-21

Main crash

The app repeatedly shows the generic crash screen:

An error has occurred
Codex crashed with the following error:
(code=null, signal=SIGKILL).

The relevant app log line:

target=codex_features
app_server.request ... otel.name="thread/resume" client_name="Codex Desktop" client_version="26.616.51431":
load_with_cli_overrides: unknown feature key in config: thread_tools

Local checks

  • thread_tools was not present in ~/.codex/config.toml.
  • Resetting ~/Library/Application Support/Codex did not fix the issue.
  • codex features list did not include thread_tools.
  • The crash reproduced immediately after restarting the app and resuming the thread.

Likely cause

The Desktop app appears to send an unsupported feature override during thread/resume.

In /Applications/Codex.app/Contents/Resources/app.asar, I found a feature mapping containing:

Lu=`thread_tools`
...
{gateName:`2395575782`,featureKey:Lu}

I also found base instruction construction with:

threadToolsEnabled:!0

This looks like a Desktop build / bundled CLI mismatch: Desktop enables or forwards thread_tools, while the bundled CLI feature parser rejects it.

Workaround tested locally

I backed up the app bundle file:

/Applications/Codex.app/Contents/Resources/app.asar.bak-20260621-thread-tools

Then patched the current app.asar byte-for-byte:

  • replaced `thread_tools` with a valid same-length feature key `tool_suggest`
  • replaced threadToolsEnabled:!0 with threadToolsEnabled:!1

After that patch, the thread_tools crash stopped.

Secondary issue after reset

After resetting app state, a different crash appeared from the Figma MCP auth path:

worker quit with fatal: Transport channel closed,
when AuthRequired(AuthRequiredError {
  www_authenticate_header: "Bearer resource_metadata=\"https://mcp.figma.com/.well-known/oauth-protected-resource\", scope=\"mcp:connect\", authorization_uri=\"https://api.figma.com/.well-known/oauth-authorization-server\""
})
target="rmcp::transport::worker"

That may be a separate auth recovery issue, but the original thread_tools crash made the Desktop app unusable before the Figma auth problem was visible.

Impact

  • Existing Codex Desktop thread cannot be used reliably.
  • Repeated SIGKILL crash screens occur during normal work.
  • Resetting local app state does not fix the thread_tools mismatch.
  • The only effective workaround I found was patching the app bundle manually, which is not a reasonable user workaround.

Expected behavior

Codex Desktop should not send unknown feature keys to the bundled CLI, or the bundled CLI should tolerate/ignore unknown Desktop feature gates instead of crashing the worker/app-server flow.

Log locations checked

Per Codex troubleshooting docs:

~/Library/Logs/com.openai.codex/YYYY/MM/DD
~/.codex/sessions
~/.codex/archived_sessions

I can provide more log excerpts if needed, after reviewing them for sensitive data.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    app-serverIssues involving app server protocol or interfaces
    on Jun 21, 2026
  2. mvisl commented on Jun 21, 2026

    @mvisl
    Author

    Additional crash observed after creating this issue via the GitHub connector.

    The app crashed again with a different error:

    (code=null, signal=SIGKILL).
    Most recent error: {"timestamp":"2026-06-21T20:33:11.715149Z","level":"WARN","fields":{"message":"metrics counter [codex.skill.injected] failed: tag value contains invalid characters: github:github"},"target":"codex_otel::events::session_telemetry"}
    

    This looks like another Desktop/runtime bug: a plugin skill name containing : (github:github) is being used as a telemetry tag value, but the metrics/tag validator rejects it. The rejection then surfaces as another crash screen instead of being swallowed as non-fatal telemetry failure.

    This happened in the same Desktop session while using the GitHub plugin to submit the bug report above.

  3. mvisl commented on Jun 21, 2026

    @mvisl
    Author

    Another crash observed in the same session, this time from the skill loader while processing skill interface icons:

    (code=null, signal=SIGKILL).
    Most recent error: {"timestamp":"2026-06-21T20:42:45.419944Z","level":"WARN","fields":{"message":"ignoring interface.icon_small: icon path with '..' must resolve under plugin assets/"},"target":"codex_core_skills::loader"}
    {"timestamp":"2026-06-21T20:42:45.419955Z","level":"WARN","fields":{"message":"ignoring interface.icon_large: icon path with '..' must resolve under plugin assets/"},"target":"codex_core_skills::loader"}
    

    Local inspection found many temporary plugin candidates under ~/.codex/.tmp/plugins/plugins/... with agents/openai.yaml values such as:

    interface:
      icon_small: "../../assets/logo.svg"
      icon_large: "../../assets/logo.svg"

    Examples included temporary candidates such as coderabbit, brighthire, twilio-developer-kit, morningstar, teams, etc. The paths are invalid under the current loader rule, but this should remain a non-fatal warning. Instead, it surfaced as yet another crash screen.

    Temporary local mitigation: moved ~/.codex/.tmp/plugins aside to a timestamped backup so the loader stops scanning those temporary candidates.

  4. mvisl commented on Jun 21, 2026

    @mvisl
    Author

    The skill-loader icon-path crash persisted after moving the temporary plugin cache out of the way.

    Latest crash screen:

    (code=null, signal=SIGKILL).
    Most recent error: {"timestamp":"2026-06-21T21:07:55.788148Z","level":"WARN","fields":{"message":"ignoring interface.icon_large: icon path with '..' must resolve under plugin assets/"},"target":"codex_core_skills::loader"}
    

    This is still a warning-level loader event (level":"WARN", message starts with ignoring ...) but the Desktop app presents it as a fatal crash. From the user's perspective, the app is unusable: repeated unrelated warning/error paths keep surfacing as SIGKILL crash screens.

    At this point the observed sequence in one session is:

    1. thread_tools feature mismatch on thread resume.
    2. Figma MCP OAuth AuthRequired after app-state reset.
    3. Telemetry crash on skill tag value github:github.
    4. Skill loader icon path warnings (interface.icon_small / interface.icon_large) surfacing as fatal crash screens.

    This looks like a broader Codex Desktop/runtime regression where recoverable warnings or integration/config problems are not isolated and instead crash the session.

  5. mvisl commented on Jun 21, 2026

    @mvisl
    Author

    Another independent crash screen in the same Desktop session:

    (code=null, signal=SIGKILL).
    Most recent error: {"timestamp":"2026-06-21T21:33:59.516347Z","level":"WARN","fields":{"message":"could not find callback for Integer(7)"},"target":"codex_app_server::outgoing_message"}
    

    This appears to be an app-server outgoing message / callback routing issue. Again, the event is logged as WARN, but the Desktop UI shows it as a fatal crash.

    This further supports that the current Desktop build is not isolating recoverable app-server/plugin/MCP/telemetry warnings from the main session. The user keeps hitting unrelated SIGKILL crash screens during normal use.

  6. mvisl commented on Jun 21, 2026

    @mvisl
    Author

    Latest state from app logs after the UI started rendering mostly ? characters in the crash window.

    The screenshot itself is no longer readable: the crash dialog renders repeated red ? / punctuation instead of a usable error message. Pulling from the latest macOS app log shows the actual new failure cause.

    Log file:

    ~/Library/Logs/com.openai.codex/2026/06/21/codex-desktop-3687815b-2571-43bb-8155-dbbf73f78002-22938-t0-i1-214353-0.log
    

    Relevant lines:

    2026-06-21T21:43:53.874Z info [AppServerConnection] Current reported app-server version: currentVersion=0.142.0-alpha.6 hostId=local
    2026-06-21T21:43:54.925Z info [electron-message-handler] Features enabled enabledFeatures="enable_request_compression, remote_compaction_v2, collaboration_modes, personality, request_rule, image_generation, resize_all_images, image_detail_original, workspace_dependencies, guardian_approval, apply_patch_streaming_events, workspace_owner_usage_nudge, tool_suggest, enable_mcp_apps, apps, plugins, auth_elicitation, tool_call_mcp_elicitation"
    2026-06-21T21:48:49.052Z info [AppServerConnection] app_server_connection.closed code=null connectionId=1 hasReason=true reason="{\"timestamp\":\"2026-06-21T21:43:55.506841Z\",\"level\":\"WARN\",\"fields\":{\"message\":\"configured non-curated plugin no longer exists in discovered marketplaces during cache refresh\",\"plugin\":\"documents\",\"marketplace\":\"openai-primary-runtime\"},\"target\":\"codex_core_plugins::loader\"}\n{\"timestamp\":\"2026-06-21T21:43:55.506866Z\",\"level\":\"WARN\",\"fields\":{\"message\":\"configured non-curated plugin no longer exists in discovered marketplaces during cache refresh\",\"plugin\":\"pdf\",\"marketplace\":\"openai-primary-runtime\"},\"target\":\"codex_core_plugins::loader\"}\n{\"timestamp\":\"2026-06-21T21:43:55.506875Z\",\"level\":\"WARN\",\"fields\":{\"message\":\"configured non-curated plugin no longer exists in discovered marketplaces during cache refresh\",\"plugin\":\"presentations\",\"marketplace\":\"openai-primary-runtime\"},\"target\":\"codex_core_plugins::loader\"}\n{\"timestamp\":\"2026-06-21T21:43:55.506882Z\",\"level\":\"WARN\",\"fields\":{\"message\":\"configured non-curated plugin no longer exists in discovered marketplaces during cache refresh\",\"plugin\":\"spreadsheets\",\"marketplace\":\"openai-primary-runtime\"},\"target\":\"codex_core_plugins::loader\"}" signal=SIGKILL transport=stdio
    2026-06-21T21:48:49.063Z error [AppServerConnection] Codex CLI process exited classifiedAsExpected=false code=null connectionId=1 signal=SIGKILL transport=stdio
    2026-06-21T21:48:49.064Z error [AppServerConnection] fatal_error_broadcasted errorMessage="  (code=null, signal=SIGKILL).\nMost recent error: {\"timestamp\":\"2026-06-21T21:43:55.506841Z\",\"level\":\"WARN\",\"fields\":{\"message\":\"configured non-curated plugin no longer exists in discovered marketplaces during cache refresh\",\"plugin\":\"documents\",\"marketplace\":\"openai-primary-runtime\"},\"target\":\"codex_core_plugins::loader\"}\n..."
    

    Additional UI bug observed in the same log:

    2026-06-21T21:50:06.321Z warning [electron-message-handler] Failed to send message from view errorMessage="Error invoking remote method 'codex_desktop:message-from-view': Error: \"open-config-toml\" is not implemented in Electron." message={"type":"open-config-toml"} type=open-config-toml
    

    So the current failure set now includes:

    • Plugin cache refresh warns that configured non-curated plugins (documents, pdf, presentations, spreadsheets) no longer exist in discovered marketplaces.
    • Those WARN entries close the app-server with SIGKILL and are broadcast as a fatal crash.
    • The crash dialog can become unreadable, rendering repeated ? characters instead of a useful message.
    • The crash dialog's Open Config.toml action is wired to open-config-toml, but that action is not implemented in Electron.

    At this point the Desktop app is effectively unusable even after the earlier local thread_tools mitigation and Figma MCP re-login.

  7. JaredTheHammer commented on Aug 25, 2026

    @JaredTheHammer

    This behavior also reproduced on Windows with Codex Desktop 26.818.8289.0 and bundled app-server 0.149.0-alpha.4.3: the shell emitted unknown feature key in config: thread_tools, and the app-server exited with 0xFFFFFFFF during recovery. The local config.toml did not contain thread_tools; the key was injected by the packaged desktop shell. It did not recur during the final verified reconnect after local projection repair, but the compatibility defect remains a separate upstream concern.

  8. fivepeople-art commented on Sep 20, 2026

    @fivepeople-art

    Additional report from macOS: the unsupported thread_tools session flag is still visible as a configuration warning in desktop build 26.915.31945 (CFBundleVersion 9922).

    Environment:

    • Desktop application installed as ChatGPT.app, bundle identifier com.openai.codex
    • Bundled engine: codex-cli 0.155.0-alpha.9.2
    • Separately installed CLI: codex-cli 0.155.1

    Observed in Settings > Configuration > Agent defaults:

    Codex is ignoring 2 unrecognized configuration settings. Check for typos or deprecated settings.
    session-flags: features.thread_tools is ignored.
    user (.../config.toml): network_access is ignored.
    

    The unrelated top-level network_access entry was subsequently removed from the user configuration. The configuration parses successfully and the bundled engine's features list command exits successfully. The desktop warning after reloading has not yet been verified.

    Checks specific to thread_tools:

    • It is absent from the user's config.toml.
    • It is absent from the supported feature list reported by both the bundled engine and the separately installed CLI.
    • Read-only inspection of the installed app bundle found references to defaultFeatureOverrides?.thread_tools and threadToolsEnabled.
    • No app bundle patch was made during this investigation.

    This report confirms a settings warning, not the SIGKILL/crash symptom described in the original issue. The precise activation trigger has not been established, and these observations alone do not prove a crash cause.

    Expected: desktop-provided session feature flags should be compatible with the bundled engine, or app-only flags should be filtered before configuration validation, so users are not warned to fix a flag absent from their configuration.

    Please check whether this newer-build warning is the same compatibility issue. No private logs, session transcripts, screenshots, or user-specific filesystem paths are attached.

  9. indyhttps commented on Sep 20, 2026

    @indyhttps

    Additional Windows report, observed on 2026-09-20: the unsupported thread_tools session flag still appears as a configuration warning in Codex Desktop.

    Environment:

    • Windows 11 x64
    • Desktop package: 26.915.4065.0
    • Running app-server / bundled engine reported version: codex-cli 0.155.0-alpha.9.2

    Warning reported by the user in Settings:

    Codex is ignoring 1 unrecognized configuration setting. Check for typos or deprecated settings.
    session-flags: `features.thread_tools` is ignored.
    

    Read-only local checks:

    • The user's config.toml contains no thread_tools entry.
    • The engine's features list command completed successfully and does not list thread_tools.
    • Inspection of the installed desktop bundle found defaultFeatureOverrides?.thread_tools, threadToolsEnabled, and the thread_tools feature key.
    • The desktop log confirms the running app-server version above.
    • No configuration changes or app bundle patches were applied.

    These findings point to a desktop/session-feature compatibility problem rather than a typo the user can remove from their configuration. This report concerns the Settings warning only; it does not establish a crash or a causal link to the crashes in the original issue.

    Expected: desktop-supplied session flags should be compatible with the bundled engine, or app-only flags should be filtered before configuration validation. Users should not be prompted to correct settings they did not add.

    The user explicitly asked Codex to report this to OpenAI and objected to consuming their token/usage allowance troubleshooting a defect in OpenAI's own application. Please address the underlying compatibility issue and provide a support/reporting route that does not require further usage-consuming diagnostics from affected users.

    No private logs, screenshots, account identifiers, local usernames/paths, or conversation transcripts are attached.

  10. sd68515 commented on Sep 21, 2026

    @sd68515

    I can confirm this issue on Windows as well.

    Environment:

    • ChatGPT/Codex Desktop MSIX package: OpenAI.Codex 26.915.4065.0
    • Bundled CLI: codex-cli 0.155.0-alpha.9.2
    • Platform: Windows

    The Desktop app repeatedly shows:

    Codex is ignoring 1 unrecognized configuration setting.
    session-flags: features.thread_tools is ignored.

    This is not caused by my local configuration:

    • ~/.codex/config.toml does not contain thread_tools or features.thread_tools.
    • CODEX_HOME is not set.

    The bundled CLI's codex features list output does not include thread_tools. However, the Desktop package's resources/app.asar still contains code that reads defaultFeatureOverrides.thread_tools and forwards it through the feature-overrides path.

    This therefore appears to be the same Desktop-to-bundled-CLI feature-key mismatch described in the original report, and it is still present in a newer Windows Desktop build.

  11. HaokaiDing commented on Sep 21, 2026

    @HaokaiDing

    Root-cause detail for the macOS features.thread_tools configuration warning in desktop 26.915.31945 (build 9922), bundled engine 0.155.0-alpha.9.2.

    Read-only inspection of the installed desktop bundle found a client-side configuration serialization gap:

    • The desktop feature assignment map contains thread_tools.
    • The same original map is used by desktop task-management tools and their instructions.
    • Before sending the map to the engine, the main-process and renderer serializers exclude a set of desktop-only keys, including writing_blocks, apps, and plugins.
    • Both exclusion sets omit thread_tools, so serialization emits features.thread_tools=true. The bundled engine does not recognize that key.

    The corresponding emitted helpers in this build are Lw / Ew (main-process shared bundle) and pce / KI (renderer shared bundle).

    Suggested fix: add thread_tools to the existing desktop-only exclusion set in the source shared by these serializers. Keep it in the original desktop feature map so task-management tools remain enabled. Turning off the entire desktop feature or adding a no-op engine flag would address a different layer.

    Validation performed without modifying the installed app:

    1. An isolated bundled app-server process with -c features.thread_tools=true emitted the exact configWarning notification: session-flags: features.thread_tools is ignored.
    2. Isolated tests using each extracted serializer showed that adding this key to its exclusion set removes both bare and already-prefixed forms, preserves features.multi_agent=true, and leaves the original desktop feature map unchanged.
    3. An isolated bundled app-server receiving the filtered configuration initialized and answered config/read with no configuration warning; multi_agent remained true.

    The installed app has not been patched, and the candidate change has not been validated in a rebuilt desktop app. These observations explain the settings warning only; they do not establish a cause for the SIGKILL/crash symptoms in the original report.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appapp-serverIssues involving app server protocol or interfacesbugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions