Codex with ChatGPT 소개
Codex with ChatGPT가 지목하는 문제는 코딩 에이전트의 사용량이 엉뚱한 곳에서 소진된다는 것입니다. 파일을 고치고 테스트를 실행하는 데 드는 몫과 별개로, 무엇을 어떻게 고칠지 계획을 세우고 끝난 변경을 다시 검토하는 데도 같은 사용량이 들어갑니다. 계획과 검토는 도구를 거의 쓰지 않고 읽고 판단하기만 하는 작업인데도 그렇습니다. 한편 웹 브라우저에서 쓰는 대화형 모델 구독은 값을 이미 치렀는데도 사용량이 남는 경우가 많습니다. 프로젝트는 이 어긋남을 "ChatGPT Plus/Pro의 웹 사용량은 놀고 있는데 코딩 에이전트는 계획과 리뷰에 부족한 API와 Codex 토큰을 태운다" 라고 설명하면서, 계획은 남는 구독 쪽에서 세우고 실행만 코딩 하네스(Harness)에 맡기는 방향을 제안합니다.
이번에 소개할 Codex with ChatGPT는 그 발상을 실제로 구현한 프로젝트입니다. 웹 브라우저의 ChatGPT를 Codex 작업 세션의 설계와 검토 담당으로 두고, 파일을 고치고 명령을 실행하는 권한은 Codex가 그대로 쥐고 있게 합니다. 핵심은 저장소를 통째로 올리지 않는다는 점입니다. ChatGPT는 OAuth로 보호된 읽기 전용 MCP(Model Context Protocol) 연결을 통해 그때그때 필요한 줄만 직접 읽어 갑니다. 별도의 API 키를 발급받거나 역방향 프록시를 세우는 우회 없이, 공식 웹 인터페이스와 로컬에서 뜨는 다리 하나로 연결하는 구조입니다.
프로젝트를 만든 쪽은 이것이 OpenAI와 무관한 비공식 커뮤니티 프로젝트라는 점을 저장소에 분명히 적어 두었습니다. 구현은 TypeScript로 되어 있고 Node.js 20 이상과 git이 필요하며, 공개 주소를 만드는 데는 cloudflared를 씁니다. 저장소가 c2c라는 명령줄 도구와 Codex용 스킬을 함께 제공하기 때문에, 사용자가 MCP나 OAuth, 터널 같은 낱말을 몰라도 설치가 진행되도록 설계되어 있습니다.
Codex with ChatGPT와 기존 방식 비교
웹 모델에게 코드를 보여 주는 방법은 원래도 있었습니다. 가장 흔한 방식은 코드를 복사해 대화창에 붙여 넣는 것입니다. 이 방법은 준비가 필요 없지만 붙여 넣은 시점의 사본이라 이후 변경을 반영하지 못하고, 대화 길이가 곧 비용이 됩니다. 저장소를 통째로 업로드하는 방식은 최신 상태를 담을 수 있는 대신 비공개 코드를 외부에 올린다는 부담이 있습니다.
세 방식이 각각 무엇을 주고받는지는 다음과 같습니다:
| 방식 | 모델이 보는 것 | 최신 상태 반영 | 실행 권한 |
|---|---|---|---|
| 대화창에 코드 붙여 넣기 | 붙여 넣은 사본 | 안 됨 | 없음 |
| 저장소 업로드 | 업로드한 전체 스냅샷 | 다시 올려야 함 | 없음 |
| Codex with ChatGPT | 필요한 순간에 필요한 줄만 | 항상 현재 작업 공간 | 로컬 하네스가 보유 |
같은 계열의 접근으로는 DevSpace가 있습니다. ChatGPT를 로컬 코드에 연결하는 자체 호스팅 MCP 서버라는 점이 같고, Codex with ChatGPT는 여기서 한 걸음 더 나아가 실행하는 하네스와의 왕복 프로토콜까지 정해 둔 것이 차이입니다. 실행 자체를 다른 에이전트에게 넘기는 반대 방향의 조합은 Codex Plugin for Claude Code에서 이미 다룬 적이 있습니다.
Codex with ChatGPT는 누구에게 맞는가
웹 ChatGPT 구독을 이미 쓰고 있고 Codex의 사용량이 계획과 리뷰 단계에서 빠르게 소진되는 개인 개발자에게 가장 잘 맞습니다. 남는 쪽으로 판단 작업을 옮기는 것이 이 프로젝트의 전부이므로, 그 전제가 성립하지 않으면 도입할 이유도 함께 사라집니다.
전제가 성립하는지는 ChatGPT 요금제표와 Codex 요금제 문서를 겹쳐 보면 확인됩니다:
| 사용처 | 현재 표기 | 계량 방식 |
|---|---|---|
| 일반 텍스트 대화 | 무제한(남용 방지 가드레일 적용) | Free부터 Pro까지 같음 |
| Codex | Plus 기준 GPT-5.6 Sol 로컬 메시지 10~100개 | 로컬 메시지와 클라우드 작업이 5시간 창 공유, 주간 한도 별도 |
| ChatGPT Work, ChatGPT for Excel | Codex와 같음 | Codex와 같은 가격, 크레딧, 한도 |
한쪽은 사실상 계량하지 않고 다른 쪽은 창 단위로 계량합니다. 이 차이가 프로젝트가 서 있는 자리입니다.
Work 모드가 Codex와 같은 한도를 쓴다는 조건이 이 방식의 성립 범위를 정합니다. 아껴지는 것은 일반 Chat 대화뿐이고, 같은 설계와 검토를 Work 대화에서 시키면 Codex 한도를 그대로 쓰게 됩니다. 저장소의 Codex 스킬이 C2C 대화를 반드시 Chat 대화로 만들고 Work 대화에서는 진행하지 않도록 정해 둔 것도 이 조건 때문입니다. 웹 쪽을 Work로 바꿔 달라는 2026년 9월 2일 이슈에 저자는 Work를 쓸 것이면 Codex 안에서 모델을 직접 쓰는 것과 다르지 않다고 답했습니다. 대가로 Chat 대화는 추론 강도를 최고 단계까지 올릴 수 없습니다.
무제한이라는 표기가 남용 방지 가드레일을 전제로 한다는 점도 함께 봐야 합니다. 이 방식은 Codex가 ChatGPT 웹을 자동으로 조작해 대화를 반복하는 구조이기 때문입니다. 저자는 계정 제한을 걱정하는 이슈에 아직 그런 사례를 받은 적이 없다고 답하면서, 스킬에 수동 모드를 요청하면 ChatGPT 조작을 사람이 직접 하는 방식으로 쓸 수 있다고 안내했습니다. 사용량 회피라는 지적에는 두 제품 모두 각자의 한도 안에서 그대로 쓰이며 쿠키나 세션을 빼내거나 요청을 대리하지 않는다고 밝혔습니다.
반대로 외부로 나가는 연결 자체를 통제해야 하는 조직에는 Codex with ChatGPT가 적절한 선택지가 아닙니다. 로컬에서 뜨는 다리를 Cloudflare 터널로 외부에 노출하고 브라우저의 ChatGPT가 그 주소로 접속하는 구조라서, 코드 본문이 사내망을 벗어나 모델 쪽으로 전달되는 경로가 실제로 생기기 때문입니다. 저장소도 이 점을 숨기지 않고 접근 통제를 OAuth와 짝 코드(Pairing Code)로 설계했지만, 통제의 방식이지 경로를 없애는 것은 아닙니다. 그리고 현재 공개된 버전은 V1(저장소 태그 기준 v0.1.1)이고 클라이언트 등록 정보와 토큰 해시를 운영체제 키체인이 아니라 파일로 보관한다는 한계를 저장소가 직접 밝히고 있으므로, 팀 표준으로 삼기 전에 이 부분을 먼저 확인하시기 바랍니다.
Codex with ChatGPT의 두 갈래 통로
Codex with ChatGPT는 주고받는 것을 두 갈래로 나누도록 설계되어 있습니다. 하나는 제어 통로(Control Plane) 이고 다른 하나는 데이터 통로(Data Plane) 입니다.
제어 통로에서 Codex와 ChatGPT가 주고받는 것은 [C2C]로 시작하는 짧은 상태 메시지뿐입니다. 변경 내역(diff)이나 실행 로그, 파일 본문은 이 통로로 붙여 넣지 않습니다. 저장소는 이 메시지를 1KB 미만으로 잡고 있고, 상태는 새 작업 알림에서 시작해 설계 전달, 실행 결과 보고, 검토를 거쳐 작업 종료로 끝납니다. 검토가 막히면 사유를 담은 중단 상태로, 연결이나 절차가 깨지면 오류 상태로 끊기며, 검토 결과에 따라 다시 설계 단계로 돌아가는 반복도 같은 통로에서 일어납니다.
이 메시지를 실제로 나르는 것은 사람이 아니라 Codex입니다. Codex가 내장 브라우저로 ChatGPT 대화창을 직접 열어 상태 메시지를 입력하고 답을 읽어 옵니다. 아키텍처 문서는 이 방식을 컴퓨터 사용(Computer Use)이라고 부르지만, 실제로 배포된 스킬은 화면을 찍어 클릭하는 방식을 금지하고 내장 브라우저의 문서 객체 조작만 쓰도록 정해 두었습니다. Codex가 도중에 재시작되면 로컬 체크포인트에서 이어 가고, 원래 대화가 사라졌으면 인계 메시지 하나로 새 대화에 넘깁니다. 이때도 로그를 붙여 넣거나 짝을 다시 맺지 않습니다.
데이터 통로는 ChatGPT가 필요한 것을 직접 가져가는 쪽입니다. 여기에 열려 있는 도구는 아홉 개이며, 저장소의 src/mcp/server.ts에 등록된 이름 그대로 workspace_info, list_directory, read_file, search_workspace, git_status, git_diff, test_status, execution_summary, execution_output 입니다. 전부 읽기 전용입니다. 이 가운데 execution_output만 성격이 조금 다릅니다. Codex가 테스트나 빌드 로그를 지정했을 때만 열리고, 로컬 살균기가 토큰과 홈 경로를 지우고 개인 키 블록은 통째로 거부한 뒤에야 본문을 넘깁니다. 걸러진 항목은 목록에 이름만 남습니다.
이 구성에서 나오는 실질적인 효과가 하나 있습니다. Codex가 실행을 마치고 결과를 보고하면, ChatGPT는 그 보고를 믿는 대신 git_diff와 테스트 기록을 직접 읽어 확인합니다. "테스트가 전부 통과했습니다" 라는 말을 그대로 받아들이지 않는 검토가 가능해지는 것입니다.
Codex with ChatGPT의 보안 설계
읽기 전용이라는 성격은 권한을 잠그는 방식이 아니라 도구를 아예 만들지 않는 방식으로 구현되어 있습니다. 파일 쓰기와 삭제, 셸 실행, 커밋, 패키지 설치에 해당하는 도구가 서버에 존재하지 않기 때문에, 프롬프트 인젝션(Prompt Injection)이나 권한 범위 설정 실수로도 그 동작을 끌어낼 수 없다는 것이 저장소의 설명입니다.
경계와 방어 수단은 docs/security.md에 표로 정리되어 있으며, 주요 항목은 다음과 같습니다:
| 위협 | 대응 |
|---|---|
| MCP 주소 유출 | 주소만으로는 무의미. 모든 요청에 유효한 토큰 필요, 없으면 401, 다른 작업 공간이면 403 |
| 짝 코드 무차별 대입 | 31자 알파벳에서 뽑은 8자리, 5분 만료, 5회 시도 제한, IP당 분당 10회, 1회용 |
| 인가 코드 가로채기 | PKCE S256 필수(plain 거부), 인가 코드는 1회용에 5분 만료 |
| 토큰 탈취 | 토큰은 SHA-256 해시로만 저장, 접근 토큰 1시간, 갱신 토큰은 매번 회전 |
| 작업 공간 이탈 | 실제 경로(realpath) 정규화 후 포함 관계 검사, 심볼릭 링크와 상위 경로 이탈 차단 |
| 민감 파일 노출 | .env*, 키, SSH, 클라우드 자격 증명을 기본 거부(.env.example은 허용), .c2cignore로 규칙 추가 |
| 터널 노출 | 다리는 127.0.0.1에만 바인딩, 공개 면은 터널을 통한 HTTPS 하나뿐 |
| 실행 로그 유출 | Codex가 지정한 테스트, 빌드 로그만 대상. 살균기가 토큰과 짝 코드 형태 문자열, 홈 경로를 지우고 개인 키는 거부, 크기 제한. ChatGPT는 여전히 명령을 실행할 수 없음 |
| 체크포인트 유출 | 세션 체크포인트에는 짧은 프로토콜 필드만 저장. 재개는 기존 대화나 인계 메시지로만 하고 로그를 붙여 넣지 않음 |
위 표에서 눈에 띄는 것은 모델이 다루는 비밀의 범위입니다. 브라우저를 거치는 유일한 비밀은 1회용 짝 코드이고, 접근 토큰과 갱신 토큰은 ChatGPT 클라이언트와 다리 사이의 OAuth 엔드포인트 안에서만 오갑니다. 작업 공간의 내용 자체를 신뢰하지 않는다는 원칙도 함께 적혀 있어서, README와 주석, 변경 내역에 프롬프트 인젝션이 섞여 들어올 수 있다고 보고 각 도구 설명에 경고를 달아 두었습니다.
Codex with ChatGPT 설치와 사용
저장소가 권하는 설치 방법은 사람이 명령을 따라 치는 것이 아니라, 안내문 한 덩어리를 Codex에게 그대로 붙여 넣고 맡기는 방식입니다. 환경 점검부터 클론, 빌드, 스킬 배치, 첫 연결까지 에이전트가 진행하고, 로그인과 인증번호 입력처럼 사람이 해야 하는 순간에만 멈춥니다. 직접 진행할 경우의 절차는 세 줄입니다:
- 저장소의
skill/디렉토리를~/.codex/skills/codex-with-chatgpt/로 복사합니다. - Codex에게 "Set up Codex with ChatGPT" 라고 요청해 첫 설정을 마칩니다.
- 이후에는 평소처럼 "Use Codex with ChatGPT to implement XXX" 형태로 요청합니다.
ChatGPT 쪽에는 준비가 두 가지 더 필요합니다. 하나는 설정의 개발자 모드로, 커스텀 커넥터를 추가하려면 켜져 있어야 하고 꺼져 있으면 커넥터를 만드는 단계에서 실패합니다. 이 항목은 설정의 보안 화면에 있고 커넥터는 플러그인 페이지에서 추가하는데, 메뉴에서 찾기 어려워 Plus 사용자가 자기 요금제로는 안 되는 줄 알았던 이슈가 두 건 있었습니다. 둘 다 위치 문제였습니다. OpenAI 문서가 Business와 Enterprise, Edu 대상이라고 밝힌 것은 쓰기 동작까지 포함한 풀 MCP 앱이고, 이 프로젝트가 쓰는 읽기 전용 커넥터는 개인 요금제에서 동작합니다. 다른 하나는 작업 공간마다 하나씩 두는 ChatGPT 프로젝트(컬렉션)이며, 메모리를 그 프로젝트로 한정해 만들어 두면 Codex가 그 안에서 대화를 시작합니다. 둘 다 Codex가 내장 브라우저로 대신 처리하지만, 자동 설정이 같은 지점에서 두 번 실패하면 사용자에게 한 번에 한 동작씩 알려 주는 수동 절차로 넘어갑니다. 첫 설정이 끝나면 연결 상태가 체크 목록으로 표시되고, 파일 읽기 시험까지 통과해야 준비 완료로 넘어갑니다. 스킬은 이후 하루 한 번 GitHub를 확인해 새 버전이 나오면 스스로 갱신합니다. 직접 빌드하고 명령줄 도구를 다루려면 다음과 같습니다:
pnpm install
pnpm build # dist/ 생성, c2c 실행 파일 노출
pnpm test # vitest 146개: 경로 보안, OAuth, 짝 맺기, MCP 통합 테스트
c2c setup # 다리, 터널, 짝 코드를 한 번에
c2c sandbox-allow # Codex 샌드박스에 상태 디렉토리 쓰기 허용
c2c status
c2c doctor
기본값은 재시작할 때마다 주소가 바뀌는 임시 Cloudflare 터널입니다. Cloudflare 계정과 이미 연결된 도메인이 있으면 c2c-<프로젝트>.내도메인.com 형태의 고정 주소를 한 번 정해 둘 수 있고, 그러면 다리를 다시 띄워도 ChatGPT 쪽 커넥터를 지웠다 다시 만들 필요가 없습니다. 자격 증명과 터널 설정은 프로젝트 디렉토리가 아니라 운영체제의 애플리케이션 상태 디렉토리에 보관됩니다.
Codex with ChatGPT의 라이선스
Codex with ChatGPT는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.
Codex with ChatGPT 아키텍처 문서
Codex with ChatGPT 프로젝트 GitHub 저장소
더 읽어보기
-
Codex Plugin for Claude Code: Claude Code에서 OpenAI Codex를 활용한 코드 리뷰 및 작업 위임 도구
-
Codex 하네스의 비밀 풀기: App Server 구축기 (Unlocking the Codex harness: how we built the App Server)
이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. ![]()
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

