Claude Code Channels now supports iMessage natively on Mac. You can text your AI assistant from your iPhone and it texts you back — no Telegram bot, no Discord server, no external service. Just iMessage.
If you've seen my Discord and Telegram channel guides, this is the simplest one yet.
How It Works
Your Mac stores all iMessage data in a SQLite database called chat.db. The iMessage plugin polls this database every second for new messages. When it finds one, it pushes the message to Claude Code. For replies, Claude tells Messages.app to send a text through AppleScript.
Everything stays local on your Mac. No cloud services, no API tokens, no hosted bots.
Prerequisites
- macOS (iMessage is Mac-only)
- Claude Code installed and up to date
- Full Disk Access permission for your terminal app
Step 1: Grant Full Disk Access
macOS protects the chat.db database. Your terminal needs Full Disk Access to read it.
- Open System Settings
- Go to Privacy & Security → Full Disk Access
- Add your terminal app (Terminal, iTerm2, Warp, or VS Code)
- Restart your terminal if prompted
The key rule: whatever app launches bun (which runs Claude Code) needs this permission. Without it, the plugin exits immediately.
Step 2: Install the iMessage Plugin
First, make sure Claude Code is up to date:
claude update
Install the iMessage plugin:
/plugin install @anthropic/claude-plugin-imessage
If you get a "plugin not found" error, install or update the official marketplace first:
/plugin marketplace add anthropic/claude-plugin-official
Choose user scope when prompted so the plugin works across all your projects.
Step 3: Launch Claude Code with Channels
Exit Claude Code and restart with the channels flag:
claude --channels plugin:imessage:imessage
You should see: "Listening for channel messages". That's it — the plugin is now polling your messages database.
Step 4: Test with Self-Chat
Open Messages on your iPhone and text yourself (your iCloud phone number or email). Self-chat bypasses all access control — it works immediately with no setup.
Try sending: "Hey Claude, what's in my working directory?"
Note: In self-chat, every message appears twice (as sender and receiver). That's normal iMessage behavior, not a bug. To avoid this, allow-list a second phone number and text from that device instead.
Step 5: Access Control
By default, only your self-chat works. Everyone else is silently dropped. To let someone else reach your Claude Code session:
/imessage:access allow +1234567890
/imessage:access allow friend@icloud.com
Each time you add someone, Claude Code asks for confirmation — you can approve from your terminal OR directly from your iPhone by typing the secret code.
To remove access:
/imessage:access remove +1234567890
Real Use Cases
- Remote file lookup: Text Claude to check config values while away from desk
- Build things remotely: Text "Create a landing page" — file is ready when you return
- Check build status: Text "Did the tests pass?" — get results on your phone
- Standup prep: Text "What did I commit yesterday?" — formatted summary on iPhone
Additional Configuration
Disable the Signature
IMESSAGE_APPEND_SIGNATURE=false claude --channels plugin:imessage:imessage
Group Chat Support
/imessage:access set mention-patterns ["@claude", "hey claude"]
Bypass Permissions (Use Carefully)
claude --channels plugin:imessage:imessage --dangerously-skip-permissions
Things to Know
- Claude Code must be running — close the terminal, messages stop
- macOS only — chat.db only exists on Mac
- First reply triggers an automation prompt — click OK (one-time)
- Security matters — this reads your personal messages database
Related Guides
- Claude Code Channels: Discord Setup Guide
- Claude Code Channels: Telegram Setup Guide
- Claude Code Remote Control from Phone
All three channel options work. Pick whichever platform you use the most.
Top comments (0)