Imessage — Send and receive iMessages/SMS via the imsg CLI on macOS
Imessage
Section titled “Imessage”Send and receive iMessages/SMS via the imsg CLI on macOS.
Skill metadata
Section titled “Skill metadata”| Source | Bundled (installed by default) |
| Path | skills/apple/imessage |
| Version | 1.0.0 |
| Author | Hermes Agent |
| License | MIT |
| Platforms | macos |
| Tags | iMessage, SMS, messaging, macOS, Apple |
Reference: full SKILL.md
Section titled “Reference: full SKILL.md”Info The following is the complete skill definition that Hermes loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.
iMessage
Section titled “iMessage”Use imsg to read and send iMessage/SMS via macOS Messages.app.
Prerequisites
Section titled “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
Section titled “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
Section titled “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
Section titled “Quick Reference”List Chats
Section titled “List Chats”imsg chats --limit 10 --jsonView History
Section titled “View History”# By chat IDimsg history --chat-id 1 --limit 20 --json
# With attachments infoimsg history --chat-id 1 --limit 20 --attachments --jsonSend Messages
Section titled “Send Messages”# Text onlyimsg send --to "+14155551212" --text "Hello!"
# With attachmentimsg send --to "+14155551212" --text "Check this out" --file /path/to/image.jpg
# Force iMessage or SMSimsg send --to "+14155551212" --text "Hi" --service imessageimsg send --to "+14155551212" --text "Hi" --service smsWatch for New Messages
Section titled “Watch for New Messages”imsg watch --chat-id 1 --attachmentsService Options
Section titled “Service Options”--service imessage— Force iMessage (requires recipient has iMessage)--service sms— Force SMS (green bubble)--service auto— Let Messages.app decide (default)
- 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
Section titled “Example Workflow”User: “Text mom that I’ll be late”
# 1. Find mom's chatimsg 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 confirmationimsg send --to "+1555123456" --text "I'll be late"