๐Ÿค–๋ฐ”์ด๋ธŒ์ฝ”๋”ฉ2026-01-28

Claude Code์˜ `--dangerously-skip-permissions` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šน์ธ ๊ณผ์ • ์—†์ด ์™„์ „ ์ž๋™ํ™”๋ฅผ ๊ตฌํ˜„ํ•˜๋˜, Vagrant ๊ฐ€์ƒ๋จธ์‹ ์œผ๋กœ ๋‚ด ์ปดํ“จํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค

๐Ÿ’ก ํ•œ์ค„ ์š”์•ฝ|Claude Code์˜ --dangerously-skip-permissions ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šน์ธ ๊ณผ์ • ์—†์ด ์™„์ „ ์ž๋™ํ™”๋ฅผ ๊ตฌํ˜„ํ•˜๋˜, Vagrant ๊ฐ€์ƒ๋จธ์‹ ์œผ๋กœ ๋‚ด ์ปดํ“จํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

Source: Running Claude Code dangerously (safely)

๐ŸŽฃ Hook: ํŽธ๋ฆฌํ•จ๊ณผ ์œ„ํ—˜ ์‚ฌ์ด์—์„œ

Claude Code๋Š” ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ผ์ผ์ด "์Šน์ธ"์„ ๋ˆŒ๋Ÿฌ์ค˜์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด --dangerously-skip-permissions ์˜ต์…˜์„ ์ผค ์ˆ˜ ์žˆ์ง€๋งŒ, "AI๊ฐ€ ๋‚ด ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‚ ๋ ค๋ฒ„๋ฆฌ๋ฉด ์–ด๋–กํ•˜์ง€?"๋ผ๋Š” ๋ถˆ์•ˆ๊ฐ์ด ํ•ญ์ƒ ์กด์žฌํ•˜์ฃ .

Docker๋ฅผ ์“ฐ์ž๋‹ˆ docker-in-docker๋ฅผ ์œ„ํ•ด --privileged ๋ชจ๋“œ๋ฅผ ์ผœ์•ผ ํ•ด์„œ ๋ณด์•ˆ์ด ๋šซ๋ฆฌ๊ณ , ํด๋ผ์šฐ๋“œ VM์€ ๋ˆ์ด ๋“ญ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ Vagrant๊ฐ€ ์™„๋ฒฝํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ์ด๊ณ , ๋กœ์ปฌ์—์„œ ๋Œ๊ณ , ์™„๋ฒฝํ•˜๊ฒŒ ๊ฒฉ๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ How-to: ์•ˆ์ „ํ•œ ์ƒŒ๋“œ๋ฐ•์Šค ๊ตฌ์ถ•ํ•˜๊ธฐ

์ด ๋ ˆ์‹œํ”ผ๋Š” ํ”„๋กœ์ ํŠธ ํด๋”์— Vagrantfile ํ•˜๋‚˜๋งŒ ๋‘๋ฉด ๋๋‚ฉ๋‹ˆ๋‹ค.

1๋‹จ๊ณ„: ํ•„์ˆ˜ ๋„๊ตฌ ์„ค์น˜

๋จผ์ € Vagrant์™€ VirtualBox๋ฅผ ์„ค์น˜ํ•˜์„ธ์š”. (์˜ค๋ž˜๋œ ๋„๊ตฌ ๊ฐ™์ง€๋งŒ, ์—ฌ์ „ํžˆ ๊ฒฉ๋ฆฌ์—๋Š” ์ตœ๊ณ ์ž…๋‹ˆ๋‹ค.)

2๋‹จ๊ณ„: ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— Vagrantfile ์ƒ์„ฑ

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ํ”„๋กœ์ ํŠธ ์ตœ์ƒ๋‹จ์— 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
    vb.gui = false
    vb.name = vm_name
    # ์˜ค๋””์˜ค/USB ๊บผ์„œ ๋ฆฌ์†Œ์Šค ์ ˆ์•ฝ
    vb.customize ["modifyvm", :id, "--audio", "none"]
    vb.customize ["modifyvm", :id, "--usb", "off"]
  end

  # ์ดˆ๊ธฐ ์„ธํŒ… ์Šคํฌ๋ฆฝํŠธ: Docker, Node.js, Claude Code ์„ค์น˜
  config.vm.provision "shell", inline: <<-SHELL
    export DEBIAN_FRONTEND=noninteractive
    apt-get update
    apt-get install -y docker.io nodejs npm git unzip
    npm install -g @anthropic-ai/claude-code --no-audit
    usermod -aG docker vagrant
    chown -R vagrant:vagrant /agent-workspace
  SHELL
end

3๋‹จ๊ณ„: ์‹คํ–‰ ๋ฐ ์ ‘์†

ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•ˆ์ „ํ•œ ์ƒŒ๋“œ๋ฐ•์Šค๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

vagrant up      # VM ์‹คํ–‰ (์ฒ˜์Œ์—” ๋ช‡ ๋ถ„ ๊ฑธ๋ฆผ)
vagrant ssh     # VM ์ ‘์†

์ด์ œ VM ๋‚ด๋ถ€์—์„œ Claude Code๋ฅผ ๋งˆ์Œ๊ป ํ’€์–ด๋‘์„ธ์š”.

cd /agent-workspace
claude --dangerously-skip-permissions

๐Ÿง  The Strategy: ์™œ Vagrant์ธ๊ฐ€?

1. ์ง„์ •ํ•œ ๊ฒฉ๋ฆฌ (Isolation)

Docker ์ปจํ…Œ์ด๋„ˆ๋Š” ํ˜ธ์ŠคํŠธ์˜ ์ปค๋„์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Vagrant(VirtualBox)๋Š” ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋œ OS(Guest OS)๋ฅผ ๋„์›๋‹ˆ๋‹ค. Claude๊ฐ€ VM ๋‚ด๋ถ€์—์„œ rm -rf /๋ฅผ ์‹คํ–‰ํ•ด๋„, ๋‹น์‹ ์˜ ๋งฅ๋ถ์€ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

2. ํŒŒ์ผ ๋™๊ธฐํ™” (Sync)

config.vm.synced_folder ์„ค์ • ๋•๋ถ„์— ๋กœ์ปฌ์˜ VS Code๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด VM์—๋„ ์ฆ‰์‹œ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๊นƒ(Git) ์ž‘์—…์€ ๋กœ์ปฌ์—์„œ ํ‰์†Œ์ฒ˜๋Ÿผ ํ•˜๊ณ , ์‹คํ–‰๊ณผ ํ…Œ์ŠคํŠธ๋งŒ VM์˜ Claude์—๊ฒŒ ๋งก๊ธฐ๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

3. Docker-in-Docker ๋ฌธ์ œ ํ•ด๊ฒฐ

Claude์—๊ฒŒ Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ด๋‹ฌ๋ผ๊ณ  ํ•˜๋ ค๋ฉด, ์‹คํ–‰ ํ™˜๊ฒฝ ์ž์ฒด๊ฐ€ Docker๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Docker ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ Docker๋ฅผ ๋Œ๋ฆฌ๋Š” ๊ฑด ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ  ๋ณด์•ˆ์ƒ ์œ„ํ—˜ํ•˜์ง€๋งŒ, Vagrant VM ์•ˆ์—์„œ๋Š” ๊ทธ๋ƒฅ apt install docker.io ํ•˜๋ฉด ๋์ž…๋‹ˆ๋‹ค.

MAX5์˜ ์ƒ๊ฐ ๐ŸŽฏ

๐Ÿ‘จโ€๐Ÿ’ป ๋ฐ”์ด๋ธŒ ์ฝ”๋”ฉ ๋ ˆ์‹œํ”ผ

"๊ฐ์‹œ ์—†๋Š” ์œ„์ž„"์„ ์œ„ํ•œ ์™„๋ฒฝํ•œ ํ™˜๊ฒฝ์ด์•ผ. ์ด Vagrant ์„ธํŒ…์„ ๋ณต์‚ฌํ•ด์„œ ์จ๋ด.

Claude์—๊ฒŒ ์ด๋ ‡๊ฒŒ ์ง€์‹œํ•ด์„œ ํ™˜๊ฒฝ์„ ์žก์•„๋ณด์ž: "์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ „ํ•œ Vagrant ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ด์ค˜. Ubuntu 24.04 ๊ธฐ๋ฐ˜์œผ๋กœ Docker์™€ Node.js๊ฐ€ ์„ค์น˜๋˜์–ด์•ผ ํ•˜๊ณ , ํ˜„์žฌ ํด๋”๋ฅผ /agent-workspace๋กœ ๋งˆ์šดํŠธํ•ด์ค˜. .gitignore์— .vagrant ํด๋” ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ์žŠ์ง€ ๋งˆ."

๐Ÿ’ธ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์•„์ด๋””์–ด

  1. "One-Click Agent Sandbox": ๊ฐœ๋ฐœ์ž๋“ค์ด Claude Code๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ VM ์ด๋ฏธ์ง€ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค.
  2. "Project Environment Generator": ํ”„๋กœ์ ํŠธ์˜ package.json์ด๋‚˜ requirements.txt๋ฅผ ์ฝ์–ด์„œ, ๋”ฑ ๋งž๋Š” ๊ฒฉ๋ฆฌ๋œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(Vagrantfile)์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์ „์šฉ ์—์ด์ „ํŠธ ๋„๊ตฌ.

์นดํ…Œ๊ณ ๋ฆฌ: vibe_coding, ``

์ด ๊ธ€์ด ์–ด๋• ๋‚˜์š”?