Skip to content

[Bug]: Feishu Duplicate message sent after streaming card completes — blockStreamingCoalesce regression since v2026.4.12 #67791

@hipposonCN

Description

@hipposonCN

Bug type

Regression (worked before, now fails)

Beta release blocker

No

[Feishu] Multiple regressions since v2026.4.12: Duplicate replies and agent process flooding

Summary

The Feishu channel has become significantly noisier following the v2026.4.12 update. There are two primary regressions making the user experience much worse than v2026.4.11:

  1. Streaming Duplicates: With streaming enabled, every completion results in two messages: an interactive card and a redundant final text message.
  2. Intermediate Process Flooding: Agent progress updates (from the message tool) are sent as standalone messages instead of being coalesced or suppressed.

Environment

  • OpenClaw version: v2026.4.15-beta.1 (943cb47)
  • First broken version: v2026.4.12
  • Channel: Feishu (Lark) via WebSocket

Configuration

{
  "channels": {
    "feishu": {
      "streaming": true,
      "blockStreamingCoalesce": { "enabled": true }
    }
  }
}

Steps to Reproduce

Configure Feishu as shown above.
Send a query to the agent.
Observe two responses: an interactive card followed by a duplicate text message.
During long tasks, observe multiple standalone messages for every progress update.

Expected Behavior

One message per reply: The final text should be coalesced into the card.
Coalesced process updates: Intermediate messages should ideally update a single "working..." card or be suppressed based on config.

Actual Behavior

The gateway log confirms a redundant dispatch even with coalescence enabled: [feishu] feishu[default]: dispatch complete (queuedFinal=true, replies=1)

Workaround

Setting "streaming": false removes the final duplicate but does not stop the intermediate flooding, and degrades the real-time UX.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingclose:already-fixedclaw-marshal labeldedupe:childDuplicate issue/PR child in dedupe clusterregressionBehavior that previously worked and now fails

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions