configure · anthropics — Claude Code skill: what it does, how to install
Checks iMessage channel setup in Claude Code and audits access rules. Use it when messages fail to reach the assistant or to see which contacts are allowed.
/plugin install imessage@claude-plugins-officialWhat configure does
The skill verifies that macOS allows Claude Code to read messages directly from ~/Library/Messages/chat.db. There are no API tokens or environment variables to store. It runs a quick file listing command. If the terminal or IDE lacks Full Disk Access, the command fails and the skill points you to the exact macOS privacy settings.
Next, it reads ~/.claude/channels/imessage/access.json to inspect your direct-messaging rules. The skill reports the active policy, displays allowed phone numbers or iCloud emails, and flags pending pairing requests. Self-chat from your own Apple ID always passes through. The skill steers you toward an allowlist rather than pairing mode, because pairing sends automated reply codes to any incoming contact on your Mac.
Install this if you run Claude Code with iMessage on your daily machine and need tight control over who can trigger the assistant.
What it helps with
- Verify Full Disk Access permissions for the terminal or IDE to read
chat.db. - Troubleshoot why incoming iMessage texts are not reaching Claude Code.
- Review the current DM access policy and list approved sender handles.
- Avoid sending unwanted verification auto-replies to external contacts.
Example prompts for the agent
- Why aren't my iMessage texts reaching Claude Code?
- Check my iMessage channel setup and show who can reach me.
- Configure the iMessage access policy and allow a new contact.
How to install configure
1Plugin marketplace
/plugin install imessage@claude-plugins-officialThis installs the whole imessage plugin with all its skills
2Skills CLI (Vercel)
npx skills add anthropics/claude-plugins-official --skill configure -a claude-code3Manually: put the files in place
~/.claude/skills/configure/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/configure/
Manually: put the files in place
.agents/skills/configure/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/configure/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install anthropics/claude-plugins-official configure2Manually: put the files in place
.github/skills/configure/SKILL.mdPlatform CLI
gemini skills install https://github.com/anthropics/claude-plugins-official --path external_plugins/imessage/skills/configureManually: put the files in place
.devin/skills/configure/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set37
The whole set →Other versions of configure
Similar
Questions about configure
How do I install configure in Claude Code?
Run /plugin install imessage@claude-plugins-official in Claude Code. You can also install it via npx skills add anthropics/claude-plugins-official --skill configure -a claude-code.
What does configure do?
It tests read access to the local iMessage database and parses access.json. The skill then summarizes your permission state and explains the next setup step.
Why does the skill discourage pairing mode for iMessage?
Pairing mode triggers an automated text with a code to every person who messages your Mac. An allowlist keeps incoming messages restricted to your own Apple ID and explicitly approved numbers without spamming contacts.
Source text
SKILL.md · Apache-2.0
---
name: configure
description: Check iMessage channel setup and review access policy. Use when the user asks to configure iMessage, asks "how do I set this up" or "who can reach me," or wants to know why texts aren't reaching the assistant.
user-invocable: true
allowed-tools:
- Read
- Bash(ls *)
---
# /imessage:configure — iMessage Channel Setup
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)
---
## Status and guidance
Read state and give the user a complete picture:
1. **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."*
2. **Access** — read `~/.claude/channels/imessage/access.json` (missing file
= defaults: `dmPolicy: "allowlist"`, empty allowlist). Show:
- DM policy and what it means in one line
- Allowed senders: count, and list the handles
- Pending pairings: count, with codes if any (only if policy is `pairing`)
3. **What next** — end with a concrete next step based on state:
- FDA not granted → the FDA instructions above
- FDA granted, policy is allowlist → *"Text yourself from any device
signed into your Apple ID — self-chat always bypasses the gate. To let
someone else through: `/imessage:access allow +15551234567`."*
- FDA granted, someone allowed → *"Ready. Self-chat works; {N} other
sender(s) allowed."*
---
## Build the allowlist — don't pair
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:
1. Read the allowlist. Tell the user who's in it (self-chat always works
regardless).
2. Ask: *"Besides yourself, who should be able to text you through this?"*
3. **"Nobody, just me"** → done. The default `allowlist` with an empty list
is correct. Self-chat bypasses the gate.
4. **"My partner / a friend / a couple people"** → ask for each handle
(phone like `+15551234567` or email like `[email protected]`) and offer to
run `/imessage:access allow <handle>` for each. Stay on `allowlist`.
5. **Current policy is `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.
6. **User asks for `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 `[email protected]`. `disabled` drops
everything except self-chat.
---
## Implementation notes
- No `.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.
© anthropics · Apache-2.0 · anthropics/claude-plugins-official