Каждый день в Telegram-канале - что нового в вайб-кодинге: инструменты, примеры, ошибки. Подпишись, чтобы быть в курсе.
Что меняется в Claude Code в июне 2026?
Раньше когда Claude Code начинал странно себя вести - бесконечный спиннер, краш на старте, агент игнорирует правила из CLAUDE.md, hook молча не срабатывает - выход был один: вручную комментировать секции .claude/settings.json, отключать MCP-серверы по одному, в крайнем случае сносить ~/.claude и ставить заново. У меня в проекте Piratix я как-то снёс ~/.claude и потерял настройку MCP-серверов, которую полтора часа собирал. На второй раз я уже знал, что виновата была одна строка в CLAUDE.md, которую можно было найти за 10 секунд - но я об этом узнал только когда восстановил всё заново.
В июне 2026 Anthropic выкатил три механизма, которые меняют этот сценарий. Кратко - что и когда:
| Версия | Дата | Что приехало |
|---|---|---|
| 2.1.166 | 6 июня 2026 | Настройка fallbackModel + флаг --fallback-model для интерактивных сессий |
| 2.1.169 | 8 июня 2026 | Флаг --safe-mode и env-переменная CLAUDE_CODE_SAFE_MODE, команда /cd |
| 2.1.176 | 12 июня 2026 | Фикс: /cd и worktree-переключение перестали показывать старую git-ветку |
Дальше я разбираю каждый механизм по шагам и показываю, в каком порядке их применять, когда сессия Claude Code пошла не туда.
Что ломает Claude Code чаще всего?
CLAUDE.md я первым проходом собирал на 80 строк - и месяц это работало. На второй месяц заметил, что раз в неделю Claude нарушал каждое из моих правил: трогал .env, делал git push --force, лез в node_modules. Не злонамеренно - просто забывал. Один раз снёс мой .gitignore, и я не сразу понял, что произошло. Подробнее этот сценарий разобран в гайде про CLAUDE.md.
Когда CLAUDE.md разрастается до 400+ строк, он начинает молча гадить: занимает значительную часть контекстного окна на старте сессии и размывает важные инструкции среди второстепенных. При этом Claude всё ещё формально читает файл, поэтому со стороны кажется, что «правила есть, а не работают» - типичный признак раздутого контракта.
Hooks - второй частый источник. У Claude Code hooks есть тонкость, которую Anthropic не выделяет жирным:
Exit code 1 - это ошибка. В хуках Claude Code она не блокирующая.
То есть sys.exit(1) в Python-хуке (или любой Unix-конвенциональный «упал с ошибкой») не остановит Claude. Блокирующий код - только 2. Я сам ловил это: думал, что hook «жёстко запрещает», а на деле он логировал жалобу и пропускал действие.
MCP-серверы - третий слой, и ломаются тоже по-своему. В GitHub-issue #28211 от 24 февраля 2026 описан конкретный сценарий:
Claude Desktop v1.1.4088 крашится на запуске когда в
claude_desktop_config.jsonнастроены 2 и более MCP-сервера.
Этот баг был в Desktop, но CLI-версии тоже ловят похожие регрессии - в issue #1611 пользователь жалуется, что MCP-серверы не подключаются на macOS, при этом тот же конфиг работает в Claude Desktop. Симптом снаружи у всех этих случаев одинаковый: MCP-команды доступны, но возвращают failed без traceback. Подробнее про настройку MCP и как добавить серверы через claude mcp add - в отдельном гайде.
Четвёртый источник - тройная иерархия settings.json. У тебя есть ~/.claude/settings.json (user-уровень), .claude/settings.json в корне проекта (project), .claude/settings.local.json (local) и, опционально, managed-настройки от корпоративного админа. Они складываются по правилам приоритета. Когда кто-то добавляет MCP-сервер на project-уровне, а у тебя в user-уровне аналогичная запись с другим вариантом запуска - получается тихий конфликт, который выглядит как «Claude Code сломался».
Как работает --safe-mode и что в нём отключается?
Исходная формулировка Anthropic из changelog v2.1.169 звучит так:
Добавлен флаг
--safe-mode(иCLAUDE_CODE_SAFE_MODE) для запуска Claude Code с отключёнными кастомизациями (CLAUDE.md, плагины, skills, hooks, MCP-серверы) для диагностики.
В документации по model-config Anthropic уточняет:
Чтобы проверить, виноваты ли кастомизации, запусти сессию через
claude --safe-mode, который отключаетCLAUDE.md, skills, MCP-серверы и hooks. Git-статус и имена директорий не считаются кастомизациями и остаются доступны.
Это диагностический инструмент, а не «чистая среда». Я хожу в safe mode когда нужно ответить на один вопрос: проблема в коробочном поведении Claude Code или в моих надстройках. Это часть контекст-инжиниринга - управления тем, что Claude видит и не видит в каждый момент. Если в safe mode всё работает - дальше я знаю, что нужно бинарным поиском перебирать слои. Если не работает - проблема в самой установке, в авторизации, в сети, в инфраструктуре, и тогда уже имеет смысл смотреть claude doctor и логи.
Что отключается в safe mode (официальный список Anthropic - 5 основных слоёв):
CLAUDE.mdна всех уровнях (user / project)- Плагины
- Skills
- Hooks
- MCP-серверы
Сторонние разборы фичи (например, Digital Applied) перечисляют ещё пользовательские команды, subagents, output styles, workflows, themes и keybindings - но это эмпирическое наблюдение, не часть changelog.
Что остаётся работать:
- Авторизация (твоя OAuth-сессия или API-ключ)
- Выбор модели (
--model sonnet,--model opus) - Встроенные tools (Read, Write, Bash, Grep и так далее)
- Permissions
- Git-статус
- Имена директорий
Важная деталь: safe mode не отключает managed/policy settings от корпоративного админа. Если ты работаешь в команде, где Bedrock GovCloud или MDM-конфиг задаёт availableModels, эти ограничения сохранятся - safe mode выключает только твои кастомизации, не корпоративные политики.
Как изолировать слой и найти виновника за 60 секунд?
Сценарий, который я отрабатываю когда Claude Code «перестал слушаться». Минимальная версия для всех команд ниже - Claude Code v2.1.169. Если у тебя старее - сначала обнови (npm update -g @anthropic-ai/claude-code или нативный installer Anthropic).
- Открой ту же папку, в которой было плохо.
- Запусти
claude --safe-mode. - Если стартует чисто - проверь свой исходный запрос. Сработал? Значит, виноват один из слоёв. Переходи к пункту 4.
- Если в safe mode тоже плохо - не трогай конфиги. Сначала
claude doctor, посмотри на auth, версию, конфликтующие установки.
Когда safe mode стартанул чисто, дальше я включаю слои по одному, начиная с самого вероятного виновника. Порядок по моему опыту:
CLAUDE.md. Запустиclaudeбез safe-mode, но временно переименуй файл:mv CLAUDE.md CLAUDE.md.bak. Если работает - дело в нём. Дальше можно делать бинарный поиск: оставлять половину строк, проверять.- Hooks. Открой
.claude/settings.jsonи в секцииhooksвременно поставь[]. Перезапустиclaude. Работает? Значит, виноват один из хуков. Включай по одному. - MCP-серверы. Аналогично: в
~/.claude.jsonили.claude/settings.jsonсекцияmcpServers-> временно пустой объект, перезапуск, проверка. - Skills. Перенеси
.claude/skills/во временную папку. Запуск, проверка.
Что считать «временным переименованием»: я никогда не удаляю файлы при диагностике. mv или git stash дают возможность вернуть всё одной командой, если виноват оказался не этот слой.
Как переключить рабочую папку через /cd без потери контекста?
Долго это была одна из самых востребованных фич. В январе 2026 пользователь Zycroft открыл issue #19903 с прямой формулировкой проблемы:
Сейчас рабочая папка Claude Code (
workspace.current_dir) задаётся при старте сессии и не может быть изменена в процессе.
Anthropic тогда закрыл issue как «not planned», но через пять месяцев фича всё-таки приехала. В changelog v2.1.169 от 8 июня:
Добавлена команда
/cdдля переключения сессии в новую рабочую папку без сброса prompt cache в середине сессии.
Зачем это нужно при починке. Допустим, ты в папке проекта ~/work/myapp, и Claude Code ведёт себя странно. Раньше единственный способ проверить «а вообще он рабочий?» - закрыть сессию, перейти в другую папку, запустить заново. Терялся контекст, history, прогретый prompt cache. Сейчас:
# Прямо в той же сессии:
/cd ~/sandbox/testClaude переключается в новую папку, дочитывает её CLAUDE.md (если есть) как сообщение, а не заменой system prompt - то есть кеш сохраняется. Если в ~/sandbox/test всё работает, понятно, что проблема была в конфиге ~/work/myapp.
12 июня в v2.1.176 закрыли одну неприятную регрессию - /cd показывал старую git-ветку до полного перезапуска. Если у тебя версия младше, либо обнови, либо просто игнорируй git status в первые несколько сообщений после переключения - он догонит.
Как настроить fallback-модели на случай 529?
Сценарий, который у меня случается раз в неделю: я запускаю долгую задачу на Opus в проекте smyslokod.ru (тот, на котором этот гайд написан), через 10 минут API возвращает 529 Overloaded, сессия падает. Раньше приходилось либо ждать, либо вручную переключаться на Sonnet через --model sonnet и терять весь прогретый контекст. На большом business/ со связкой второго мозга это стоит мне минут двадцати работы. Сейчас есть нормальный механизм.
Точная цитата из официальной документации:
Когда основная модель перегружена, недоступна или возвращает другую non-retryable серверную ошибку, Claude Code может переключиться на fallback-модель вместо падения запроса. Ошибки авторизации, биллинга, rate-limit, размера запроса и транспорта никогда не триггерят переключение - они идут через обычные retry и обработку ошибок.
И отдельно про устройство цепочки:
Настрой одну или несколько fallback-моделей, и Claude Code пробует их по порядку, показывая уведомление при переключении. Переключение действует только на текущий ход - следующее сообщение снова попробует основную модель. Цепочки ограничены тремя моделями после дедупликации, дополнительные записи игнорируются.
Два способа настройки. Через CLI:
claude --fallback-model sonnet,haikuЧерез ~/.claude/settings.json:
{
"fallbackModel": ["claude-sonnet-4-6", "claude-haiku-4-5"]
}Отдельная тонкость про rate limits. Anthropic специально не пускает 429-ошибку через цепочку - чтобы ты не обходил лимит запросов переключением на следующую модель. Fallback работает только когда основная модель перегружена, недоступна или возвращает non-retryable серверную ошибку (например, 529 Overloaded). Для рейтлимита есть обычная retry-логика и backoff.
И ещё одна тонкость - 12 июня в v2.1.174 закрыли регрессию: compaction раньше не уважал --fallback-model. Если у тебя длинная сессия и она компактуется на overloaded, до этого фикса fallback-модель не вызывалась. Если работаешь с длинными сессиями (/compact, /loop на ночь) - обновись хотя бы до v2.1.174.
Что чинить когда виноват CLAUDE.md, hook, MCP или skill?
Конкретные стратегии для каждого слоя.
Если виноват CLAUDE.md
Открой файл и посмотри размер. По моему опыту - в активном CLAUDE.md держи не больше 200 строк, остальное выноси в маршрутизаторы и под-документы рядом с проектом (полная схема второго мозга - в гайде про второй мозг). Если у тебя 400+ строк - почти гарантировано виноват он. Шаги:
- Сделай бэкап:
cp CLAUDE.md CLAUDE.md.full. - Откати на короткий рабочий шаблон. Готовый - в гайде «Как настроить CLAUDE.md».
- Перезапусти Claude Code. Проверь.
- Если работает - возвращай правила маленькими блоками по 10-20 строк, после каждого блока проверяй.
- Найди блок, который ломает поведение. Перепиши его как hook с правильным exit-кодом (про exit-коды хуков - в следующем подразделе этого H2).
Если виноват hook
Главный вопрос - правильный ли exit-код. У хуков в Claude Code:
- Exit 0 - всё ок, действие пропускается.
- Exit 1 - ошибка, но не блокирующая. Claude продолжит как ни в чём не бывало.
- Exit 2 - блокирующая ошибка. Только она реально останавливает действие.
Если ты писал sys.exit(1) или exit 1 в shell-хуке, думая что блокируешь - такой код в Claude Code работает как warning-лог, без остановки действия. Поменяй на 2. Подробно про хуки и как настроить их без этой ловушки - в отдельном гайде.
Второй частый случай - hook возвращает невалидный JSON в stdout. Claude Code парсит ответ хука как JSON, и если там мусор (лог, прогресс-маркер, эмодзи) - hook считается упавшим, действие пропускается. Правило: stdout - только JSON, всё остальное в stderr.
Третий - hook читает что-то из ~/.claude/, которое safe mode скрыл. Это нормальный сценарий, и его лечат не патчем хука, а проверкой os.environ.get('CLAUDE_CODE_SAFE_MODE') в начале и выходом с 0.
Если виноват MCP-сервер
Симптомы: MCP-команды доступны, но возвращают failed без понятного traceback. Шаги:
- Запусти
claude mcp list- какие серверы определены. - По одному выключи серверы в
~/.claude.json: переименуй ключclaude-server-Aв_claude-server-A(это деактивирует, не удаляя). - Перезапусти
claude. Проверь, какие вызовы работают. - Когда нашёл виноватый сервер - смотри его лог:
claude mcp logs <name>. - Если сервер чужой (
@modelcontextprotocol/server-postgresи подобные) - проверь, что у него есть свежий релиз. MCP-экосистема пока в шторме, серверы регулярно ломаются с обновлениями Claude Code.
Известная регрессия - issue #28211 (24 февраля 2026): Claude Desktop падал на старте при 2+ MCP-серверов. В CLI этот баг закрыт, но похожие повторяются - если ты словил «падает на старте, и только с двумя MCP» - сравни поведение в safe mode без MCP.
Если виноват skill
Skill - это SKILL.md + код в .claude/skills/<name>/. Симптомы: Claude игнорирует skill, или применяет не вовремя, или применяет, но даёт мусор. Шаги:
- Открой
SKILL.md. Проверь description - он должен быть на 1-2 предложения, конкретно описывать когда применять. Если там «универсальный помощник для всего» - Claude не понимает, когда вызывать. - Проверь противоречия с
CLAUDE.md. Если вCLAUDE.mdнаписано «всегда пиши тесты», а в skill description есть «применять для быстрого прототипа без тестов» - конфликт. - Если skill использует внешние команды (npm, python, git) - проверь, что в systemwide PATH они доступны. У skill своя минимальная среда.
Что делать если safe mode не помог: полный сброс за 5 минут
Полный сброс - финальный шаг, который запускают только когда claude doctor и safe mode не дали ответа. Он стоит времени: 5-15 минут плюс новая авторизация плюс потеря всех сессий. Безопасный порядок:
claude doctor- автодиагностика. Anthropic пишет в документации:
Если
claude --versionработает, но что-то ещё идёт не так, запустиclaude doctorдля автоматического диагностического отчёта.
- Проверь конфликтующие установки. У многих стоит и npm-глобальная версия, и нативный installer одновременно:
Несколько установок Claude Code могут привести к несовпадению версий или неожиданному поведению.
- Проверь, не перехватывает ли
ANTHROPIC_API_KEYтвою OAuth-сессию. Это частая причина «ничего не работает, ключ протух»:
Когда
ANTHROPIC_API_KEYустановлена и ты её подтвердил, Claude Code использует этот ключ вместо OAuth-учёток твоей подписки.
Решение: unset ANTHROPIC_API_KEY в текущей сессии шелла или удалить из ~/.zshrc / ~/.bashrc.
- Если ничего из выше не помогло - полный сброс:
# 1. Снести legacy local-инсталляцию (если была)
rm -rf ~/.claude/local
# 2. Удалить npm-инсталляцию
npm uninstall -g @anthropic-ai/claude-code
# 3. Снести конфиг и сессии
rm ~/.claude.json
rm -rf ~/.claude
# 4. Поставить заново через нативный installer
curl -fsSL https://claude.ai/install.sh | bashНа Windows последний шаг другой:
irm https://claude.ai/install.ps1 | iexПосле этого - заново авторизоваться (claude -> вход), восстановить CLAUDE.md, settings.json, mcpServers руками из бэкапов. Поэтому я никогда не делаю полный сброс до того, как у меня есть актуальный git-снимок конфигов.
Чего НЕ делать когда Claude Code сломан?
Не меняй ключи до диагностики
«Авторизация не работает» в 90% случаев - это либо ANTHROPIC_API_KEY перехватил подписку, либо UI-баг хука, либо упавший MCP. Ротация ключей не починит ничего из этого, но создаст простой ещё на час: нужно отозвать старый, выпустить новый, переподписать им CI, обновить переменные на проде. Сначала claude --safe-mode. Работает? Значит, дело в надстройках, ключи трогать не надо.
Не делай полный сброс до safe mode
Safe mode даёт изолированную среду за 1 секунду. Полный сброс (rm -rf ~/.claude + переустановка) - это 5-15 минут плюс новая авторизация плюс потеря всех сессий. Делать его сразу - значит платить часом времени за минуту экономии на проверке кастомизаций.
Не реагируй паникой на UI-ошибку в хуке
В issue #21643 от 29 января 2026 описан UI-баг: статус SessionStart:startup hook error показывается даже когда hook отработал с exit 0. Прежде чем чинить - проверь сам факт работы хука (через лог в stderr или явный print), а не визуальный индикатор.
Не повышай exit-код хука до фикса логики
Когда твой блокирующий hook не блокирует, очень хочется поставить exit 2 и закрыть тему. Это рабочий патч, но он маскирует другую проблему: если до этого блок не работал месяц - всё, что hook должен был запрещать, прошло. Сначала пройди по git-логу и узнай, что именно проскочило. Потом ставь блок. Иначе закрытый блок не отменяет того, что произошло до него.
Не правь production CLAUDE.md без safe-mode-страховки
Я ловил такое: вносишь правку в CLAUDE.md, Claude начинает себя странно вести, ты лезешь git diff - и видишь, что в репо параллельно вечером кто-то добавил ещё MCP-сервер и hook. Винишь свою правку, откатываешь, а Claude всё равно ведёт себя странно. Правило: перед git revert запусти claude --safe-mode. Если в safe mode проблема осталась - твоя правка ни при чём, откат не нужен.
Не верь «Claude сам чинит свой MCP»
В issue #52015 описан конкретный сценарий: пользователь просит Claude «добавить такую-то tool в MCP-сервер», Claude переписывает работающий конфиг, всё ломается, дальше Claude несколько ходов пытается отладить свой же ущерб - и в процессе сжигает квоту сессии. Когда сломан MCP - доставай конфиг руками, не оставляй на агенте. Часть его tool-arsenal'а тоже на MCP, и сломанный MCP - это сломанный диагност.
Куда возвращаться когда починил?
Когда я разбираюсь в инциденте до конца, я не возвращаюсь к работе сразу. Сначала ставлю превенцию, чтобы инцидент не повторился. На второй мозг (папка business/ со структурой проекта) и CLAUDE.md теряешь часы, восстановить руками сложно - и это весомый аргумент. Минимум-набор:
~/.claude/settings.jsonсpermissions.disableBypassPermissionsMode: "disable"- архитектурный запрет на bypass-режим. Чтобы случайно запущенный--dangerously-skip-permissionsпросто не сработал.- Hooks для
Read(./env*),Bash(git push --force),Write(./node_modules/**)- то, что должно ловиться на уровне закона, не пожелания. - Sandbox-конфиг для долгих автономных запусков (
/loop,/schedule). /compactсо своими правилами что выбрасывать из контекста, чтобы Claude не съел самого себя.
Полная схема четырёхслойной защиты - в гайде «Как настроить Claude Code, чтобы он не сломал твой проект ночью». Один гайд закрывает превенцию до запуска /loop, другой - восстановление, когда /loop уже что-то сломал. Логичная пара.
Источники
- Anthropic Claude Code Changelog - официальный changelog с описанием v2.1.166 (fallbackModel), v2.1.169 (safe-mode, /cd), v2.1.174 (compaction fix), v2.1.176 (/cd git branch fix).
- Anthropic Docs - Model configuration - разделы «Fallback model chains», «Check what triggered fallback», «Setting your model».
- Anthropic Docs - Troubleshoot installation and login - конфликтующие установки,
claude doctor,ANTHROPIC_API_KEYперехват. - GitHub Issue #19903 - Feature request: /cd command - 21 января 2026, Zycroft, изначальный feature request.
- GitHub Issue #28211 - Claude Desktop crashes with 2+ MCP servers - 24 февраля 2026, регрессия Winston logger.
- GitHub Issue #1611 - MCP servers fail to connect - 4 июня 2025, AbortError при child process operations.
- GitHub Issue #21643 - SessionStart hook ложный error - 29 января 2026, UI-баг статуса hook.
- GitHub Issue #52015 - Claude breaks working MCP servers - Claude переписывает рабочий MCP-конфиг и отлаживает свой же ущерб.
- Thinking Through Code - The Silent Failure Mode in Claude Code Hook - 4 марта 2026, про exit 1 vs exit 2 в хуках.
- Digital Applied - Claude Code Adds Safe Mode and Fallback Model Chains - 10 июня 2026, первый разбор safe mode после релиза.
Полная схема по вайб-кодингу за вечер: ИИ-клон + Второй мозг + контекст-инжиниринг. 3 эфира, 2000 ₽. Записи остаются у тебя.
Новые материалы - дайджестом, без спама
Гайды выходят регулярно. Подпишись, чтобы не пропускать: пришлю подборку в Telegram или на email. Раз в неделю или каждый день - выбираешь сам.

