BlueBubbles removal and the imsg iMessage path
OpenClaw no longer ships the BlueBubbles channel. iMessage support runs through the bundledimessage plugin: the Gateway spawns imsg as a child process, locally or through an SSH wrapper, and talks JSON-RPC over stdin/stdout. No server, no webhook, no port.
If your config still contains channels.bluebubbles, migrate it to channels.imessage. The legacy /channels/bluebubbles docs URL redirects to Coming from BlueBubbles, which has the full config translation table and cutover checklist.
What changed
- The supported iMessage path has no BlueBubbles HTTP server, webhook route, REST password, or BlueBubbles plugin runtime.
- OpenClaw reads and watches Messages through
imsgon the Mac where Messages.app is signed in. - Basic send, receive, history, and media use the normal
imsgsurfaces and macOS permissions. - Advanced actions (threaded replies, tapbacks, edit, unsend, effects, read receipts, typing indicators, group management) need the private API bridge: run
imsg launch, which requires SIP disabled. - Linux and Windows gateways can still use iMessage by pointing
channels.imessage.cliPathat an SSH wrapper that runsimsgon the signed-in Mac.
What to do
-
Install and verify
imsgon the Messages Mac: -
Grant Full Disk Access and Automation permissions to the process context that runs
imsgand OpenClaw. -
Translate the old config:
-
Restart the gateway and verify:
- Test DMs, groups, attachments, and any private API actions you depend on before deleting your old BlueBubbles server.
Migration notes
channels.bluebubbles.serverUrlandchannels.bluebubbles.passwordhave no iMessage equivalent; there is no server to reach or authenticate.allowFrom,groupAllowFrom,groups,includeAttachments,attachmentRoots,mediaMaxMb,textChunkLimit, andactions.*keep their meaning underchannels.imessage.channels.imessage.includeAttachmentsis still off by default. Set it explicitly if you expect inbound photos, voice memos, videos, or files to reach the agent.- With
groupPolicy: "allowlist", copy the oldgroupsblock, including any"*"wildcard entry. Group sender allowlists and the group registry are separate gates; agroupsblock with entries but no matchingchat_id(or no"*") drops the message at runtime, and an emptygroupsblock logs a startup warning even though sender filtering still lets messages through. - ACP bindings with
match.channel: "bluebubbles"must change to"imessage". - Old BlueBubbles session keys do not become iMessage session keys. Pairing approvals key off sender handles, so copied
allowFromentries keep working, but conversation history under BlueBubbles session keys does not carry over.