openclaw - 💡(How to fix) Fix [Feature]: Config option to silently swallow empty-turn responses instead of delivering error text [1 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#70440Fetched 2026-04-23 07:24:46
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Author
Participants

We were carrying a local patch to dist/pi-embedded-runner-*.js that stubbed the incomplete-turn text payload to an empty string on Signal. Retiring it; would much prefer a supported config knob.

Error Message

deliver: silent # error | silent

  • error (current default) — existing behavior, delivers a user-visible error text payload
  • silent — log the failure at WARN level server-side (still visible via journalctl), deliver nothing to the channel For text-only channels the current behavior is fine — the user sees the error and can retry naturally. On TTS-enabled channels it's actively harmful.
  • #70396 [Bug]: Incomplete turn false positive — messages sent but error still surfaced

Root Cause

We were carrying a local patch to dist/pi-embedded-runner-*.js that stubbed the incomplete-turn text payload to an empty string on Signal. Retiring it; would much prefer a supported config knob.

Fix Action

Fix / Workaround

We were carrying a local patch to dist/pi-embedded-runner-*.js that stubbed the incomplete-turn text payload to an empty string on Signal. Retiring it; would much prefer a supported config knob.

Code Example

incomplete_turns:
  deliver: silent   # error | silent
RAW_BUFFERClick to expand / collapse

Ask

Add a config option (global or per-channel) to silently swallow empty-turn responses server-side instead of delivering "Agent couldn't generate a response" (or similar) text to the channel.

Proposed:

incomplete_turns:
  deliver: silent   # error | silent
  • error (current default) — existing behavior, delivers a user-visible error text payload
  • silent — log the failure at WARN level server-side (still visible via journalctl), deliver nothing to the channel

Why

Empty-turn events are rare in steady-state (mostly transient races around shim flushes / session creation / provider hiccups) but on voice channels they cascade: on Signal with TTS enabled, the gateway delivers "Agent couldn't generate a response" as text, the TTS layer converts that verbatim to an audio message, and the user gets an orphan voice note telling them their AI assistant failed. It's a bad UX for a transient condition.

For text-only channels the current behavior is fine — the user sees the error and can retry naturally. On TTS-enabled channels it's actively harmful.

Related

  • #67189 LCM 0.9.0: Empty assistant messages accumulate from tool-only turns
  • #66768 [Bug]: Empty completed turns in ghcr.io/openclaw/openclaw:2026.4.14
  • #69538 OpenRouter provider returns empty incomplete turn with valid auth on 2026.4.15
  • #70396 [Bug]: Incomplete turn false positive — messages sent but error still surfaced

Context

We were carrying a local patch to dist/pi-embedded-runner-*.js that stubbed the incomplete-turn text payload to an empty string on Signal. Retiring it; would much prefer a supported config knob.

Env

  • [email protected]
  • Signal channel with TTS auto-delivery (i.e. where this cascade manifests)

extent analysis

TL;DR

Add a configuration option incomplete_turns with deliver set to silent to prevent delivering "Agent couldn't generate a response" text to channels.

Guidance

  • Review the proposed configuration option incomplete_turns with deliver set to silent to understand its behavior.
  • Consider the impact of empty-turn events on different types of channels, such as voice channels with TTS enabled and text-only channels.
  • Evaluate the trade-offs between logging failures at WARN level server-side and delivering error text to the channel.
  • Test the configuration option in a controlled environment to ensure it resolves the issue without introducing new problems.

Example

incomplete_turns:
  deliver: silent

This configuration option can be added to the existing configuration file to enable silent swallowing of empty-turn responses.

Notes

The solution may not apply to all versions of openclaw, as the issue is specific to version 2026.4.21. Additionally, the configuration option may have unintended consequences in certain environments, so thorough testing is recommended.

Recommendation

Apply the workaround by adding the incomplete_turns configuration option with deliver set to silent, as it provides a targeted solution to the issue without requiring an upgrade to a fixed version.

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 [Feature]: Config option to silently swallow empty-turn responses instead of delivering error text [1 participants]