openclaw - ✅(Solved) Fix [Bug]: Matrix not sending intermediate messages since 2026.3.31 [1 pull requests, 3 comments, 3 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#58931Fetched 2026-04-08 02:31:05
View on GitHub
Comments
3
Participants
3
Timeline
8
Reactions
0
Timeline (top)
commented ×3labeled ×2closed ×1cross-referenced ×1

After upgrading from version 2026.3.28 to 2026.3.31, intermediate messages sent during a chat via the Matrix channel are no longer delivered. This occurs regardless of whether the streaming option is set to off or partial.

Root Cause

Affecting: Users using matrix channel. Severity: This issue is significant because for complex tasks, OpenClaw’s intermediate messages often contain critical information. Frequency: always Consequence: missing intermediate messages

Fix Action

Fixed

PR fix notes

PR #59266: Matrix: restore ordered progress delivery with explicit streaming modes

Description (problem / solution / changelog)

Summary

  • preserve ordered embedded block-reply flushes across tool, message, and agent boundaries
  • keep Matrix delivery modes explicit: streaming: "off" stays final-only, streaming: "partial" stays draft-edit mode, and progress-style block replies require explicit channels.matrix.blockStreaming
  • move MiniMax plain-text reasoning/final handling into the MiniMax plugin runtime instead of changing the shared core heuristic
  • add regression coverage and docs/comments for the final Matrix delivery contract

Change Type (select all)

  • Bug fix
  • Refactor required for the fix
  • Docs
  • Feature
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Integrations
  • Auth / tokens
  • Memory / storage
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #58931
  • Related #56387
  • This PR fixes a bug or regression

Root Cause / Regression History

  • embedded session lifecycle ordering assumed block-reply delivery callbacks finished synchronously, so async block flushes could miss the intended pre-tool, pre-message-end, or pre-agent-end boundaries
  • Matrix delivery policy was being broadened while fixing that ordering bug, even though other chat channels keep preview/draft streaming separate from block streaming
  • MiniMax plain-text output behavior belongs to the MiniMax provider runtime, not the shared core reasoning-tag heuristic

User-visible / Behavior Changes

  • Matrix can again deliver progress-style block replies in the intended order when channels.matrix.blockStreaming is enabled
  • Matrix streaming: "off" remains final-only by default instead of silently switching to progress messages
  • Matrix streaming: "partial" remains draft-edit mode, even if blockStreaming: true is also set
  • MiniMax plain-text output handling is now owned by the MiniMax plugin runtime, avoiding a broader core behavior change

Tests

  • extensions/matrix/src/matrix/monitor/handler.test.ts
  • extensions/matrix/src/setup-core.test.ts
  • src/agents/pi-embedded-subscribe.handlers.messages.test.ts
  • src/agents/pi-embedded-subscribe.handlers.lifecycle.test.ts
  • src/agents/pi-embedded-subscribe.handlers.tools.test.ts
  • src/agents/pi-embedded-subscribe.message-end-block-replies-message-tool.test.ts
  • src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.calls-onblockreplyflush-before-tool-execution-start-preserve.test.ts
  • src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.test.ts
  • src/auto-reply/reply/agent-runner-utils.test.ts
  • src/utils/utils-misc.test.ts

Verification

  • pnpm check
  • pnpm test -- extensions/matrix/src/matrix/monitor/handler.test.ts extensions/matrix/src/setup-core.test.ts src/agents/pi-embedded-subscribe.handlers.messages.test.ts src/agents/pi-embedded-subscribe.handlers.lifecycle.test.ts src/agents/pi-embedded-subscribe.handlers.tools.test.ts src/agents/pi-embedded-subscribe.message-end-block-replies-message-tool.test.ts src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.calls-onblockreplyflush-before-tool-execution-start-preserve.test.ts src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.test.ts

Compatibility / Migration

  • Backward compatible? (Yes/No) Yes
  • Config/env changes? (Yes/No) No
  • Migration needed? (Yes/No) No

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Changed files

  • CHANGELOG.md (modified, +1/-0)
  • docs/channels/matrix.md (modified, +3/-0)
  • extensions/matrix/src/config-schema.ts (modified, +1/-0)
  • extensions/matrix/src/matrix/monitor/handler.test-helpers.ts (modified, +2/-0)
  • extensions/matrix/src/matrix/monitor/handler.test.ts (modified, +89/-0)
  • extensions/matrix/src/matrix/monitor/handler.ts (modified, +9/-5)
  • extensions/matrix/src/matrix/monitor/index.ts (modified, +2/-0)
  • extensions/matrix/src/setup-config.ts (modified, +4/-0)
  • extensions/matrix/src/setup-core.test.ts (modified, +41/-0)
  • extensions/matrix/src/types.ts (modified, +9/-0)
  • extensions/minimax/index.ts (modified, +3/-0)
  • src/agents/pi-embedded-subscribe.handlers.lifecycle.test.ts (modified, +12/-12)
  • src/agents/pi-embedded-subscribe.handlers.lifecycle.ts (modified, +49/-17)
  • src/agents/pi-embedded-subscribe.handlers.messages.test.ts (modified, +49/-1)
  • src/agents/pi-embedded-subscribe.handlers.messages.ts (modified, +39/-22)
  • src/agents/pi-embedded-subscribe.handlers.tools.ts (modified, +94/-80)
  • src/agents/pi-embedded-subscribe.handlers.ts (modified, +85/-16)
  • src/agents/pi-embedded-subscribe.handlers.types.ts (modified, +2/-2)
  • src/agents/pi-embedded-subscribe.promise.ts (added, +8/-0)
  • src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.calls-onblockreplyflush-before-tool-execution-start-preserve.test.ts (modified, +78/-0)
  • src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.test.ts (modified, +56/-0)
  • src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-message-end-block-replies-message-tool.test.ts (modified, +3/-3)
  • src/agents/pi-embedded-subscribe.ts (modified, +25/-7)
  • src/auto-reply/reply/agent-runner-utils.test.ts (modified, +20/-0)
  • src/utils/provider-utils.ts (modified, +3/-5)
  • src/utils/utils-misc.test.ts (modified, +11/-3)

Code Example

{
  "channels": {
    "matrix": {
      "enabled": true,
      "accounts": {
        "default": {
          "homeserver": "...",
          "userId": "...",
          "password": "...",
          "name": "...",
          "deviceName": "OpenClaw Gateway",
          "autoJoin": "off",
          "groupPolicy": "open",
          "encryption": true,
          "streaming": "off", // or "partial", doesn't help for intermediate messages problem
          "groups": {
            "...": {
              "requireMention": false
            }
          }
        },
        "bot2": {
          "homeserver": "...",
          "userId": "...",
          "password": "...",
          "name": "...",
          "deviceName": "OpenClaw Gateway",
          "autoJoin": "off",
          "groupPolicy": "disabled",
          "encryption": true,
          "streaming": "off" // or "partial", doesn't help for intermediate messages problem
        }
      }
    }
  }
}

---
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

After upgrading from version 2026.3.28 to 2026.3.31, intermediate messages sent during a chat via the Matrix channel are no longer delivered. This occurs regardless of whether the streaming option is set to off or partial.

Steps to reproduce

  1. Start OpenClaw 2026.3.31 with the Matrix channel configured.
  2. Ask OpenClaw to perform a task that involves sending intermediate messages (e.g., tell me weather in London and Shanghai, but notify me before calling a tool).
  3. Monitor the messages received in Matrix.

Expected behavior

All messages, including intermediate ones, are received.

When streaming is set to partial, intermediate messages should appear before the final message.

Actual behavior

Only the final message is displayed.

When streaming is set to partial, messages appear gradually (streaming), but intermediate messages never appear.

OpenClaw version

2026.3.31

Operating system

Ubuntu 24.04

Install method

npm global

Model

minimax-M2.7

Provider / routing chain

openclaw -> minimax-cn

Additional provider/model setup details

My configuration of matrix:

{
  "channels": {
    "matrix": {
      "enabled": true,
      "accounts": {
        "default": {
          "homeserver": "...",
          "userId": "...",
          "password": "...",
          "name": "...",
          "deviceName": "OpenClaw Gateway",
          "autoJoin": "off",
          "groupPolicy": "open",
          "encryption": true,
          "streaming": "off", // or "partial", doesn't help for intermediate messages problem
          "groups": {
            "...": {
              "requireMention": false
            }
          }
        },
        "bot2": {
          "homeserver": "...",
          "userId": "...",
          "password": "...",
          "name": "...",
          "deviceName": "OpenClaw Gateway",
          "autoJoin": "off",
          "groupPolicy": "disabled",
          "encryption": true,
          "streaming": "off" // or "partial", doesn't help for intermediate messages problem
        }
      }
    }
  }
}

Logs, screenshots, and evidence

Impact and severity

Affecting: Users using matrix channel. Severity: This issue is significant because for complex tasks, OpenClaw’s intermediate messages often contain critical information. Frequency: always Consequence: missing intermediate messages

Additional information

Prior to version 2026.3.31, intermediate messages were sent together with the final message. This meant that for complex tasks, users had to wait a long time before seeing any response in Matrix. However, intermediate messages are now not sent at all.

extent analysis

TL;DR

The most likely fix for the issue of intermediate messages not being delivered via the Matrix channel after upgrading to version 2026.3.31 is to investigate and potentially revert or patch changes related to message handling introduced between versions 2026.3.28 and 2026.3.31.

Guidance

  1. Review Change Logs: Examine the change logs between versions 2026.3.28 and 2026.3.31 to identify any changes that could affect how intermediate messages are handled and sent via the Matrix channel.
  2. Message Handling Code: Investigate the code responsible for sending messages, particularly focusing on how intermediate messages are processed and dispatched, to identify any bugs or changes that might prevent these messages from being sent.
  3. Configuration Impact: Although the streaming option does not seem to affect the issue, double-check if there are any other configuration settings or defaults that have changed between versions that could impact message delivery.
  4. Test with Previous Version: If possible, test the same scenario with version 2026.3.28 to confirm that the issue is indeed related to the upgrade and to understand how the behavior has changed.

Notes

The exact cause of the issue is not immediately clear without more detailed logs or code changes, so a thorough investigation of the changes between the two versions is necessary.

Recommendation

Apply a workaround by potentially downgrading to version 2026.3.28 if the issue is critical and no immediate fix is available for version 2026.3.31, as this version is known to work correctly with intermediate messages.

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…

FAQ

Expected behavior

All messages, including intermediate ones, are received.

When streaming is set to partial, intermediate messages should appear before the final message.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING