openclaw - 💡(How to fix) Fix [Bug]: Regression: tool-execution replies intermittently not delivered in webchat on 2026.3.22+ (works on 2026.3.13) [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#53790Fetched 2026-04-08 01:23:23
View on GitHub
Comments
0
Participants
1
Timeline
2
Reactions
0
Participants
Timeline (top)
labeled ×2

After upgrading from 2026.3.13 to 2026.3.22 / 2026.3.23-2, webchat tool workflows become inconsistent: the assistant acknowledges work, but tool-result replies are intermittently not delivered back to chat. Rolling back to 2026.3.13 restores expected behavior. ure in tool-result flows.

Root Cause

After upgrading from 2026.3.13 to 2026.3.22 / 2026.3.23-2, webchat tool workflows become inconsistent: the assistant acknowledges work, but tool-result replies are intermittently not delivered back to chat. Rolling back to 2026.3.13 restores expected behavior. ure in tool-result flows.

Fix Action

Fix / Workaround

  1. Upgrade to 2026.3.22 or 2026.3.23-2.
  2. In webchat, request tool-heavy tasks (read/exec/browser flows).
  3. Observe intermittent pattern:
Regression window clearly bounded: 3.13 OK vs 3.22+ KO.
Package diff inspection suggests major reply pipeline changes in 3.22+:
  reply-payloads-dedupe
  shouldSuppressMessagingToolReplies
updated route-reply/dispatch path
This may be suppressing/deduping legitimate tool-result payloads in some webchat flows.

Code Example

Regression window clearly bounded: 3.13 OK vs 3.22+ KO.
Package diff inspection suggests major reply pipeline changes in 3.22+:
  reply-payloads-dedupe
  shouldSuppressMessagingToolReplies
updated route-reply/dispatch path
This may be suppressing/deduping legitimate tool-result payloads in some webchat flows.
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Summary

After upgrading from 2026.3.13 to 2026.3.22 / 2026.3.23-2, webchat tool workflows become inconsistent: the assistant acknowledges work, but tool-result replies are intermittently not delivered back to chat. Rolling back to 2026.3.13 restores expected behavior. ure in tool-result flows.

Steps to reproduce

Repro (high level)

  1. Upgrade to 2026.3.22 or 2026.3.23-2.
  2. In webchat, request tool-heavy tasks (read/exec/browser flows).
  3. Observe intermittent pattern:
  • assistant says it will execute,
  • sometimes execution appears to happen internally,
  • but final tool-result reply is missing/inconsistent.
  1. Roll back to 2026.3.13.
  2. Same workflows return to normal (reliable result delivery).

Expected behavior

Tool workflows should always return a final visible result to webchat when execution completes.

Actual behavior

On 3.22+:

intermittent missing final reply / dropped callback-like behavior, conversation-level “I’ll do it” without actual delivered result in some turns.

OpenClaw version

2026.3.22 // 2026.3.23-2

Operating system

Linux (CentOS/RHEL-like), Node v22.22.0

Install method

npm

Model

gpt-5.3-codex

Provider / routing chain

openclaw -> webchat

Additional provider/model setup details

Logs, screenshots, and evidence

Regression window clearly bounded: 3.13 OK vs 3.22+ KO.
Package diff inspection suggests major reply pipeline changes in 3.22+:
  reply-payloads-dedupe
  shouldSuppressMessagingToolReplies
updated route-reply/dispatch path
This may be suppressing/deduping legitimate tool-result payloads in some webchat flows.

Impact and severity

affected: user experience in webchat severity: annoying, cant execute anything frencuency: since the upgrade is done

Additional information

There were also service restarts/reconnects during troubleshooting, but the core reproducible behavior is tied to version line:

3.13 stable delivery, 3.22+ intermittent delivery failure in tool-result flows.

a conversation where it can be "visually" see that the model "want" to answer but the tools isn't executed

<img width="1518" height="700" alt="Image" src="https://github.com/user-attachments/assets/4fe2ea70-29ef-4e67-aef2-c2428a6d0435" />

extent analysis

Fix Plan

To address the intermittent missing final reply issue in tool-result flows after upgrading to 2026.3.22 or 2026.3.23-2, we will modify the reply-payloads-dedupe and shouldSuppressMessagingToolReplies functions to ensure legitimate tool-result payloads are not suppressed or deduped.

Step-by-Step Solution:

  1. Review and adjust reply-payloads-dedupe:

    • Inspect the reply-payloads-dedupe function to identify the logic that might be causing the suppression of legitimate tool-result payloads.
    • Adjust the function to exclude tool-result payloads from deduplication based on specific identifiers or flags.
  2. Modify shouldSuppressMessagingToolReplies:

    • Examine the shouldSuppressMessagingToolReplies function to understand under what conditions it suppresses messaging tool replies.
    • Update the function to not suppress replies for tool-result flows, potentially by adding a conditional check for the type of reply or the context in which it's being sent.
  3. Update route-reply/dispatch path:

    • Review the changes made to the route-reply/dispatch path in the 3.22+ versions.
    • Ensure that the updated path correctly handles tool-result payloads and does not inadvertently drop or suppress them.

Example Code Adjustments:

// Example adjustment to reply-payloads-dedupe
function replyPayloadsDedupe(payloads) {
  // Filter out tool-result payloads from deduplication
  return payloads.filter(payload =>!payload.isToolResult);
}

// Example adjustment to shouldSuppressMessagingToolReplies
function shouldSuppressMessagingToolReplies(reply) {
  // Do not suppress tool-result replies
  if (reply.type === 'toolResult') {
    return false;
  }
  // Existing suppression logic here
}

// Ensure route-reply/dispatch path correctly handles tool-result payloads
// This might involve updating routing conditions or adding specific handling for tool-result types

Verification

To verify that the fix worked:

  • Deploy the updated code to the production environment.
  • Perform the steps to reproduce the issue as described.
  • Monitor the behavior of tool-result flows in webchat to ensure that final replies are consistently delivered.
  • Test with various tool-heavy tasks to confirm the reliability of result delivery across different scenarios.

Extra Tips

  • Regularly review and test changes to message handling and dispatch logic to prevent similar issues.
  • Consider implementing logging or monitoring to detect and alert on potential reply suppression or deduplication issues in the future.
  • Ensure that any updates to the reply-payloads-dedupe and shouldSuppressMessagingToolReplies functions are thoroughly tested to avoid unintended side effects on other types of messages or workflows.

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

Tool workflows should always return a final visible result to webchat when execution completes.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING