You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using MiniMax-M2.5 via its Anthropic-compatible endpoint (api.minimax.io/anthropic) with streamMode: "partial" on Telegram, streaming preview message is not finalized in place. Instead, a second duplicate final message is sent, despite fix in #17218 which works correctly with native Anthropic providers.
Steps to reproduce
Configure a MiniMax provider with Anthropic-compatible API in openclaw.json:
Set it as primary model: "primary": "minimax-portal/MiniMax-M2.5"
Configure Telegram channel with "streamMode": "partial"
Send any message to bot via Telegram
Observe that streaming preview is sent, then a second duplicate final message is sent instead of preview being finalized in place
Expected behavior
The streaming preview message should be edited/finalized in place with the complete response, as implemented in #17218. Only one message should appear in the Telegram chat — not a preview followed by a separate final message.
This works correctly when using native Anthropic providers (e.g., anthropic/claude-sonnet-4-5). The issue only occurs with Anthropic-compatible third-party endpoints like MiniMax.
Actual behavior
Two messages appear in Telegram: first a streaming preview, then a separate final message with the complete response. The preview message is not edited in place — it remains as-is and a new message is appended.
This suggests that MiniMax's Anthropic-compatible streaming endpoint may emit different SSE event sequences (e.g., missing or differently formatted message_stop / content_block_stop events) compared to native Anthropic, causing the finalization logic from #17218 to not trigger.
OpenClaw version
2026.2.15
Operating system
Ubuntu 24.04
Install method
npm global
Logs, screenshots, and evidence
No gateway error logs — stream completes successfully, but preview finalization doesn't trigger. The result is two visible messages in the Telegram chat instead of one edited message.Provider config:"minimax-portal": { "baseUrl": "https://api.minimax.io/anthropic", "apiKey": "minimax-oauth", "api": "anthropic-messages"}Telegram config:"streamMode": "partial"Workaround: Setting `"streamMode": "off"` avoids the issue but disables streaming previews entirely.
Impact and severity
Affected: Telegram users using any Anthropic-compatible third-party provider (MiniMax, etc.)
Severity: Annoying — duplicate messages clutter the chat
Frequency: 100% reproducible on every message with streamMode: "partial"
Consequence: Users see every response twice in Telegram
MiniMax uses api.minimax.io/anthropic with api: "anthropic-messages", which may emit SSE streaming events in a slightly different format/sequence than native Anthropic.
Likely stream finalization detection logic relies on specific Anthropic SSE event patterns (message_stop, content_block_stop) that MiniMax may omit or format differently.
This could potentially affect other Anthropic-compatible providers beyond MiniMax.
Additional testing observations:
✅ zai/glm-4.7: Streaming preview works correctly (message edits in real-time as it generates)
❌ minimax-portal/MiniMax-M2.5: No preview streaming — complete message sent at end
Hypothesis confirmed:
The issue is indeed related to how MiniMax's Anthropic-compatible endpoint emits SSE streaming events. GLM-4.7 provides proper text_delta events that allow Telegram's preview streaming to update the message in place, while MiniMax appears to either:
Not emit streaming events in a compatible format
Emit them in a different sequence that preview streaming logic doesn't recognize
This confirms that streaming detection/finalization logic from #17218 works with native streaming providers but fails with Anthropic-compatible third-party endpoints like MiniMax.
Summary
When using MiniMax-M2.5 via its Anthropic-compatible endpoint (
api.minimax.io/anthropic) withstreamMode: "partial"on Telegram, streaming preview message is not finalized in place. Instead, a second duplicate final message is sent, despite fix in #17218 which works correctly with native Anthropic providers.Steps to reproduce
openclaw.json:"primary": "minimax-portal/MiniMax-M2.5""streamMode": "partial"Expected behavior
The streaming preview message should be edited/finalized in place with the complete response, as implemented in #17218. Only one message should appear in the Telegram chat — not a preview followed by a separate final message.
This works correctly when using native Anthropic providers (e.g.,
anthropic/claude-sonnet-4-5). The issue only occurs with Anthropic-compatible third-party endpoints like MiniMax.Actual behavior
Two messages appear in Telegram: first a streaming preview, then a separate final message with the complete response. The preview message is not edited in place — it remains as-is and a new message is appended.
This suggests that MiniMax's Anthropic-compatible streaming endpoint may emit different SSE event sequences (e.g., missing or differently formatted
message_stop/content_block_stopevents) compared to native Anthropic, causing the finalization logic from #17218 to not trigger.OpenClaw version
2026.2.15
Operating system
Ubuntu 24.04
Install method
npm global
Logs, screenshots, and evidence
Impact and severity
Affected: Telegram users using any Anthropic-compatible third-party provider (MiniMax, etc.)
Severity: Annoying — duplicate messages clutter the chat
Frequency: 100% reproducible on every message with
streamMode: "partial"Consequence: Users see every response twice in Telegram
Additional information
api.minimax.io/anthropicwithapi: "anthropic-messages", which may emit SSE streaming events in a slightly different format/sequence than native Anthropic.message_stop,content_block_stop) that MiniMax may omit or format differently.Additional testing observations:
zai/glm-4.7: Streaming preview works correctly (message edits in real-time as it generates)minimax-portal/MiniMax-M2.5: No preview streaming — complete message sent at endHypothesis confirmed:
The issue is indeed related to how MiniMax's Anthropic-compatible endpoint emits SSE streaming events. GLM-4.7 provides proper
text_deltaevents that allow Telegram's preview streaming to update the message in place, while MiniMax appears to either:Environment:
"streamMode": "partial"api: "anthropic-messages",baseUrl: "https://api.minimax.io/anthropic"This confirms that streaming detection/finalization logic from #17218 works with native streaming providers but fails with Anthropic-compatible third-party endpoints like MiniMax.