claude-code - 💡(How to fix) Fix [BUG] Claude Desktop Dispatch: messages land in pendingProcessedAcks and never clear; survives fresh install, new sessions, kill-all-sessions, manual file edits [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#51759Fetched 2026-04-22 07:53:37
View on GitHub
Comments
1
Participants
2
Timeline
5
Reactions
0
Timeline (top)
labeled ×4commented ×1

Error Message

When a Dispatch message is processed, the Desktop client should successfully ack the processing to the server, clearing it from pendingProcessedAcks. The UI's "working" indicator should resolve when no work is actually running. A reply should come back to the phone. When ack delivery fails repeatedly, the client should surface a visible error rather than indefinitely showing "working." There should be a user-reachable "stop" or "clear stuck task" action.

Error Messages/Logs

Why it matters. The UI actively misrepresents system state: "working" is displayed when nothing is working. That's worse than a visible error, because users can't trust the feature even when it appears functional, and can't debug without inspecting bridge-state.json directly. Add a client-side ack timeout with visible error on repeated failure.

Root Cause

On Claude Desktop for macOS, every Dispatch message sent from the mobile app is received by the Desktop client, added to processedMessageUuids in bridge-state.json, and simultaneously added to pendingProcessedAcks — where it stays indefinitely. The Desktop UI perpetually shows a "working" indicator (squiggle/spinner) because the server believes there is unacked work, while nothing is actually running locally (confirmed via ps — no child processes, no CPU attributable to the task). No reply ever arrives on the phone. There is no stop/cancel button.

Fix Action

Fix / Workaround

On Claude Desktop for macOS, every Dispatch message sent from the mobile app is received by the Desktop client, added to processedMessageUuids in bridge-state.json, and simultaneously added to pendingProcessedAcks — where it stays indefinitely. The Desktop UI perpetually shows a "working" indicator (squiggle/spinner) because the server believes there is unacked work, while nothing is actually running locally (confirmed via ps — no child processes, no CPU attributable to the task). No reply ever arrives on the phone. There is no stop/cancel button.

Sign in to Claude Desktop on Mac. Enable Dispatch in Settings. From the Claude mobile app Cowork tab, send a message to Dispatch. Message is marked "Read" on mobile. Desktop UI shows "working" indicator. No work runs locally. No reply ever comes back. Things tried that did NOT fix it:

When a Dispatch message is processed, the Desktop client should successfully ack the processing to the server, clearing it from pendingProcessedAcks. The UI's "working" indicator should resolve when no work is actually running. A reply should come back to the phone. When ack delivery fails repeatedly, the client should surface a visible error rather than indefinitely showing "working." There should be a user-reachable "stop" or "clear stuck task" action.

RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

On Claude Desktop for macOS, every Dispatch message sent from the mobile app is received by the Desktop client, added to processedMessageUuids in bridge-state.json, and simultaneously added to pendingProcessedAcks — where it stays indefinitely. The Desktop UI perpetually shows a "working" indicator (squiggle/spinner) because the server believes there is unacked work, while nothing is actually running locally (confirmed via ps — no child processes, no CPU attributable to the task). No reply ever arrives on the phone. There is no stop/cancel button.

The failure reproduces on a freshly installed Desktop app with a brand-new server session:

{ "<env-uuid>:<account-uuid>": { "enabled": true, "userConsented": true, "environmentId": "env_01Fc8pB3U7cqYRFyM1guYxYB", "remoteSessionId": "cse_016gxmpfAvzb8k7XjaLsoViQ", "localSessionId": "local_ditto_<env-uuid>", "processedMessageUuids": ["59b63aec-e28d-4f55-b8a3-141109f26624"], "pendingProcessedAcks": ["59b63aec-e28d-4f55-b8a3-141109f26624"] } } Every subsequent message appends to both arrays; pendingProcessedAcks never empties.

Steps to reproduce:

Sign in to Claude Desktop on Mac. Enable Dispatch in Settings. From the Claude mobile app Cowork tab, send a message to Dispatch. Message is marked "Read" on mobile. Desktop UI shows "working" indicator. No work runs locally. No reply ever comes back. Things tried that did NOT fix it:

Force-kill all Claude processes (main + helpers by PID, incl. chrome-native-host which survives Cmd+Q) — relaunch, same. Clear app caches under ~/Library/Application Support/Claude/Partitions/*/Cache — same. Sign out / sign in — same. Accept the "kill all other sessions" prompt on sign-in. remoteSessionId and environmentId regenerate server-side, but the very first message on the fresh session immediately repeats the bug. Manually empty pendingProcessedAcks by editing bridge-state.json — empties, but the next message immediately repopulates it. Delete bridge-state.json entirely so the bridge re-handshakes — same result. Full uninstall + reinstall (deleted /Applications/Claude.app and ~/Library/Application Support/Claude, reinstalled from anthropic.com) — same.

What Should Happen?

When a Dispatch message is processed, the Desktop client should successfully ack the processing to the server, clearing it from pendingProcessedAcks. The UI's "working" indicator should resolve when no work is actually running. A reply should come back to the phone. When ack delivery fails repeatedly, the client should surface a visible error rather than indefinitely showing "working." There should be a user-reachable "stop" or "clear stuck task" action.

Error Messages/Logs

Steps to Reproduce

Sign in to Claude Desktop on macOS (version 1.3883.0). Enable Dispatch in Settings. On the Claude mobile app, open the Cowork tab. Send any message to Dispatch from the phone (e.g. "hello"). Observe: the mobile UI marks the message "Read"; the Desktop UI shows a "working" indicator (spinner/squiggle). Inspect ~/Library/Application Support/Claude/bridge-state.json on the Mac. The message's UUID now appears in both processedMessageUuids and pendingProcessedAcks. Wait any length of time (minutes, hours, days). The UUID never leaves pendingProcessedAcks. The Desktop UI never stops showing "working". No reply reaches the phone. Send another message. A new UUID appears in both arrays. pendingProcessedAcks keeps growing. Reproduces on a freshly installed Desktop app and a brand-new server session (confirmed after full uninstall + reinstall, cache deletion, and "kill all other sessions" flow — remoteSessionId and environmentId both regenerate, bug persists on first message of the new session).

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

No response

Claude Code Version

Claude Desktop 1.3883.0

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Environment

macOS 15.7.1 (24G231), Apple Silicon Claude Desktop 1.3883.0 Account: Pro Network: home Wi-Fi, no proxy/firewall, other Anthropic services (CLI, claude.ai) work fine. Interpretation. Because it reproduces on a fresh install with a brand-new server session, the defect is not stale local state, zombie session IDs, corrupted install, unreaped children, or local cache. It must live in either (a) the current shipping Desktop version 1.3883.0 — broken ack endpoint, changed schema, missing auth header, etc. — or (b) a server-side handler for this account that fails to accept/acknowledge acks.

Why it matters. The UI actively misrepresents system state: "working" is displayed when nothing is working. That's worse than a visible error, because users can't trust the feature even when it appears functional, and can't debug without inspecting bridge-state.json directly.

Suggested investigation

Capture outbound traffic from Desktop when a Dispatch message arrives. Confirm the ack call is being made, reaches the server, and what response comes back. Check for recent ack-endpoint schema/auth changes that may have broken compatibility with 1.3883.0. Add a client-side ack timeout with visible error on repeated failure. Add a "clear stuck task" action for users to recover without editing local files. Related issues: #43573, #44776, #46391, #39549, #14951.

extent analysis

TL;DR

The most likely fix involves investigating and resolving the issue with the ack endpoint, potentially related to compatibility problems between the current Desktop version and server-side changes.

Guidance

  1. Capture and analyze outbound traffic: When a Dispatch message arrives, capture the outbound traffic from the Desktop app to confirm if the ack call is being made, if it reaches the server, and what response is received.
  2. Check for recent ack-endpoint schema or auth changes: Investigate if there have been any recent changes to the ack endpoint's schema or authentication requirements that might have broken compatibility with the current Desktop version 1.3883.0.
  3. Implement a client-side ack timeout: Consider adding a timeout for acks with a visible error message on repeated failure to improve user experience and debugging capabilities.
  4. Add a "clear stuck task" action: Provide a user-accessible action to clear stuck tasks without requiring manual editing of local files, enhancing user control and recovery options.

Example

No specific code example can be provided without more details on the ack endpoint and its implementation. However, the investigation should focus on the communication between the Desktop app and the server, particularly around the ack endpoint.

Notes

The issue seems to persist across different scenarios, including fresh installs and new server sessions, suggesting the problem might be with the current version of the Desktop app or server-side handling of acks. The exact cause needs to be pinpointed through the suggested investigations.

Recommendation

Apply a workaround by implementing a client-side ack timeout with a visible error on repeated failure and adding a "clear stuck task" action. This approach addresses the immediate user experience issues while investigations into the root cause, potentially involving server-side or ack endpoint fixes, are conducted.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix [BUG] Claude Desktop Dispatch: messages land in pendingProcessedAcks and never clear; survives fresh install, new sessions, kill-all-sessions, manual file edits [1 comments, 2 participants]