ai-jail
운영체제 샌드박스로 코딩 에이전트를 가두는 실행기
cargo install --locked ai-jail코딩 에이전트를 운영체제 수준 샌드박스 안에서 실행하는 도구입니다. 리눅스에서는 버블랩과 랜드락, seccomp, 자원 제한을 함께 쓰고 맥에서는 애플의 샌드박스 실행 기능을 씁니다. 기본값이 안전한 쪽입니다. 홈 디렉터리는 비어 있는 임시 파일시스템으로 바뀌고 에이전트의 자격 증명 상태는 따로 요청하지 않는 한 붙지 않습니다. 프로젝트 폴더만 쓰기가 열리고 호스트의 다른 권한은 닫힙니다. 설정 파일을 읽을 수 없거나 형식이 잘못되면 약해진 정책으로 실행하는 대신 실패로 끝냅니다. 적대적인 코드를 다룰 때는 일회용 가상머신을 대신하지 못한다고 스스로 밝히고 있습니다.
판단
이럴 때 씁니다
- 리눅스에서 코딩 에이전트의 권한을 좁혀 돌려야 할 때
- 에이전트에 자격 증명을 붙이지 않은 상태로 먼저 시험하고 싶을 때
- 프로젝트 폴더만 쓰기를 열고 나머지는 닫고 싶을 때
이럴 땐 쓰지 마세요
- 윈도우는 지원하지 않습니다. WSL2 안에서 리눅스 방식으로 써야 합니다
- 적대적인 코드를 다룰 때는 일회용 가상머신을 대신하지 못합니다
- 리눅스에서는 버블랩을 따로 깔아야 합니다
차별점
- 리눅스와 맥 양쪽에서 운영체제 수준 격리 기능을 씁니다.
- 비어 있는 홈과 자격 증명 미부착이 기본값입니다.
- 설정이 잘못되면 약해진 정책으로 실행하지 않고 실패합니다.
- 실행 전에 적용될 정책만 확인하는 옵션이 있습니다.
워크플로
- 01패키지 관리자나 카고로 설치합니다.
- 02리눅스면 버블랩을 깝니다.
- 03프로젝트 폴더에서 에이전트 명령 앞에 붙여 실행합니다.
- 04무엇이 열리는지 미리보기 옵션으로 확인합니다.
- 05자격 증명이 필요하면 별도 옵션이나 신뢰 설정으로 명시해 붙입니다.
주요 명령
| 명령 | 설명 |
|---|---|
cargo install --locked ai-jail | 크레이트에서 설치합니다. |
brew tap akitaonrails/tap && brew install ai-jail | 홈브루로 설치합니다. |
ai-jail claude | 자격 증명 없이 에이전트를 샌드박스 안에서 띄웁니다. |
ai-jail --dry-run claude | 실제 실행 없이 적용될 정책을 확인합니다. 설정 파일도 만들지 않습니다. |
함정
설치 전에 확인하세요
- 홈 디렉터리가 기본으로 비어 있는 임시 파일시스템으로 바뀝니다. 도구가 홈의 설정을 읽는다고 가정하면 동작이 달라집니다.
- 에이전트 자격 증명은 명시하지 않으면 붙지 않습니다. 붙이는 순간 샌드박스가 그 자격 증명까지 노출한다는 점을 문서가 경고합니다.
- 설정 파일을 읽을 수 없거나 형식이 잘못되면 약한 정책으로 돌지 않고 실패로 끝냅니다. 안전한 선택이지만 원인을 모르면 당황하게 됩니다.
- 버블랩 경로를 환경 변수로 지정할 때 소유자와 권한 조건이 까다롭습니다. 조건을 만족하지 않으면 거부합니다.
- 100% 안전하지는 않다고 저장소 설명에 직접 적혀 있습니다.
비교
맥 전용 도구는 애플의 샌드박스만 다루면 되지만 리눅스는 격리 수단이 여러 겹입니다. 이쪽은 버블랩과 랜드락, seccomp 를 함께 묶어 리눅스 쪽을 주로 겨냥합니다. 대신 준비물이 늘고, 정말 위험한 코드에는 가상머신이 필요하다고 스스로 선을 긋습니다.
최근 변경
신뢰한 프로젝트 설정 파일에서 물결표 경로가 펼쳐지지 않던 문제를 고쳤습니다. 전역 설정을 처리한 뒤에 프로젝트 설정이 합쳐지는 순서 때문에 상대 경로로 남아 엉뚱한 위치를 가리켰습니다.