Back to Blog

I Replaced OpenClaw With iMessage (Claude Code Channels on Mac, Built-In)

By Ayyaz Zafar
Claude Code iMessage channel on Mac, replaces OpenClaw and Telegram bots

I texted Claude Code from my iPhone and it texted back. No Telegram bot. No Discord server. No OpenClaw. No external service. Just iMessage.

Claude Code Channels now supports iMessage natively on Mac. The plugin reads your local message database and replies through Apple Script. No tokens, no hosting, nothing to configure beyond one macOS permission.

If you watched my Telegram and Discord channel videos, this is the simplest setup of the three.

How It Works (in Two Sentences)

Your Mac stores all iMessages in a SQLite file called chat.db. The plugin polls that database every second for new messages, hands them to Claude, then sends replies through the Messages app via Apple Script. Everything stays on your Mac.

The One Thing You Need

Full Disk Access for your terminal. macOS protects chat.db behind this permission, so without it the plugin cannot read messages and exits immediately.

To grant it:

  1. Open System Settings
  2. Go to Privacy & Security
  3. Click Full Disk Access
  4. Add your terminal app (Terminal, iTerm, Warp, whatever you use). If you run Claude Code from VS Code, add VS Code instead.

macOS will prompt you to restart the terminal. Quit and reopen. The key rule: whatever app launches the Claude Code process is the app that needs this permission.

Install the Plugin

First, make sure you are on the latest Claude Code:

claude --version

Then install the iMessage channel from the official Anthropic marketplace:

claude plugin install imessage@claude-plugin-official

If you see "plugin not found," either the official marketplace is not added or it needs an update. Run this once:

claude plugin marketplace add anthropic/claude-plugin-official

When the installer asks for a scope, pick user scope so it works across all your projects.

Run Claude With the Channel Flag

Exit your current Claude Code session and start a new one with the channel enabled:

claude --channels imessage

You will see "Listening for channel messages from imessage." That is it. No token to paste. No bot account to create. The plugin is now polling your messages database.

Try It (Self Chat)

Open Messages on your iPhone (I used iPhone Mirroring on my Mac so you can see both screens). Send a message to yourself.

Type something like: "Hey Claude, what's in my working directory?"

Watch the terminal. Claude picks up the message, runs the command, sends the reply back via Messages. Your iPhone receives a text from yourself with the answer.

You will notice every Claude reply ends with Sent by Claude. That is a signature so you can tell AI messages from your own, since self chat shows both sender and receiver. More on toggling that off later.

One Quirk of Self Chat

When you text yourself, each message appears twice in the conversation (once as sender, once as receiver). This is how iMessage handles self chat, not a bug.

If it bothers you, allow-list a second phone number or a family Apple ID and text from that device instead. Then each message appears once.

The Permission Prompt You Will See Once

The first time Claude tries to send a reply, macOS will ask if your terminal can control Messages. Click OK. This is a one-time prompt.

Access Control

The default policy is allow-list with an empty list. Self chat always bypasses (it is your own messages). Every other message is silently dropped unless the sender is on the list.

To check the current state, type into Claude Code:

imessage:access

You will see the DM policy and the count of allowed senders.

To allow someone:

imessage:access allow +1234567890

or with an email:

imessage:access allow friend@icloud.com

Claude will ask permission to edit its own settings. You can approve from the terminal, or reply yes with the 5-character code from your iPhone (Claude prints the code in the terminal). Approving from your phone is the whole point of this setup, so use that path the first time.

To remove someone:

imessage:access remove friend@icloud.com

Same approval flow, same secret-code confirmation.

Group Chats and Mention Patterns

Group chats work, but iMessage has no real @-mentions. The plugin uses regex patterns instead.

imessage:access set mention-patterns ["@claude", "hey claude"]

In group chats, only messages matching one of those patterns trigger a Claude reply. Outside group chats this setting is ignored.

Turn Off the "Sent by Claude" Signature

Set an env var before starting Claude Code with the channel:

IMESSAGE_APPEND_SIGNATURE=false claude --channels imessage

Now Claude's replies look exactly like a normal message. Cleaner for group chats where you want the AI to feel ambient.

What I Actually Use It For

The killer use cases for me, after a few weeks of running this:

  • Read a file while away from the desk. "Send me the contents of test.txt." Reply arrives in seconds. (Note: Claude will refuse to send .env contents over iMessage. Built-in safety layer.)
  • Kick off a build or test while out. "Run the test suite and tell me when it is done." Walk away. Get a result text 5 minutes later.
  • Pre-standup check-in. "What did I commit yesterday?" Claude pulls git log and texts back a summary before you open your laptop.
  • Build something while away. "Create a modern landing page and save it as landing.html." When you sit down, the file is ready.

Things to Keep in Mind

  • Claude Code has to be running. Close the terminal and the channel stops. Keep a session open in the background.
  • Mac only. chat.db is a Mac thing. There is no Windows or Linux equivalent for this channel.
  • The bypass-permission flag exists. Run claude --channels imessage --dangerously-skip-permissions if you do not want approval prompts. Use this only when you understand that Claude has full system access from wherever it is started.
  • Allow-list carefully. Anyone you add can drive your Claude Code session. Treat the list like SSH access.

Why This Beats Telegram and Discord

Telegram requires creating a bot, copying a token, configuring webhook URLs. Discord needs a server and a bot account. iMessage needs nothing except a permission toggle.

For Mac-only users (and most developers I know are on Mac), iMessage is the lowest-friction way to chat with Claude Code from a phone. The other channels are still useful when you need to share access with a team that does not all run macOS, but for solo use this wins.

Related Channel Setups

Subscribe

Subscribe to AyyazTech on YouTube for more Claude Code workflow videos. New uploads cover the tools and patterns I am actually using every week.

Share this article