Imported from revfactory/skills (
codex-cli/SKILL.md). Install upstream withnpx skills add revfactory/skills --skill codex-cli. Copyright stays with the author.
OpenAI Codex CLI
OpenAI μ μ½λ© μμ΄μ νΈ CLI(codex)λ₯Ό Claude Code μΈμ
μμμ μμ νκ² νΈμΆνκΈ° μν μ€ν¬. (μ°Έκ³ : codex-cli 0.128 / 2026-04 κΈ°μ€)
Codex CLI λ Claude Code μ κ°μ κ²°μ μ½λ© μμ΄μ νΈμ§λ§ λͺ¨λΈμ΄ OpenAI(μ΄ λΉλ κΈ°λ³Έμ gpt-5.5, λλ --oss λ‘컬) λΌλ μ μ΄ ν΅μ¬ μ°¨μ΄. μ΄ μ€ν¬μ μ£Όλ‘ codex exec λΉλνν νΈμΆμ ν΅ν΄ Claude κ° μμ μ μμ
μ OpenAI μκ°μ λνκ±°λ, λ
립 μμ
μ μμν λ μ΄λ€.
μ€μν λμ μ리. codex exec λ λΉλννμ΄λ―λ‘ μΉμΈ(approval) κ°λ
μμ²΄κ° μλ€. λͺ¨λ λͺ
λ Ήμ μλμΌλ‘ μλλκ³ , μνμ±μ μ€μ§ --sandbox μ μ±
μΌλ‘λ§ μ μ΄νλ€. λ°λΌμ μΈν°λν°λΈ codex μ --ask-for-approval νλκ·Έλ codex exec μμ μλ¬λ₯Ό λΈλ€. μ΄ μ€ν¬μ λͺ¨λ μμ λ μ΄ μ μ λ°μνλ€.
μΈμ μ°λκ°
- λ λ²μ§Έ μ견(second opinion). μ€μν μ€κ³Β·λλ²κΉ κ²°μ μ OpenAI λͺ¨λΈμ λ 립 λΆμμ λ°κ³ μΆμ λ
- λ³λ ¬ μμ. λ©μΈ 컨ν μ€νΈλ₯Ό 보νΈνλ©΄μ Codex μ λ³κ° νμ μμ (λΉλ κ²μ¦, 리ν©ν° μ΄μ λ±)μ μν¬ λ
- μ½λ 리뷰.
codex reviewλ‘ λΈλμΉ/컀λ°/μΈμ»€λ° λ³κ²½μ λΉλνν 리뷰 - JSON μλν.
--json --output-last-messageμ‘°ν©μΌλ‘ κ²°κ³Όλ₯Ό νμΌΒ·νμ΄νλΌμΈμ νλ €λ³΄λΌ λ - MCP λκΈ°ν. Codex μ MCP μλ²λ₯Ό λ±λ‘Β·κ΄λ¦¬ν΄ λꡬ νμ νμ₯ν λ
λνν TUI(codex μΈμ μμ΄) μ체λ μ¬λμ΄ μ§μ λ€λ£¨λ λͺ¨λλΌ, μμ΄μ νΈ μ
μ₯μμλ κ±°μ νμ codex exec λ₯Ό μ΄λ€.
μ¬μ μ κ² (νΈμΆ μ 1ν)
codex --version # μ€μΉ νμΈ
codex login status # μΈμ¦ μν (logged in μ΄λ©΄ OK)
codex login status κ° μ€ν¨νλ©΄ μ¬μ©μμκ² λ€μ μ€ νλλ₯Ό μλ΄νλ€.
codex login # ChatGPT OAuth (κΆμ₯)
codex login --device-auth # ν€λλ¦¬μ€ νκ²½
printenv OPENAI_API_KEY | codex login --with-api-key # API ν€ μ¬μ©
API ν€ λͺ¨λλ μ¬μ©λμ΄ OpenAI Platform κ²°μ λ‘ κ³μ°λλ―λ‘ ChatGPT Plus/Pro/Team ꡬλ μλΌλ©΄ OAuth λ‘κ·ΈμΈμ΄ λΉμ©μ μ 리νλ€.
ν΅μ¬ ν¨ν΄: codex exec
기본 골격.
codex exec [OPTIONS] "ν둬ννΈ"
μμ μμ μ΄λΌλ Claude κ° νΈμΆν λλ νμ λΉλνν μ΅μ μ λͺ μνλ€. κ·Έλ μ§ μμΌλ©΄ TUI κ° λ μ μΈμ μ΄ λ©μΆλ€.
1) μμ ν μ½κΈ° μ μ© νΈμΆ (λΆμ·리뷰)
codex exec \
--sandbox read-only \
--skip-git-repo-check \
--output-last-message /tmp/codex-out.md \
"μ΄ λλ ν 리μ src/auth/*.ts νμΌμ μ½κ³ μ μ¬μ 보μ μ·¨μ½μ μ λ§ν¬λ€μ΄ νλ‘ μ 리ν΄λΌ"
read-only μλλ°μ€λ λΆμμ©μ΄ μμ΄ μλνμ κ°μ₯ μμ ν κΈ°λ³Έκ°μ΄λ€. κ²°κ³Όλ¬Όμ --output-last-message λ‘ λ°λ κ² νμ€νλ€(stdout μλ ν€λΒ·μ§ν λ‘κ·ΈΒ·ν ν° μ¬μ©λμ΄ μμΈλ€).
2) μν¬μ€νμ΄μ€ μ°κΈ° νΈμΆ (ν¨μΉ μμ±)
codex exec \
--sandbox workspace-write \
--cd /path/to/repo \
--output-last-message /tmp/codex-patch.md \
"tests/integration/login.spec.ts μμ 401 μΌμ΄μ€κ° λΉ μ Έ μλ€. μΆκ°νκ³ npm test λ‘ ν΅κ³ΌμμΌλΌ"
workspace-write λ μμ
루νΈ(λλ --cd)μ --add-dir λ‘ μΆκ°ν λλ ν 리μλ§ μ°κΈ°λ₯Ό νμ©νλ€. λΉλννμ΄λΌ μ¬λμκ² λ¬»μ§ μμΌλ―λ‘, κ²°κ³Όλ₯Ό μ¬μ©μμκ² λ€μ λ³΄μ¬ μ£Όκ³ κ²ν λ°λ νλ¦μ μ μ§νλΌ.
3) JSONL μ΄λ²€νΈ μ€νΈλ¦Ό (νμ΄νλΌμΈ ν΅ν©)
codex exec \
--json \
--sandbox read-only \
--output-last-message /tmp/last.txt \
"package.json μ μμ‘΄μ±μ λΆμν΄ outdated ν κ²λ§ JSON λ°°μ΄λ‘ μλ €μ€" \
> /tmp/codex.jsonl
--json μ μ€ λ¨μ JSON μ΄λ²€νΈ(μμΒ·λꡬ νΈμΆΒ·λ©μμ§Β·μλ£)λ₯Ό stdout μ νλ¦¬κ³ , --output-last-message λ λͺ¨λΈ μ΅μ’
λ΅λ§ λ³λ νμΌλ‘ λ¨μ΄λ¨λ¦°λ€. CI μλνμμλ λμ ν¨κ» μ΄λ€.
4) μΆλ ₯ μ€ν€λ§ κ°μ
codex exec \
--output-schema /tmp/schema.json \
--output-last-message /tmp/result.json \
--sandbox read-only \
"μ΄ README μμ μ€μΉ λͺ
λ Ήμ΄λ€μ μΆμΆν΄ schema μ λ§μΆ° JSON μΌλ‘ λ°ν"
--output-schema μ JSON Schema νμΌ κ²½λ‘λ₯Ό μ£Όλ©΄ μ΅μ’
μλ΅μ΄ κ·Έ ννλ‘ κ²μ¦λλ€. ν/μν°ν° μΆμΆ κ°μ ꡬ쑰ν μμ
μ μ΄λ€.
5) stdin μΌλ‘ ν° μ»¨ν μ€νΈ μ λ¬
git diff main..HEAD | codex exec \
--sandbox read-only \
-o /tmp/review.md \
"νμ€ μ
λ ₯μΌλ‘ λ€μ΄μ¨ diff λ₯Ό 리뷰ν΄λΌ. μνΒ·κ°μ Β·ν
μ€νΈ κ°λ₯μ± μμΌλ‘ μ 리"
PROMPT μΈμμ - λ§ μ£Όκ±°λ μΈμλ₯Ό μλ΅νλ©΄ stdin μ μ²΄κ° ν둬ννΈκ° λλ€. PROMPT μ stdin μ λμμ μ£Όλ©΄ stdin μ΄ <stdin> λΈλ‘μΌλ‘ λ§λΆλλ€.
6) μ΄λ―Έμ§ 첨λΆ
codex exec -i screenshot.png \
--sandbox read-only \
-o /tmp/codex-out.md \
"μ΄ μ€ν¬λ¦°μ·μ UI ꡬ쑰λ₯Ό React μ»΄ν¬λνΈ νΈλ¦¬λ‘ ννν΄μ€"
-i λ λ°λ³΅ κ°λ₯. PNG/JPG/WebP λ±μ λ©ν° 첨λΆν μ μλ€.
μλλ°μ€ μ μ± κ°μ΄λ
| Sandbox | μ ν©ν μν© |
|---|---|
read-only |
λΆμΒ·λ¬Έμν·리뷰. μμ΄μ νΈ νΈμΆ κΈ°λ³Έκ°. |
workspace-write |
μλνλ ν¨μΉ μμ±. μμ
루νΈΒ·--add-dir λ§ μ°κΈ° κ°λ₯. |
danger-full-access |
μ¬μ© κΈμ§ β μ¬μ©μμ λͺ μ μμ² + 격리 νκ²½μμλ§. |
--dangerously-bypass-approvals-and-sandbox(λ³μΉ --yolo)λ 격리λ 컨ν
μ΄λ μΈλΆμμλ μ λ μ°μ§ μλλ€.
μΈν°λν°λΈ
codexλ λ€λ₯΄λ€. TUI λͺ¨λμμλ§-a, --ask-for-approval <untrusted|on-request|never>κ° μλ―Έλ₯Ό κ°μ§λ€.codex execμ κ°μ νλκ·Έλ₯Ό μ£Όλ©΄ μ¦μ μλ¬λ‘ μ’ λ£νλ―λ‘ μ λ μμ§ λ§ κ².
λͺ¨λΈ / νλ‘νμΌ μ ν
codex exec -m gpt-5.5 "..." # λͺ¨λΈ μ§μ μ§μ
codex exec -p review "..." # ~/.codex/config.toml μ [profiles.review] μ¬μ©
codex exec --oss --local-provider ollama -m gpt-oss:20b "..." # λ‘컬 OSS λͺ¨λΈ
κΈ°λ³Έ λͺ¨λΈμ ChatGPT κ³μ νλκ³Ό ~/.codex/config.toml μ model = μ€μ μ λ°λ₯Έλ€ (μ΄ λΉλ κΈ°λ³Έ gpt-5.5). λͺ¨λΈ μΉ΄νλ‘κ·Έλ codex debug models λ‘ νμΈ. -c model_reasoning_effort=high κ°μ μΈλΌμΈ μ€λ²λΌμ΄λλ λμΌ ν¨κ³Ό.
λ λ²μ§Έ μ견(second opinion) ν¨ν΄
Claude μ λΆμμ κ·Έλλ‘ λκ³ , κ°μ μ λ ₯μ OpenAI μ ν λ² λ λλ € λΉκ΅νλ ꡬ쑰.
# 1) Claude κ° κ²°λ‘ μ μ μ΄ λ λ©λͺ¨
echo "## Claude κ²°λ‘ \n$CLAUDE_CONCLUSION" > /tmp/handoff.md
echo "## μλ³Έ 컨ν
μ€νΈ" >> /tmp/handoff.md
cat path/to/relevant.ts >> /tmp/handoff.md
# 2) Codex μ λ
립 νλ¨ μμ²
codex exec \
--sandbox read-only \
-o /tmp/codex-opinion.md \
"$(cat /tmp/handoff.md)\n\nμ κ²°λ‘ μ λμνλμ§, λμΉ λΆλΆμ μλμ§ λ
립μ μΌλ‘ νλ¨ν΄ λ§ν¬λ€μ΄μΌλ‘ λ΅ν΄λΌ."
ν΅μ¬μ Claude μ κ²°λ‘ μ κ°μ΄ λκΈ°λ "λ 립μ μΌλ‘" νλ¨νλΌκ³ λͺ μνλ κ². λμΌ λͺ¨λΈ λ°λ³΅λ³΄λ€ κ°μ§ ν©μ(echo chamber)λ₯Ό μ€μΈλ€.
μ½λ 리뷰: codex review
λΈλμΉ/컀λ°/μΈμ»€λ° λ¨μλ‘ λ¦¬λ·°λ§ λ리λ μ μ© μλΈμ»€λ§¨λ. codex exec μ λ¬λ¦¬ 리뷰 ν¬λ§·μ΄ μ ννλΌ μλ€.
codex review --base main # main λλΉ νμ¬ λΈλμΉ
codex review --uncommitted # μ€ν
μ΄μ§Β·μΈμ€ν
μ΄μ§Β·μΈνΈλ
codex review --commit abc1234 # νΉμ 컀λ°
codex review --base main --title "Auth refactor" # μμ½ ν€λμ© μ λͺ©
codex review - # stdin μΌλ‘ 컀μ€ν
μ§μ λ°κΈ°
-c model="...", --enable/--disable κ°μ κΈλ‘λ² νλκ·Έλ λμΌνκ² λ°λλ€. κ²°κ³Όλ stdout μΌλ‘ νλ¬λμ€λ―λ‘ tee λ‘ μ μ₯νλ€.
μΈμ μ¬κ°Β·ν¬ν¬
codex resume --last # κ°μ₯ μ΅κ·Ό μΈν°λν°λΈ μΈμ
μ¬κ° (TUI)
codex resume --all # λͺ¨λ λλ ν 리μ μΈμ
μ€ μ ν
codex exec resume --last "μΆκ° μ§μ" # λΉλννμΌλ‘ λ§μ§λ§ exec μΈμ
μ΄μ΄κ°κΈ°
codex fork --last # λΆκΈ° (μλ³Έ 보쑴)
codex exec λ κΈ°λ³Έμ μΌλ‘ μΈμ
μ λμ€ν¬μ λ¨κΈ΄λ€. μΌνμ±μ΄λΌλ©΄ --ephemeral λ‘ λΉνμ±ν.
MCP μλ² κ΄λ¦¬
codex mcp list
codex mcp add my-tool -- node mcp-server.js # stdio μλ²
codex mcp add web-tool --url https://mcp.example.com # HTTP μλ²
codex mcp add github --url https://api.githubcopilot.com/mcp \
--bearer-token-env-var GITHUB_TOKEN
codex mcp get my-tool --json
codex mcp login web-tool --scopes "read:repo,write:repo"
codex mcp remove my-tool
Claude Code μ claude mcp μ λ³κ°λ‘, Codex μμ μ΄ μ¬μ©νλ MCP νμ κ΄λ¦¬νλ€. κ°μ μλ²λ₯Ό λ CLI κ° κ³΅μ νλ €λ©΄ μμͺ½μ κ°κ° λ±λ‘νλ€.
Codex μ체λ₯Ό MCP μλ²λ‘ λμ°λ €λ©΄(λ€λ₯Έ μμ΄μ νΈμ λκ΅¬λ‘ λ ΈμΆ):
codex mcp-server # stdio κΈ°λ°. νΈμΆ μΈ‘ MCP ν΄λΌμ΄μΈνΈκ° spawn
μμ£Ό μ°λ κΈλ‘λ² μ΅μ
| νλκ·Έ | ν¨κ³Ό |
|---|---|
-c key=value |
~/.codex/config.toml κ°μ μμ μ€λ²λΌμ΄λ. κ°μ TOML λ‘ νμ± (μ€ν¨ μ λ¬Έμμ΄). μ: -c model="gpt-5.4-high" -c 'sandbox_permissions=["disk-full-read-access"]' |
--enable <feature> / --disable <feature> |
νΌμ² νλκ·Έ ν κΈ. codex features list λ‘ λͺ©λ‘ νμΈ |
-C, --cd <DIR> |
μμ λ£¨νΈ λ³κ²½ |
--add-dir <DIR> |
workspace-write μμ μΆκ°λ‘ μ°κΈ° κ°λ₯ν λλ ν 리 |
--skip-git-repo-check |
Git 리ν¬μ§ν 리 λ°μμλ μ€ν |
--ignore-user-config |
config.toml 무μ (μ¬νμ± λ³΄μ₯) |
--ignore-rules |
μ¬μ©μ/νλ‘μ νΈ execpolicy .rules 무μ |
--search |
web_search ν΄ νμ±ν (λΌμ΄λΈ κ²μ) |
μ 체 νλκ·ΈΒ·μλΈμ»€λ§¨λ λͺ©λ‘μ references/cli-reference.md μ°Έκ³ .
λΉμ©Β·μλ κ°μ΄λ
- λ¨λ°μ± λΆμμ
--sandbox read-only+ μ§§μ ν둬ννΈκ° κ°μ₯ μ λ ΄Β·λΉ λ¦ - ν° μ»¨ν μ€νΈλ stdin μΌλ‘ νλ €λΌ(μΈμ κΈΈμ΄ μ νΒ·μ΄μ€μΌμ΄ν ννΌ)
- λμΌ μμ
μ λ°λ³΅ν κ±°λΌλ©΄
~/.codex/config.tomlμ νλ‘νμΌ μ μνκ³-p nameμΌλ‘ νΈμΆ β μΈμ λ Έμ΄μ¦ κ°μ - λ§€ νΈμΆλ§λ€ μΈμ
μ΄ λμ€ν¬μ λ¨λλ€. μΌνμ±Β·λ―Όκ° λ°μ΄ν°λ
--ephemeral
μν°ν¨ν΄
- TUI λͺ¨λ νΈμΆ. μΈμ μλ
codexλλcodex "..."(μλΈμ»€λ§¨λ μμ΄)λ νμ€ν¬λ¦° TUI. μλνμμ μ λ μ°μ§ λ§ κ² β νμcodex execλ‘ μμ. codex execμ--ask-for-approvalλΆμ°©. λΉλννμ μΉμΈ κ°λ μ΄ μμ΄ μ¦μ μλ¬λ‘ μ’ λ£νλ€. μΈν°λν°λΈcodexμ μ© μ΅μ μ΄λ€.--yolo/-c sandbox=danger-full-access. μ¬μ©μμ λͺ μ λμ μμ΄ μ λ μ¬μ© κΈμ§.- stdout λ§μΌλ‘ κ²°κ³Ό νμ±. μ§ν μ΄λ²€νΈκ° μμ¬ λ€μ΄μ¨λ€.
--output-last-messageλ‘ μ΅μ’ λ©μμ§λ§ νμΌ μΊ‘μ². - μ₯μκ° μμ
μ ν¬κ·ΈλΌμ΄λλ‘. 5λΆ μ΄μ 걸릴 μμ
μ Bash
run_in_background: trueμ κ²°ν©νκ³ , μλ£ μλ¦ΌμΌλ‘ κ²°κ³Ό νμΌμ μ½λλ€. - λ―Όκ° μ 보 λ‘κ·Έ λ¨κΉ. κΈ°λ³Έ μΈμ
μ
~/.codex/sessions/μ μ μ₯λλ€. λΉλ° λ°μ΄ν°λ--ephemeralλλ μ¬μ©μ λμ ν μμ .
νΈλ¬λΈμν
not logged inβcodex login statusν μ λ‘κ·ΈμΈ λͺ λ Ή μ€ νμΌnot in a git repositoryβ--skip-git-repo-checkunexpected argument '--ask-for-approval'βcodex execμ μΈν°λν°λΈ μ μ© νλκ·Έλ₯Ό 쀬λ€. λΉΌκ³--sandboxλ§ μ¬μ©.- TUI κ° λ μ λ©μΆ€ β
codex execκ° μλcodexλ‘ νΈμΆνλμ§ νμΈ - μΆλ ₯μ΄ μ΄λ κ°λμ§ λͺ¨λ₯Ό λ β
--jsonμΌλ‘ μ΄λ²€νΈ μ€νΈλ¦Ό νμΈ +--output-last-messageλ‘ μ΅μ’ λ΅ λΆλ¦¬ workspace-writeμΈλ° κΆν κ±°λΆ β νμΌμ΄ μμ λ£¨νΈ λ°.--add-dirλλ--cdλ‘ λ£¨νΈ λ³κ²½- λͺ¨λΈΒ·νλ νλ μ΄κ³Ό β
-mμΌλ‘ λ€λ₯Έ λͺ¨λΈ μ§μ , λλ--oss+ λ‘컬 λͺ¨λΈ
νμ₯ λ νΌλ°μ€
references/cli-reference.mdβ μ 체 μλΈμ»€λ§¨λΒ·νλκ·ΈΒ·μμ (exec / review / resume / fork / login / mcp / sandbox / features / cloud / app-server / debug λ±)