Messaging channel bugs after a gateway restart
These three faults look unrelated but share a root: the gateway re-registering channel state on startup without clearing what was there before. They tend to appear together after an upgrade or a crash-restart, so it is worth checking all three at once rather than chasing them one at a time.
Telegram Skill Commands Duplicated with _2, _3 Suffixes
After restarting the gateway, Telegram shows duplicate skill commands like /summarize_2, /summarize_3. This happens because the Telegram bot API appends suffixes when commands are re-registered instead of replacing existing ones.
✅ Fix 1 — Clear Telegram Bot Commands Before Restart
# Clear all Telegram bot commands before restarting openclaw telegram clear-commands --bot YOUR_BOT_TOKEN # Or clear for a specific chat scope openclaw telegram clear-commands --bot YOUR_BOT_TOKEN --scope all_private_chats # Then restart the gateway openclaw gateway restart
✅ Fix 2 — Enable Command Deduplication in Config
channels:
telegram:
commands:
deduplicate: true # Auto-clear before re-registering
clearOnStartup: true # Remove stale commands on bootTelegram's Bot API keeps a command registry server-side. When OpenClaw re-registers commands on startup without first clearing the existing ones, Telegram appends _2, _3 suffixes to avoid conflicts.
Heartbeat Messages Leaking to Wrong Channels / Discord DMs
After upgrades to v2026.2.24+, heartbeat messages that were previously sent only to configured channels started appearing in Discord DMs and unrelated channels. This is a delivery default change introduced in v2026.2.24-beta.
✅ Fix 1 — Explicitly Scope Heartbeat Delivery
agents:
defaults:
heartbeat:
deliverTo:
- channel: discord
scope: guild_channel # Only guild channels, not DMs
channelId: "1234567890123456789"✅ Fix 2 — Disable Heartbeat for Affected Channels
channels:
discord:
heartbeat:
enabled: false # Disable heartbeat for Discord entirelyThe heartbeat delivery default changed from 'configured channel only' to 'all active sessions'. This means heartbeat messages now reach DMs and group chats that have open sessions. Fix: add explicit deliverTo scoping.
Streaming UI Shows Merged/Concatenated Text Between Agent Turns
A known bug in v2026.3.1 and earlier: when streaming responses across multiple turns, the deltaBuffer is missing a cross-turn separator. This causes the end of one agent response to be merged with the beginning of the next.
- →Agent says: 'Sure, here is your summary:Hello! How can I help you?' (two responses merged)
- →Markdown renders incorrectly — previous response's closing ``` bleeds into next
- →Only visible in streaming mode — non-streaming works correctly
✅ Fix 1 — Upgrade to v2026.3.2 (Official Fix)
# Upgrade to v2026.3.2 or later npm install -g openclaw@latest # Verify openclaw --version # Should show 2026.3.2 or higher
✅ Fix 2 — Disable Streaming Temporarily (Workaround)
# Temporarily disable streaming in openclaw.yaml
agents:
defaults:
streaming: falseIssue #35308: The deltaBuffer accumulates token chunks without flushing the separator (a newline+null) between agent turns. This was introduced in the streaming refactor in v2026.2.25-beta.1. Fixed in v2026.3.2.