Проверка канала iMessage
Проверяет, что Claude может читать твои сообщения iMessage на Mac, и помогает настроить список тех, кому можно писать.
- Что делает
- Проверяет, что Claude может читать твои сообщения iMessage на Mac, и помогает настроить список тех, кому можно писать.
- Когда брать
- Когда сообщения iMessage не доходят до ассистента или нужно понять, кто может с ним связаться.
- Пример запроса
- Почему мои сообщения iMessage не доходят до Claude? Проверь настройку.
- Нужно подключить
- терминал, Mac с iMessage, канал iMessage (плагин Claude Code)
Входит в плагин imessage. В Cowork и Claude Code можно поставить плагин целиком.
Как включить
- Скачайте архив и распакуйте его.
- Положите папку
configureв~/.claude/skills/. - Откройте Claude Code и опишите задачу своими словами: Claude подхватит скилл по описанию.
Текст
---
name: configure
description: Проверяет настройку канала iMessage и показывает политику доступа. Используй, когда пользователь просит настроить iMessage, спрашивает «как это настроить» или «кто может со мной связаться» либо хочет понять, почему сообщения не доходят до ассистента.
user-invocable: true
allowed-tools:
- Read
- Bash(ls *)
---
/imessage:configure — настройка канала iMessage
Сохранять токен не нужно: iMessage напрямую читает ~/Library/Messages/chat.db. Этот скилл проверяет, работает ли такое чтение, и объясняет пользователю политику доступа.
Переданные аргументы: $ARGUMENTS (не используются — скилл только показывает статус)
Статус и подсказки
Прочитай состояние и дай пользователю полную картину:
- Полный доступ к диску (Full Disk Access) — выполни
ls ~/Library/Messages/chat.db. Если команда падает с ошибкой «Operation not permitted», значит, доступ не выдан. Скажи: *«Выдай полный доступ к диску своему терминалу (или IDE, если Claude Code запущен в ней): Системные настройки → Конфиденциальность и безопасность → Полный доступ к диску (System Settings → Privacy & Security → Full Disk Access). Без него сервер не сможет прочитать chat.db.»*
- Доступ — прочитай
~/.claude/channels/imessage/access.json(нет файла = значения по умолчанию:dmPolicy: "allowlist", пустой список разрешённых). Покажи: - политику для личных сообщений и в одну строку, что она означает
- разрешённые отправители: число и список адресов
- ожидающие сопряжения: число, а если они есть, то коды (только если политика —
pairing)
- Что дальше — закончи конкретным следующим шагом в зависимости от состояния:
- Полный доступ к диску не выдан → инструкция выше
- Доступ выдан, политика allowlist → *«Напиши сам себе с любого устройства, где выполнен вход в твой Apple ID: чат с самим собой всегда проходит проверку. Чтобы пропустить кого-то ещё:
/imessage:access allow +15551234567.»* - Доступ выдан, кому-то разрешено → *«Готово. Чат с самим собой работает; разрешено ещё отправителей: {N}.»*
Составляй список разрешённых, а не используй сопряжение
iMessage читает твой личный chat.db. Телефоны и адреса тех, кого ты пустишь, тебе уже известны, так что задачи «узнать ID» здесь нет. У сопряжения тут нет плюсов и есть явный минус: каждый контакт, который напишет на этот Mac, получит непрошеный автоответ.
Веди разговор так:
- Прочитай список разрешённых. Скажи пользователю, кто в нём есть (чат с самим собой работает в любом случае).
- Спроси: *«Кроме тебя самого, кто должен иметь возможность писать тебе через это?»*
- «Никто, только я» → готово. Значение по умолчанию
allowlistс пустым списком верное. Чат с самим собой проходит проверку. - «Моя вторая половина / друг / пара человек» → спроси адрес каждого (телефон вида
+15551234567или email видаthem@icloud.com) и предложи выполнить/imessage:access allow <handle>для каждого. Оставайся наallowlist. - **Текущая политика —
pairing** → сразу укажи на это: *«У тебя политикаpairing: она автоматически отправляет код каждому контакту, который пишет на этот Mac. Вернутьallowlist?»* — и предложи/imessage:access policy allowlist. Не жди, пока попросят. - **Пользователь просит
pairing** → возрази. Объясни последствие: автоответ всем подряд. Если он настаивает и подтверждает, что это отдельная линия с небольшим числом контактов, хорошо, но считай это разовым исключением, а не рекомендацией.
Адреса выглядят как +15551234567 или someone@icloud.com. disabled отбрасывает всё, кроме чата с самим собой.
Замечания по реализации
- Для этого канала нет файла
.envи нет токена. Единственная настройка на уровне ОС — полный доступ к диску плюс однократный запрос на автоматизацию, когда сервер впервые что-то отправит (отсюда это проверить нельзя). access.jsonперечитывается при каждом входящем сообщении — изменения политики через/imessage:accessдействуют сразу, перезапуск не нужен.
Перевод: iiuniversitet. Оригинал: https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage/skills/configure, лицензия 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 `them@icloud.com`) 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 `someone@icloud.com`. `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/claude-plugins-official / imessage / configure ↗. Ссылка проверена 2026-10-10.