Quick Comparison
| 결정할 것 | sandbox | approval policy |
|---|---|---|
| 역할 | 파일·네트워크·명령의 기술적 경계 | 경계를 넘기 전 멈춰 물을지 결정 |
| 기본 로컬 작업 | workspace-write | on-request |
| 읽기만 할 때 | read-only | 필요한 명령만 승인 |
| 제약 해제 | danger-full-access | never와 함께면 승인 없이 진행 |
# 현재 실행 한 번에만 적용
codex --sandbox workspace-write --ask-for-approval on-request
# 파일 수정 없이 조사만 할 때
codex --sandbox read-only --ask-for-approval untrusted샌드박스 안에서 허용된 명령은 승인 없이 진행할 수 있고, 경계 밖으로 나가야 하면 approval policy가 작동합니다. danger-full-access와 never를 같이 쓰는 것은 전면 권한 부여이므로, 작업 공간을 넓히는 문제는 먼저 writable root 또는 별도 worktree로 해결합니다.
두 제어의 경계
sandbox는 Codex가 실행하는 git, 패키지 관리자, test runner 같은 spawned command에도 적용되는 실제 접근 경계입니다. workspace-write는 현재 workspace와 system temporary directory 안의 일반 작업을 허용하는 로컬 기본 흐름이고, network와 추가 경로는 별도의 허용 범위가 필요할 수 있습니다.
approval policy는 실행 자체의 권한이 아니라 언제 사람이나 reviewer에게 판단을 넘길지 정합니다. untrusted는 trusted command 밖의 명령을 승인 대상으로 만들고, on-request는 sandbox 안에서는 진행하다 경계를 넘어야 할 때 묻습니다. never는 승인 대화가 없으므로, sandbox가 이미 충분히 좁을 때만 자동화에 사용합니다.
sandbox: 이 명령이 파일·네트워크에 실제로 접근할 수 있는가
approval: 접근이 필요할 때 누구에게 언제 확인할 것인가
승인을 한 번 받았다고 sandbox가 영구히 넓어지는 것은 아니다.macOS, Linux, WSL2, native Windows는 sandbox 구현이 다릅니다. Linux/WSL2에서는 bubblewrap 또는 user namespace 설정 때문에 sandbox warning이 날 수 있으므로, 권한 오류와 sandbox 초기화 오류를 같은 문제로 취급하지 않습니다.
설정 방식 선택
기존 sandbox 설정은 sandbox_mode, approval_policy, sandbox_workspace_write로 구성합니다. 재사용할 파일·네트워크 정책이 필요하면 권한 프로필과 네트워크 allowlist를 사용합니다. 두 체계는 함께 합성되지 않습니다. 로드된 config, --sandbox, 선택 profile 중 어느 곳에든 sandbox_mode가 있으면 Codex는 이전 sandbox 체계를 우선합니다.
# ~/.codex/config.toml: legacy sandbox 설정을 계속 쓸 때의 최소 예시
sandbox_mode = "workspace-write"
approval_policy = "on-request"
approvals_reviewer = "user"
[sandbox_workspace_write]
writable_roots = ["../shared-library"]여러 저장소를 함께 수정해야 한다고 danger-full-access로 올릴 필요는 없습니다. 필요한 directory만 writable_roots로 추가하거나, 연관 작업을 하나의 local project 또는 worktree로 엽니다. desktop app과 IDE의 권한 메뉴 이름·표시 항목은 설정과 버전에 따라 달라질 수 있으므로 현재 선택값을 확인합니다.
승인 범위와 위험
approvals_reviewer = "user"는 승인 요청을 사용자에게 보냅니다. auto_review를 사용하더라도 sandbox 밖의 동작이 자동 허용되는 것은 아니며, 자동 review가 가능한 요청만 reviewer가 판단합니다. 이미 sandbox 안에서 허용된 동작은 reviewer를 거치지 않습니다.
approval_policy = "never"는 작업을 더 안전하게 만드는 설정이 아닙니다. workspace-write처럼 좁은 sandbox와 명확한 작업 범위가 먼저이고, full access는 외부에서 별도 격리한 자동화처럼 그 권한이 의도된 경우에만 사용하십시오.
참고 링크
2 sources