본문 바로가기

개발이야기

Codex CLI Rust 전환 — config.toml·MCP·샌드박스 실무 정리

반응형

핵심 요약

OpenAI Codex CLI는 2025~2026년에 걸쳐 TypeScript 구현에서 Rust 네이티브 바이너리로 전환됐으며, 현재 유지보수되는 기본 CLI는 Rust 빌드다(〈GitHub openai/codex〉, 〈June 2025 Status Update〉). Homebrew brew install codex도 Rust CLI를 기본 설치한다(〈GitHub Discussion #1405〉 2025-07-01). 설정은 레거시 JSON에서 ~/.codex/config.toml 로 바뀌었고, MCP 서버 연동·parallel tool calls·샌드박스 모드(sandbox, workspace-write, danger-full-access 등)가 Rust 전용 기능으로 확장됐다. 팀이 예전 npm 기반 가이드를 그대로 쓰면 설정 미적용·샌드박스 정책 누락이 발생할 수 있어, 2026년 6월 기준으로 설정 파일·설치 경로를 재점검할 시점이다.

무슨 일이 있었나

Rust Cutover 배경

OpenAI maintainer bolinfest는 2025년 6월 GitHub Discussion에서 Rust CLI Cutover 계획을 공개했고, 2025년 7월 1일 Homebrew formula가 Rust CLI(codex-cli 0.2.0+) 를 기본으로 설치하도록 병합됐다고 밝혔다(〈GitHub Discussion #1405〉).

Rust 구현의 공식 README(〈openai/codex codex-rs〉)는 Codex CLI를 standalone native executable로 제공해 zero-dependency install을 목표로 한다고 설명한다. 주요 crate는 core(비즈니스 로직), exec(헤드less CLI), tui(Ratatui 풀스크린 UI), cli(서브커맨드 통합)로 나뉜다.

설정·기능 변화 요약

| 항목 | 레거시 TypeScript CLI | Rust CLI (현재) |

|------|----------------------|-----------------|

| 설정 파일 | JSON 계열 | config.toml |

| 설치 | npm 등 Node 의존 | 단일 바이너리, Homebrew/GitHub Releases |

| MCP | 제한적 | codex mcp add/list, parallel tool calls |

| 비대화형 실행 | 제한 | codex exec PROMPT |

| 샌드박스 | 기본적 | 모드별 파일·네트워크 경계 |

Augment Code(2026) 분석에 따르면 MCP parallel tool calls 지원으로 동일 시나리오 월 시간 58초→31초 수준 개선 사례가 보고됐다(환경·프롬프트에 따라 상이).

실무 설정 가이드

1. 설치 확인

`bash

codex --version

which codex

`

Homebrew 사용 시 brew info codex0.2.0 이상(Rust) 인지 확인한다. Node/npm 구버전이 PATH 앞에 있으면 레거시 바이너리를 실행할 수 있다.

2. config.toml 골격

Digital Applied(2026) 플레이북 기준, 팀 공통 설정 예시는 다음과 같다.

`toml

# ~/.codex/config.toml (예시 — 환경에 맞게 수정)

model = "gpt-5.3-codex" # 공식 문서·릴리스 노트에서 최신 모델명 재확인

[profiles.default]

sandbox = "workspace-write"

# MCP 서버는 codex mcp add 로 등록 후 config에 반영

`

프로필([profiles.NAME]) 로 프로젝트·고객별 모델·샌드박스를 분리하면, 실수로 danger-full-access를 기본값으로 두는 사고를 줄일 수 있다.

3. MCP 등록

`bash

codex mcp add my-server --url http://localhost:8080/mcp

codex mcp list

`

MCP 서버가 parallel tool calls를 지원하는지 README·플래그를 확인한다. 미지원 시에도 동작하지만 지연 시간이 늘 수 있다.

4. CI·자동화

헤드less 파이프라인에서는:

`bash

codex exec "Run tests and summarize failures" < ./context.txt

`

RUST_LOG=info로 내부 동작 로그를 켤 수 있다(〈codex-rs README〉). API 키는 OPENAI_API_KEY 등 환경 변수로 주입하고, 레포에 커밋하지 않는다.

5. 샌드박스 선택 기준

  • sandbox: 읽기·제한적 쓰기 — 일반 리팩터
  • workspace-write: 워크스페이스 내 쓰기 — 로컬 개발 기본값 후보
  • danger-full-access: 네트워크·파일 전면 — 좁은 범위·감사 로그 필수

고유 인사이트 — Rust CLI가 의미하는 '에이전트 OS' 층

Codex CLI Rust 전환은 단순 언어 교체가 아니라, 터미널 에이전트를 OS에 가까운 레이어로 두겠다는 신호다. 단일 바이너리·샌드박스·MCP·exec 서브커맨드는 IDE 플러그인과 달리 CI·서버·SSH 환경에 그대로 붙는다. 팀 표준을 정할 때 "개발자 노트북용 코파일럿"과 "파이프라인용 codex exec"를 같은 config.toml 프로필 체계로 묶으면, 로컬에서 검증한 샌드박스 정책을 배포 환경에 복제하기 쉽다 — 이게 TypeScript 시대에는 JSON·npm 버전 지옥으로 깨지기 쉬웠다.

체크포인트와 리스크

  • 체크포인트
  • 레거시 JSON 설정 잔존 여부 (~/.codex/ 전체 목록)
  • codex mcp list vs 실제 도구 호출 성공률
  • Homebrew/nix 버전 고정 (팀 전체 동일 빌드)
  • ChatGPT 플랜 vs API 키 과금·한도 차이
  • 리스크 요인
  • 구 가이드대로 npm install 시 레거시 CLI 혼선
  • danger-full-access 기본값 → 프로덕션 데이터 유출
  • MCP 서버 장애 시 조용한 도구 실패 (타임아웃·로그 설정 필요)

마무리

2026년 6월 현재 Codex CLI는 Rust = 정식, TypeScript = 레거시로 이해하는 것이 맞다. config.toml·MCP·샌드박스·codex exec 네 가지를 팀 runbook에 반영하면, Gemini/Antigravity·Claude Code 등 다른 터미널 에이전트와 병행할 때도 역할 분담(로컬 대화 vs CI 배치)이 명확해진다.

참고 자료