Контроль использования инструментов и разрешений в Claude Code SDK
canUseTool
, хуки и правила разрешений settings.json. Для полной документации API см. справочник TypeScript SDK.
canUseTool
- Динамическое одобрение для непокрытых случаев, запрашивает разрешение у пользователяquery()
или изменить его динамически во время потоковых сессий.
Режим | Описание | Поведение инструмента |
---|---|---|
default | Стандартное поведение разрешений | Применяются обычные проверки разрешений |
plan | Режим планирования - без выполнения | Claude может использовать только инструменты только для чтения; представляет план перед выполнением (В настоящее время не поддерживается в SDK) |
acceptEdits | Автоматическое принятие правок файлов | Правки файлов и операции файловой системы автоматически одобряются |
bypassPermissions | Обход всех проверок разрешений | Все инструменты выполняются без запросов разрешений (используйте с осторожностью) |
acceptEdits
)bypassPermissions
)bypassPermissions
- Если активен, разрешает все оставшиеся инструментыcanUseTool
- Обрабатывает оставшиеся случаиbypassPermissions
bypassPermissions
переопределяет правила разрешения и canUseTool
canUseTool
передается как опция при вызове функции query
. Он получает имя инструмента и входные параметры и должен вернуть решение - либо разрешить, либо запретить.
canUseTool срабатывает всякий раз, когда Claude Code показал бы запрос разрешения пользователю, например, хуки и правила разрешений не покрывают это, и это не в режиме автоматического принятия.
Вот полный пример, показывающий, как реализовать интерактивное одобрение инструментов:
canUseTool
обрабатывает случаи, не покрытые правилами разрешенийsettings.json
обеспечивают декларативный контроль со встроенным парсингом bash-команд. Эти правила оцениваются до вызова canUseTool
. Для более подробной информации о конфигурации настроек см. документацию по настройкам Claude Code.
ИмяИнструмента(шаблон)
Bash(npm:*)
соответствует любой команде, начинающейся с “npm”Read(./src/**/*.ts)
соответствует файлам TypeScript в srcWebFetch
блокирует все веб-запросыrm -rf
или curl | sh
Bash(git:*)
- Соответствует любой git-командеBash(npm run test)
- Соответствует точной командеBash(npm run test:*)
- Соответствует npm run test:unit, test:integration и т.д.