раздел 02
Claude Code: режимы и settings.json
В Claude Code разрешениями управляют на двух уровнях: быстрые режимы прямо в сессии и точная настройка через файл settings.json.
Четыре режима по Shift+Tab
Клавиша Shift+Tab переключает режим по кругу. Текущий режим виден в строке ввода.
Bypass-режим включается отдельно - запуском с флагом --dangerously-skip-permissions. Само название флага намекает: это «опасно пропустить разрешения».
Как выглядит запрос в чате
Когда агент хочет выполнить команду, он спрашивает примерно так: Allow Claude to run <команда>? с вариантами:
- Yes - разрешить один раз;
- Yes, and don't ask again for ... - разрешить и больше не спрашивать про похожее (фактически добавляет правило в allow);
- No - отклонить.
Правки файлов агент показывает диффом с кнопками Accept и Reject.
Тонкая настройка: settings.json
Под капотом режимов лежат правила. Их задают в файле настроек:
.claude/settings.json- в корне проекта (правила для этого проекта, можно коммитить в репозиторий команды);~/.claude/settings.json- глобальный, для всех проектов на вашей машине.
Внутри - блок permissions с тремя массивами: allow, ask, deny. Правила пишутся как имя инструмента и, при необходимости, шаблон в скобках:
{
"permissions": {
"allow": [
"Bash(npm run test:*)",
"Bash(npm run build)",
"Read(./src/**)",
"Edit"
],
"ask": [
"WebFetch"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(git push:*)",
"Read(./.env)",
"Read(./.env.*)"
]
}
}
Как это читается:
Шаблоны вроде Bash(npm run test:*) означают «любая команда, начинающаяся с npm run test». Read(./src/**) - чтение любых файлов внутри src. Edit без скобок - правки файлов в целом.
Команда /permissions и хуки
Команда /permissions прямо в сессии открывает текущие правила и позволяет их посмотреть и отредактировать - не лазая в файл руками.
Для продвинутых сценариев есть хуки. Хук PreToolUse срабатывает перед выполнением инструмента и может программно разрешить или заблокировать действие по своей логике - например, запретить любые команды, трогающие определённую папку.