Summary
After the msteams SDK rebase (#76262), Teams streaming double-posts replies longer than ~4000 chars: the streamed preview persists AND the full final text is re-sent via chunked/block fallback. Short replies collapse correctly. This is a regression of #59297 (which fixed the same >4000-char duplicate on the pre-rebase pipeline).
Environment
- OpenClaw: 2026.6.1
- Channel: channels.msteams, streaming.mode=partial
- Provider: bifrost-claude/claude-opus-4-8 via Bifrost -> Azure AI Foundry Anthropic
- Install: openshell sandbox image (K3s on Docker)
Steps to reproduce
- channels.msteams.streaming.mode=partial
- Send a prompt that yields a >4000-char reply in a DM
- Observe: the streamed preview AND a second full copy of the reply (chunked block delivery) both persist as separate bubbles. Replies under 4000 chars collapse correctly (single bubble).
Root cause (from PR history + source)
Expected
When a streamed reply exceeds the limit and falls back to block delivery, the fallback should trim the already-streamed prefix (or be suppressed entirely if the prefix covered the full text), as #59297 did. No duplicate.
Related
Workaround
channels.msteams.streaming.mode: "off" (loses streaming UX).
Summary
After the msteams SDK rebase (#76262), Teams streaming double-posts replies longer than ~4000 chars: the streamed preview persists AND the full final text is re-sent via chunked/block fallback. Short replies collapse correctly. This is a regression of #59297 (which fixed the same >4000-char duplicate on the pre-rebase pipeline).
Environment
Steps to reproduce
Root cause (from PR history + source)
Expected
When a streamed reply exceeds the limit and falls back to block delivery, the fallback should trim the already-streamed prefix (or be suppressed entirely if the prefix covered the full text), as #59297 did. No duplicate.
Related
Workaround
channels.msteams.streaming.mode: "off" (loses streaming UX).