OpenClaw Main Repairs Cross-Channel Delivery Ordering and Fallbacks
A P1 bundled-channel repair plus Slack and Telegram fixes change how replies, files, previews and final speech settle.
OpenClaw merged a P1 repair for bundled channel delivery contracts into main on 6 August, alongside focused fixes for Slack reply ordering and Telegram final-mode speech. Together they address a deceptively dangerous class of integration bug: the agent completes correctly, but the channel adapter loses context, reorders the result or settles the wrong representation.
The bundled repair covers Telegram, Slack, Discord, QQBot and additional provider paths. The official evidence names four concrete outcomes: pending Telegram replies survive ordinary text containing /command@bot, forwarded file-only Slack messages retain useful file metadata when download fails, Discord webhook sends honor preview policy, and QQBot targets continue to be recognized. The broader pull-request record also describes repairs to media, recipients, provider URLs, polls, SMS chunk limits and delivery targets.
These are merged main changes. The reviewed evidence does not identify a published package that contains all of them.
Operator decision
Prioritize a containing release when any of these are true:
- users send new Slack messages while the agent is still generating;
- Slack workflows depend on forwarded files or file metadata;
- Telegram uses streaming previews, command-like text or automatic final speech;
- Discord webhook previews are governed by policy;
- QQBot, polls, SMS or provider plugins rely on normalized delivery targets and limits.
After upgrading, replay representative channel fixtures. A generic “message sent” smoke test will not cover ordering, fallback or policy inheritance.
Slack: a newer human message is now a conversation boundary
PR #119832 fixes agent progress and final replies appearing above a newer human message sent while the agent was processing. A genuine human message now establishes a boundary: the earlier preview remains in history and subsequent progress or final output appears beneath the newer message.
That is more than visual polish. Message order is part of conversational attribution. If the final answer appears before the question or correction that arrived during processing, users can apply the answer to the wrong turn.
Test at least these sequences:
- send a request, wait for progress, then send a second human message before completion;
- repeat with streaming disabled;
- repeat in a thread and a channel where supported; and
- confirm the first preview is not destructively rewritten after the boundary.
The bundled repair adds a separate Slack fallback: a forwarded file-only message should retain useful file metadata even when the actual download fails. Validate the agent sees a bounded description of the missing file rather than an empty turn, but do not treat metadata as proof that the file contents were retrieved.
Telegram: pending replies and final speech settle once
The bundled channel commit preserves an earlier pending Telegram reply when later ordinary text merely contains a token shaped like /command@bot. Command recognition should not cancel unrelated delivery state just because that string occurs inside normal prose.
PR #83511 addresses final-mode text-to-speech churn. Telegram final text is deferred until speech settles; the adapter then sends one captioned voice note or a proven-safe text fallback. The goal is to avoid a visible text message being posted, edited or replaced as speech generation races the final response.
For acceptance testing, cover successful speech, TTS failure, send failure and fallback. The operator-visible invariant should be one coherent terminal result, not duplicate text plus audio and not silence after a failed voice-note path.
Do not assume this changes every TTS mode or channel. The official source specifically identifies Telegram final-mode settlement.
Discord and QQBot: preserve delivery policy at the last hop
The bundled commit states that Discord webhook sends now retain the existing preview policy. Verify both enabled and disabled previews through the webhook path; testing ordinary bot sends alone is insufficient.
QQBot target recognition is also preserved. If QQBot is operationally important, replay each supported target shape rather than testing only a default conversation. The same principle applies to the broader provider fixes described in PR #116647: URLs, recipients, poll destinations and chunk limits must survive normalization all the way to the adapter that performs delivery.
A practical regression matrix
Use disposable channels and non-sensitive fixtures. Record the requested target, normalized target, delivery mode, adapter result and visible channel result.
| Case | Required proof |
|---|---|
| New Slack message during generation | Final output remains below the newer human turn |
| Forwarded Slack file with forced download failure | Useful metadata remains; no fabricated file content appears |
Telegram text containing /command@bot |
Existing pending reply is not cancelled |
| Telegram final TTS success | One captioned voice note settles the turn |
| Telegram final TTS failure | One safe text fallback settles the turn |
| Discord webhook preview disabled | The final webhook send preserves that policy |
| QQBot/provider target variants | Each resolves to the intended recipient without widening scope |
Also check retries. A fallback that looks correct once may duplicate a result when the provider acknowledges late or the dispatcher retries after an ambiguous timeout.
Scope and evidence limits
The official pull requests and commits report extensive focused testing, including live or provider-backed proof for relevant paths. OpenClaw Academy did not independently replay these scenarios against production channel tenants. We therefore do not claim that unrelated third-party adapters inherit the same fixes.
This report also does not assign a fixed version number. Confirm the containing release or commit before relying on the behavior.
Bottom line
The merged changes make channel output more faithful to the turn that produced it: Slack answers stay below newer human input, forwarded-file context survives download failure, Telegram replies and speech settle without churn, and provider-specific preview and target contracts survive the final hop. Upgrade, then test the ugly fallback paths—not just the happy send.
THE RECEIPTS
Claims should survive the click.
Primary links used for this article are listed openly. If the evidence changes, the verification date changes with it.THE OPERATOR BRIEF