Как настроить permissions и hooks в Claude Code
Настройте allow, ask и deny через /permissions и settings.json, затем добавьте, проверьте и отладьте hooks Claude Code. С настройкой, примерами и ошибками.
Короткий ответ
Выполните /permissions в Claude Code, чтобы просмотреть и изменить правила доступа. Для постоянной настройки добавьте allow, ask и deny в settings.json. Hooks находятся в тех же файлах и запускают форматирование, тесты или проверки безопасности до и после tool calls. Приоритет правил: deny → ask → allow, поэтому allow не может переопределить deny.
Эти настройки управляют локальными инструментами на вашем компьютере. BetterToken меняет только Base URL, API Key и маршрутизацию model API; он не обходит локальные permissions и не запускает hooks вместо Claude Code.
Когда использовать permissions, а когда hooks
| Задача | Используйте |
|---|---|
| Выполнять определённую команду без запроса | permissions.allow |
| Всегда спрашивать перед операцией | permissions.ask |
| Запретить чтение чувствительных файлов или опасную команду | permissions.deny |
| Форматировать или тестировать после изменения файла | Hook PostToolUse |
| Проверить или заблокировать действие до выполнения | Hook PreToolUse |
| Объяснить модели правила команды | CLAUDE.md, а не permission rule |
Выберите область действия
| Файл | Область | Добавлять в репозиторий? |
|---|---|---|
~/.claude/settings.json | Все проекты текущего пользователя | Нет |
.claude/settings.json | Текущий проект и команда | Да |
.claude/settings.local.json | Текущий проект только на этом компьютере | Нет |
Настройте минимальные permission rules
Проверьте существующие правила через /permissions
В Claude Code выполните:
/permissionsИнтерфейс покажет allow, ask и deny с файлами-источниками. Перед добавлением правил проверьте, нет ли уже project или managed settings.
Добавьте узкие правила
Этот пример разрешает обычные tests и lint, всегда спрашивает перед git push и запрещает чтение .env:
{ "permissions": { "allow": [ "Bash(npm run lint *)", "Bash(npm test *)" ], "ask": [ "Bash(git push *)" ], "deny": [ "Read(./.env)", "Read(./.env.*)" ] }}Замените команды на scripts, которые действительно есть в проекте. Не включайте bypassPermissions только ради отключения запросов: официальная документация рекомендует этот режим лишь для изолированных контейнеров и VM.
Проверьте правила в /permissions
Сохраните файл и снова выполните /permissions. Убедитесь, что каждое правило отображается с правильным источником, затем проверьте по одному сценарию allow, ask и deny.
Добавьте готовый hook форматирования
Этот пример запускает formatter проекта после того, как Claude Code использует Edit или Write:
{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "npm run format" } ] } ] }}Если в файле уже есть permissions, добавьте hooks в тот же верхнеуровневый JSON-объект. Не создавайте отдельный .claude/hooks.json. Сначала вручную выполните npm run format и убедитесь, что команда завершается успешно.
Проверьте hook
- Выполните
/hooksв Claude Code. - Откройте PostToolUse и убедитесь, что указаны
Edit|Writeиnpm run format. - Попросите Claude изменить тестовый файл.
- Проверьте вывод hook и формат файла; hook должен выполниться один раз без ошибки.
Обычно Claude Code автоматически перечитывает изменения settings. Если этого не произошло, завершите сессию и перезапустите Claude Code.
Частые ошибки
| Симптом | Причина | Решение |
|---|---|---|
| Permission rules не применяются | Они записаны в ~/.claude.json или неверной директории | Перенесите их в ~/.claude/settings.json, .claude/settings.json или .claude/settings.local.json |
| Разрешённое действие всё равно блокируется | Оно совпало с deny или managed rule | Проверьте источники в /permissions; deny имеет приоритет над ask и allow |
| Hook не запускается | Event или matcher не совпадает с инструментом | Проверьте /hooks; PreToolUse запускается до выполнения, PostToolUse после успеха, matcher чувствителен к регистру |
| Hook запускается, но команда завершается ошибкой | Неверный script, рабочая директория или dependency | Сначала выполните ту же команду вручную из директории проекта |
| После подключения BetterToken остались запросы подтверждения | API provider и локальные permissions независимы | Сохраните Base URL BetterToken и отдельно настройте точные permissions Claude Code |
| Нужно временно отключить все hooks | Hook может мешать отладке | Добавьте "disableAllHooks": true, а после проверки удалите параметр или задайте false |
Границы BetterToken
BetterToken отвечает за доступ Claude Code к model API, маршрутизацию моделей, баланс и usage. Claude Code по-прежнему управляет:
- Чтением и изменением файлов
- Подтверждением Bash-команд
- Моментом запуска hooks и выполняемыми scripts
- Sandbox, MCP и правилами проекта
Для ошибок 401, Base URL или model mapping откройте инструкцию по Claude Code. Для подтверждений команд и automation используйте диагностику permissions и hooks на этой странице.
Связанные документы
- Настройка Claude Code с BetterToken
- Что такое CLAUDE.md в Claude Code
- Почему Claude Code расходует много tokens
- MCP и API Key / Base URL в Claude Code

