Перейти к содержимому
Зарегистрироваться бесплатно
Claude Code

Как настроить 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

  1. Выполните /hooks в Claude Code.
  2. Откройте PostToolUse и убедитесь, что указаны Edit|Write и npm run format.
  3. Попросите Claude изменить тестовый файл.
  4. Проверьте вывод 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
Нужно временно отключить все hooksHook может мешать отладкеДобавьте "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 на этой странице.

Связанные документы

References