AI 코딩 에이전트에게 '당신의 머신'을 주지 마라 — Clawk의 격리 VM 전략 (github.com)
목차(4)
한줄 요약
AI 코딩 에이전트를 격리된 일회용 VM에서 실행해 호스트 파일시스템과 자격증명을 보호하는 오픈소스 도구, Clawk.
무엇이 달라지나?
AI 코딩 에이전트를 실제 업무에 붙이는 순간 딜레마가 생긴다. 패키지를 설치하고, 작성한 코드를 실행하고, 서버를 띄우고, 네트워크를 쓰는 것 — 에이전트가 진짜 유용하려면 이 모든 게 필요하다. 그런데 이걸 개발자 본인의 머신에서 허용하면 두 가지 나쁜 선택지만 남는다. 명령 하나하나를 승인하며 에이전트를 감시하거나, 아니면 권한 검사를 통째로 꺼버리고 rm -rf나 토큰 유출을 그냥 믿거나.
Clawk은 세 번째 길을 제안한다. 저장소 디렉터리에서 clawk 명령 하나를 입력하면, Claude Code나 Codex 같은 코딩 에이전트가 일회용 리눅스 VM 안에서 실행된다. 코드는 VM 안에 마운트되고, 에이전트는 게스트 환경에서 root 권한을 가지며, 호스트의 파일시스템과 키체인은 애초에 VM에 들어오지 않는다.
격리의 핵심은 '규칙'이 아니라 '하드웨어 경계'라는 점이다. 프롬프트 레벨에서 걸어두는 정책은 에이전트가 설득당하거나 우회할 수 있다. 반면 하이퍼바이저로 분리된 별도 커널은 그런 식으로 뚫리지 않는다. 호스트 파일시스템이 접근 제한된 게 아니라, 애초에 마운트되지 않은 것이다.
네트워크도 명시적 허용 목록(allow-list) 방식으로 제어된다. 허용 목록에 없는 서버로의 아웃바운드 트래픽은 차단된다. 동시에 ssh-agent는 포워딩되기 때문에, SSH 키 자체가 VM에 들어오지 않아도 git push는 정상 작동한다. 단, 에이전트가 읽을 수 있는 데이터는 허용된 경로로 외부에 발행될 수 있다는 점은 프로젝트 문서도 솔직히 인정하고 있다.
VM이 망가지면? clawk destroy && clawk으로 초기화하면 된다. 저장소와 에이전트 대화 내역은 호스트에 남아 있으므로 잃는 건 일회용 VM 디스크뿐이다.
실무에서 어떤 의미인가?
컨테이너 기반 샌드박스와 VM 기반 격리의 차이는 생각보다 크다. 컨테이너는 호스트 커널을 공유하고 syscall 필터로 접근을 막는 방식이라, 시스템 패키지 설치, 백그라운드 서비스 구동, 특권 포트 바인딩 같은 작업에서 자꾸 마찰이 생긴다. Clawk의 VM은 게스트가 독립된 리눅스 커널을 갖기 때문에, 에이전트가 /etc를 수정하거나 커널 모듈을 로드하는 것도 가능하다. 지원 하드웨어에서는 VM 내부에서 Docker나 Kind 같은 컨테이너 워크플로우를 돌리는 것도 된다.
외주 개발이나 팀 단위 개발 환경에서도 의미 있는 구조다. 프로젝트마다, 혹은 티켓마다 독립된 샌드박스를 띄울 수 있고, 멀티 레포 작업은 워크트리 단위로 분리해 PR을 병렬로 진행할 수 있다. 유휴 VM은 자동으로 메모리를 반납하고 디스크에 서스펜드되므로, 쓰지 않는 샌드박스가 리소스를 잡아먹는 문제도 최소화된다.
현재 기준으로 macOS 14 이상 Apple Silicon 환경을 주 대상으로 하며, Linux는 Firecracker 기반으로 실험적으로 지원된다. Go 1.26 이상이 필요하고, brew install clawkwork/tap/claw로 설치할 수 있다. Apache 2.0 라이선스 오픈소스다.
도입 전 체크포인트
Clawk은 아직 1.0 이전 단계로, 프로젝트 자체도 릴리즈 간 브레이킹 체인지가 있을 수 있다고 명시하고 있다. 프로덕션 환경보다는 로컬 에이전트 실험, 개발 워크플로우 탐색 용도로 접근하는 게 현실적이다.
보안 모델의 한계도 명확히 이해해야 한다. 허용된 네트워크 엔드포인트(예: github.com)를 통해 에이전트가 읽은 데이터를 외부로 내보내는 것은 구조적으로 막기 어렵다. 에이전트에게 민감한 비즈니스 로직이나 내부 자격증명을 노출할 계획이라면, 허용 목록 설계를 신중하게 해야 한다.
체크리스트로 정리하면 이렇다.
- macOS 14+ Apple Silicon 환경인가?
- 에이전트에게 마운트할 저장소의 민감도를 파악했는가?
- 네트워크 허용 목록에 들어갈 엔드포인트를 정의할 수 있는가?
- pre-1.0 소프트웨어의 불안정성을 감수할 수 있는 실험적 워크플로우인가?
AI 에이전트를 단순히 코드 자동완성 도구로 쓰는 단계를 넘어, 실제 명령을 실행하는 자율 에이전트로 활용하려 할 때 격리 환경 설계는 선택이 아니라 필수다. Clawk은 그 설계를 "VM 하나면 된다"는 방식으로 단순화하려는 시도다.
자주 묻는 질문
Q.Docker 컨테이너로 AI 에이전트를 격리하는 것과 어떤 차이가 있나?
Docker는 호스트 커널을 공유하는 구조라 syscall 필터 정책으로 접근을 제한하는 방식이다. 반면 Clawk의 VM은 게스트가 독립된 커널을 실행하므로, 격리 경계 자체가 하이퍼바이저 수준으로 더 낮다. 실용적으로는 시스템 패키지 설치, 특권 포트 바인딩, 백그라운드 데몬 실행처럼 컨테이너 환경에서 마찰이 생기는 작업들을 VM에서는 자연스럽게 처리할 수 있다. 지원 환경에서는 VM 내부에서 Docker나 Kind를 실행하는 것도 가능하다.
Q.SSH 키나 API 토큰 같은 자격증명은 어떻게 다루나?
SSH 키는 VM 안으로 들어가지 않는다. 대신 ssh-agent가 포워딩되는 방식이라 에이전트가 `git push`를 실행할 수 있되 키 자체는 호스트에만 존재한다. 다만 에이전트가 VM 안에서 읽을 수 있는 정보는 허용된 네트워크 경로를 통해 외부로 전송될 수 있으므로, VM에 무엇을 마운트하고 어떤 네트워크 엔드포인트를 허용할지는 사용자가 직접 설계해야 한다.
Q.VM이 손상되면 작업 내용을 잃는 건가?
코드 저장소와 에이전트와의 대화 내역은 호스트에 저장되므로 VM이 삭제돼도 남아 있다. `clawk destroy && clawk`으로 새 VM을 만들면 동일한 저장소에서 재시작할 수 있고, `--resume` 옵션으로 이전 대화를 이어가는 것도 가능하다. 잃는 건 일회용 VM 디스크 내용뿐이다.
관련 아티클
관련 사례
이 글의 키워드와 맞닿은 실제 개발 사례를 함께 보세요.
전기차 충전소 설치 중개 역경매 플랫폼
충전소 설치 수요자와 시공사를 역경매 방식으로 최적 매칭하고, 수익 시뮬레이션부터 전자 계약·시공 관리까지 원스톱으로 처리하는 친환경 에너지 O2O 플랫폼
캠핑카·세컨하우스 직거래 플랫폼 전면 리뉴얼
노후화된 PHP 레거시 코드를 정리하고, 동산(캠핑카)과 부동산(세컨하우스)이라는 이질적 매물을 하나의 플랫폼에서 통합 관리할 수 있도록 전면 개편한 직거래 플랫폼 리뉴얼 프로젝트
공공 입찰 전략 하이브리드 앱
낙찰 확률을 높이는 입찰 전략 도구를 모바일로 확장한 하이브리드 앱. 적정 투찰가 자동 계산, 수익 시뮬레이션, 전문가 매칭을 손안에서 제공