Repository navigation
Codex Desktop: thread_tools gate does not restore task tools after re-enable #33947
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.715.31251 (build 5538; bundled codex-cli 0.145.0-alpha.18)
What subscription do you have?
Pro
What platform is your computer?
Darwin 25.4.0 arm64 arm
What issue are you seeing?
A local Codex Desktop task lost the complete first-class task/thread-management tool surface:
create_threadfork_threadhandoff_threadlist_threadsread_threadwait_threadssend_message_to_threadset_thread_pinnedset_thread_archivedset_thread_title
This is not the “tool is advertised but no handler is registered” failure from #31119. The tools are absent from the task's dynamic-tool manifest entirely.
The affected local task currently has only these three persisted codex_app dynamic tools:
automation_update
read_thread_terminal
load_workspace_dependencies
The runtime tool registry presented to the agent matches that persisted state. However, the Desktop-provided instructions still explicitly tell the agent to use create_thread, list_threads, read_thread, wait_threads, and the other missing tools. This leaves the product in an internally inconsistent state.
Inspection of the installed signed app bundle maps the feature key to the remote gate as follows:
featureKey: thread_tools
gateName: 2395575782
The important recovery failure is:
- A local task is persisted without the thread tools while the gate/tool manifest is unavailable.
- A later Desktop startup log reports
thread_toolsinenabledFeatures. - Resuming the same affected task does not rehydrate or repair its persisted dynamic-tool manifest.
- The task therefore remains unable to create or coordinate user-visible Codex tasks even though the current app process says the feature is enabled.
A separate local task on the same account had the full tool set available on 2026-07-13, so this is not an account that has never had the capability.
This blocks supported manager/worker workflows. A local CLI or app-server process is not an equivalent workaround because it does not create a genuine user-visible task in the Codex sidebar.
What steps can reproduce the bug?
The gate cannot be controlled through the public UI, but the observed sequence and an internal deterministic A/B reproduction are:
- Start or resume a local Codex Desktop task while Statsig gate
2395575782/ featurethread_toolsevaluates false or is otherwise omitted from the task's dynamic-tool manifest. - Ask the agent to list or create Codex tasks, for example: “Create a new user-visible Codex task.”
- Observe that no first-class task tools are available; only
automation_update,read_thread_terminal, andload_workspace_dependenciesare persisted for the task. - Re-enable gate
2395575782for the same account and restart Codex Desktop. - Confirm the Desktop startup log includes
thread_toolsinenabledFeatures. - Resume the same task and repeat the request.
- Observe that the first-class task tools are still absent and the persisted manifest is unchanged.
For an internal regression test, create/resume tasks across an explicit gate sequence of ON -> OFF -> ON and verify both new and existing task manifests. The failure is specifically the existing-task OFF -> ON recovery path.
I can provide sanitized timestamps and additional local state evidence if maintainers need it. I have intentionally omitted private task IDs and filesystem paths from this public report.
What is the expected behavior?
When thread_tools is enabled and the Desktop host can service the calls:
- Existing local tasks should regain the supported first-class task-management tools on resume.
- The persisted dynamic-tool manifest should be refreshed or migrated when capability assignment changes.
- App instructions must not direct the agent to call tools that are absent.
- Feature-gate transitions should be atomic and version-compatible with the bundled CLI.
- The UI should expose an explicit capability status if task-management tools are intentionally unavailable.
A temporary remote-gate assignment should not permanently degrade a long-lived task.
Additional information
Related reports:
- Codex Desktop thread tools intermittently lose handlers and may create systemError worker threads after create_thread failure #31119: tools are advertised but handlers disappear or calls have uncertain outcomes. This report is the distinct missing-manifest and failed-rehydration path.
- Codex Desktop crashes on resume: sends unsupported
thread_toolsfeature to bundled CLI #29361: the opposite feature-gate/version-skew failure, where Desktop enabledthread_toolsfor a bundled CLI that rejected the feature key. - Remote-started Codex thread does not receive codex_app thread-management tools #26907: thread-management tools omitted for remote-created tasks. This report reproduces on a local Desktop task and persists after the gate is enabled again.
Root-cause hypothesis: Desktop builds the dynamic-tool list from featureOverrides.thread_tools, persists it per task, and resumes existing tasks without rebuilding that list. If gate 2395575782 is false or temporarily unavailable when the manifest is written, that task remains stripped after the gate later evaluates true.
Activity
github-actions commentedon Jul 18, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
rcawston commentedon Jul 18, 2026
Fresh-task control confirms this is an existing-task manifest rehydration bug, not a current global handler outage.
Using the same account, machine, Codex Desktop build, and local host, I created a brand-new local Desktop task after startup:
create_thread,fork_thread,handoff_thread,list_threads,read_thread,wait_threads,send_message_to_thread,set_thread_pinned,set_thread_archived, andset_thread_title.list_threads({ "limit": 1 })call succeeded and returned a normal schema-v2 response with one active local task and no unavailable hosts.At the same time, the affected long-lived local task still exposes only:
This narrows the failure to persisted per-task dynamic-tool state:
thread_toolsis omitted or disabled.The expected regression test is therefore an existing-task OFF -> ON resume test, alongside a fresh-task ON control. Private task IDs, workspace paths, and prompt contents are intentionally omitted.
rcawston commentedon Jul 18, 2026
Additional recovery check: a full Codex Desktop restart still did not repair the affected long-lived task. The post-restart startup log lists thread_tools as enabled, but all ten first-class task tools remain absent and the persisted task manifest still contains only automation_update, read_thread_terminal, and load_workspace_dependencies. A brand-new local task created under the same post-restart process receives all ten tools and a working list_threads handler. This confirms that restart plus gate re-enable repairs new-task creation only; it does not rehydrate existing affected tasks.
daydemir commentedon Sep 9, 2026
Posted by GPT Astra on behalf of Deniz Aydemir, with his authorization.
We are seeing a related missing-tool-manifest failure on macOS with Desktop 26.901.51231 (build 8109), installed CLI 0.153.4, and bundled codex-app-tools 0.1.3.
Observed locally:
We have not yet proven that the exact OFF -> ON sequence in this issue caused our newer-build case, or that the MCP server failed to start. The confirmed failure is absent capabilities despite enabled bundled configuration. No app-bundle patches, permission relaxations, or manual session-database edits were applied.
Please test existing-task capability refresh across gate changes and the legacy/MCP transition, preserving approval behavior. The end-to-end check should include send_message_to_thread to an already loaded task and verified receipt, as well as read-only tool discovery. Instructions should agree with the callable catalog.
Local operational recovery verified after posting: CLI 0.153.4 provides
codex queue --thread <id> --message <text>. This accepted our message for the existing task without the active-writer conflict. We then verified both the user-message entry and an explicit assistant acknowledgment in the destination task's history. No new plugin, app patch, config change, or restart was needed. This restores message delivery through the vendor CLI; it does not restore the missing model-visible Desktop tool catalog described above.seeyou-rbf commentedon Sep 10, 2026
We are also observing the missing thread-management tool surface on September 10, 2026, in a Codex Desktop conversation working against a remote Linux workspace.
Observed directly from the current agent-visible tool inventory, including the available deferred-tool catalog: all ten of the following thread-management interfaces are absent:
list_threadsread_threadwait_threadscreate_threadsend_message_to_threadfork_threadhandoff_threadset_thread_titleset_thread_pinnedset_thread_archivedThe only exposed
codex_apptools in this conversation areconsume_usage_reset,get_usage_limits,open_in_codex, andread_thread_terminal.Goal tools and subagent collaboration tools (
spawn_agent,send_message,wait_agent) remain available. Subagent collaboration must not be conflated with the missing cross-conversation tools.Impact: a repository workflow relying on native thread metadata and completion events for FIFO coordination cannot safely enqueue or wait for other conversations. Its local queue read-only preflight works, but execution stops at the native-capability check. The broader missing surface also prevents native user-visible task creation, cross-conversation messaging/handoff, and title/pin/archive operations through these interfaces.
Historical project verification records document successful native thread reads/waits in other conversations, including a real completion event on September 6. We have not independently rechecked those other conversations today because this conversation lacks the required tools. We do not claim that all ten interfaces were previously available in this particular conversation.
This is tool absence, not a
No handler registerederror or a timeout from an attempted call. We have not confirmed that a feature-gate transition or persisted-manifest recovery is the cause in our case, and we are not claiming an ON -> OFF -> ON reproduction. The current Desktop client build and its creation path have not been independently verified.Could maintainers clarify whether this tool family is intentionally restricted for some conversation/remote execution contexts, and whether there is a supported way to refresh the complete thread-management capability set on an affected existing conversation? No private project contents, host addresses, credentials, or conversation transcripts are included in this report.
wakasellahi commentedon Sep 12, 2026
Related Windows observation on 09-11-2026, with a newer desktop build. This is evidence of the same missing tool family, not a confirmed reproduction of the OFF -> ON manifest-rehydration cause described above.
Environment:
OpenAI.Codex 26.908.4834.0.0.154.0-alpha.6.2.0.153.4.Verified evidence:
codex_appcall waswait_threadsat 13:24:10 Pacific. Using 13:25 Pacific as the reported update cutoff, no later completedcodex_appcalls appear in that folder. The exact installation minute was user-reported, not independently established from these rollouts.Installed client inspection independently found
threadToolsEnabled: defaultFeatureOverrides?.thread_tools === trueand the mapping ofthread_toolsto gate2395575782, consistent with this issue.One controlled local experiment added
thread_tools = trueunder the existing[features]section ofconfig.toml, restarted the desktop, and re-probed the affected task. All three tools remained absent while the setting was present. The ineffective key has been removed. This does not establish that the TOML setting controls the desktop gate or that the effective remote gate was enabled.We have not run a fresh-task ON control, and rollouts do not contain full catalogs proving server absence in every later task. No private task IDs, local paths, prompts, or credentials are included here.
Could maintainers clarify whether this newer Windows build is affected by the same existing-task manifest issue, and whether there is a supported way to refresh an affected task's thread-tool capabilities?
pimenov commentedon Sep 28, 2026
I can reproduce the persistence/rehydration pattern on Codex Desktop 26.924.22138.
Same Mac mini, same account, same app/CLI environment, same Astra model:
This is strong evidence that a resumed/persisted task can remain stuck with a degraded dynamic-tool manifest even while the current host/account is capable of exposing the full thread tool family to new tasks.
rtol5 commentedon Sep 30, 2026
Related availability data point, rather than a reproduction of the gate-toggle sequence: in our September 29 SSH-backed Desktop tests with remote CLI 0.159.1, native create/send tools remained absent in fresh chats while read-side tools were exposed.
We could reach the existing daemon's steering/root-creation APIs through its CLI proxy, and fresh chats successfully discovered a separately configured MCP adapter. Installing that adapter did not restore the first-party tools.
We have not tested re-enabling
thread_tools, and do not want to imply that a configuration flag fixes this. A diagnostic separating tool-registration/gating state, stale per-chat catalogs and actual backend support would make these failures much easier to investigate. This overlaps the missing-sender symptom in #40852.