Skip to main content
Install the plugin, install and verify imsg on the signed-in Messages Mac, configure the channel, and grant the macOS permissions it needs.

Install the plugin

Install the official iMessage plugin on the Gateway host, then restart the Gateway:

Private API actions

Replies, tapbacks, effects, polls, attachments, and group management.

Pairing

iMessage DMs default to pairing mode.

Remote Mac

Use an SSH wrapper when the Gateway is not running on the Messages Mac.

Configuration reference

Full iMessage field reference.

Quick setup

1

Install and verify imsg

When the local setup wizard detects a missing default imsg command, it can prompt to install steipete/tap/imsg through Homebrew. If it detects a Homebrew-managed imsg, it can prompt to reinstall or update it. Custom cliPath wrappers are not modified.
2

Configure OpenClaw

3

Start gateway

4

Approve first DM pairing (default dmPolicy)

Pairing requests expire after 1 hour.

Requirements and permissions (macOS)

  • Messages must be signed in on the Mac running imsg.
  • Full Disk Access is required for the process context running OpenClaw/imsg (Messages DB access).
  • Automation permission is required to send messages through Messages.app.
  • For advanced actions (react / edit / unsend / threaded reply / effects / polls / group ops), System Integrity Protection must be disabled — see Enabling the imsg private API. Basic text and media send/receive work without it.
Permissions are granted per process context. If the gateway runs headless (LaunchAgent/SSH), run a one-time interactive command in that same context to trigger prompts:
A remote-SSH setup can read chats, pass channels status --probe, and process inbound messages while outbound sends still fail with an AppleEvents authorization error:
Check the signed-in Mac user’s TCC database or System Settings > Privacy & Security > Automation. If the Automation entry is recorded for /usr/libexec/sshd-keygen-wrapper instead of the imsg or local shell process, macOS may not expose a usable Messages toggle for that SSH server-side client:
In that state, repeating tccutil reset AppleEvents or rerunning imsg send through the same SSH wrapper may keep failing because the process context that needs Messages Automation is the SSH wrapper, not an app the UI can grant.Use one of the supported imsg process contexts instead:
  • Run the Gateway, or at least the imsg bridge, in the logged-in Messages user’s local session.
  • Start the Gateway with a LaunchAgent for that user after granting Full Disk Access and Automation from the same session.
  • If you keep the two-user SSH topology, verify that a real outbound imsg send succeeds through the exact wrapper before enabling the channel. If it cannot be granted Automation, reconfigure to a single-user imsg setup instead of relying on the SSH wrapper for sends.