jai - 파일 시스템을 YOLO하지 마세요
source https://jai.scs.stanford.edu/
AI 도구에 평범한 수준의 머신 접근 권한만 줬는데도 파일이 사라지고, 작업 트리가 텅 비고, 홈 디렉터리가 통째로 날아갔다는 보고가 이미 나오고 있습니다.
Claude Code가 홈 디렉터리를 날림 “진행 중이던 개발 프로젝트를 전부 잃었습니다.”Anthropic GitHub issue #10077 ↗
Antigravity가 드라이브 하나를 통째로 날림 “D 드라이브 전체 내용이 의도치 않게 지워졌습니다.” Reddit post ↗
Cursor가 100GB를 삭제함 “내 컴퓨터에서 100GB를 지워버리기로 했더군요.” Cursor Community Forum ↗
에이전트에게 실제 계정 권한을 그대로 주는 것과, 모든 걸 멈추고 컨테이너나 VM을 준비하는 것 사이에는 분명한 빈틈이 있습니다. jai는 그 틈을 메웁니다. 명령 하나면 됩니다. 이미지도, Dockerfile도 필요 없습니다.
지금 이미 돌리고 있는 워크플로우에 가벼운 경계만 하나 더 두면 됩니다: 빠른 코딩 도움, 일회성 로컬 작업, 내가 쓰지 않은 설치 스크립트 실행 같은 것들 말입니다.
내 파일, 내 규칙
계정 전체를 넘기지 않고도 AI 에이전트를 쓸 수 있습니다. jai는 현재 작업 디렉터리에는 완전한 접근 권한을 주고, 나머지 홈 디렉터리는 copy-on-write 오버레이 뒤에 두거나 아예 숨겨버립니다.
맹목적으로 믿지 마세요
한 줄짜리 설치 스크립트, AI가 만들어 준 셸 명령어, 처음 보는 CLI —- 이제 그런 것들을 실제 홈 디렉터리에 바로 실행하지 마세요. 앞에 jai만 붙여도 최악의 경우는 훨씬 작아집니다.
격리는 어려우면 안 됩니다
빌드할 이미지도 없고, 관리할 Dockerfile도 없고, 플래그 40개짜리 bwrap 명령도 없습니다. 그냥 jai your-agent면 끝입니다. 격리가 YOLO 모드보다 귀찮으면, 결국 아무도 안 씁니다.
동작 방식
명령 하나면 됩니다. 설정도 필요 없습니다.
명령 앞에 붙이기:
jai codex,jai claude, 혹은 셸이 필요하면 그냥jai.CWD는 그대로 쓰기 가능: 감옥 안에서도 현재 작업 디렉터리는 읽기/쓰기가 모두 가능합니다.
홈은 오버레이로 처리: 홈 디렉터리에서 생기는 변경은 copy-on-write로 따로 기록됩니다. 원본은 건드리지 않습니다.
나머지는 잠금:
/tmp와/var/tmp는 전용으로 분리됩니다. 그 밖의 파일은 모두 읽기 전용입니다.
세 가지 모드
워크플로우에 맞는 격리 수준을 고르면 됩니다.
Casual | Strict | Bare | |
|---|---|---|---|
홈 디렉터리 | Copy-on-write 오버레이 | 비어 있는 전용 홈 | 비어 있는 전용 홈 |
프로세스 실행 주체 | 현재 사용자 | 권한 없는 | 현재 사용자 |
기밀성 | 약함 —- 대부분 읽을 수 있음 | 강함 —- UID 분리 | 중간 —- 같은 UID지만 홈은 숨김 |
무결성 | 오버레이가 원본을 보호 | 완전 격리 | 완전 격리 |
NFS 홈 지원 | 예 | 아니오 | 예 |
무료 소프트웨어이지, 유입 퍼널이 아닙니다 {#free-software-not-a-funnel}
jai는 Stanford Secure Computer Systems 연구 그룹과 Future of Digital Currency Initiative가 만드는 자유 소프트웨어입니다. 목표는 사람들이 AI를 더 안전하게 쓰도록 만드는 것입니다.
대안과 비교하면
jai는 컨테이너를 대체하려는 도구가 아닙니다. 그냥 다른 틈새를 메우는 도구입니다.
Docker
재현 가능한 이미지 기반 환경에는 아주 좋습니다. 하지만 호스트 도구를 임시로 샌드박싱하는 용도에는 준비가 더 무겁습니다. 홈 디렉터리에 overlay를 씌우는 워크플로우도 없습니다.
bubblewrap
강력한 namespace 샌드박스입니다. 하지만 파일시스템 뷰를 직접 조립해야 합니다 —- 대개 길고 번거로운 wrapper script로 이어지는데, jai가 없애려는 마찰이 바로 그 부분입니다.
chroot
보안 메커니즘이 아닙니다. mount 격리도 없고, PID namespace도 없고, 자격 증명 분리도 없습니다. Linux 문서에서도 샌드박싱 용도로 의도된 것이 아니라고 명시합니다.
jai가 완벽한 안전을 약속하는 건 아닙니다.
jai는 캐주얼한 샌드박스입니다 —- 피해 반경을 줄여줄 뿐, AI 에이전트가 당신이나 시스템에 해를 끼칠 수 있는 모든 경로를 없애주지는 못합니다. Casual 모드는 기밀성을 보호하지 않습니다. Strict 모드도 하드닝된 컨테이너 런타임이나 VM과 동급은 아닙니다. 강한 멀티테넌트 격리나 집요한 공격자에 대한 방어가 필요하다면, 제대로 된 컨테이너나 가상 머신을 쓰세요.
