권한과 권한 모드
- 세 가지 권한 판정(allow / ask / deny)의 의미
- 권한 규칙이 도구와 패턴을 어떻게 매칭하는지
- 여섯 가지 권한 모드와 각각을 쓰는 상황
- auto 모드가 이제 대화형 세션의 시작 모드가 된 이유와 끄는 방법
- auto 모드가 확인 프롬프트를 안전 분류기로 대체하는 방식
- 안전성을 잃지 않고 프롬프트를 줄이는 합리적인 초기 allowlist를 만드는 방법
- 프로젝트용 규칙과 개인용 권한 규칙을 저장하는 위치
권한은 Claude Code가 멈춰서 묻지 않고 무엇을 할 수 있는지를 결정합니다. 잘 조정하면 통제력을 잃지 않으면서 흐름을 유지할 수 있고, 잘못 조정하면 모든 것을 무조건 승인하거나 프롬프트에 파묻히게 됩니다.
세 가지 판정
가능한 모든 동작은 다음 중 하나로 결정됩니다.
규칙은 보통 도구와 패턴을 함께 매칭합니다. 예를 들어 Bash(npm run test:*)는 allow, Read(./.env)는 deny로 설정합니다.
도구 + 패턴 허용
Bash(npm run test:*)
도구 + 패턴 거부
Read(./.env)
권한 모드
모드는 세션 전체의 기조를 정합니다. 모두 여섯 가지입니다. 자주 쓰는 모드는 Shift+Tab으로 순환하거나, 설정에서 permissions.defaultMode를 지정하세요.
| 모드 | 묻지 않고 실행하는 것 | 사용할 때 |
|---|---|---|
default (Manual로 표시) | 읽기만 | 일상 작업, 민감한 변경 |
acceptEdits | 읽기, 파일 편집, 일반적인 파일 시스템 명령 | 신뢰할 수 있고 범위가 분명한 편집 세션 |
plan | 읽기, 그리고 auto 모드를 쓸 수 있을 때는 분류기가 승인한 명령. 소스는 절대 편집하지 않음 | 크거나 위험한 작업 — Plan Mode 참고 |
auto (v2.1.283부터 대화형 세션의 시작 모드) | 모든 것. 안전 분류기가 검토 | 프롬프트 피로가 진짜 위험인 긴 작업 |
dontAsk | 작업 디렉터리 안의 파일 읽기와 사전 승인된 도구. 프롬프트가 필요한 것은 모두 거부 | 잠금 처리된 CI와 스크립트 |
bypassPermissions | 모든 것, 검사 없음 | 샌드박스/컨테이너 전용 — 비밀 정보가 있는 머신에서는 절대 사용 금지 |
auto 모드가 이제 Claude Code의 기본값
Claude Code v2.1.283부터 auto는 모든 요금제와 제공자에서 대화형 터미널 및 VS Code 세션의 기본 시작 모드입니다. 이전 버전에서는 2026년 8월 14일부터 Pro, Max, Team 요금제의 새 세션에서만 기본값이었습니다. Anthropic의 근거(1,000명이 넘는 유료 사용자를 대상으로 한 자체 테스트): 분류기는 유해한 동작의 **89%**를 잡아낸 반면 수동 검토는 **13.6%**에 그쳤습니다 — 익숙해진 사용자들이 수동 프롬프트의 약 97%를 읽지 않고 수락했기 때문입니다.
두 가지 예외가 사용자의 의도를 보존합니다.
- 사용자가 사용자 설정에서
permissions.defaultMode를 지정했다면, 앱 안의 일회성 전환 프롬프트를 수락하지 않는 한 그대로 유지됩니다. - 조직이 기본값을 관리하는 경우(Team/Enterprise 관리형 설정) 자동으로 바뀌는 것은 없습니다.
세션 도중에도 언제든 Shift+Tab으로 모드를 순환할 수 있습니다. 해당 요금제에 이미 적용된 관련 변경 사항: auto 모드가 하는 분류기 호출은 더 이상 사용량 한도에 포함되지 않습니다.
일찍 옵트인(8월 14일 이전) — auto를 기본값으로 설정
~/.claude/settings.json
{
"permissions": {
"defaultMode": "auto"
}
}8월 14일 이후에도 기존 프롬프트 동작 유지
~/.claude/settings.json
{
"permissions": {
"defaultMode": "default"
}
}auto 모드가 실제로 동작하는 방식
auto는 모든 것에 프롬프트를 띄우는 방식과 안전장치를 끄는 방식의 중간 지점입니다. 사용자에게 묻는 대신, 별도의 분류기 모델이 실행 전에 각 동작을 검토하여 요청한 범위를 넘어 확대되는 것, 인식하지 못하는 인프라를 건드리는 것, Claude가 방금 읽은 적대적 콘텐츠에 이끌린 것으로 보이는 것을 차단합니다. 명시적인 ask 규칙은 여전히 멈추고 사용자에게 묻습니다.
curl | bash, force push, 프로덕션 배포와 마이그레이션, 해석되지 않은 변수에 대한 rm -rf, 대화 기록 변조, 커밋되지 않은 작업을 버리는 파괴적인 git 명령, 외부 엔드포인트로 비밀 정보를 보내는 것 등을 차단하는 한편, 일상적인 작업(로컬 편집, 선언된 의존성 설치, 읽기 전용 HTTP, 자신의 브랜치로 push)은 그대로 통과시킵니다. 같은 동작이 반복해서 차단되면 auto 모드는 일시 중지하고 프롬프트 권한을 사용자에게 돌려줍니다.
auto 모드는 안전 보장이 아닙니다 — 프롬프트를 줄여 줄 뿐, 민감한 작업을 검토할 필요가 없어지는 것은 아닙니다. 사용 가능 여부는 요금제, 모델, 그리고(Team/Enterprise에서는) 관리자 토글에 따라 달라집니다. cron, 클라우드 세션, CI처럼 정말로 무인으로 실행한다면 Hardening Autonomous Runs와 함께 사용하세요 — auto도 bypassPermissions는 아닙니다.
- bypassPermissions는 샌드박스 안에서만 써야 합니다. 실제 머신에서 모든 프롬프트를 끄고 실행하면 에이전트가 건드리지 말아야 할 것을 건드리게 되기 쉽습니다. 일회용 환경에서만 사용하세요 — 정말 원하는 것이 프롬프트를 줄이는 것이라면 대신 auto 모드를 사용하세요. /docs/security/hardening-autonomous-runs의 Hardening Autonomous Runs를 참고하세요.
합리적인 초기 allowlist
목표: 안전하고 반복적인 것은 미리 허용하고, 파괴적인 것은 ask나 deny로 둡니다.
- 파일 읽기, 테스트/lint/빌드 명령 실행, git status/diff.
- 의존성 설치, 프로젝트 밖에 파일 쓰기, 네트워크 호출.
- 비밀 파일(.env, 키 파일) 읽기, force-push, rm -rf.
프로젝트 규칙은 settings.json(공유)에, 개인 재정의는 settings.local.json에 저장하세요.
- 프롬프트에서 배우게 하세요. 같은 안전한 명령을 몇 번 승인하다 보면 allowlist에 무엇을 추가해야 하는지 정확히 알게 됩니다 — 반복되는 프롬프트를 한 번의 규칙으로 바꾸는 것입니다.
- 세 가지 판정: allow(프롬프트 없음), ask(기본값 — 멈추고 확인), deny(절대 안 함).
- 규칙은 Bash(npm run test:*)나 Read(./.env)처럼 도구와 패턴을 함께 매칭한다.
- 여섯 가지 모드가 세션의 기조를 정한다: default(Manual), acceptEdits, plan, auto, dontAsk, bypassPermissions.
- v2.1.283부터 auto는 모든 요금제에서 대화형 터미널 및 VS Code 세션의 시작 모드다. 직접 지정한 defaultMode는 그대로 유지되고, 조직이 관리하는 기본값은 건드리지 않는다.
- auto 모드는 프롬프트를 띄우는 대신 모든 동작을 안전 분류기로 검토한다 — 프롬프트 피로에 쓸 도구는 bypassPermissions가 아니라 이것이다.
- allowlist를 만든다: 안전하고 반복적인 것은 allow, 중간 위험은 ask, 파괴적인 것은 deny.
- 공유 규칙은 settings.json에, 개인 재정의는 settings.local.json에 둔다.
스스로 점검하기
0/6다음
- settings.json: 설정 시스템
- Hooks — allow/deny를 넘어 규칙을 결정론적으로 강제
- Sandbox Credential Masking — 샌드박스 안의 명령이 실제 비밀 정보를 갖지 않고도
gh,npm,aws가 인증되게 함 - 보안과 책임 있는 사용