Labsco
firecrawl logo

imsg

โ˜… 3

by 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 BOUNDARY

USE 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 message tool with channel:telegram
  • Signal messages โ†’ use Signal channel if configured
  • WhatsApp messages โ†’ use WhatsApp channel if configured
  • Discord messages โ†’ use message tool with channel:discord
  • Slack messages โ†’ use slack skill
  • 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 --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

Watch for New Messages

imsg watch --chat-id 1 --attachments

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

# Specify service
imsg send --to "+14155551212" --text "Hi" --service imessage
imsg send --to "+14155551212" --text "Hi" --service sms

Service Options

  • --service imessage โ€” Force iMessage (requires recipient has iMessage)
  • --service sms โ€” Force SMS (green bubble)
  • --service auto โ€” Let Messages.app decide (default)

Safety Rules

  1. Always confirm recipient and message content before sending
  2. Never send to unknown numbers without explicit user approval
  3. Be careful with attachments โ€” confirm file path exists
  4. 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"
imsg | Labsco