| name | using-codex-exec |
| description | Run Codex CLI subprocesses for explicit codex exec requests, Claude Code or headless automation, and non-interactive code review. Use when requests mention `codex exec` or `๋น๋ํํ codex`. Use using-claude-p for Claude headless execution. |
Codex Exec ์ฌ์ฉ
์ด ๋ฌธ์๋ codex exec / codex exec review subprocess์ ๋ผ์ฐํ
๊ณผ ์ฑ๊ณต ๊ณ์ฝ์ ๋ค๋ฃฌ๋ค.
์์ธ ๋ช
๋ นยท์ ์ฝ์ SSOT๋ patterns.md์
known-issues.md์ด๋ฉฐ, ๋ณธ๋ฌธ์ ์ ํ ๊ธฐ์ค๊ณผ ํ์ ์ ์ฐจ๋ง ์์ฝํ๋ค.
์คํ ๊ฒฝ๋ก ๊ฒ์ดํธ
| ์คํ ๋ฌธ๋งฅ | ์ ํ ๊ฒฝ๋ก | ์ ์ฉ ์กฐ๊ฑด |
|---|
| Direct Codex ์ธ์
์ review/audit/planning fan-out | native subagent | ๊ธฐ๋ณธ ๊ฒฝ๋ก. nested codex exec๋ฅผ ์ ํํ์ง ์๋๋ค. |
| Claude Code ์ธ์
ยทheadless ์๋ํ | codex-exec-supervised (Layer 1) | stdin EOF + process group + timeout ๋ณด์ฅ์ด ํ์ํ programmatic ํธ์ถ. known-issues.md ยง15 ์ฐธ์กฐ. |
| ์ฌ์ฉ์๊ฐ literal raw ์คํ์ ์์ฒญํ๊ฑฐ๋ 1ํ์ฑ ์๋ ์ง๋จ | raw codex exec | alias๋ฅผ ํผํ๋๋ก command codex ๋๋ env ... codex๋ก ํธ์ถํ๋ค. |
run-daยทcodex-fan-out์ ๊ฐ ์คํฌ์ ๋ผ์ฐํ
๊ณ์ฝ์ด ์ฐ์ ํ๋ค. Direct Codex ์ธ์
์์
subprocess fallback์ด ํ์ํ๋ฉด ํด๋น ์คํฌ์ด ์๊ตฌํ๋ ๋ณ๋ ์ฌ์ฉ์ ์น์ธ์ ๋จผ์ ๋ฐ๋๋ค.
์์ฑ ๊ธฐ์ค
- ํ์ธ ๋ ์ง: 2026-07-10
- ํ์ธ ๋ฒ์ : codex-cli 0.144.1
- ์ฌ๊ฒ์ฆ:
command codex --version && command codex exec --help && command codex exec review --help && command codex exec resume --help
CLI ๋ฒ์ ์ด ๋ฐ๋๋ฉด ํ๋๊ทธ/๋์์ด ๋ฌ๋ผ์ง ์ ์์ผ๋ฏ๋ก, ์คํ ์ ๋์๋ง๋ก ํ์ธํ๋ค.
๋ฒ์
| ํฌํจ | ์ ์ธ |
|---|
codex exec ๋น๋ํํ ์คํ | Codex ์ธ์
์ ๊ธฐ๋ณธ subagent fan-out (run-da โ audit ๋ชจ๋ ํฌํจ) |
codex exec review ์ฝ๋ ๋ฆฌ๋ทฐ | ๋ํํ TUI ์ฌ์ฉ๋ฒ |
codex exec resume ์ธ์
์ฌ๊ฐ | Codex ์ค์ ํ์ผ ์ ์ฒด ๊ด๋ฆฌ |
| stdin/ํ์ผ ๊ธฐ๋ฐ ํ๋กฌํํธ ์ ๋ฌ | Codex settings/skill projection (repo ์ ์ฑ
/๊ฒ์ฆ ์คํฌ๋ฆฝํธ ์ฐธ์กฐ) |
| ๊ฒฐ๊ณผ ์ ์ฅ ๋ฐ ์๋ํ ์ถ๋ ฅ | |
์์ฌ๊ฒฐ์ ํธ๋ฆฌ
codex exec ์คํ์ด ํ์ํ๊ฐ?
โ
โโ ์ฝ๋ ๋ฆฌ๋ทฐ์ธ๊ฐ?
โ โโ YES โ ์ปค์คํ
๋ฆฌ๋ทฐ ์ง์๊ฐ ํ์ํ๊ฐ?
โ โ โโ YES โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ โ ๏ธ review์์ PROMPT๊ณผ scope flag โ
โ โ โ ๋์ ์ฌ์ฉ ๋ถ๊ฐ (Known Issue #7825) โ
โ โ โ โ
โ โ โ ๋ฐฉ๋ฒ A: AGENTS.md์ ๋ฆฌ๋ทฐ ์ง์ ๋ฐฐ์น ํ โ
โ โ โ review --base/--uncommitted ์คํ โ
โ โ โ (์๊ตฌ ์ง์, review์ diff ์ค์ฝํ ์ ์ง) โ
โ โ โ โ
โ โ โ ๋ฐฉ๋ฒ B: codex exec์ diff + ์ง์๋ฅผ โ
โ โ โ ํ๋กฌํํธ๋ก ์ง์ ์ ๋ฌ (review ์๋ธ์ปค๋งจ๋ ๋ฏธ์ฌ์ฉ)โ
โ โ โ (1ํ์ฑ ์ง์, ๊ฐ์ฅ ์ ์ฐ) โ
โ โ โ โ
โ โ โ โ references/patterns.md ํจํด 3, 4 ์ฐธ์กฐ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โ โโ NO โ codex exec review + scope flag
โ โ references/patterns.md ํจํด 2 ์ฐธ์กฐ
โ
โโ ์ธ์
์ฌ๊ฐ์ธ๊ฐ?
โ โโ YES โ codex exec resume --last ๋๋ <session-id>
โ โ ๏ธ --ephemeral ์๋ณธ์ 0.144.1์์ ์ ์ธ์
์ผ๋ก silent fallback ๊ฐ๋ฅ
โ โ stderr/session id์ ์๋ต context๋ก ์ค์ ์ฌ๊ฐ ์ฌ๋ถ ๊ฒ์ฆ
โ
โโ ์ผ๋ฐ ์คํ โ ์ ์คํ ๊ฒฝ๋ก ๊ฒ์ดํธ๋ก raw/supervised ์ ํ
โ references/patterns.md ํจํด 1 ์ฐธ์กฐ
๋ช
๋ น alias
| ๋ช
๋ น | ์ค๋ช
|
|---|
codex e | codex exec์ ๋จ์ถ alias |
codex review | top-level alias (โ ๏ธ codex exec review์ ๋ค๋ฆ โ ์๋ gotcha ยง5 ์ฐธ์กฐ) |
--yolo | --dangerously-bypass-approvals-and-sandbox์ ์จ์ alias |
๋ํํ zsh์ codex alias๊ฐ bypass ํ๋๊ทธ๋ฅผ ์๋ ๋ถ์ฐฉํ ์ ์๋ค. ์์ ๋ alias๋ฅผ ๊ฑฐ์น์ง ์๋
command codex ๋๋ env CODEX_PROGRAMMATIC=1 codex ํํ๋ง ์ฌ์ฉํ๋ค.
ํธํ์ฑ ๋งคํธ๋ฆญ์ค
exec ์ ์ฉ ํ๋๊ทธ (review/resume ๋ฏธ์ง์)
| ํ๋๊ทธ | ์ค๋ช
|
|---|
-s, --sandbox <SANDBOX_MODE> | ์๋๋ฐ์ค ์ ์ฑ
(read-only, workspace-write, danger-full-access) โ review/resume์ ๋ฏธ์ง์ |
-C, --cd <DIR> | ์์
๋๋ ํ ๋ฆฌ ์ง์ |
--add-dir <DIR> | ์ถ๊ฐ ์ฐ๊ธฐ ๊ฐ๋ฅ ๋๋ ํ ๋ฆฌ |
--oss | ์คํ์์ค ํ๋ก๋ฐ์ด๋ |
--local-provider <OSS_PROVIDER> | ๋ก์ปฌ ํ๋ก๋ฐ์ด๋ (lmstudio/ollama) |
-p, --profile <CONFIG_PROFILE_V2> | $CODEX_HOME/<name>.config.toml์ ๊ธฐ๋ณธ ์ ์ config ์์ ๋ ์ด์ด |
--color <COLOR> | ์์ ์ค์ (always/never/auto) |
exec ยท resume image ํ๋๊ทธ
| ๋ช
๋ น | ํ๋๊ทธ | ์ค๋ช
|
|---|
| exec | -i, --image <FILE>... | ์ด๋ฏธ์ง ์ฌ๋ฌ ๊ฐ ์ฒจ๋ถ ๊ฐ๋ฅ |
| resume | -i, --image <FILE> | ์ฌ๊ฐ turn์ ์ด๋ฏธ์ง ํ ๊ฐ ์ฒจ๋ถ ๊ฐ๋ฅ (0.144.1 help ์ฌํ์ธ) |
review์๋ image ํ๋๊ทธ๊ฐ ์๋ค.
๋ณ๋ codex sandbox subcommand์ ๊ณต๊ฐ permission-profile ํ๊ธฐ๋
-P, --permission-profile <NAME>์ด๋ค. codex exec -s์ ๋์ฒด ํ๊ธฐ๊ฐ ์๋๋ฉฐ
--sandbox-permission-profile์ 0.144.1์์ unexpected argument๋ก ๊ฑฐ๋ถ๋๋ค.
review ์ ์ฉ ํ๋๊ทธ
| ํ๋๊ทธ | ์ค๋ช
|
|---|
--uncommitted | ๋ฏธ์ปค๋ฐ ๋ณ๊ฒฝ ๋ฆฌ๋ทฐ |
--base <BRANCH> | ๋ฒ ์ด์ค ๋ธ๋์น ๋๋น ๋ฆฌ๋ทฐ |
--commit <SHA> | ํน์ ์ปค๋ฐ ๋ฆฌ๋ทฐ |
--title <TITLE> | ๋ฆฌ๋ทฐ ์์ฝ ์ ๋ชฉ (scope flag์ ์กฐํฉ ๊ฐ๋ฅ, ์ํธ ๋ฐฐํ ๊ท์น์ ๋ฏธ์ฐธ์ฌ. ๋จ๋
์ฌ์ฉ ์ --commit <SHA> ํ์ โ ์ฌํ์ธ: 2026-07-10, 0.144.1) |
exec ยท review ยท resume ๊ณตํต ํ๋๊ทธ
| ํ๋๊ทธ | ์ค๋ช
|
|---|
-c, --config <key=value> | config ์ค๋ฒ๋ผ์ด๋ |
--enable <FEATURE> | ํผ์ฒ ํ์ฑํ |
--disable <FEATURE> | ํผ์ฒ ๋นํ์ฑํ |
--strict-config | ์ ๋ฌํ -c๋ฟ ์๋๋ผ ๋ก๋๋ config ์ ์ฒด์ ๋ฏธ์ธ์ ํ๋๋ฅผ ์ค๋ฅ๋ก ์ฒ๋ฆฌ. capability probe๋ --ignore-user-config --strict-config๋ก user config drift๋ฅผ ๊ฒฉ๋ฆฌ |
-m, --model <MODEL> | ๋ชจ๋ธ ์ ํ (์๋ต ๊ถ์ฅ โ config.toml ๊ธฐ๋ณธ๊ฐ ์ฌ์ฉ) |
--output-schema <FILE> | JSON Schema ์ถ๋ ฅ ํ์ โ 0.142.5๋ถํฐ review/resume๋ ์ง์ (์ด์ ์๋ exec ์ ์ฉ) |
--dangerously-bypass-approvals-and-sandbox | ์๋๋ฐ์ค ์ฐํ (--yolo ์จ์ alias) |
--dangerously-bypass-hook-trust | ์์ hook trust ์์ด ํ์ฑ hook ์คํ ํ์ฉ (์ ๊ท, 0.142.5 โ ์๋ํ ์ ์ฉ, ์ํ) |
--skip-git-repo-check | Git ์ ์ฅ์ ์ฒดํฌ ๊ฑด๋๋ |
--ephemeral | ์ธ์
ํ์ผ ๋ฏธ์ ์ฅ |
--ignore-user-config | $CODEX_HOME/config.toml ๋ก๋ ์ฐจ๋จ (auth๋ง ์ ์ง) |
--ignore-rules | user/project execpolicy .rules ํ์ผ ๋ก๋ ์ฐจ๋จ |
--json | JSONL ์ด๋ฒคํธ ์ถ๋ ฅ |
-o, --output-last-message <FILE> | ๋ง์ง๋ง ๋ฉ์์ง ํ์ผ ์ ์ฅ. review์์ -oยทstdout ๋ชจ๋ ์ ์ (0.144.1 ์ค์ธก); upstream #12502์ open ์ํ์ ๋ก์ปฌ ๋์์ ๋ถ๋ฆฌ โ known-issues.md ยง2 ์ฐธ์กฐ |
โ ๏ธ ์น์ธ(approval) ๊ด๋ จ ๊ณต๊ฐ CLI ํ๋๊ทธ๋ ์กด์ฌํ์ง ์๋๋ค. exec/review/resume์ headless ์คํ์ด๋ฏ๋ก ์น์ธ ํ๋กฌํํธ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํ๊ณ , approval์ ํญ์ never๋ก ๊ณ ์ ๋๋ค (์ฌ๊ฒ์ฆ ๋ฏธ์ํ: 0.142.5 ๊ธฐ์ค ์์ ์ ์ง). ๊ณผ๊ฑฐ ๋จ์ถ ํ๋๊ทธ --full-auto๋ 0.144.1 help์๋ ์์ง๋ง hidden parser๊ฐ ์์ฉํ๊ณ --sandbox workspace-write ์ฌ์ฉ์ ์๋ดํ๋ deprecation warning์ ๋ธ๋ค. ์ ๋ฌธ์ยท์คํฌ๋ฆฝํธ์์๋ ์๋ ๊ณต๊ฐ surface๋ฅผ ์ฌ์ฉํ๋ค:
exec: -s workspace-write๋ก sandbox tier๋ง ์ง์ ํ๋ค
review/resume: ์ ์ฉ sandbox ํ๋๊ทธ๊ฐ ์์ผ๋ฏ๋ก config.toml์ sandbox_mode๋ฅผ ๋ฐ๋ฅด๊ฑฐ๋, ํ์ ์ --dangerously-bypass-approvals-and-sandbox๋ฅผ ์ฌ์ฉํ๋ค
โ ๏ธ review ์ํธ ๋ฐฐํ ๊ท์น
๋ค์ 4๊ฐ ์ธ์๋ ๋ชจ๋ ์ํธ ๋ฐฐํ์ โ ํ ๋ฒ์ ํ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ:
| PROMPT | --base | --uncommitted | --commit |
|---|
| PROMPT | โ | โ | โ | โ |
| --base | โ | โ | โ | โ |
| --uncommitted | โ | โ | โ | โ |
| --commit | โ | โ | โ | โ |
์๋ฐ ์ ์๋ฌ:
error: the argument '[PROMPT]' cannot be used with '--base <BRANCH>'
error: the argument '--base <BRANCH>' cannot be used with '--uncommitted'
์ฌํ์ธ: 2026-07-10, 0.144.1์์ ์ฌ์ฏ pairwise ์กฐํฉ ๋ชจ๋ ์ํธ ๋ฐฐํ ์ ์ง. upstream #7825๋ closed-as-not-planned์ด๋ฉฐ, ์ด์ ์ํ์ runtime ์ ์ฝ์ ๋ถ๋ฆฌํ๋ค.
๊ทผ๋ณธ ์์ธ๊ณผ ์์ธ ๋ถ์: references/known-issues.md ยง1
์
๋ ฅ ๋ฐฉ๋ฒ
programmatic ํธ์ถ์๋ CODEX_PROGRAMMATIC=1์ Codex ํ๋ก์ธ์ค์ ์ ์ฉํ๋ค. ์ด ๊ฐ์ CLI๊ฐ
์๋ ์ฃผ์
ํ์ง ์๋ caller ๊ณ์ฝ์ด๋ค (์ฌํ์ธ: 2026-07-10, 0.144.1 ํ๊ฒฝ๋ณ์ ๋ถ์ฌ ์ค์ธก).
| ๋ฐฉ๋ฒ | ์์ |
|---|
| ์ธ๋ผ์ธ ๋ฌธ์์ด (raw ์๋) | env CODEX_PROGRAMMATIC=1 codex exec -s workspace-write "์งง์ ์ง์" |
| stdin ํ์ดํ (programmatic) | cat prompt.md | env CODEX_PROGRAMMATIC=1 codex-exec-supervised -s workspace-write -o result.md - |
| stdin ๋ง์ปค (raw review) | cat prompt.md | env CODEX_PROGRAMMATIC=1 codex exec review - |
| ํ์ผ ๋ฆฌ๋ค์ด๋ ํธ (raw ์๋) | env CODEX_PROGRAMMATIC=1 codex exec -s workspace-write -o result.md < prompt.md |
| here-doc (raw ์๋) | env CODEX_PROGRAMMATIC=1 codex exec -s workspace-write <<'EOF' ... EOF |
PROMPT ์ธ์์ piped stdin์ ํจ๊ป ์ฃผ๋ฉด stdin ๋ด์ฉ์ด <stdin> ๋ธ๋ก์ผ๋ก append๋๋ค
(์ฌํ์ธ: 2026-07-10, 0.144.1). - ๋ง์ปค๋ PROMPT ์ธ์์ ๋์ฒด์ฌ์ด๋ฏ๋ก ๋ค๋ฅธ PROMPT ์ธ์์
๋์์ ์ฐ๋ฉด error: unexpected argument '-' found๋ก ์คํจํ๋ค.
์
ธ transport ๊ณ์ฝ
- stdout, stderr,
-o ๊ฒฐ๊ณผ๋ฅผ ์๋ก ๋ค๋ฅธ ํ์ผ์ ์ ์ฅํ๋ค. JSON/JSONL parser ์์์ 2>&1๋ก
stderr๋ฅผ ํฉ์น๋ฉด ํ์ฑ์ด ๊นจ์ง๋ค.
- pipeline์๋
set -o pipefail์ ์ ์ฉํ๋ค. zsh์์ Codex ์์ฒด exit๊ฐ ํ์ํ๋ฉด pipeline ์งํ
codex_rc=$pipestatus[2]๋ก ๋ณด์กดํ๋ค.
- ์ข์ธก ๋ช
๋ น(
cat ๋ฑ)์ ์คํจ๊น์ง ํ์ ์ ํฌํจํ๋ ค๋ฉด pipeline ์งํ ๋ฐฐ์ด์ ๋จผ์ ์ค๋
์ทํ๋ค
(pipe_rcs=("${PIPESTATUS[@]}"); zsh๋ ("${pipestatus[@]}")) โ $?๋ ๊ฐ๋ณ ์์๋ฅผ ๋์ค์
์ฝ์ผ๋ฉด ๊ทธ ์ฌ์ด ๋ช
๋ น์ด PIPESTATUS๋ฅผ ๋ฆฌ์
ํ๋ค.
| head, | tail, ๋ค์ด์ ; echo $?๋ ์๋ exit๋ฅผ ๊ฐ๋ฆด ์ ์์ผ๋ฏ๋ก ํ์ ๊ฒฝ๋ก์ ๋์ง ์๋๋ค.
set -o pipefail
cat prompt.md | env CODEX_PROGRAMMATIC=1 codex-exec-supervised \
-s workspace-write -o result.md - >stdout.log 2>stderr.log
codex_rc=$pipestatus[2]
ํ์ค ์คํ ์ ์ฐจ
NixOS์์ -s read-only / -s workspace-write๋ bubblewrap ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ค. system bwrap ๋ถ์ฌ ์
bundled fallback๊ณผ nested bwrap ๊ธฐ๊ฐ ๊ฒฐ๊ณผ๋ known-issues.md ยง16์ ์ฐธ์กฐํ๋ค.
์ผ๋ฐ exec โ Claude Codeยทheadless ์๋ํ
ํ๋กฌํํธ๋ฅผ ํ์ผ๋ก ์์ฑํ๊ณ , stdin ํ์ดํ๋ก ์ ๋ฌํ๋ฉฐ, -o๋ก ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ค.
์๋ ๊ณ ์ /tmp ๊ฒฝ๋ก๋ ๋จ์ผ ์๋ ์คํ ๋ฐ๋ชจ๋ค โ ๋์/๋ณ๋ ฌ ์คํ์ ๊ฒฐ๊ณผยท๋ก๊ทธ๋ฅผ ์๋ก ๋ฎ์ด์ฐ๋ฏ๋ก
์ธ์
๋ณ ๋ค์์คํ์ด์ค ๋๋ ํ ๋ฆฌ๋ก ๊ฒฉ๋ฆฌํ๋ค (known-issues.md ยง12;
๊ฒฝ๋ก ๊ฒฉ๋ฆฌ ์ ์์ suffix์ literal ์ฌ์ฌ์ฉ ๊ท์น์ #632 ์ ์ ๋ฐ๋ฅธ๋ค):
cat > /tmp/prompt.md <<'PROMPT'
์ด ๋ณ๊ฒฝ์ ๋ฐฐํฌ ๋ฆฌ์คํฌ๋ฅผ 3๊ฐ ์ด๋ด๋ก ์ง์ ํ๋ค.
PROMPT
โ ๏ธ run_in_background ํ๊ฒฝ: ์ฌ๊ธฐ์ Bash tool ํธ์ถ์ ์ข
๋ฃํ๊ณ , ์๋๋ฅผ ๋ณ๋ ํธ์ถ๋ก ์คํํ๋ค (ยง11 ํ์ ํญ๋ชฉ).
rm -f /tmp/result.md
set -o pipefail
cat /tmp/prompt.md | env CODEX_PROGRAMMATIC=1 codex-exec-supervised \
-s workspace-write -o /tmp/result.md - \
> /tmp/stdout.log 2> /tmp/stderr.log
pipe_rcs=("${PIPESTATUS[@]}")
[ "${pipe_rcs[0]}" -eq 0 ] && [ "${pipe_rcs[1]}" -eq 0 ] && test -s /tmp/result.md \
&& ! grep -q "ERROR:" /tmp/stderr.log
์ฌ์ฉ์๊ฐ literal raw ์คํ์ ์์ฒญํ 1ํ์ฑ ์๋ ์ง๋จ์์๋ ์ธ๋ผ์ธ ํ๋กฌํํธ๋ ๊ฐ๋ฅํ๋ค:
env CODEX_PROGRAMMATIC=1 codex exec -s workspace-write "git diff ๊ธฐ์ค์ผ๋ก ํ๊ท ๊ฐ๋ฅ์ฑ ํ ์ค ์์ฝ"
์ฝ๋ ๋ฆฌ๋ทฐ โ scope flag๋ง ์ฌ์ฉ (Claude Codeยทheadless ์๋ํ)
์๋ ์ธ ๋ช
๋ น์ ์์ฐจ ์คํํ๋ ํ์ดํ๋ผ์ธ์ด ์๋๋ผ scope๋ณ ํ์ผ ๋์์ด๋ค.
์ ํํ ํ๋๋ง ์คํํ๊ณ , ์คํ ์ ๊ฒฐ๊ณผ ํ์ผ์ ์ด๊ธฐํํ๋ฉฐ, ์ข
๋ฃ ํ ์ฑ๊ณต ๊ณ์ฝ์ ๊ฒ์ฆํ๋ค:
rm -f /tmp/review.md
env CODEX_PROGRAMMATIC=1 codex-exec-supervised review --base main \
-o /tmp/review.md > /tmp/review-stdout.log 2> /tmp/review-stderr.log
review_rc=$?
[ "$review_rc" -eq 0 ] && test -s /tmp/review.md \
&& ! grep -q "ERROR:" /tmp/review-stderr.log
stderr ๊ฒ์ฌ๋ ์ฑ๊ณต ๊ณ์ฝ ์กฐ๊ฑด 2์ ๊ตฌํ์ด๋ค โ usage limitยทsandbox panic ๋ฑ CLI ์ค๋ฅ๋
ERROR: prefix๋ก ์ถ๋ ฅ๋๋ค (์งํ ๋ก๊ทธยท๋ฐฐ๋์๋ ์ด prefix๊ฐ ์๋ค). stderr์๋ ์ต์ข
๋ฉ์์ง
์ฌ๋ณธ๋ ๋จ์ผ๋ฏ๋ก, ๋ณธ๋ฌธ์ ์ฐ์ฐํ ERROR:๊ฐ ํฌํจ๋๋ฉด ๋ณด์์ ์ผ๋ก ์คํจ ์ฒ๋ฆฌํ๊ณ ์ง์ ํ์ธํ๋ค.
review ๊ฒฐ๊ณผ ์ ์ฅ์๋ -o(--output-last-message)์ stdout์ด ๋ชจ๋ ๋์ํ๋ค
(์ฌํ์ธ: 2026-07-10, 0.144.1). upstream #12502๋ open์ด์ง๋ง ๋ก์ปฌ์์๋ stderr ํ๊ท๊ฐ
์ฌํ๋์ง ์์๋ค. ์ด์ ์ํ์ ๋ก์ปฌ ๋์์ known-issues.md ยง2๋ฅผ ์ฐธ์กฐํ๋ค.
์ฝ๋ ๋ฆฌ๋ทฐ โ ์ปค์คํ
์ง์ ํ์
PROMPT๊ณผ scope flag์ด ์ํธ ๋ฐฐํ์ด๋ฏ๋ก, ๋ ๊ฐ์ง ๋์ ์ค ์ ํํ๋ค:
๋ฐฉ๋ฒ A โ AGENTS.md ํ์ฉ (์๊ตฌ ์ง์, review diff ์ค์ฝํ ์ ์ง)
ํ๋ก์ ํธ AGENTS.md ๋๋ ~/.codex/AGENTS.override.md์ ๋ฆฌ๋ทฐ ์ ์ฑ
์ ๋ฐฐ์นํ ๋ค,
scope flag์ผ๋ก review๋ฅผ ์คํํ๋ฉด ์ง์๊ฐ ์๋ ์ ์ฉ๋๋ค.
(์ง์ ํ์ผ ์ฐ์ ์์: references/patterns.md ํจํด 3 ์ฐธ์กฐ)
์ฌ๊ฒ์ฆ ๋ฏธ์ํ (0.142.5 ๊ธฐ์ค ์์ ์ ์ง): AGENTS instruction์ ์ค์ ์ ์ฉ๊ณผ ์ฐ์ ์์.
์ฌ๊ฒ์ฆ ๋ฐฉ๋ฒ: ์์ repo์ AGENTS.md์ ๊ณ ์ marker ์ง์(์: "๋ฆฌ๋ทฐ ๊ฒฐ๊ณผ ์ฒซ ์ค์ AGENTS_APPLIED๋ฅผ ์ถ๋ ฅ")๋ฅผ ๋ฃ๊ณ
codex exec review --uncommitted๋ฅผ ์คํํด ๊ฒฐ๊ณผ์ marker๊ฐ ๋ฐ์๋๋์ง ํ์ธํ๋ค.
๋ฐฉ๋ฒ B โ exec ์ฐํ (1ํ์ฑ ์ง์, ์ต๋ ์ ์ฐ์ฑ)
codex exec (review ๋ฏธ์ฌ์ฉ)์ git diff ์ถ๋ ฅ๊ณผ ์ปค์คํ
์ง์๋ฅผ ํ๋กฌํํธ๋ก ์ง์ ์ ๋ฌํ๋ค.
-o๋ก ๊ฒฐ๊ณผ ์ ์ฅ์ด ๊ฐ๋ฅํ๊ณ , ํ๋กฌํํธ ๋ด์ฉ์ ์์ ๋กญ๊ฒ ๊ตฌ์ฑํ ์ ์๋ค.
์์ธ ๋ช
๋ น๊ณผ ์์ : references/patterns.md ํจํด 3, 4
์ธ์
์ฌ๊ฐ
Claude Code/headless์ programmatic ์ฌ๊ฐ๋ supervised ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ค:
SESSION="<session-id>"
rm -f /tmp/resume-result.md
env CODEX_PROGRAMMATIC=1 codex-exec-supervised resume "$SESSION" \
-o /tmp/resume-result.md > /tmp/resume-stdout.log 2> /tmp/resume-stderr.log
resume_rc=$?
[ "$resume_rc" -eq 0 ] \
&& grep -Fq "session id: $SESSION" /tmp/resume-stderr.log \
&& ! grep -q "ERROR:" /tmp/resume-stderr.log \
&& test -s /tmp/resume-result.md
๋ณํ: resume --last (๊ฐ์ cwd์ ๋ง์ง๋ง ์ธ์
), resume --last --all (cwd ํํฐ ํด์ ).
์ฌ์ฉ์๊ฐ ์์ฒญํ 1ํ์ฑ ์๋ ์ง๋จ์ alias๋ฅผ ํผํ๋๋ก raw command codex exec resume --last๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
--ephemeral ์ธ์
์ ์ ์ฅ๋์ง ์๋๋ค. 0.144.1์์ ์ ์ฅ ์ธ์
์ด ์๋ cwd์
resume --last๋ ์ค๋ฅ ๋์ ์ session id๋ก ์กฐ์ฉํ ์์ํด exit 0์ ๋ฐํํ๋ค โ ์ ์์ ๊ฐ
session idยท์๋ต context ํ์ธ์ ํฌํจํ๋ ์ด์ ๋ค. ๋ถ์ผ์นํ๊ฑฐ๋ ๊ฒฐ๊ณผ๊ฐ ๋น๋ฉด ์ฌ๊ฐ ์คํจ๋ก ์ฒ๋ฆฌํ๋ค.
์ฑ๊ณต ๊ณ์ฝ
ํ๋ก์ธ์ค exit๋ง์ผ๋ก ์
๋ฌด ์ฑ๊ณต์ ํ์ ํ์ง ์๋๋ค. ์๋ ๋ค ์กฐ๊ฑด์ ๋ชจ๋ ํ์ธํ๋ค.
- wrapper/CLI exit๊ฐ 0์ด๋ค.
- stderr์ timeout, usage limit, sandbox denial, unsupported model ์ค๋ฅ๊ฐ ์๋ค
(๊ตฌํ:
! grep -q "ERROR:" <stderr> โ CLI ์ค๋ฅ๋ ERROR: prefix๋ก ์ถ๋ ฅ๋๊ณ ์งํ ๋ก๊ทธยท๋ฐฐ๋์๋ ์๋ค).
- ๊ธฐ๋ ์ฐ์ถ๋ฌผ์ด ์กด์ฌํ๊ณ ๋น์ด ์์ง ์๋ค:
test -s "$RESULT".
- ๋ฐ๋ณต ๋ผ์ด๋๋ผ๋ฉด ์ง์ ๊ฒฐ๊ณผ ๋๋น ์ findingยท์์ ยทํ์ ๊ฐ์ ์ง์ฒ delta๊ฐ ์๋ค.
์๋ฃ ํ์์ ์๊ตฌํ ์์
์ ๊ฒฐ๊ณผ ๋ณธ๋ฌธ์๋ ๊ทธ ํ์์ด ์์ด์ผ ํ๋ค. ์ง์ฒ ์๋ pass๊ฐ ์ฐ์๋๋ฉด circuit
breaker๋ก ์ค๋จํ๊ณ ๊ฐ์ ํธ์ถ์ ์ฆ์์ํค์ง ์๋๋ค. fan-out์ ํจํด 8 ์ค๋ชจํฌ๋ฅผ ํ ๋ฒ ํต๊ณผํ ๋ค ์์ํ๋ค.
| ๋ถ๋ฅ | ์ ํธ | ์ฒ๋ฆฌ |
|---|
| PATH ๋ฏธํด์ | command -v codex ์คํจ ๋๋ exit 127 | command -v codex โ codex-exec-supervised --check โ ํ์ธ๋ ์ ๋๊ฒฝ๋ก ์์ผ๋ก ์ง๋จ. ์ค์น ๋ถ์ฌ๋ก ๋จ์ ํ์ง ์๋๋ค. |
| ๋ถ๋ชจ sandbox denial | session/config ํ์ผ ์ฐ๊ธฐ ๊ฑฐ๋ถ, nested ์คํ | ์์ ๊ถ ๋ณ๊ฒฝ ์์ด known-issues.md ยง18๋ก ๋ถ๊ธฐ |
| timeout | wrapper exit 124/137 | stderrยทํ๋ก์ธ์ค ์ ๋ฆฌ๋ฅผ ํ์ธํ ๋ค fresh retry 1ํ๋ง ํ์ฉ |
| usage limit | usage/rate limit ๋ช
์ | ์ ๊ท ์ธ์
์ฌ์๋๋ ๋ฌด์ตํ๋ฏ๋ก fail-fast. ์ด๋ฏธ ์งํ ์ค์ธ ์ธ์
์ ๊ณ์๋ ์ ์์ |
| unsupported model | metadata warning ๋๋ unsupported error | -m์ ์ ๊ฑฐํ๊ณ config ๊ธฐ๋ณธ ๋ชจ๋ธ๋ก ์ ํ๋ fresh retry |
| exit 0 + ์ฐ์ถ๋ฌผ ์์ | test -s ์คํจ | ์คํจ๋ก ์ฒ๋ฆฌํ๊ณ stderrยท๋ผ์ฐํ
ยทresume session id๋ฅผ ์กฐ์ฌ |
Gotchas
--search๋ exec์์ ๋ฏธ๋์: error: unexpected argument '--search' found. ๋์ config key -c web_search=live๋ strict config ๊ฒ์ฆ์ ํต๊ณผํ์ผ๋ ์ค์ tool ์ ๊ณต์ ์ฌ๊ฒ์ฆ ๋ฏธ์ํ (2026-07-10, 0.144.1).
--full-auto๋ 0.144.1 help์์ ์จ๊ฒจ์ก์ง๋ง parser๊ฐ ์์ฉํ๊ณ deprecation warning์ ๋ธ๋ค. ์ ํธ์ถ์ -s workspace-write๋ฅผ ์ฌ์ฉํ๋ค. ๋ช
์ํ -s ๊ฐ์ด config.toml์ sandbox_mode๋ฅผ overrideํ๋ค (2026-07-03, 0.142.5 ์ค์ธก: -s read-only ์ง์ ์ config๊ฐ danger-full-access์ฌ๋ read-only๋ก ์คํ๋จ; 0.144.1 ์ฌ๊ฒ์ฆ ๋ฏธ์ํ).
- CODEX_API_KEY๋ exec ์ ์ฉ: interactive TUI์ VS Code extension์์๋ ๋ฌด์๋จ. OPENAI_API_KEY๋ auth ์ฒด์ธ์ ๋ฏธ์ฐธ์ฌ (TUI prefill ์ ์ฉ). ์ฐ์ ์์: CODEX_API_KEY > ephemeral tokens > auth.json. ์ฌ๊ฒ์ฆ ๋ฏธ์ํ (0.142.5 ๊ธฐ์ค ์์ ์ ์ง; ์์ธ: known-issues.md ยง17)
- ephemeral resume silent fallback:
--ephemeral ์๋ณธ์ ์ ์ฅ๋์ง ์์ผ๋ฉฐ, ์ ์ฅ ์ธ์
์ด ์๋ cwd์ resume --last๋ 0.144.1์์ ์ค๋ฅ ๋์ ์ ์ธ์
์ ์์ํ๊ณ exit 0์ ๋ฐํํ๋ค. session id์ ์๋ต context๋ก ํ์ ํ๋ค.
codex review (top-level) vs codex exec review: ์ ์๋ -m, --json, -o, --output-schema, --ephemeral, -s/--sandbox ๋ฑ ๋ฏธ์ง์ (์ฌํ์ธ: 2026-07-10, 0.144.1 help). ๋น๋ํํ ์๋ํ์๋ ๋ฐ๋์ codex exec review ์ฌ์ฉ
- Bash tool sandbox์์
& + $! ๋ฏธ์๋: Claude Code์ Bash tool์์ background process PID ์บก์ฒ($!)๊ฐ ๋ฆฌํฐ๋ด ๋ฌธ์์ด๋ก ๋ฐํ๋จ. shell-level ๋ณ๋ ฌ ๋์ ์ฌ๋ฌ ๋ณ๋ ฌ Bash tool ํธ์ถ + supervised stdin pipe๋ฅผ ์ฌ์ฉํ๋ค. ์ด ์ ์ฝ์ Codex ์ธ์
์ native subagent ๊ฒฝ๋ก์๋ ์ ์ฉ๋์ง ์๋๋ค. ์ฌ๊ฒ์ฆ ๋ฏธ์ํ (0.142.5 ๊ธฐ์ค ์์ ์ ์ง; ์์ธ: known-issues.md ยง11)
- stdin pipe๋ก stdin hang ๋ฐฉ์ง:
cat file | env CODEX_PROGRAMMATIC=1 codex-exec-supervised ... -๋ก EOF๋ฅผ ๋ณด์ฅํ๋ค. Reading additional input... banner ํ๋๋ง์ผ๋ก hang์ด๋ผ ๋จ์ ํ์ง ๋ง๊ณ , banner + ๋ฌด์ง์ฒ + ๊ฒฐ๊ณผ ๋ฏธ์์ฑ์ ํจ๊ป ํ์ธํ๋ค. ์์ธ: known-issues.md ยง14
-c hooks.* inline override๋ stdin๊ณผ ๋
๋ฆฝ์ ์ผ๋ก hang์ ์ ๋ฐํ ์ค์ธก ์ถ์ด๋ค. programmatic ํธ์ถ์์ ์ ๊ฑฐํ๊ณ known-issues.md ยง15์ supervisorยทtimeout ๊ณ์ฝ์ ์ ์ฉํ๋ค.
- codex exec
--json์ multi-agent spawn/child ์ด๋ฒคํธ๋ฅผ ๋
ธ์ถํ์ง ์๋๋ค (๊ด์ธก์ฑ ํ๊ณ, 0.144.1). collaboration.spawn_agent๋ ์ค์ ๋ก ์๋ํด child๋ฅผ ์์ฑยท์คํํ์ง๋ง, ๊ณต๊ฐ --json์๋ tool:"wait" ์ด๋ฒคํธ๋ง ๋ณด์ด๊ณ ๊ทธ receiver_thread_ids๊ฐ []๋ค โ ์ด๋ฅผ spawn ์คํจ๋ก ์คํํ์ง ๋ง๋ผ (child๊ฐ ์ด๋ฏธ ์คํ๋์ ์ ์์ด ์ฌ์๋ ์ ์ค๋ณต ์คํ). ์ค์ spawn ์ฌ๋ถ๋ ~/.codex/sessions์ persisted rollout(spawn_agent/sub_agent_activity/inter_agent_communication_metadata)์ผ๋ก ํ์ธํ๋ค. ์์ธยท์ฌ๊ฒ์ฆ probe(๋ฒ์ ๋ณํ ์ ์ฌํ์ธ): known-issues.md ยง19
๋ชจ๋ธ ์ฌ์ฉ ์์น
- ๊ธฐ๋ณธ ๋ชจ๋ธ:
~/.codex/config.toml์ model ๊ฐ์ ๋ฐ๋ฅธ๋ค.
- ๋ฆฌ๋ทฐ ์ ์ฉ ๋ชจ๋ธ:
review_model ์ค์ ์ผ๋ก ๋ถ๋ฆฌ ๊ฐ๋ฅํ๋ค.
- ๋ชจ๋ธ/review_model runtime๊ณผ unsupported-model exact response๋ ์ฌ๊ฒ์ฆ ๋ฏธ์ํ (0.142.5 ๊ธฐ์ค ์์ ์ ์ง).
- ์ค๋ฌด ์์น:
-m์ ์๋ตํ๊ณ ๊ธฐ๋ณธ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค.
model is not supported ์ค๋ฅ ์ -m์ ์ ๊ฑฐํ๊ณ ์ฌ์๋ํ๋ค.
- ๋ชจ๋ธ๋ช
์ ๋งค๋ฒ ๋ค๋ฅด๊ฒ ํผ์ฉํ์ง ์๋๋ค.
์ด์ ์ฒดํฌ๋ฆฌ์คํธ
์คํ ์ :
command -v codex๋ก ๋น๋ํํ PATH๋ฅผ ํ์ธํ๊ณ , programmatic ๊ฒฝ๋ก๋ command -v codex-exec-supervised && codex-exec-supervised --check๊น์ง ํต๊ณผ
command codex --version์ผ๋ก ๊ธฐ๋ ๋ฒ์ ํ์ธ
pwd๊ฐ ๋์ ์ ์ฅ์ ๋ฃจํธ์ธ์ง ํ์ธ
- ํ๋กฌํํธ ํ์ผ ๊ฒฝ๋ก์ ๊ฒฐ๊ณผ ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ถ๋ฆฌ
- fan-out ์ ํจํด 8 ์ค๋ชจํฌ 1ํ ํต๊ณผ
์คํ ํ:
- CLI/wrapper exit ๋ณด์กด ๋ฐ ํ์ธ
- stderr์
ERROR: prefix๊ฐ ์๋์ง ํ์ธ (์ฑ๊ณต ๊ณ์ฝ ์กฐ๊ฑด 2)
- ๊ฒฐ๊ณผ ํ์ผ์ด ๋น์ด ์์ง ์์์ง ํ์ธ (
test -s "$RESULT")
- ๋น ๊ฒฐ๊ณผ ์ stderr ๋ก๊ทธ๋ถํฐ ํ์ธ
- ๋ฐ๋ณต ์์
์ด๋ฉด ์ง์ ๊ฒฐ๊ณผ ๋๋น ์ง์ฒ delta ํ์ธ
ํ์ง ๋ง์์ผ ํ ํจํด
| ๊ธ์ง ํจํด | ๋ฐ์ ์๋ฌ | ์ฌ๋ฐ๋ฅธ ๋์ |
|---|
| review์์ PROMPT + scope flag | '[PROMPT]' cannot be used with '--base' | ์์ฌ๊ฒฐ์ ํธ๋ฆฌ์ ๋ฐฉ๋ฒ A ๋๋ B |
| exec ์ ์ฉ ํ๋๊ทธ๋ฅผ review์ ์ ๋ฌ | unexpected argument | exec ์ ์ฉ/๊ณตํต ๋งคํธ๋ฆญ์ค ํ์ธ |
PROMPT ์ธ์์ - ๋ง์ปค ๋์ ์ฌ์ฉ | unexpected argument '-' | PROMPT ๋๋ stdin marker ์ค ํ๋๋ง ์ ํ |
--ephemeral ๋ค resume --last์ exit 0์ ์ฌ๊ฐ ์ฑ๊ณต์ผ๋ก ๊ฐ์ฃผ | ์ ์ธ์
silent fallback | session id์ ์๋ต context ํ์ธ |
programmatic ํธ์ถ์ raw codex exec ์ฌ์ฉ | hang/์์ ํ๋ก์ธ์ค ์์กด | ์คํ ๊ฒฝ๋ก ๊ฒ์ดํธ์ supervised wrapper ์ฌ์ฉ |
-c hooks.* inline override | stdin๊ณผ ๋ฌด๊ดํ silent hang ๊ฐ๋ฅ | override ์ ๊ฑฐ + ยง15 supervisor ์ ์ฉ |
JSON parser ์ 2>&1 | stderr ํผ์
์ผ๋ก JSON ํ์ฑ ์คํจ | stdout/stderr/result ๋ถ๋ฆฌ |
ํ์ pipeline ๋์ head/tail/; echo $? | ์ exit ์ํ | pipefail๊ณผ ์ฆ์ exit ๋ณด์กด |
-m o3 / -m o4-mini ๋ฑ ๋นCodex ๋ชจ๋ธ ์ง์ | "Model metadata not found" + "model is not supported" | -m ์๋ต, config.toml ๊ธฐ๋ณธ ๋ชจ๋ธ ์ฌ์ฉ |
-m ํ๋๊ทธ๋ก ๋งค๋ฒ ๋ค๋ฅธ ๋ชจ๋ธ ์ง์ | ๋ถ์ผ์น/์๋ฌ ์ํ | config.toml ๊ธฐ๋ณธ๊ฐ ์ฌ์ฉ ์์น |
| ์คํจ ์์ธ ๋ฏธํ์ธ ํ ๋ฐ๋ณต ์ฌ์๋ | ๋์ผ ์๋ฌ ๋ฐ๋ณต | known-issues.md ์ง๋จ ์ ์ฐจ |
| ๊ธด ๋ฃจํ์์ ๊ฒฐ๊ณผ ํ์ผ ์ ์ฅ ์๋ต | ๊ฒฐ๊ณผ ์ ์ค | -o ๋๋ ๋ฆฌ๋ค์ด๋ ํธ ํ์ ์ฌ์ฉ |
| child๊ฐ ๊ฐ์ collector/fan-out์ ๋ค์ ์์ฑ | ๋ฌดํ ์๊ธฐ์ฆ์ | ์ค์ผ์คํธ๋ ์ด์
์ ๋ถ๋ชจ 1๊ณ์ธต์์๋ง ์ํ |
๊ณต๊ฐ exec --json์ ๋น receiver_thread_ids๋ฅผ spawn ์คํจ๋ก ํ์ | wait ์ด๋ฒคํธ ํ๋์ผ ๋ฟ โ child๋ ์คํ๋์ ์ ์์ด ์คํยท์ค๋ณต ์คํ | persisted rollout์์ spawn_agent ํ์ธ (known-issues.md ยง19) |
์ฐธ์กฐ
๋ฌธ์์ CLI ๋์์ด ๋ค๋ฅผ ๋๋ CLAUDE.md์ "์คํฌ ๋ฌธ์ ๋ถ์ผ์น ์ ํ๋ ์์น"์ ๋ฐ๋ฅธ๋ค.
help๋ ๊ณต๊ฐ surface์ SSOT๋ค. help์์ ์ฌ๋ผ์ง hidden flag์ ์ ๊ฑฐ ์ฌ๋ถ๋ ์คํ smoke๋ก๋ง ํ์ ํ๋ค.
๋ฌธ์์์ ๋ช
๋ น ๋ฌธ์์ด์ ์ฐพ์ ๋๋ command substitution์ ํผํ๋๋ก rg -F 'codex exec'์ฒ๋ผ
์์๋ฐ์ดํ์ fixed-string ๊ฒ์์ ์ฌ์ฉํ๋ค.