К содержимому
Claude Code с 0:полный курс
Уровень 1 · Разрешения и безопасность 7 мин Проверено автором · 12 окт. 2026 г. Сверено с Claude Code v2.1.287 · 12 окт. 2026 г.

Правила allow и deny: где они живут

Правила разрешений хранятся в файлах настроек, и файл решает, на кого правило действует — на тебя везде, на всю команду или только на тебя в этом проекте. Запрет проверяется первым.

Уровень 1 · 0 / 4 уроков0%

В прошлом уроке ты выбирал режим — общий уровень доверия. Правила разрешений тоньше: они говорят, какие конкретные действия Claude может делать без спроса, а какие запрещены всегда.

Как выглядит правило

Правила лежат в блоке permissions файла настроек:

{
  "permissions": {
    "allow": ["Bash(npm test)"],
    "deny": ["Read(./.env)", "Read(./.env.*)"]
  }
}
  • allow — что можно без вопроса: здесь запуск npm test;
  • deny — что нельзя никогда: здесь чтение файлов .env, где лежат секреты.

Внутри сессии /permissions покажет, какие правила сейчас действуют, а /status — какие файлы настроек подхватились.

Какой файл — на кого действует

Это главное. Одно и то же правило в разных файлах значит разное:

ФайлНа кого действуетЧто сюда класть
~/.claude/settings.jsonна тебя, во всех проектахтвои личные привычки
.claude/settings.json (коммитится)на всю команду в проектеобщие правила: что читать нельзя, какие команды разрешены
.claude/settings.local.json (не в git)на тебя, в этом проектетвои исключения
управляемые настройкина всю организациюполитика, которую не переопределить

Когда ты отвечаешь «Да, и больше не спрашивать» на команду, разрешение сохраняется в settings.local.json — это твоё личное исключение, а не правило команды.

Кто победит

Если один ключ задан в нескольких файлах, выигрывает более высокий уровень: управляемые настройки, затем командная строка, затем local, затем общий проектный, затем пользовательский. А списки правил — allow, deny — не перетирают друг друга, а складываются.

Внутри правил порядок жёсткий: сначала deny, потом ask, потом allow, и решает первое совпадение. Поэтому запрет нельзя случайно перебить разрешением в другом файле.

Мини-проверка

Ты хочешь, чтобы Claude ни у кого в команде не мог прочитать .env. Куда записать deny-правило?

Осторожно

Правило Read(./.env) останавливает инструменты чтения Claude и знакомые команды вроде cat, но не скрипт, который сам открывает файл. Полностью закрыть такие обходы помогает песочница — следующий урок. Секреты в репозитории это не делает безопасными: .env всё равно не коммитят.

Практика в терминале

Создай папку .claude и положи в неё settings.json с правилами: разрешить Bash(npm test), запретить Read(./.env). JSON удобно записать одной строкой через echo в одинарных кавычках.

Собери свой файл

В конструкторе настроек отметь галочками, что Claude может без вопроса, а что никогда, — и получишь готовый settings.json с объяснением каждой строки.
Открыть конструктор настроек →

Проверь себя

Отвечено 0/3
Режим:

Правило должно действовать на всех, кто работает с репозиторием. В какой файл его положить?

Команда разрешена правилом allow, но совпадает и с правилом deny. Что победит?

Ты нажал «Да, и больше не спрашивать» на команду. Куда сохранилось это разрешение?

Выполни задание в терминале и ответь на вопросы, чтобы завершить урок.

📝 Мои заметки

Сохраняется автоматически в этом браузере · видно на странице «Заметки».

ЗаданиеПодсказки придут сами, если застрянешь

Закрой Claude доступ к файлам .env для всей команды и разреши без вопросов запускать тесты. Правила — в .claude/settings.json проекта.

Tab дополнить · ↑ прошлые · Ctrl+L очистить · help команды

  • Не выполнено: Файл командных настроек создан
  • Не выполнено: Чтение .env запрещено
  • Не выполнено: Тесты разрешены без вопросов

Вопросы и ответы по уроку

Правило должно действовать на всех, кто работает с репозиторием. В какой файл его положить?

.claude/settings.json лежит в репозитории и коммитится — его правила получает вся команда. Личные исключения идут в settings.local.json, свои привычки на все проекты — в ~/.claude/settings.json.

Команда разрешена правилом allow, но совпадает и с правилом deny. Что победит?

Порядок проверки — deny, потом ask, потом allow; первое совпадение решает. Запрет нельзя перебить разрешением.

Ты нажал «Да, и больше не спрашивать» на команду. Куда сохранилось это разрешение?

Такие разрешения ложатся в settings.local.json: это твоё исключение в этом проекте, а не правило для команды.

Ты хочешь, чтобы Claude ни у кого в команде не мог прочитать .env. Куда записать deny-правило?

Только проектный settings.json попадает в репозиторий и действует на всю команду. Личные файлы защитят только тебя.

Листай уроки клавишами ← → · поиск по ⌘K