Windows 샌드박스
Windows 샌드박스
Windows에서 네이티브 Codex 샌드박스 구성 및 문제 해결
Windows에서 네이티브 ChatGPT 데스크톱 앱, CLI 또는 IDE 확장 프로그램으로 Codex를 사용하세요.
Windows용 ChatGPT 데스크톱 앱은 병렬 채팅, 작업 트리, 예약 작업, Git 기능, 기본 제공 브라우저, 파일 미리보기, 플러그인 및 스킬과 같은 핵심 워크플로를 지원합니다.
이 앱은 WSL이나 가상 머신 없이도 Windows 샌드박스를 사용하여 PowerShell에서 네이티브로 실행할 수 있습니다. 이를 통해 Codex는 Windows 네이티브 워크플로를 유지하면서 제한된 파일 시스템 및 네트워크 권한을 적용합니다.
기업 환경에서의 설치는 Windows 배포 가이드를 참조하세요.
Codex는 세 가지 Windows 샌드박스 구현을 지원합니다:
mxc: 호환되는 Windows 기기에서 권장되는 샌드박스입니다. 관리자 승인이 필요한 설정, 추가 Windows 계정, 로컬 방화벽 규칙 없이 네이티브 프로세스 격리를 사용합니다.elevated: MXC를 사용할 수 없거나 비활성화한 경우 우선적으로 사용하는 레거시 대체 방식입니다. 관리자 승인이 필요한 설정 과정을 거쳐야 합니다. 샌드박스의 명령은 관리자 권한 없이 실행됩니다.unelevated: 관리자 권한으로 설정할 수 없고 조직 정책에서 허용하는 경우 사용하는 레거시 대체 방식입니다.elevated보다 네트워크 격리가 약하며 읽기 거부 경로를 지원하지 않습니다.
Windows 샌드박스 구성
Windows 샌드박스는 명령과 해당 자식 프로세스에 현재 적용 중인 파일 시스템 및 네트워크 권한을 강제합니다. 권한 프로필은 읽거나 쓸 수 있는 경로와 네트워크 접근 허용 여부를 결정합니다. 승인 정책은 Codex가 더 넓은 접근 권한으로 명령을 실행하기 위해 승인을 요청하는 시점을 별도로 제어합니다. 샌드박스 및 승인을 참고하세요.
MXC 활성화
데스크톱 앱은 개인용 계정으로 사용 중이고 기기에서 지원하는 경우 자동으로 MXC를 우선 사용합니다. 기업 배포나 독립형 CLI 사용 시에도 아래 구성으로 동일한 동작을 활성화할 수 있습니다.
config.toml에서 설정하세요:
[features]
prefer_mxc = trueprefer_mxc = true로 설정하면 기기와 정책이 지원하는 경우 Codex는 Windows 명령에 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 Execution Containers (MXC) 기능이 이미 갖춰져 있어야 하며, Microsoft는 이 기능을 Windows 11 기기에 순차적으로 배포하고 있습니다. 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는 호스트 루프백의 서비스와 주고받는 연결을 허용합니다. 프록시를 거치는 트래픽에는 프록시 도메인 규칙이 계속 적용되지만, 프록시의 추가 사설 네트워크 대상 검사는 제거됩니다. - 포그라운드 명령이 종료되면 남아 있는 하위 프로세스도 중지됩니다. 분리된 개발 서버에 의존하는 워크플로를 테스트하세요.
- 읽기 거부 glob은 Linux 및 WSL과 마찬가지로 각 샌드박스 프로세스가 시작될 때 일치하는 파일을 기준으로 적용됩니다. 이후에 생성된 일치 파일은 실행 중인 해당 프로세스의 다른 권한이 접근을 허용하면 계속 읽을 수 있습니다. 장시간 실행되는 셸, 스크립트, 감시 프로세스 및 개발 서버는 전체 Codex 세션이 아니라 각 프로세스의 수명 동안 해당 스냅샷을 유지합니다. 읽기 거부 glob의 적용 시점을 참조하세요.
레거시 대체 방식 구성
config.toml에서 대체 구현을 선택하세요:
[windows]
sandbox = "elevated" # or "unelevated"elevated는 우선적으로 사용하는 레거시 대체 방식입니다. 권한이 낮은 전용 샌드박스 사용자, 파일 시스템 권한 경계, 방화벽 규칙, 샌드박스에서 실행되는 명령에 필요한 로컬 정책 변경을 사용합니다.
MXC와 마찬가지로 elevated는 각 샌드박스 프로세스가 시작될 때 읽기 거부 glob에 일치하는 파일을 열거합니다. 이후에 생성된 일치 파일은 실행 중인 해당 프로세스의 다른 권한이 접근을 허용하면 계속 읽을 수 있습니다. 장시간 실행되는 프로세스에 미치는 영향은 읽기 거부 glob의 적용 시점을 참조하세요.
unelevated는 레거시 대체 방식입니다. 현재 사용자에서 파생된 제한된 Windows 토큰으로 명령을 실행하고, ACL 기반 파일 시스템 경계를 적용하며, 전용 오프라인 사용자 방화벽 규칙 대신 환경 수준의 오프라인 제어를 사용합니다. elevated보다 네트워크 격리가 약하고 읽기 거부 경로를 지원하지 않지만, 관리자 승인이 필요한 설정이 로컬 또는 기업 정책으로 차단된 경우에도 유용합니다.
기기와 정책이 지원하면 MXC를 사용하세요. 그렇지 않으면 elevated를 우선 사용하고, unelevated를 차선의 대체 방식으로 사용하세요.
기업 관리자는 Codex가 사용할 수 있는 레거시 샌드박스 구현을
requirements.toml을 통해 제한할 수 있습니다:
[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를 실행합니다.
샌드박스 권한
Windows 버전 표
| Windows 버전 | 지원 수준 | 참고 |
|---|---|---|
| Windows 11 | 권장 | Windows에서 Codex를 사용하기 위한 최적의 기준입니다. 엔터프라이즈 배포를 표준화하는 경우 이 버전을 사용하세요. |
| 완전히 업데이트된 최신 Windows 10 | 최선의 노력으로 지원 | 작동할 수 있지만 Windows 11보다 안정성이 낮습니다. Windows 10에서 Codex는 ConPTY를 비롯한 최신 콘솔 지원에 의존합니다. 실제로 Windows 10 버전 1809 이상이 필요합니다. |
| 이전 Windows 10 빌드 | 권장하지 않음 | ConPTY와 같은 필수 콘솔 구성 요소가 없을 가능성이 높고 엔터프라이즈 설정에서 실패할 가능성도 큽니다. |
추가 환경 전제 조건:
winget을 사용할 수 있어야 합니다. 없다면 Windows를 업데이트하거나 Windows 패키지 관리자를 설치한 후 Codex를 설정하세요.- 기존
elevated샌드박스는 관리자가 승인한 설정이 필요합니다. - 일부 기업 관리 기기는 OS 버전 자체가 요구 사항을 충족하더라도 필요한 설정 단계를 차단합니다.
- MXC에는 추가로 다음 문서에 설명된 네이티브 기능이 필요합니다. MXC 호환성. 이 표만으로는 특정 기기에서 MXC를 사용할 수 있는지 판단할 수 없습니다.
샌드박스 읽기 액세스 확인
명령이 디렉터리를 읽을 수 없으면 현재 적용 중인 권한 프로필,
관리형 요구 사항, Windows 파일 권한을 확인하세요. CLI에서는 /status와
/debug-config를 사용해 현재 세션과 구성을 점검하세요. 샌드박스를 비활성화하기보다는
관리자에게 관리형 제한 사항을 검토해 달라고 요청하세요.
기본적으로 네이티브 Windows 샌드박스를 사용하세요. WSL은 Linux 네이티브 도구가 필요하거나, 워크플로가 이미 WSL2에 구축되어 있거나, 사용 가능한 네이티브 Windows 구현이 요구 사항을 충족하지 못할 때 선택하세요.
문제 해결 및 FAQ
관리 대상 Windows 컴퓨터의 문제를 해결할 때는 먼저 네이티브 샌드박스 모드, Windows 버전, Codex에 표시된 정책 오류를 확인하세요. MXC의 경우, 호환성과 실제 적용되는 네트워크 정책을 확인하세요. 레거시 샌드박스 문제는 설정, 로그온 권한 또는 파일 시스템 권한에서 비롯될 수 있습니다.
레거시 샌드박스 설정에 실패했습니다
Codex에서 elevated 샌드박스 설정을 완료할 수 없는 경우 가장 일반적인 원인은
다음과 같습니다.
- Windows UAC 또는 관리자 프롬프트를 거부함,
- 컴퓨터에서 로컬 사용자 또는 그룹 생성을 허용하지 않음,
- 컴퓨터에서 방화벽 규칙 변경을 허용하지 않음,
- 컴퓨터에서 샌드박스 사용자에게 필요한 로그온 권한을 차단함,
- 또는 다른 엔터프라이즈 정책이 설정 과정의 일부를 차단함.
시도할 방법:
elevated샌드박스 설정을 다시 시도하고 관리자 승인 메시지가 표시되면 환경에서 허용하는 경우 승인하세요.- 회사 노트북에서 이 작업이 차단되면 IT 팀에 해당 컴퓨터에서 로컬 사용자/그룹 생성, 방화벽 구성, 필요한 샌드박스 사용자 로그온 권한을 관리자의 승인하에 설정할 수 있는지 문의하세요.
- 설정이 계속 실패하고 관리 정책에서 허용한다면, 문제를 조사하는 동안
unelevated를 사용하세요.
Codex가 상향되지 않은 샌드박스로 전환했습니다
unelevated 구현은 구성에서 선택하거나
elevated 설정을 사용할 수 없을 때 대체 수단으로 사용할 수 있습니다.
- Codex는 여전히 샌드박스 모드에서 실행할 수 있습니다.
- ACL 기반 파일 시스템 경계는 계속 적용하지만
elevated의 별도 샌드박스 사용자 경계를 사용하지 않으며 네트워크 격리가 더 약합니다. - 유용한 대체 수단이지만 장기적으로 권장되는 엔터프라이즈 구성은 아닙니다.
기업에서 관리하는 노트북이라면 MXC 호환성을
먼저 확인하세요. MXC를 사용할 수 없거나 비활성화되어 있다면 IT 팀에
elevated를 사용할 수 있도록 설정해 달라고 요청하세요.
Windows 오류 1385가 표시됩니다
샌드박스 명령이 오류 1385와 함께 실패하면 Windows가 명령을 시작하는 데
샌드박스 사용자에게 필요한 로그온 유형을 거부하는 것입니다.
일반적으로 이는 Codex가 샌드박스 사용자를 성공적으로 생성했지만 Windows 정책이 여전히 해당 사용자의 샌드박스 명령 실행을 막고 있다는 뜻입니다.
해결 방법:
- 기기 정책에서 Codex가 생성한 샌드박스 사용자에게 필수 로그온 권한을 부여하는지 IT 팀에 문의하세요.
- 일부 컴퓨터나 팀에만 문제가 발생한다면 그룹 정책 또는 OU 차이를 비교하세요.
- 즉시 작업을 계속해야 한다면 정책 문제를 조사하는 동안
unelevated샌드박스를 사용하세요. - Windows 버전 및 실패에 대한 간단한 설명과 함께
CODEX_HOME/.sandbox/sandbox.log를 보내세요.
일부 폴더를 Everyone이 쓸 수 있다는 Codex 경고가 표시됩니다
Codex에서 일부 폴더를 Everyone이 쓸 수 있다고 경고할 수 있습니다.
이 경고가 표시되면 해당 폴더의 Windows 권한 범위가 너무 넓어 샌드박스에서 폴더를 완전히 보호할 수 없습니다.
해결 방법:
- Codex가 경고에 나열한 폴더를 검토하세요.
- 현재 환경에 적합하다면 해당 폴더에서
Everyone쓰기 액세스 권한을 제거하세요. - 권한을 수정한 후 Codex를 다시 시작하거나 샌드박스 설정을 다시 실행하세요.
해당 권한을 변경하는 방법을 잘 모르겠다면 IT 팀에 도움을 요청하세요.
샌드박스 명령에서 네트워크에 연결할 수 없습니다
사용 중인 권한 모드에 따라 일부 Codex 채팅은 의도적으로 아웃바운드 네트워크 액세스 없이 실행됩니다.
네트워크에 연결할 수 없어 작업이 실패하는 경우:
- 해당 작업이 네트워크를 비활성화한 상태로 실행되어야 했는지 확인하세요.
- 네트워크 액세스를 예상했다면 Codex를 다시 시작하고 다시 시도하세요.
- 문제가 계속 발생하면 팀에서 컴퓨터의 샌드박스 상태가 불완전하거나 손상되었는지 확인할 수 있도록 샌드박스 로그를 수집하세요.
이전에는 샌드박스가 작동했지만 이후 중단되었습니다
다음과 같은 상황 후에 이 문제가 발생할 수 있습니다.
- 저장소 또는 작업 공간 이동,
- 컴퓨터 권한 변경,
- Windows 정책 변경,
- 또는 기타 시스템 구성 변경.
시도할 방법:
- Codex를 다시 시작하세요.
- MXC의 경우 호환성 검사를 다시 실행하고
실제 적용된 네트워크 정책을 확인하세요. 기존
elevated구현의 경우 샌드박스 설정을 다시 시도하세요. - 기존 샌드박스가 필요하고 관리 정책에서 허용한다면
unelevated를 임시 대안으로 사용하세요. - 검토를 위해 샌드박스 로그를 수집하세요.
OpenAI에 진단 정보를 보내야 합니다
문제가 계속되면 다음을 보내세요.
CODEX_HOME/.sandbox/sandbox.log
다음 정보도 함께 보내면 도움이 됩니다.
- 시도한 작업에 대한 간단한 설명,
- 선택한 구현:
mxc,elevated또는unelevated, - 앱에 표시된 오류 메시지,
1385또는 다른 Windows나 PowerShell 오류가 표시되었는지 여부,- Windows 빌드 번호,
- Windows 11 또는 Windows 10 사용 여부.
다음은 보내지 마세요.
CODEX_HOME/.sandbox-secrets/의 내용
IDE 확장 프로그램이 설치되어 있지만 응답하지 않습니다
일부 네이티브 종속성에 필요한 C++ 개발 도구가 시스템에 없을 수 있습니다.
- Visual Studio Build Tools (C++ 워크로드)
- Microsoft Visual C++ Redistributable (x64)
winget에서winget install --id Microsoft.VisualStudio.2022.BuildTools -e실행
설치 후 VS Code를 완전히 다시 시작하세요.