Skip to content

Discord block streaming broken since #24969 — all block payloads suppressed, not just reasoning #25836

@pewallin

Description

@pewallin

Summary

PR #24969 (commit 38da3f40c) introduced an overly broad filter in the Discord deliver callback that suppresses all info.kind === "block" payloads. This breaks block streaming entirely — when blockStreaming: true is configured, no text responses reach Discord.

The intent was to suppress reasoning/thinking blocks (#24532), but block is the primary delivery mechanism for streamed text. Only isReasoning payloads should be filtered.

Steps to reproduce

  1. Configure Discord channel with blockStreaming: true
  2. Send a message to the bot
  3. Bot shows "typing" indicator, agent generates a response (visible in session JSONL), but no text appears in Discord
  4. The send_message tool still works (different delivery path)

Root cause

In src/discord/monitor/message-handler.process.ts, the deliver callback:

if (info.kind === "block") {
  // Block payloads carry reasoning/thinking content that should not be
  // delivered to external channels. Skip them regardless of streamMode.
  return;
}

This drops all block payloads. The correct check should use the isReasoning flag (added in commit 7d76c241f):

if (payload.isReasoning) {
  // Reasoning/thinking payloads should not be delivered to Discord.
  return;
}

Expected behavior

Text responses stream to Discord as block payloads. Only reasoning/thinking blocks are suppressed.

Actual behavior

All block payloads are dropped. Discord receives no streamed text. Only final payloads get through, so users without block streaming may not notice.

OpenClaw version

2026.2.23

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions