Cursor permissions.json — это файл, через который IT и команда задают allowlist для agent run mode: какие terminal-команды и MCP tools можно выполнять без постоянного approve, и как Auto-review классификатор должен трактовать shell/MCP/Fetch. Это не registry policy вроде AllowedTeamId, а обычный managed file, который удобно класть через MDM. Канон: Deployment Patterns (Managing Run Mode allowlists with MDM).

Связка: MDM, MCP, Agent Mode, Allowed Extensions. Pillar: n8n для начинающих.

Для кого этот разбор

  • Agent Mode уже в проде, но approve на каждый npm test бесит.
  • SecOps хочет запретить destructive shell/MCP без полного отключения агента.
  • Нужен единый allowlist на флот + доп. правила в монорепо.
  • Путают permissions.json с MDM AllowedExtensions / policy.json.

Пути и merge

Слой Путь Как мержится
User / managed ~/.cursor/permissions.json Базовый файл устройства
Per-repo /.cursor/permissions.json в корне репозитория Записи конкатенируются с user-файлом
Admin dashboard team admin-controlled settings Заменяет file-defined значения категории
Editor UI settings / Add to allowlist Ниже файла; с файлом не merge’ится

Precedence по docs: dashboard → (user file + repo file concat) → editor settings. Cursor следит за обоими путями файла — restart обычно не нужен.

Формат файла

{
  "terminalAllowlist": [
    "npm install",
    "pnpm test",
    "python -m pytest"
  ],
  "mcpAllowlist": [
    "linear:*",
    "github:create_pull_request",
    "*:search"
  ],
  "autoRun": {
    "block_instructions": [
      "Block any command that drops or truncates a database table."
    ]
  }
}
  • terminalAllowlist — string[]; match идёт по полной command string. При включённом sandboxing поддерживаемые команды вне allowlist могут бежать в sandbox.
  • mcpAllowlistserver:tool | server:* | *:tool | *:*. MCP не исполняется внутри local sandbox.
  • autoRun — natural-language allow_instructions / block_instructions для Auto-review (shell, MCP, Fetch; в docs — Cursor 3.6+).

Все три ключа опциональны. Если после concat ключ пуст или отсутствует — Cursor откатывается к editor-managed allowlist для этой категории.

Пример и семантика — Deployment Patterns, проверка 2026-09-15. Не добавляйте сюда секреты и токены: файл часто лежит в managed config и может попасть в repo layer.

Как раздать через MDM

  1. Соберите минимальный terminalAllowlist под ваш stack (package manager, test runner, linters).
  2. Опишите mcpAllowlist узко: лучше github:create_pull_request, чем сразу *:*.
  3. Добавьте block_instructions на destructive DB/prod операции.
  4. Выложите файл в home пользователя как ~/.cursor/permissions.json через Jamf/Kandji/Intune/Ansible.
  5. При необходимости дополните per-repo файл в /.cursor/permissions.json — entries сложатся concat’ом.

Это соседний канал к registry/profile политикам (MDM), но тот же operational контур: устройство получает baseline до того, как разработчик откроет Agent Mode.

Сильные стороны

  • Снижает prompt fatigue без полного «auto-run everything».
  • Даёт SecOps язык политики на уровне команд и MCP tools.
  • Repo-layer позволяет усилить правила в чувствительных репозиториях.

Типичные ошибки

  • Кладут секреты в permissions.json «для удобства агента».
  • Сразу *:* в mcpAllowlist и удивляются blast radius.
  • Думают, что файл перекрывает team dashboard — наоборот, admin settings побеждают категорию.
  • Путают с ~/.cursor/policy.json (AllowedExtensions / Team ID) или с extensions.allowed.

FAQ

Что такое Cursor permissions.json?

Это файл allowlist для agent run mode: какие terminal-команды и MCP tools можно запускать без лишнего prompt, плюс autoRun-инструкции классификатора. Путь пользователя: ~/.cursor/permissions.json; в репо можно добавить /.cursor/permissions.json — записи конкатенируются. Канон: Deployment Patterns.

Какие ключи поддерживаются?

Опциональные ключи: terminalAllowlist (string[]), mcpAllowlist (string[]), autoRun (object с allow_instructions / block_instructions). Пустой или отсутствующий ключ после merge возвращает editor-managed allowlist для этой категории.

Какой синтаксис у mcpAllowlist?

Формы server:tool, server:*, *:tool, *:*. Пример: linear:*, github:create_pull_request, *:search. MCP tools не бегают внутри local sandbox.

Кто побеждает: dashboard, файл или editor UI?

Порядок precedence в docs: 1) team dashboard / admin-controlled settings, 2) managed ~/.cursor/permissions.json + repo /.cursor/permissions.json (concat), 3) editor settings и inline Add to allowlist. Admin settings заменяют file-defined значения категории, не мержатся с ними.

Нужен ли restart после правки файла?

Cursor watch’ит оба пути permissions.json, поэтому обновления подхватываются без обязательного restart. Раздавайте файл через Jamf/Intune/Ansible как обычный managed file в Cursor data directory.

Вывод

Cursor permissions.json — allowlist агента на устройстве и в репо. Держите user-файл через MDM, усиливайте критичные репозитории repo-layer, не конфликтуйте с dashboard. Соседние рычаги флота — Allowed Extensions и Update Mode.

Артём Денисов эксперт Нетологии и автор курса Яндекс Практикума по промпт-инжинирингу. Разбирает permissions.json по Deployment Patterns: terminal/MCP allowlists и precedence без выдуманных UI-кликов.

Хотите нейросети под свои задачи, а не «для всех»?

Когда базовых гайдов уже мало, помогает разбор под вашу работу. Наставничество, курсы и подписка Артём Денисов — все форматы на странице обучения. Тех-pillar — n8n для начинающих.