OpenClaw Development Digest: Enhancing Delivery Reliability and Provider Compatibility
Merged PRs
- fix(telegram): drain outbound queue after polling reconnect Original PR
- fix(cron): mirror announce delivery into destination session Original PR
- refactor: deprecate legacy reply history helpers Original PR
- refactor(cron): resolve delivery from session context Original PR
- fix: prune replay control messages Original PR
- fix(qa): emit Discord trigger timing artifacts Original PR
- fix(codex): preserve Discord sender metadata in Gateway IPC chat.history Original PR
- [Fix] Avoid eager file-transfer policy loading Original PR
- fix(ui): avoid inline webchat image previews Original PR
- fix: strip delivery function response leaks Original PR
- fix: route active-memory Telegram recall through provider Original PR
- refactor: migrate remaining channel history windows Original PR
- fix(line): stop silent push failure on lowercased recipients (#81628) Original PR
- fix: strip attributed final tags Original PR
- fix: preserve cron session transcript rotation Original PR
- fix: preserve media completion message-tool delivery Original PR
- fix: strip adjacent function_response sanitizer leak Original PR
- docs: document channel turn guardrails Original PR
- fix(tts): preserve command voice delivery decision Original PR
- refactor: centralize channel turn media facts Original PR
- [AI-assisted] fix(transport): strip empty-string reasoning_content from OpenRouter assistant replay Original PR
- fix(codex): fail fast after quiescent turn completion stalls Original PR
- refactor: run prepared Discord and Slack turns Original PR
- fix(providers): preserve Kimi MiMo reasoning replay Original PR
- feat(wizard): add CLI onboarding i18n Original PR
- fix(discord): suppress link embeds by default Original PR
- Keep Codex compaction on native threads Original PR
- fix(gateway/approvals): treat turnSourceTo as optional in chat approval bridge (#82132) Original PR
- fix(codex): time out silent app-server turns Original PR
- fix(message-tool): rename
typeschema property to avoid JSON Schema keyword collision Original PR
Key Changes
Delivery Reliability & Transport Fixes
Several critical updates address silent message loss and delivery failures across different channels:
- Telegram Outbound Recovery: Fixed a gap where polling reconnects did not trigger a drain of the outbound delivery queue, which previously left failed replies stranded until a full gateway restart (Fixes #50040).
- LINE Case-Sensitivity: Resolved a high-severity bug where
cron-toolsession-key fallbacks produced lowercased recipients. Since LINE IDs are case-sensitive, this caused HTTP 400 errors and silent push failures for long-running tasks (Fixes #81628). - Discord Link Embeds: Outbound sends now request
SuppressEmbedsby default to reduce noise, though this can be overridden via configuration.
Provider Compatibility & Reasoning Replay
To support advanced reasoning models, the team has refined how assistant history is replayed to providers:
- Kimi/MiMo Support: Preserved
reasoning_contentfor Kimi K2.6 and MiMo V2.6 during tool-call follow-up turns, as these providers require the full reasoning history to avoid HTTP 400 errors (Fixes #82139). - OpenRouter/DeepSeek Fix: Added a guard to strip empty-string
reasoning_contentfrom OpenRouter assistant replays, preventing HTTP 500 errors when tool calls are present (Fixes #82150). - JSON Schema Collision: Renamed the
typeproperty tochannelTypein themessagetool schema to avoid collisions with JSON-Schema keywords, which was causing crashes on NVIDIA NIM providers.
Core Refactors & DX Improvements
- CLI i18n: The onboarding wizard now supports localization (Simplified and Traditional Chinese), moving away from hard-coded English strings to a locale catalog.
- Channel History Migration: Migrated Feishu, iMessage, LINE, Mattermost, MSTeams, Signal, Telegram, and WhatsApp to a centralized core channel history-window facade, reducing adapter-local complexity.
- Codex Compaction: Codex app-server compaction is now kept on native threads to avoid OAuth auth mismatches when falling back to public OpenAI summarizers (Fixes #82008).
Sanitization & Hygiene
- Control Message Pruning: Implemented sanitization to strip internal runtime metadata,
NO_REPLYsentinels, and silent control payloads from provider-bound replay text, ensuring the model doesn't receive internal system noise (Fixes #76629). - XML Tag Stripping: Enhanced the user-facing sanitizer to strip attributed and self-closing
<final>tags (Fixes #65867) and adjacent<function_response>blocks to prevent internal workflow scaffolding from leaking into chat (Fixes #47444).
Impact
These changes significantly harden the reliability of the gateway's outbound communication, particularly for long-running tasks on LINE and Telegram. By refining the replay logic for reasoning-capable models like Kimi and DeepSeek, OpenClaw now supports more complex multi-turn tool workflows without provider-side crashes. Furthermore, the transition to a centralized history window and the introduction of CLI i18n improve both the maintainability of the codebase and the accessibility of the setup process for a global user base.