Содержание
Случалось ли, что Claude Code вдруг выдавал подобное сообщение и требовал войти заново?
Not logged in · Please run /login
Invalid API key · Fix external API key
OAuth token has expired · Please run /login
API Error: 400 ... This organization has been disabled.
Это ошибки из разряда «не удалось пройти аутентификацию (кто вы?)», и обычно они проявляются как 401/403. Раздражает то, насколько неочевидно они выглядят — «я плачу, а меня отклоняют» или «вчера всё работало, а теперь вдруг требует войти заново». Но большинство причин — типовые, и как только вы знаете порядок проверки, всё чинится быстро.
Сразу самое важное. (1) Проблема аутентификации №1 — это переменная окружения ANTHROPIC_API_KEY, которая молча перекрывает вход по подписке (Pro/Max) — именно она оказывается настоящей причиной неожиданных оплат по факту использования, «organization disabled» и «Invalid API key». (2) Отправная точка — всегда /status, чтобы увидеть, «какие учётные данные сейчас активны». (3) Если сомневаетесь — «unset лишнего ключа → /logout → /login» для чистого повторного входа.
У учётных данных есть «приоритет»
— побеждает то, что выше, поэтому API-ключ из окружения перекрывает подписку
ANTHROPIC_AUTH_TOKEN (для шлюзов)
ANTHROPIC_API_KEY ← переменная окружения
побеждает = оплата по факту
apiKeyHelper / 5. CLAUDE_CODE_OAUTH_TOKEN
/login)
то, что вам реально нужно
Если ANTHROPIC_API_KEY остался в окружении, он имеет приоритет над подпиской.
Сначала проверьте через /status → если не нужен, unset ANTHROPIC_API_KEY.
1. О чём говорит эта ошибка
Аутентификация — это «доказательство того, кто вы». Claude Code доказывает, что «вы» — это вы, одним из трёх способов: вход по OAuth подписки, API-ключ или облачные учётные данные. Когда это доказательство не проходит, вас отклоняют как 401 (authentication_error) или 403 (forbidden). Характерные сообщения и их значения:
| Сообщение | Значение |
|---|---|
| Not logged in · Please run /login | Нет действующих учётных данных → /login |
| Invalid API key · Fix external API key (в старых сборках: «· Please run /login») | Ключ из переменной окружения или apiKeyHelper был отклонён API |
| This organization has been disabled | Устаревший API-ключ от отключённой организации перекрывает вас |
| OAuth token revoked / has expired · Please run /login | Выход выполнен в другом месте / отозван администратором / сбой автообновления |
| API Error: 403 ... forbidden ... Request not allowed | Неактивная подписка, отсутствие роли в Console или вмешательство прокси |
Ключевая привычка: прежде чем винить себя, выполните /status, чтобы увидеть, «какие учётные данные сейчас активны». Большинство ошибок аутентификации вызвано тем, что выбраны непреднамеренные учётные данные — а главный подозреваемый — это «перекрытие API-ключом» из следующего раздела.
2. Главная ловушка — API-ключ перекрывает подписку
Официальная документация прямо указывает, что Claude Code выбирает ОДНИ учётные данные по «приоритету» (см. блок выше). Загвоздка в том, что переменная окружения ANTHROPIC_API_KEY стоит ВЫШЕ входа по подписке (Pro/Max). Иными словами —
Официальное объяснение (в пересказе)
«Даже при действующей подписке, если в окружении задан ANTHROPIC_API_KEY, после подтверждения приоритет получает именно он. Если этот ключ принадлежит отключённой или просроченной организации, аутентификация не проходит. Выполните unset ANTHROPIC_API_KEY, чтобы вернуться к подписке, и проверьте через /status, что именно активно».
Это перекрытие порождает три «неочевидных» симптома. (1) Неожиданная оплата по факту использования — то, что должно быть фиксированной подпиской, тарифицируется потокенно через API-ключ (сообщалось о крупных неожиданных счетах). (2) This organization has been disabled — оставшийся ключ принадлежал отключённой старой организации. (3) Invalid API key — ключ просрочен или неверен. Ни одна из этих ситуаций не является «проблемой вашего входа» — это «проблема лишнего ключа, засевшего в вашем окружении».
Откуда берётся ключ: строка export ANTHROPIC_API_KEY=... в ~/.zshrc / ~/.bashrc / ~/.profile; файл .env, который читают direnv, dotenv или терминал вашей IDE; остаток от прошлой работы/проекта; окружение CI. На Windows — профиль PowerShell ($PROFILE) или пользовательские переменные окружения. Обнаружить через /status и env | grep ANTHROPIC; исправить так:
# Временно сбросить и запустить
unset ANTHROPIC_API_KEY
claude
# Постоянное решение: удалить строку export из конфига шелла / .env, затем подтвердить через /status
Примечание: в интерактивном режиме у вас один раз спрашивают, использовать ли ключ, и ваш выбор запоминается (изменить позже можно через переключатель «Use custom API key» в /config). Если вы не собираетесь намеренно использовать API-ключ, убедитесь через /status, что активна подписка.
3. Другие причины
Проблемы аутентификации помимо перекрытия тоже, как правило, имеют фиксированный набор причин.
Сбои аутентификации помимо перекрытия
/logout → /login.claude doctor.c, чтобы скопировать URL, или задайте BROWSER.
«Вход требуется каждый раз» → сначала подозревайте сбой часов или Keychain.
«Отклонено с 403» → подозревайте неактивную подписку, роль в Console или прокси.
Знание того, где хранятся учётные данные, тоже ускоряет восстановление. macOS: Keychain; Linux: ~/.claude/.credentials.json (права 0600); Windows: %USERPROFILE%\.claude\.credentials.json. Обычно этим управляют /login и /logout, но если хранилище повреждено, можно удалить этот файл для чистой повторной аутентификации (для продвинутых).
4. Порядок диагностики
Если застряли на аутентификации, идите сверху вниз. Большинство случаев решается к шагу 3.
Локализуйте сверху вниз
/status, чтобы увидеть, какие учётные данные активны (подписка, API-ключ или облако).env | grep ANTHROPIC (Windows: $PROFILE / пользовательские переменные окружения), чтобы найти лишний ключ.unset ANTHROPIC_API_KEY → перезапуск. Сделайте это постоянным, удалив строку export из конфига шелла / .env./logout → закрыть Claude Code → /login для чистой повторной аутентификации.claude doctor (macOS) / подтвердите свою роль в Console (для организаций).
Правило: «сначала /status, затем охота на лишний ключ».
Большинство случаев решается простым удалением ключа, который вас перекрывал.
5. Как отличить от похожих ошибок
«Отклонено / остановлено» может иметь и причины, не связанные с аутентификацией. Разделение по HTTP-коду — надёжный способ.
| Симптом | Что это на самом деле | Основное решение |
|---|---|---|
| 401 / 403 · Invalid API key · Not logged in | Эта статья = аутентификация (проблема учётных данных) | /status → удалить лишний ключ → /login |
| usage limit reached | Квота тарифа исчерпана (с аутентификацией всё в порядке) | Дождитесь сброса; решения |
| 429 Request rejected | Лимит частоты (перекрытие ключом низкого уровня может вызвать 429) | Снизьте темп; также проверьте /status на лишний ключ |
| 529 / 500 | Сторона сервера: перегрузка / внутренняя ошибка | Подождите и повторите; решения |
| Credit balance is too low | Исчерпан предоплаченный баланс в Console (оплатить или перейти на подписку) | Пополните баланс или /login в подписку |
Мнемоника: 401/403 — это проблема «кто вы?» = аутентификация. usage limit и Credit balance — это проблемы «объём / баланс». 429 — это частота, 529/500 — это сторона сервера. Примечательно, что лишний API-ключ вызывает не только «сбой аутентификации», но и «неожиданные оплаты» и «429 на низком уровне» — поэтому ответ на любую путаницу всегда «сначала /status». О других распространённых ошибках см. в сводке ошибок.
6. Чек-лист профилактики
Чек-лист, чтобы перестать раз за разом застревать на аутентификации.
(1) Если вы пользуетесь подпиской, не оставляйте ANTHROPIC_API_KEY в конфиге шелла / .env (следите за остатками от прежней работы/проектов). (2) Возьмите в привычку перед важной работой проверять активные учётные данные через /status. (3) Для CI используйте CLAUDE_CODE_OAUTH_TOKEN от claude setup-token (или явный API-ключ) вместо интерактивного входа. (4) Если вход требуется каждый раз, проверьте системные часы и Keychain в macOS. (5) Для аккаунтов организаций подтвердите роль в Console и статус тарифа. (6) В WSL/SSH знайте метод вставки кода.
Итоги
Ошибки аутентификации/входа в Claude Code (Not logged in / Invalid API key / organization disabled / OAuth token expired и т. д.) — это в основном 401/403 = проблемы учётных данных. Самая частая истинная причина — «переменная окружения ANTHROPIC_API_KEY, которая молча перекрывает вход по подписке» — что порождает неожиданные оплаты по факту использования, organization disabled и Invalid API key. Поэтому отправная точка — всегда /status, чтобы увидеть, «какие учётные данные активны».
Диагностируйте так: (1) /status -> (2) env | grep ANTHROPIC, чтобы найти лишний ключ -> (3) unset + удалить из конфига шелла -> (4) /logout -> /login -> (5) часы / Keychain / роль в Console. Большинство случаев решается простым удалением ключа, который вас перекрывал. Разделяйте по принципу 401/403 = аутентификация, usage limit / Credit = объём-баланс, 429 = частота, 529/500 = сервер, чтобы не применить неверное решение. Связанное: лимит использования, ошибки 529/500, сводка ошибок Claude Code.
FAQ
Q. Я плачу, но получаю «Invalid API key» или «organization has been disabled». Почему?
A. Почти наверняка переменная окружения ANTHROPIC_API_KEY перекрывает ваш вход по подписке. Если этот ключ принадлежит просроченной или отключённой организации, вас отклоняют даже при активной подписке. Найдите его через env | grep ANTHROPIC, выполните unset ANTHROPIC_API_KEY, затем /login и подтвердите через /status. Также удалите строку export из конфига шелла (.zshrc и т. п.) или .env.
Q. У меня фиксированная подписка, но со счёта списали потокенно.
A. Это тоже обычно перекрытие через ANTHROPIC_API_KEY. Когда приоритет получает API-ключ, использование идёт через потокенную оплату API, а не через вашу фиксированную подписку. Подтвердите через /status, что «подписка активна»; если выбран API-ключ, удалите его через unset + чистку конфига. Оставляйте его, только если намеренно хотите использовать API-ключ.
Q. Вход требуется при каждом запуске.
A. Частые причины — (1) сбой системных часов (проверка токена зависит от точного времени) и (2) заблокированный Keychain в macOS / несовпадение пароля, из-за чего не удаётся сохранить учётные данные. Настройте автоматическую синхронизацию часов, а на macOS проверьте Keychain через claude doctor. Если не помогает — войдите начисто через /logout → /login.
Q. Что показывает /status?
A. Он показывает, какой метод аутентификации/учётные данные сейчас активны (OAuth подписки, ANTHROPIC_API_KEY или облачные учётные данные). Поскольку большинство проблем аутентификации — это «выбраны непреднамеренные учётные данные», правило таково: сначала /status. Точное отображение зависит от версии, поэтому актуальное поведение уточняйте в официальной документации.
Q. Вход через WSL или SSH не работает, потому что браузер не открывается.
A. В удалённых конфигурациях редирект браузера не может вернуться на локальный callback. Обойти это можно так: вставьте код входа, который показывает Claude Code, нажмите c, чтобы скопировать URL и открыть его в локальном браузере, или задайте переменную окружения BROWSER в WSL2. Знание метода вставки кода делает это надёжным.