settings.json и разрешения
Конфигурация Claude Code: уровни settings.json, разрешения (allow/deny) и режимы — что агенту можно делать без спроса, а что нет.
Если CLAUDE.md — это инструкции («как работать»), то settings.json — это конфигурация («что включено и что разрешено»). Память агент читает как текст; настройки — это машинные параметры: модель, переменные окружения, хуки, права.
Уровни настроек
Как и память, настройки бывают разного охвата, и они наслаиваются друг на друга:
| Файл | Для кого | В гите? |
|---|---|---|
~/.claude/settings.json | ты, во всех проектах | нет |
.claude/settings.json | вся команда | да |
.claude/settings.local.json | ты, в этом проекте | нет (gitignore) |
Если параметр задан на нескольких уровнях, более узкий перебивает более широкий (local → project → user). Плюс корпоративные «управляемые» настройки, которые перебивают всё, — их раздаёт администратор, и переопределить их нельзя.
Разрешения — самое важное
Агент умеет запускать команды, читать и менять файлы, ходить в сеть. Чтобы он не натворил лишнего, есть permissions — правила allow / deny:
{
"permissions": {
"allow": ["Bash(npm run test:*)", "Read(./src/**)"],
"deny": ["Bash(rm:*)", "Read(./.env)"]
}
}- allow — выполнять без вопросов (например, прогон тестов).
- deny — запрещено наглухо (удаление, чтение секретов).
- Что не подошло ни под одно правило — агент спросит разрешение.
Не уноси в allow всё подряд ради тишины. Разрешения — это страховка: лучше лишний раз подтвердить, чем разрешить rm -rf глобально.
Режимы разрешений
Помимо точечных правил есть режим на всю сессию — общая «строгость»:
- ask — спрашивает перед каждым нестандартным действием (по умолчанию).
- plan — только думает и предлагает план, ничего не меняет (см. Режимы).
- acceptEdits — правки файлов без подтверждения, но команды всё ещё спрашивает.
- bypassPermissions — без тормозов. Только когда точно понимаешь, что делаешь.
Полный список полей, синтаксис правил и приоритеты — в официальной документации по настройкам.
Проверь себя
1. Чем settings.json отличается от CLAUDE.md?
2. Действие не попало ни в allow, ни в deny. Что сделает агент?
3. Один параметр задан и в user, и в project, и в local. Какой победит?