보안 모델
CodeSpace는 개인용 단일 사용자 배포를 기준으로 설계되어 있습니다. 외부 에이전트가 사용할 디렉터리는 운영자가 정합니다. 파일 도구 권한, 명령 격리, 네트워크 정책 집행은 서로 다른 제어입니다. 도구 이름만으로 안전성을 판단하지 말고 실제 작업 공간의 실행 정보를 확인하세요.
신뢰 경계
게이트웨이는 인증, 작업 공간 등록, 권한 결정을 담당합니다. workspace_id, work_id, 지시문이나 approved: true 같은 클라이언트 입력은 권한을 부여하지 않습니다. HTTP에서는 선택적으로 정적 Bearer 토큰을 검사하지만 OAuth나 사용자별 권한 시스템은 아닙니다.
Runner는 허용된 요청을 실행합니다. PathSandbox는 논리적인 파일 접근 범위를 검사하고, codespace-fs는 Runner 파일 작업에서 심볼릭 링크를 따라가지 않는 I/O를 수행합니다. 사전 검사만으로는 다른 프로세스가 그 직후 경로를 바꾸는 상황을 막을 수 없습니다. 패치 도우미는 별도로 CodeSpace 경로 정책과 Codex의 no-follow 패치 옵션을 적용합니다. 다만 도우미의 사전 검증과 적용 후 해시 계산에는 직접 파일 시스템을 호출하는 코드도 남아 있습니다. 모든 파일 처리가 하나의 경쟁 조건 방지 구현으로 통합되었다고 볼 수는 없습니다.
선택적 UDS worker는 같은 호스트에서 프로세스를 분리합니다. 소켓을 전용 디렉터리에 두지만 프로세스 분리 자체가 명령 샌드박스는 아닙니다. Linux 도우미의 사용 가능 검사가 성공하면 명령 샌드박스를 사용합니다. 조건과 실패 시 동작은 러너 격리에 설명합니다.
권한과 격리
read-only는 읽기를 허용하고 패치·명령 실행을 거부합니다. workspace-write는 둘 다 허용하므로 임의의 명령이 작업 공간 파일을 변경하거나 삭제할 수 있습니다. MCP 파일 도구의 상대 경로 제한만으로 호스트 명령의 접근 범위까지 제한되지는 않습니다.
Linux 도우미가 없으면 restricted 정책의 작업 공간에서도 비격리 호스트 명령을 실행할 수 있으며 network.enforcement는 none입니다. 네트워크가 차단된다는 보장이 아닙니다. enabled 정책은 도우미가 필요하며 호스트 네트워크로 대체 실행하지 않습니다. 현재 enabled 프록시는 모든 목적지 도메인을 허용하므로 도메인별 허용 목록 기능은 아닙니다.
운영자가 등록한 루트 경로는 신뢰의 기준입니다. 토큰, 작업 데이터베이스, 게이트웨이 설정과 비밀 정보는 관리 대상 루트 밖에 두세요. 파일 도구가 상대 경로를 검사한다는 이유로 높은 권한의 호스트, Docker 소켓, SSH 에이전트를 작업 공간에 노출해서는 안 됩니다.
작업과 복구의 안전성
버전 검사는 예상하지 못한 파일 버전에 패치를 적용하는 것을 막습니다. 작업 키는 패치 중복 요청을 구분하며 인증 토큰이 아닙니다. 작업 공간 점유는 파일을 변경할 수 있는 패치·명령 실행을 직렬화합니다. 큐 스케줄러와 영속적인 프로세스 복구는 없습니다.
CODESPACE_OPERATIONS_DB의 approvals 확인 홀드는 행이 pending·granted·resuming인 동안 V4A 패치나 exec argv를 보관합니다. 패치 원장은 패치 본문이 아니라 해시를 보관합니다. denied 또는 consumed 뒤에는 홀드 본문을 digest 메타(도구, 작업 공간, fingerprint)로 바꿉니다. 이 데이터베이스는 토큰·게이트웨이 설정과 같이 작업 공간 루트 밖에 두세요. 홀드는 워크플로 일시정지이며 같은 MCP 호출자가 grant할 수 있습니다. 격리 경계가 아닙니다.
패치 스냅샷 복원은 가능한 범위에서 수행하며 모든 실패의 롤백을 보장하지 않습니다. unknown, 부분 실패, 적용 후 검증 오류가 발생하면 해당 파일을 확인하세요. 패치 동작과 연동 복구 규칙을 참고하세요.
검증 근거와 한계
보안 테스트에는 경로 이탈, 특수 파일, 인증 응답, 작업 재조회, 동시 작업 사례가 있습니다. Linux 도우미 테스트는 샌드박스와 프록시 동작을 검사합니다. 테스트 범위가 커널 탈출 감사나 모든 배포 환경의 안전성을 뜻하지는 않습니다. 검증 범위 목록을 참고하세요.
구조화된 stderr 로그에는 비밀 정보 가림 처리가 있지만 원시 도구 요청이나 비밀을 로그에 남기지 않도록 해야 합니다. 별도의 위변조 방지 감사 서비스는 없습니다. 로컬 MCP 테스트만으로 공개 HTTPS·ChatGPT 배포나 다중 사용자 권한을 검증할 수는 없습니다.