Claude Code --safe-mode: один флаг отключает 5 слоёв кастомизации (2026)
(updated )

Claude Code --safe-mode: один флаг отключает 5 слоёв кастомизации (2026)

После апгрейда Claude Code до v2.1.169 первое, что замечаешь — старый рефлекс /clear больше не помогает. CLAUDE.md устарел, плагин перекрыл встроенную команду, MCP-сервер не отвечает, hook молча переписывает каждый diff. /clear чистит только контекст, а проблема живёт в конфиге. Под это и сделан --safe-mode.

Дальше — что именно отключают эти 5 слоёв, когда брать --safe-mode вместо /clear, как включить за 10 секунд на macOS, Windows и WSL, и рабочий 3-шаговый workflow для диагностики, который можно передать коллеге без объяснений.

Что safe mode умеет и чего не умеет

Прежде чем запускать флаг — границы.

Что нужно сделатьSafe Mode/clearПереустановка
Отключить сломанный CLAUDE.md
Отключить плагин с багомчастично
Отключить hooks, переписывающие tool-вывод
Отключить зависший MCP-серверчастично
Скрыть встроенные skills от модели
Сбросить разросшийся контекст
Сбросить API-учётки
Сменить модель
Очистить историю slash-команд
Уложиться меньше чем в 10 секунд

Решение одной фразой: если /clear не решил за один-два хода — --safe-mode, и только потом удаление чего-либо.

Когда использовать, а когда не стоит

Когда брать

  • Поведение изменилось после апгрейда c v2.1.16x на 2.1.169 — апгрейд единственная переменная, отключаем кастомизации и подтверждаем.
  • Коллега говорит “у меня работает, у тебя нет” — выкинь свой CLAUDE.md и плагины, посмотри, выживает ли баг.
  • Плагин или MCP-сервер, установленный за последние 24 часа, начал блокировать, кидать ошибки или выдавать неправильный tool-вывод — сначала изолируй, потом удаляй.
  • Hooks молча мутируют tool-вызовы и ты не знаешь, какой именно — отключи все одним флагом.
  • Тебе достался чужой workstation, и сначала хочется увидеть “сток” CLI, прежде чем наследовать чьи-то настройки.

Когда НЕ брать

  • Нужно только почистить контекст — /clear, без перезапуска.
  • Нужно сменить модель — ANTHROPIC_MODEL или model picker, safe mode тут ни при чём.
  • Подозреваешь, что дело в ключе — safe mode не трогает ANTHROPIC_API_KEY и ANTHROPIC_BASE_URL; проверь их сначала.
  • Хочешь отключить один плагин из пяти — правь settings или сам плагин; safe mode работает по принципу всё-или-ничего.
  • Ты в середине задачи и контекст разговора ценный — safe mode стартует новую сессию, всё незаконченное теряется.

Правило остановки

Если safe mode воспроизводит тот же баг, что и обычный запуск — проблема не в твоих кастомизациях. Закрой этот гайд, не теряй время на удаление плагинов, иди смотреть модель, сеть, аккаунт и upstream API.

Что отключает --safe-mode: 5 слоёв (буквально из v2.1.169)

Официальный release notes v2.1.169 описывает флаг одной фразой: “start Claude Code with all customizations (CLAUDE.md, plugins, skills, hooks, MCP servers) disabled for troubleshooting”. Каждый из этих пяти слоёв — отдельный класс отказов.

#СлойЧто отключаетсяКакая частая проблема решается
1CLAUDE.mdКорень проекта + цепочка родителей + ~/.claude/CLAUDE.md глобальноУстаревшие инструкции перебивают user prompt; противоречивые командные правила
2ПлагиныВсё в плагин-директории, включая marketplaceПлагин перекрывает встроенную команду; плагин падает на холодном старте
3SkillsПользовательские skills из ~/.claude/skills/. Чтобы скрыть и встроенные/bundled skills, добавь CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=1Skill срабатывает не по тому намерению; skill генерирует кривые tool-вызовы
4HooksВсе зарегистрированные hook-события — ~30 типов (полный список в hooks reference) включая PreToolUse, PostToolUse, UserPromptSubmit, Stop, Notification, SessionStart, SessionEnd, PreCompact, SubagentStart/Stop и остальныеHook переписывает diff или молча блокирует tool-вызов
5MCP-серверыВсе MCP-серверы — из settings, --mcp-config, IDE-конфигов и enterprise-политикMCP-сервер завис на старте; конфликт имён tool; auth-loop

Что safe mode не отключает: API-ключ, base URL (значит, ofox endpoint остаётся живой), имя модели в ANTHROPIC_MODEL, файл истории диалогов, кейбиндинги slash-команд, диалог доверия для текущего проекта.

Слой 1: CLAUDE.md — невидимое расширение system prompt

CLAUDE.md грузится из трёх мест на старте каждой сессии: корень проекта, каждая родительская директория до /, и глобальный ~/.claude/CLAUDE.md. Всё, что там написано, вставляется перед каждым user prompt. В safe mode модель ведёт себя так, будто этих файлов не существует. “Один и тот же prompt сегодня даёт другой результат, чем вчера” — первым подозревать стоит CLAUDE.md: скорее всего, кто-то (или ты сам) добавил правило, которое сдвигает поведение.

Слой 2: Плагины — внешняя точка расширения

Плагины живут в ~/.claude/plugins/ (или в твоей плагин-директории) и могут регистрировать slash-команды, перехватывать tool-вызовы, поднимать новые MCP-серверы, переписывать prompt. Safe mode пропускает плагин-лоадер целиком, и плагин, который падает на старте, перекрывает встроенный /clear или держит file lock на Windows — просто не появится. Проблемы плагинов — вторая по частоте причина “странного поведения после апдейта” после CLAUDE.md.

Слой 3: Skills — пользовательские и (опционально) встроенные

Пользовательские skills в ~/.claude/skills/ отключаются safe mode автоматически. Встроенные skills, workflows и built-in slash-команды safe mode сам по себе не отключает — нужна отдельная переменная CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=1 или disableBundledSkills: true в settings (тоже из v2.1.169). Для обычной диагностики достаточно safe mode; bundled-skills флаг доставай, когда подозреваешь, что встроенный skill выбран вместо твоей логики.

Слой 4: Hooks — тихие мутаторы tool-вызовов

Hooks стреляют на десятках событий — PreToolUse, PostToolUse, UserPromptSubmit, Stop, Notification, SessionStart, SessionEnd, PreCompact, SubagentStart/Stop и других — покрывают tool-вызовы, жизненный цикл сессии, асинхронные события. Hook может переписать вход tool, заблокировать его, проглотить вывод или просто добавить лишний шум. Это самый сложный для ручной отладки слой, потому что эффект тихий и out-of-band. Safe mode отключает все hooks одним движением — обычно самый быстрый способ проверить “ест ли hook мои diff’ы”.

Слой 5: MCP-серверы — самый длиннохвостый слой

MCP-серверы приходят из settings, --mcp-config, IDE-конфигов, а в v2.1.169 — ещё и из enterprise-политик allowedMcpServers/deniedMcpServers. Они зависают на холодном старте, конфликтуют по именам tool, попадают в auth-loop или просто медленно отвечают. Одним флагом выключив их все, можно задать вопрос “а сессия вообще работала бы без MCP?” — обычно ответ на него дорого стоит, потому что у большинства людей сконфигурировано 3-10 серверов.

Что нужно иметь под рукой

  • Claude Code ≥ v2.1.169 (релиз 2026-06-08). Проверь claude --version. Если 2.1.168 или ниже — апгрейд: npm install -g @anthropic-ai/claude-code для npm, либо официальный installer.
  • Терминал, в котором ты можешь задавать env vars: zsh, bash, fish, PowerShell, CMD или WSL — подойдёт любой.
  • Существующие API credentials: ANTHROPIC_API_KEY (или ofox-ключ под тем же именем) должен быть настроен. Safe mode отключает кастомизации, не аутентификацию.
  • (Опционально) Доступ к shell rc: чтобы держать safe mode на всю отладочную сессию, прописываешь CLAUDE_CODE_SAFE_MODE=1 в ~/.zshrc, ~/.bashrc или PowerShell $PROFILE.

По шагам: включаем safe mode

Шаг 1. Подтверди версию v2.1.169+

claude --version
# Ожидаем: 2.1.169 (или выше)

Если версия ниже — обнови под свой способ установки и перезапусти терминал, чтобы новый бинарь оказался в PATH.

Шаг 2. Одноразовый запуск с флагом

macOS / Linux / WSL:

claude --safe-mode

Windows PowerShell:

claude --safe-mode

Windows CMD:

claude --safe-mode

Флаг везде одинаковый, отличается только shell-обёртка. В открывшейся сессии не будет ни CLAUDE.md, ни плагинов, ни skills, ни hooks, ни MCP-серверов.

Шаг 3. (Альтернатива) Env var на всю отладочную сессию

Когда хочется, чтобы каждый запуск claude в shell был safe — особенно когда отлаживаешь в нескольких pane’ах или repo:

macOS / Linux / WSL (bash, zsh):

export CLAUDE_CODE_SAFE_MODE=1
claude

Windows PowerShell:

$env:CLAUDE_CODE_SAFE_MODE = 1
claude

Windows CMD:

set CLAUDE_CODE_SAFE_MODE=1
claude

Перед запуском убедись, что переменная встала:

echo $CLAUDE_CODE_SAFE_MODE
# Ожидаем: 1

Шаг 4. Подтверди, что safe mode работает

В сессии задай вопрос, ответ на который должен запускать твоё правило из CLAUDE.md. Если правило игнорируется — safe mode активен. Можно ещё посмотреть список загруженных MCP-серверов — он должен быть пустым.

Шаг 5. Корректно выйти из safe mode

Одноразовый запуск — /quit и в следующий раз без флага.

Env var — unset перед перезапуском:

# macOS / Linux / WSL
unset CLAUDE_CODE_SAFE_MODE

# PowerShell
Remove-Item Env:CLAUDE_CODE_SAFE_MODE

# CMD
set CLAUDE_CODE_SAFE_MODE=

И прочекай rc-файлы (~/.zshrc, ~/.bashrc, $PROFILE) на устаревший export — иначе на следующий shell safe mode снова всплывёт. Это самая частая причина жалоб “Claude Code до сих пор не читает мой CLAUDE.md” спустя дни после того, как человек “выключил” safe mode.

Шаг 6. 3-шаговый workflow диагностики

После того как safe mode подтвердил, что баг в кастомизациях, сужаем виновника бинарным поиском — не сноси всё разом:

  1. Запусти обычно, оставь CLAUDE.md и плагины, в settings руками отключи hooks и MCP. Воспроизводится? Если да — виновник в CLAUDE.md или плагине, обычно в большем и недавно изменённом слое.
  2. Включи hooks обратно, MCP оставь выключенным. Воспроизводится? Если да — виновник hook. Отключай по одному; в v2.1.169 hooks вычисляются в порядке загрузки, начни с самого свежего.
  3. Включай MCP-серверы по одному. Тот, который возвращает баг — подозреваемый. Перезапускай сессию между переключениями: MCP-серверы кешируют tool-list на старте, переключение без рестарта даёт ложный негатив.

До шага 3 обычно не доходит — баг всплывает на 1 или 2. Шаг 3 нужен, когда у тебя действительно много MCP-серверов, что в крупных командах встречается всё чаще.

Шаг 7. Зафиксируй чистое воспроизведение для багтрекера

Найдя виновника, запусти safe mode ещё раз, положив на место только этот один файл. Так баг изолирован до одной кастомизации и ты получаешь плотный repro. Сам repro должен влезть в две строки: “Положил ~/.claude/plugins/foo/index.ts; с safe mode поведение A, с включённым плагином поведение B.” На такой формат мейнтейнеры Claude Code отвечают быстрее всего.

Частые ошибки при настройке safe mode

СимптомКорневая причинаРешение
Unknown flag: --safe-modeClaude Code на v2.1.168 или нижеОбновись до v2.1.169+, перезапусти терминал, чтобы PATH подхватил новый бинарь
Safe mode “как будто не работает” — CLAUDE.md всё ещё применяетсяДва claude-бинарника в PATH; побеждает старыйwhich claude (Mac/Linux) или where claude (Windows); удали или переименуй старый
CLAUDE.md всё ещё грузится несмотря на флагПерепутал --safe-mode с /clear; запустил /clear уже в загруженной сессииВыйди из сессии полностью (Ctrl-D или /quit), запусти с флагом заново
MCP-серверы остались в списке slash-командУстаревший плагин-кеш на Windows (известный фикс v2.1.169 для MCPB cache)Закрой сессию, удали директорию MCPB plugin cache, запусти с --safe-mode
claude -p зависает на Windows после включения safe modeНе связано с safe mode — отдельный регресс, уже исправленный в v2.1.169 (skill-scan stall)Подтверди, что >=2.1.169; если так — заведи issue с --verbose
CLAUDE_CODE_SAFE_MODE задан, но = с пробелами по бокамBash трактует CLAUDE_CODE_SAFE_MODE =1 как команду, не присваиваниеСтрого export CLAUDE_CODE_SAFE_MODE=1 без пробелов
Safe mode отключил твой обязательный pre-commit hook подписи — коммиты идут без подписиРаботает как задумано: safe mode для диагностики, не для повседневной работыПеред push’ем выйди из safe mode; держи safe mode для read-only отладки
Enterprise-список allowedMcpServers “всё ещё активен”Safe mode отключает MCP-серверы, а не парсер политик; текст политики остаётся в settingsСчитай файл политики спящим в safe mode — он парсится, но ни один MCP-сервер не стартует

Командная / многопользовательская настройка

Safe mode — самый чистый примитив воспроизведения у твоей команды. Впиши его в runbook.

Общий triage-алиас

Положи однострочник в командные dotfiles, чтобы у всех инженеров была одна точка входа:

# ~/.zshrc или ~/.bashrc, закоммичено в team dotfiles repo
alias claude-triage='CLAUDE_CODE_SAFE_MODE=1 claude'

Когда коллега сообщает о баге Claude Code, on-call первым делом просит “запусти claude-triage и пришли repro”. Одна команда, ноль контекста, ноль расхождений в версиях.

Матрица диагностики

Поверхность багаЧто запускает репортерЕсли баг в его конфигеЕсли баг апстримный
Tool-вывод выглядит переписаннымclaude-triage и reproБаг исчез → виновник hookБаг остался → проблема в модели/API
Slash-команда перекрытаclaude-triage и /helpВстроенная команда вернулась → плагин перекрывалКоманды по-прежнему нет → баг CLI
Правила CLAUDE.md игнорируютсяclaude-triage и вопрос, на который отвечает только правилоПоведение не меняется → CLAUDE.md и так не подгружался (путь не тот)Поведение меняется только в safe mode → CLAUDE.md грузился, но проигрывал чему-то
MCP tool возвращает ошибкиclaude-triage и попытка задачиЗадача проходит без MCP → сервер сломанЗадача падает так же → проблема не в MCP

CI / скрипты: safe mode туда не клади

--safe-mode — диагностический флаг, не deploy-таргет. Не добавляй его в CI-вызовы claude -p или claude agents — иначе молча потеряешь командный CLAUDE.md, hooks и все MCP-интеграции, на которые CI рассчитывает. Подозреваешь, что CI поймал баг кастомизации — запусти safe mode локально, найди виновника, патчи только его. Строка --safe-mode в CI YAML — отложенная авария, флагу место там, где его видят люди.

Онбординг новичков

В первый день дай новому инженеру 5-минутное упражнение: запусти claude-triage, задай тот же вопрос, что и в обычном режиме, и заметь разницу. На выходе он понимает, что именно делают командные кастомизации — а не воспринимает CLAUDE.md как магию, которая просто случается.

Расширенно: safe mode + disableBundledSkills + /cd

В v2.1.169 поехали три связанных контроля, и они хорошо комбинируются.

--safe-mode + CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=1

--safe-mode отключает пользовательские skills из ~/.claude/skills/. Чтобы скрыть и встроенные / bundled skills, workflows и built-in slash-команды от модели, задай CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=1 (или disableBundledSkills: true в settings). Вместе они дают модель в “стоковом” CLI без слоёв сверху — удобно сравнивать “поведение стоковой модели” против твоего кастомизированного.

CLAUDE_CODE_SAFE_MODE=1 CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=1 claude

safe mode + /cd

v2.1.169 ещё добавил /cd — смена рабочей директории сессии без слома prompt-кеша посередине. Комбинируй: запусти --safe-mode один раз, дальше /cd между репозиториями. Холодный старт оплачен один раз, отладка остаётся в одном контекстном окне модели.

safe mode + ofox upstream

Если ты ходишь в Claude Code через мульти-провайдерский шлюз вроде ofox — c ANTHROPIC_BASE_URL=https://api.ofox.ai/anthropic — safe mode не трогает маршрутизацию и одновременно гасит все локальные кастомизации. Именно это разделение и нужно: отсечь “локальный конфиг” как переменную, не трогая upstream-credentials. Safe mode — единственный CLI-флаг, который позволяет спросить “это я или всё, что я навертел сверху?” — и получить честный ответ за десять секунд.

Для более глубоких паттернов конфигурации, когда отладка позади, см. Гайд по конфигурации Claude Code через ofox и Оптимизация токенов в Claude Code: 5 стратегий — оба опираются на те самые слои кастомизации, которые отключает safe mode.

Дополнительное чтение

Проверенные источники