-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
[Bug]: Teams streaming delivers normal-length replies twice in 2026.5.28 #90398
Copy link
Copy link
Closed as not planned
Closed as not planned
Copy link
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.staleMarked as stale due to inactivityMarked as stale due to inactivity
Description
Metadata
Metadata
Assignees
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.staleMarked as stale due to inactivityMarked as stale due to inactivity
Type
Fields
Priority
None yet
Summary
OpenClaw 2026.5.28 with the Microsoft Teams channel enabled delivers every assistant reply twice: once as a streamed/typing preview, then again as a separate finalized
MessageActivity. The two are not merged in the Teams client — both persist as visible bubbles in the conversation.This affects normal-length replies, not just large ones. Disabling streaming (
channels.msteams.streaming.mode: "off") is a viable workaround, but live progress streaming becomes unavailable on Teams.Environment
2026.5.28ghcr.io/nvidia/openshell-community/sandboxes/openclaw:latestwith extra plugin layer (@openclaw/[email protected],@openclaw/[email protected],@martian-engineering/lossless-claw)channels.msteamswith native config (no custom streaming overrides — bug occurs on defaults)bifrost-claude/claude-opus-4-8via Bifrost v1.5.7 → Azure AI Foundry Anthropic endpoint2026.5.7(NemoClaw was on 5.7 prior to the 5.28 upgrade yesterday; this duplicate behavior started immediately after the image swap)Steps to reproduce
channels.msteams.enabled: true.channels.msteams.streaming.mode— let it default.Expected behavior
The Teams native streaming transport (
pushStreamChunk+addStreamFinal()) should result in one visible message: the streaming preview gets replaced in place by the finalMessageActivitycarrying thestreamFinalmarker.Actual behavior
The typing preview and the streamFinal message both persist as separate bubbles. Users see every reply duplicated.
What we've ruled out
2026.5.7immediately before the 5.28 upgrade. No Teams client change in that window.createTeamsReplyStreamController.preparePayload()andTeamsHttpStream.update(). Our duplicates happen on small and large replies, so the fallback-suppression path that fix introduced may have an unhandled case in 5.28.Workaround
{ "channels": { "msteams": { "streaming": { "mode": "off" } } } }Each reply now becomes one final
MessageActivityposted via the normal delivery path. UX loses the live-typing preview but the duplication is gone.Source-code area to investigate
Based on what we traced inside our deployed image:
extensions/msteams/src/reply-stream-controller.ts(per [Bug]: [Teams] Duplicate message rendering — same response appears twice in chat #70178's fix description) — particularlypreparePayload()and the fallback-delivery suppressionextensions/msteams/src/streaming-message.ts—update()andfinalize()paths@microsoft/teams.aiflush/close: the bundleddist-CmqLk4zC.js(line ~1893) showsflush()pushingTypingActivitychunks while buildingfinalActivity, andclose()constructingnew MessageActivity(this.text).addStreamFinal()and callingthis.send(activity)The most likely culprit is that
reply-stream-controller.tsis no longer detecting that the streamed text already covered the reply, so it falls through to the fallback delivery path and posts the final message regardless.Cross-references
Impact
High for Teams-based deployments. Every assistant message is duplicated, which:
Affected platform: Microsoft Teams (the duplicate does not appear on Slack, Discord, Telegram, or other channels in our testing).