Часть II · Контекст и конфигурация · Глава 03
03

Настройки, разрешения, CLI-флаги

Где живут настройки и кто кого перебивает, как устроена система разрешений (и почему deny всегда главнее), какие флаги стоят того, чтобы держать их в пальцах, и что нельзя положить в проект.

~16 минут источник: best-practice/claude-settings · cli-startup-flags · reports/global-vs-project Claude Code v2.1.179
§1 · Иерархия

Кто кого перебивает

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

Три правила, которые надо знать

Managed побеждает всё, включая флаги: организация может закрыть поведение наглухо. Массивы складываются, а не заменяются: записи permissions.allow со всех уровней объединяются и дедуплицируются. deny имеет высший приоритет безопасности и не перебивается никакими allow/ask снизу.

Версия v2.1.178 насчитывает 80+ настроек и 200+ переменных окружения. Большинство трогать не нужно: создатель Claude Code не зря зовёт свой сетап «на удивление ванильным». Знать стоит три вещи: разрешения, режимы и пару флагов. С них и начнём.

§2 · Разрешения

allow · ask · deny

Разрешения решают, что Claude может сделать без вопроса, что спросит, и что не сделает никогда. Правила проверяются в строгом порядке: сначала deny, потом ask, потом allow. Первое совпавшее правило выигрывает. Это и есть нужная ментальная модель.

.claude/settings.jsonpermissions
{ "permissions": {
  "allow": [ "Edit(*)", "Bash(npm run *)", "Bash(git *)", "mcp__*" ],
  "ask":   [ "Bash(rm *)", "Bash(git push *)" ],
  "deny":  [ "Read(.env)", "Read(./secrets/**)", "Bash(curl *)" ]
} }
# порядок: deny → ask → allow, первое совпадение выигрывает
Закоммить такой блок в .claude/settings.json — и вся команда получает один безопасный набор. Секреты закрыты deny, разрушительное идёт через ask, рутина проходит молча.
Не используй --dangerously-skip-permissions. Вместо этого через /permissions заранее разреши безопасные в твоём окружении bash-команды, чтобы убрать лишние запросы. Это коммитится в settings.json и шарится с командой.
Boris Cherny · создатель Claude Code

Синтаксис правил

Шаблоны разрешений (выборка)
ИнструментСинтаксисПример
BashBash(шаблон)Bash(npm run *), Bash(git * main)
Read/Edit/Writegitignore-globыRead(.env), Edit(/src/**)
WebFetchWebFetch(domain:...)WebFetch(domain:example.com)
SkillSkill(имя) / префиксSkill(weather *)
AgentAgent(имя)Agent(Explore)
MCPmcp__сервер__тулmcp__github__*
Две ловушки в шаблонах Bash

Граница слова: Bash(ls *) (с пробелом) матчит ls -la, но не lsof; Bash(ls*) (без пробела) матчит оба. Составные команды: операторы &&, |, ; разбивают строку, и каждая подкоманда должна совпасть отдельно. Bash(safe *) не разрешит safe && rm -rf.

§3 · Режимы разрешений

Shift+Tab переключает уровень доверия

Помимо отдельных правил есть режим всей сессии. Его крутят по Shift+Tab. От строгого «спрашивай всё» до «принимай правки сам» и исследовательского plan mode.

Режимы разрешений
РежимПоведение
defaultОбычная проверка с запросами.
planТолько чтение, исследование. С v2.1.136 блокирует запись даже при явном allow-правиле: гарантия read-only.
acceptEditsСам принимает правки файлов и бытовые команды (mkdir, mv…). Но спросит перед записью конфигов, дающих исполнение кода.
autoАвто-одобрение с фоновой проверкой: read-only и правки проходят, остальное идёт через классификатор безопасности. Research preview.
dontAskАвто-запрет всего, кроме заранее разрешённого.
bypassPermissionsПропустить все проверки. Опасно. Остаётся один предохранитель: rm -rf / и rm -rf ~ всё равно спросят.
Начинай большинство сессий в plan mode (Shift+Tab дважды). Если цель — пул-реквест, гоняй план туда-сюда, пока он не понравится. Дальше переключайся в авто-правки, и Claude обычно делает всё с первого раза. Хороший план реально важен.
Boris Cherny · создатель Claude Code
§4 · CLI-флаги

Что держать в пальцах

Флагов десятки, но в ежедневной работе живёт горстка. Остальные — для headless-режима и SDK.

Флаги на каждый день
ФлагЧто делает
-c / --continueПродолжить последний разговор в этой папке.
-r / --resumeВозобновить конкретную сессию по id/имени или выбрать из списка.
-w / --worktreeСтартовать в изолированном git-worktree (ветка от HEAD).
--model <имя>Модель: sonnet/opus/haiku или полный id.
--permission-modeСтартовый режим: plan, acceptEdits, auto
--add-dir <путь>Дать доступ к дополнительной рабочей папке.
--agent <имя>Сделать субагента главным агентом сессии.
-p / --printHeadless: ответ без интерактива (для скриптов и SDK).
--append-system-promptДописать свой текст к системному промпту.
Полезные подкоманды

claude doctor — диагностика установки. claude mcp add/list — управление MCP-серверами. claude update — обновление. claude agents — список агентов. И claude "запрос" — стартовать REPL сразу с промптом.

§5 · Глобальное vs проектное

Что нельзя положить в репозиторий

Часть вещей живёт только в ~/.claude/ и не выносится в проект. Логика простая: координация и секреты и личное — глобально; конфиг и воркфлоу — на обоих уровнях, и проект перебивает глобальное.

Только глобально · ~/.claude/

Личное и координация

Tasks (списки задач между сессиями), Agent Teams, авто-память, креды и OAuth, keybindings, личные MCP-серверы. Всё это не должно попадать в git.

На обоих уровнях

Конфиг и воркфлоу

CLAUDE.md, settings, rules, agents, commands, skills, hooks, MCP. Проектная версия перебивает глобальную, так команда делится поведением через git.

Tasks вместо старых Todo (v2.1.16)

Списки задач теперь лежат файлами в ~/.claude/tasks/: переживают перезапуск и краш, поддерживают зависимости между задачами и общий доступ нескольких сессий через CLAUDE_CODE_TASK_LIST_ID. Это уже не in-memory todo одной сессии, а персистентная координация.

Шпаргалка главы

Шесть тезисов на вынос

  1. Приоритет сверху вниз: managed → флаги → проект-личное → проект-командное → глобальное. Выше побеждает.
  2. Три закона: managed не перебить ничем, массивы складываются и дедуплицируются, deny главнее любых allow/ask.
  3. Разрешения: deny → ask → allow, первое совпадение выигрывает. Закоммить безопасный набор в проект.
  4. Не --dangerously-skip-permissions, а заранее разрешённые команды. Деструктив — через ask.
  5. Режимы по Shift+Tab: начинай в plan, переключайся в acceptEdits, когда план нравится.
  6. Глобальное vs проектное: секреты/координация/личное — в ~/.claude/; конфиг и воркфлоу — на обоих, проект перебивает.