Qwen Code: ошибка 401 invalid access token or token expired
Ошибка 401 в Qwen Code часто означает старый вход через Qwen OAuth или ключ, который отправился не на тот адрес. Диагностика по шагам и переход на свой ключ.
5 мин · · ошибки · агенты
Сообщение «Qwen Code internal error: 401 invalid access token or token expired» (в других клиентах оно выглядит как «Qwen API error: 401 invalid access token or token expired») говорит об одном: сервер, который ответил, не принял учётные данные. Вопрос в том, какой это сервер и какие именно данные он видел. Ниже порядок диагностики и способ перейти на свой OpenAI-совместимый ключ, чтобы агент снова заработал. Проверено по документации Qwen Code и ответам шлюза Zukko на 18 октября 2026.
Откуда берётся эта ошибка
Текст «token expired» указывает на токен доступа с ограниченным сроком жизни. У Qwen Code такие токены были у режима Qwen OAuth: вы входили через браузер, учётные данные кэшировались на диске и обновлялись автоматически. По документации проекта, бесплатный уровень Qwen OAuth прекращён 15 апреля 2026, а уже сохранённые токены могут ещё некоторое время работать, но новые запросы отклоняются. Поэтому самая вероятная причина «token expired» в сегодняшней сборке: агент всё ещё пытается использовать старый OAuth-вход. В диалоге /auth этот вариант больше не выбирается.
Точной строки именно с этим текстом в документации мы не нашли, поэтому не утверждаем, что она всегда связана с OAuth. Но схема диагностики ниже подходит в обоих случаях: сначала выясняем, какой способ входа активен, потом заменяем его на ключ.
Другие причины 401, не связанные с OAuth:
- ключ введён с опечаткой, пробелом или обрезан при копировании;
- ключ одного сервиса отправляется на адрес другого;
- в окружении остался старый
OPENAI_API_KEY, который перекрывает ключ изsettings.json.
Шаг 1. Узнайте, какой способ входа используется
Запустите qwen и выполните /doctor: по документации, эта команда проверяет текущую аутентификацию. Затем откройте /auth и посмотрите, что предлагается. Если вы видите только пункты с ключом (облако Alibaba, сторонние провайдеры, Custom Provider), значит OAuth уже не в списке, и нужен ключ.
Если интерфейс не открывается вовсе (зависает после неудачной аутентификации), в документации указан способ: удалите поле security.auth.selectedType из ~/.qwen/settings.json (или из ./.qwen/settings.json проекта) и перезапустите программу. Она снова предложит выбрать способ входа.
Шаг 2. Проверьте, кто отвечает
Самая частая ошибка при переходе: адрес остался от старого провайдера, а ключ новый (или наоборот). Проверьте переменные:
echo "$OPENAI_BASE_URL"
echo "${OPENAI_API_KEY:0:8}"
echo "$OPENAI_MODEL"Для Zukko адрес должен быть https://api.zukko.pro/v1, а ключ должен начинаться с fetch_. Если в OPENAI_BASE_URL стоит адрес Alibaba, а в ключе fetch_..., 401 вернёт Alibaba, и ваша учётка Zukko тут ни при чём.
Приоритет источников у Qwen Code такой: флаги командной строки, затем переменные окружения оболочки, затем файл .env, и самым последним поле env в settings.json. Значит, старый export OPENAI_API_KEY=... в ~/.zshrc победит то, что вы записали в settings.json. Откройте новый терминал и проверьте echo, как выше.
Шаг 3. Проверьте ключ отдельно от агента
Один запрос напрямую сэкономит час догадок:
curl -i https://api.zukko.pro/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"ping"}]}'Как читать ответ шлюза Zukko:
| Код | Что значит | Что делать |
|---|---|---|
| 200 | ключ и модель в порядке | проблема в настройках Qwen Code |
| 401 | неверный ключ | перепроверьте ключ, при сомнении выпустите новый |
| 402 | не хватает баланса | пополните баланс в кабинете |
| 403 | модели нет в списке разрешённых для ключа (model_not_allowed_for_key) | разрешите модель в настройках ключа или смените её |
| 404 | неизвестное имя модели (model_not_found) | сверьте id с GET /v1/models |
| 429 | исчерпан лимит ключа или ограничение у провайдера модели | см. лимиты ключа в кабинете |
Подробнее про авторизацию: документация по аутентификации и общий разбор ошибки 401 invalid API key. Полный ключ показывается только один раз при создании, поэтому, если ключ потерян, создайте новый на странице API-ключей.
Шаг 4. Переключите Qwen Code на свой ключ
Быстрый вариант через переменные окружения:
export OPENAI_API_KEY="fetch_ваш_ключ"
export OPENAI_BASE_URL="https://api.zukko.pro/v1"
export OPENAI_MODEL="claude-sonnet-5-5"
qwenПостоянный вариант через ~/.qwen/settings.json. Ключ лучше держать не в самом файле, а в .qwen/.env (так рекомендует документация: он приоритетнее, и файл проще не коммитить):
{
"modelProviders": {
"openai": [
{
"id": "claude-sonnet-5-5",
"name": "Claude Sonnet 5.5 (Zukko)",
"baseUrl": "https://api.zukko.pro/v1",
"envKey": "ZUKKO_API_KEY"
}
]
},
"security": { "auth": { "selectedType": "openai" } },
"model": { "name": "claude-sonnet-5-5" }
}И в ~/.qwen/.env:
ZUKKO_API_KEY=fetch_ваш_ключИмя в model.name должно совпадать с одним из id в modelProviders. После запуска qwen переключать модели можно командой /model. Если что-то из этих полей у вас называется иначе (формат менялся между версиями), сверьтесь со страницей об аутентификации в документации Qwen Code.
Сделайте тестовый запрос и откройте раздел «Использование» в кабинете: запрос должен появиться там.
Что учесть при переходе
- Цены и модели берите из
GET https://api.zukko.pro/v1/models. Для примера на 18 октября 2026:claude-sonnet-5-5стоит $0,4 / $2 за 1M токенов входа и выхода,deepseek-v4.1-flash$0,013 / $0,038,qwen3.8-max$0,088 / $0,238. - В ключе можно задать дневной и месячный лимит в долларах и список разрешённых моделей.
- Доступ из России идёт через шлюз: баланс пополняется СБП (платёжная страница добавляет 8,5% сверху), картой MasterCard или криптой.
Если после всех шагов ошибка остаётся, а curl возвращает 200, значит агент читает старую конфигурацию. Запустите qwen из чистой оболочки без лишних переменных и проверьте файлы .env в текущем и родительских каталогах: Qwen Code берёт первый найденный.
Частые вопросы
Почему ошибка появилась внезапно, хотя вчера всё работало?
Если вы использовали вход через Qwen OAuth, причина в том, что бесплатный уровень прекращён, а кэшированные токены перестали приниматься. Это не поломка вашей машины.
Можно ли «обновить токен» и продолжить с OAuth?
По документации, нет: этот способ больше не предлагается, а новые запросы с него отклоняются. Нужен ключ любого совместимого сервиса.
Ошибка 401 есть и с ключом fetch_.... Что проверить?
Ключ и адрес: у OPENAI_BASE_URL должен быть https://api.zukko.pro/v1. Затем выполните curl из шага 3 и убедитесь, что ключ принят.
Ошибка пропала, но ответов нет
Проверьте код 402 (баланс) и 403 (модель не разрешена для ключа). Агент может показывать их не так наглядно, как curl.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- Cline: «hit repeated tool call failures» — причины и решениеСообщение значит, что агент несколько раз подряд не смог выполнить вызов инструмента. Разбираем причины и порядок проверки, от base URL до размера контекста.
- Агенты opencode: как настроить роли, модели и инструментыСвой агент в opencode — это роль, модель и список разрешений. Показываем конфиг и пример, где рутину делает дешёвая модель, а код правит сильная.
- Ключи OpenAI API в открытом доступе: почему ими нельзя пользоватьсяОткуда берутся «бесплатные» ключи на GitHub, почему пользоваться ими опасно и для вас, и для владельца, и как защитить собственный ключ от такой же утечки.
- Ошибки GLM API: почему не работает запрос и как это исправитьНеверный id модели, переполненный контекст 128K, ключ, баланс, лимиты: типичные причины ошибок GLM API и быстрый способ найти свою.