Настрой, что агенту разрешено делать, с помощью токенов разрешений в конфиге CLI. Разрешения задаются в ~/.cursor/cli-config.json (глобально) или <project>/.cursor/cli.json (для конкретного проекта).

Типы разрешений

Команды shell

Формат: Shell(commandBase) Контролирует доступ к командам shell. commandBase — это первый токен в командной строке.
ExampleDescription
Shell(ls)Разрешить запуск команд ls
Shell(git)Разрешить любые подкоманды git
Shell(npm)Разрешить команды менеджера пакетов npm
Shell(rm)Запретить разрушительное удаление файлов (обычно используется в deny)

Чтение файлов

Формат: Read(pathOrGlob) Контролирует доступ на чтение файлов и каталогов. Поддерживает glob-шаблоны.
ExampleDescription
Read(src/**/*.ts)Разрешить чтение файлов TypeScript в src
Read(**/*.md)Разрешить чтение файлов Markdown в любом месте
Read(.env*)Запретить чтение файлов окружения
Read(/etc/passwd)Запретить чтение системных файлов

Запись файлов

Формат: Write(pathOrGlob) Контролирует доступ на запись файлов и каталогов. Поддерживает glob-шаблоны. В режиме печати для записи файлов требуется --force.
ExampleDescription
Write(src/**)Разрешить запись в любые файлы внутри src
Write(package.json)Разрешить изменение package.json
Write(**/*.key)Запретить запись файлов приватных ключей
Write(**/.env*)Запретить запись файлов окружения

Конфигурация

Добавь права в объект permissions в конфиге CLI:
{
  "permissions": {
    "allow": [
      "Shell(ls)",
      "Shell(git)", 
      "Read(src/**/*.ts)",
      "Write(package.json)"
    ],
    "deny": [
      "Shell(rm)",
      "Read(.env*)",
      "Write(**/*.key)"
    ]
  }
}

Сопоставление по шаблону

  • В шаблонах glob используются подстановочные символы **, * и ?
  • Относительные пути ограничены текущим рабочим пространством
  • Абсолютные пути могут указывать на файлы за пределами проекта
  • Правила запрета имеют приоритет над правилами разрешения