Bug
When a user sends a DM to a bot via the built-in msteams channel, two typing indicators are shown simultaneously in the Teams client:
- "Putting an answer together..." — sent by
TeamsHttpStream.sendInformativeUpdate() (streaming reply controller)
- Native Teams typing dots (●●●) — sent by
sendActivity({ type: "typing" }) (reply dispatcher)
Both fire in parallel for personal (DM) conversations, resulting in a visually duplicated typing state.
Expected Behavior
Only one typing indicator should be visible. When streaming is active, the informative update ("Putting an answer together...") should suppress the separate typing activity — or vice versa.
Suggested Fix
Option A: Skip sendTypingIndicator() when a stream exists (i.e., when TeamsHttpStream is instantiated for personal conversations).
Option B: Add a config toggle like channels.msteams.streaming: false or channels.msteams.typingMode: "dots-only" | "informative" | "both" to let users choose.
Location in Source
extensions/msteams/src/reply-stream-controller.ts — createTeamsReplyStreamController().onReplyStart() sends the informative update
extensions/msteams/src/reply-dispatcher.ts — sendTypingIndicator sends { type: "typing" } activity
- Both are wired into
createChannelReplyPipeline() and fire independently
Version
OpenClaw 2026.3.22+
Screenshot
Two indicators visible simultaneously in Teams DM conversation.
Bug
When a user sends a DM to a bot via the built-in
msteamschannel, two typing indicators are shown simultaneously in the Teams client:TeamsHttpStream.sendInformativeUpdate()(streaming reply controller)sendActivity({ type: "typing" })(reply dispatcher)Both fire in parallel for
personal(DM) conversations, resulting in a visually duplicated typing state.Expected Behavior
Only one typing indicator should be visible. When streaming is active, the informative update ("Putting an answer together...") should suppress the separate
typingactivity — or vice versa.Suggested Fix
Option A: Skip
sendTypingIndicator()when a stream exists (i.e., whenTeamsHttpStreamis instantiated for personal conversations).Option B: Add a config toggle like
channels.msteams.streaming: falseorchannels.msteams.typingMode: "dots-only" | "informative" | "both"to let users choose.Location in Source
extensions/msteams/src/reply-stream-controller.ts—createTeamsReplyStreamController().onReplyStart()sends the informative updateextensions/msteams/src/reply-dispatcher.ts—sendTypingIndicatorsends{ type: "typing" }activitycreateChannelReplyPipeline()and fire independentlyVersion
OpenClaw 2026.3.22+
Screenshot
Two indicators visible simultaneously in Teams DM conversation.