Где живут настройки и кто кого перебивает, как устроена система разрешений (и почему deny всегда главнее), какие флаги стоят того, чтобы держать их в пальцах, и что нельзя положить в проект.
Настройки Claude Code собираются из нескольких источников, и важно понимать порядок. Сверху организация, потом флаги текущей сессии, потом проектное личное, проектное командное и глобальное личное. Чем выше уровень, тем сильнее его слово.
Managed побеждает всё, включая флаги: организация может закрыть поведение наглухо. Массивы складываются, а не заменяются: записи permissions.allow со всех уровней объединяются и дедуплицируются. deny имеет высший приоритет безопасности и не перебивается никакими allow/ask снизу.
Версия v2.1.178 насчитывает 80+ настроек и 200+ переменных окружения. Большинство трогать не нужно: создатель Claude Code не зря зовёт свой сетап «на удивление ванильным». Знать стоит три вещи: разрешения, режимы и пару флагов. С них и начнём.
Разрешения решают, что Claude может сделать без вопроса, что спросит, и что не сделает никогда. Правила проверяются в строгом порядке: сначала deny, потом ask, потом allow. Первое совпавшее правило выигрывает. Это и есть нужная ментальная модель.
{ "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, первое совпадение выигрывает
“Не используй --dangerously-skip-permissions. Вместо этого через /permissions заранее разреши безопасные в твоём окружении bash-команды, чтобы убрать лишние запросы. Это коммитится в settings.json и шарится с командой.
| Инструмент | Синтаксис | Пример |
|---|---|---|
| Bash | Bash(шаблон) | Bash(npm run *), Bash(git * main) |
| Read/Edit/Write | gitignore-globы | Read(.env), Edit(/src/**) |
| WebFetch | WebFetch(domain:...) | WebFetch(domain:example.com) |
| Skill | Skill(имя) / префикс | Skill(weather *) |
| Agent | Agent(имя) | Agent(Explore) |
| MCP | mcp__сервер__тул | mcp__github__* |
Граница слова: Bash(ls *) (с пробелом) матчит ls -la, но не lsof; Bash(ls*) (без пробела) матчит оба. Составные команды: операторы &&, |, ; разбивают строку, и каждая подкоманда должна совпасть отдельно. Bash(safe *) не разрешит safe && rm -rf.
Помимо отдельных правил есть режим всей сессии. Его крутят по 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 обычно делает всё с первого раза. Хороший план реально важен.
Флагов десятки, но в ежедневной работе живёт горстка. Остальные — для 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 / --print | Headless: ответ без интерактива (для скриптов и SDK). |
| --append-system-prompt | Дописать свой текст к системному промпту. |
claude doctor — диагностика установки. claude mcp add/list — управление MCP-серверами. claude update — обновление. claude agents — список агентов. И claude "запрос" — стартовать REPL сразу с промптом.
Часть вещей живёт только в ~/.claude/ и не выносится в проект. Логика простая: координация и секреты и личное — глобально; конфиг и воркфлоу — на обоих уровнях, и проект перебивает глобальное.
Tasks (списки задач между сессиями), Agent Teams, авто-память, креды и OAuth, keybindings, личные MCP-серверы. Всё это не должно попадать в git.
CLAUDE.md, settings, rules, agents, commands, skills, hooks, MCP. Проектная версия перебивает глобальную, так команда делится поведением через git.
Списки задач теперь лежат файлами в ~/.claude/tasks/: переживают перезапуск и краш, поддерживают зависимости между задачами и общий доступ нескольких сессий через CLAUDE_CODE_TASK_LIST_ID. Это уже не in-memory todo одной сессии, а персистентная координация.