Настройка разрешений

Настройка режимов разрешений Claude Code для управления тем, какие операции требуют подтверждения человека

Обновлено 2026-10-08

Нужен API-ключ? Зарегистрироваться →Эндпоинты и Base URL →

Содержание

Claude Code использует систему разрешений для контроля над тем, какие операции требуют подтверждения пользователя. Правильная настройка разрешений обеспечивает безопасность и повышает эффективность разработки.

Режимы разрешений

Режим Описание Сценарий применения
default Запрашивает разрешение при первом использовании инструмента (режим manual) Повседневная разработка, баланс безопасности и эффективности
acceptEdits Автоматически одобряет редактирование файлов, другие операции по-прежнему требуют подтверждения Задачи, требующие частого изменения файлов
plan Только анализ без выполнения (Plan Mode); когда доступен режим auto, shell-команды во время планирования проверяются классификатором Изучение и проверка кода без внесения изменений Claude
auto Классификатор проверяет действия, которые требуют одобрения; явно выходящие за рамки блокируются, остальные выполняются без запроса Повседневная разработка с меньшим числом прерываний (режим по умолчанию для интерактивных сессий с Claude Code 2.1.283)
dontAsk Выполняет только действия, не требующие одобрения (например, чтение файлов в рабочем каталоге и команды только для чтения), и действия, предварительно одобренные правилами allow; остальное отклоняется без запроса CI/CD и другие запуски без участия человека
bypassPermissions Пропускает все запросы на разрешение Полностью изолированные доверенные среды

Режим auto и QCode: auto работает через QCode. Запросы к классификатору отправляет сам Claude Code (модель по умолчанию claude-sonnet-5), и они учитываются в вашем расходе. Если вы видите английское уведомление «your requests go through … which isn't compatible», интерактивная сессия задерживает первое действие, требующее проверки, пока вы не нажмёте Enter; установите CLAUDE_CODE_AUTO_MODE_SERVER=0, чтобы оно не появлялось. См. Доступность функций.

Переключение режима разрешений

  • Нажмите Shift+Tab для циклического переключения режимов; начиная с auto порядок такой: auto → default → acceptEdits → plan
  • Для входа в Plan Mode нажмите Shift+Tab дважды из режима manual (default) или трижды из auto
  • Выберите режим при запуске: claude --permission-mode acceptEdits
  • Выберите режим непосредственно в диалоговом окне

Настройка режима разрешений по умолчанию

Настройте в .claude/settings.json (проект) или ~/.claude/settings.json (пользователь):

{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

Примечание: "defaultMode": "auto" действует только в ~/.claude/settings.json уровня пользователя или в управляемых настройках вашей организации; в .claude/settings.json или .claude/settings.local.json проекта он игнорируется, и сессия использует встроенное значение по умолчанию (а не настройку уровня пользователя). bypassPermissions в настройках проекта тоже не действует. Флаг --permission-mode имеет приоритет над файлами настроек.

Правила Allow: предварительное одобрение команд

Предварительно одобрите определённые команды, чтобы не запрашивать разрешение каждый раз:

{
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test:*)",
      "Bash(git status)",
      "Bash(git add:*)",
      "Bash(git diff:*)"
    ]
  }
}

Синтаксис правил Allow:

  • Bash(команда) — точное совпадение команды
  • Bash(префикс_команды:*) — совпадение с командами, начинающимися с указанного префикса
  • Read(путь_к_файлу) — разрешить чтение определённого файла
  • Write(путь_к_файлу) — разрешить запись в определённый файл

Правила Deny: защита конфиденциальных файлов

Запрет на доступ или изменение конфиденциальных файлов для Claude:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Write(./.git/**)",
      "Bash(rm -rf:*)"
    ]
  }
}

Синтаксис правил Deny:

  • Шаблоны путей поддерживают подстановочные знаки * (один уровень) и ** (несколько уровней)
  • Правила Deny имеют более высокий приоритет, чем правила Allow

Совместное использование Allow и Deny

{
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": [
      "Bash(npm run *)",
      "Bash(git status)",
      "Bash(git diff)"
    ],
    "deny": [
      "Bash(git push:*)",
      "Bash(rm -rf:*)",
      "Read(./.env*)"
    ]
  }
}

Иерархия файлов конфигурации

Claude Code объединяет настройки разрешений в следующем порядке приоритета:

Приоритет Расположение Область применения
Наивысший .claude/settings.local.json (не коммитить в Git) Личные локальные переопределения
Средний .claude/settings.json (коммитить в Git) Общие настройки команды
Наименьший ~/.claude/settings.json Глобальные настройки пользователя

Рекомендации для командной работы:

  • Размещайте общие для команды правила allow/deny в .claude/settings.json и коммитьте в Git
  • Индивидуальные специальные потребности размещайте в .claude/settings.local.json, добавив его в .gitignore

Лучшие практики

1. Защита конфиденциальных учётных данных

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./credentials/**)",
      "Read(./.ssh/**)"
    ]
  }
}

2. Настройка для фронтенд-проекта

{
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": [
      "Bash(npm run dev)",
      "Bash(npm run build)",
      "Bash(npm run test:*)",
      "Bash(npm run lint:*)"
    ]
  }
}

3. Автоматизация CI/CD

С Claude Code 2.1.285 claude -p и Agent SDK запускаются в auto, если режим разрешений не задан, в сессиях, которые не получают флаги возможностей. Подключение к QCode с ANTHROPIC_AUTH_TOKEN не даёт Claude Code учётных данных для их получения (то же самое для контейнеров CI, которые каждый запуск стартуют заново), поэтому в CI это и есть значение по умолчанию. В CI задавайте режим явно. Рекомендуем dontAsk с allow-списком: выполняются только действия, не требующие одобрения, и перечисленные инструменты, остальное отклоняется.

claude -p "Run the tests and fix failures" \
  --permission-mode dontAsk \
  --allowedTools "Read,Edit,Bash(npm test)"

Или в настройках проекта:

{
  "permissions": {
    "defaultMode": "dontAsk",
    "allow": ["Read", "Edit", "Bash(npm test)"]
  }
}

⚠️ Внимание: режим bypassPermissions пропускает все проверки безопасности. Используйте его только в полностью изолированных доверенных средах (например, в одноразовом контейнере).

Начните с QCode

Один API-ключ для Claude Code, Codex и других инструментов; тарификация по токенам, цены каждой модели — на qcode.cc/models

Enterprise →