iMessage
SkillCommunicationLet your agent send and receive iMessage texts through the Mac Messages app.
Use iMessage in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add iMessage and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the iMessage skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Send and receive iMessages/SMS via the imsg CLI on macOS.
What this skill tells your AI
The instructions your AI receives, as published by tommy-yw/runbookhermes in skills/apple/imessage/SKILL.md and read by ahel’s review.
Use imsg to read and send iMessage/SMS via macOS Messages.app.
Prerequisites
- macOS with Messages.app signed in
- Install:
brew install steipete/tap/imsg - Grant Full Disk Access for terminal (System Settings → Privacy → Full Disk Access)
- Grant Automation permission for Messages.app when prompted
When to Use
- User asks to send an iMessage or text message
- Reading iMessage conversation history
- Checking recent Messages.app chats
- Sending to phone numbers or Apple IDs
When NOT to Use
- Telegram/Discord/Slack/WhatsApp messages → use the appropriate gateway channel
- Group chat management (adding/removing members) → not supported
- Bulk/mass messaging → always confirm with user first
Quick Reference
List Chats
imsg chats --limit 10 --json
View History
# By chat ID
imsg history --chat-id 1 --limit 20 --json
# With attachments info
imsg history --chat-id 1 --limit 20 --attachments --json
Send Messages
# Text only
imsg send --to "+14155551212" --text "Hello!"
# With attachment
imsg send --to "+14155551212" --text "Check this out" --file /path/to/image.jpg
# Force iMessage or SMS
imsg send --to "+14155551212" --text "Hi" --service imessage
imsg send --to "+14155551212" --text "Hi" --service sms
Watch for New Messages
imsg watch --chat-id 1 --attachments
Service Options
--service imessage— Force iMessage (requires recipient has iMessage)--service sms— Force SMS (green bubble)--service auto— Let Messages.app decide (default)
Rules
- Always confirm recipient and message content before sending
- Never send to unknown numbers without explicit user approval
- Verify file paths exist before attaching
- Don't spam — rate-limit yourself
Example Workflow
User: "Text mom that I'll be late"
# 1. Find mom's chat
imsg chats --limit 20 --json | jq '.[] | select(.displayName | contains("Mom"))'
# 2. Confirm with user: "Found Mom at +1555123456. Send 'I'll be late' via iMessage?"
# 3. Send after confirmation
imsg send --to "+1555123456" --text "I'll be late"
Signals
- GitHub stars
- 547
- Forks
- 41
- Last commit
- May 2026
- Hacker News mentions
- 20
ahel review
K1binfo
installs-packages
Automated review, not a security audit. Ruleset v1+k2.
Others that do the same job
Advanced
- Item type
- skill
- Key
imessage-tommy-yw- Source
- github.com/tommy-yw/runbookhermes
github.com/tommy-yw/runbookhermes
Related picks
Skill · anthropics
The pick for Slackhive.slack-notifications-setup
Skill · aden-hive
The pick for Slackdiscord
Skill · anil-matcha
The pick for Discorddiscord-announcement
Skill · aidenlx
The pick for Discordsms
Skill · coreyhaines31
The pick for SMSsms-alert-automation
Skill · composio-community
The pick for SMS