Environment
- OpenClaw: 2026.4.5 | macOS 15.4 (arm64, Mac mini)
- BlueBubbles: connected, Private API disabled
- Slack: also affected
What's happening
When an image is sent via iMessage (BlueBubbles), the agent receives the message but the attachment is never written to ~/.openclaw/media/inbound/. The agent can't read or describe the image.
Root cause found (two bugs)
Bug 1 (patched locally): downloadBlueBubblesAttachment() is called without allowPrivateNetwork in its opts. Since BlueBubbles runs on a local LAN IP, the SSRF policy silently blocks the download — even though network.dangerouslyAllowPrivateNetwork: true is set in config. Fix: pass allowPrivateNetwork: isPrivateNetworkOptInEnabled(account.config) to the download call in channel.runtime.
Bug 2 (still investigating): Even with Bug 1 fixed, attachments still don't arrive. The download loop skips any attachment where attachment.guid is falsy. We believe BlueBubbles webhooks may not include attachment GUIDs without Private API enabled.
Question: Does BlueBubbles include attachment.guid in inbound webhook payloads without Private API? If not, is there an alternative way to get attachment GUIDs via the REST API?
Full details + code analysis: https://github.com/openclaw/openclaw/issues/62248