How to Set Up iMessage for Claude Code
Text yourself to talk to Claude Code. No bots, no tokens, no external services. Just your Apple ID.
Claude Code channels let you message a running session from Telegram, Discord, or iMessage. Telegram and Discord need bot tokens and external setup. iMessage is different. It reads your Mac's Messages database directly and sends replies via AppleScript. No accounts to create, no servers to run, no tokens to manage. You text yourself and Claude responds.
Grant Full Disk Access to your terminal
The iMessage plugin reads ~/Library/Messages/chat.db, which is protected by macOS. The first time the server reads it, macOS pops a prompt asking if your terminal can access Messages.
- Click Allow when the prompt appears
- If you click Don't Allow or the prompt never shows, grant it manually: System Settings > Privacy & Security > Full Disk Access and add your terminal app (Terminal, iTerm, Ghostty, etc.)
Without this, the server exits immediately with authorization denied.
Install the iMessage plugin
Open Claude Code and run:
/plugin install imessage@claude-plugins-official
If it says plugin not found, run /plugin marketplace update claude-plugins-official first, then retry.
Relaunch with the channel flag
Exit Claude Code and restart with:
claude --channels plugin:imessage@claude-plugins-official
The server won't connect without this flag. Check that /imessage:configure tab-completes to confirm it's running.
Text yourself
Open Messages on any device signed into your Apple ID and send a message to yourself. It reaches Claude immediately. Self-chat bypasses access control with no setup.
The first reply Claude sends triggers a macOS Automation prompt asking if your terminal can control Messages. Click OK.
Allow other senders
By default, only your own messages get through. Everyone else is dropped silently. To let another contact reach Claude:
/imessage:access allow +15551234567
Handles are phone numbers in +country format or Apple ID emails like them@icloud.com.
Disable the "Sent by Claude" signature
Every outbound message appends "Sent by Claude" by default. To turn it off, set this in your shell environment before launching Claude Code:
export IMESSAGE_APPEND_SIGNATURE=false
Approve permission prompts from your phone
When Claude hits a permission prompt while you're away from the terminal, it forwards the prompt to your iMessage. Reply yes or no to approve or deny remotely. Only allowlisted senders can approve permissions.
Before you start
~/Library/Messages/chat.db. There's no Windows or Linux equivalent.bun --version. If missing, install Bun first.claude --version.Run /plugin install imessage@claude-plugins-official in Claude Code, exit, relaunch with claude --channels plugin:imessage@claude-plugins-official, then text yourself. Working in under 2 minutes.
Sources
FAQ
/imessage:access allow. By default, only your own messages (self-chat) get through. Everyone else is dropped silently with no auto-reply.