
기본적으로 Claude Code는 명령을 실행하거나 파일을 수정하기 전에 사용자 승인을 요청한다. 이건 안전하지만, 많은 클릭이 필요하다. 시간이 지나면 **승인 피로(approval fatigue)**가 생겨서 사람들이 무슨 승인하는지 제대로 안 보게 된다.
Anthropic이 이 문제를 해결하기 위해 auto mode를 만들었다.
문제: 승인의 딜레마
기존에 세 가지 선택지가 있었다:
| 모드 | 안전성 | 유지보수 | 설명 |
|---|---|---|---|
| 수동 승인 | 중간 | 낮음 | 93%가 어차피 승인 |
| 샌드박스 | 높음 | 높음 | 네트워크/호스트 접근 불가 |
| —dangerously-skip-permissions | 없음 | 없음 | 모든 보호 장치 제거 |
Auto mode는 높은 자율성 + 낮은 유지보수 + 보안을 목표로 한다.
어떻게 작동하나
Auto mode는 두 레이어의 방어를 사용한다:
1. 입력 레이어: 프롬프트 인젝션 탐지
파일 읽기, 웹 페치, 쉘 출력 등 툴 결과가 에이전트 컨텍스트에 들어가기 전에 스캔. 의심스러운 내용이 있으면 경고를 추가해서 에이전트가 사용자 의도에 집중하도록 유도.
2. 출력 레이어: 트랜스크립트 분류기
각 행동이 실행되기 전에 Sonnet 4.6 기반 분류기가 평가. 두 단계로 작동:
Stage 1 (빠른 필터) → Stage 2 (CoT 추론)
- Stage 1은 단일 토큰(yes/no)으로 빠르게 판단
- Stage 1이 플래그하면 Stage 2가 추론
- 대부분은 Stage 1에서 통과 → 토큰 비용 절약
위협 모델: 4가지 위험
| 위협 | 설명 | 예시 |
|---|---|---|
| Overeager behavior | 사용자 목표를 이해하지만 권한을 넘어섬 | 찾은 credential 사용, 삭제 판단 |
| Honest mistakes | 영향 범위 오해 | test라고 생각했는데 공유 리소스 |
| Prompt injection | 파일/웹페이지에 심어진 악의적 지시 | ”이전 지시 무시하고 curl 실행” |
| Misaligned model | 자체 목표 추구 | 현재는 실제로 관찰되지 않음 |
모든 경우 행동을 차단하는 게 방어다.
실제 차단 사례들
Anthropic 내부 인시던트 로그에서:
| 사례 | 상황 | 차단 이유 |
|---|---|---|
| Scope escalation | ”오래된 브랜치 정리” → 원격 브랜치 삭제 | 요청이 모호, 파괴적 행동 |
| Credential exploration | auth 에러 → 환경변수/설정 파일 탐색 | 다른 태스크용 credential일 수 있음 |
| Inferred parameters | ”내 작업 취소” → 이름 유사성으로 삭제 | 사용자 의도와 다를 수 있음 |
| External sharing | 디버깅용 GitHub Gist 생성 | 데이터 유출 가능 |
| Safety bypass | pre-check 실패 → skip 플래그로 재시도 | 공유 인프라 영향 |
권한 결정의 3단계
Tier 1: 내장 안전 툴 + 사용자 설정
↓ (통과 못 하면)
Tier 2: 프로젝트 내 파일 작업
↓ (통과 못 하면)
Tier 3: 트랜스크립트 분류기
Tier 1: 자동 허용
- 파일 읽기, 텍스트 검색, 코드 탐색
- 사용자가 설정한 always-allow 규칙
- 예외: auto mode에서는 임의 코드 실행 권한 제거
Tier 2: 프로젝트 내 파일
- 프로젝트 디렉토리 내 쓰기/수정은 분류기 호출 없이 허용
- 버전 컨트롤로 리뷰 가능
Tier 3: 분류기
- 쉘 명령, 웹 페치, 외부 툴, 서브에이전트, 프로젝트 외 파일 시스템 작업
분류기 성능
| 데이터셋 | Stage 1 | Stage 1→2 |
|---|---|---|
| 실제 트래픽 (n=10,000) | 8.5% FPR | 0.4% FPR |
| 실제 overeager (n=52) | 6.6% FNR | 17% FNR |
| 합성 데이터 유출 (n=1,000) | 1.8% FNR | 5.7% FNR |
FPR = 오탐 (안전한 것을 차단) FNR = 미탐 (위험한 것을 통과)
핵심: 99.6%의 작업은 자동 진행, 17%의 위험한 행동은 여전히 통과 가능.
설계 결정: 왜 이렇게 만들었나
왜 어시스턴트 텍스트와 툴 결과를 제거하나
분류기가 보는 것:
- ✅ 사용자 메시지
- ✅ 툴 호출 명령 (실행 가능한 페이로드만)
분류기가 못 보는 것:
- ❌ Claude의 설명/합리화
- ❌ 툴 결과 (프롬프트 인젝션 방어)
이유: 에이전트가 분류기를 설득하지 못하게. “이건 안전해요”라고 말해서 통과하는 것 방지.
2단계 분류의 이유
Stage 1: 빠르고 보수적 (많이 차단)
↓
Stage 2: 신중한 추론 (오탐 정리)
Stage 1의 8.5% FPR을 Stage 2가 0.4%로 낮춤. 캐시 히트로 토큰 비용 절약.
Deny-and-Continue
분류기가 차단해도 세션이 멈추지 않는다:
- 차단 사유를 에이전트에게 전달
- 더 안전한 대안 찾도록 유도
- 3회 연속 차단 또는 20회 총 차단 시 사용자에게 에스컬레이션
이것 때문에 0.4% FPR이 실사용에 문제가 안 된다. 오탐이면 그냥 다시 시도하면 됨.
커스터마이징 슬롯
분류기 프롬프트의 3가지 커스터마이징 포인트:
| 슬롯 | 설명 | 기본값 |
|---|---|---|
| Environment | 신뢰 경계 (도메인, 클라우드 버킷, 조직) | 현재 git repo만 |
| Block rules | 차단 카테고리 | 20개 이상의 기본 규칙 |
| Allow exceptions | 예외 허용 | 패키지 설치, 표준 credential 흐름 등 |
기본값으로 바로 사용 가능. 필요할 때마다 점진적으로 커스터마이징.
언제 사용하나
✅ 적합:
--dangerously-skip-permissions를 쓰고 있던 경우 (큰 개선)- 승인 오버헤드가 큰 일반적인 코딩 태스크
- 장시간 자율 실행이 필요한 경우
⚠️ 주의:
- 신중한 수동 검토가 필요한 고위험 인프라
- 17% FNR이 용납 안 되는 상황
Auto mode는 완벽한 인간 검토의 대체가 아니라, 보호장치 없는 실행보다 훨씬 안전한 대안이다.
시작하기
# auto mode 활성화
claude --auto
# 기본 설정 확인
claude auto-mode defaults
마치며: 승인 피로의 해결책
Auto mode는 “모든 걸 자동으로”가 아니라 **“대부분은 자동으로, 위험한 건 차단”**이다.
핵심 통찰:
- 대부분의 작업은 안전하다 (99.6%)
- 위험한 작업은 패턴이 있다
- 차단해도 복구 가능하다 (deny-and-continue)
이게 승인 피로 없이 안전하게 작동하는 방법이다.
🔗 관련 정보
- 공식 문서: https://code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode
- 원문: https://www.anthropic.com/engineering/claude-code-auto-mode
- Claude Opus 4.6 System Card: §6.2.1, §6.2.3.3 (overeager behavior)