Skip to content

Codex Desktop UI leaves send_message_to_thread tool call stuck after backend completion #28070

Open

Description

@Hogna67

What version of the Codex App are you using?

Codex Desktop for Windows from Microsoft Store/App package path observed as OpenAI.Codex_26.608.1337.0_x64__2p2nqsd0c76g0.

CLI also installed: codex-cli 0.128.0.

What subscription do you have?

ChatGPT/Codex desktop account. I can provide account/subscription details privately if needed.

What platform is your computer?

Windows 11, x64.

What issue are you seeing?

A Codex Desktop thread can remain visually stuck showing the tool-call UI state for send_message_to_thread / "sending message to conversation" even after the backend operation has already completed successfully.

In the affected thread, the visible UI remained on:

  • 正在傳送訊息至對話 / sending message to conversation
  • the composer still showed the stop button
  • the prior text output already reported success: send_result=threadId returned; slept=true

Local delivery state also confirmed completion:

status: visible_sent_unconfirmed
target_thread_id: 019e7294-e2a7-7373-8e5a-9b4d86723694
visible_sent_at: 2026-06-13T00:36:51Z
last_error: null

The event was no longer pending, and the short-lived heartbeat automation file had already been removed/slept. In other words, the backend delivery was done, but the Desktop UI did not mark the tool call as completed.

What steps can reproduce the bug?

This was observed in a Codex Desktop automation/postman thread that uses the official thread tool to forward notifications to another Codex thread.

  1. Create or use an existing Codex Desktop thread that can call send_message_to_thread.
  2. Trigger a message send from that thread to another existing thread.
  3. The tool call succeeds and returns a thread id.
  4. The thread prints/logs a success line such as send_result=threadId returned; slept=true.
  5. Observe that the Codex Desktop UI can continue showing the tool-call status as still running: "sending message to conversation" / 正在傳送訊息至對話, with the stop button still visible.

The failure is intermittent, but once it happens, the UI state remains stuck even though the backend state and delivery logs indicate success.

What is the expected behavior?

When send_message_to_thread returns successfully, the Codex Desktop UI should mark the tool call as completed and clear the in-progress/sending state.

If the backend delivery completed but frontend status reconciliation fails, the UI should eventually self-heal or show a retriable UI-only state rather than leaving the thread looking active forever.

Additional information

This matters for automation/postman workflows that use a dedicated Codex thread as a visible delivery bridge. The backend result and local state both indicate success, but the Desktop frontend leaves the bridge thread appearing busy/stuck.

Workaround currently being tested: move the actual delivery to a hidden/background CLI dispatch path and keep the UI thread as a status monitor only. This avoids blocking a visible Desktop thread, but it is a workaround; the root issue appears to be frontend/tool-call completion state not being reconciled after a successful tool return.

Searches for existing issues mentioning send_message_to_thread and this specific stuck UI state did not find an obvious duplicate.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    windows-osIssues related to Codex on Windows systems
    tool-callsIssues related to tool calling
    app-serverIssues involving app server protocol or interfaces
    on Jun 13, 2026
  2. Hogna67 commented on Jun 13, 2026

    @Hogna67
    Author

    Additional observation from follow-up testing:

    A background/hidden CLI write can update the thread backend without reliably becoming visible in Codex Desktop UI.

    Test performed:

    codex exec resume 019eb402-d572-7390-b281-5befad85cbcd - --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check -o <outPath>
    

    The input contained a unique marker:

    HIDDEN_CLI_MINIMAL_SMOKE_20260613-184839
    

    Result:

    • CLI exited with code 0.
    • The output file was created.
    • read_thread confirmed that the target thread backend contains a new completed turn with the exact marker.
    • However, the Codex Desktop UI did not show the new message in that thread at the time of checking.

    So there appear to be two related Desktop UI/thread-state synchronization issues:

    1. A visible send_message_to_thread tool call may remain stuck in the UI after backend completion.
    2. A thread backend can receive a new turn through CLI resume, and read_thread can see it, while the Desktop UI does not immediately render/refresh that turn.

    This makes it difficult to build reliable cross-thread notification workflows. Backend success alone is not enough; users need the target Desktop thread UI to reflect the new message, or at least expose a refresh/sync state clearly.

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 workingtool-callsIssues related to tool callingwindows-osIssues related to Codex on Windows systems

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions