반응형

Claude Code를 쓰다 보면 두 가지 극단 사이에서 고민하게 됩니다. "매번 허락 받는 게 너무 느려" vs "그냥 다 실행했다가 망하면 어떡해". Anthropic은 이 문제를 해결하기 위해 세 가지 Permission Mode를 제공합니다. 이 글에서는 각 모드의 특징과 언제 어떤 모드를 써야 하는지 정리합니다.


TL;DR

  • Shift+Tab으로 세 가지 모드를 순환할 수 있습니다
  • Plan Mode: 읽기 전용, 계획만 세움 → 복잡한 작업에 최적
  • Auto-Accept Mode: 자동 승인 → 신뢰할 수 있는 반복 작업에 최적
  • YOLO Mode (--dangerously-skip-permissions): 완전 자율 → 컨테이너 환경에서만 사용
  • 복잡한 작업은 Plan Mode로 시작하고, 계획 확정 후 실행하세요

세 가지 Permission Mode

Claude Code는 Shift+Tab을 누를 때마다 다음 모드로 순환합니다:

Normal Mode → Auto-Accept Mode → Plan Mode → Normal Mode → ...

"Pressing shift+tab cycles through Claude Code's permission modes: normal-mode, auto-accept edit on, and plan mode on." — ClaudeLog: Auto-Accept Permissions

모드 표시 특징

Normal Mode (기본) 모든 작업에 승인 필요
Auto-Accept Mode ⏵⏵ accept edits on 파일 수정, 명령 실행 자동 승인
Plan Mode ⏸ plan mode on 읽기 전용, 계획만 세움

Plan Mode: 생각 먼저, 실행은 나중에

공식 정의

"Plan Mode instructs Claude to create a plan by analyzing the codebase with read-only operations, perfect for exploring codebases, planning complex changes, or reviewing code safely." — Anthropic Docs: Common Workflows

작동 방식

Plan Mode에서 Claude가 사용할 수 있는 도구:

허용됨 (읽기 전용) 차단됨 (수정)

Read, LS, Glob, Grep Edit, MultiEdit
WebSearch, WebFetch Bash (수정 명령)
Task (리서치 에이전트) Write
NotebookRead -

실제 사용법

# 방법 1: 세션 중 활성화
Shift+Tab 두 번 누르기

# 방법 2: 시작할 때 활성화
claude --permission-mode plan

# 방법 3: 헤드리스 쿼리
claude -p "인증 시스템 리팩토링 계획 세워줘" --permission-mode plan

왜 게임체인저인가?

일반 모드:
"이커머스 사이트 만들어줘" 
→ Claude가 바로 코드 작성 시작 
→ 방향이 틀려도 끝까지 감 
→ 롤백하고 처음부터 다시

Plan Mode:
"이커머스 사이트 만들어줘"
→ Claude가 전체 계획 제시
→ 각 단계 검토 및 수정
→ 승인 후 실행
→ 방향 수정이 쉬움

"Plan Mode forces Claude to generate a full step-by-step plan before touching any code." — Towards Dev: Mastering Plan Mode

언제 사용하나?

  • 다중 파일 수정: 여러 파일에 걸친 기능 구현
  • 코드베이스 탐색: 새로운 프로젝트 파악
  • 아키텍처 결정: 큰 방향성 논의
  • 위험한 리팩토링: 실수하면 안 되는 작업

Auto-Accept Mode: 빠른 실행

공식 정의

"Auto-accept mode eliminates permission prompts for configured tools, enabling uninterrupted execution." — Claude Fast: Permission Management

작동 방식

Shift+Tab 한 번 누르면 활성화됩니다. 화면 하단에 ⏵⏵ accept edits on이 표시됩니다.

이 모드에서는:

  • 파일 수정 자동 승인
  • 허용된 Bash 명령 자동 실행
  • 허용 목록은 settings.json에서 설정 가능

언제 사용하나?

  • 테스트 실행: npm test, pytest 등
  • 린트 수정: 대량의 린트 오류 수정
  • 보일러플레이트 생성: 반복적인 코드 생성
  • Plan Mode 이후 실행 단계

주의사항

⚠️ Auto-Accept ≠ YOLO Mode

Auto-Accept는 허용 목록에 있는 도구만 자동 승인합니다.
위험한 명령(rm -rf, curl 등)은 여전히 승인이 필요합니다.

YOLO Mode: 완전한 자율 (위험)

공식 정의

"Instead of supervising Claude, you can use claude --dangerously-skip-permissions to bypass all permission checks and let Claude work uninterrupted until completion." — Anthropic Engineering Blog: Best Practices

작동 방식

claude --dangerously-skip-permissions

이 플래그는 모든 권한 체크를 우회합니다:

  • 파일 읽기/쓰기/삭제
  • 모든 Bash 명령 실행
  • 네트워크 요청
  • 시스템 프로세스 제어

공식 경고

"Letting Claude run arbitrary commands is risky and can result in data loss, system corruption, or even data exfiltration (for example via prompt injection attacks)." — Anthropic Engineering Blog

안전하게 사용하는 방법

Anthropic이 권장하는 YOLO Mode 사용 조건:

  1. 컨테이너/VM 환경: Docker, 가상머신 내에서만 실행
  2. 인터넷 차단: 데이터 유출 방지
  3. Git 백업: 언제든 git reset --hard로 복구 가능
  4. 명확한 범위: "코드베이스 전체 개선" ❌ → "이 모듈 리팩토링" ✅
# 권장 사용 예시
docker run -it --rm \
  -v $(PWD):/workspace \
  claude-sandbox \
  claude --dangerously-skip-permissions

언제 사용하나?

  • 대량 린트 수정: 수백 개의 lint 오류 일괄 수정
  • 보일러플레이트 생성: 프로젝트 초기 세팅
  • CI/CD 파이프라인: 자동화된 환경
  • 테스트 주도 개발: 실패하는 테스트 → 통과할 때까지 반복

"This works well for workflows like fixing lint errors or generating boilerplate code." — Anthropic Engineering Blog


세 모드 비교

측면 Normal Auto-Accept Plan Mode YOLO

속도 느림 빠름 중간 매우 빠름
안전성 높음 중간 매우 높음 낮음
제어력 높음 중간 높음 없음
활성화 기본 Shift+Tab×1 Shift+Tab×2 CLI 플래그
용도 일반 작업 반복 작업 복잡한 계획 자동화

실전 워크플로우: Plan → Execute 패턴

복잡한 기능을 구현할 때 가장 효과적인 패턴입니다:

1단계: Plan Mode로 계획

[Shift+Tab 두 번 → Plan Mode 활성화]

You: 결제 시스템을 Stripe에서 Toss Payments로 마이그레이션해줘

Claude: 마이그레이션 계획을 세우겠습니다.

## 1단계: 현재 구조 분석
- src/payment/stripe.ts 분석
- API 호출 패턴 파악
- 테스트 커버리지 확인

## 2단계: Toss Payments SDK 설정
- 패키지 설치
- 환경 변수 설정
- 타입 정의

## 3단계: 결제 로직 교체
...

이 계획으로 진행할까요?

2단계: 계획 검토 및 수정

You: 2단계에서 타입 정의는 별도 파일로 분리해줘.
     그리고 기존 Stripe 코드는 삭제하지 말고 deprecated 처리해줘.

Claude: 계획을 수정했습니다.
...

3단계: 승인 후 실행

You: 좋아, 진행해줘

[Plan Mode 종료 → 실행 시작]

"The structured plan explains the approach, technical decisions, and potential challenges in writing, which is valuable documentation." — Claude AI: Plan Mode Guide


모드 선택 가이드

작업이 복잡하고 여러 파일에 걸쳐 있나요?
├─ Yes → Plan Mode로 시작
│         └─ 계획 확정 후 → Auto-Accept로 실행
│
└─ No → 작업이 반복적이고 안전한가요?
         ├─ Yes → Auto-Accept Mode
         │
         └─ No → 작업이 완전히 격리된 환경인가요?
                  ├─ Yes → YOLO Mode (Docker 내에서)
                  │
                  └─ No → Normal Mode

체크리스트

Plan Mode 사용 전

  • [ ] 작업 범위가 여러 파일에 걸쳐 있는가?
  • [ ] 아키텍처 결정이 필요한가?
  • [ ] 실수하면 롤백이 어려운 작업인가?

Auto-Accept 사용 전

  • [ ] 허용 목록(settings.json)을 확인했는가?
  • [ ] Git 상태가 clean인가?
  • [ ] 작업 범위가 명확한가?

YOLO Mode 사용 전

  • [ ] 컨테이너/VM 환경인가?
  • [ ] 인터넷이 차단되어 있는가?
  • [ ] Git으로 현재 상태를 백업했는가?
  • [ ] 작업 범위가 명확하고 제한적인가?

마무리

Permission Mode는 "안전 vs 속도"의 트레이드오프를 당신이 제어할 수 있게 해줍니다.

  • Plan Mode는 "생각 먼저, 실행 나중에" 원칙을 강제합니다
  • Auto-Accept는 신뢰할 수 있는 반복 작업을 가속화합니다
  • YOLO Mode는 완전한 자동화를 제공하지만, 격리 환경에서만 사용하세요

복잡한 작업일수록 Plan Mode로 시작하세요. 계획을 세우는 데 드는 시간이 잘못된 방향으로 가서 롤백하는 시간보다 훨씬 짧습니다.


참고 자료

Anthropic 공식

커뮤니티


 

반응형

+ Recent posts