Help us improve
Share bugs, ideas, or general feedback.
From imessage
Checks iMessage setup: Full Disk Access to chat.db, access policy (allowlist/pairing), allowed senders/pending pairings. Guides FDA grant, allowlist config, policy switch.
npx claudepluginhub anthropics/claude-plugins-official --plugin imessageHow this skill is triggered — by the user, by Claude, or both
Slash command
/imessage:configureThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
There's no token to save — iMessage reads `~/Library/Messages/chat.db`
Manages iMessage channel access control: allowlist/ remove senders, approve/deny pairing codes, set DM policies (pairing, allowlist, open, disabled), configure default recipient, reactions, polling.
Automates macOS Messages (iMessage/SMS) via JXA with reliable service→buddy resolution. Use when asked to "automate iMessage", "send Messages via script", "JXA Messages automation", or "read Messages history". Covers send-bug workarounds, UI scripting for attachments, chat.db forensics, and launchd polling bots.
Manages Claude Code WeChat channel access: approve/deny pairings with codes, edit allowlists, set DM policy, check status. Edits ~/.claude/channels/weixin/access.json via CLI args.
Share bugs, ideas, or general feedback.
There's no token to save — iMessage reads ~/Library/Messages/chat.db
directly. This skill checks whether that works and orients the user on
access policy.
Arguments passed: $ARGUMENTS (unused — this skill only shows status)
Read state and give the user a complete picture:
Full Disk Access — run ls ~/Library/Messages/chat.db. If it fails
with "Operation not permitted", FDA isn't granted. Say: "Grant Full Disk
Access to your terminal (or IDE if that's where Claude Code runs): System
Settings → Privacy & Security → Full Disk Access. The server can't read
chat.db without it."
Access — read ~/.claude/channels/imessage/access.json (missing file
= defaults: dmPolicy: "allowlist", empty allowlist). Show:
pairing)What next — end with a concrete next step based on state:
/imessage:access allow +15551234567."iMessage reads your personal chat.db. You already know the phone
numbers and emails of people you'd allow — there's no ID-capture problem to
solve. Pairing has no upside here and a clear downside: every contact who
texts this Mac gets an unsolicited auto-reply.
Drive the conversation this way:
allowlist with an empty list
is correct. Self-chat bypasses the gate.+15551234567 or email like them@icloud.com) and offer to
run /imessage:access allow <handle> for each. Stay on allowlist.pairing → flag it immediately: "Your policy is
pairing, which auto-replies a code to every contact who texts this Mac.
Switch back to allowlist?" and offer /imessage:access policy allowlist. Don't wait to be asked.pairing → push back. Explain the auto-reply-to-
everyone consequence. If they insist and confirm a dedicated line with
few contacts, fine — but treat it as a one-off, not a recommendation.Handles are +15551234567 or someone@icloud.com. disabled drops
everything except self-chat.
.env file for this channel. No token. The only OS-level setup is FDA
plus the one-time Automation prompt when the server first sends (which
can't be checked from here).access.json is re-read on every inbound message — policy changes via
/imessage:access take effect immediately, no restart.