Материал редакции Зерокодера. Разбор собран по официальной документации 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, оставшаяся в профиле шелла с прошлого проекта или прошлой работы. Она перекрывает подписку.
Официальный порядок приоритета учётных данных из документации по аутентификации:
- облачный провайдер, если задан
CLAUDE_CODE_USE_BEDROCK,CLAUDE_CODE_USE_VERTEXилиCLAUDE_CODE_USE_FOUNDRY; ANTHROPIC_AUTH_TOKEN;ANTHROPIC_API_KEY;apiKeyHelper;CLAUDE_CODE_OAUTH_TOKEN;- 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.