Claude Code 서버 관리 설정 vs Codex 관리형 정책: 개발팀 권한 통제는 무엇을 고를까
TL;DR
Claude Code와 Codex 모두 로컬 코딩 에이전트의 권한을 중앙에서 제한할 수 있지만, 배포 단위와 정책 형식은 다릅니다. Claude Code의 server-managed settings는 현재 조직의 모든 사용자에게 같은 JSON 설정을 적용합니다. Codex managed configuration은
requirements.toml
호환 제약을 지원되는 로컬 클라이언트에 전달하며, 현재 관리 화면에서 적용 대상을 할당합니다.
선택 기준은 제품 순위가 아닙니다. 조직 전체에 같은 Claude Code 정책이 필요한지, 아니면 Codex의 지원 클라이언트에 관리자 제약을 할당해야 하는지를 먼저 구분하세요. 첫 파일럿에서는 한 제품만 선택합니다. 허용 동작과 차단 동작을 확인한 뒤 다음 단계로 넘어갑니다.
핵심 3줄 요약
핵심 1
Claude Code server-managed settings는 Claude for Teams·Enterprise의 Owner 또는 Primary Owner가 관리하며, 현재 조직 사용자 모두에게 균일하게 적용됩니다.
핵심 2
Codex managed configuration의 requirements.toml 은 사용자가 우회할 수 없는 제약입니다. 실행 중 바꿀 수 있는 시작값인 managed defaults와는 같은 층위가 아닙니다.
핵심 3
정책 저장 자체는 검증이 아닙니다. 비민감 테스트에서 정상 작업과 의도한 차단을 모두 확인한 뒤 사람이 확대 여부를 승인합니다.
이 글에서 다룰 내용
대상은 개발팀이 로컬 코딩 에이전트의 승인·권한 정책을 중앙에서 배포하려는 상황입니다. 기능 수나 모델 성능은 비교하지 않습니다. 배포 범위, 정책 강제 방식, 첫 행동, 검증 증적을 보고 한 경로만 고릅니다.
- Claude Code server-managed settings와 Codex managed configuration의 정의
- 조직 공통 정책과 적용 대상 할당의 차이
- 비민감 저장소에서 허용·차단을 양쪽 검증하는 순서
- 원격 설정 fetch, 캐시, 클라이언트 버전에서 놓치기 쉬운 경계
먼저 답: 정책의 배포 단위로 고르세요
개발팀이 “위험한 명령을 막자”라고만 적으면 선택이 어렵습니다. 요구 문장을 배포 단위까지 구체화하세요.
현재 Claude Code 조직 사용자 모두에게 같은 JSON 정책을 적용하려면 Claude Code server-managed settings를 검토합니다. 공식 문서는 현재 설정이 조직의 모든 사용자에게 균일하게 적용되며 그룹별 구성은 아직 지원하지 않는다고 밝힙니다.
지원되는 로컬 Codex 클라이언트에
requirements.toml
호환 제약을 만들고 적용 대상을 할당하려면 Codex managed configuration을 검토합니다. 이 정책은 ChatGPT 워크스페이스 접근이나 좌석, RBAC를 부여하지 않습니다. 로컬 런타임 정책과 워크스페이스 권한은 별도입니다.
두 형식을 한 번에 배포하거나 자동 변환하는 절차는 공식 문서에 없습니다. 혼합 환경이라도 첫 파일럿에서는 실제로 채택한 제품의 한 경로만 실행하세요.
두 기능을 한 문장으로 정의하면
Claude Code server-managed settings는 조직 Owner가 claude.ai의 Admin Settings > Claude Code > Managed settings에서 Claude Code 설정을 JSON으로 정의하고 서버로 전달하는 기능입니다. Claude for Teams 또는 Claude for Enterprise와 Owner 또는 Primary Owner 역할이 필요합니다.
api.anthropic.com
네트워크 접근도 전제됩니다.
Codex managed configuration은 지원되는 로컬 런타임에 관리자 정책을 적용하는 체계입니다. Requirements는 사용자가 우회할 수 없는 제약이고, managed defaults는 클라이언트가 시작할 때 주는 초기값입니다. 사용자는 실행 중 managed defaults를 바꿀 수 있으므로 강제 통제가 필요할 때 둘을 혼동하면 안 됩니다.
현재 OpenAI 관리 가이드는 ChatGPT Enterprise rollout과 Enterprise admin을 대상으로 설명합니다. 관리형 설정이 다루는 로컬 표면은 ChatGPT 데스크톱 앱의 지원 기능, Codex CLI, IDE extension입니다. 지원 항목은 클라이언트와 버전에 따라 다를 수 있습니다.
선택 기준 1: 모든 사용자에게 같은 정책이 필요한가
Claude Code server-managed settings를 저장하면 설정 변경이 조직의 모든 사용자에게 영향을 줍니다. 같은 조직 안에서 개발팀 A와 B에 서로 다른 server-managed settings를 주는 그룹별 구성은 현재 지원되지 않습니다.
이 특성은 전사 공통 금지선을 한곳에서 관리할 때 단순합니다. 반대로 소수 그룹만 대상으로 시험해야 한다면 운영 조직에 바로 저장하지 마세요. 별도 승인된 테스트 조직을 사용하거나, 먼저 한 테스트 기기에 endpoint-managed 설정을 배포해 동작을 확인하는 편이 안전합니다. endpoint-managed와 server-managed는 공식 문서가 구분하는 별도 전달 경로입니다.
Codex cloud-managed requirements는 로그인한 identity에 해당하는 정책 묶음을 지원 클라이언트가 받는 방식입니다. 공식 문서는 Managed configuration에서 정책을 만들고 할당하며, 정책별 소유자와 대상 사용자 또는 그룹을 기록하라고 안내합니다. 구체적인 할당 규칙은 복사한 설명에 기대지 말고 현재 관리 화면에서 직접 확인합니다.
선택 기준 2: 강제 제약과 기본값을 분리해야 하는가
Claude Code에서는 관리형 설정이 다른 일반 설정 계층보다 우선합니다. 명령줄이나 사용자·프로젝트 설정은 관리형 권한 규칙을 덮어쓸 수 없습니다. 다만 공식 문서가 열거한 보안 민감 예외에서는 하위 계층의 더 엄격한 값이 적용될 수 있습니다.
allowManagedPermissionRulesOnly
를 켜면 권한 규칙의 출처를 관리형 설정으로 제한할 수 있고,
permissions.disableBypassPermissionsMode
를
"disable"
로 두면 bypass 권한 모드를 막을 수 있습니다.
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./secrets/**)"
],
"disableBypassPermissionsMode": "disable"
},
"allowManagedPermissionRulesOnly": true
}
이 예시는 Anthropic 공식 문서의 구조를 좁혀 옮겼습니다. 실제 경로와 업무 명령을 추가하기 전에는 테스트 저장소에서 확인하세요. 특히
allowManagedPermissionRulesOnly
는 호스트가 주는 allow 규칙까지 제외할 수 있으므로 Cowork 작업 폴더 같은 인접 표면에 그대로 일반화하지 않습니다.
Codex에서는
requirements.toml
과 managed defaults의 목적을 분리합니다. 승인 정책, 승인 검토자, 권한 프로필, 웹 검색, 관리형 hooks, 허용 MCP 서버 같은 항목을 사용자가 약화하지 못하게 하려면 requirements에 둡니다. managed defaults는 표준 시작값이지만 실행 중 바뀔 수 있습니다.
Codex 0.138.0 이상에서는
allowed_permission_profiles
와 관리형
default_permissions
를 우선 검토하라고 공식 문서가 안내합니다. 이전 버전은 이 두 항목을 무시할 수 있습니다. 혼합 버전 조직이라면 클라이언트 목록부터 확인하세요.
default_permissions = ":workspace"
[allowed_permission_profiles]
":read-only" = true
":workspace" = true
위 예시는 읽기 전용과 workspace 범위만 허용하고
:danger-full-access
를 목록에서 제외합니다. 이 설정만으로 네트워크, 연결 서비스 권한, 저장소 보호 규칙까지 해결되는 것은 아닙니다.
선택 기준 3: 시작 실패와 캐시를 어떻게 다룰 것인가
원격 정책은 저장 성공만 보고 끝내면 안 됩니다. 네트워크 장애와 캐시가 실제 시작 동작을 바꿀 수 있습니다.
Claude Code는 시작할 때 서버 관리 설정을 가져오고 실행 중에는 주기적으로 갱신합니다. 캐시가 없는 첫 실행에서 fetch가 실패하면 기본적으로 server-managed settings 없이 계속하고 대화형 세션에 경고합니다. 이 동작이 허용되지 않는 조직은 관리 소스에
forceRemoteSettingsRefresh: true
를 두어 새 원격 설정을 받지 못하면 CLI가 종료되도록 할 수 있습니다. 다만
api.anthropic.com
이 막히면 사용자가 Claude Code를 시작하지 못합니다. 별도 승인과 rollback을 미리 잡아 두세요.
Codex cloud-managed requirements는 유효하고 identity가 일치하는 캐시를 먼저 확인합니다. 유효 캐시가 없고 fetch가 실패하거나 시간 초과되면 관리형 제약 없이 조용히 시작하지 않고 오류를 반환합니다. 현재 프로세스가 시작된 뒤 받은 background refresh는 다음 시작에 쓸 캐시를 바꾸며, 실행 중인 프로세스의 requirements를 교체하지 않습니다.
두 제품의 실패 동작을 같다고 가정하지 마세요. 운영팀은 허용된 시작, fetch 실패, 유효 캐시 존재 여부를 각각 시험합니다. 결과도 따로 기록합니다.
개발팀 권한 정책을 고르는 실행 순서
1단계. 요구 문장을 네 칸으로 나눕니다
승인된 내부 요구사항 한 건만 가져옵니다. 정책 대상, 적용 제품, 허용할 정상 작업, 반드시 차단할 동작을 각각 한 줄로 적습니다. “보안을 강화한다”처럼 결과를 확인할 수 없는 표현은 완료 기준으로 쓰지 않습니다.
예시는 다음과 같습니다.
- 정책 대상: 승인된 개발자 계정 또는 테스트 조직
- 정상 작업: 테스트 저장소의
README.md읽기 - 차단 작업: 테스트 저장소의 가짜
.env읽기 또는 허용하지 않은 full-access 선택 - 승인자: 보안 담당자와 개발 플랫폼 담당자
2단계. 한 제품의 한 경로만 선택합니다
조직 사용자 모두에게 같은 Claude Code 정책이 필요하면 Claude 경로를 선택합니다. 대상 할당형
requirements.toml
제약이 필요하고 지원되는 Codex 로컬 표면을 운영한다면 Codex 경로를 선택합니다.
선택 사유를 한 문장으로 남기세요. 제품명이나 선호도가 아니라 배포 단위와 검증할 통제로 설명해야 나중에 판단을 재현할 수 있습니다.
3단계. 저장 전 변경안을 검토합니다
원본 설정을 별도로 보존하고 변경안에는 필요한 제한만 둡니다. 실제 secret, 운영 저장소, 원격 push, 삭제 명령은 테스트 입력에서 제외합니다.
Claude 경로에서는 Admin Settings > Claude Code > Managed settings에 넣을 JSON을 먼저 코드 리뷰합니다. 운영 조직에서 Save를 누르면 모든 사용자에게 영향을 줄 수 있으므로 테스트 조직이나 승인된 endpoint-managed 시험을 먼저 마칩니다.
Codex 경로에서는 현재 Managed configuration 화면에서
requirements.toml
호환 정책을 만들고 대상과 지원 클라이언트 버전을 확인합니다. managed defaults를 강제 제약으로 오인하지 않았는지도 검토합니다.
4단계. 비민감 fixture에서 정상 작업을 확인합니다
가짜
.env
와 일반
README.md
만 있는 전용 테스트 저장소를 사용합니다. 먼저 허용한
README.md
읽기가 정상적으로 끝나는지 확인합니다. 차단만 확인하면 정책 때문에 정상 개발까지 막힌 사실을 놓칠 수 있습니다.
테스트 결과에는 계정, 제품, 클라이언트 버전, 정책 식별자, 실행 시각, 정상 작업 결과를 적습니다. 정책 hash를 남기고 싶다면 내부 증적 규칙으로 별도 정의하세요. 두 제품이 자동으로 만드는 공통 감사 필드라고 쓰면 안 됩니다.
5단계. 의도한 차단과 유효 설정을 확인합니다
Claude Code 사용자는 재시작 뒤
/permissions
에서 유효 권한 규칙을 확인합니다. Claude Code v2.1.248 이상이라면
claude doctor
의
Managed settings (remote)
행에서 설정 로드, 미설정, fetch 실패, fetch 생략 상태를 구분할 수 있습니다. 그런 다음 가짜
.env
읽기가 거부되는지 확인합니다.
Codex 사용자는 지원 클라이언트에서 effective settings를 확인하고, 허용 목록에서 제외한 full-access 권한 프로필을 선택할 수 없는지 시험합니다. 이어
README.md
읽기가 계속 가능한지 다시 확인합니다. workspace role이나 대상 그룹에 속했다는 사실만으로 정책 집행을 통과 처리하지 않습니다.
6단계. 확대와 rollback을 사람이 결정합니다
허용 동작과 차단 동작이 모두 기대와 일치해야 파일럿이 끝납니다. 한쪽이라도 다르면 원래 정책으로 돌리고 원인을
정책 미수신
,
지원 버전 불일치
,
규칙 오류
,
승인 대기
로 나눠 기록합니다.
조직 전체 확대, 더 넓은 파일 접근, 네트워크 허용, MCP 추가, hooks 실행은 별도 변경입니다. 첫 파일럿 결과만으로 묶어서 승인하지 않습니다.
복사해서 쓰는 정책 선택 검토 프롬프트
아래 프롬프트는 정책을 자동 적용하지 않습니다. 변경안을 검토용 문서로 정리하는 데만 사용하세요.
목표: 개발팀의 로컬 코딩 에이전트 권한 정책을 검토하고 Claude Code server-managed settings 또는 Codex managed configuration 중 한 경로를 선택한다.
허용 입력: 승인된 정책 요구사항, 비민감 테스트 저장소 설명, 대상 계정 범위, 지원 클라이언트와 버전, 현재 설정의 비밀값을 제거한 사본.
제외 입력: 실제 자격증명, 운영 .env, 고객 데이터, 개인 정보, 운영 저장소 쓰기 권한, 원격 push·삭제·결제·외부 전송 요청.
출력 형식: 요구 범위, 선택한 제품과 이유, 저장 전 변경안, 정상 작업 테스트, 차단 작업 테스트, 확인 필요, rollback, 승인자 순서의 검토 문서.
완료 기준: 한 제품만 선택하고 비민감 fixture에서 허용 동작과 차단 동작이 각각 확인되며 effective settings와 클라이언트 버전이 기록된다.
사실 제약: 제공된 문서와 공식 출처에 없는 플랜, 기능, 경로, 지원 버전, 보안 효과를 만들지 말고 불명확한 항목은 확인 필요로 남긴다.
승인 지점: 설정 저장, 대상 할당, 조직 확대, network·MCP·hooks 허용, 운영 저장소 접근은 사람이 별도로 승인한다.
실무에서 놓치기 쉬운 인사이트
가장 흔한 실패는 “정책 파일이 있다”를 “정책이 집행됐다”로 바꾸어 읽는 것입니다. Claude Code에서는 remote fetch와 캐시 상태를 확인합니다. Codex에서는 지원 클라이언트와 실제 effective requirements를 살핍니다. 두 제품 모두 대표 사용자의 실제 결과가 필요합니다.
또 하나는 정책 계층을 권한 전체로 확대 해석하는 일입니다. Claude Code server-managed settings와 Codex requirements는 로컬 클라이언트 동작을 제한하지만 워크스페이스 가입, 좌석, RBAC, 연결된 저장소 권한을 대신하지 않습니다. 에이전트가 결과를 정확하게 만들었다는 증명도 아닙니다.
주의할 점
- Claude Code server-managed settings는 중앙 통제 기능이지만 공식 문서는 이를 client-side control이라고 설명합니다. unmanaged device의 수정된 client까지 막는 보안 경계로 보지 않습니다.
- Claude server-managed 설정은 현재 조직의 모든 사용자에게 균일하게 적용됩니다. 운영 조직에서 소수 그룹 파일럿이 가능하다고 단정하지 않습니다.
- Claude remote fetch 실패를 허용하지 않으려고
forceRemoteSettingsRefresh를 켜면 연결 장애 시 CLI가 시작되지 않을 수 있습니다. rollback과 재인증 경로를 먼저 확인합니다. - Codex permission profile allowlist는 Codex 0.138.0 이상에서 검토합니다. 이전 클라이언트가 같은 정책을 적용한다고 가정하지 않습니다.
- Codex managed configuration은 workspace access나 RBAC를 부여하지 않습니다. 연결 서비스의 권한도 따로 검토합니다.
- 어느 쪽도 테스트 한 번으로 조직 보안, 정책 준수, 코드 정확성을 보장하지 않습니다.
자주 묻는 질문
Claude Code server-managed settings와 Codex managed configuration을 동시에 써도 되나요?
혼합 제품 조직이라면 각각 운영할 수 있지만 두 정책의 자동 변환이나 동기화는 공식 문서에 없습니다. 첫 파일럿은 한 제품과 한 요구사항으로 제한하고 증적 형식만 내부에서 맞추세요.
Claude Code에서 그룹별로 다른 server-managed settings를 줄 수 있나요?
현재 공식 문서는 설정이 조직의 모든 사용자에게 균일하게 적용되고 per-group configurations는 아직 지원되지 않는다고 밝힙니다. 소수 대상 시험은 별도 테스트 조직이나 승인된 endpoint-managed 경로를 검토하세요.
Codex의 managed defaults도 사용자가 바꿀 수 없는 정책인가요?
아닙니다. 공식 문서는 managed defaults를 시작값으로 설명하며 사용자가 실행 중 바꿀 수 있다고 명시합니다. 강제 제약은
requirements.toml
호환 requirements에 둡니다.
차단 테스트만 통과하면 배포해도 되나요?
안 됩니다. 의도한 차단과 대표 정상 작업을 함께 시험하세요. 유효 설정, 클라이언트 버전, fetch 또는 cache 상태를 확인한 뒤 확대 여부를 사람이 승인합니다.
출처
마무리
선택은 한 문장으로 끝낼 수 있습니다. 모든 Claude Code 사용자에게 같은 조직 공통 정책이 필요하면 server-managed settings를, 지원되는 로컬 Codex 클라이언트에 관리자 제약을 만들고 할당해야 하면 managed configuration을 검토합니다.
어느 쪽을 고르든 저장 버튼이 완료 지점은 아닙니다. 비민감 fixture에서 정상 작업과 차단 작업을 확인하고 실제 유효 설정을 기록한 뒤 사람이 확대를 승인하세요.
