CLI 에이전트

Responses API로 Codex에 외부 모델 연결하기

현재 Codex는 Responses 프로토콜만 지원합니다. 제공자와 환경 변수 설정, API 확인 방법, Chat Completions만 제공하는 게이트웨이에 대한 대안을 설명합니다.

검증일 2026-10-26적용 대상
Codex CLI 0.154.0

결론부터

현재 Codex의 wire_api는 "responses"만 지원합니다. "chat"은 제거되었으며 지정하면 시작 시 설정 오류가 발생합니다. KimiSeek는 /v1/responses를 제공하므로 아래 설정으로 바로 연결할 수 있습니다.

30초 결정 표

게이트웨이 지원 범위조치
/v1/responses 제공"responses" 사용
/v1/chat/completions만 제공Responses 호환 게이트웨이 또는 Responses를 제공하는 변환 계층 사용
모름아래 명령으로 경로와 응답 본문 확인

Codex가 기본으로 responses를 쓰는 이유

Codex는 /responses로 요청을 보내고 Responses의 도구 호출 및 스트리밍 이벤트를 처리합니다. Chat Completions는 요청과 이벤트 구조가 다르므로 wire_api 값만 바꿔서 현재 Codex에서 사용할 수 없습니다. 모델 기능은 업스트림과 게이트웨이 구현에도 달려 있으며, 연결 성공만으로 모든 도구 기능이 검증되는 것은 아닙니다.

사전 준비

  • Node.js 20 이상
  • Codex CLI: npm install -g @openai/codex
  • KimiSeek API Key(ks-로 시작), 콘솔에서 생성

Step 1 · 설정 파일 작성

설정 파일은 ~/.codex/config.toml에 있습니다. 없으면 새로 만듭니다:

TOML · ~/.codex/config.toml
model = "deepseek-v4-pro-0813"
model_provider = "kimiseek"

[model_providers.kimiseek]
name = "KimiSeek"
base_url = "https://api.kimiseek.app/v1"
env_key = "KIMISEEK_API_KEY"
wire_api = "responses"

자주 걸리는 세 가지:

  1. base_url에는 반드시 /v1이 들어가야 합니다. Codex는 base_url 뒤에 /responses를 그대로 붙입니다. /v1을 빼면 https://api.kimiseek.app/responses로 요청이 가서 404를 받습니다.
  2. env_key는 환경 변수 이름이지 key 자체가 아닙니다. 여기에는 변수 이름 KIMISEEK_API_KEY를 쓰고, 실제 값은 환경 변수에 넣습니다.
  3. model은 catalog에 실제로 존재하는 id여야 합니다. 틀리면 model not found가 나오고, 이미 종료된 모델도 같은 오류를 냅니다.

Step 2 · 환경 변수를 설정하고 실행

Shell
export KIMISEEK_API_KEY="ks-your-key"

codex

모델을 잠깐 바꾸고 싶다면 config.toml의 model을 고치거나 codex --model <id>로 덮어쓰면 됩니다.

Step 3 · key가 유효한지 확인

Shell
curl https://api.kimiseek.app/v1/models \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}"

응답에서 모델 목록이 보이면 key와 네트워크 모두 문제가 없습니다. 이 단계의 의미는 「인증 문제」와 「프로토콜 문제」를 분리하는 것입니다. 그러지 않으면 404를 받았을 때 key가 틀린 것인지 경로가 틀린 것인지 구분할 수 없습니다.

Step 4 · 30초 만에 responses 탐색

Shell · OpenAI Responses
curl https://api.kimiseek.app/v1/responses \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-pro-0813",
    "input": "Explain what a base URL is in one sentence.",
    "max_output_tokens": 256,
    "stream": false
  }'
  • HTTP 200과 output 배열이 있는 JSON → Responses 경로가 작동합니다. 다음으로 실제 작업과 도구 호출을 확인하세요.
  • HTTP 404 → base_url에 /v1이 있는지 확인한 뒤, 응답 본문에서 경로와 모델 중 무엇이 없는지 확인하세요. 상태 코드만으로 판단할 수 없습니다.
  • HTTP 401 → Step 3으로 돌아가 인증 정보를 확인하세요.

게이트웨이가 Chat Completions만 제공한다면

wire_api = "responses"를 유지하세요. /v1/responses를 제공하는 게이트웨이로 바꾸거나 호환 변환 계층을 추가해야 합니다. 제거된 "chat" 값으로 바꾸지 마세요.

흔한 오류

오류원인해결
unexpected status 401 Unauthorized: Missing bearerenv_key가 가리키는 환경 변수가 설정되지 않았거나 이름을 잘못 씀KIMISEEK_API_KEY가 현재 shell에서 보이는지 확인
unexpected status 404 Not Foundbase_url에 /v1이 빠졌거나 게이트웨이에 /v1/responses가 없음/v1과 오류 본문 확인. Responses가 없다면 호환 게이트웨이 또는 변환 계층 사용
stream disconnected before completion스트리밍 응답이 중간에 끊김: 로컬 프록시, 회사 게이트웨이, 타임아웃HTTP 프록시 설정을 확인하고 다른 네트워크에서 재시도
model not foundmodel에 별칭이 아닌 잘못된 이름을 썼거나 종료된 id를 사용catalog의 전체 id 사용, 예: deepseek-v4-pro-0813

프로토콜 계층 오류는 오류 대조표에서 더 볼 수 있습니다.

비용

Codex 사용량의 특징은 입력이 출력보다 훨씬 크다는 것입니다. 실행할 때마다 context를 다시 보내기 때문입니다. DeepSeek V4 Pro 가격은 peak/off-peak 두 구간, 백만 tokens당 CNY 기준입니다:

구간입력캐시 입력출력
off-peak¥4.5¥0.45¥13.5
peak¥9¥0.9¥27

peak와 off-peak의 차이는 정확히 두 배입니다. 대량 리팩터링 작업을 off-peak에 몰아서 돌리면 절반을 아낄 수 있습니다. 구체적인 모델과 실시간 가격은 가격 페이지를 기준으로 하며, 그곳은 모델 catalog 설정을 직접 읽습니다.

적용 버전과 검증

2026-10-26에 Codex CLI 0.154.0으로 설정을 확인했습니다. 프로토콜 지원은 공식 설정 문서를 확인하세요.

자주 묻는 질문

중계 서비스를 쓰면 Codex-Bridge 같은 브리지 도구가 여전히 필요한가요?

필요 없습니다. 브리지 도구의 존재 이유는 Responses 요청을 로컬에서 Chat Completions로 번역해 다시 보내는 것이고, 이는 chat completions만 구현한 게이트웨이를 상대하기 위한 것입니다. KimiSeek은 /v1/responses를 직접 구현했으므로 브리지 계층은 오히려 홉이 하나 더 늘고 오류 지점이 하나 더 생깁니다.

base_url에 왜 반드시 /v1이 들어가야 하나요?

Codex가 base_url에 라우트를 그대로 붙이기 때문입니다: base_url + "/responses". https://api.kimiseek.app라고 쓰면 https://api.kimiseek.app/responses로 요청이 가는데, 그곳은 API가 아니라 사이트 페이지입니다.

현재 Codex에서 wire_api = "chat"을 사용할 수 있나요?

아니요. 현재 버전은 시작 시 이 값을 거부합니다. responses를 사용하고, Chat Completions만 제공하는 업스트림에는 호환 게이트웨이나 변환 계층을 연결하세요.

같은 key를 Claude Code와 Codex에 동시에 설정할 수 있나요?

가능합니다. key는 계정 단위이고, 두 클라이언트는 서로 다른 프로토콜 경로로 같은 key를 호출할 뿐입니다. 설정 방법은 Claude Code 튜토리얼을 참고하세요.