Как проявляется
При отправке сообщений через Clawdbot возникает ошибка 401 с сообщением «Invalid bearer token» или «No API key found for provider anthropic».
Из-за чего возникает
Несоответствие между конфигурационными файлами: в ~/.clawdbot/clawdbot.json профиль имеет mode: “token”, а в ~/.clawdbot/agents/main/agent/auth-profiles.json профиль с type: “oauth” и разными именами. Мастер настройки задаёт mode “token”, хотя OAuth-учётные данные хранятся иначе.
Вторая причина: ключ sk-ant-api… уехал в Authorization: Bearer
Если у вас на руках ключ, который начинается с sk-ant-api, а в ответ приходит «Invalid bearer token» — конфиги тут ни при чём. У Anthropic два разных типа учётных данных, и они ходят в разных заголовках:
| Что за учётка | Как выглядит | В каком заголовке | Что ещё нужно |
|---|---|---|---|
| API-ключ из консоли | начинается с sk-ant-api | x-api-key | anthropic-version: 2023-06-01 |
| OAuth-токен от Claude Code | выдаёт claude setup-token | Authorization: Bearer | anthropic-beta: oauth-2025-04-20 |
Отсюда и текст ошибки. Сервер получил заголовок Authorization: Bearer, разобрал его как OAuth-токен, не нашёл там токена нужного формата — и ответил «Invalid bearer token». Заголовок по форме правильный, внутри не тот тип учётных данных. Перевести запрос с API-ключа на OAuth — это смена заголовка, а не подстановка другого значения в тот же.
Проверить сам ключ можно одной командой: если она отвечает, ключ живой и дело в том, как его передаёт клиент.
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: sk-ant-api03-ВАШ_КЛЮЧ" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-opus-5","max_tokens":16,"messages":[{"role":"user","content":"ping"}]}'
Что делать дальше, зависит от того, что у вас есть:
- Есть только API-ключ
sk-ant-api…. Профиль должен работать в режиме токена, а не OAuth:mode: "oauth"в паре с таким ключом — несовместимая пара, и она даёт ровно эту ошибку. Либо оставляйтеmode: "token"и кладите ключ туда, куда клиент ждёт API-ключ, либо получайте OAuth-токен по инструкции ниже. - Нужен именно доступ через подписку Claude Code. Тогда API-ключ не подойдёт в принципе — нужен OAuth-токен, и дальше по шагам.
ОсторожноНе подставляйте
sk-ant-api…в поле, подписанное «paste setup token»: туда идёт токен изclaude setup-token, а не ключ из консоли. Внешне оба «длинная строка на sk-ant», и их путают чаще всего.
Как исправить
- Убедитесь, что на машине установлен и выполнен вход в Claude Code CLI (
claude login). - Запустите в терминале:
clawdbot config set auth.profiles.anthropic:default.mode "oauth"
- Отредактируйте файл
~/.clawdbot/clawdbot.json, чтобы профиль выглядел так:
"auth": {
"profiles": {
"anthropic:default": {
"provider": "anthropic",
"mode": "oauth"
}
}
}
- В файле
~/.clawdbot/agents/main/agent/auth-profiles.jsonудалите профиль с одним токеном (если есть) и переименуйте профиль с OAuth-токенами вanthropic:default, чтобы имя совпадало сclawdbot.json. - Выполните в отдельном терминале:
claude setup-token
- Откройте ссылку из терминала в браузере и введите код подтверждения.
- Скопируйте полученный токен из
claude setup-tokenи вставьте его при настройке вclawdbotчерез:
openclaw configure
- Выберите модель → Anthropic → “Anthropic token (paste setup token)”.
- Перезапустите шлюз:
clawdbot gateway restart
- Запустите интерфейс агента:
clawdbot tui
После этих действий аутентификация должна пройти успешно.
Как не столкнуться снова
Всегда синхронизируйте имена и типы профилей OAuth в конфигурационных файлах Clawdbot и запускайте claude login на той же машине, где работает Clawdbot.
Источник
Разбор основан на обсуждении в репозитории проекта: issue #2697.
Какие ключи и провайдеры работают из России — в обзоре API для ИИ-агента. Похожие сбои и их причины собраны в разборе частых ошибок OpenClaw.
Смежные ошибки авторизации и доступа: 401 missing authentication header и 60-секундных зависаний при многошаговых вызовах.