:bulb: Claude Code는 5가지 권한 모드를 제공한다. 작업 성격에 따라 적절한 모드를 선택하면 생산성과 안전성을 동시에 확보할 수 있다.

[01] 권한 모드 5단계

Claude Code는 도구 실행(파일 수정, 셸 명령 등)마다 사용자 승인을 요청하는 것이 기본이다. 이 승인 수준을 조절하는 것이 권한 모드다.

모드 명령어 / 전환 방법 설명
기본 claude 매번 승인 요청
Accept Edits Shift+Tab (대화 중) 파일 수정만 자동 승인, 셸 명령은 물어봄
Plan claude --permission-mode plan 전체 계획을 먼저 보여주고 실행
Bypass claude --permission-mode bypassPermissions 모든 권한 자동 승인
YOLO claude --dangerously-skip-permissions Bypass와 동일, 더 직관적인 이름

:bulb: Shift+Tab은 대화 중에 기본 → Accept Edits → Plan 세 가지를 순환 전환한다.


[02] 모드별 실행 방법

2-1. 기본 모드

1
claude

모든 도구 실행 전 승인을 묻는다. 가장 안전하지만, 반복 작업 시 승인 피로가 생길 수 있다.

2-2. Accept Edits 모드

대화 중에 Shift+Tab을 누르면 전환된다.

  • 자동 승인: 파일 읽기, 수정, 생성
  • 승인 필요: 셸 명령 (Bash 도구)

파일 수정은 신뢰하되, 시스템 명령은 확인하고 싶을 때 적합하다.

2-3. Plan 모드

1
claude --permission-mode plan

Claude가 작업을 실행하기 전에 전체 계획을 먼저 제시한다. 계획을 검토한 뒤 승인하면 실행이 시작된다.

복잡한 리팩토링이나 여러 파일에 걸친 작업에서 유용하다.

2-4. Bypass / YOLO 모드

1
2
3
4
5
# 대화형 실행
claude --dangerously-skip-permissions

# 단일 작업 자동 실행 (-p 와 함께)
claude --dangerously-skip-permissions -p "모든 lint 오류 수정해줘"

모든 도구 실행을 자동 승인한다. 승인 없이 파일 수정, 셸 명령이 실행되므로 격리 환경에서만 사용해야 한다.

특정 도구 차단 (부분 제한)

1
2
3
4
# rm 계열 명령 차단하면서 나머지는 자동 승인
claude --dangerously-skip-permissions \
  --disallowedTools "Bash(rm:*)" \
  "Todo 앱 리팩토링해줘"

[03] 영구 설정

3-1. settings.json으로 기본 모드 변경

매번 플래그를 붙이지 않고 기본 모드를 변경할 수 있다:

1
2
3
4
// ~/.claude/settings.json
{
  "defaultMode": "bypassPermissions"
}
대응 모드
"default" 기본 (매번 승인)
"acceptEdits" Accept Edits
"plan" Plan
"bypassPermissions" Bypass / YOLO

3-2. 특정 도구만 허용

settings.json에서 특정 도구를 자동 승인 목록에 추가할 수도 있다:

1
2
3
4
5
6
7
8
9
10
11
{
  "permissions": {
    "allow": [
      "Read",
      "Edit",
      "Write",
      "Glob",
      "Grep"
    ]
  }
}

이 방식은 YOLO처럼 전부 허용하지 않으면서, 자주 쓰는 도구의 승인을 생략할 수 있다.


[04] 실제 사고 사례

:warning: YOLO 모드를 격리 없이 사용하면 시스템이 파괴될 수 있다. 아래는 실제 보고된 사례다.

4-1. 사례 1 — 시스템 디렉토리 삭제 (2025.10)

개발자 Mike Wolak이 Ubuntu/WSL2에서 중첩 디렉토리 작업 중, Claude Code가 루트(/)에서 rm -rf를 실행하여 /bin, /boot, /etc 등 시스템 경로 전체를 삭제 시도한 사건이 발생했다.

4-2. 사례 2 — 홈 디렉토리 삭제 (2025.12)

다른 사용자가 패키지 정리를 요청했을 때, Claude Code가 아래 명령을 실행했다:

1
rm -rf tests/ patches/ plan/ ~/

~/(홈 디렉토리)가 포함되어 개인 파일 전체가 삭제되었다.

4-3. 교훈

두 사례 모두 YOLO 모드를 격리 없이 사용한 것이 원인이다. Claude Code는 강력하지만, 맥락을 잘못 해석하면 의도하지 않은 파괴적 명령을 실행할 수 있다.


[05] 안전하게 쓰는 방법 — Docker 격리

공식 문서는 bypassPermissions 모드를 컨테이너나 VM 같은 격리된 환경에서만 사용할 것을 권장한다.

5-1. Docker 격리 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
# 1. 실행 전 반드시 git 체크포인트
git add -A && git commit -m "checkpoint before claude YOLO"

# 2. Docker 컨테이너 안에서만 실행
docker run -it --rm \
  -v $(pwd):/workspace \
  -w /workspace \
  --network none \
  ubuntu:22.04 \
  claude --dangerously-skip-permissions "기능 구현해줘"

# 3. 문제 생기면 롤백
git reset --hard HEAD
옵션 역할
-v $(pwd):/workspace 현재 디렉토리만 컨테이너에 마운트
--network none 네트워크 차단 (외부 접근 방지)
--rm 컨테이너 종료 시 자동 삭제

5-2. git 체크포인트 패턴

Docker 없이 YOLO 모드를 쓸 때도 최소한 이 패턴은 지켜야 한다:

1
2
3
4
5
# 작업 전 커밋 → YOLO 모드 → 결과 검토 → 커밋 or 롤백
git add -A && git commit -m "before"
claude --dangerously-skip-permissions -p "할 일 앱 구현해줘"
git diff   # 변경 내용 확인
git add -A && git commit -m "after"   # 또는 git reset --hard HEAD

[06] 상황별 권장 모드

상황 권장 모드 이유
일반 개발 (승인 피로 없음) 기본 가장 안전
매번 승인이 귀찮다 Shift+Tab (Accept Edits) 파일 수정은 자동, 셸은 확인
복잡한 작업, 계획 먼저 보고 싶다 --permission-mode plan 실행 전 전체 계획 검토
자동화 파이프라인, CI/CD --dangerously-skip-permissions 사람 없이 실행해야 할 때
혼자 개발, 장시간 자율 실행 Docker 격리 + YOLO 격리 환경에서만 전체 승인

:warning: YOLO/Bypass 모드를 호스트 OS에서 직접 사용하는 것은 위험하다. 반드시 Docker나 VM 격리, 또는 최소한 git 체크포인트를 병행해야 한다.