# jai - AI 에이전트를 위한 손쉬운 격리 도구

> Clean Markdown view of GeekNews topic #27962. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=27962](https://news.hada.io/topic?id=27962)
- GeekNews Markdown: [https://news.hada.io/topic/27962.md](https://news.hada.io/topic/27962.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-03-29T09:43:03+09:00
- Updated: 2026-03-29T09:43:03+09:00
- Original source: [jai.scs.stanford.edu](https://jai.scs.stanford.edu/)
- Points: 3
- Comments: 1

## Topic Body

- Linux 환경에서 AI 에이전트를 **격리 실행**할 수 있는 경량 도구로, 복잡한 컨테이너 설정 없이 단일 명령으로 안전한 실행 경계 제공
- AI 도구가 실제 파일 시스템에 접근해 **데이터를 삭제하거나 손상시키는 사례**가 잇따르며, 안전한 실행 환경의 필요성이 부각됨
- 홈 디렉터리를 **copy-on-write 오버레이**로 보호하고 `/tmp`·`/var/tmp`를 분리해 원본 파일 변경을 방지
- Casual·Strict·Bare 세 가지 **격리 모드**를 제공해 보안 수준과 접근 범위를 선택 가능
- Stanford 연구팀이 개발한 **오픈소스 프로젝트**로, AI 도구를 보다 안전하게 활용하기 위한 실용적 보호 수단 제공

---

### AI 에이전트 격리를 위한 경량 도구 **jai**
- **jai**는 Linux 환경에서 AI 에이전트를 손쉽게 **격리(containment)** 할 수 있도록 설계된 도구
  - 복잡한 컨테이너나 VM 설정 없이 단일 명령으로 안전한 실행 경계 제공
  - 코딩 보조나 스크립트 실행 등 기존 워크플로우에 바로 적용 가능
- ## 실제 문제 사례
  - 여러 사용자가 AI 도구 사용 중 **파일 손실 및 디렉터리 삭제** 피해를 보고함
    - Nick Davidov은 15년치 가족 사진이 터미널 명령으로 삭제되었다고 보고
    - Anthropic의 Claude Code는 홈 디렉터리를 삭제해 개발 프로젝트가 손실됨
    - Cursor는 작업 트리를 비워 “모든 것이 사라졌다”고 보고됨
    - Reddit 사용자는 Antigravity가 전체 D 드라이브를 삭제했다고 언급
    - 또 다른 Cursor 사용자는 100GB의 파일이 삭제되었다고 보고
  - 이러한 사례는 AI 도구에 실제 계정 접근을 허용할 때 발생하는 **보안 공백**을 보여줌
- ## jai의 핵심 기능
  - **실행 계정과 홈 디렉터리 사이의 경계**를 자동 설정
    - 작업 디렉터리는 완전한 읽기/쓰기 권한 유지
    - 홈 디렉터리는 **copy-on-write 오버레이**로 보호되어 원본 파일이 변경되지 않음
    - `/tmp`와 `/var/tmp`는 독립된 공간으로 분리, 나머지 파일은 읽기 전용으로 제한
  - 명령어 앞에 `jai`를 붙이는 것만으로 격리 실행 가능
    - 예: `jai codex`, `jai claude`, 또는 단순히 `jai`로 셸 실행
  - **Dockerfile**이나 이미지 빌드 과정 없이 즉시 사용 가능
    - 복잡한 `bwrap` 플래그 설정이나 스크립트 작성이 불필요
- ## 격리 모드 선택
  - **Casual / Strict / Bare** 세 가지 모드 제공
    - Casual: 홈 디렉터리를 copy-on-write로 보호, 대부분의 파일 읽기 가능
    - Strict: 별도 `jai` 사용자로 실행, 홈 디렉터리가 비워진 상태로 강력한 격리 제공
    - Bare: 홈 디렉터리가 비워진 상태지만 사용자 UID 유지
  - 각 모드는 **기밀성(confidentiality)**, **무결성(integrity)**, **NFS 지원 여부**가 다름
    - Strict 모드는 가장 강력한 격리를 제공하지만 NFS 홈은 지원하지 않음
- ## 대안 도구와의 비교
  - **Docker**
    - 이미지 기반 환경 재현에는 적합하지만, 호스트 도구의 임시 샌드박싱에는 무거움
    - 홈 디렉터리 오버레이 기능 없음
  - **bubblewrap**
    - 강력한 네임스페이스 샌드박스지만 파일시스템 구성을 직접 지정해야 함
    - jai는 이러한 복잡성을 제거
  - **chroot**
    - 보안 격리 수단이 아니며, 마운트·PID 네임스페이스·자격 분리 기능이 없어 Linux에서도 샌드박싱 용도로 권장되지 않음
- ## 보안 한계
  - jai는 **완전한 보안을 보장하지 않음**
    - “casual sandbox”로서 피해 범위를 줄이지만 모든 공격을 차단하지는 않음
    - Casual 모드는 기밀성 보호가 약하며, Strict 모드도 컨테이너나 VM 수준의 격리와는 다름
    - 다중 테넌트 환경이나 고위험 상황에서는 **컨테이너 또는 가상머신 사용 권장**
- ## 프로젝트 배경
  - **Stanford Secure Computer Systems(SCS)** 연구 그룹과 **Future of Digital Currency Initiative(FDCI)** 가 공동 개발
  - **무료 오픈소스 소프트웨어**로 제공되며, 사용자가 AI를 **더 안전하게 활용**할 수 있도록 지원

## Comments



### Comment 54058

- Author: neo
- Created: 2026-03-29T09:43:03+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47550282) 
- `.claude/settings.json`에 다음 설정을 추가하면 됨  
  ```json
  {
    "sandbox": {
      "enabled": true,
      "filesystem": {
        "allowRead": ["."],
        "denyRead": ["~/"],
        "allowWrite": ["."],
        "denyWrite": ["/"]
      }
    }
  }
  ```  
  외부 디렉토리 접근을 허용하려면 `allowRead` 부분을 수정하면 됨  
  이 기능은 10일 전에 추가된 **새로운 샌드박스 옵션**임  
  - claude가 현재 디렉토리를 헷갈려 하거나 `rm -rf *` 같은 명령을 실행하는 걸 본 적이 있음  
    다행히 동시에 일어나진 않았지만, 상상만 해도 아찔함  
    샌드박스 아이디어는 좋지만, **저수준에서 강제 적용**되어야 효과적임  
    claude 자체가 AI가 만든 거대한 프로그램이라, 사람이 직접 만든 3000줄 미만의 보안 레이어를 추가하는 게 의미 있는 방어 수단이 될 수 있음  
  - claude-code의 향후 버전이 이 설정 이름을 조용히 바꾸거나 제거할 수도 있음  
    그래서 사람들은 **별도의 샌드박싱 소프트웨어**를 선호할 수도 있음  
  - GPU를 쓰게 하되 `/` 삭제만 막는 농담 섞인 설정 예시를 공유함  
    `/dev/nvidia*` 장치 접근을 허용하는 구성으로, 데이터 유출은 감수하겠다는 **풍자적 설정**임  
  - 수십 년간 검증된 **기존 보안 도구**들이 이미 존재함  
    claude를 제한된 권한의 사용자로 실행하면 하위 프로세스에도 격리가 자동 상속됨  
  - Linux(Arch)와 macOS(Tahoe)에서 샌드박스 기능이 제대로 작동하지 않았음  
    [관련 이슈](https://github.com/anthropics/claude-code/issues/32226)가 열려 있음  
    bubblewrap과 seatbelt는 독립적으로는 잘 작동하지만 claude-code를 통해 실행하면 비활성화된 것처럼 보임  

- 사람들이 이렇게 쉽게 **AI 에이전트**를 개인 컴퓨터에 설치하는 게 놀라움  
  수십 년간 시스템 보안을 지켜왔는데, 갑자기 예측 불가능한 소프트웨어에 모든 권한을 준 셈임  
  - 예전에도 빌드 도구가 자동으로 의존성을 끌어오던 시절에 경고를 무시했는데, 지금은 **공급망 공격**이 반복되고 있음  
    단기적 편의가 장기적 보안보다 우선되는 현실임  
  - 사실 이런 위험을 감수하는 사람들과 보안을 중시하는 사람들은 **서로 다른 집단**임  
  - 회사 환경에서는 이미 접근이 제한되어 있으니, 개인용 PC에서만 더 민감한 문제임  
    내 원격 개발 VM에는 Claude가 봐도 상관없는 데이터만 있음  
  - Docker 초창기에도 “그냥 이미지 다운로드하면 되지!”라는 분위기였음  
    하지만 업계는 곧 **보안 리스크**를 깨닫고 대응했음  

- 단순한 **Unix 권한 분리**로도 충분함  
  사용자 계정을 두 개 두고, AI와 공유할 폴더만 그룹으로 묶으면 됨  
  [관련 블로그 글](https://apostrophecms.com/blog/how-to-be-more-productive-wit...) 참고  

- 홈페이지에 “**맹목적 신뢰를 멈추라**”고 써 있는데, 설치 방법은 `curl | bash` 대신 수동 빌드임  
  - tar 파일을 직접 풀고 `makepkg -i`로 설치하는 게 훨씬 안전함  
    PKGFILE은 30줄 정도로 짧고, 빌드 함수도 7줄뿐임  
    반면 rustup(910줄), claude(158줄), opencode(460줄) 같은 스크립트는 훨씬 복잡함  
  - 반대로 `curl | tar | makepkg`를 한 줄로 연결하는 건 **신뢰할 수 없는 방식**임  

- 이 프로젝트는 설계가 잘 되어 있고, 내 방식보다 **조금 더 안전하고 편리**해 보임  
  나는 별도 사용자 계정을 만들어 에이전트를 격리함  
  다만 권한이 꼬일 때가 있어 스크립트로 수정함  
  결국 가장 확실한 방법은 **아예 별도 노트북을 주는 것**임  
  물리적으로 분리된 장비만큼 안전한 건 없음  
  - 하지만 외부 서비스와 통신하려면 **API 키**를 줘야 해서, 그 키가 유출될 위험이 있음  
    에이전트는 보안 침투 테스트 수준의 능력을 갖고 있어서 단순한 사용자 분리만으로는 불안함  
  - 나도 현재는 사용자 분리 방식을 쓰고 있음  
    컨테이너를 쓰면 에이전트가 스스로 컨테이너를 만들 때 혼란스러워짐  

- 사이트가 “vibe-coded”라서 퀄리티가 낮아 보이지만, 실제 툴은 **Stanford 교수**가 직접 구현한 것임  
  [FAQ 링크](https://jai.scs.stanford.edu/faq.html#was-jai-written-by-an-...) 참고  
  - 작성자인 내가 직접 말하자면, 웹디자인은 못하지만 **운영체제 전문가**임  
    문서 내용은 정확하게 수정했으니 신뢰해도 됨  
    사이트는 AI가 만든 걸 그대로 둔 거라 다소 아이러니함  
  - 저자는 **David Mazieres**, 2000년대 초부터 사용자 수준 파일시스템 연구를 해온 사람임  
    Stanford Secure Computer Systems 그룹을 이끌고 있음  
  - jai는 고위험 툴이지만, 웹사이트는 단순하니 vibe-coded여도 괜찮음  
  - 그래도 개인적으로는 **간결한 HTML 페이지**가 더 낫다고 생각함  

- 에이전트가 프로젝트 디렉토리에 쓰기 권한을 가지면 **지속적 익스플로잇**이 가능하다는 점이 걱정됨  
  `.pyc`, `.venv`, `.git/hooks` 같은 파일을 통해 샌드박스 밖에서 실행될 수 있음  
  [ChatGPT 대화](https://chatgpt.com/share/69c3ec10-0e40-832a-b905-31736d8a34...)에서도 이런 취약점이 확인됨  
  그래서 가장 안전한 방법은 **git patch 기반 파일 전송**임  
  샌드박스에서 수정된 파일을 git에 커밋된 항목만 외부로 내보내는 식으로 해야 함  
  - `.git/` 디렉토리를 읽기 전용으로 만드는 옵션을 추가하는 게 좋겠음  
    `jai -D`로 CWD를 오버레이로 만들 수 있지만, 변경사항을 병합하는 게 까다로움  
  - 나는 아예 샌드박스(VM 수준) 안에서만 코드를 실행함  
    에이전트는 별도의 git worktree 브랜치에서 작업하고, 리뷰 후에만 병합함  
    이렇게 하면 **리뷰 기반 보안 흐름**을 유지할 수 있음  
  - 절대 **git hook**은 허용하지 말아야 함  

- 간단한 대안으로, 에이전트를 **별도 사용자 계정**에서 ssh로 실행함  
  프로젝트 디렉토리를 바인드 마운트해서 접근을 제어함  
  VSCode의 ssh remote 기능과 잘 어울림  
  - 나도 6개월째 전용 계정을 쓰고 있는데, 접근 가능한 디렉토리만 관리하면 됨  
    복잡한 보안 시스템보다 훨씬 단순하고 **효율적인 격리 방식**임  

- 실제로는 `rm -rf`보다 더 미묘한 문제가 많음  
  claude-code가 SVG를 저장하려고 `/public/blog/` 폴더를 만들어서 Apache 라우팅이 깨진 적이 있음  
  삭제나 권한 문제는 아니지만, **의도치 않은 동작**으로 블로그가 404를 뿜었음  
  jai는 이런 대형 실수는 막겠지만, 이런 세밀한 문제는 여전히 어려움  

- 훌륭한 프로젝트지만 **제목이 아쉬움**  
  현재 디렉토리에는 전체 접근, 나머지는 읽기 전용, 홈 디렉토리는 copy-on-write로 처리하는 구조가 마음에 듦  
  이런 접근이 **AI 에이전트의 기본 보안 모델**이 되어야 함  
  - 사이트에 제목이 없으니 “**jai - filesystem containment for AI agents**” 같은 이름이 더 어울릴 듯함
