Материал редакции Зерокодера. Разбор собран по официальной документации Anthropic и сверен на рабочих машинах команды — Windows, WSL и macOS. Обновлено: июль 2026.

Если Claude Code не работает — это почти никогда один сбой. Это восемь разных симптомов с восемью разными фиксами: PATH, сорванная установка, вход, регион, квота плана, чужой API-ключ в переменных, MCP, старая версия CLI. Начинать надо не с переустановки, а с двух команд: claude doctor в терминале и /status внутри сессии.

Коротко, что сузит поиск за минуту:

  • claude doctor печатает диагностику установки и настроек, не запуская сессию; /doctor внутри сессии ещё и предлагает фиксы после подтверждения — так их описывает официальный troubleshooting Anthropic{rel=»nofollow»}.
  • command not found: claude после успешной установки — это PATH, а не поломка.
  • «Лимит» бывает трёх видов, и лечатся они по-разному.
  • Переменная ANTHROPIC_API_KEY умеет молча отменить живую подписку.
  • Часть «поломок» после выхода новых моделей чинится одной командой claude update.

Если вы ещё на этапе первичной настройки — у нас есть отдельные разборы по установке Claude Code, доступу из России и подключению MCP.

С чего начать, когда Claude Code не работает

Порядок такой: claude doctor из обычного терминала → claude --version/status и /mcp внутри сессии. Рабочая установка на claude --version печатает номер вида 2.1.211 (Claude Code). Это данные официальной страницы установки и настройки{rel=»nofollow»}.

Разница между /doctor и claude doctor не косметическая. /doctor работает внутри запущенной сессии: он проверяет установку, настройки, расширения и расход контекста и предлагает применить фиксы после подтверждения. claude doctor из шелла ничего не меняет и сессию не поднимает — печатает состояние установки и ошибки валидации файлов настроек. Отсюда правило выбора: если claude вообще не стартует, /doctor недоступен и остаётся шелловый вариант. Читать отчёт стоит построчно: строка Search показывает, каким ripgrep пользуется поиск по файлам (встроенным или системным, если выставлена переменная USE_BUILTIN_RIPGREP=0), а результат последней попытки обновления сразу говорит, застряли вы на старой версии или нет.

/status внутри сессии закрывает другой вопрос — каким аккаунтом вы сейчас работаете и в каком состоянии логин. Это первое, что стоит открыть при любой ошибке доступа: там же видно, не перебивает ли подписку API-ключ из переменных окружения.

Если подозрение на кастомизацию — плагин, хук, MCP-сервер, скилл — запустите claude --safe-mode. По документации Anthropic режим отключает CLAUDE.md, скиллы, плагины, хуки, MCP-серверы и кастомные команды, оставляя рабочими авторизацию, выбор модели и встроенные инструменты. Пропала проблема — виновата одна из отключённых поверхностей.

Command not found: почему Claude Code не запускается после установки

Самый частый ложный «сломался». Установка прошла, а терминал отвечает zsh: command not found: claude, bash: claude: command not found или 'claude' is not recognized as an internal or external command. Официальный troubleshoot-install объясняет: каталог установки не попал в PATH. Бинарь лежит в ~/.local/bin/claude на macOS и Linux и в %USERPROFILE%\.local\bin\claude.exe на Windows.

Фикс на Zsh:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc source ~/.zshrc claude --version

Для Bash — то же самое с ~/.bashrc; вместо source достаточно закрыть и открыть терминал.

На Windows порядок другой, потому что PATH хранится не в файле-конфиге, а в переменных среды пользователя. Сначала проверка:

$env:PATH -split ';' | Select-String '\.local\\bin'

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

$currentPath = [Environment]::GetEnvironmentVariable('PATH', 'User') [Environment]::SetEnvironmentVariable('PATH', "$currentPath;$env:USERPROFILE\.local\bin", 'User')

Две строки читают текущее значение User-PATH и дописывают к нему каталог установки: прав администратора не нужно, системный PATH не затрагивается. Важная деталь — изменение не подхватывается уже открытыми окнами. Терминал надо закрыть и открыть заново, и только после этого проверять claude --version. Из CMD наличие каталога смотрят строкой echo %PATH% | findstr /i "local\bin", а добавляют его через «Переменные среды» в системных настройках. Тот же рецепт официальный troubleshoot-install даёт и на симптом «установщик PowerShell отработал, а claude не найден или показывает старую версию».

Отдельная ловушка, на которую налетели и мы: расширение VS Code не кладёт claude в PATH. Оно держит приватную копию CLI внутри каталога расширения для собственной панели чата — если стоит только расширение, файла ~/.local/bin/claude не существует вовсе. Нужна отдельная установка CLI.

Второй сценарий — конфликт установок. Он даёт не «не запускается», а «запускается не то»: claude --version показывает одну версию, обновление ставит другую, поведение меняется от терминала к терминалу. Причина в том, что оболочка берёт первый подходящий файл из PATH, а копий в системе легко оказывается три: нативная в ~/.local/bin/claude, легаси-локальная в ~/.claude/local от старых версий Claude Code и глобальная npm-овская.

Все копии в PATH перечисляет which -a claude, на Windows — where.exe claude; наличие нативной проверяется отдельно, командой Test-Path "$env:USERPROFILE\.local\bin\claude.exe". Документация рекомендует оставить именно нативную установку, а лишние снять: npm uninstall -g @anthropic-ai/claude-code, rm -rf ~/.claude/local (в PowerShell — Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\local"), brew uninstall --cask claude-code, winget uninstall Anthropic.ClaudeCode. После чистки нужен новый терминал: версия в claude --version должна перестать плавать.

Claude Code не устанавливается: сеть, оболочка, память, версия ОС

bash: line 1: syntax error near unexpected token '<' или curl: (22) The requested URL returned error: 403 значит, что вместо скрипта пришла HTML-страница или ошибка. Проверка одна:

curl -sI https://downloads.claude.ai/claude-code-releases/latest

HTTP/2 200 — сервер доступен, сбой был разовым. 403 — прокси, сетевой фильтр или неподдерживаемый регион. 5xx — временный сбой сервиса. В PowerShell запускать нужно curl.exe: там curl — алиас Invoke-WebRequest, который флаги -sI не принимает.

curl: (56) Failure writing output to destination и родственная ей curl: (23) Failure writing output to destination — уже про другое: Bash получил скрипт не целиком. 56 значит, что оборвалась сама загрузка; 23 — что curl не смог записать полученное в пайп, обычно потому что Bash завершился раньше. Проверяется тем же curl -sI, а обходится альтернативным установщиком: brew install --cask claude-code на macOS, winget install Anthropic.ClaudeCode на Windows.

curl: (35) TLS connect error, schannel: next InitializeSecurityContext failed, Could not establish trust relationship for the SSL/TLS secure channel, unable to get local issuer certificate — сбой TLS-рукопожатия. Лечится обновлением системных CA-сертификатов: sudo apt-get update && sudo apt-get install ca-certificates на Ubuntu и Debian, на macOS они обновляются вместе с системой. На Windows перед установкой включают TLS 1.2: [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12. За корпоративным прокси с TLS-инспекцией нужен CA-бандл компании — curl --cacert /path/to/corporate-ca.pem на установку и NODE_EXTRA_CA_CERTS для самого Claude Code.

'irm' is not recognized, The token '&&' is not valid, A parameter cannot be found that matches parameter name 'fsSL', 'bash' is not recognized — вы скопировали команду для другой оболочки. Правильные, по странице установки Anthropic: PowerShell — irm https://claude.ai/install.ps1 | iex; CMD — curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd; macOS, Linux и WSL — curl -fsSL https://claude.ai/install.sh | bash.

Claude Code does not support 32-bit Windows в большинстве случаев означает не 32-битную систему, а не тот ярлык: «Windows PowerShell (x86)» запускается как 32-битный процесс даже на 64-битной машине. Проверка в том же окне — [Environment]::Is64BitOperatingSystem. True — закройте окно, откройте «Windows PowerShell» без суффикса x86 и повторите установку. False — у вас 32-битная редакция Windows, на ней Claude Code не работает.

Installation was killed before it could finish (exit code 137) на Linux — сработал OOM-killer: установке нужно порядка 512 МБ свободной памяти, лечится свап-файлом. dyld: cannot load или Abort trap: 6 на macOS — система старше требуемой macOS 13.0. Полные требования: macOS 13.0+, Windows 10 1809+, Ubuntu 20.04+, Debian 10+, Alpine 3.19+, 4 ГБ RAM, процессор x64 или ARM64.

Два запрета из той же документации: не ставить через sudo npm install -g и в WSL сначала выполнить npm config set os linux, иначе npm подхватит Windows-версию и упадёт на несовпадении платформы.

Ошибки входа: OAuth, 403 и просроченный токен

Базовый рецепт при любой неочевидной проблеме со входом — чистая переавторизация: /logout → закрыть Claude Code → запустить claude заново. Если браузер не открылся, нажмите c: Claude Code скопирует OAuth-URL в буфер.

OAuth error: Invalid code. Please make sure the full code was copied — код входа истёк или обрезался при копировании.

Отдельный случай — просроченный логин, который в рунете путают со сломанной установкой. Строки такие: Not logged in · Please run /login, OAuth token has expired · Please run /login, Login expired · Please run /login. Фикс написан прямо в сообщении — /login; если ошибка возвращается, сначала /logout, потом /login. Начиная с v2.1.203 Claude Code предупреждает за пять дней до истечения — сообщением вида Your login expires in 3 days · run /login to renew, а с v2.1.210 состояние видно в /status: там появилась строка Login со значением Expired — log in again.

API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}} после логина — не сетевой сбой. Официальный troubleshoot-install называет три причины: у пользователей Pro/Max неактивна подписка (проверять в claude.ai/settings); у пользователей Console аккаунту не назначена роль «Claude Code» или «Developer» — её выдаёт админ в Settings → Members; за корпоративным прокси стоит проверить сетевую конфигурацию.

В WSL2, по SSH и в контейнере ломается не сам вход, а его последний шаг. Claude Code поднимает локальный callback-сервер и ждёт редиректа из браузера, но браузер запускается на другом хосте — редирект уходит в никуда, и снаружи это выглядит как зависший логин. Сценарий штатный и предусмотрен: после успешной авторизации браузер вместо редиректа показывает код, который вставляют в терминал в поле Paste code here if prompted.

Если из WSL2 браузер не открывается вообще, путь к нему задают явно переменной BROWSER — например export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe", после чего запускают claude. Если код не вставляется в интерактивное поле, дело обычно в том, что сочетание вставки не доходит до поля ввода: в Windows Terminal вместо Ctrl+V работают правый клик и Shift+Insert. Универсальный обход — claude auth login: он читает код со стандартного ввода и поэтому не зависит от того, как терминал обрабатывает вставку.

На macOS повторные запросы логина часто дают заблокированная связка ключей и сбитые системные часы — валидация токена зависит от времени.

И то, что стоит проверить до всех фиксов: бесплатный план Claude.ai доступ к Claude Code не включает вовсе. Нужен Pro, Max, Team, Enterprise или Console-аккаунт.

App unavailable in region: Claude Code не работает в России

Отдельный класс, который в рунете лечат «впном» и путают с ошибками логина. Сообщение App unavailable in region означает ровно одно: страна не входит в список поддержки. В системных требованиях Claude Code строка «Location: Anthropic supported countries» стоит наравне с версией ОС и объёмом памяти, а на странице supported countries Anthropic{rel=»nofollow»} ни России, ни Беларуси нет ни в списке для API, ни в списке для Claude.ai.

Практический вывод: если на экране именно эта строка, чинить PATH, переустанавливать CLI и менять Node бессмысленно — симптом не оттуда. Подробности по легальной стороне вопроса разбирали в материале про доступ к Claude Code из России.

Лимиты: три разных «rate limit», которые постоянно путают

Это место, где рунет чаще всего ошибается. По Error reference Anthropic сообщения разные и фиксы разные.

Квота плана. You've hit your session limit · resets 3:45pm, You've hit your weekly limit, You've hit your Opus limit. Ждать сброса; при лимите Opus — /model на другую модель; /usage показывает лимиты и время сброса, /usage-credits докупает объём.

Лимит ключа или проекта. API Error: Request rejected (429). Это не квота плана. Проверьте /status, снизьте параллелизм через CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY, откажитесь от параллельных субагентов и убедитесь, что запрос не уходит через посторонний ANTHROPIC_API_KEY с низким тиром.

Перегрузка API. Repeated 529 Overloaded errors. Это не про вас: ёмкость кончилась у всех. Важная деталь из документации — 529 не списывается с вашей квоты, а Claude Code сам повторяет 429, 529, 5xx и таймауты до 10 раз с экспоненциальной задержкой (CLAUDE_CODE_MAX_RETRIES, по умолчанию 10, максимум 15). То есть если 529 доехал до экрана, десять попыток уже провалились — жать Enter ещё раз бессмысленно, смотрите status.claude.com или меняйте модель через /model: ёмкость считается по каждой модели отдельно.

ANTHROPIC_API_KEY: подписка есть, а доступа нет

Симптом выглядит абсурдно: активная Pro или Max, а Claude Code отвечает API Error: 400 ... This organization has been disabled. Причина — переменная окружения ANTHROPIC_API_KEY, оставшаяся в профиле шелла с прошлого проекта или прошлой работы. Она перекрывает подписку.

Официальный порядок приоритета учётных данных из документации по аутентификации:

  1. облачный провайдер, если задан CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX или CLAUDE_CODE_USE_FOUNDRY;
  2. ANTHROPIC_AUTH_TOKEN;
  3. ANTHROPIC_API_KEY;
  4. apiKeyHelper;
  5. CLAUDE_CODE_OAUTH_TOKEN;
  6. OAuth-учётка подписки из /login.

Подписка — последняя в списке. В неинтерактивном режиме с флагом -p заданный ключ используется всегда, без вопросов. Тихой эту подмену делает то, что при заданной переменной Claude Code не открывает браузер для входа, а один раз спрашивает подтверждение на использование ключа.

Фикс:

unset ANTHROPIC_API_KEY claude

Затем уберите строку export ANTHROPIC_API_KEY=... из ~/.zshrc, ~/.bashrc или ~/.profile — на Windows из профиля PowerShell ($PROFILE) и пользовательских переменных среды. Проверка — /status: он показывает, какая учётка активна. Если вы намеренно работаете по ключу, логика оплаты там другая — разбирали её в материале про Claude Code и API.

MCP-сервер не подключается: Failed to connect

Статус смотрят командой claude mcp list или /mcp в сессии. По MCP-квикстарту Anthropic статусы значат разное: ✔ Connected — готов; ! Connected · tools fetch failed — подключился, но не отдал инструменты; ! Needs authentication — нужен вход в браузере или токен; ✘ Failed to connect и ✘ Connection error — не стартовал или URL не ответил; ⏸ Pending approval — проектный сервер ждёт подтверждения.

Для HTTP-сервера дерево решений одно:

curl -I https://mcp.example.com/mcp

404 или 405 — сервер жив: многие MCP-эндпоинты отвечают только на POST. 401 или 403 — жив, но нужна авторизация. Тишина — проблема с URL или сетью. В PowerShell снова curl.exe.

Для stdio-сервера запустите команду из конфига прямо в терминале — она напечатает настоящую ошибку. И четыре причины, которые дают «Failed to connect» на ровном месте:

  • Таймаут. Дефолт старта — 30 секунд, а первый запуск stdio-сервера медленный, пока npx качает пакет. Поднимается так: MCP_TIMEOUT=60000 claude (в PowerShell — $env:MCP_TIMEOUT = "60000"; claude).
  • Относительные пути в command или args: они резолвятся относительно каталога запуска Claude Code, а не относительно .mcp.json. Для локальных скриптов нужны абсолютные пути.
  • Файл не перечитан. .mcp.json читается на старте сессии — после правки сессию перезапускают.
  • Не тот путь конфига. Claude Code читает ~/.claude.json и <project>/.mcp.json. Пути вроде ~/.claude/mcp.json или %APPDATA%\Claude\mcp.json он не читает вообще.

Полезная примета версии: начиная с v2.1.191 сервер, ответивший 404, показывает в /mcp строку MCP endpoint not found at <url>. Check the URL in your MCP config. с конкретным адресом. Если вместо неё на экране общее Error POSTing to endpoint без URL — CLI старше этой версии, и обновиться дешевле, чем вслепую искать опечатку в конфиге. Ещё одна ловушка — статус ⏸ Pending approval: сервер ждёт подтверждения. Ранее отклонённые решения по проектным серверам сбрасываются командой claude mcp reset-project-choices.

Отдельно: сервер, который показан как connected, но отдаёт ноль инструментов, обычно не получил обязательную переменную окружения. Задавать её нужно через --env или поле env внутри .mcp.json — блок env из settings.json до MCP-процессов не доходит.

Старая версия CLI и вопрос про Node.js

Ошибка thinking.type.enabled is not supported for this model выглядит как поломка модели, а означает, что ваш Claude Code старше минимальной версии для неё. По Error reference: Opus 4.7 требует v2.1.111+, Opus 4.8 — v2.1.154+, Sonnet 5 — v2.1.197+. Лечится claude update; как временный обход — /model на Opus 4.6 или Sonnet 4.6.

Про Node.js в рунете до сих пор тиражируют устаревшее. Актуально так: npm-пакет @anthropic-ai/claude-code начиная с v2.1.198 требует Node.js 22 или новее, но на старом Node установка не падает — npm печатает предупреждение EBADENGINE, а claude работает, потому что пакет тянет нативный бинарь, который Node в рантайме не использует. Нативная установка через install.sh или install.ps1 Node.js не требует вовсе. На практике это значит, что Node нужен не самому CLI, а тем stdio-MCP-серверам, которые вы запускаете через npx.

Как не сломать снова: канал обновлений и версии

Часть разобранных сбоев — не поломка машины, а разъехавшиеся версии. Управляют этим три настройки из официальной документации по установке.

Канал. Нативная установка проверяет апдейты на старте и периодически в работе, качает в фоне и применяет при следующем запуске. Какие версии приезжают, задаёт autoUpdatesChannel в settings.json: "latest" (по умолчанию) — новое сразу, "stable" — версия примерно недельной давности, из которой выкинуты релизы с крупными регрессиями. У Homebrew канал выбирается именем каски: claude-code — стабильный, claude-code@latest — свежий.

Пол по версии. Настройка minimumVersion запрещает и автообновлению, и claude update ставить что-либо ниже указанного номера.

Выключатели. DISABLE_AUTOUPDATER со значением "1" в блоке env файла settings.json останавливает только фоновую проверку — claude update и claude install продолжают работать. Чтобы закрыть и ручные пути, ставят DISABLE_UPDATES.

Что проверять руками. claude update при успехе печатает Successfully updated from <старая> to version <новая>, а когда ставить нечего — Claude Code is up to date. Для npm-установки апгрейд делают командой npm install -g @anthropic-ai/claude-code@latest: npm update -g уважает semver-диапазон исходной установки и до последнего релиза может не довести. Homebrew и WinGet умеют обновляться руками Claude Code, если задать CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE в 1.

После апгрейда Node стоит прогнать claude mcp list: сам CLI это не затронет, а stdio-серверы на npx — да.

Таблица: строка ошибки → команда

Что на экране Что это Что делать
command not found: claude Каталог не в PATH Добавить ~/.local/bin в PATH, открыть новый терминал
syntax error near unexpected token '<' Вместо скрипта пришла HTML-страница curl -sI https://downloads.claude.ai/claude-code-releases/latest
App unavailable in region Страна вне списка поддержки Симптом не про установку — см. supported countries
exit code 137 / Killed Нехватка памяти на установку Освободить ~512 МБ или добавить свап
dyld: cannot load, Abort trap: 6 macOS старше 13.0 Обновить систему
403 forbidden после логина Неактивная подписка или нет роли claude.ai/settings; роль Claude Code/Developer в Console
Login expired · Please run /login Истёк OAuth-логин /login, при повторе /logout/login
This organization has been disabled Ключ перекрыл подписку unset ANTHROPIC_API_KEY, затем /status
You've hit your session limit Квота плана Ждать сброса, /usage, /model, /usage-credits
Request rejected (429) Лимит ключа или проекта /status, снизить CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY
529 Overloaded Перегрузка API, квота не тратится status.claude.com, /model, подождать
✘ Failed to connect в MCP Сервер не стартовал или URL молчит curl -I <url>, MCP_TIMEOUT=60000 claude
thinking.type.enabled is not supported CLI старше модели claude update
Prompt is too long Переполнено контекстное окно /compact, /clear, /context

Полный официальный справочник — Error reference Anthropic{rel=»nofollow»}; часть строк таблицы — оттуда, часть из официального troubleshoot-install.

Частые вопросы

Почему Claude Code не работает сразу после установки?
Обычно дело в PATH: установщик кладёт бинарь в ~/.local/bin/claude (или %USERPROFILE%\.local\bin\claude.exe), а терминал туда не смотрит. Добавьте каталог в PATH и откройте новое окно терминала.

Что делать при «Request rejected (429)»?
Это лимит вашего API-ключа или проекта, а не квота плана. Проверьте /status и снизьте параллелизм через CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY.

Почему при активной подписке пишет «This organization has been disabled»?
ANTHROPIC_API_KEY в вашем окружении перекрывает подписку: в порядке приоритета учётных данных ключ стоит выше OAuth из /login. Выполните unset ANTHROPIC_API_KEY и уберите export из профиля шелла.

MCP-сервер показывает Failed to connect — что проверить первым?
Для HTTP-сервера — curl -I <url>: 404 или 405 означают, что сервер жив, 401 или 403 — нужна авторизация, тишина — проблема сети или URL. Для stdio-сервера запустите его команду напрямую в терминале.

Нужен ли Node.js для Claude Code?
Для нативной установки — нет, бинарь не использует Node в рантайме. npm-пакет с v2.1.198 требует Node.js 22+, но на старом Node печатает лишь предупреждение EBADENGINE. Node нужен MCP-серверам, запускаемым через npx.