✻ Claude Code по-русски
🎧 Аудиокурс
🎧 Слушать урок9:21 · голос Russian_BrightHeroine

#Разрешения, области настроек и песочница

Средний уровень · Урок 4 из 8 · около 20 минут · Нужно: Организуйте память проекта и посмотрите, что загрузилось · Сверено с Claude Code v2.1.285 (stable) 06.10.2026

#Цель

К концу урока вы сможете положить правило разрешений в файл настроек с подходящей областью действия, увидеть, какие правила действуют, и включить песочницу, чтобы команды оболочки, которые запускает Claude, не могли писать за пределами проекта, временной папки и добавленных вами папок.

#Что понадобится

#Идея

Claude Code читает настройки из четырёх файлов, и от файла, в который попадает правило, зависит, на кого оно действует (Settings):

Файл На кого действует Что сюда класть
~/.claude/settings.json На вас, во всех проектах Ваши личные предпочтения
.claude/settings.json, закоммиченный На всех в проекте Правила команды: файлы, которые Claude не должен читать никогда, команды, которые запускают все
.claude/settings.local.json, вне git На вас, в этом проекте Ваши личные исключения. Ответ «Yes, and don't ask again» на Bash-команду сохраняется сюда
Управляемые настройки (managed) На всех, кому их раздаёт ваша организация Политика, которую ваши настройки не могут переопределить, кроме нескольких ключей безопасности, где побеждает более строгое значение

Если один и тот же ключ задан в нескольких местах, побеждает более высокий уровень: управляемые настройки, затем командная строка, затем локальные, затем общие проектные, затем пользовательские (Settings precedence). Списки правил вроде permissions.allow, напротив, объединяются по всем файлам. Среди правил сначала проверяется deny, затем ask, затем allow, и решает первое совпадение (Configure permissions).

Правила разрешений управляют инструментами Claude. Песочница добавляет вокруг команд оболочки, которые запускает Claude, границу, которую обеспечивает операционная система: по умолчанию они могут писать только в проект, во временную папку пользователя и в папки, добавленные через --add-dir или /add-dir, а в сеть выходят только через прокси, сверяющий каждый хост со списком разрешённых. Пока вы её не включите, она выключена. В режиме auto-allow команда, выполняемая внутри песочницы, не требует подтверждения.

#Разбор примера

В своей копии для практики:

  1. Запустите claude и выполните /status. Строка Setting sources перечисляет файлы настроек, которые загрузила эта сессия.
  2. Сохраните правила команды в .claude/settings.json. Это правила из документации, не пускающие Claude к файлам .env (Exclude sensitive files), плюс команда запуска тестов:
{
  "permissions": {
    "allow": ["Bash(npm test)"],
    "deny": ["Read(./.env)", "Read(./.env.*)"]
  }
}

Claude Code перезагружает файл настроек, когда тот меняется (When edits take effect). Выполните /permissions: среди правил allow будет Bash(npm test), а среди правил deny — два правила Read. 3. Попросите Claude: Run npm test. Команда выполнится без запроса разрешения: её покрывает правило allow. 4. Включите песочницу. Выполните /sandbox и на вкладке Mode выберите auto-allow. Claude Code сохранит настройку в .claude/settings.local.json — ваш личный файл (Get started). 5. Попросите Claude попробовать записать что-то за пределами проекта:

Run this exact command and show me its output: touch ~/sandbox-probe

Команда запустится без запроса и завершится ошибкой: Operation not permitted в macOS, Read-only file system в Linux и WSL 2 (Confirm commands run inside the sandbox). Если Claude предложит повторить вне песочницы, откажитесь.

#Ваша очередь

Настройте такое же разделение в своём репозитории.

  1. Сохраните этот незаконченный файл как .claude/settings.json и замените каждый TODO правилом. Разрешите только одну команду, запускающую ваши тесты, например Bash(npm test) или Bash(pytest):
{
  "permissions": {
    "allow": ["TODO: the command that runs your tests"],
    "deny": ["TODO: reading .env", "TODO: reading .env.local and the other .env.* files"]
  }
}
  1. Закоммитьте его: это правила для всех, кто работает в репозитории.
  2. В сессии там же включите песочницу через /sandbox в режиме auto-allow и повторите шаг 5 из разбора примера.
  3. Выполните git status. .claude/settings.local.json в списке нет: Claude Code при создании исключает его из git (Keep personal settings out of a repository).

#Проверка

Урок пройден, когда выполнено всё это:

Запустите npm run check -- i-4 --dir <your repo> из своей копии для практики или npm run check -- i-4 в самой копии.

Если первый пункт не проходит из-за слишком широкого правила, замените его одной конкретной командой: Bash(npm *) позволил бы Claude запускать любую npm-команду без спроса. Если /sandbox показывает только вкладку Dependencies, установите bubblewrap и socat, перезапустите Claude Code и снова выполните /sandbox.

#Осторожно

#Что дальше


Источники: Settings files and precedence · All settings · Configure permissions · Configure the sandboxed Bash tool

← Выбор модели и уровня усилий · Оглавление Среднего уровня · Закрепите правило хуком → · Тема: Разрешения и безопасность · Застряли на уроке?