Auth model
Local macOS host + imsg CLI / JSON-RPC bridge
The legacy iMessage route is still documentable, but new setups should bias toward BlueBubbles.
Legacy iMessage support for OpenClaw via imsg: transition guidance, risk notes, verification expectations, and when to prefer BlueBubbles instead.
Auth model
Local macOS host + imsg CLI / JSON-RPC bridge
Safety stance
Present this lane as a migration or compatibility path, not the default recommendation.
Verification ritual
If you keep legacy iMessage, test send/receive after restarts and document the migration path to BlueBubbles.
Rollout mode
Legacy path
Legacy iMessage lane
This path runs `imsg rpc` over stdio with no separate daemon, but it depends on macOS Messages access, Full Disk Access, Automation approval, and careful pairing and group gating.
Watch the bridge
This route can accumulate hidden host assumptions and becomes costly to maintain compared with BlueBubbles.
OpenClaw’s
imessagechannel is a legacy compatibility lane built onimsgJSON-RPC over stdio. The upstream docs are explicit: new iMessage deployments should use BlueBubbles instead. Treat this page as maintenance guidance for an existing path, not as the default way to add Apple messaging, and keep a migration plan that follows the trust themes in /guides/openclaw-pairing-explained.
For a new deployment, the answer is usually no; instead treat BlueBubbles and the remote pairings described in /guides/openclaw-remote-dashboard-access-playbook as the future-friendly option.
Keep the configuration checklist as explicit as the one in /guides/openclaw-configuration so you can see every dependency before touching the host.
The official channel docs say two things very clearly:
imessage is legacy support via imsgThat recommendation should stay visible throughout the entire operator flow because it changes how you judge this lane.
Use imessage only when one of these is true:
imsg,If you are choosing from scratch, BlueBubbles is the better starting point.
Legacy iMessage can feel deceptively simple because there is no public webhook service to stand up and no separate daemon port to expose.
But the channel still depends on a stack of local assumptions:
imsg binary that OpenClaw can run,The gateway spawns imsg rpc over stdio. That means the integration is not “set a token and move on.” It is a host-coupled runtime lane.
The Mac has to be signed into Messages for the identity you intend to operate.
If the Apple identity or Messages state is wrong, later routing or allowlist debugging is wasted motion.
The official docs call out two requirements that matter operationally:
imsgThis is a classic macOS footgun: permissions are granted to a process context, not to your abstract intent, so treat the install steps like the runners in /guides/openclaw-installation-troubleshooting document.
OpenClaw only needs a stdio-compatible cliPath, which is why the docs allow either:
imsg binary path,imsg there.That flexibility is useful, but it also means reliability depends on the exact wrapper and host context you chose.
Once messages arrive, normal channel policy still applies:
groupPolicy, groupAllowFrom, and groups controls,So even a healthy Mac host can still produce intentional silence if policy is restrictive.
If you must keep this lane alive, keep the first configuration narrow and explicit.
{
channels: {
imessage: {
enabled: true,
cliPath: '/usr/local/bin/imsg',
dbPath: '/Users/<you>/Library/Messages/chat.db',
},
},
}
The upstream docs document the basic local setup as:
brew install steipete/tap/imsg
imsg rpc --help
If imsg rpc --help is not healthy, do not continue into policy work. Fix the runtime first.
The official docs recommend a dedicated Apple identity and even a dedicated macOS user when you want cleaner isolation.
That recommendation is not cosmetic. It changes the operational risk profile:
If this lane matters enough to keep, it matters enough to isolate.
This is the highest-value legacy iMessage check.
The docs note that Full Disk Access is required for the process context running OpenClaw / imsg, and that a one-time interactive command in that same context may be needed to trigger prompts.
That means these are not equivalent:
If the runtime context changes, re-validate permissions there.
The default DM trust model is pairing, and the official setup flow explicitly includes approving the first DM.
openclaw pairing list imessage
openclaw pairing approve imessage <CODE>
That is the right posture for a legacy lane because it makes trust decisions visible while you assess whether the channel should remain in service at all, mirroring the entry checklist in /troubleshooting/solutions/control-ui-pairing-required.
The iMessage docs expose several group-specific details that are easy to miss if you treat everything as “just chats.”
The documented group modes are:
allowlistopendisabledGroup sender control uses groupAllowFrom.
The docs also note a runtime fallback: if groupAllowFrom is unset, group sender checks fall back to allowFrom when available, so keep the monitoring mindset from /guides/openclaw-operability-and-observability when you need to correlate runtime guards with host signals.
That is useful, but it is safer to configure group intent explicitly instead of relying on fallback behavior.
The official docs are explicit:
That is a real operational limitation. If group behavior matters to you, document the mention pattern strategy instead of assuming iMessage will behave like Slack or Telegram.
is_group=falseUpstream also documents a subtle compatibility case:
is_group=falsechat_id is explicitly configured under channels.imessage.groups, OpenClaw treats it as group trafficThat is exactly the kind of legacy edge case that should push new deployments toward BlueBubbles.
The docs support pointing cliPath at an SSH wrapper so OpenClaw can run imsg on a remote Mac.
That is useful for keeping the gateway off the Mac, but it introduces more moving parts:
remoteHost matters when attachments are involved.This is a good example of why imessage should be judged as a maintenance lane. It can work, but the operational surface grows faster than the interface suggests, and the remote deployments described in /guides/openclaw-deployment-troubleshooting give you the templates for managing those complexities.
If you keep legacy iMessage alive, verify it like infrastructure, not like a demo.
imsg itselfConfirm both of these are true in the actual runtime context:
imsg is callable from the configured cliPathUse the documented pairing path to validate the default trust model, not just raw send/receive.
That tells you the runtime can both observe and route a new conversation.
If you support group threads, test one explicitly configured thread and confirm the intended policy path:
A legacy host-coupled lane is not really verified until it survives one deliberate restart of the gateway or runtime context.
That check matters more here than on channels with simpler hosted APIs.
The official docs imply a few consistent failure zones.
This is the most common class of macOS-hosted integration bug.
The fix is usually not “change the prompt.” It is to grant Full Disk Access and related approvals to the same execution context that actually runs OpenClaw / imsg.
When the bot shares a personal Messages profile, troubleshooting gets messy quickly.
That is why the docs recommend a dedicated Apple ID and macOS user for bot traffic.
Legacy iMessage groups are where hidden assumptions pile up:
groups configuration to be treated as groups.If you run through SSH, the wrapper can fail independently of OpenClaw policy.
When attachments are enabled, remoteHost and SCP behavior become part of the lane whether you intended that complexity or not.
The cleanest rule is this:
The legacy imessage path can still be useful, but every extra workaround is a signal to ask whether you are preserving compatibility or just extending maintenance debt.
The most relevant follow-up pages are:
The first is the recommended replacement path. The latter two help once you are approving devices or operating the gateway remotely while you maintain or migrate this lane.
Verification & references
References