openclaw - 💡(How to fix) Fix [Bug] claude-cli provider declares isStreaming: false — webchat responses disappear after render [3 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
openclaw/openclaw#70125Fetched 2026-04-23 07:28:58
View on GitHub
Comments
3
Participants
2
Timeline
4
Reactions
0
Author
Participants
Timeline (top)
commented ×3closed ×1

Root Cause

In dist/execute.runtime-qivcEpPA.js (line 653), the claude-cli executor returns:

isStreaming: () => false

The CLI runner actually streams JSONL internally via the subprocess stdout, but this flag tells the UI layer that no streaming is happening. The UI's post-render cleanup path for non-streaming responses clears the visible content.

Fix Action

Fix

Change line 653 from:

isStreaming: () => false

to:

isStreaming: () => true

This aligns the streaming flag with the actual behavior of the JSONL parser. We tested this fix locally and it resolves the issue completely — responses render progressively and persist correctly after completion.

Code Example

isStreaming: () => false

---

isStreaming: () => false

---

isStreaming: () => true
RAW_BUFFERClick to expand / collapse

Problem

The claude-cli backend provider declares isStreaming: () => false in the bundled runtime (execute.runtime-qivcEpPA.js, line 653), even though it internally parses streaming JSONL events from the Claude CLI subprocess. This mismatch causes the webchat Control UI to mishandle response lifecycle:

  1. The CLI subprocess streams JSONL events, which are correctly parsed and accumulated into a complete response
  2. When the subprocess exits, the response renders briefly in the webchat UI
  3. The UI performs post-completion cleanup assuming no streaming occurred (because isStreaming returned false)
  4. The rendered response disappears from the chat window
  5. Sending a follow-up message re-renders the previous response from session history

The response content is preserved in the session — it's purely a UI rendering issue caused by the streaming flag mismatch.

Steps to Reproduce

  1. Configure OpenClaw with claude-cli as the provider (using Claude Code CLI backend)
  2. Open webchat Control UI
  3. Send any message
  4. Observe: the assistant response appears briefly, then vanishes
  5. Send another message — the previous response reappears from history

Root Cause

In dist/execute.runtime-qivcEpPA.js (line 653), the claude-cli executor returns:

isStreaming: () => false

The CLI runner actually streams JSONL internally via the subprocess stdout, but this flag tells the UI layer that no streaming is happening. The UI's post-render cleanup path for non-streaming responses clears the visible content.

Fix

Change line 653 from:

isStreaming: () => false

to:

isStreaming: () => true

This aligns the streaming flag with the actual behavior of the JSONL parser. We tested this fix locally and it resolves the issue completely — responses render progressively and persist correctly after completion.

Related Issues

  • #14212 — Webchat streaming flicker (different root cause: general rendering race)
  • #33641 — blockStreamingDefault conflict (different root cause: dual rendering systems)
  • #6121 — Webchat streaming flicker + reconnect (older, different root cause)

This is a distinct bug specific to the claude-cli provider's streaming flag declaration.

Environment

  • OpenClaw 2026.4.21 (f788c88)
  • Provider: claude-cli (Claude Code CLI backend)
  • Channel: webchat Control UI
  • File: dist/execute.runtime-qivcEpPA.js:653

extent analysis

TL;DR

Update the isStreaming flag in the claude-cli backend provider to return true to align with its internal streaming behavior.

Guidance

  • Verify the issue by checking if the response content is preserved in the session history but not rendered in the webchat UI.
  • Identify the isStreaming flag declaration in the execute.runtime-qivcEpPA.js file (line 653) and update it to return true.
  • Test the fix by sending a message and observing if the response renders progressively and persists correctly after completion.
  • Review related issues (#14212, #33641, #6121) to ensure the fix does not introduce other rendering issues.

Example

// Update line 653 in execute.runtime-qivcEpPA.js
isStreaming: () => true

Notes

This fix assumes that the claude-cli provider's internal streaming behavior is correctly implemented and that updating the isStreaming flag will resolve the UI rendering issue.

Recommendation

Apply the workaround by updating the isStreaming flag to return true, as this fix has been tested locally and resolves the issue completely.

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

openclaw - 💡(How to fix) Fix [Bug] claude-cli provider declares isStreaming: false — webchat responses disappear after render [3 comments, 2 participants]