본문으로 건너뛰기
메뉴
나에게 필요할까?에이전트가 내 컴퓨터에서 닿을 수 있는 것작동 방식에이전트와 시스템 사이에 놓이는 계층비교내장 샌드박스, Docker, VM설정작업에 필요한 것만 열기보안위협 모델과 한계다운로드바이너리, 체크섬, 릴리스 노트설치
AI 코딩 에이전트를 위한 OS 샌드박스

AI 코딩 에이전트를 가두는 감옥

ai-jail은 Linux와 macOS에서 Claude Code, Codex 같은 AI 코딩 에이전트를 OS 샌드박스 안에서 실행합니다. 프로젝트에는 그대로 쓸 수 있습니다. 실행한 에이전트 자체의 로그인 정보를 제외하면 사용자의 파일과 자격 증명에는 닿을 수 없습니다.

terminal
ai-jail claude
VM 아님

에이전트에게 프로젝트만 내주고 컴퓨터 전체는 내주지 마세요. ai‑jail은 그 경계를 실제로 강제합니다.

멀쩡한 에이전트가 사고를 내는 방식

에이전트는 하루 종일 내가 쓰지 않은 텍스트를 읽습니다. 웹 페이지, 이슈, README, 패키지가 그렇습니다. 지시문이 숨어 있는 페이지 하나면 충분하고, 에이전트는 악의가 없어도 그 지시를 따릅니다.

↔ 옆으로 밀어 전체 다이어그램을 확인하세요

같은 페이지를 ai-jail 없이, 그리고 ai-jail과 함께 읽은 결과입니다. 읽을 키가 그 안에 없고, 일반 인터넷은 에이전트 자체 API 호스트와 Linux 패키지 레지스트리를 제외하면 닫혀 있습니다.
에이전트가 또 무엇에 닿을 수 있는지
  1. 에이전트는 내 계정으로 실행됩니다

    코딩 에이전트는 내 사용자 계정으로 도는 프로그램입니다. 에이전트가 띄우는 스크립트, 패키지, MCP 서버도 마찬가지입니다. MCP 서버는 에이전트에 도구를 더해 주는 보조 프로그램입니다. 이 모두가 내가 열 수 있는 것은 무엇이든 열 수 있습니다.

  2. ai-jail을 거쳐 시작하세요

    명령 앞에 ai-jail을 붙입니다. 에이전트는 자기만의 네임스페이스에서 시작되고, 프로젝트는 원래와 같은 경로에 마운트됩니다.

  3. 홈 디렉터리는 마운트되지 않습니다

    에이전트는 새로 만든 빈 홈 디렉터리를 받습니다. SSH 키(서버에 로그인할 때 쓰는 파일), 클라우드 자격 증명, 브라우저 프로필, 다른 프로젝트는 그 안에 아예 없습니다.

  4. 시크릿, 네트워크, 장치는 닫혀 있습니다

    ai-jail은 환경 변수를 허용 목록에 있는 것만 남기므로, 셸 시크릿은 셸에 그대로 남습니다. 네트워크는 에이전트 자신의 API 호스트와, Linux에서는 툴체인이 패키지를 받아 오는 레지스트리를 빼면 닫혀 있습니다. Docker 소켓, 화면, 클립보드는 꺼져 있습니다.

  5. 작업에 필요한 것만 여세요

    Claude Code, Codex, Gemini, Grok, Devin은 로그인된 상태로 시작하고 자기 API 호스트에 닿습니다. 더 열려면 플래그, 즉 ai-jail 뒤에 붙이는 옵션을 씁니다. --allow-host는 호스트를 더하고, --network는 전부 엽니다.

하네스 전체를 둘러싸는 벽

샌드박스를 내장한 에이전트는 모델이 실행하는 명령에만 샌드박스를 씌웁니다. 에이전트 프로세스와 파일 도구, MCP 서버, 훅(정해진 시점에 에이전트가 실행하는 스크립트)은 바깥에 남아 내 계정으로 돕니다. ai-jail은 이 모두를 안에서 시작합니다. 프롬프트는 사람에게 묻고, 사람은 서두르거나 속을 수 있습니다. 샌드박스는 운영체제의 중심인 커널에 묻고, 커널은 매번 같은 답을 줍니다.

↔ 옆으로 밀어 전체 다이어그램을 확인하세요

정책은 한 번만 작성하면 쓰는 에이전트 모두에 적용됩니다.
전체 비교 보기

설정 없이 기본으로 적용되는 것

내 컴퓨터에 닿는 기능은 모두 직접 켜기 전까지 꺼져 있습니다. 예외는 에이전트 자신의 로그인, 자신의 API 호스트, 내 툴체인(Linux), 그 패키지 레지스트리이며, 각각 --no- 스위치로 끌 수 있습니다. 프로젝트 바깥에 쓴 내용은 메모리에만 남고 세션이 끝나면 사라집니다.

감옥 안

  • 내 프로젝트. 읽기·쓰기, 실제 경로 그대로
  • 내 툴체인. 읽기 전용, 감옥 전용 캐시 포함(Linux)
  • ~/.claude 같은 에이전트 자신의 로그인. 로그인된 상태로 시작
  • 알려진 에이전트 자신의 API 호스트, Linux에서는 패키지 레지스트리도
  • 새 홈 디렉터리와 전용 /tmp

닿을 수 없음

  • ~/.ssh, ~/.aws, ~/.gnupg, 브라우저 프로필
  • 셸 시크릿. 예외는 에이전트 자신의 API 키뿐
  • 다른 프로세스, 호스트 IPC, ptrace와 bpf

요청하기 전까지 꺼짐

  • 호스트를 더하는 --allow-host, 로컬 서비스 하나를 여는 --forward-port, 전부 여는 --network
  • --ssh, --gpu, --display, --docker 등
모든 스위치 보기

ai-jail은 데몬도 root도 없는 작은 프로그램 하나입니다. Linux에서는 bubblewrap으로 네임스페이스와 마운트를 만들고, 커널이 지원하면 Landlock과 seccomp, 리소스 제한을 더합니다. macOS에서는 플랫폼이 지원하는 범위를 더 얇은 sandbox-exec 프로파일로 옮깁니다. 에이전트는 내 컴퓨터의 컴파일러와 런타임을 쓰고, 기본적으로 저장소 안의 .ai-jail 파일은 감옥을 더 조일 수만 있을 뿐 열 수는 없습니다.

계층별 작동 방식

가장 먼저 나오는 질문

에이전트가 느려지나요?
아니요. 샌드박스는 커널 기능과 네임스페이스, 마운트 규칙으로 만들어집니다. 에뮬레이션도 가상 머신도 없어서 에이전트는 네이티브 속도로 실행됩니다.
어떤 에이전트를 지원하나요?
어떤 명령이든 됩니다. Claude Code, Codex, Gemini CLI, OpenCode, Antigravity, Kimi, Kiro, Prime Agent, Devin, Crush, Grok, jcode, pi, aider, SoulForge, omp가 로그인을 어디에 두는지 알고 있어서 기본으로 마운트합니다. 설치 페이지의 표에 각 에이전트가 받는 것이 정리되어 있고, ai-jail bash로 감옥 안에서 셸을 열어 둘러볼 수 있습니다.
Windows에서도 되나요?
네이티브로는 안 됩니다. WSL2를 쓰고 그 안에서 Linux 백엔드를 사용하세요.
에이전트에 인터넷이 필요한데, 그래도 감옥이 쓸모 있나요?
네. Claude Code 같은 알려진 에이전트는 바로 자기 API 호스트에 닿고, Linux에서는 패키지 레지스트리에도 닿으며, 그 밖에는 아무 데도 닿지 않습니다. --allow-host는 지정한 호스트를 더합니다. 대신 --network를 켜도 에이전트가 읽을 수 있는 것은 여전히 프로젝트뿐이라서, 키나 홈 디렉터리의 나머지는 보낼 것 자체가 없습니다. 다만 읽을 수 있는 것은 보낼 수 있으므로 프로젝트 안의 시크릿을 마스킹해야 합니다. 마스킹 방법 보기.
무료인가요?
네. ai-jail은 GPL 3.0 라이선스를 따르는 오픈 소스입니다.

에이전트를 철창 안에 넣으세요

ai-jail은 바이너리 하나입니다. 데몬도 root 권한도 필요 없습니다. 평소 실행하던 명령 앞에 단어 하나만 붙이면 됩니다.

terminal
brew tap akitaonrails/tap && brew install ai-jailai-jail claude