Codex CLI 승인 정책과 샌드박스 설정 바로잡기
Codex CLI 의 approval_policy 와 sandbox_mode 값이 각각 무엇을 정하는지 확인하고, untrusted 오류를 고치고, 명령마다 승인을 묻는 문제를 줄입니다.
approval_policy(언제 사람에게 묻는가)와 sandbox_mode(명령이 무엇에 닿을 수 있는가)를 설치된 버전 기준으로 확인하고, 옛 설정이 내는 오류를 고칩니다.
[1] 버전을 확인합니다.
$ codex --versioncodex-cli 0.163.0[2] 쓸 수 있는 값을 도움말에서 봅니다. 값은 버전마다 달라지니 설치된 도움말이 기준입니다.
$ codex --help | grep -A3 -E '^\s+-(s|a), ' -s, --sandbox <SANDBOX_MODE> Select the sandbox policy to use when executing model-generated shell commands [possible values: read-only, workspace-write, danger-full-access]-- -a, --ask-for-approval <APPROVAL_POLICY> Configure when the model requires human approval before executing a command-a 의 값은 on-request(모델이 판단해 묻기)와 never(묻지 않고, 실패는 모델에 그대로 돌려줌)입니다. sandbox_mode 는 아래와 같습니다(공식 문서).
read-only— 읽기 전용.workspace-write— 작업 폴더 안에서 쓰기. 작업 폴더 밖 쓰기와 네트워크는 승인이 필요하고, 네트워크는 기본 꺼짐.danger-full-access— 샌드박스도 승인도 없음. 권하지 않음.
[3] 두 값을 config.toml 에 명시합니다.
approval_policy = "on-request"sandbox_mode = "workspace-write"[4] approval_policy = "untrusted" 가 있으면 시작이 막힙니다. 해당 줄을 지웁니다.
$ codex exec "hi"Error: approval_policy = "untrusted" is no longer supported; remove this setting-c 'approval_policy="untrusted"' 로 넘겨도 같은 오류이고, -a untrusted 는 invalid value 'untrusted' for '--ask-for-approval <APPROVAL_POLICY>' 입니다. 예전의 엄격한 동작이 필요하면 approval_policy 를 빼고 프로젝트별 trust_level = "untrusted" 를 씁니다.
[projects."/path/to/project"]trust_level = "untrusted"[5] --full-auto 를 쓰던 스크립트는 명시한 옵션으로 바꿉니다. 0.163.0 은 이 옵션을 받지 않습니다.
$ codex exec --full-auto "hi"error: unexpected argument '--full-auto' found$ codex -a on-request -s workspace-write[6] 설정 철자 오류를 잡으려면 --strict-config 를 붙입니다. 없으면 모르는 키가 조용히 무시될 수 있습니다. 값이 틀리면 옵션 없이도 오류가 납니다.
$ codex --strict-config exec --skip-git-repo-check "hi"Error loading config.toml:~/.codex/config.toml:1:1: unknown configuration field `approval_polcy`$ codex exec "hi"Error loading config.toml: unknown variant `workspce-write`, expected one of `read-only`, `workspace-write`, `danger-full-access`in `sandbox_mode`[7] 명령마다 승인을 묻는다면 원인부터 가립니다. 자주 걸리는 곳은 세 가지입니다.
- 샌드박스가
read-only이면 쓰기마다 승인이 필요합니다.workspace-write로 올립니다. workspace-write에서 네트워크는 꺼져 있습니다. 필요하면 허용합니다.
[sandbox_workspace_write]network_access = true- 쓰기 가능 폴더 안에서도
.git,.agents,.codex,.aws(디렉터리로 있을 때)는 읽기 전용입니다.
묻는 항목을 골라 자동 거절하려면 approval_policy = { granular = { ... } } 를 씁니다(키: sandbox_approval, rules, mcp_elicitations, request_permissions, skill_approval). 승인 요청을 검토 에이전트에 먼저 보내려면 approvals_reviewer = "auto_review" 입니다.