
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.
- Installs
- 41
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/joelhooks/joelclaw --skill imsg- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads imsg automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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 sendreturns"sent"optimistically — this means AppleScript fired, not delivery confirmed
Commands
List chats
imsg chats --limit 10 --json
Read history
imsg history --chat-id <id> --limit 20 --attachments --json
Watch for new messages
imsg watch --chat-id <id> --attachments
Send
# 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:
imsg send --to "<joel-imessage>" --text "your message"
Safety
- Read-only by default — use
chatsandhistorybefore sending - Always confirm recipient and message text before
imsg send --jsonflag preferred for all read operations (deterministic parsing)
Install
brew install steipete/tap/imsg
Credit
CLI by steipete. 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 withtools.search({ namespace: "imsg", query: "" }). - Tools:
imsg_status,imsg_chats,imsg_group,imsg_history,imsg_send. Callimsg_statusfirst. - Service: LaunchAgent
com.joel.imsg-mcpon127.0.0.1:4793, code inpackages/imsg-mcp, bundle/Applications/imsg-mcp.app. imsg_sendneeds Joel's explicit approval for recipient and text. An orgrequire_approvalpolicy on it is expected in Executor; check the Tools tab. Attachments only from~/.joelclaw/imsg-outboxor/tmp. A killed send returns "outcome unknown", so check Messages.app before retrying.- Health:
curl -s http://127.0.0.1:4793/healthzandlaunchctl print gui/501/com.joel.imsg-mcp. Restart withlaunchctl kickstart -k gui/501/com.joel.imsg-mcp. - Bearer:
imsg_mcp_bearer_tokenin 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.
FAQ
What does the imsg skill do?
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.
How do I install imsg?
Run npx skills add https://github.com/joelhooks/joelclaw --skill imsg in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/imsg/ (personal) or .claude/skills/imsg/ (project).
Which AI agents can use imsg?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is imsg safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains imsg?
It is published by joelhooks in joelhooks/joelclaw. It has 41 recorded installs.
More from joelhooks/joelclaw
contacts
joelhooks/joelclaw
Add, enrich, and manage contacts in Joel's Vault. Fire the Inngest enrichment pipeline for full multi-source dossiers, or create quick contacts manually. Use when: 'add a contact', 'enrich this person', 'who is X', 'VIP contact', 'update contact', or any task involving the Vault/Contacts directory.
docker-sandbox
joelhooks/joelclaw
Open the skill to read its SKILL.md instructions.
joel-writing-style
joelhooks/joelclaw
Open the skill to read its SKILL.md instructions.
Popular other skills
hyperframes-cli
heygen-com/hyperframes
The HyperFrames CLI by job - scaffold, check, look at frames, edit the timeline, preview, render locally or in the cloud, publish, project history - plus reading its JSON and recovering from build or render failures.
triage
mattpocock/skills
Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.
ask-matt
mattpocock/skills
Ask which skill or flow fits your situation. A router over the skills in this repo.
to-questionnaire
mattpocock/skills
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
loop-me
mattpocock/skills
Grill me about specs for the workflows I want to build, within this workspace.