문제 해결 · opencode

opencode에서 API 키가 인식되지 않을 때 — auth와 {env} 플레이스홀더

opencode는 커스텀 프로바이더를 options.apiKey — 보통 {env:...} 플레이스홀더 — 로 인증합니다. 변수가 조용히 빈 값으로 해석되어 요청이 401로 실패하는 이유.

표시되는 내용

opencode 401 unauthorized

발생 원인

  • {env:NAME} 플레이스홀더가 opencode가 실행된 환경에 설정되지 않은 변수를 지정합니다 — 빈 값으로 해석되어 프로바이더는 키를 받지 못합니다.
  • 변수는 한 셸에서 export되었는데 opencode는 다른 곳에서 시작됩니다: 데스크톱 런처, 다른 터미널, 멀티플렉서 패널.
  • 키가 앞뒤 공백과 함께 opencode.json에 그대로 붙여넣어졌거나, baseURL과 다른 엔드포인트의 키입니다.

해결 방법

  • 플레이스홀더에 적힌 정확한 변수를 같은 셸에서 export한 뒤 그 셸에서 opencode를 시작하세요.
  • curl로 조합을 확인하세요: 설정의 baseURL과 변수의 키가 opencode 밖에서 먼저 성공해야 합니다.
  • 키를 파일에 붙여넣기보다 {env:...} 형태를 선호하세요 — 비밀 값이 dotfile과 버전 관리에 들어가지 않게 해줍니다.

키는 파일이 아닌 환경 변수로

export APITOKEN_API_KEY="sk-pool-•••"
opencode

# opencode.json references it as:
#   "apiKey": "{env:APITOKEN_API_KEY}"

관련 검색어

  • opencode api key not working
  • opencode auth error custom provider

자주 묻는 질문

opencode.json에 키를 지정했는데 왜 opencode가 API 키를 보내지 않나요?+
{env:NAME} 플레이스홀더는 시작 시점에 opencode 자신의 환경에서 해석됩니다. 그 셸이 변수를 export한 적이 없다면 키는 비어 있습니다.
키를 opencode.json에 직접 붙여넣어도 안전한가요?+
작동은 하지만 env 플레이스홀더가 더 좋은 습관입니다: 설정 파일은 백업과 저장소로 흘러 들어가고, 붙여넣은 키도 함께 흘러갑니다.
키와 URL 중 어느 쪽이 고장인지 어떻게 확인하나요?+
baseURL을 키와 함께 직접 curl 하세요. 401이면 키/엔드포인트 조합이 문제이고, 연결 오류면 URL이나 네트워크가 문제입니다.

잘못된 설정에 시간 낭비하지 마세요

apiToken.sale은 표준 Anthropic API를 제공합니다 — 같은 모델, 같은 SDK, 하나의 선불 잔액. 도구의 base URL만 지정하면 이 페이지의 설정이 적힌 그대로 작동합니다.