360 Secure SkillHub
360 安全技能中心

imsgctl

基于本地命令行工具 imsgctl 读取 Apple Messages 数据:检查访问状态、列出最近会话、按时间或数量筛选消息历史、附带附件元数据,并可监听新消息与回应。仅支持读取,不发送、不修改消息,其他即时通讯平台不在范围内。

jpreagan
jpreagan
热度 41.91
最近更新 2026-05-11 17:37:51
分类:协作依赖:代码执行 / 读写文件应用场景:研究

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add imsgctl
Metadata
name
imsgctl
description
Read Apple Messages data with imsgctl: check access, list chats, inspect message history, filter by time, include attachment metadata, and watch new activity from the local data available to imsgctl.
metadata
{"openclaw":{"homepage":"https://github.com/jpreagan/imsgkit","os":["darwin","linux"],"requires":{"bins":["imsgctl"]},"install":[{"kind":"brew","formula":"jpreagan/tap/imsgctl","bins":["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 --json when results may be parsed or reused.
  • imsgctl health --json emits one JSON object.
  • imsgctl chats --json, history --json, and watch --json emit JSONL.
  • Use --db PATH when the user gives a specific database path or when the backend must be explicit.
  • Use watch only for live monitoring. It streams until interrupted.

Defaults And Access

  • On macOS, running without --db prefers ~/Library/Application Support/imsgkit/replica.db when a valid replica exists. Otherwise it falls back to ~/Library/Messages/chat.db.
  • On Linux, running without --db reads ~/.local/share/imsgkit/replica.db, or $XDG_DATA_HOME/imsgkit/replica.db when XDG_DATA_HOME is set to an absolute path.
  • Direct access to ~/Library/Messages/chat.db requires 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

  1. Run imsgctl health --json to confirm access.
  2. Run imsgctl chats --limit 20 --json to identify the target chat.
  3. Use the returned chat ID with imsgctl history --chat-id ... --json.
  4. Add --start, --end, --limit, or --attachments only as needed.
  5. Use imsgctl watch only 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.