OpenAI, Codex on Windows 자체 샌드박스 공개… SID와 쓰기 제한 토큰으로 격리
OpenAI가 코딩 에이전트 Codex의 Windows 버전에 자체 설계한 샌드박스를 구현한 과정을 공식 블로그를 통해 공개했다. Codex 엔지니어링팀 멤버 데이비드 위슨(David Wiesen)이 2025년 9월 합류한 뒤 작업한 결과로, Windows 사용자가 그간 강요받던 두 가지 선택지를 없애는 것이 목표였다.
위슨은 그동안 Windows 사용자가 (1) 읽기조차 거의 모든 명령에 매번 승인하거나 (2) 'Full Access 모드'로 모든 명령을 제약 없이 실행하도록 허용하는 양극단 중 하나만 고를 수 있었다고 설명했다. Codex 기본 모드는 사용자가 작업 중인 디렉터리에는 쓰기를 허용하되 그 밖에는 쓰지 못하게 하고 네트워크 접근도 명시적 허용 시에만 가능하도록 설계돼 있는데, 이를 실제로 강제하려면 운영체제 차원의 샌드박스가 필요했다.
macOS는 Seatbelt, Linux는 seccomp나 bubblewrap 같은 격리 유틸리티를 기본 제공하지만 Windows에는 동일한 능력의 기본 도구가 없다. OpenAI는 세 가지 후보를 검토했다. AppContainer, Windows Sandbox, 그리고 Mandatory Integrity Control(MIC) 라벨링이다.
AppContainer는 Windows 기본 샌드박스이며 OS 수준 경계를 제공하지만, Codex처럼 셸·Git·파이썬·패키지 매니저·빌드 도구 등 자유로운 개발자 워크플로에는 맞지 않았다. Windows Sandbox는 마이크로소프트의 일회용 경량 VM이지만, 별도 데스크톱에서 동작해 사용자의 실제 체크아웃·도구·환경에 직접 접근할 수 없고 Windows Home SKU에서는 아예 제공되지 않는다.
Mandatory Integrity Control 라벨링은 프로세스에 low·medium·high 신뢰 수준을 부여해 낮은 신뢰 프로세스가 더 높은 신뢰 객체에 쓰기를 못 하게 막는 방식이다. 워크스페이스를 low 무결성으로 재라벨링하면 Codex만이 아니라 모든 low-integrity 프로세스가 그 영역에 쓸 수 있게 돼, 사용자의 코드 체크아웃이 호스트의 low-integrity 싱크로 바뀌어 위험이 크다고 판단했다.
세 옵션 모두 부적합으로 결론 내린 OpenAI는 자체 샌드박스를 설계했다. 핵심 목표는 관리자 권한 상승(elevation) 없이 동작하도록 만들어 사용자가 샌드박스를 켤 때 권한 상승 프롬프트가 뜨지 않도록 하는 것이었다.
구현은 두 가지 Windows 빌딩 블록을 결합해 이뤄졌다. 보안 식별자 SID(security identifier)는 권한과 연결되는 ID로, 사용자·그룹·로그인 세션은 물론 실제 사용자에 대응하지 않는 합성 SID도 만들어 ACL(접근 제어 목록)에 등록할 수 있다. 다른 한쪽은 쓰기 제한 토큰(write-restricted token)으로, 일반적인 사용자 권한 체크와 함께 토큰의 제한 SID 목록에 포함된 SID가 접근 권한을 가진 경우에만 쓰기가 통과되도록 추가 체크를 강제한다.
OpenAI는 'sandbox-write'라는 합성 SID를 만들고 Codex 실행 시 현재 작업 디렉터리, 그리고 config.toml에 설정된 추가 'writable_roots' 경로에 대해서만 쓰기·실행·삭제 권한을 부여했다. 같은 SID에 대해 'writable_roots' 안의 읽기 전용 영역에는 쓰기를 명시적으로 거부함으로써, 비관리자 환경에서도 쓰기 가능한 영역을 ACL로 정밀하게 한정할 수 있게 됐다.