문제 해결 · Codex CLI

Codex stream error: unexpected status 401/404 해결 방법

Codex에서 스트림 중간의 HTTP 실패는 stream error: unexpected status로 출력됩니다. 여기서 401, 404, 429가 무엇을 뜻하는지, 그리고 curl로 재현해 고장 난 쪽을 찾는 방법.

표시되는 내용

stream error: unexpected status 401 Unauthorized

발생 원인

  • 401 — env_key 변수가 설정되지 않았거나 비어 있거나, 그 키가 프로필의 base_url에 속하지 않습니다.
  • 404 — base_url이 와이어 프로토콜에 맞지 않습니다: /v1 누락, /v1/v1 중복, 또는 Responses API를 서비스하지 않는 호스트.
  • 429 — 키의 분당 처리량이 소진되었습니다; 스트림이 시작 전에 거부됩니다.
  • 프록시나 네트워크 장비가 SSE 스트림을 응답 중간에 끊으면 상태 코드 대신 연결 끊김 형태로 나타납니다.

해결 방법

  • 프로필의 정확한 base_url에 /responses를 붙여 같은 키로 curl로 재현하세요 — 상태 코드가 어느 쪽이 고장인지 알려줍니다.
  • 401이면 키/엔드포인트 조합을 고치고, 404면 base_url을 문서화된 값으로 고치고, 429면 윈도우가 지나길 기다리며 병렬 실행을 줄이세요.
  • 상태 코드 없이 스트림 중간 끊김이 반복되면 VPN이나 프록시 없이 테스트하세요 — SSE는 간섭하는 미들박스의 첫 희생자입니다.

Codex 밖에서 재현하기

curl https://openai.api.apitoken.sale/v1/responses \
  -H "Authorization: Bearer $APITOKEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5.6-sol","input":"Reply with exactly: connected"}'

관련 검색어

  • codex stream error unexpected status
  • stream disconnected before completion

자주 묻는 질문

Codex의 stream error: unexpected status 401은 무슨 뜻인가요?+
엔드포인트가 스트림 시작 시점에 자격 증명을 거부했습니다. 프로필의 env_key 변수가 실행 중인 셸에 설정되어 있는지, 그 키가 프로필의 base_url에 속하는지 확인하세요.
호스트가 분명히 맞는데 왜 404인가요?+
경로 실수입니다: 이 게이트웨이에서는 base_url에 /v1이 포함되어야 하며 중복되어서는 안 됩니다. Responses 경로는 Codex가 스스로 붙입니다.
스트림이 상태 코드 없이 중간에 죽습니다 — API 문제인가요?+
보통 네트워크 경로입니다: SSE를 버퍼링하거나 종료시키는 프록시와 VPN. 엔드포인트를 탓하기 전에 깨끗한 연결에서 curl로 재현하세요.

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

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