akitaonrails/ai-jail

Multi-OS sandbox to run AI agents with better constraints (it is not 100% secure, but enough)

ai-jail은 AI 코딩 에이전트(Claude, Codex, Codex 스타일 하네스 등)를 OS 수준 샌드박스 안에서 실행하는 명령줄 도구입니다. 그 목적은 좁고 정직합니다. 악의적인 공격자가 탈출하려는 것을 방어하지 않습니다. 능력이 있지만 실수할 수 있는 AI 에이전트가 프로젝트 밖의 파일을 지우는 잘못 입력한 명령을 실행하는 것과 같은 정직한 실수를 방지할 뿐입니다.

어떻게 보호하나요

에이전트는 실제 $HOME 대신 새롭고 일회용인 홈 디렉토리(tmpfs)를 받습니다. 작업 중인 프로젝트 디렉토리는 읽기/쓰기가 가능한 상태로 유지됩니다. 호스트의 다른 모든 것은 명시적으로 노출하지 않는 한 숨겨집니다. Linux에서는 bubblewrap과 Landlock(파일 시스템 접근 제어) 및 seccomp(시스템 호출 필터링)를 사용하고, macOS에서는 Apple의 sandbox-exec를 사용합니다.

기본적으로 켜져 있는 것(개발자 친화적, 잠금 아님)

  • 에이전트 자체 자격 증명 디렉토리(~/.claude, ~/.codex 등)는 읽기/쓰기로 마운트되어 매 세션 로그인을 요구하지 않고 사전 인증된 상태로 시작합니다. --no-agent-state로 옵트아웃할 수 있습니다.
  • 영구적이고 jail 소유의 종속성 캐시(cargo, npm, go 등)와 읽기 전용 Rust 툴체인을 통해 실제 툴체인을 노출하지 않고 npm install / cargo build가 바로 작동합니다.
  • 패키지 레지스트리에만 허용되는 필터링된 네트워크 출력으로 종속성 다운로드가 성공합니다.

기본적으로 꺼져 있는 것

네트워크, GPU, KVM, 디스플레이, 오디오, Docker 소켓, SSH 키, Tailscale, 클라우드 자격 증명(GitHub/AWS/kube/gcloud/docker) — 각각은 문서화된 위험과 함께 명시적인 옵트인 플래그입니다. 샌드박스에서 실행되는 모든 것은 마운트한 것을 사용할 수 있기 때문입니다.

주목할 만한 기능

  • --lockdown: 가장 엄격한 모드 — 읽기 전용 프로젝트, 자격 증명 없음, 네트워크 없음, 엄격한 seccomp. 그래도 VM은 아닙니다.
  • --allow-host HOST: 샌드박스 내 프록시를 통한 필터링된 출력으로 나열된 호스트에만 연결합니다. --secret KEY=host와 결합하면 실제 API 키가 샌드박스에 들어가지 않습니다. 자리 표시자가 해당 호스트에 대한 요청에 대해서만 실제 값으로 교체됩니다.
  • --dry-run: 아무것도 쓰지 않고 실행을 시뮬레이션합니다.
  • 쓰기 가능성 범위: 프로젝트 디렉토리가 폭발 반경이므로 사용자는 에이전트 하네스에서 "자동 수락"(YOLO) 모드를 안전하게 활성화할 수 있습니다.

설치/사용법: Homebrew, Arch(AUR), cargo install, Nix flakes 또는 GitHub releases. 사용법은 간단합니다. 프로젝트 디렉토리 안에서 ai-jail claude(또는 codex 등)를 실행하면 됩니다. Linux에는 bubblewrap이 필요합니다. macOS는 더 이상 사용되지 않는 sandbox-exec를 사용합니다. Windows는 WSL2를 통해서만 가능합니다.

결론: LLM 기반 코딩 에이전트를 로컬에서 실행하기 위한 실용적인 사고 방지 계층입니다. 보안 경계가 아닙니다. 범위가 명확하고, 신중하게 설계되었으며, 위협 모델에 대해 비정상적으로 솔직합니다.

관련

  • 프로젝트
  • 프로젝트
  • Dispatch
  • 프로젝트
  • 프로젝트