-
-
Notifications
You must be signed in to change notification settings - Fork 52.6k
Description
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
- Configure Discord channel with
blockStreaming: true - Send a message to the bot
- Bot shows "typing" indicator, agent generates a response (visible in session JSONL), but no text appears in Discord
- The
send_messagetool 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