이제 Codex에 DeepSeek를 붙이기 위해 별도 프록시를 둘 필요는 없다. Codex가 사용하는 Responses API를 DeepSeek API가 직접 지원하기 때문이다. 다만 현재 연결되는 모델은 둘 중 하나뿐이며, 이 모델은 이미지를 볼 수 없다.
Codex에서 DeepSeek를 쓸 수 있나
가능하다. Codex는 OpenAI의 Responses API를 통해 모델과 통신하고, DeepSeek API도 이 프로토콜을 네이티브로 지원한다. 따라서 설정 파일에서 DeepSeek를 모델 제공자로 지정하면 Codex에서 사용할 수 있다. DeepSeek도 API 문서의 Agent Integrations → Codex 섹션에서 이 연동 방식을 직접 안내한다.
설정 방식은 이전과 달라졌다. Codex는 과거의 wire_api = "chat" 경로 대신 Responses API로 옮겨갔고, 한동안 DeepSeek를 연결하려면 LiteLLM이나 자체 Responses 구현을 가진 라우터, 직접 만든 브리지 같은 변환 계층이 필요했다. 지금도 이런 방식은 쓸 수 있지만, 더는 시작 조건이 아니다. 이는 DeepSeek 관련 MCP 도구를 Codex에 추가하는 것과는 별개의 제공자 설정이다.
설정은 Codex 환경 전반에 공통으로 적용된다. Codex CLI, ChatGPT 데스크톱 앱, VS Code용 Codex IDE 확장은 모두 동일한 ~/.codex 디렉터리를 읽는다. 클라이언트마다 따로 설정할 필요가 없다.
Codex에서 지원하는 DeepSeek 모델
현재는 deepseek-v4-flash만 된다. DeepSeek의 가격표에서 Responses API 지원 여부는 deepseek-v4-flash가 ✓, deepseek-v4-pro가 ✗로 표시된다. 각주에는 Pro 지원이 2026년 8월 초에 추가될 예정이라고 적혀 있다. 2026년 8월 3일 기준으로도 이 각주는 남아 있었고 Pro는 여전히 ✗였다.
설치 과정에서 작성되는 models.json 카탈로그에는 두 모델이 모두 들어간다. 따라서 설정에서 Pro를 선택하는 일 자체는 막히지 않지만, 실제 요청 시점에 상위 API에서 실패한다. CC Switch의 DeepSeek 프리셋도 소스 코드에서 같은 경고를 남긴다. DeepSeek가 연동을 열기 전에 Pro로 바꾸면 오류가 난다.
지금 더 강한 모델을 쓰고 싶다면 Anthropic 형식 엔드포인트를 이용하면 된다. Pro가 Codex 설정에는 없고 Claude Code 설정에는 등장하는 이유다. 두 모델은 가격과 동시성 한도 차이도 크므로, 선택은 의도적으로 하는 편이 좋다. 자세한 비교는 deepseek-v4-flash vs deepseek-v4-pro에서 확인할 수 있다.
방법 1: 공식 스크립트로 설정하기
DeepSeek는 전체 설정을 작성해 주는 설치 스크립트를 제공한다. 여러 제공자를 이미 직접 관리하고 있지 않다면 가장 빠른 방법이다. 먼저 Codex CLI 또는 ChatGPT 데스크톱 앱을 설치한 뒤 한 번 실행해 ~/.codex 디렉터리가 생성돼 있어야 한다. 모델 카탈로그가 요구하는 최소 버전은 Codex 클라이언트 0.144.0이다.
# macOS / Linux
bash <(curl -fsSL https://cdn.deepseek.com/api-docs/codex-deepseek-setup-en.sh)
# Windows, in PowerShell
irm https://cdn.deepseek.com/api-docs/codex-deepseek-setup-en.ps1 | iex
스크립트는 메뉴 방식이다. 1은 deepseek-v4-flash, 2는 deepseek-v4-pro, 3은 설치 전 설정 복원을 뜻한다. 선택할 것은 1이다. 옵션 2도 문법상 유효한 설정을 작성하지만, 해당 모델은 아직 Codex 요청을 처리할 수 없다. 첫 실행 때 API 키 입력을 요구하며, 키는 platform.deepseek.com에서 만들 수 있다.
기존 config.toml에는 무엇이 바뀌나
2026년 8월 3일, 일부러 충돌 요소를 넣은 임시 CODEX_HOME에서 공식 스크립트를 실행해 봤다. 테스트 설정에는 profile, 오래된 model_verbosity, model_reasoning_summary, MCP 서버, 신뢰된 프로젝트 항목을 넣었다. CODEX_HOME=/tmp/probe sh codex-deepseek-setup-en.sh로 재현한 뒤 1을 선택하면 된다. 스크립트는 네 가지 변경을 보고하면서 각각의 이유를 설명했다.
• Rewrote model: "gpt-5.6-sol" → "deepseek-v4-flash"
• Removed profile = "myprofile" ← a profile masks model / model_provider / model_catalog_json
• Removed model_verbosity = "high" ← a stale value may be outside what the model supports
• Removed model_reasoning_summary = "detailed" ← models.json declares default_reasoning_summary=none
[mcp_servers.playwright] 블록, [projects."..."]의 신뢰 수준, approval_policy는 그대로 유지됐다. 파일을 쓰기 전 원본은 ~/.codex/backup-deepseek/에 복사된다. 또한 models.json은 JSON으로, config.toml은 파싱 오류와 중복 키 여부로 검증한 뒤에야 변경을 확정했다. 다만 이는 한 대의 머신에서 한 번 실행한 결과다. 모든 설정 형태에서 동일하게 동작한다는 보증이 아니라, 백업과 복원 경로가 실제로 존재한다는 근거로 보는 편이 맞다.
방법 2: config.toml 직접 편집하기
설정을 버전 관리하고 싶거나 각 필드의 의미를 직접 파악해야 한다면 파일을 수동으로 편집하면 된다. 먼저 ~/.codex/models.json에 DeepSeek 문서에서 제공하는 모델 카탈로그를 만들고, ~/.codex/config.toml에 다음 내용을 추가한다.
model = "deepseek-v4-flash"
model_provider = "deepseek"
preferred_auth_method = "apikey"
forced_login_method = "api"
model_reasoning_effort = "high"
model_catalog_json = "~/.codex/models.json"
[model_providers.deepseek]
name = "deepseek"
base_url = "https://api.deepseek.com/"
wire_api = "responses"
experimental_bearer_token = "<your DeepSeek API Key>"
| 필드 | 역할 |
|---|---|
wire_api = "responses" | Chat Completions 대신 Responses API를 선택한다. 이 연동을 성립시키는 핵심 필드다. |
model_catalog_json | 컨텍스트 윈도우, 추론 단계, 도구 형식을 정의한 models.json을 가리킨다. 생략하면 Codex는 일반 메타데이터로 대체한다. |
preferred_auth_method, forced_login_method | ChatGPT 계정 로그인 대신 API 키로 인증한다. |
model_reasoning_effort | DeepSeek 카탈로그가 정의한 세 단계인 low, high, max 중 하나를 지정한다. |
experimental_bearer_token | 파일에 평문으로 저장되는 API 키다. |
방법 3: 제공자를 자주 바꾼다면 CC Switch
CC Switch는 Codex를 포함한 8개 코딩 도구의 제공자 설정을 관리하는 데스크톱 앱이다. 기본 DeepSeek 프리셋도 제공한다. 엔드포인트는 https://api.deepseek.com, 기본 모델은 deepseek-v4-flash이며, 모델 카탈로그에는 Flash와 Pro가 모두 들어간다. 편집기 대신 트레이 메뉴에서 수동 설정과 같은 필드를 작성하는 방식이다.
도입 전 알아둘 점은 두 가지다. Claude Code와 달리 Codex는 제공자를 바꾼 뒤 재시작해야 변경이 적용된다. 또한 등록한 모든 제공자의 자격 증명을 하나의 앱이 보관하고, 이를 라우팅하기 위한 로컬 서비스도 실행한다. API 키 하나를 파일 하나에 두는 방식과는 보안 관점이 다르다.
제대로 적용됐는지 확인하는 법
프로젝트 폴더에서 Codex CLI를 실행한 뒤 시작 배너를 확인하면 된다. model과 provider 줄이 적용 여부를 보여 준다. 2026년 8월 3일, codex-cli 0.146.0에서 테스트 설정으로 실행했을 때는 다음과 같이 표시됐다.
OpenAI Codex v0.146.0
model: deepseek-v4-flash
provider: deepseek
reasoning effort: high
잘못된 키를 넣었을 때의 오류도 구분하기 쉽다. 사용 중인 엔드포인트가 함께 출력되므로, 요청이 DeepSeek로 나가고 있는지 빠르게 확인할 수 있다.
ERROR: unexpected status 401 Unauthorized: Authentication Fails, Your api key: ****r000 is invalid,
url: https://api.deepseek.com/responses
Codex는 이 오류를 표시하기 전까지 다섯 번 재시도한다. 키를 오타 냈다면 몇 초간 조용한 시간이 생기는 이유다. macOS의 ChatGPT 데스크톱 앱에서는 모델 선택기에 모델명 대신 Custom이라고 표시된다. 로컬에서 설정한 모든 모델에 붙는 앱 측 레이블일 뿐이며, 실제로는 선택한 DeepSeek 모델을 사용한다. Codex 로그에 fallback model metadata 또는 Unknown model이 보인다면 models.json을 불러오지 못한 것이고, 카탈로그 경로가 잘못된 것이다.
Codex에서 DeepSeek를 쓸 때 달라지는 점
OpenAI 모델로 Codex를 실행할 때와 비교해 달라지는 동작은 네 가지다. 어느 것도 따로 해결해야 할 오류는 아니다.
이미지 입력은 지원하지 않는다. models.json의 DeepSeek 항목은 input_modalities: ["text"]로 선언돼 있다. 따라서 DeepSeek가 활성 모델인 동안에는 어느 Codex 클라이언트에서도 붙여넣은 스크린샷이나 이미지 첨부를 쓸 수 없다. 한 개발자도 2026년 8월 2일 Hacker News에서 같은 제약을 겪었고, 비전을 위한 두 번째 제공자를 유지하는 방식으로 우회했다.
DeepSeek V4에는 비전 기능이 없어서, Codex 구독으로 GPT 5.6 Luna를 쓰도록 OMP를 설정했다.
이 우회 방식은 이미지 입력을 받는 엔드포인트를 가리키는 두 번째 [model_providers.*] 블록을 추가하는 것이다. wire_api = "responses" 구조는 동일하므로, GPT-5.6를 제공하는 애그리게이터 엔드포인트도 같은 설정에 넣을 수 있고 model 줄 하나만 바꿔 전환할 수 있다.
기존 세션이 사라진 것처럼 보일 수 있다. Codex는 로그인 방식별로 세션 기록을 그룹화한다. ChatGPT 구독에서 서드파티 API 키로 전환하면 이전 그룹을 삭제하는 것이 아니라 숨긴다. 이전 설정을 복원하면 기존 세션은 다시 나타나고 DeepSeek 세션은 숨겨진다.
API 키가 설정 파일에 평문으로 들어간다. experimental_bearer_token에는 환경 변수 참조가 아니라 키 자체가 저장된다. 즉 ~/.codex/config.toml은 비밀 정보를 담은 파일이 된다. 해당 디렉터리를 동기화하거나 dotfiles 저장소에 커밋하기 전 반드시 확인할 만하다.
자신을 ChatGPT라고 부를 수 있다. 연동 설치 시 들어가는 models.json에는 Codex 자체의 하니스 프롬프트가 포함돼 있으며, 시작 문구는 "You are Codex, an agent based on GPT-5."다. 이 프롬프트는 실제 동작에 영향을 준다. 도구 프로토콜, 승인 규칙, 에이전트가 따르는 출력 형식을 정의하기 때문에, 일반 채팅창에서 같은 모델을 쓸 때와 행동이 달라진다. 정체성을 언급하는 문구 역시 모델의 계보 주장이 아니라 하니스에서 온 것이다.
비용은 얼마인가
deepseek-v4-flash의 가격은 2026년 8월 3일 DeepSeek 가격 페이지에서 확인한 기준으로, 캐시 미스 입력 100만 토큰당 $0.14, 출력 100만 토큰당 $0.28이다. 캐시 히트 입력은 100만 토큰당 $0.0028로, 캐시 미스보다 50배 저렴하다. 코딩 에이전트는 턴마다 점점 커지는 컨텍스트를 다시 보내므로, 긴 에이전트 세션 비용을 좌우하는 수치는 이 차이다.
| deepseek-v4-flash | deepseek-v4-pro | |
|---|---|---|
| Codex에서 사용 가능 | 예 | 아직 불가 |
| 버전 문자열 | DeepSeek-V4-Flash-0731 | DeepSeek-V4-Pro |
| 컨텍스트 / 최대 출력 | 1M / 384K | 1M / 384K |
| 입력, 캐시 히트 | $0.0028 | $0.003625 |
| 입력, 캐시 미스 | $0.14 | $0.435 |
| 출력 | $0.28 | $0.87 |
| 동시성 한도 | 2500 | 500 |
표에 담기지 않은 내용도 두 가지 있다. DeepSeek는 가격 페이지에서 피크·비피크 요금제를 도입할 예정이라고 밝힌다. 피크 시간에는 표기 요금의 2배가 적용되며, 시간대는 매일 베이징 시간(UTC+8) 09:00–12:00와 14:00–18:00다. 시작일은 추후 공지한다. 또 카탈로그에서는 1M 컨텍스트 윈도우의 실효 범위를 95%로 선언하며, 잘림 처리는 models.json에 설정된 정책을 따른다.
FAQ
ChatGPT 구독 없이도 Codex에서 DeepSeek를 쓸 수 있나
가능하다. preferred_auth_method = "apikey"와 forced_login_method = "api"를 설정하면 Codex는 DeepSeek 키로 인증하고 계정 로그인을 완전히 건너뛴다.
VS Code 확장과 데스크톱 앱을 각각 설정해야 하나
아니다. 세 Codex 클라이언트는 모두 같은 ~/.codex 설정을 읽는다. 전환 후 변경 사항을 반영하려면 데스크톱 클라이언트를 재시작해야 한다.
공식 모델로 다시 전환하려면 어떻게 하나
설치 스크립트를 다시 실행해 옵션 3을 고르면 된다. 설치 전 백업해 둔 config.toml을 복원한다. 직접 Codex를 설정했다면 DeepSeek 관련 필드와 [model_providers.deepseek] 블록을 지운 뒤 다시 로그인하면 된다.
지금 Codex에서 deepseek-v4-pro를 쓸 수 있나
2026년 8월 3일 기준으로는 안 된다. DeepSeek 가격 페이지에서 Responses API 지원은 여전히 ✗로 표시된다. 지원 목표 시점은 2026년 8월 초였으므로, 선택 가능한 설정을 믿기보다 해당 페이지를 다시 확인하는 편이 낫다.
어떤 설정 방법을 고를까
| 방법 | 이럴 때 선택 | 선택의 대가 |
|---|---|---|
| 공식 설치 스크립트 | 명령 하나로 설정을 끝내고 백업·복원 경로도 원할 때 | 읽어보지 않은 기존 설정 필드를 바꿀 수 있고, 키는 평문으로 저장된다. |
수동 config.toml | dotfiles를 버전 관리하거나 각 필드를 이해해야 할 때 | models.json을 직접 관리해야 하며, 카탈로그 경로가 틀리면 메타데이터가 조용히 저하된다. |
| CC Switch | DeepSeek, 공식 구독, 다른 제공자를 자주 오갈 때 | 하나의 앱이 모든 자격 증명을 보관하고 로컬 서비스를 실행하며, Codex는 전환할 때마다 재시작해야 한다. |
남은 변수는 Pro다. Flash는 저렴하고 빠르지만 텍스트 전용인 라인업의 한쪽이다. 많은 사람이 에이전트 루프에 원하는 모델은 아직 Codex가 요구하는 프로토콜을 말하지 못한다. 그 각주가 바뀌기 전까지 Codex에서 DeepSeek를 고른다는 것은 Flash를 의도적으로 선택한다는 뜻이다.
함께 읽기: Codex vs Claude Code · How to use GLM-5.2 in Claude Code