Set up the iMessage plugin for Claude Code

Grant Full Disk Access, install the Claude Code plugin, and configure iMessage access control via an allowlist or pairing.

  • Skill Road
  • Set up the iMessage plugin for Claude Code

Published on 30.09.2026

This guide sets up the iMessage plugin from Anthropic's official plugin repository for Claude Code through the documented marketplace route. Before relying on it in production, review the full [README](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) and the [access control documentation](https://github.com/anthropics/claude-plugins-official/blob/main/external_plugins/imessage/ACCESS.md) in the repository. The plugin only works on macOS.

Check the prerequisites

The plugin requires a current version of Claude Code (check with claude --version) and only runs on a Mac with Messages.app set up. No separate runtime or bot token is needed, since the channel talks directly to local macOS facilities.

Grant Full Disk Access

Open System Settings under "Privacy & Security" → "Full Disk Access" and enable your terminal application there (for example Terminal.app or iTerm). Without this permission the channel cannot read the ~/Library/Messages/chat.db database and won't detect incoming messages.

Install and configure the plugin

In Claude Code, run these commands in order:

/plugin install imessage@claude-plugins-official
/imessage:configure
claude --channels plugin:imessage@claude-plugins-official

The second command walks you through the skill's setup, and the third starts Claude Code with the iMessage channel active. The first outbound reply attempt additionally triggers a macOS automation permission prompt for Messages.app, which you need to confirm.

Grant access

In the default "allowlist" policy, messages from unknown senders are dropped; only your own self-chat works without further approval. Approve additional contacts via /imessage:access allow <phone-number-or-apple-id>. For the occasional single contact, use the pairing flow instead: the unknown sender receives a confirmation code on their first message, which they need to send back to you.

Keep security in mind

SMS and RCS messages stay disabled by default, since sender IDs on those services are spoofable. Because the channel has full read access to your private message database, the configuration under ~/.claude/channels/imessage/access.json deserves a periodic review, especially before enabling additional group chats by GUID.

Published on 30.09.2026

Categories

Frequently asked questions

Is the iMessage plugin actually official from Anthropic?

It lives in the official, Anthropic-maintained claude-plugins-official repository and is released under that repository's Apache-2.0 license. Unlike the Telegram or Code Review plugins, though, its marketplace page at claude.com/plugins/imessage does not carry the "Anthropic verified" mark.

Does the plugin work on Windows or Linux?

No. The channel reads the native macOS chat.db database and drives Messages.app via AppleScript, both of which only exist on macOS. Use the Telegram or Discord plugin instead on other operating systems.

Does the plugin need a bot token or a developer account?

No. Because the channel relies solely on local macOS facilities, the README notes that a separate token or external service isn't needed — the only requirement is Full Disk Access for the terminal application in use.

Can any contact control the bot immediately?

No. In the default "allowlist" policy, messages from unknown senders are dropped; only your own self-chat works automatically. Additional contacts must be approved individually via /imessage:access allow or through a pairing code.

Can I message the bot over SMS as well?

No, SMS and RCS are disabled by default per the documentation, since sender IDs on those services are spoofable. The channel only responds to genuine iMessage messages.

Does the plugin cost anything?

No, the plugin's source code and use are free under the Apache-2.0 license per the repository. Claude Code itself may carry its own costs depending on the plan chosen.