2LAZZZY 작업 노트2026-10-02 기준
Claude→CLIProxyAPI→Codex OAuth→GPT

Claude에서 ChatGPT 구독의 GPT 쓰기

Claude Desktop과 Claude Code가 CLIProxyAPI를 거쳐 ChatGPT 계정(Codex OAuth)의 GPT로 답하게 하는 설정. 실제로 연결하며 막혔던 곳까지 정리했어요.

Claude를 GPT로 개조하는 게 아니에요. Claude가 지원하는 외부 inference gateway의 목적지를 CLIProxyAPI로 바꾸고, CLIProxyAPI가 ChatGPT의 Codex 로그인으로 GPT에 요청을 넘기는 구조예요.

OpenAI나 Anthropic이 제공하는 공식 통합이 아니라, CLIProxyAPI라는 커뮤니티 Gateway를 쓰는 구성이에요. 각 서비스 약관과 사용량 정책을 확인하고 본인 판단으로 쓰세요.

이 세 가지가 되면 성공이에요

  1. 1
    Codex 로그인Codex authentication successful
  2. 2
    Gateway 켜짐127.0.0.1:8317 LISTEN
  3. 3
    모델 목록GET /v1/models 에 gpt 모델이 보임

한눈에 보는 진행 순서

처음이라면 이 순서대로 하면 돼요. 각 단계의 명령어와 설정은 '자세히 보기'에 있어요.

  1. CLIProxyAPI 설치

    GitHub의 router-for-me/CLIProxyAPI예요. Mac은 Homebrew로 설치하고 서비스로 켜 둬요.

    CLIProxyAPI 저장소 (MIT 라이선스, 오른쪽 Releases에서 최신 버전 확인)
    CLIProxyAPI 저장소 (MIT 라이선스, 오른쪽 Releases에서 최신 버전 확인)
    자세히 보기 →
  2. 접속 키 만들고 설정 파일 고치기

    openssl로 랜덤 키를 만들어 access.api-keys에 넣고, host는 127.0.0.1, port는 8317로 둬요.

    자세히 보기 →
  3. ChatGPT 계정으로 Codex 로그인

    cliproxyapi --codex-login을 실행하면 브라우저가 열려요. 구독 중인 ChatGPT 계정으로 로그인하면 끝이에요.

    자세히 보기 →
  4. 다시 시작하고 연결 테스트

    brew services restart 뒤에 /v1/models에 gpt 모델이 보이면 Gateway 쪽은 준비 완료예요.

    자세히 보기 →
  5. Claude Desktop에 Gateway 연결

    개발자 모드를 켜고, 개발자 → 타사 추론 설정에서 연결을 Gateway로 바꿔 주소와 키를 넣어요. 화면은 아래 Claude Desktop 부분에 있어요.

    자세히 보기 →
  6. Claude Code도 쓰려면

    터미널에서 환경 변수 두 줄(ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN)만 넣고 claude를 실행해요.

    자세히 보기 →

전체 구조

Claude는 Anthropic 형식으로 요청하고, CLIProxyAPI가 그걸 Codex 형식으로 바꿔 GPT에 보내요.

  1. Claude Desktop / Claude Code실제로 쓰는 화면과 터미널
  2. CLIProxyAPI127.0.0.1:8317, 형식 변환
  3. Codex OAuthChatGPT 계정 로그인
  4. GPT 모델실제 답을 만드는 곳

Claude는 기본적으로 POST /v1/messages (Anthropic Messages API) 형식을 써요. Codex 쪽은 형식이 달라서, CLIProxyAPI가 요청은 Codex 형식으로, 응답은 다시 Anthropic 형식으로 바꿔 줘요.

구성하는 일
Claude Desktop실제로 쓰는 앱
Claude Code터미널 에이전트
CLIProxyAPIGateway, 프로토콜 변환
ChatGPT 계정Codex OAuth 인증
GPT 모델추론

인증이 두 개예요

가장 헷갈리는 부분이에요. Claude가 Gateway에 쓰는 키와, Gateway가 OpenAI에 쓰는 로그인은 전혀 다른 것이에요.

A. Claude → CLIProxyAPI: 직접 만든 랜덤 키

openssl rand -hex 32

OpenAI API 키가 아니에요. 로컬 Gateway의 비밀번호 같은 값이고, Claude가 Bearer 토큰으로 보내요.

B. CLIProxyAPI → OpenAI: Codex OAuth

ChatGPT 계정으로 Codex에 로그인한 토큰이에요. 이 경로는 API 키 과금이 아니라 그 ChatGPT 플랜에 포함된 Codex 사용량을 써요.

  1. ClaudeLOCAL_PROXY_KEY 로 접속
  2. CLIProxyAPICodex OAuth 토큰으로 접속
  3. OpenAIChatGPT 계정

macOS에 CLIProxyAPI 설치

  1. 설치
    brew install cliproxyapi
  2. 서비스로 실행
    brew services start cliproxyapi

Homebrew로 설치하면 설정 파일은 $(brew --prefix)/etc/cliproxyapi.conf 예요. Apple Silicon이면 보통 /opt/homebrew/etc/cliproxyapi.conf 입니다.

nano "$(brew --prefix)/etc/cliproxyapi.conf"

설정 파일 (v8 기준 핵심만)

127.0.0.1로 두면 이 Mac에서만 Gateway에 접속할 수 있어요.

yaml
config-version: 8
server:
  host: "127.0.0.1"
  port: 8317
access:
  api-keys:
    - "여기에-openssl로-만든-키"
oauth:
  auth-dir: "~/.cli-proxy-api"

처음 설정 파일에 들어 있는 your-api-key-1 같은 예제 키를 그대로 두면 'unsafe example API key configured; proxy API endpoints disabled until api-keys is updated'가 뜨고 API가 막혀요. 꼭 openssl rand -hex 32 로 만든 값으로 바꾸세요.

ChatGPT 계정으로 Codex 로그인

cliproxyapi --codex-login

버전에 따라 cliproxyapi -codex-login 일 수도 있어요. 브라우저가 열리면 쓰려는 ChatGPT 계정으로 로그인하세요. 끝나면 아래처럼 나와요.

출력
Waiting for Codex authentication callback...
Codex authentication successful
Saving credentials to ~/.cli-proxy-api/codex-....json

로그인 정보는 기본적으로 ~/.cli-proxy-api/ 아래에 저장돼요.

다시 시작하고 확인

  1. 다시 시작
    brew services restart cliproxyapi
  2. 서비스 상태
    brew services list | grep cliproxyapi
  3. 포트 확인
    lsof -nP -iTCP:8317 -sTCP:LISTEN

'address already in use'가 뜨면

출력
failed to start HTTP server:
listen tcp :8317: bind: address already in use

brew services로 이미 떠 있는데 터미널에서 cliproxyapi를 한 번 더 실행한 경우예요. 위 lsof로 cliproxyapi가 8317을 쓰고 있으면 따로 실행할 필요가 없어요.

GPT까지 연결됐는지 테스트

1. 모델 목록

curl -s http://127.0.0.1:8317/v1/models \
  -H "Authorization: Bearer YOUR_LOCAL_PROXY_KEY" \
  | jq -r '.data[].id'

제 환경에서는 gpt-5.5, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-6-sol 같은 모델이 나왔어요. 계정과 시점에 따라 달라요.

2. Claude가 쓰는 형식(Messages API)으로

curl http://127.0.0.1:8317/v1/messages \
  -H "Authorization: Bearer YOUR_LOCAL_PROXY_KEY" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"gpt-5.6-sol","max_tokens":100,"messages":[{"role":"user","content":"Reply only with OK"}]}'

정상 응답이 오면 Anthropic 형식 → CLIProxyAPI → Codex → GPT 까지 연결된 거예요.

Claude Desktop에 연결

설정의 '개발자 → 로컬 MCP 서버'가 아니에요. MCP와 inference gateway는 다른 기능이에요. 메뉴 이름은 한국어 화면 기준이고, 괄호 안은 영어 화면 이름이에요.

  1. 개발자 모드 켜기

    메뉴 막대의 도움말 → 문제 해결 → 개발자 모드 활성화… (Help → Troubleshooting → Enable Developer Mode). 앱이 다시 시작되고 메뉴 막대에 '개발자'가 생겨요.

    도움말 → 문제 해결 → 개발자 모드 활성화…
    도움말 → 문제 해결 → 개발자 모드 활성화…
  2. 타사 추론 설정 열기

    개발자 → 타사 추론 설정… (Developer → Configure Third-Party Inference). '로컬 MCP 서버'나 'MCP 구성'이 아니에요.

    개발자 → 타사 추론 설정…
    개발자 → 타사 추론 설정…
  3. 연결을 Gateway로 바꾸기

    창이 열리면 연결 칸이 Claude API(api.anthropic.com)로 되어 있어요. 눌러서 맨 위 Gateway(자체 게이트웨이에 연결)를 골라요.

    서드파티 추론 구성 창: 처음엔 Claude API
    서드파티 추론 구성 창: 처음엔 Claude API
    연결 → Gateway (자체 게이트웨이에 연결)
    연결 → Gateway (자체 게이트웨이에 연결)
  4. 주소와 키 넣고 적용

    Gateway 주소는 http://127.0.0.1:8317, 키는 access.api-keys에 넣은 그 값이에요 (OpenAI API 키 아님). 오른쪽 아래 '변경 사항 적용'을 누른 뒤 모델 목록에 GPT가 보이는지 확인해요.

Claude Desktop은 ANTHROPIC_BASE_URL 환경 변수를 쓰지 않고 이 Third-Party Inference 설정을 써요.

Claude Code에 연결

export ANTHROPIC_BASE_URL="http://127.0.0.1:8317"
export ANTHROPIC_AUTH_TOKEN="YOUR_LOCAL_PROXY_KEY"
claude

Claude Code는 환경 변수로 Gateway를 정하고, Desktop은 앱 안 설정으로 정해요. 그래서 Claude Code는 되는데 Desktop은 안 되는 일이 생겨요.

claude-fable-...-tpg 같은 이상한 모델명

정상이에요. CLIProxyAPI가 Claude 호환을 위해 모델 ID를 바꿔 보여 주는 거예요.

claude- 로 시작하지 않는 ID를 뒤집고 앞에 claude-fable-5-dd- 를 붙여요. gpt-5.6-sol 을 뒤집으면 los-6.5-tpg, 그래서 claude-fable-5-dd-los-6.5-tpg 가 돼요.

Claude에 보이는 ID실제 모델
claude-fable-5-dd-5.5-tpggpt-5.5
claude-fable-5-dd-anul-6.5-tpggpt-5.6-luna
claude-fable-5-dd-los-6.5-tpggpt-5.6-sol
claude-fable-5-dd-arret-6.5-tpggpt-5.6-terra

원래 이름으로 보이게 하기

공식 v8 예제 설정에서는 이 항목이 oauth → providers → claude → claude-code 아래에 있어요. 맨 위에 쓰면 적용되지 않을 수 있어요.

yaml
oauth:
  providers:
    claude:
      claude-code:
        disable-cloaking-model-list: true

저장한 뒤 brew services restart cliproxyapi 를 하고, Claude Desktop의 모델 목록이나 /v1/models 로 다시 확인하세요.

읽기 좋은 별칭을 직접 붙이기

yaml
oauth:
  auth-dir: "~/.cli-proxy-api"
  model-alias:
    codex:
      - name: "gpt-5.6-sol"
        alias: "gpt-sol"
        display-name: "GPT 5.6 Sol"

ChatGPT 구독과 OpenAI API는 달라요

OpenAI API
  1. sk-... API 키
  2. OpenAI API
  3. 쓴 만큼 API 요금
이 구성
  1. ChatGPT 로그인 (Codex OAuth)
  2. CLIProxyAPI
  3. ChatGPT 플랜의 Codex 사용량

OpenAI는 ChatGPT 계정으로 Codex에 로그인하면 그 플랜의 사용량이, API 키로 로그인하면 API 요금이 적용된다고 설명해요.

Fast 모드는 따로 봐야 해요

Codex 앱의 Fast 모드와, CLIProxyAPI가 요청에 service_tier: priority 를 넣는 기능은 다른 것이에요. Claude Desktop에는 Codex의 /fast 버튼이 없어서, 쓰려면 Gateway 쪽 설정으로 넣어야 해요.

yaml
payload:
  override:
    - models:
        - name: "gpt-5.5-fast"
          protocol: "codex"
      params:
        service_tier: priority

자주 나는 오류

증상원인해결
unsafe example API key configured예제 키를 그대로 씀openssl rand -hex 32 로 바꾸기
bind: address already in use8317에 이미 떠 있음lsof 로 확인, 중복 실행 안 하기
/v1/models 가 401Bearer 키가 설정과 다름access.api-keys 값 확인
GPT 모델이 안 보임Codex 로그인 문제--codex-login 다시
claude-fable... 이름모델 ID 변환disable-cloaking-model-list: true
설정에 inference 메뉴가 없음MCP 화면을 보고 있음도움말 → 문제 해결 → 개발자 모드 활성화
Code는 되는데 Desktop은 안 됨Gateway 설정 방식이 다름개발자 → 타사 추론 설정에서 Gateway
서비스가 stopped설정 오류나 종료터미널에서 직접 실행해 로그 보기

보안: 이것만은 지키기

출처

설정 항목은 CLIProxyAPI 공식 예제 설정(v8)과 맞춰 봤어요. 오류 메시지와 모델 목록은 실제로 연결하면서 본 것이고, 버전과 계정에 따라 다를 수 있어요.

2LAZZZY / 2026-10-02 기준. 이 페이지에는 실제 키나 로그인 정보가 없어요. 체크 표시는 이 기기에만 저장돼요.