WhatsApp

Разрешения

Задавайте разрешения WhatsApp CLI по командам, различая локальные и удалённые изменения.

Используйте эту страницу, прежде чем позволить ИИ-агенту, скрипту или другому человеку работать с вашей учетной записью WhatsApp через wa. Он показывает, как для каждого профиля решить, что можно только читать, что вас спрашивают в первую очередь, а что можно продолжать без вопросов. В конце вы можете сделать профиль доступным только для чтения, разрешить одно действие, например отправку, и узнать, какие другие проверки все еще применяются.

Слова, которые используются на этой странице:

  • Профиль: именованный набор настроек для одной связанной аккаунта, например work (profiles).
  • Ключ разрешения: имя команды или группы команд, например messages или messages.send. Более длинный ключ более конкретен.
  • Уровень доступа: что происходит при выполнении этой команды: deny, readonly, ask или allow.

Начните с чтения и разрешайте изменения только тогда, когда они вам нужны.

Выберите уровень доступа

УровеньЧто происходит
denyДействие запрещено, включая чтение.
readonlyЧтение разрешено, изменения запрещены.
askПеред изменением в терминале запрашивается подтверждение.
allowДействие может быть выполнено без дополнительных вопросов.

Без установленного permissions разрешено все, кроме удаления и некоторых других изменений, которые требуют подтверждения. Отказ завершается с кодом 5 и называет ключ разрешения. Это не означает, что ссылка на WhatsApp не работает. Не просите агента снять ограничение только для того, чтобы завершить задачу.

Разрешить одно действие

wa work config set permissions.messages.send ask

Замените work на свой профиль. Для значения по умолчанию, которое позволяет читать сообщения и отказывается от изменений:

wa work config set permissions.messages readonly

Более конкретные ключи имеют приоритет: permissions.messages.send ask по-прежнему разрешает отправку с вопросом в терминале и без формы сервера через MCP. Установите этот ключ на readonly, чтобы отказаться от отправки. Проверьте другие исключения с помощью wa work config show.

Это контролирует сообщения. Остальные действия имеют свои ключи: reactions для реакций, polls для опросов и голосов, chats.mark-read для уведомлений о прочтении. Другая сторона видит все три, поэтому будьте с ними так же осторожны, как и с отправкой. chats.mute и chats.unmute покрывают chats mute и chats unmute, которые никто больше не видит; настройка только для chats.mute по-прежнему охватывает оба. messages.star и messages.unstar управляют отметкой сообщения звёздочкой; другие участники её тоже не видят. chats.archive, chats.unarchive, chats.pin, chats.unpin и chats.mark-unread охватывают команды с этими именами, которые никто больше не видит; каждый ключ действует отдельно, поэтому chats.archive readonly по-прежнему пропускает chats unarchive. account.update управляет командой account update: другие люди могут видеть новое имя, информацию и фотографию. chats.delete и chats.clear охватывают удаление чата или его сообщений с ваших собственных устройств; они спрашивают по умолчанию, так как ничто не возвращает сообщения.

Вопросы в скриптах

В терминале запрашивается запись на уровне ask. При наличии --json, --no-input или отсутствия терминала никто не может ответить, поэтому запись отклоняется с кодом выхода 7, если вы не добавите --yes; для удаления требуется --allow-dangerous. Эти флаги только отвечают на вопрос. Они не отменяют запреты deny и readonly.

Ограничить получателей и повторные отправки

Список получателей ограничивает чаты, в которые профиль может отправлять сообщения. Первый recipients add включает список; отправка в любой другой чат отклоняется с кодом выхода 7:

wa work recipients add 100000000000001@lid
wa work recipients list
wa work recipients remove 100000000000001@lid

Чат, добавленный по номеру телефона (…@s.whatsapp.net), сохраняется под его LID, если WhatsApp уже предоставил его, поскольку отправка на этот номер поступает на LID. Запись, сохраненная ранее под номером телефона, автоматически перемещается в LID, как только это устройство узнает LID номера: когда локальное хранилище хранит чат под этим номером, первая команда, которая называет его по номеру, перемещает чат и запись, прежде чем она начнет действовать; в противном случае следующий запуск serve или watch перемещает запись. Для этого номер никогда не запрашивается в WhatsApp. Пока запись не будет перемещена, отправка в LID отклоняется с кодом выхода 7, и в сообщении указывается идентификатор, который нужно добавить. recipients remove с номером удаляет старую запись.

Два изменения в списке одновременно не могут отменить друг друга. Когда другой процесс удерживает список в течение 5 с, изменение отклоняется с кодом завершения 9, и список остаётся прежним.

Почасовой лимит отправки sends_per_hour (30 по умолчанию) помогает остановить цикл. wa work sends list показывает каждую попытку отправки — отправленную, отклоненную, неудачную или неизвестную — без текста. Эти проверки остаются активными, когда команда разрешена (limits).

Временное изменение для сервера MCP

Добавьте --permission messages.send=readonly в команду запуска сервера, чтобы прекратить отправку данных для этого процесса. Сохраненные настройки остаются прежними. --permission только сужает: тот, который ослабляет профиль — readonly на allow, deny на что угодно — останавливает сервер при запуске с validation_error, называющим ключ. Чтобы позволить агенту делать больше, установите уровень в самом профиле. Через MCP ask не требует формы сервера: приложение контролирует подтверждения пользователя и может разрешить вызов без повторного запроса. Используйте deny или readonly, чтобы отказаться от изменений. Сервер MCP и настройка браузера объясняют полное соединение.

Ограничения и подробные правила

Агент, который может редактировать файлы конфигурации или выполнять неограниченные команды терминала, может изменить эти настройки. Прикрепите его к одному профилю с помощью WA_PROFILE_LOCK (профили при подключении) и прочитайте безопасность, прежде чем предоставлять этот доступ. Все настройки находятся в справке по конфигурации.