Разрешения SDK
Claude Agent SDK предоставляет мощные элементы управления разрешениями, которые позволяют вам управлять тем, как Claude использует инструменты в вашем приложении. Это руководство охватывает, как реализовать системы разрешений, используя обратный вызовcanUseTool, хуки и правила разрешений settings.json. Для полной документации API см. справочник TypeScript SDK.
Обзор
Claude Agent SDK предоставляет четыре дополняющих способа контроля использования инструментов:- Режимы разрешений - Глобальные настройки поведения разрешений, которые влияют на все инструменты
- обратный вызов canUseTool - Обработчик разрешений времени выполнения для случаев, не покрытых другими правилами
- Хуки - Детальный контроль над каждым выполнением инструмента с пользовательской логикой
- Правила разрешений (settings.json) - Декларативные правила разрешения/запрета с интегрированным парсингом bash команд
- Режимы разрешений - Установка общего поведения разрешений (планирование, автоматическое принятие правок, обход проверок)
canUseTool- Динамическое одобрение для непокрытых случаев, запрашивает разрешение у пользователя- Хуки - Программный контроль над всеми выполнениями инструментов
- Правила разрешений - Статические политики с интеллектуальным парсингом bash команд
Диаграмма потока разрешений
Порядок обработки: PreToolUse Hook → Правила запрета → Правила разрешения → Правила запроса → Проверка режима разрешений → обратный вызов canUseTool → PostToolUse HookРежимы разрешений
Режимы разрешений обеспечивают глобальный контроль над тем, как Claude использует инструменты. Вы можете установить режим разрешений при вызовеquery() или изменить его динамически во время потоковых сессий.
Доступные режимы
SDK поддерживает четыре режима разрешений, каждый с разным поведением:| Режим | Описание | Поведение инструмента |
|---|---|---|
default | Стандартное поведение разрешений | Применяются обычные проверки разрешений |
plan | Режим планирования - без выполнения | Claude может использовать только инструменты только для чтения; представляет план перед выполнением (В настоящее время не поддерживается в SDK) |
acceptEdits | Автоматическое принятие правок файлов | Правки файлов и операции файловой системы автоматически одобряются |
bypassPermissions | Обход всех проверок разрешений | Все инструменты выполняются без запросов разрешений (используйте с осторожностью) |
Установка режима разрешений
Вы можете установить режим разрешений двумя способами:1. Начальная конфигурация
Установите режим при создании запроса:2. Динамические изменения режима (только потоковая передача)
Измените режим во время потоковой сессии:Поведения, специфичные для режимов
Режим принятия правок (acceptEdits)
В режиме принятия правок:
- Все правки файлов автоматически одобряются
- Операции файловой системы (mkdir, touch, rm и т.д.) автоматически одобряются
- Другие инструменты все еще требуют обычных разрешений
- Ускоряет разработку, когда вы доверяете правкам Claude
- Полезно для быстрого прототипирования и итераций
- Правки файлов (инструменты Edit, Write)
- Bash-команды файловой системы (mkdir, touch, rm, mv, cp)
- Создание и удаление файлов
Режим обхода разрешений (bypassPermissions)
В режиме обхода разрешений:
- ВСЕ использования инструментов автоматически одобряются
- Не появляются запросы разрешений
- Хуки все еще выполняются (все еще могут блокировать операции)
- Используйте с крайней осторожностью - Claude имеет полный доступ к системе
- Рекомендуется только для контролируемых сред
Приоритет режима в потоке разрешений
Режимы разрешений оцениваются в определенной точке потока разрешений:- Хуки выполняются первыми - Могут разрешить, запретить, спросить или продолжить
- Правила запрета проверяются - Блокируют инструменты независимо от режима
- Правила разрешения проверяются - Разрешают инструменты при совпадении
- Правила запроса проверяются - Запрашивают разрешение при совпадении
- Режим разрешений оценивается:
- Режим
bypassPermissions- Если активен, разрешает все оставшиеся инструменты - Другие режимы - Передают обратному вызову
canUseTool
- Режим
- Обратный вызов
canUseTool- Обрабатывает оставшиеся случаи
- Хуки всегда могут контролировать использование инструментов, даже в режиме
bypassPermissions - Явные правила запрета переопределяют все режимы разрешений
- Правила запроса оцениваются перед режимами разрешений
- Режим
bypassPermissionsпереопределяет обратный вызовcanUseToolдля несовпавших инструментов
Лучшие практики
- Используйте режим по умолчанию для контролируемого выполнения с обычными проверками разрешений
- Используйте режим acceptEdits при работе с изолированными файлами или каталогами
- Избегайте bypassPermissions в продакшене или на системах с чувствительными данными
- Комбинируйте режимы с хуками для детального контроля
- Переключайте режимы динамически в зависимости от прогресса задачи и уверенности
canUseTool
Обратный вызовcanUseTool передается как опция при вызове функции query. Он получает имя инструмента и входные параметры и должен вернуть решение - либо разрешить, либо запретить.
canUseTool срабатывает всякий раз, когда Claude Code показал бы запрос разрешения пользователю, например, хуки и правила разрешений не покрывают это, и это не в режиме acceptEdits.
Вот полный пример, показывающий, как реализовать интерактивное одобрение инструментов:
Связанные ресурсы
- Руководство по хукам - Узнайте, как реализовать хуки для детального контроля над выполнением инструментов
- Настройки: Правила разрешений - Настройте декларативные правила разрешения/запрета с парсингом bash команд