В прошлом уроке ты выбирал режим — общий уровень доверия. Правила разрешений тоньше: они говорят, какие конкретные действия 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 всё равно не коммитят.
Практика в терминале
Собери свой файл