Windows에서는 네이티브 ChatGPT 데스크톱 앱, CLI 또는 IDE 확장 프로그램으로 Codex를 사용할 수 있습니다.
Windows용 ChatGPT 데스크톱 앱은 병렬 채팅, 작업 트리, 예약 작업, Git 기능, 내장 브라우저, 파일 미리보기, 플러그인, 스킬 등 핵심 워크플로우를 지원합니다.
앱은 WSL이나 가상 머신 없이 Windows 샌드박스를 사용해 PowerShell에서 직접 실행할 수 있습니다. 따라서 기존 Windows 워크플로우에서 Codex를 사용할 수 있으며, 이때도 샌드박스가 파일 시스템과 네트워크 접근 권한을 제한합니다.
엔터프라이즈 환경에 설치하는 방법은 Windows 배포 가이드를 참고하세요.
Codex는 세 가지 Windows 샌드박스 구현을 지원합니다.
mxc: 호환되는 Windows 기기에 권장하는 샌드박스입니다. 네이티브 프로세스 격리를 사용하므로 설정 시 관리자 승인이 필요 없고, 별도의 Windows 계정이나 로컬 방화벽 규칙도 필요하지 않습니다.elevated: MXC를 사용할 수 없거나 MXC가 비활성화된 경우 우선 권장하는 레거시 대체 구현입니다. 설정하려면 관리자 승인이 필요합니다. 샌드박스 안에서 명령어는 관리자 권한 없이 실행됩니다.unelevated: 관리자 권한으로 샌드박스를 설정할 수 없고 조직 정책에서 허용하는 경우 사용할 수 있는 레거시 대체 구현입니다.elevated보다 네트워크 격리가 약하며 경로별 읽기 차단을 지원하지 않습니다.
Windows 샌드박스 구성하기
Windows 샌드박스는 명령어와 그 하위 프로세스에 현재 파일 시스템 및 네트워크 권한을 적용합니다. 권한 프로필은 읽거나 쓸 수 있는 경로와 네트워크 접근 허용 여부를 결정합니다. Codex가 더 넓은 권한으로 명령어를 실행하기 위해 승인을 요청하는 시점은 별도의 승인 정책으로 제어합니다. 샌드박스 및 승인을 참고하세요.
MXC 활성화하기
개인 계정으로 데스크톱 앱을 사용할 때 기기가 MXC를 지원하면 앱이 자동으로 MXC를 우선 선택합니다. 엔터프라이즈 환경에 배포하거나 CLI를 단독으로 사용할 때도 다음 설정으로 같은 동작을 활성화할 수 있습니다.
config.toml에 다음을 추가하세요.
[features]
prefer_mxc = true
prefer_mxc = true로 설정하면 기기가 MXC를 지원하고 정책에서 허용하는 경우 Codex가 Windows 명령어를 MXC로 실행합니다. 그 외에는 기존 레거시 샌드박스 선택 및 설정 플로우를 따릅니다.
기기마다 MXC 지원 여부나 정책이 다른 엔터프라이즈 환경에서는 windows.sandbox 값을 조직에서 허용하는 레거시 구현인 elevated 또는 unelevated로 유지해 대체 구현으로 사용하세요.
관리자는 이 설정을 기본값으로 배포하거나 features.prefer_mxc = true를 requirements.toml에서 필수로 지정할 수 있습니다. 두 방식 모두 레거시 대체 구현을 허용합니다. 기본값과 필수 설정의 차이는 관리형 구성을 참고하세요.
MXC를 비활성 상태로 유지하기
조직에서 MXC를 사용하지 못하게 하려면 관리형 requirements.toml에 다음을 추가하세요.
[windows]
allow_mxc = false
이 설정은 MXC 자동 선택과 windows.sandbox = "mxc"를 통한 명시적 선택을 모두 차단합니다. 기존 레거시 샌드박스 설정과 요구 사항은 계속 적용됩니다.
MXC 호환성
호스트에는 Microsoft가 Windows 11 기기에 순차적으로 배포 중인 Microsoft Execution Containers(MXC)의 필수 기능이 이미 갖춰져 있어야 합니다. Microsoft는 Windows 11 24H2(빌드 26100.9278) 및 25H2(빌드 26200.9278) 버전에서 MXC 프로세스 격리를 도입했습니다. 아래 명령어로 기기의 MXC 지원 여부를 확인하세요.
Codex CLI 0.162.0 이상에서는 저장된 샌드박스 설정을 변경하지 않고 명령어 하나에만 MXC를 적용해 테스트할 수 있습니다. 프로젝트 디렉터리에서 다음을 실행하세요.
codex -c windows.sandbox=mxc sandbox --include-managed-config --permission-profile :workspace -- cmd.exe /d /c echo MXC_OK
$LASTEXITCODE
예상 출력은 MXC_OK이고 종료 코드는 0입니다. 이 테스트는 워크스페이스 권한 프로필과 관리형 요구 사항을 적용한 상태에서 명령어를 시작할 수 있는지 확인합니다.
필수 네이티브 기능을 사용할 수 없거나 정책에서 MXC를 차단하면 windows.sandbox = "mxc"를 명시적으로 지정해도 실행에 실패합니다.
다음 호환성 제한 사항에 유의하세요.
- 관리형 네트워킹을 사용하려면
allow_local_binding = true가 실제로 적용되어 있어야 합니다. MXC는 호스트 루프백에서 실행되는 서비스와의 인바운드 및 아웃바운드 연결을 허용합니다. 프록시를 경유하는 트래픽에는 프록시 도메인 규칙이 계속 적용되지만, 프록시에서 수행하던 사설 네트워크 목적지에 대한 추가 검사는 생략됩니다. - 포그라운드 명령어가 종료되면 남아 있는 하위 프로세스도 종료됩니다. 분리된 상태로 실행되는 개발 서버에 의존하는 워크플로우는 테스트하세요.
- Linux 및 WSL에서와 마찬가지로, 읽기 차단 glob 패턴은 각 샌드박스 프로세스가 시작되는 시점에 패턴과 일치하는 파일에 적용됩니다. 이후에 생성된 파일은 패턴과 일치하더라도 다른 권한에서 접근을 허용하면 실행 중인 해당 프로세스가 읽을 수 있습니다. 장시간 실행되는 셸, 스크립트, 파일 감시 도구, 개발 서버는 각 프로세스가 종료될 때까지 이 목록을 유지합니다. 목록의 유효 기간은 Codex 세션 전체가 아닌 개별 프로세스의 수명입니다. 읽기 차단 glob 패턴의 적용 시점을 참고하세요.
레거시 대체 구현 구성하기
config.toml에서 대체 구현을 선택하세요.
[windows]
sandbox = "elevated" # or "unelevated"
elevated는 우선 권장하는 레거시 대체 구현입니다. 권한이 낮은 샌드박스 전용 사용자 계정으로 명령어를 실행하며, 파일 시스템 접근 범위를 제한하고 필요한 방화벽 규칙과 로컬 정책 변경 사항을 적용합니다.
MXC와 마찬가지로 elevated도 각 샌드박스 프로세스가 시작될 때 읽기 차단 glob 패턴과 일치하는 파일 목록을 작성합니다. 이후에 생성된 파일은 패턴과 일치하더라도 다른 권한에서 접근을 허용하면 실행 중인 해당 프로세스가 읽을 수 있습니다. 장시간 실행되는 프로세스에 미치는 영향은 읽기 차단 glob 패턴의 적용 시점을 참고하세요.
unelevated는 레거시 대체 구현입니다. 현재 사용자 계정에서 파생된 제한된 Windows 토큰으로 명령어를 실행하고, ACL을 기반으로 파일 시스템 접근 범위를 제한합니다. 오프라인 전용 사용자에게 적용하는 방화벽 규칙 대신 실행 환경 수준에서 네트워크 접근을 제한합니다. elevated보다 네트워크 격리가 약하고 경로별 읽기 차단을 지원하지 않지만, 로컬 또는 엔터프라이즈 정책으로 인해 관리자 승인이 필요한 설정을 진행할 수 없는 경우 유용합니다.
기기가 MXC를 지원하고 정책에서 허용하면 MXC를 사용하세요. 그 외에는 elevated를 우선 사용하고 unelevated는 차선책으로 사용하세요.
엔터프라이즈 관리자는 requirements.toml에서 Codex가 사용할 수 있는 레거시 샌드박스 구현을 제한할 수 있습니다.
[windows]
allowed_sandbox_implementations = ["elevated"]
이 예시에서는 elevated를 허용하고 unelevated로의 전환을 차단합니다. MXC를 사용할 수 있을 때는 mxc를 제한하지 않습니다. 다른 관리형 권한 및 네트워크 요구 사항은 계속 적용됩니다. 두 레거시 구현을 모두 허용하려면 두 값을 모두 포함하세요. 모드를 선택하지 않으면 Codex가 elevated를 우선 사용합니다.
지원되는 값은 requirements.toml 참조 문서를 참고하세요. MXC도 차단하려면 별도의 windows.allow_mxc 요구 사항을 사용하세요.
두 레거시 샌드박스 모드 모두 기본적으로 전용 데스크톱을 사용해 UI 격리를 강화합니다.
IT 팀에서 레거시 elevated 샌드박스 프로비저닝하기
직원에게 로컬 관리자 권한이 없으면 IT 팀에서 직원이 Codex를 시작하기 전에 CLI를 설치하고 elevated 샌드박스를 프로비저닝할 수 있습니다. 관리자 권한으로 실행 중인 배포 프로세스에서 다음 명령어를 실행하세요.
codex sandbox setup --elevated --user 'DOMAIN\alice' --codex-home 'C:\Users\alice\.codex'
예시의 사용자 이름과 경로를 해당 직원의 Windows 계정과 CODEX_HOME 경로로 바꾸세요. 이 명령어는 해당 사용자의 구성을 읽고 샌드박스를 프로비저닝한 다음 windows.sandbox = "elevated" 설정을 저장합니다. 이후 직원은 일반 권한의 터미널에서 Codex를 실행하면 됩니다.
샌드박스 권한
전체 권한 모드에서는 Codex가 프로젝트 디렉터리 밖에도 접근할 수 있습니다. 이때 의도치 않게 파괴적인 작업을 수행해 데이터가 손실될 수 있습니다. 더 안전하게 자동화하려면 샌드박스의 접근 제한을 유지하고 특정 예외에만 규칙을 적용하세요. 또는 승인 정책을 never로 설정하세요. 그러면 Codex가 권한 상승을 요청하지 않고 현재 승인 및 보안 설정에 따라 문제 해결을 시도합니다.
Windows 버전별 지원 수준
| Windows 버전 | 지원 수준 | 참고 사항 |
|---|---|---|
| Windows 11 | 권장 | Windows에서 Codex를 사용하기에 가장 적합한 버전입니다. 엔터프라이즈 배포 환경을 표준화할 때는 이 버전을 사용하세요. |
| 최신 업데이트를 모두 적용한 최근 Windows 10 버전 | 가능한 범위에서 지원 | 작동할 수 있지만 Windows 11보다 안정성이 낮습니다. Windows 10에서 Codex를 사용하려면 ConPTY를 비롯한 최신 콘솔 기능이 필요합니다. 실제로는 Windows 10 버전 1809 이상이 필요합니다. |
| 이전 Windows 10 빌드 | 권장하지 않음 | ConPTY와 같은 필수 콘솔 구성 요소가 없을 가능성이 높고, 엔터프라이즈 환경에서 설정에 실패할 가능성도 높습니다. |
환경을 준비할 때 다음 사항도 확인하세요.
winget을 사용할 수 있어야 합니다. 없다면 Codex를 설정하기 전에 Windows를 업데이트하거나 Windows 패키지 관리자를 설치하세요.- 레거시
elevated샌드박스를 설정하려면 관리자 승인이 필요합니다. - 일부 엔터프라이즈 관리 기기에서는 OS 버전이 요구 사항을 충족해도 필수 설정 단계가 차단됩니다.
- MXC에는 MXC 호환성에서 설명하는 네이티브 기능도 필요합니다. 위 표만으로는 특정 기기에서 MXC를 사용할 수 있는지 판단할 수 없습니다.
샌드박스 읽기 권한 확인하기
명령어로 디렉터리를 읽을 수 없으면 현재 권한 프로필, 관리형 요구 사항, Windows 파일 권한을 확인하세요. CLI에서는 /status와 /debug-config로 현재 세션과 구성을 확인할 수 있습니다. 관리 정책에 따른 제한이라면 샌드박스를 비활성화하지 말고 관리자에게 해당 제한을 검토해 달라고 요청하세요.
기본적으로 Windows 네이티브 샌드박스를 사용하세요. Linux 네이티브 도구가 필요하거나, 기존 워크플로우가 WSL2에서 실행되거나, 사용 가능한 Windows 네이티브 구현이 요구 사항을 충족하지 못하면 WSL을 선택하세요.
문제 해결 및 자주 묻는 질문
관리형 Windows 기기에서 문제를 해결할 때는 먼저 네이티브 샌드박스 모드, Windows 버전, Codex에 표시된 정책 오류를 확인하세요. MXC를 사용하는 경우 호환성과 실제 적용된 네트워크 정책을 확인하세요. 레거시 샌드박스에서는 설정, 로그온 권한 또는 파일 시스템 권한 때문에 문제가 발생할 수 있습니다.