OpenAI Codex CLI 오픈소스 코드 분석 2026: Rust 기반 에이전트 아키텍처 해부
OpenAI가 Apache 2.0으로 공개한 Codex CLI의 소스코드를 분석한다. Rust 94.7% 구현, 60개 이상의 크레이트, 에이전트 루프 구조, 샌드박스 보안 모델까지. Claude Code와의 구조적 차이도 비교한다.

OpenAI Codex CLI는 터미널에서 자연어로 코드를 작성하고 실행하는 AI 코딩 에이전트(사용자의 명령을 받아 코드 생성, 파일 수정, 명령어 실행 등을 자동 수행하는 프로그램)다. 2026년 3월 Apache 2.0 라이선스로 GitHub에 전체 소스코드가 공개되었고, 공개 직후 71,700개의 스타를 받으며 개발자 커뮤니티의 폭발적 관심을 확인했다.
이 글에서는 실제 소스코드를 기반으로 Codex CLI의 내부 구조를 분석한다.
Codex CLI의 탄생과 오픈소스 전환
OpenAI의 Codex는 원래 2021년 API 전용 코드 생성 모델로 시작했다. GitHub Copilot의 백엔드 엔진이었던 초기 Codex는 클라우드 기반이었고, 소스는 비공개였다. 2025년부터 OpenAI는 방향을 전환했다. 클라우드 API에서 로컬 CLI 도구로, 폐쇄 소스에서 완전 오픈소스로.
전환의 배경에는 경쟁 구도가 있다. Anthropic의 Claude Code가 터미널 기반 AI 코딩 도구 시장을 빠르게 장악하고 있었고, Cursor와 같은 IDE 통합 도구도 부상하고 있었다. OpenAI는 오픈소스라는 차별화 카드를 꺼냈다. Apache 2.0 라이선스는 상업적 사용과 수정, 재배포를 모두 허용한다. 커뮤니티가 포크(fork)하고 자유롭게 확장할 수 있다는 의미다.
현재 Codex CLI 저장소의 규모는 상당하다. 5,006개의 커밋, 665개의 릴리스, 전체 코드의 94.7%가 Rust로 작성되었다. 나머지는 TypeScript SDK와 문서, 스크립트가 차지한다.
코드 구조: 60개 크레이트의 해부
Codex CLI의 핵심은 codex-rs/ 디렉토리에 있다. Rust 워크스페이스(Cargo workspace) 구조로 60개 이상의 크레이트(crate, Rust의 패키지 단위)가 계층적으로 구성되어 있다.
최상위 크레이트 4개가 역할을 분담한다. core는 에이전트 루프, 도구 실행, 샌드박스를 담당하는 심장부다. cli는 터미널 인터페이스를 제공한다. tui는 터미널 UI(텍스트 기반 그래픽 인터페이스)를 렌더링한다. headless는 GUI 없이 JSON-RPC 프로토콜로 외부 시스템과 통신한다. VS Code 확장이나 웹앱이 이 headless 모드를 통해 Codex 엔진에 접속한다.
에이전트 루프의 동작 원리는 명확하다. 사용자가 터미널에 자연어 명령을 입력하면, core 크레이트가 이를 받아 OpenAI Responses API에 HTTP 요청을 보낸다. 서버는 스트리밍 이벤트로 응답하고, 응답에 도구 호출(tool call)이 포함되면 로컬에서 해당 도구를 실행한 뒤 결과를 다시 API에 전달한다. 이 요청-응답-실행의 반복이 하나의 작업이 완료될 때까지 계속된다.
사용자 입력
|
v
[core: 에이전트 루프]
|
v
OpenAI Responses API (HTTP 스트리밍)
|
v
스트리밍 이벤트 파싱
|
v
도구 호출 감지 → [ToolSpec 실행] → 결과 반환
|
v
(반복 또는 완료)
도구 시스템은 ToolSpec 열거형으로 정의된다. 각 도구는 JSON Schema로 입출력을 명세하고, MCP(Model Context Protocol) 서버를 통해 외부 도구를 동적으로 통합할 수 있다. 프롬프트는 codex-rs/core/prompt.md 파일에 시스템 프롬프트가 평문으로 저장되어 있어 누구나 읽고 수정할 수 있다. 설정은 ~/.codex/config.toml에서 관리하고, 작업 상태는 SQLite 데이터베이스에 로컬 저장한다.
통신 프로토콜도 주목할 부분이다. headless 모드는 JSON-RPC 기반 JSONL(줄 단위 JSON) stdio 통신을 사용한다. 표준 입출력만으로 외부 프로세스와 양방향 통신이 가능한 구조다. 이 덕분에 CLI, VS Code 확장, 웹앱이 동일한 코어 엔진을 공유한다.
샌드박스 보안과 Claude Code 비교
Codex CLI의 보안 모델은 OS별 샌드박스에 기반한다. macOS에서는 Apple의 Seatbelt(앱 샌드박스 프레임워크)을 사용하고, Linux에서는 Bubblewrap과 Seccomp(시스템 콜 필터링)을 조합한다. Windows에서는 Restricted Tokens를 적용한다. AI가 실행하는 모든 명령이 격리된 환경에서 돌아간다는 뜻이다. 파일 시스템 접근, 네트워크 연결, 프로세스 생성이 모두 제한된다.
이 구조는 Claude Code와 근본적으로 다르다. Claude Code는 Anthropic 클라우드에서 모델 추론이 이루어지고, 로컬에서는 TypeScript로 작성된 클라이언트가 도구 실행을 담당한다. Codex CLI는 모든 것이 로컬이다. 모델 추론만 OpenAI API를 호출하고, 에이전트 루프, 도구 실행, 샌드박스가 전부 사용자 머신에서 돌아간다.
성능 최적화 측면에서 Codex CLI는 GPT-5.3-Codex 모델과 프롬프트 캐싱을 결합한다. 반복되는 시스템 프롬프트와 컨텍스트를 캐싱하여 API 호출 비용과 지연 시간을 줄인다. Claude Code도 프롬프트 캐싱을 지원하지만, 모델과 캐싱 전략의 세부 구현은 공개되지 않았다.
가장 큰 차이는 투명성이다. Codex CLI는 에이전트 루프의 모든 코드, 시스템 프롬프트, 도구 정의, 샌드박스 정책이 공개되어 있다. 개발자가 동작 원리를 완전히 이해하고 수정할 수 있다. Claude Code는 강력한 도구지만 내부 구현은 비공개다. 이전에 분석한 Claude Code의 서브에이전트 구조나 Hooks 시스템과 비교하면, 접근 가능한 정보의 깊이 자체가 다르다.
시사점: 오픈소스 AI 코딩 도구의 의미
Codex CLI의 오픈소스 공개가 주는 시사점은 세 가지다.
첫째, AI 코딩 도구의 경쟁 축이 모델 성능에서 개발자 경험과 생태계로 이동하고 있다. Rust로 작성된 고성능 네이티브 바이너리, OS별 샌드박스, MCP 기반 확장성은 단순히 "좋은 모델을 쓴다"는 것 이상의 엔지니어링이다.
둘째, 오픈소스 전략이 신뢰를 만든다. AI가 내 코드베이스에 접근하고 명령을 실행하는 도구에서, 내부 동작을 검증할 수 있다는 것은 기업 환경 도입의 전제 조건이다. 보안 팀이 샌드박스 정책을 직접 감사하고, 필요하면 수정할 수 있다.
셋째, Rust 선택이 의미하는 바가 있다. Python이나 TypeScript가 아닌 Rust로 AI 도구의 코어를 작성한 것은 성능과 안전성에 대한 강한 의지다. 메모리 안전성이 보장되고, 단일 바이너리로 배포할 수 있으며, 크로스 플랫폼 지원이 자연스럽다.
AI 코딩 도구 시장은 Claude Code, Codex CLI, Cursor, GitHub Copilot이 각자의 방식으로 경쟁하고 있다. Codex CLI의 완전 오픈소스 전환은 이 경쟁에 새로운 변수를 던졌다. 코드를 읽을 수 있다는 것은, 배울 수 있다는 것이고, 더 나은 도구를 만들 수 있다는 것이다.
참고 자료
- OpenAI Codex CLI GitHub 저장소
- OpenAI Codex CLI 공식 블로그
- Apache License 2.0 전문
- Model Context Protocol 공식 사이트
- Bubblewrap 컨테이너 샌드박스
AI 개발 도구의 최신 동향을 매주 받아보고 싶다면, spoonai.me 뉴스레터를 구독하면 된다. 매주 월요일, 실무에 필요한 AI 뉴스만 정리해서 보내준다.
AI 트렌드를 앞서가세요
매일 아침, 엄선된 AI 뉴스를 받아보세요. 스팸 없음. 언제든 구독 취소.
