openai / openai/codex

[macOS Desktop 26.820.60940] code-mode tasks omit send_message_to_thread while read tools remain

Open
#40,852 13 comments 13 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app app-server bug tool-calls
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of the Codex App are you using?
  • ChatGPT / Codex Desktop: 26.820.60940 (build 7119)
  • Bundled CLI: codex-cli 0.150.0-alpha.8
  • Prior working CLI/session comparison: 0.149.0-alpha.4.1
What platform is your computer?
  • macOS 26.5.2 (build 25F84)
  • Apple Silicon / arm64
What issue are you seeing?

After the update to Desktop 26.820.60940 / CLI 0.150.0-alpha.8, code-mode Codex tasks no longer receive the complete first-party thread-management tool family.

The read side remains available and works:

  • list_threads
  • read_thread
  • wait_threads
  • title/archive/pin helpers

But the effectful task tools are omitted from the callable tool catalog, including:

  • send_message_to_thread
  • create_thread
  • fork_thread
  • handoff_thread
  • automation_update

The immediate blocker is send_message_to_thread. In two independently bootstrapped Codex tasks, including a worker and coordinator on the same physical host, the exact result was:

typeof tools.codex_app__send_message_to_thread === "undefined"
TypeError: tools.codex_app__send_message_to_thread is not a function

The destination task was uniquely resolved through the correct remote-ssh-discovered:<host>.local projection. Exact destination readback proved that no message input was created, so this is a missing callable-tool problem rather than target discovery, host routing, or an uncertain delivery result.

A retained session from the same environment on CLI 0.149.0-alpha.4.1 successfully called:

await tools.codex_app__send_message_to_thread({
  threadId,
  hostId,
  prompt,
});

The installed 26.820.60940 bundle still contains the send_message_to_thread tool definition, but the updated app code explicitly filters a sensitive-tool set containing automation_update, create_thread, send_message_to_thread, fork_thread, and handoff_thread from code-mode/deferred catalogs unless separately enabled. There is no user-authored mcp_servers.codex_app entry in config.toml.

This leaves app guidance and installed workflows referring to a native task-send capability that the model cannot call.

What steps can reproduce the bug?
  1. Run Codex Desktop 26.820.60940 with bundled CLI 0.150.0-alpha.8 on macOS.
  2. Open a code-mode task with an authenticated ChatGPT account.
  3. Ask the task to coordinate an existing Codex task.
  4. Confirm list_threads, read_thread, and wait_threads are callable.
  5. Resolve an exact existing destination using remote-ssh-discovered:<host>.local.
  6. Attempt one user-authorized send_message_to_thread.
  7. Observe that the tool is absent from the callable catalog / is not a function.
  8. Repeat in another independently bootstrapped task; the same omission occurs.
What is the expected behavior?

When a user explicitly requests inter-task communication, Codex Desktop should expose the same native app-owned send_message_to_thread capability that worked in 0.149.

At minimum:

  • the app instructions and callable tool catalog must agree;
  • an explicitly user-authorized send should not require editing config.toml;
  • the read and write halves of the thread-management family should not be silently split;
  • if the capability is intentionally unavailable, the app should provide a clear structured diagnostic rather than leaving installed workflows to discover a missing function at runtime.
Impact

This breaks established multi-task coordination that requires a visible, source-accounted native send, including discussion, convergence, and handoff workflows. Raw App Server calls or manual/fallback transports are not equivalent because they do not create the same source event and can violate exactly-once/no-resend guarantees.

Unaffected read-only and helper-backed operations continue to work, which makes the regression particularly confusing.

Additional information

No config.toml change was made. The issue reproduces with the correct host projection and in two independent tasks.

Related but not duplicate:

  • #29223 — broader reports of fresh sessions losing the thread-management surface
  • #26907 — remote-started threads missing thread tools
  • #40793 — same Desktop/CLI build exposes these tools on Windows but prompts on every call

This report is narrower: on macOS build 26.820.60940, read/list/wait remain callable while send_message_to_thread and the other effectful task tools are omitted entirely.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the omission on Desktop 26.820.60940 with bundled CLI 0.150.0-alpha.8, confirming that read tools remain callable while send_message_to_thread is absent. Then trace the app’s code-mode/deferred tool-catalog filtering and its sensitive-tool set, using the retained 0.149 behavior as a comparison. Done means explicitly authorized task messaging is callable and the instructions and tool catalog agree.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, rust
Domain
cli, desktop, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.