클로드 코드를 업데이트하고 세션을 열었더니 상태 표시줄에 ‘⏵⏵ auto mode on’이 떠 있고, 전에는 매번 물어보던 파일 수정과 명령 실행이 묻지 않고 지나갑니다. Pro·Max·Team 요금제에서 세션의 기본 권한 모드가 자동 모드로 바뀌었기 때문입니다. 허용 버튼이 사라진 건 아닙니다. 사람 대신 별도의 분류기 모델이 각 행동을 검토하고, 위험하다고 판단한 것만 다시 사람에게 넘기는 구조로 바뀐 것입니다.
이 글은 자동 모드가 무엇을 대신 결정하고 무엇은 여전히 물어보는지, 예전에 설정해 둔 permissions.allow 규칙은 어떻게 되는지, 그리고 자동 모드와 정반대 방향으로 새로 생긴 --restricted가 어떤 용도인지를 공식 문서를 기준으로 정리합니다. 지난 글 permissions.allow로 자동 승인하기는 수동 모드가 기본이던 시절의 설명이라, 이 글이 그 후속편입니다.
목차
무엇이 바뀌었나 — 기본값이 Manual에서 auto로
클로드 코드의 권한 모드는 여섯 가지입니다. 이번에 바뀐 건 그중 어느 것이 ‘세션 시작 모드’가 되느냐입니다.
| 모드 | 묻지 않고 실행하는 것 | 용도 |
|---|---|---|
| default(Manual) | 읽기만 | 모든 행동을 직접 검토, 민감한 작업 |
| acceptEdits | 읽기 + 파일 편집 + mkdir·mv·cp 같은 파일 명령 | 코드를 보면서 고칠 때 |
| plan | 읽기(+자동 모드가 있으면 분류기가 승인한 명령) | 바꾸기 전에 코드베이스 탐색 |
| auto | 전부, 단 분류기가 배경에서 검사 | 긴 작업, 승인 피로 줄이기 |
| dontAsk | 미리 허용한 도구만 | CI·스크립트 |
| bypassPermissions | 전부, 검사 없음 | 격리된 컨테이너·VM 전용 |
공식 문서 기준으로 Pro·Max·Team 요금제에서 터미널이나 VS Code 확장으로 시작하는 세션은 auto가 기본입니다(macOS·Linux·WSL은 v2.1.228, 윈도우는 v2.1.233 이상). Enterprise 요금제와 Console API 키, claude -p 비대화형 실행, Bedrock·Vertex 같은 외부 제공자 경로는 여전히 Manual로 시작합니다. 처음 자동 모드로 시작될 때는 세션 맨 위에 안내가 한 번 뜹니다.
기존에 ~/.claude/settings.json에 다른 defaultMode를 적어 두었다면 그 설정이 유지되고, 자동 모드로 바꿀지 한 번 물어봅니다. 거절하면 그대로입니다. 프로젝트의 .claude/settings.json이나 settings.local.json에 적은 "defaultMode": "auto"는 효력이 없다는 점도 문서에 명시돼 있습니다. 자동 모드 기본값은 사용자 설정 또는 관리 설정에서만 먹습니다.
자동 모드는 ‘허용’이 아니라 ‘대리 검토’입니다
자동 모드를 bypassPermissions의 순한 버전으로 오해하기 쉬운데, 구조가 다릅니다. bypassPermissions는 검사 자체를 건너뛰고, 자동 모드는 사람 대신 분류기라는 두 번째 모델이 행동마다 “이게 사용자가 시킨 일의 범위 안인가, 되돌릴 수 있나, 외부 인프라를 건드리나”를 판단합니다. 분류기가 차단하면 알림이 뜨고 /permissions의 ‘Recently denied’ 탭에서 r을 눌러 수동 승인으로 다시 시도할 수 있습니다.
분류기가 기본으로 막는 행동은 문서에 목록으로 있습니다. 몇 가지만 옮기면 이렇습니다.
- 코드를 내려받아 바로 실행하는 것(
curl | bash류) - 민감한 데이터를 외부 엔드포인트로 보내는 것
- 프로덕션 배포·마이그레이션, 클라우드 스토리지 대량 삭제, IAM·저장소 권한 부여
- 세션 전부터 있던 파일을 되돌릴 수 없게 지우는 것, force push
git reset --hard,git checkout -- .,git clean -fd,git stash drop처럼 미커밋 변경을 날릴 수 있는 명령- 이 세션에서 만들지 않은 커밋에 대한
git commit --amend terraform destroy등 인프라 파괴
대화 중에 “푸시하지 마”, “내가 검토하기 전엔 배포하지 마”라고 말한 것도 분류기가 차단 신호로 읽습니다. 다만 이건 규칙으로 저장되는 게 아니라 매번 대화 기록에서 다시 읽는 것이라, 컨텍스트가 압축되면서 그 문장이 사라지면 경계도 사라질 수 있습니다. 확실히 막으려면 deny 규칙으로 적으라는 게 문서의 권고입니다.
분류기가 3회 연속 또는 세션 누적 20회 차단하면 자동 모드가 잠시 멈추고 다시 사람에게 묻기 시작합니다. 자주 막힌다면 분류기가 내 인프라를 모르는 것이니 /feedback으로 오탐을 알리거나 신뢰 인프라를 설정하라는 안내가 붙어 있습니다.
permissions.allow는 이제 쓸모없나
아닙니다. 분류기는 고정된 순서로 판단하는데, 첫 단계가 “allow·ask·deny 규칙에 걸리는가”입니다. 규칙에 걸리면 분류기까지 가지 않고 즉시 결정됩니다. 즉 allow 규칙은 분류기의 검토를 건너뛰게 해 주는 지름길로 여전히 유효하고, deny 규칙은 bypassPermissions를 포함한 모든 모드에서 막습니다. ask 규칙에 걸린 도구는 자동 모드여도 반드시 사람에게 묻습니다.
예외가 둘 있습니다. 보호 경로(설정 파일 등)에 쓰는 것과 rm -rf ~ 같은 치명적 경로 삭제는 allow 규칙이 있어도 분류기로 넘어갑니다. 정리하면 이렇습니다.
| 규칙 | 자동 모드에서의 효과 |
|---|---|
| allow | 분류기 검토 생략, 즉시 실행(보호 경로·치명적 삭제 제외) |
| ask | 모드와 무관하게 항상 사람에게 질문 |
| deny | 모든 모드에서 차단, bypassPermissions 포함 |
| PreToolUse 훅 | allow·deny 판정 그대로 적용 |
수동 모드나 acceptEdits 모드에서 Bash 승인 프롬프트가 뜰 때 “Yes, and switch to auto mode” 선택지가 추가된 것도 이번 변화의 일부입니다(v2.1.247 이상). 승인과 동시에 자동 모드로 넘어갑니다. 단, ask 규칙이나 훅이 강제한 프롬프트에는 이 선택지가 붙지 않습니다. 자동 모드로 가도 그 프롬프트는 없어지지 않기 때문입니다.
정반대 방향의 신설 — –restricted
자동 모드가 “덜 묻기”라면 --restricted는 “덜 할 수 있게”입니다. v2.1.248 이상에서 쓸 수 있는 시작 플래그로, 공유 머신에서 평가 도구가 클로드를 돌릴 때처럼 명령 실행과 그 머신의 설정 읽기를 원천 차단해야 하는 상황을 위한 것입니다. 켜면 다음이 일어납니다.
- 명령이나 코드를 실행하는 내장 도구와 WebFetch가 제거됩니다(
--tools로 이름을 직접 지정한 것만 예외). - 파일 도구는 작업 디렉터리 안으로만 제한됩니다.
- 사용자·프로젝트·로컬 설정 파일을 읽지 않고 관리 설정과
--settings만 읽습니다. - bypassPermissions를 거부합니다.
일반 사용자가 켤 일은 드물지만, “자동 모드가 기본이 됐으니 클로드 코드가 마음대로 하는 것 아니냐”는 걱정에 대한 답이기도 합니다. 반대편에 이런 잠금 모드도 같이 생겼습니다.
정리 — 지금 무엇을 확인하면 되나
- 상태 표시줄을 봅니다. ‘auto mode on’이면 분류기가 검토 중이고, Shift+Tab을 한 번 누르면 Manual로 돌아갑니다.
- 절대 하면 안 되는 행동은 대화로 말하지 말고 deny 규칙으로 적습니다. 대화는 압축되면 잊힙니다.
- 자주 쓰는 안전한 명령은 allow 규칙에 남겨 둡니다. 분류기 왕복을 건너뛰어 빨라집니다.
- 자동 모드가 계속 막는다면 오탐 신고와 신뢰 인프라 설정을 먼저 시도합니다. bypassPermissions로 넘어가는 건 격리 환경에서만 하라는 게 문서의 입장입니다.
권한 모드 공식 문서는 code.claude.com에 있습니다. 훅으로 행동을 강제하는 방법은 Hooks 활용 글, 세션과 사용량 한도는 세션 리밋 글에서 이어집니다.