OpenClaw WhatsApp: Every Image or File Gets Sent Twice (2026.4.15 Regression)
You send one message. Your agent generates one chart, one image, or one file. WhatsApp delivers two copies — a few hundred milliseconds apart. Your outbound media folder shows two files staged for the same request. Your gateway logs say "Sent media reply" twice for the same conversation.
This is a confirmed regression introduced in OpenClaw 2026.4.15. It affects anyone using WhatsApp with channels.whatsapp.blockStreaming: false and an agent that returns media responses.
What's happening
The root cause is a double-invocation in the reply-media pipeline. A stack trace from the 4.15 bundle shows resolveOutboundAttachmentFromUrl being called twice for the same mediaUrl on a single reply — once from the normal reply path and once from a second code path introduced in 4.15's reply-media refactor.
Specifically, persistLocalReplyMedia in reply-media-paths.runtime-B671n_FS.js calls normalizeMediaSource, which in turn triggers resolveOutboundAttachmentFromUrl a second time. The result: two outbound files under ~/.openclaw/media/outbound/ staged within the same second, and two WhatsApp sends.
Who's affected
- OpenClaw 2026.4.15 (commit 041266a)
- WhatsApp channel enabled with
blockStreaming: false - Any agent returning a media response (image, chart, PDF, audio)
- Confirmed on Ubuntu Server 24.04, npm global install
If you're on 2026.4.14 or earlier, you're not affected — this is a 4.15-only regression.
Workarounds while waiting for a patch
Option 1: Roll back to 2026.4.14 (safest)
npm install -g openclaw@2026.4.14
openclaw gateway restart
4.14 doesn't have this bug. You'll lose 4.15's other fixes, but your WhatsApp media replies will work correctly.
Option 2: Enable blockStreaming
Set channels.whatsapp.blockStreaming: true in your config. This changes how replies are flushed and appears to avoid the double-fire path in 4.15. Side effect: streaming responses are blocked, so text replies may feel slightly slower.
# In your openclaw.json
"channels": {
"whatsapp": {
"blockStreaming": true
}
}
Option 3: Restrict media tool permissions temporarily
If your agent doesn't need to send media proactively, add tools.deny: ["group:media"] to disable the media tool group until a fix ships. Text replies are unaffected.
How to confirm you're hitting this bug
# Check for duplicate outbound files (same second, same session)
ls -lt ~/.openclaw/media/outbound/ | head -20
# Check gateway logs for duplicate sends
grep "Sent media reply" ~/.openclaw/logs/gateway.log | uniq -D
If you see two files with nearly identical timestamps for the same conversation, you're hitting #68056.
Status
This is an open bug as of April 18, 2026. Watch GitHub issue #68056 for a patch. Given it's a regression, expect a point release fix soon.
Hitting this or another OpenClaw setup issue? ClawReady offers fixed-price setup and troubleshooting — we've seen most of these bugs before you have.