튜토리얼 · 약 17분

OpenAI Codex CLI 2026: npm·OpenAI API·Docker Hub를 Clash·Mihomo로 분할
@openai/codex · DOMAIN-SUFFIX · Rule Provider · 샌드박스 이미지

2025년부터 2026년까지 터미널에 붙는 OpenAI Codex CLI는 단순한 채팅 클라이언트가 아니라, npm으로 배포되는 @openai/codex 패키지·브라우저 기반 OpenAI 계정 인증·장시간 유지되는 OpenAI API 세션·선택적으로 끼우는 MCP 도구·때로는 Docker Hub에서 내려받는 샌드박스 이미지까지 한 줄의 개발자 경험으로 묶입니다. 브라우저만 프록시를 타고 터미널은 직행이면 «로그인은 됐는데 CLI만 멈춘다»는 상태가 되기 쉬우므로, 본문은 Clash 분할·MihomoDOMAIN-SUFFIX·Rule Provider로 경로를 표준화하고, 기업 VPN이나 로컬 Docker Desktop과 겹칠 때의 라우팅 주의점까지 짚습니다. 범용 ChatGPT·OpenAI 글·MCP·npm 글과 겹치는 축은 링크로 연결하고, 여기서는 Codex CLI에 특화된 설치·에이전트·이미지 풀 시나리오에 초점을 둡니다.

Codex CLI · npm registry · OpenAI API · Docker Hub · Clash · Mihomo · 2026

1 Codex CLI가 «한 번에 안 깔린다»고 느껴질 때의 실체

터미널에서 OpenAI Codex CLI를 쓰려면 보통 npm install -g @openai/codex 같은 흐름으로 npm registry에 붙습니다. 이어지는 codex 실행은 브라우저 창을 열어 OpenAI 계정으로 인증하고, 본격적인 작업 중에는 OpenAI API 엔드포인트로 장시간 요청을 보냅니다. 팀 설정에 따라 샌드박스나 격리 실행을 위해 Docker Hub·레지스트리 미러에서 이미지 레이어를 받아야 할 수도 있고, 확장 워크플로에서는 MCP 서버를 npx로 끌어오며 다시 npm registry·GitHub 축이 섞입니다. 즉 실패 메시지 한 줄 뒤에는 서로 다른 FQDN이 줄줄이 서 있고, Clash·Mihomo에서는 이를 하나의 «AI 앱»이 아니라 개발자 네트워크 표로 다루는 편이 재현성이 높습니다.

이미 ChatGPT·OpenAI 도메인 분할을 쓰고 있다면, Codex CLI는 그 상위집합에 가깝습니다. 다만 터미널 프로세스는 IDE 확장과 다른 환경 변수·루프백 정책을 타는 경우가 많아, 브라우저 규칙만 맞춰 둔 상태에서 CLI만 빈 화면에 멈추는 일이 잦습니다. 아래는 «설치 → 첫 로그인 → API 장세션 → (선택) MCP·이미지» 순으로 표를 확장하는 방법입니다.

호스트 이름은 제품 업데이트로 바뀔 수 있습니다. 아래 목록은 출발점이며, 실패 직후 Connections 로그의 SNI를 한 번 확인하는 것이 가장 정확합니다.

2 @openai/codex와 npm registry·GitHub 객체

공개 배포 채널이 npm이라면 1차 축은 registry.npmjs.org와 문서·웹용 npmjs.com입니다. tarball 메타데이터 조회와 실제 바이트 다운로드가 같은 호스트에 있지 않거나, 의존 패키지가 GitHub 릴리스 자산을 끌어오면 objects.githubusercontent.com·codeload.github.com이 추가됩니다. npm이 사내 미러를 쓰는 경우에는 그 미러 FQDN을 별도 DOMAIN-SUFFIX 블록으로 두어야 하며, 글로벌 기본값만 복사하면 팀원마다 설치 경로가 갈라집니다.

Clash 분할에서는 PROXY-DEV-CODEX 같은 전용 proxy-groups 이름을 하나 정해 두고, npm registry 트래픽을 그 그룹으로 보내는지·아니면 지역망에서 더 빠른 DIRECT를 유지할지 팀 합의로 고정하세요. 속도만 보고 임시로 바꾼 한 줄이 몇 달 뒤에도 남아 있으면, 신규 입사자는 «왜 내 터미널만 @openai/codex가 안 깔리지?»라고만 느낍니다. 표는 Rule Provider로 Git에 올려 버전 관리하는 편이 운영에 유리합니다. 패키지 스코프가 바뀌거나 프라이빗 레지스트리를 쓰면 MCP·npm 글의 GitHub 객체 축 설명을 함께 참고하세요.

버전 고정 팀 표준 Node·npm 버전과 codex 버전을 문서화해 두면, 네트워크 이슈와 런타임 이슈를 구분하기 쉬워집니다.

3 첫 로그인과 OpenAI API·플랫폼 호스트

브라우저 기반 OAuth나 디바이스 코드 흐름이 열리면 auth.openai.com·platform.openai.com·openai.com 계열이 한꺼번에 등장할 수 있습니다. 웹 ChatGPT와 겹치는 호스트도 있어, 이미 정리해 둔 ChatGPT·OpenAI 규칙 블록Codex CLI 전용 그룹과 합치거나 동일 노드로내도 됩니다. 본격 실행 후에는 api.openai.com을 비롯한 OpenAI API 엔드포인트가 장시간 유지되는데, 스트리밍 응답은 중간 노드 전환이 잦으면 끊기기 쉬우니 세션 동안에는 동일 프록시 그룹을 유지하는 편이 안전합니다.

Mihomo Connections에서 매칭된 규칙 이름을 스냅샷으로 남기면, «브라우저 로그인은 됐는데 API만 다른 노드로 새었다» 같은 순서 버그를 빠르게 찾을 수 있습니다. 거대한 GEOSITE 묶음이 openai.com을 먼저 잡아먹고 있다면, Codex CLI용 좁은 규칙을 그보다 위에 두었는지 README에 적어 두세요. 규칙 충돌은 한 번 정리하지 않으면 터미널과 GUI가 서로 다른 출구를 쓰는 상태로 고착됩니다.

4 선택 MCP·도구 체인이 npm·GitHub를 다시 부를 때

Codex 계열 워크플로에서 MCP 서버를 붙이면, 터미널 에이전트가 npx로 패키지를 받거나 GitHub raw·릴리스에서 스크립트를 가져오는 경로가 다시 열립니다. 이 축은 본문이 길어지므로 호스트 표는 MCP·npm·GitHub 분할 글을 기준으로 두고, 여기서는 «Codex CLI 프로파일에 그 표를 include할지, 별도 Rule Provider로 분리할지»만 결정하면 됩니다. 분리하면 감사 로그에서 «에이전트 코어」와 «도구 확장」 트래픽을 나눠 볼 수 있고, 합치면 YAML 중복이 줄어듭니다.

IDE 쪽 프록시와 터미널이 갈라지는 패턴은 Cursor·Clash 글에서 다룬 것과 동일합니다. 필요하면 TUN 모드로 시스템 전체를 한 엔진에 모으는 선택지도 있습니다.

5 샌드박스 이미지와 Docker Hub·레지스트리 미러

격리 실행이나 샌드박스가 컨테이너를 쓰면 Docker Hub 본류인 registry-1.docker.io·인증용 auth.docker.io·허브 웹 hub.docker.com이 등장합니다. CDN 구성에 따라 production.cloudflare.docker.com 같은 호스트가 섞일 수 있으니, docker pull 실패 시 로그에 찍힌 FQDN을 그대로 DOMAIN-SUFFIX에 추가하는 방식이 가장 덜 위험합니다. 조직에서 사내 레지스트리 미러를 강제한다면 그 미러 도메인을 별도 블록으로 두고, 미러는 DIRECT·업스트림만 PROXY 같은 식으로 나눌 수도 있습니다.

로컬에 Docker Desktop이 있고 호스트 OS에서 Clash TUN을 켠 상태라면, Linux VM 내부의 dockerd가 어떤 DNS·어떤 기본 게이트웨이를 쓰는지 먼저 그려 보세요. 브리지 네트워크에 붙은 컨테이너가 호스트 프록시를 모르면, 호스트 터미널에서는 codex가 되는데 컨테이너 안 샌드박스만 타임아웃 나는 패턴이 생깁니다. 가상화 스택별로는 Hyper-V·NATWSL2 글의 게이트웨이 정렬 아이디어를 참고하면 좋습니다.

6 복사용 DOMAIN-SUFFIX 스니펫 (그룹명은 맞춤)

아래는 개념 예시입니다. PROXY-DEV-CODEX는 본인의 proxy-groups 이름으로 바꾸고, 상위 규칙과 충돌하지 않게 순서를 조정하세요. OpenAI 호스트 묶음은 팀에 맞게 추가·삭제합니다.

rules excerpt (adjust group names)
# npm: global install @openai/codex
- DOMAIN-SUFFIX,npmjs.com,PROXY-DEV-CODEX
- DOMAIN-SUFFIX,npmjs.org,PROXY-DEV-CODEX
- DOMAIN-SUFFIX,registry.npmjs.org,PROXY-DEV-CODEX

# OpenAI: auth, platform, API (merge with your existing OpenAI block if any)
- DOMAIN-SUFFIX,openai.com,PROXY-DEV-CODEX
- DOMAIN-SUFFIX,auth.openai.com,PROXY-DEV-CODEX
- DOMAIN-SUFFIX,platform.openai.com,PROXY-DEV-CODEX
- DOMAIN-SUFFIX,api.openai.com,PROXY-DEV-CODEX

# Optional: ChatGPT web overlap (if your login flow hits these)
# - DOMAIN-SUFFIX,chatgpt.com,PROXY-DEV-CODEX

# Docker Hub / registry (sandbox image pulls)
- DOMAIN-SUFFIX,docker.io,PROXY-DEV-CODEX
- DOMAIN-SUFFIX,registry-1.docker.io,PROXY-DEV-CODEX
- DOMAIN-SUFFIX,auth.docker.io,PROXY-DEV-CODEX
- DOMAIN-SUFFIX,hub.docker.com,PROXY-DEV-CODEX
# - DOMAIN-SUFFIX,production.cloudflare.docker.com,PROXY-DEV-CODEX

# If MCP pulls GitHub objects, add the GitHub suffix block from your MCP profile.
# Prefer FQDNs from docker/npm/OpenAI logs over wild guesses.

노드 품질 이슈가 의심되면 url-test·fallback 구성을 같은 그룹에 얹어 두면 CLI 장세션에도 도움이 됩니다.

7 Rule Provider로 codex-dev.txt를 버전 관리하기

YAML 본문이 길어지면 실수로 규칙 순서를 깨기 쉽습니다. 사내 Git에 codex-dev.txt 같은 classical 목록을 두고 Rule Provider로 끌어오면, 긴급 패치는 태그·브랜치로 분리하고 클라이언트 구독 주기와 맞출 수 있습니다. 팀 베이스 위에 개인만 덧붙이고 싶다면 mixin·구독 덮어쓰기로 로컬 오버레이를 얹는 방법도 있습니다.

공급 URL 신뢰 외부에서 호스팅하는 Rule Provider가 변조되면 트래픽이 의도치 않은 노드로 향할 수 있습니다. 가능하면 자체 호스팅·서명·짧은 TTL을 병행하세요.

8 기업 VPN과 로컬 Docker·게이트웨이 공존

회사망에서 기업 VPN이 전 트래픽을 터널로 빨아들이면, 개인 Clash의 split tunnel 설정과 충돌해 OpenAI API만 막히거나 반대로 레지스트리만 느려지는 일이 생깁니다. Windows 기업 VPN·분할 터널 글의 라우트 표를 먼저 확인하고, 어떤 대역이 VPN 쪽으로 강제되는지 파악한 뒤 Codex CLI용 FQDN을 같은 표에 합치세요. «보안 정책상 우회」가 아니라, 허용된 경로 안에서 어떤 인터페이스를 쓸지 정리하는 작업입니다.

Docker 쪽은 호스트 Mihomo 리스닝 포트를 컨테이너에 전달할지, 아니면 회사 프록시 환경 변수만 주입할지 선택이 갈립니다. 한 가지 원칙은, 샌드박스가 사용하는 DNS가 회사 내부 리졸버를 가리키면서 외부 레지스트리 이름을 잘못 해석하지 않는지 확인하는 것입니다. 내부 DNS가 가짜 NXDOMAIN을 돌려주면 Docker Hub 풀이 조용히 실패합니다.

9 DNS·FakeIP·TUN으로 터미널과 브라우저를 한 엔진에

규칙이 정확해도 DNS가 엉키면 DOMAIN-SUFFIX 매칭 전에 끊깁니다. Meta·DoH·FakeIP 가이드에 맞춰 Clash DNS·OS 리졸버·TUN을 정렬하세요. 터미널만 시스템 프록시를 무시한다면 UWP·루프백이 아니더라도, 셸 시작 스크립트에 HTTP_PROXY를 넣는 방식과 TUN 방식 중 하나를 팀 표준으로 고정하는 편이 재현성에 유리합니다.

10 트러블슈팅 체크리스트

  • npm만 ETIMEDOUT: registry.npmjs.org와 tarball이 실제로 어떤 호스트로 갔는지 로그를 비교합니다.
  • 로그인 브라우저는 되는데 CLI 세션만 끊김: api.openai.com이 다른 규칙·다른 노드로 매칭되는지 확인합니다.
  • docker pull만 실패: auth.docker.io·CDN 접미사가 빠졌는지, 회사 방화벽이 레지스트리 TLS를 검사하는지 봅니다.
  • MCP 추가 후에만 느려짐: MCP 글의 GitHub 객체 호스트를 빠짐없이 넣었는지 확인합니다.
  • 간헐적 403·401: 프록시 출구 IP가 OpenAI 측 위험도 평가에 걸렸을 수 있으니, 정책 허용 범위 내에서 노드 지역을 바꿔 재현합니다.
로그 스냅샷 실패 직전 30~60초의 FQDN·매칭 규칙 이름을 텍스트로 남기면 다음 Rule Provider 패치가 빨라집니다.

11 약관·보안·망 정책

본문은 합법적인 개발 환경에서 Clash 분할을 정리하는 방법을 설명합니다. 조직의 보안·데이터 반출·API 키 관리 정책은 그대로 적용되며, 통제된 네트워크를 우회하라는 뜻이 아닙니다. API 키·세션 토큰은 저장소에 넣지 말고 비밀 관리 도구에 두세요. 클라이언트 소스는 공개 저장소에서 확인할 수 있으나, 설치 패키지사이트 다운로드 페이지를 우선하는 편이 출처 관리에 유리합니다.

12 정리

OpenAI Codex CLI@openai/codex 설치·OpenAI API 장세션·선택 MCP·때로는 Docker Hub 이미지 풀까지 한 줄의 터미널 경험으로 묶입니다. 증상을 «AI가 불안정하다»로만 접근하기보다, Connections 로그의 FQDN을 기준으로 DOMAIN-SUFFIX·Rule Provider 표를 만들고 직접 연결프록시를 데이터로 고르면 재현 속도가 빨라집니다. 기업 VPN·로컬 Docker와 겹칠 때는 라우트·DNS를 먼저 그린 뒤 규칙을 얹으세요.

범용 OpenAI·npm·MCP 글과 역할을 나누면, 팀 온보딩 문서에도 같은 링크 세트를 붙여 반복 설명을 줄일 수 있습니다. GUI에서 Rule 편집기와 로그가 잘 보이는 Clash 클라이언트를 고르면 일상 패치 부담도 줄어듭니다.

→ Clash를 무료로 내려받아 Codex CLI·npm·OpenAI API·Docker 경로를 한 분할 정책으로 맞춰 보세요

태그: OpenAI Codex CLI @openai/codex npm registry OpenAI API Docker Hub Clash 분할 Rule Provider Mihomo 2026
OpenAI Codex CLI 개발자를 위한 Clash 멀티플랫폼 클라이언트 로고

Clash Verge Rev

터미널 에이전트용 Rule Provider·Mihomo·TUN

npm·OpenAI·Docker Hub 접미사를 한 그룹으로 묶어 Codex CLI 설치부터 샌드박스 풀까지 같은 출구를 쓰게 맞추기 좋습니다. Windows·macOS·Linux.

Codex CLI DOMAIN-SUFFIX Mihomo Docker Hub DNS

관련 읽을거리