Skip to main content

imsg

iMessage/SMS CLI for listing chats, reading message history, watching for new messages, and sending messages. Triggers on: check messages, read imessage, send text, imsg, message history, sms, who texted me.

Source facts

Repository
joelhooks/joelclaw
Last source activity
September 13, 2026 at 22:40
Detected SKILL.md language
English
Stars
64
Forks
2

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
imsg
displayName
iMessage
description
iMessage/SMS CLI for listing chats, reading message history, watching for new messages, and sending messages. Triggers on: check messages, read imessage, send text, imsg, message history, sms, who texted me.
version
1.0.0
author
Joel Hooks
tags
["joelclaw","messaging","imessage","sms","communication"]
# iMessage Read and send iMessages and SMS from the terminal via the `imsg` CLI. ## Setup (Panda) - **Messages.app signed in as**: the agent Apple ID (see USER.md) - **Joel's iMessage address**: see USER.md → `imessage` - Full Disk Access must be granted to the terminal for **read** operations (`chats`, `history`, `watch`) - Automation permission for Messages.app required for **send** - `imsg send` returns `"sent"` optimistically — this means AppleScript fired, not delivery confirmed ## Commands ### List chats ```bash imsg chats --limit 10 --json ``` ### Read history ```bash imsg history --chat-id <id> --limit 20 --attachments --json ``` ### Watch for new messages ```bash imsg watch --chat-id <id> --attachments ``` ### Send ```bash # By email (iMessage) imsg send --to "user@example.com" --text "hello" # By phone number (iMessage or SMS) imsg send --to "+18005551234" --text "hello" # With file attachment imsg send --to "user@example.com" --text "see attached" --file /path/to/file.jpg ``` ## Delivery Notes - `"sent"` from CLI = AppleScript successfully handed off to Messages.app - "Not delivered" in Messages.app = actual delivery failure (auth issue, recipient offline, etc.) - Full Disk Access missing = read commands fail with `permissionDenied`; send still works via AppleScript - Messages appear as coming from the agent Apple ID, not from Joel ## Sending to Joel Joel's iMessage address is in USER.md (`imessage` field). Use it to notify him directly: ```bash imsg send --to "<joel-imessage>" --text "your message" ``` ## Safety - Read-only by default — use `chats` and `history` before sending - Always confirm recipient and message text before `imsg send` - `--json` flag preferred for all read operations (deterministic parsing) ## Install ```bash brew install steipete/tap/imsg ``` ## Credit CLI by [steipete](https://github.com/steipete/imsg). Adopted per ADR-0067. ## Flagg: imsg via Executor On Flagg, do not call `imsg` from a terminal for reads. Use Executor's saved connection, which runs a signed service that holds the Full Disk Access grant. - Address: `tools.imsg.org.flaggImsg.<tool>`. Discover with `tools.search({ namespace: "imsg", query: "" })`. - Tools: `imsg_status`, `imsg_chats`, `imsg_group`, `imsg_history`, `imsg_send`. Call `imsg_status` first. - Service: LaunchAgent `com.joel.imsg-mcp` on `127.0.0.1:4793`, code in `packages/imsg-mcp`, bundle `/Applications/imsg-mcp.app`. - `imsg_send` needs Joel's explicit approval for recipient and text. An org `require_approval` policy on it is expected in Executor; check the Tools tab. Attachments only from `~/.joelclaw/imsg-outbox` or `/tmp`. A killed send returns "outcome unknown", so check Messages.app before retrying. - Health: `curl -s http://127.0.0.1:4793/healthz` and `launchctl print gui/501/com.joel.imsg-mcp`. Restart with `launchctl kickstart -k gui/501/com.joel.imsg-mcp`. - Bearer: `imsg_mcp_bearer_token` in agent-secrets. Never print it. - Joel-only grants: Full Disk Access for `/Applications/imsg-mcp.app` (re-toggle after any re-sign) and the Automation prompt for Messages.app on first send. Full receipts: `~/Code/joelhooks/dark-wizard/.brain/projects/imsg-mcp-executor-2026-09.svx`.
View on GitHub