imsgctl
/install imsgctl
imsgctl
Use imsgctl to read Apple Messages data available on the current machine.
Use This Skill When
- The user wants to inspect iMessage or SMS data from Apple Messages.
- The user wants to list recent chats.
- The user wants message history for a specific chat.
- The user wants to filter message history by time.
- The user wants attachment metadata.
- The user wants to watch for new messages or reactions.
Do Not Use This Skill When
- The user wants to send or reply to a message.
- The user wants to delete, edit, react to, or otherwise modify Messages data.
- The request is about Slack, Discord, Telegram, Signal, WhatsApp, or another messaging system.
Operating Rules
- Prefer
--jsonwhen results may be parsed or reused. imsgctl health --jsonemits one JSON object.imsgctl chats --json,history --json, andwatch --jsonemit JSONL.- Use
--db PATHwhen the user gives a specific database path or when the backend must be explicit. - Use
watchonly for live monitoring. It streams until interrupted.
Defaults And Access
- On macOS, running without
--dbprefers~/Library/Application Support/imsgkit/replica.dbwhen a valid replica exists. Otherwise it falls back to~/Library/Messages/chat.db. - On Linux, running without
--dbreads~/.local/share/imsgkit/replica.db, or$XDG_DATA_HOME/imsgkit/replica.dbwhenXDG_DATA_HOMEis set to an absolute path. - Direct access to
~/Library/Messages/chat.dbrequires macOS and Full Disk Access for the process doing the reading. - If contact resolution is unavailable, chat and sender labels may fall back to raw identifiers.
Common Commands
Check Access
imsgctl health --json
List Recent Chats
imsgctl chats --limit 20 --json
Read Recent History For A Chat
imsgctl history --chat-id 42 --limit 50 --json
Read History With Attachment Metadata
imsgctl history --chat-id 42 --limit 50 --attachments --json
Read History In A Time Window
imsgctl history \
--chat-id 42 \
--limit 50 \
--start 2026-03-01T00:00:00Z \
--end 2026-03-02T00:00:00Z \
--json
Watch New Activity
imsgctl watch --chat-id 42 --json
Watch New Messages, Attachments, and Reactions
imsgctl watch --chat-id 42 --attachments --reactions --json
Use An Explicit Database Path
imsgctl chats --db ~/Library/Application\ Support/imsgkit/replica.db --limit 20 --json
imsgctl history --db ~/.local/share/imsgkit/replica.db --chat-id 42 --limit 50 --json
Recommended Workflow
- Run
imsgctl health --jsonto confirm access. - Run
imsgctl chats --limit 20 --jsonto identify the target chat. - Use the returned chat ID with
imsgctl history --chat-id ... --json. - Add
--start,--end,--limit, or--attachmentsonly as needed. - Use
imsgctl watchonly if the user asked for live monitoring.
Viewing Image Attachments
When --attachments reveals an image, the file is often too large to read directly. Convert it to a smaller JPEG preview, then read the result:
- macOS:
sips -s format jpeg -Z 800 "/path/to/image.heic" --out /tmp/preview.jpg - Linux:
magick "/path/to/image.heic" -resize 800x800 /tmp/preview.jpg
Failure Modes
- If direct macOS reads fail, check Full Disk Access first.
- If the expected local database path is missing, access will fail until the correct database is available on the current machine.
- If chat labels are ambiguous or missing, rely on chat IDs and raw identifiers.
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install imsgctl - After installation, invoke the skill by name or use
/imsgctl - Provide required inputs per the skill's parameter spec and get structured output
What is imsgctl?
Read Apple Messages data with imsgctl: check access, list chats, inspect message history, filter by time, include attachment metadata, and watch new activity... It is an AI Agent Skill for Claude Code / OpenClaw, with 127 downloads so far.
How do I install imsgctl?
Run "/install imsgctl" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is imsgctl free?
Yes, imsgctl is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does imsgctl support?
imsgctl is cross-platform and runs anywhere OpenClaw / Claude Code is available (darwin, linux).
Who created imsgctl?
It is built and maintained by James Reagan (@jpreagan); the current version is v1.0.0.