Перейти к содержимому

← Все статьи блога

Как настроить permissions.json в Cursor, чтобы MCP-инструменты не спрашивали Approve?

Автор: Алексей Доронин

Через 20 минут работы агент собрал 40 диалогов подтверждения. Разработчик кликал «Approve» на каждый поиск, каждый запрос к базе, каждое чтение файла - и наконец сказал «хватит», включил Run Everything. Следующим утром агент без предупреждения удалил prod-ветку. Выход из этой ловушки - permissions.json: один файл с перечнем read-only инструментов, после которого поиск и запросы к базе работают без диалога, а delete, create и publish по-прежнему ждут вашего подтверждения.

TL;DR / Быстрый инсайт: Создайте ~/.cursor/permissions.json с mcpAllowlist - перечень MCP-инструментов без диалога Approve. Включите Run Mode «Allowlist» или «Auto-review» в Settings > Agents. Read-only операции - автоматически, write-операции - с подтверждением. Cursor честно предупреждает: allowlist - это удобство, не граница безопасности.

MCP (Model Context Protocol) - протокол для подключения к Cursor внешних инструментов: поисковиков по документации, баз данных, систем задач. По умолчанию каждый вызов требует одобрения - permissions.json отделяет безобидные read-операции от опасных write-операций и даёт первым автозапуск.

Почему Run Everything - не решение и как это заканчивается

cursor-permissions-json-allowlist-mcp-inline-01 Как настроить permissions.json в Cursor, чтобы MCP-инструменты не спрашивали Approve?

На форуме Cursor это типичный паттерн: разработчик подключает несколько MCP-серверов, запускает агента для code review - и за 20 минут получает 40+ запросов Approve. Все они на поиск по документации, чтение файлов, запросы к Jira. Ни одной опасной операции. Терпение кончается, включается Run Everything. Следующая сессия - агент трактует задачу «почистить ветки» по-своему и удаляет нужную ветку без единого диалога.

Cursor не скрывает ограничения: в официальной документации написано прямым текстом - «Not a security boundary. Allowlists and autoRun instructions are best-effort convenience. They are not a security guarantee.» CVE-2026-22708 (CVSS 9.8) это подтвердил: shell built-ins вроде export обходили allowlist без одобрения до Cursor 2.3. Уязвимость закрыта, но принцип остался - allowlist ускоряет работу, а не заменяет контроль опасных операций.

Где создать permissions.json и что в него входит

cursor-permissions-json-allowlist-mcp-inline-02 Как настроить permissions.json в Cursor, чтобы MCP-инструменты не спрашивали Approve?

Файл существует на двух уровнях. Глобальный: ~/.cursor/permissions.json - применяется ко всем проектам, mcpAllowlist работает здесь. Проектный: .cursor/permissions.json в корне репозитория - активный баг (тред #163614): allowlists из project-level Cursor не читает, работают только autoRun-инструкции. До исправления используйте только глобальный файл.

{
  "mcpAllowlist": [
    "search-server:search",
    "context7:resolve-library-id",
    "context7:get-library-docs",
    "docs-server:*"
  ],
  "terminalAllowlist": [],
  "autoRun": {
    "instruction": "Перед операциями создания, удаления или публикации запрашивай подтверждение"
  }
}

mcpAllowlist - список разрешений формата «имя-сервера:имя-инструмента»; инструменты из списка запускаются без диалога. terminalAllowlist - аналог для терминала (для большинства случаев оставьте пустым). autoRun - текстовая подсказка агенту о серых зонах, не техническое ограничение. Критичная деталь: mcpAllowlist заменяет настройки IDE, а не дополняет - забыли инструмент, он перейдёт в режим Approve.

Какие инструменты разрешать, а какие - никогда

cursor-permissions-json-allowlist-mcp-inline-03 Как настроить permissions.json в Cursor, чтобы MCP-инструменты не спрашивали Approve?

Простое правило: спросите про каждый инструмент - «если агент вызовет это 20 раз без моего ведома, что случится?» Ответ «ничего страшного» - можно в allowlist. Ответ «потеря данных или необратимое действие» - только ручное подтверждение.

Безопасные для allowlist (только читают):

  • search, list, get, query, fetch, read - инструменты, которые не меняют состояние системы
  • Например: поиск по документации, чтение файлов репозитория, запрос списка задач, получение данных CRM без изменений

Никогда в allowlist:

  • create, delete, update, publish, send, deploy, merge - всё, что меняет или уничтожает данные
  • Например: wordpress_create_post, github_delete_branch, send_email, deploy_to_production

Типичная ошибка: добавить «github-server:*» потому что «ну он же для кода». У сервера есть и list_repositories (безопасно), и delete_repository (необратимо). Wildcard разрешает оба. Перед любым wildcard проверьте полный список tools сервера в Settings > MCP.

Синтаксис mcpAllowlist: паттерны, wildcards и баг 3.10.17

Имя сервера - ключ из раздела «mcpServers» вашего mcp.json (.cursor/mcp.json или ~/.cursor/mcp.json). Имя инструмента - точное название из Settings > MCP: разверните сервер, увидите список tools. Запись «safe-docs-server:*» - wildcard для всех инструментов сервера, удобно если у него нет write-операций. Точная запись «search-server:search» надёжнее, но нужно перечислять каждый инструмент отдельно.

Исправленный баг Cursor 3.10.17 (июль 2026): до этой версии wildcard-записи вида «server:*» не работали вовсе - применялись только точные «server:tool_name». Баг подтверждён командой Cursor (тред #164710) и исправлен в 3.10.17. Проверьте версию через Help > About и обновитесь, если ниже 3.10.17.

Какой Run Mode включить: Allowlist или Auto-review

Без активного Run Mode файл ничего не делает. Включите в Settings > Agents > Approvals & Execution.

Режим Как работает Когда выбирать
Ask Каждый tool-вызов требует Approve. permissions.json не применяется. Новые серверы, максимальный контроль
Allowlist Инструменты из mcpAllowlist - без диалога. Остальные - Approve. Детерминированный. До 5 серверов, нужна предсказуемость
Auto-review Tier 1 - ваш allowlist. Tier 2 - AI-классификатор. Рекомендован с Cursor 3.6 (май 2026). 10+ серверов, баланс удобства и контроля

Для большинства команд подходит Auto-review: allowlist - первый приоритет, инструменты вне списка оценивает классификатор. Run Everything - не вариант.

Активный баг (тред #165722, август 2026): если в permissions.json есть mcpAllowlist, кнопка «Auto-review (with Sandbox)» становится серой. Обычный Auto-review работает нормально. Временное решение: если нужен именно sandbox - уберите mcpAllowlist из файла до выхода фикса.

Проверить, что allowlist применился

После сохранения файла и включения Run Mode перезапустите Cursor (Reload Window или полное закрытие) - новый файл применяется только после перезапуска.

Признаки успешной настройки:

  • Вызов read-only инструмента из allowlist - агент работает дальше, диалог не появляется
  • Вызов write-инструмента - диалог Approve по-прежнему показывается
  • В Settings > Agents поля отображаются как «read-only (managed by permissions.json)»

Если Approve не исчез: файл в .cursor/ проекта вместо ~/.cursor/ (баг project-level); Run Mode не переключён с Ask; JSON с ошибкой - Cursor его игнорирует. Проверьте JSON через jsonlint.com.

Команды, Team Admin MCP и чек-лист

В компаниях с Cursor Business: если Team Admin задал allowedMcpServers, ваш ~/.cursor/permissions.json по allowlists игнорируется. Это намеренный дизайн - корпоративная политика приоритетнее (тред #164296). Попросите администратора обновить team allowlist.

Итоговый чек-лист перед запуском агента с allowlist:

  1. Версия Cursor 3.10.17 или новее (wildcard-баг исправлен, CVE-2026-22708 закрыт).
  2. Файл в ~/.cursor/permissions.json, не в .cursor/ проекта.
  3. В mcpAllowlist только search, list, get, query, fetch.
  4. Нет create, delete, publish, update, deploy в allowlist.
  5. Wildcard «server:*» только после проверки списка tools в Settings > MCP.
  6. Run Mode - Allowlist или Auto-review.
  7. После изменений - Reload Window.

Результат: read-операции в фоне без диалога, write-операции - только с вашего одобрения.

Материал проверен: Алексей Доронин (эксперт по автоматизации и ИИ), по официальной документации Cursor, форуму и CVE-базе на 1 августа 2026 г. Факты о permissions.json, режимах и известных багах актуальны для Cursor 3.10.17.

Частые вопросы

Чем Auto-review отличается от режима Allowlist?

Allowlist - детерминированный режим: инструмент в списке запускается без вопросов, нет - Approve. Auto-review добавляет AI-классификатор для инструментов вне mcpAllowlist: он оценивает операцию и может разрешить её без диалога. Рекомендован Cursor с версии 3.6 (май 2026) - удобнее при большом числе MCP-серверов.

Можно ли шарить permissions.json в git?

Технически да - файл не содержит секретов, только имена серверов. Нераспознанные записи Cursor игнорирует. Но если в компании настроен Team Admin MCP, корпоративный allowlist перекрывает личный файл - сначала проверьте командные настройки.

Почему allowlist прописан, но Approve всё равно появляется?

Три причины: файл в .cursor/ проекта вместо ~/.cursor/ (активный баг); Run Mode не переключён с Ask; JSON содержит ошибку и Cursor его молча игнорирует. Проверьте JSON через jsonlint.com и Run Mode через Settings > Agents.

Безопасно ли ставить wildcard «server:*» в mcpAllowlist?

Зависит от сервера. Только read-only инструменты - безопасно. Есть mix из read и write - wildcard разрешит всё включая деструктивные операции. Перед добавлением проверьте список tools в Settings > MCP: нет create, delete, publish - можно. После обновления до 3.10.17 wildcards работают корректно.

Что изменилось в Cursor 3.10.17?

Исправлен баг: wildcard-записи в mcpAllowlist не работали, применялись только точные «server:tool_name». У многих пользователей permissions.json с wildcards не давал никакого эффекта. Проверьте версию через Help > About и обновитесь, если ниже 3.10.17.

Что делать, если MCP-инструмент пропал из Settings > MCP?

Проверьте, что сервер запущен (статус активный в Settings > MCP). Для серверов на URL убедитесь, что endpoint доступен; для локальных - что процесс работает. Имя в allowlist должно точно совпадать с тем, что показывает Settings (регистр важен). После исправления - Reload Window.

Telegram