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”. Каждый из этих пяти слоёв — отдельный класс отказов.
| # | Слой | Что отключается | Какая частая проблема решается |
|---|---|---|---|
| 1 | CLAUDE.md | Корень проекта + цепочка родителей + ~/.claude/CLAUDE.md глобально | Устаревшие инструкции перебивают user prompt; противоречивые командные правила |
| 2 | Плагины | Всё в плагин-директории, включая marketplace | Плагин перекрывает встроенную команду; плагин падает на холодном старте |
| 3 | Skills | Пользовательские skills из ~/.claude/skills/. Чтобы скрыть и встроенные/bundled skills, добавь CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=1 | Skill срабатывает не по тому намерению; skill генерирует кривые tool-вызовы |
| 4 | Hooks | Все зарегистрированные hook-события — ~30 типов (полный список в hooks reference) включая PreToolUse, PostToolUse, UserPromptSubmit, Stop, Notification, SessionStart, SessionEnd, PreCompact, SubagentStart/Stop и остальные | Hook переписывает diff или молча блокирует tool-вызов |
| 5 | MCP-серверы | Все 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 подтвердил, что баг в кастомизациях, сужаем виновника бинарным поиском — не сноси всё разом:
- Запусти обычно, оставь CLAUDE.md и плагины, в settings руками отключи hooks и MCP. Воспроизводится? Если да — виновник в CLAUDE.md или плагине, обычно в большем и недавно изменённом слое.
- Включи hooks обратно, MCP оставь выключенным. Воспроизводится? Если да — виновник hook. Отключай по одному; в v2.1.169 hooks вычисляются в порядке загрузки, начни с самого свежего.
- Включай 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-mode | Claude 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.
Дополнительное чтение
- Гайд по конфигурации Claude Code через ofox — как одной правкой
ANTHROPIC_BASE_URLмаршрутизировать Claude Code через ofox. - Оптимизация токенов в Claude Code: 5 стратегий снизить счёт на 60-90% — те же слои кастомизации, которые отключает safe mode, отвечают за основную часть твоего расхода токенов.
- Документация ofox.ai — Anthropic-совместимый endpoint, переменные окружения и оплата из России.
Проверенные источники
- Anthropic Claude Code v2.1.169 release notes — github.com/anthropics/claude-code/releases/tag/v2.1.169 (проверено 2026-06-11)
- Официальный changelog Claude Code — code.claude.com/docs/en/changelog (проверено 2026-06-11)
- ofox.ai Anthropic-совместимый endpoint — ofox.ai/docs (проверено 2026-06-11)
- DevelopersIO разбор v2.1.169 — dev.classmethod.jp/en/articles/20260609-cc-updates-v2-1-169/ (проверено 2026-06-11)


