티스토리 뷰



최근 Anthropic에서 출시한 Claude Code는 개발자들에게 혁신적인 도구로 자리 잡고 있습니다. 하지만 Claude Code를 써본 분들이라면 공통적으로 느끼는 '번거로움'이 하나 있죠. 바로 AI가 명령을 실행할 때마다 일일이 권한을 승인해줘야 한다는 점입니다.
Claude Code에는 이를 해결할 --dangerously-skip-permissions라는 플래그가 존재합니다. 이 옵션을 켜면 Claude가 묻지 않고 파일 수정, 패키지 설치, 명령 실행을 수행합니다. 하지만 이름에서 알 수 있듯, 이는 매우 위험합니다. AI의 실수 한 번에 내 로컬 시스템의 중요한 설정이나 파일이 날아갈 수 있기 때문이죠.
오늘은 Emil Burzo의 사례를 통해, 이 "위험한 플래그"를 어떻게 하면 "안전하게" 사용할 수 있을지 그 해법을 알아보겠습니다.
1. 왜 Docker가 아닌 Vagrant인가?
가장 먼저 떠오르는 격리 방법은 Docker일 것입니다. 하지만 저자는 Docker를 사용하지 않은 명확한 이유를 제시합니다.
• Docker-in-Docker의 늪: Claude가 프로젝트 내에서 Docker 이미지를 빌드하거나 컨테이너를 실행해야 할 때가 많습니다. 이를 위해 Docker 안에서 Docker를 실행하려면 --privileged 모드가 필요한데, 이는 샌드박싱의 본래 목적(보안 격리)을 무색하게 만듭니다.
• 복잡한 설정: 네트워크 설정이나 볼륨 마운트 권한 문제가 오히려 개발 흐름을 방해할 수 있습니다.
대안으로 선택된 것은 고전적이지만 확실한 **Vagrant(VirtualBox)**였습니다. Vagrant는 커널 수준에서 완전히 격리된 VM(가상 머신)을 제공하며, 인프라를 코드로 관리할 수 있어 재현성이 뛰어납니다.
2. 가상화 샌드박스 구축하기 (Vagrantfile)
저자가 사용한 설정의 핵심은 **"호스트와 프로젝트 폴더를 공유하면서도, 시스템 권한은 VM 내부에 가두는 것"**입니다. 아래는 이를 구현한 간단한 Vagrantfile 예시입니다.

vm_name = File.basename(Dir.getwd)
Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-24.04"
  # 현재 프로젝트 폴더를 VM의 /agent-workspace와 동기화
  config.vm.synced_folder ".", "/agent-workspace", type: "virtualbox"
  
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "4096"
    vb.cpus = 2
  end

  # 초기 환경 설정: Docker, Node.js, Claude Code 설치
  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y docker.io nodejs npm git unzip
    npm install -g @anthropic-ai/claude-code
    usermod -aG docker vagrant
    chown -R vagrant:vagrant /agent-workspace
  SHELL
end

이제 vagrant up과 vagrant ssh 명령만으로 Claude 전용 격리 공간이 완성됩니다.
3. "위험하게, 하지만 안전하게" 실행하기
환경이 구축되었다면 이제 아래와 같이 Claude를 실행합니다.

claude --dangerously-skip-permissions


이 상태에서 Claude는 단순한 코드 작성을 넘어 다음과 같은 **'슈퍼 파워'**를 갖게 됩니다.
• 시스템 패키지 설치: 필요한 라이브러리를 sudo apt-get으로 즉시 설치.
• 인프라 구성: DB 마이그레이션을 실행하거나 Postgres 서버를 직접 설정.
• 브라우저 테스트: 가상 환경 내에 브라우저를 설치하고 실제 앱 동작 확인.
로컬 OS에서라면 망설여졌을 과감한 시도들을 Claude가 스스로 수행하며 문제를 해결해 나갑니다.
4. 보안 모델의 이해 (장점과 한계)
이 방식이 보호해주는 것과 그렇지 못한 것을 명확히 알아야 합니다.
• 보호되는 것: 호스트 시스템 파일 파괴, 공격적인 패키지 설치로 인한 OS 오염, 원치 않는 설정 변경 방지.
• 보호되지 않는 것: 프로젝트 폴더 자체의 데이터 삭제(공유 폴더를 통해 호스트 파일이 수정되므로). 하지만 이는 Git을 통해 쉽게 복구 가능하므로 큰 문제가 되지 않습니다.
• 핵심: 이 설정은 정교한 해킹 공격을 막는 용도라기보다는, AI 에이전트의 실수나 오작동으로 인한 사고를 방지하는 데 초점이 맞춰져 있습니다.
마치며: 생산성과 안전의 균형
에이전트에게 모든 권한을 주는 것은 무섭지만, 매번 승인 버튼을 누르는 것은 비효율적입니다. Vagrant를 활용한 가상화 샌드박스는 이 두 마리 토끼를 잡을 수 있는 훌륭한 타협점입니다.
Claude Code를 더 자유롭게, 그리고 더 강력하게 활용하고 싶다면 여러분의 프로젝트에도 이 Vagrantfile 하나를 추가해 보는 건 어떨까요? 문제가 생기면 그저 VM을 삭제하고 다시 생성하면 그만이니까요!
본 포스팅은 Emil Burzo의 블로그 내용을 요약 및 편저하였습니다

출처 :  https://blog.emilburzo.com/2026/01/running-claude-code-dangerously-safely/

댓글
D-DAY
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함