anomalyco / anomalyco/opencode

[BUG] Desktop: conversation freezes mid-"thinking", no error, must abort and resend — missing watchdog/retry UX

Open
#41,365 6 comments 0 reactions 1 assignee View on GitHub

@Brendonovich is already working on this.

Since Aug 9, 2026.

Dominant language
TypeScript
Stars
209k
Forks
27.5k
PR merge metrics
PR metrics pending

Description

Description

On the Windows desktop app, quite often — especially with models that do long/reasoning "thinking" (e.g. OpenAI/DeepSeek-style reasoning dumps) — the conversation freezes mid-thinking: the agent is stuck in "thinking" state, spinner/tool call never resolves, and no output arrives.

The only workaround is to abort/terminate the conversation and resend the message (losing the reasoning context), which is disruptive for long debugging tasks.

Details of the bug

  1. User sends a prompt (sometimes after long thinking, sometimes right at start).
  2. Client shows "thinking…" (or the thinking block dumps) indefinitely; the stream silently stops; no error toast.
  3. UI (desktop) is stuck; user must hit the abort/stop button and resent the exact same prompt; then it usually works — pointing to a transient stream/connection race, not the model being slow.

Associated issues (other symptoms, same "thinking stuck" family)

  • #36370 (Desktop stuck in "thinking" - sidecar stream never completes, Windows)
  • #37609 (Plan/Build mode sometimes hangs after long reasoning, never emits final response)
  • #38951 (API 404 silently hangs in thinking state, no error recovery)
  • #32366 (UI stuck on thinking indefinitely after stream error, no error displayed)
  • #38644 (provider 500 drops response without showing error)
  • #41069 (previously closed as duplicate of #37617 — free-tier model network blips treated as normal; user on this session reported similar)

Suggested improvements

  1. Watchdog / timeout on the thinking phase: if no chunks received for N seconds (e.g. 60s), surface an explicit error/info banner ("model hasn't responded; retry?") and offer "retry with cached thinking".
  2. Recover stuck turn automatically: detect stuck state and prompt user "Retry / discard and re-ask" instead of silently dangling.
  3. Show provider error in the UI (many of these are provider 5xx/empty chunk cases): single toast for "provider error, auto-retried".
  4. Non-lossy retry: when user aborts+resends, keep the previous reasoning/tool output as context so the retry isn't blind.

This is a frequent occurrence (dozens of similar reports) and the UX cost is high for long sessions.

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.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.