Контролируйте, что Claude Code может использовать и делать, с помощью детальных правил разрешений, режимов и управляемых политик.
Claude Code поддерживает детальные разрешения, позволяя вам точно указать, что агент может делать и что он не может. Параметры разрешений можно добавить в систему контроля версий и распространить среди всех разработчиков в вашей организации, а также настроить отдельными разработчиками.
Вы можете просматривать и управлять разрешениями инструментов Claude Code с помощью /permissions. Этот интерфейс отображает все правила разрешений и файлы settings.json, из которых они берутся.
Правила Allow позволяют Claude Code использовать указанный инструмент без ручного одобрения.
Правила Ask запрашивают подтверждение каждый раз, когда Claude Code пытается использовать указанный инструмент.
Правила Deny предотвращают использование Claude Code указанного инструмента.
Правила оцениваются по порядку: deny -> ask -> allow. Первое совпадающее правило побеждает, поэтому правила deny всегда имеют приоритет.
Claude Code поддерживает несколько режимов разрешений, которые контролируют, как инструменты одобряются. Установите defaultMode в ваших файлах параметров:
Режим
Описание
default
Стандартное поведение: запрашивает разрешение при первом использовании каждого инструмента
acceptEdits
Автоматически принимает разрешения на редактирование файлов для сеанса
plan
Plan Mode: Claude может анализировать, но не может изменять файлы или выполнять команды
dontAsk
Автоматически отклоняет инструменты, если они не предварительно одобрены через /permissions или правила permissions.allow
bypassPermissions
Пропускает все запросы разрешений (требует безопасной среды, см. предупреждение ниже)
Режим bypassPermissions отключает все проверки разрешений. Используйте это только в изолированных средах, таких как контейнеры или виртуальные машины, где Claude Code не может причинить вред. Администраторы могут предотвратить этот режим, установив disableBypassPermissionsMode на "disable" в управляемых параметрах.
Правила Bash поддерживают glob-шаблоны с *. Подстановочные символы могут появляться в любой позиции команды. Эта конфигурация позволяет npm и git commit команды, блокируя git push:
Пробел перед * имеет значение: Bash(ls *) совпадает с ls -la, но не с lsof, в то время как Bash(ls*) совпадает с обоими. Устаревший синтаксис суффикса :* эквивалентен *, но является устаревшим.
Правила разрешений Bash поддерживают сопоставление подстановочных символов с *. Подстановочные символы могут появляться в любой позиции команды, включая начало, середину или конец:
Bash(npm run build) совпадает с точной Bash командой npm run build
Bash(npm run test *) совпадает с Bash командами, начинающимися с npm run test
Bash(npm *) совпадает с любой командой, начинающейся с npm
Bash(* install) совпадает с любой командой, заканчивающейся на install
Bash(git * main) совпадает с командами, такими как git checkout main, git merge main
Когда * появляется в конце с пробелом перед ним (например Bash(ls *)), это обеспечивает границу слова, требуя, чтобы префиксу предшествовал пробел или конец строки. Например, Bash(ls *) совпадает с ls -la, но не с lsof. В отличие от этого, Bash(ls*) без пробела совпадает с обоими ls -la и lsof, потому что нет ограничения границы слова.
Claude Code осведомлен об операторах оболочки (например &&), поэтому правило сопоставления префикса, такое как Bash(safe-cmd *), не даст ему разрешение на выполнение команды safe-cmd && other-cmd.
Шаблоны разрешений Bash, которые пытаются ограничить аргументы команды, хрупкие. Например, Bash(curl http://github.com/ *) предназначен для ограничения curl на URL-адреса GitHub, но не будет совпадать с вариациями, такими как:
Опции перед URL: curl -X GET http://github.com/...
Другой протокол: curl https://github.com/...
Перенаправления: curl -L http://bit.ly/xyz (перенаправляет на github)
Переменные: URL=http://github.com && curl $URL
Дополнительные пробелы: curl http://github.com
Для более надежной фильтрации URL рассмотрите:
Ограничение сетевых инструментов Bash: используйте правила deny для блокировки curl, wget и подобных команд, затем используйте инструмент WebFetch с разрешением WebFetch(domain:github.com) для разрешенных доменов
Использование PreToolUse hooks: реализуйте hook, который проверяет URL-адреса в Bash командах и блокирует недопустимые домены
Инструктирование Claude Code о ваших разрешенных curl шаблонах через CLAUDE.md
Обратите внимание, что использование только WebFetch не предотвращает сетевой доступ. Если Bash разрешен, Claude все еще может использовать curl, wget или другие инструменты для доступа к любому URL-адресу.
Правила Edit применяются ко всем встроенным инструментам, которые редактируют файлы. Claude прилагает наилучшие усилия для применения правил Read ко всем встроенным инструментам, которые читают файлы, таким как Grep и Glob.Правила Read и Edit следуют спецификации gitignore с четырьмя различными типами шаблонов:
Шаблон
Значение
Пример
Совпадает
//path
Абсолютный путь от корня файловой системы
Read(//Users/alice/secrets/**)
/Users/alice/secrets/**
~/path
Путь от домашнего каталога
Read(~/Documents/*.pdf)
/Users/alice/Documents/*.pdf
/path
Путь относительно корня проекта
Edit(/src/**/*.ts)
<project root>/src/**/*.ts
path или ./path
Путь относительно текущего каталога
Read(*.env)
<cwd>/*.env
Шаблон, такой как /Users/alice/file, НЕ является абсолютным путем. Это относительно корня проекта. Используйте //Users/alice/file для абсолютных путей.
Примеры:
Edit(/docs/**): редактирование в <project>/docs/ (НЕ /docs/ и НЕ <project>/.claude/docs/)
Read(~/.zshrc): чтение .zshrc вашего домашнего каталога
Edit(//tmp/scratch.txt): редактирование абсолютного пути /tmp/scratch.txt
Read(src/**): чтение из <current-directory>/src/
В шаблонах gitignore * совпадает с файлами в одном каталоге, а ** совпадает рекурсивно по каталогам. Чтобы разрешить весь доступ к файлам, используйте только имя инструмента без скобок: Read, Edit или Write.
Используйте правила Agent(AgentName) для контроля, какие subagents может использовать Claude:
Agent(Explore) совпадает с subagent Explore
Agent(Plan) совпадает с subagent Plan
Agent(my-custom-agent) совпадает с пользовательским subagent с именем my-custom-agent
Добавьте эти правила в массив deny в ваших параметрах или используйте флаг CLI --disallowedTools для отключения конкретных агентов. Чтобы отключить агент Explore:
Claude Code hooks предоставляют способ регистрации пользовательских команд оболочки для выполнения оценки разрешений во время выполнения. Когда Claude Code выполняет вызов инструмента, PreToolUse hooks запускаются перед системой разрешений, и выход hook может определить, одобрить или отклонить вызов инструмента вместо системы разрешений.
По умолчанию Claude имеет доступ к файлам в каталоге, где он был запущен. Вы можете расширить этот доступ:
При запуске: используйте аргумент CLI --add-dir <path>
Во время сеанса: используйте команду /add-dir
Постоянная конфигурация: добавьте в additionalDirectories в файлы параметров
Файлы в дополнительных каталогах следуют тем же правилам разрешений, что и исходный рабочий каталог: они становятся читаемыми без запросов, и разрешения на редактирование файлов следуют текущему режиму разрешений.
Разрешения и sandboxing являются дополняющими уровнями безопасности:
Разрешения контролируют, какие инструменты может использовать Claude Code и какие файлы или домены он может использовать. Они применяются ко всем инструментам (Bash, Read, Edit, WebFetch, MCP и другим).
Sandboxing обеспечивает принудительное применение на уровне ОС, которое ограничивает доступ инструмента Bash к файловой системе и сети. Это применяется только к Bash командам и их дочерним процессам.
Используйте оба для защиты в глубину:
Правила deny разрешений блокируют Claude от попытки доступа к ограниченным ресурсам
Ограничения sandbox предотвращают Bash команды от доступа к ресурсам вне определенных границ, даже если инъекция подсказки обходит принятие решений Claude
Ограничения файловой системы в sandbox используют правила Read и Edit deny, а не отдельную конфигурацию sandbox
Ограничения сети объединяют правила разрешений WebFetch со списком allowedDomains sandbox
Для организаций, которым требуется централизованный контроль над конфигурацией Claude Code, администраторы могут развернуть управляемые параметры, которые не могут быть переопределены параметрами пользователя или проекта. Эти параметры политики следуют тому же формату, что и обычные файлы параметров, и могут быть доставлены через политики MDM/уровня ОС, управляемые файлы параметров или параметры, управляемые сервером. См. файлы параметров для механизмов доставки и расположения файлов.
Некоторые параметры эффективны только в управляемых параметрах:
Параметр
Описание
disableBypassPermissionsMode
Установите на "disable" для предотвращения режима bypassPermissions и флага --dangerously-skip-permissions
allowManagedPermissionRulesOnly
Когда true, предотвращает определение правил разрешений allow, ask или deny в параметрах пользователя и проекта. Применяются только правила в управляемых параметрах
allowManagedHooksOnly
Когда true, предотвращает загрузку hooks пользователя, проекта и плагина. Разрешены только управляемые hooks и SDK hooks
allowManagedMcpServersOnly
Когда true, только allowedMcpServers из управляемых параметров учитываются. deniedMcpServers все еще объединяется из всех источников. См. Управляемая конфигурация MCP
blockedMarketplaces
Список блокировки источников marketplace. Заблокированные источники проверяются перед загрузкой, поэтому они никогда не касаются файловой системы. См. управляемые ограничения marketplace
sandbox.network.allowManagedDomainsOnly
Когда true, только allowedDomains и правила WebFetch(domain:...) allow из управляемых параметров учитываются. Недопустимые домены блокируются автоматически без запроса пользователю. Запрещенные домены все еще объединяются из всех источников
Когда true, позволяет пользователям начинать Remote Control и веб-сеансы. По умолчанию true. Установите на false для предотвращения доступа к удаленным сеансам
Локальные параметры проекта (.claude/settings.local.json)
Общие параметры проекта (.claude/settings.json)
Параметры пользователя (~/.claude/settings.json)
Если инструмент запрещен на любом уровне, никакой другой уровень не может его разрешить. Например, управляемый параметр deny не может быть переопределен --allowedTools, и --disallowedTools может добавить ограничения сверх того, что определяют управляемые параметры.Если разрешение разрешено в параметрах пользователя, но запрещено в параметрах проекта, параметр проекта имеет приоритет и разрешение блокируется.
Этот репозиторий включает начальные конфигурации параметров для распространенных сценариев развертывания. Используйте их как отправные точки и настройте их в соответствии с вашими потребностями.