-
클로드 코드의
--dangerously-skip-permissions플래그를 안전하게 사용하는 방법 - Docker, VM, Firejail 등 다양한 격리 실행 환경을 검토한 뒤 Vagrant 기반 가상머신(VM) 이 가장 적합하다고 판단
- Vagrant를 통해 완전한 VM 격리, 재현 가능한 설정, 로컬 폴더 공유를 유지하면서도 Docker-in-Docker 문제를 피함
- Claude Code가 VM 내에서 sudo 권한으로 자유롭게 시스템 조작을 수행하도록 설정, 실제로 웹앱 실행·DB 구성·테스트 자동화 등을 수행함
- 이 방식은 실수로 인한 파일시스템 손상 방지에 효과적이며, 필요 시 VM을 삭제·재생성해 안전하게 초기화 가능
배경
-
Claude Code를 사용할 때 매번 권한 요청을 확인해야 하는 불편함을 해소하기 위해
--dangerously-skip-permissions플래그 사용을 시도함- 이 플래그는 패키지 설치, 설정 변경, 파일 삭제 등 모든 작업을 사전 승인 없이 자동 수행
- 작업 흐름이 끊기지 않아 효율적이지만, 파일시스템 손상 위험이 존재함
- 이를 방지하기 위해 호스트 OS 계정과 분리된 환경에서 실행할 필요성을 인식함
고려한 방법들
-
Docker를 통한 격리를 우선 검토했으나, Claude가 Docker 이미지를 빌드하고 컨테이너를 실행해야 하므로 Docker-in-Docker 구성이 필요
- 이 경우
--privileged모드가 요구되어 샌드박싱 목적이 무의미해짐 - 네트워크 중첩, 볼륨 마운트 권한 문제 등으로 복잡성과 불안정성이 증가함
- 이 경우
-
기타 대안으로는 다음을 검토함
- 베어메탈 실행: Reddit 사례에서 데이터베이스나 홈 디렉터리 삭제 등 심각한 손상 사례 존재
-
sandbox-runtime: ACL 기반 접근 제어로, Claude가 코드 외에는 접근 불가하지만 완전한 자유도 부족 - Firejail: Docker와 유사한 제약 존재
- 수동 VM 설정: 재현성 부족
- 클라우드 VM: 비용·지연·코드 업로드 필요성 문제
Vagrant 기반 접근
-
Vagrant를 이용해 완전한 VM 격리와 재현 가능한 설정을 확보
- 공유 폴더를 통해 로컬처럼 접근 가능
- Docker-in-Docker 문제 없음, 필요 시 VM을 손쉽게 삭제·재생성 가능
- VirtualBox 7.2.4 버전 사용 중 CPU 100% 점유 버그를 발견, GitHub 이슈를 통해 원인 확인
- 최종 Vagrantfile 구성은 다음과 같은 특징을 가짐
-
bento/ubuntu-24.04베이스 이미지 사용 - 4GB 메모리, 2 CPU 할당
- Docker, Node.js, npm, git, unzip 설치
-
@anthropic-ai/claude-code전역 설치 -
vagrant사용자를 Docker 그룹에 추가
-
실제 사용 방식
- 프로젝트 디렉터리에서
vagrant up→vagrant ssh→claude --dangerously-skip-permissions순으로 실행 - 첫 부팅 시 프로비저닝에 몇 분 소요되며, 프로젝트별로 한 번만 Claude 로그인 필요
- 작업 종료 시
vagrant suspend로 VM 일시 중단 가능 - Claude는 VM 내에서 sudo 권한을 부여받아 다음과 같은 작업 수행
- 웹앱 API 실행 및
curl로 점검 - 브라우저 설치 후 앱 수동 검사 및 E2E 테스트 생성
- PostgreSQL DB 설정 및 마이그레이션 테스트
- Docker 이미지 빌드 및 실행
- 웹앱 API 실행 및
- 이러한 환경 덕분에 Claude가 명령 실행·출력 확인·반복 과정을 스스로 처리 가능
성능 및 안전성
- Linux + VirtualBox 환경에서 리소스 여유 충분, 파일 동기화 지연 없음
- 보호 가능한 항목
- 실수로 인한 파일시스템 손상
- 무분별한 패키지 설치 및 설정 변경
- 보호 불가능한 항목
- 프로젝트 폴더 삭제(양방향 동기화)
- VM 탈출 취약점을 악용한 공격
- 네트워크 수준의 문제
- 데이터 유출(VM은 인터넷 접근 가능)
- 이 구성은 사고 방지용이며, 고급 공격 방어 목적은 아님
- Git 기반 프로젝트라 손상 시에도 복구 용이, 필요 시
rsync단방향 동기화로 더 엄격한 격리 가능
결론
- VirtualBox CPU 버그 해결 후 마찰 없는 실행 환경 완성
- Claude Code를 완전한 VM 샌드박스 내에서 자유롭게 실행 가능
- 문제가 발생하면 VM을 삭제 후 재생성하면 되며, Vagrantfile 하나로 재현성 확보
-
--dangerously-skip-permissions플래그를 사용하는 경우, 이와 같은 격리 환경 구성이 강력히 권장됨