Quick Reference
공통 기본값은 ~/.codex/config.toml, 저장소 전용 값은 .codex/config.toml, 일시적인 변경은 CLI flag에 둡니다. 같은 키가 겹치면 CLI flag·--config → 가장 가까운 trusted 프로젝트 설정 → 선택 profile 파일 → 사용자 설정 → system 설정 → 기본값 순으로 적용됩니다.
# ~/.codex/config.toml: 모든 local project에 적용할 개인 기본값
model = "gpt-5.6"
approval_policy = "on-request"
sandbox_mode = "workspace-write"
web_search = "cached"
model_reasoning_effort = "high"# .codex/config.toml: 이 repository에서만 필요한 값
approval_policy = "untrusted"# 이번 실행에서만 바꾼다. 파일의 값을 수정하지 않는다.
codex --config 'model_reasoning_effort="medium"'
# $CODEX_HOME/review.config.toml을 사용자 설정 위에 올린다.
codex --profile review설정 레이어와 우선순위
~/.codex/config.toml은 개인 기본값입니다. 모델, 응답 성향, 일반적인 sandbox처럼 어느 저장소에서나 같은 선택을 여기에 둡니다. .codex/config.toml은 repository 또는 하위 폴더에만 적용할 규칙입니다. 프로젝트 root부터 현재 작업 directory까지 여러 파일이 있으면 현재 directory에 가까운 파일이 이깁니다.
프로젝트 레이어는 trusted project일 때만 읽습니다. 프로젝트를 신뢰하지 않으면 .codex/config.toml뿐 아니라 그 프로젝트의 Rules와 Hook도 건너뜁니다. 설정을 고쳤는데 반영되지 않을 때는 키 철자보다 먼저 project trust와 현재 작업 directory를 확인해야 합니다.
--profile review는 [profiles.review] 테이블을 찾는 방식이 아닙니다. 현재 Codex는 $CODEX_HOME/review.config.toml을 base user config 위에 레이어로 올립니다. profile에는 리뷰에서만 달라지는 값만 두고, 모든 작업에 공통인 값은 config.toml에 남겨야 우선순위를 추적하기 쉽습니다.
문제: repository의 approval_policy를 untrusted로 바꿨는데 on-request처럼 보인다.
확인: --ask-for-approval 또는 --config가 있는가 → 더 안쪽 .codex/config.toml이 있는가
→ project가 trusted인가 → 선택한 profile이 같은 키를 덮는가자주 바꾸는 설정값
| 키 | 의미 | 언제 바꾸는가 | 주의할 점 |
|---|---|---|---|
model | CLI와 IDE의 기본 모델 | 작업 성격에 맞는 허용 모델을 고를 때 | 조직 관리 정책이 모델 선택을 제한할 수 있습니다. |
approval_policy | 명령 실행 전 승인 요청 방식 | 탐색, 구현, 무인 실행의 승인 강도를 바꿀 때 | never는 sandbox를 넓히지 않지만 사람에게 묻지 않습니다. |
sandbox_mode | spawned command의 파일·네트워크 접근 경계 | 읽기 전용 조사와 workspace 수정 작업을 나눌 때 | read-only, workspace-write, danger-full-access는 위험도가 크게 다릅니다. |
web_search | 웹 검색의 수집 방식 | 최신 외부 사실이 필요한 작업을 할 때 | cached는 기본값이며, 결과도 신뢰하지 않고 검증해야 합니다. |
model_reasoning_effort | 지원 모델의 추론 강도 | 복잡한 설계·검토에서 더 많은 추론이 필요할 때 | 높은 값은 응답 시간과 사용량을 늘릴 수 있습니다. |
shell_environment_policy | spawned command로 전달할 환경 변수 | CI token이나 개인 secret 노출을 줄일 때 | 기본 exclude를 끄면 KEY, SECRET, TOKEN 이름의 변수도 전달될 수 있습니다. |
권한을 재사용 가능한 filesystem·network 정책으로 정의해야 한다면 sandbox_mode가 아니라 default_permissions와 [permissions.<name>]을 사용합니다. permission profile과 legacy sandbox는 하나의 세션에서 합성되지 않습니다. 어느 레이어에든 sandbox_mode가 있거나 --sandbox를 주면 legacy sandbox 모델이 우선하므로, 두 방식을 섞어 “더 제한적일 것”이라고 기대하면 안 됩니다.
설정을 바꾼 뒤 확인할 것
먼저 설정 파일을 한 곳에서만 수정하고, 같은 키가 다른 레이어에 없는지 찾습니다. shell에서 한 번만 바꿀 값은 --config로 실행해 효과를 분리합니다. project-local config, Rules, Hook을 바꿨다면 새 Codex 세션을 시작해 로딩 조건도 함께 확인합니다.
shared repository의 .codex/config.toml에 개인 API token, 홈 directory, 개인적인 personality를 넣지 마십시오. 팀이 재현해야 할 project 규칙만 커밋하고, secret과 개인 기본값은 사용자 레이어 또는 별도 환경 변수 관리에 둡니다.
참고 링크
2 sources