
imsg
โ 3by firecrawl ยท part of firecrawl/openclaw
Reads iMessage and SMS conversation history and sends texts through the Mac Messages app from the command line.
๐ฅ๐ฅ๐ฅโ VerifiedFreeQuick setup
๐ Needs the imsg CLI and Messages on macOS. Set that up first โ this skill doesn't include it. One of 59 skills in the firecrawl/openclaw package.
WHEN YOUR AGENT SHOULD USE IT
A QUICK BOUNDARYUSE FOR
- List recent iMessage or SMS conversations from the Messages app on a Mac.
- Read the message history of a specific chat, including any attachments.
- Send a text or iMessage to a phone number or Apple ID, optionally with a file attached.
- Watch a chat and get notified as new messages arrive.
DO NOT USE FOR
- Telegram, Discord, Signal, and WhatsApp messages go through their own tools or channels, not this one.
- Slack messages are handled by the separate slack skill instead.
- Adding or removing members from a group chat is not supported.
This is the playbook your agent receives when the skill activates โ you don't need to read it to use the skill, but it's here to audit before installing.
imsg
Use imsg to read and send iMessage/SMS via macOS Messages.app.
When to Use
โ USE this skill when:
- User explicitly asks to send iMessage or SMS
- Reading iMessage conversation history
- Checking recent Messages.app chats
- Sending to phone numbers or Apple IDs
When NOT to Use
โ DON'T use this skill when:
- Telegram messages โ use
messagetool withchannel:telegram - Signal messages โ use Signal channel if configured
- WhatsApp messages โ use WhatsApp channel if configured
- Discord messages โ use
messagetool withchannel:discord - Slack messages โ use
slackskill - Group chat management (adding/removing members) โ not supported
- Bulk/mass messaging โ always confirm with user first
- Replying in current conversation โ just reply normally (Clawdbot routes automatically)
Requirements
- macOS with Messages.app signed in
- Full Disk Access for terminal
- Automation permission for Messages.app (for sending)
Common Commands
List Chats
imsg chats --limit 10 --jsonView History
# By chat ID
imsg history --chat-id 1 --limit 20 --json
# With attachments info
imsg history --chat-id 1 --limit 20 --attachments --jsonWatch for New Messages
imsg watch --chat-id 1 --attachmentsSend Messages
# Text only
imsg send --to "+14155551212" --text "Hello!"
# With attachment
imsg send --to "+14155551212" --text "Check this out" --file /path/to/image.jpg
# Specify service
imsg send --to "+14155551212" --text "Hi" --service imessage
imsg send --to "+14155551212" --text "Hi" --service smsService Options
--service imessageโ Force iMessage (requires recipient has iMessage)--service smsโ Force SMS (green bubble)--service autoโ Let Messages.app decide (default)
Safety Rules
- Always confirm recipient and message content before sending
- Never send to unknown numbers without explicit user approval
- Be careful with attachments โ confirm file path exists
- Rate limit yourself โ don't spam
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"Copy & paste โ that's it
npx skills add firecrawl/openclaw --skill "imsg" --full-depthRun this in your project โ your agent picks the skill up automatically.
BEFORE IT WILL WORK
3 FOR YOU- 01Sign in to Messages on the Mac
- 02Grant the terminal Full Disk Access
- 03Allow automation access to Messages
Licensed under MITโ you can use, modify, and redistribute it under that license's terms.
View the full license file on GitHub โ