Диагностика · opencode
opencode не подхватывает API-ключ — auth и плейсхолдеры {env}
opencode авторизует своего провайдера через options.apiKey — обычно плейсхолдер {env:...}. Почему переменная молча резолвится пустой и запросы падают с 401.
Что вы видите
opencode 401 unauthorizedПочему возникает
- Плейсхолдер {env:NAME} называет переменную, не заданную в окружении, из которого запущен opencode, — он резолвится пустым, и провайдер не видит ключа.
- Переменная экспортирована в одной оболочке, а opencode стартует из другой: десктопный лаунчер, другой терминал, панель мультиплексора.
- Ключ вставлен в opencode.json буквально с окружающими пробелами, либо принадлежит другому эндпоинту, чем baseURL.
Что делать
- Экспортируйте именно ту переменную, что названа в плейсхолдере, в той же оболочке, затем запустите opencode из неё.
- Проверьте пару через curl: baseURL из конфигурации плюс ключ из переменной должны сработать вне opencode сначала.
- Предпочитайте форму {env:...} вставке ключа в файл — она держит секрет вне dotfiles и системы контроля версий.
Ключ через окружение, а не в файле
export APITOKEN_API_KEY="sk-pool-•••"
opencode
# opencode.json references it as:
# "apiKey": "{env:APITOKEN_API_KEY}"Похожие запросы
opencode api key not workingopencode auth error custom provider
Вопросы и ответы
Почему opencode не отправляет API-ключ, хотя opencode.json его называет?+
Плейсхолдер {env:NAME} резолвится на старте из собственного окружения opencode. Если эта оболочка не экспортировала переменную, ключ пуст.
Безопасно ли вставить ключ прямо в opencode.json?+
Работает, но env-плейсхолдер — привычка получше: файлы конфигурации попадают в бэкапы и репозитории, и вставленный ключ едет вместе с ними.
Как понять, какая половина сломана — ключ или URL?+
curl-ните baseURL с ключом вручную. 401 означает пару ключ/эндпоинт; ошибки соединения — URL или сеть.
Пропустите сломанную настройку
apiToken.sale отдаёт стандартный Anthropic API — те же модели, те же SDK, один предоплаченный баланс. Направьте base URL вашего инструмента на него, и конфигурация с этой страницы заработает как написано.