Repository navigation
[macOS 26.901 / 0.153.4] Persistent Desktop task loses thread-management tools; CLI fallback remains backend-readable #44044
Description
What version of the Codex App are you using?
- Desktop bundle metadata:
26.901.51231, build8109, bundle identifiercom.openai.codex(read from Info.plist, not About dialog). - Desktop bundled runtime:
codex-cli 0.153.4. - Separately installed CLI:
codex-cli 0.153.4.
What subscription do you have?
Not independently verified during this diagnostic; omitted rather than inferred.
What platform is your computer?
Darwin 25.6.0 arm64 arm (macOS, local Desktop task).
What issue are you seeing?
A persistent local Desktop task could successfully use built-in task-management tools earlier in the conversation, but later its model-visible tool registry no longer contained create_thread, read_thread, list_threads, or send_message_to_thread. Basic app tools, including navigate_to_codex_page and read_thread_terminal, remained available. The task's instructions still refer to task-management operations.
An actual attempted call to the previously available tool failed before any backend authorization response:
TypeError: tools.mcp__codex_app__send_message_to_thread is not a function
Repeated enumeration of the currently exposed ALL_TOOLS confirmed that the management functions were absent. This is an absent callable-tool surface, not an observed permission-denied response. No tool-discovery/search capability that could expose these missing app tools was available in the affected turn.
What steps can reproduce the bug?
The initiating transition is not yet isolated; the following is an observed diagnostic sequence, not a deterministic fresh-install reproducer:
- In an existing local Desktop project task, ask the agent to inspect or create another task.
- Enumerate the currently available app tools. The management tools above are absent, while basic navigation tools remain.
- Attempt the previously callable task-message tool; observe the TypeError above.
- As a separate fallback experiment, run
codex exec --json -C <new-git-worktree> <prompt>. - The CLI emits
thread.started,turn.started, and actual work output. However, the user cannot find this task automatically under the expected Desktop project and reports difficulty reading it through Desktop. navigate_to_codex_pagereturns{"navigated":true}for that ID. This does not establish that the task content rendered or that project membership was assigned.- A read-only App Server diagnostic successfully reads the same persisted task:
{"id":2,"method":"thread/read","params":{"threadId":"<redacted>","includeTurns":true}}Sanitized result:
{"readSuccess":true,"source":"exec","cwd":"<new-git-worktree>","turnCount":1}The original Desktop task has source vscode; the fallback task has source exec. Both use paginated history and are not archived. A read-only local metadata check returned null project_id for both, including the existing Desktop project task, so null alone is NOT evidence of the cause. No state/history database was modified.
What is the expected behavior?
- Supported Desktop task-management tools should remain available consistently, or the app should explicitly explain why they are unavailable and how to restore access.
- Instructions should not promise an app tool surface that the active turn cannot discover or call.
- Please clarify the supported path for creating a Desktop-visible, project-associated task. We do not assume
codex execmust provide the same project association as the Desktop creation API. - A navigation acknowledgement should not be interpreted as proof of readable content or successful project association; an actionable UI error would help distinguish these cases.
Additional information
This installation has records of 0.153.4 tasks beginning September 7, and successful task-management calls earlier in this persistent conversation on September 8. Consequently, we have NOT established that a CLI update caused the failure. Desktop update timing, model/provider routing, feature flags, and task restoration remain hypotheses requiring controlled comparison.
The local config selects gpt-6-astra and provider identifier openai-http; this identifier alone does not establish a third-party endpoint or the actual route used for every Desktop turn. No provider endpoint or credentials are attached. No model/provider A/B test was performed.
The task itself is readable through App Server, so we do NOT claim transcript loss/corruption. We also do not claim a filesystem-permission problem, a confirmed regression in a specific release, or that changing repository rules can restore missing system tools.
Related reports: #31366 (older-task tool exposure), #33637 (model-dependent exposure), #37075 (provider-dependent exposure), #41404 (browser policy affecting tools), #40865 (missing replacement tools). Please consolidate if this is the same defect; this report adds the current macOS 26.901/0.153.4 observations and the successful backend-read versus Desktop/CLI fallback distinction. Unlike #43742, no duplicate-ordinal/history-projection failure has been established here.
No raw transcripts, task IDs, private project names/paths, repository source, credentials, databases, or unredacted logs are attached. No app restart, downgrade, permission expansion, or state-database repair was performed as part of this diagnostic.
Activity
github-actions commentedon Sep 9, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
xiehuan123 commentedon Sep 10, 2026
Adding another macOS reproduction from a newer Desktop build.
Environment
arm64)26.903.71938, build85760.153.4gpt-5.6-solObserved behavior
A fresh Desktop task does not expose
create_thread,fork_thread,list_threads,read_thread,wait_threads,send_message_to_thread, or the related pin/archive/title tools. Runtime enumeration confirms these functions are absent rather than returning an authorization error.The affected session metadata has no
dynamic_toolsfield and uses originatorcodex_work_desktop:01a08b68-072e-7d20-9106-69c4e48437c9For comparison, an older local Desktop session created with
0.147.0-alpha.6.5persisted thecodex_appdynamic namespace with the complete thread-management tool set and successfully invokedcreate_thread:01a033d6-ee34-7bc3-b04d-4fc7c90e1e35I also checked local session metadata across this installation. All observed sessions created with
0.153.2or0.153.4omit the olderdynamic_toolsmetadata, including normal local-project sessions whose originator isCodex Desktop; therefore this does not appear limited to a single projectless conversation. Older alpha-runtime sessions are mixed, with some containing the full namespace and some not, consistent with conditional or intermittent injection.This is consistent with the missing callable-tool surface reported here. It does not establish whether the cause is Desktop packaging, server-side eligibility, or runtime registry construction. No raw transcript, repository content, credentials, or private file paths are attached.
junhaoliao commentedon Sep 10, 2026
Additional observation from a task running on a remote Linux host on September 10, 2026: the task-management tool surface was partially available. Follow-up read-only inspection of the installed Windows Desktop bundle identifies a specific tool-transport gap that matches this observation.
Observed tool availability
list_threadsread_threadwait_threadsset_thread_titlecreate_threadfork_threadhandoff_threadsend_message_to_threadtool_searchThe task's instructions still described
create_threadand instructed the assistant to use it when asked to create a new task. Registry enumeration found no callable creation tool. No creation call was made, so no backend permission-denied response was observed. A subsequent side conversation independently found the same partial availability.Follow-up bundle findings
Inspected app: Windows ARM64,
package.jsonversion26.903.71938, build8576(Windows package26.903.9818.0). The reporting task ran on the remote Linux host with bundled runtime0.153.4, sourcevscode, and paginated history. These are separate from the macOS versions in the issue title.The renderer contains an explicit exclusion set for the legacy dynamic-tool path:
The relevant code path is:
Creation inputs set
usesDesktopMcpusing a predicate that accepts only the current local host (host_config.idmatches andhost_config.kind === "local").Registration uses an empty dynamic-tool list for Desktop MCP tasks, and applies the exclusion filter above to non-MCP tasks. MCP tasks instead receive
mcp_servers.codex_app.enabled_tools.The Desktop MCP launcher returns immediately for non-local host configurations:
if (e.kind !== "local") return []. Thus the remote task loses these five legacy tools without getting the automatically configured local MCP replacement.Dispatch also rejects these five tools through the dynamic path. The bundled error text says:
This is a code finding, not an error observed from an attempted call in the reporting task.
The Thread Coordination instructions are included based on the separate
thread_toolsfeature flag, rather than the final transport-specific catalog. This explains why instructions can still request unavailable operations.Verification and scope
Read-only inspection of the reporting task's initial
session_meta.dynamic_toolsconfirmed that all five excluded tools, includingautomation_update, were already absent at task creation, while reading/listing tools were present. The initial developer message nevertheless contained the creation instructions. This particular task therefore does not demonstrate tools disappearing later within its lifetime.An isolated Node VM check of the actual extracted filter, using the saved catalog plus the five excluded names as input, reproduced the saved catalog exactly. A separate check of the extracted host predicate selected MCP for a local host and rejected the remote host. This is verification of the extracted logic, not a full end-to-end reproduction.
For source lookup in this build:
webview/assets/app-initial-f094ef01c64d.js: filternkt, exclusion setikt, local-host predicate$O, andusesDesktopMcpregistration/dispatch logic..vite/build/main-CMBCj4XL.js: Desktop MCP launch functionSOwith the non-local early return..vite/build/src-B6LqG3ek.js: instruction assembly functionu$, gated bythreadToolsEnabled.Conclusion: the current bundle's migration to MCP-only delegation tools explains this remote-task availability split with high confidence. A complete fix would need a supported remote MCP path or a supported remote fallback covering both registration and dispatch; instructions should also reflect actual capabilities.
This does not establish that the original broader macOS report has the same cause, explain the separate absence of
tool_search, or identify the release that introduced the migration. The exact frontend build at the reporting task's creation time was not independently established. The user recalled prior availability, but an earlier successful call was not verified.No app files, configuration, permissions, or history were modified. No restart or CLI fallback was attempted. No private project information, credentials, or raw transcripts are included.
Jadabo3 commentedon Sep 12, 2026
Additional Windows reproduction on Desktop 26.908.4834.0
I am seeing the same missing thread-management tool surface on a newer Windows build.
Environment
10.0.26200.0, x6426.908.4834.0codex --versionfrom the current PATH:codex-cli 0.154.0-alpha.6.2Reproduction
Confirmed missing callable tools
A direct enumeration of the active task's exposed tool registry returned no matches for:
create_threadfork_threadlist_threadsread_threadwait_threadssend_message_to_threadhandoff_threadset_thread_titleset_thread_archivedset_thread_pinnedtool_searchThis was not an observed permission denial or approval-modal failure. The callable functions were absent, so no thread-management call reached the backend and no approval prompt appeared.
A background subagent was available, but it was intentionally not used because it is not equivalent to creating a user-owned, sidebar-visible Codex task.
Expected behavior
When explicitly asked to create a new user-owned Codex task, the Desktop session should expose
create_thread, or provide a working discovery path throughtool_search.Actual behavior
The agent had no callable or discoverable task-management interface and had to report that the task could not be created. Manual sidebar creation continued to work.
Scope and uncertainty
The installed version and Microsoft Store update date are confirmed from the Store UI, but this does not establish that the September 11 update caused the regression. Packaging, task restoration, feature flags, model routing, and server-side tool injection remain unverified.
No configuration changes, downgrade, database edits, or alternate task-creation fallback were performed.
Related issue:
Issue #30233
Issue #33585
kacperobrzut commentedon Sep 18, 2026
Same issue on Windows: task-management tools missing
I am experiencing this in Codex Desktop on Windows, in a local project without Remote SSH.
Versions identified in the application logs:
The agent cannot access:
No tool_search capability is available either. The agent checked its exposed tool registry and found none of these tools.
File access, local commands, web search, and other connector tools work. This is not a permission-denied error — the task-management tools are absent.
Manual task creation through the Desktop UI works, but a newly created task also lacks these tools.
The issue persists after:
BIGBOTCHED commentedon Sep 18, 2026
Windows reproduction with a confirmed working/broken build boundary.
Environment:
26.915.3509.026.915.310290.155.0-alpha.9codex-app-tools:0.1.4Observed timeline:
26.903.61454/ CLI0.153.4: Desktop logs show the singularcodex_appMCP server enteringstartingand thenready. Thread-management calls includingcreate_threadworked.26.908.40834: the same persistent campaign/project workflow no longer exposedcreate_thread,list_threads,set_thread_title,send_message_to_thread, etc.26.915.3509.0: still affected.Current-task diagnostics:
codex_apps(plural connectors service),node_repl, and the artifact-template picker reachingready.codex_app(singular task-management bridge).ALL_TOOLScontains none of the thread-management tools.codex-app-toolsplugin is present and its MCP manifest definescreate_thread,fork_thread,handoff_thread, and related tools.plugins.codex-app-tools@openai-bundled.mcp_servers.codex_app.enabled=truebut the singular server is nevertheless absent from the resolved per-thread MCP configuration.
codex_appchild process is launched and there is no failure event; it is silently omitted.Storage/path checks:
CODEX_HOMEis redirected to another local drive.%USERPROFILE%\.codexpath is a valid junction to that state directory.Expected:
The singular
codex_appbridge should be loaded when Desktop explicitly enables it, or Desktop should surface a startup/configuration error explaining why it was omitted.This Windows evidence appears to corroborate the missing callable-tool surface described in this issue and narrows the local regression interval from
26.903.61454(working) to26.908.40834(affected). No raw transcripts, private project names, credentials, or unredacted logs are included.li2go commentedon Sep 18, 2026
Additional Windows reproduction: Desktop 26.915.3509.0 / CLI 0.155.0-alpha.9
Observed on September 18, 2026, in a local Windows Codex Desktop project task (the task itself is not hosted through Remote SSH).
Versions verified locally
OpenAI.Codex 26.915.3509.0(Get-AppxPackage).codex --version:codex-cli 0.155.0-alpha.9. The resolved executable is under the Desktop-managed local Codexbindirectory.Observed behavior
The user explicitly asked one existing task to read another existing task's latest requirements and send it a completion notification. Direct enumeration of the active task's callable tool registry found none of:
read_threadsend_message_to_threadcreate_threadlist_threadswait_threadstool_searchThe injected Desktop instructions still describe these task-coordination tools and tell the agent to discover/use them. Local command execution, file access, web search, and GitHub connector tools work. This is a missing callable-tool surface, not a tool call rejected by an approval dialog.
Fallback results
codex exec resume <target-id> ...failed withalready has an active writer. This is reported only as a fallback limitation; it is not evidence of the cause of the missing tools.codex queue --thread <target-id> --message <notification>succeeded and returnedQueued message <message-id> for thread <target-id>.This corroborates the Windows build reported above: native task read/send tools are absent even though the CLI can accept a message for the existing task.
The user recalls this working before a client update, but we have not established a controlled working/broken version boundary on this installation or inspected the Desktop MCP startup configuration. No claim is made that this update is the proven cause.
Please investigate the missing task-management tool registration and ensure Desktop guidance matches the tools actually exposed. Private task IDs, paths, message contents, and credentials are omitted.
epose-37 commentedon Sep 23, 2026
High-impact regression: native task / worktree-chat handoff is unavailable
This is a regression, not a feature request. The desktop app previously let an agent create a user-owned task in a separate worktree and return an Open chat handoff. That workflow is now unavailable, which blocks delegating independent work without manually recreating the task and losing the sidebar handoff.
Current environment
26.917.51856(build10492)0.155.0-alpha.16gpt-6-solandgpt-5.6-terraActual behavior
The native task tools are absent from the agent's actual tool registry:
create_thread,fork_thread,send_message_to_thread, andhandoff_threadare all unavailable. There is no permission prompt or error to act on; the agent cannot create a user-owned task at all.The bundled app contains
codex-app-tools, but the desktop startup logs show onlyserver=codex_apps status=ready; there is no startup entry for the singularcodex_appserver that exposes the native task-management tools. The local Codex config has no disabling override.Reproduction attempts
gpt-6-soltogpt-5.6-terra.Neither restores the missing tools.
Regression evidence
On the same Mac, archived Codex sessions from 2026-08-27 and 2026-08-28 show successful
create_threadcalls under bundled CLI0.150.0-alpha.8, including from a non-Git directory. This rules out the current directory and Git worktree state as the cause.Impact / request
This breaks a core desktop workflow: create isolated work, hand it to a user-owned task, then open that task from the returned handoff. Manual worktree creation is not an equivalent replacement because it does not produce the managed task or its chat handoff.
Please triage this as a regression in desktop tool injection/activation and restore the native task-management tool surface. A diagnostic or supported recovery path would also help affected users immediately.
mtk177a commentedon Oct 6, 2026
I ran a controlled retest on October 6, 2026. Native task coordination now works in the Desktop tasks I tested.
My environment:
My controlled test:
Both sends were accepted. I checked B's record for the received PING and A's record for the received ACK, so this verifies actual delivery and response rather than queue acceptance alone.
The tested native operations behaved as expected, without invocation errors. I did not use a separate CLI or internal API fallback.
list_threads was callable but I did not invoke it, to avoid enumerating unrelated conversations. App-restart resume behavior and long-term tool retention remain untested. I have not established the original provisioning or plugin-cache cause.