클로드 코드 권한 모드와 허용 규칙 설정하기
클로드 코드의 권한 규칙은 특정 명령과 파일을 묻지 않고 실행할지(allow), 실행 전에 물어볼지(ask), 막을지(deny) 정해 두는 설정으로, settings.json 파일의 permissions 항목에 적습니다. 어느 규칙에도 맞지 않는 명령은 권한 모드가 처리합니다.
같은 말:클로드 코드 권한 설정클로드 코드 권한 허용클로드 코드 항상 허용클로드 코드 모든 권한 허용클로드 권한 허용permissions allow ask denysettings.local.json/permissionsdangerously-skip-permissionsbypassPermissions
Claude Code는 명령을 실행하거나 파일을 고치기 전에 승인 창을 띄워 사용자에게 허락을 묻습니다. 같은 명령마다 승인 창을 누르다 보면 자주 쓰는 명령은 묻지 않고 실행하게 하고, 파일 지우기 같은 명령은 아예 막고 싶어집니다. 이 글은 같은 요청이 권한 규칙에 따라 그냥 실행되거나, 실행 전에 묻거나, 막히는 모습을 실제 화면으로 나란히 놓고 설명합니다.
클로드 코드의 권한 규칙은 특정 명령과 파일을 묻지 않고 실행할지(allow), 실행 전에 물어볼지(ask), 막을지(deny) 정해 두는 설정으로, settings.json 파일의 permissions 항목에 적습니다. 이 글은 2026년 10월 25일 기준 Claude Code 공식 문서(Configure permissions, Settings, Permission modes)와 이날 macOS 터미널의 Claude Code v2.1.310에서 본 화면을 근거로 씁니다.
클로드 코드 권한 규칙
새 직원용 출입 규정표처럼
Claude가 실행할 명령을 사용자가
그냥 실행, 묻기, 막기로 나눠 둡니다
Claude Code는 명령을 실행하기 전에 승인 창을 띄워 허락을 묻습니다. 같은 명령마다 승인 창을 누르다 보면 자주 쓰는 명령은 그냥 실행하게 하고, 파일 지우기 같은 명령은 아예 막고 싶어집니다.
담당자는 새 직원이 드나들 방을 출입 규정표에 정해 두고, 문 앞의 출입 관리자가 그 규정표대로 문을 열어 주거나, 담당자에게 인터폰으로 묻거나, 막습니다. 문을 열지 말지는 직원 본인이 아니라 출입 관리자가 규정표대로 정합니다. 그림의 문 세 개를 본 뒤, 보고서 폴더를 zip으로 묶어 달라는 요청 하나가 규칙에 따라 어떻게 달라지는지 아래 실제 화면으로 봅니다.
출입 관리자가 바로 열어 줍니다.
allow: 묻지 않고 실행
출입 관리자가 담당자에게 인터폰으로 묻습니다.
ask: 실행 전에 사용자에게 물음
출입 관리자가 열어 주지 않습니다.
deny: 실행하지 못하게 막음
이 그림에서 새 직원은 Claude를, 방은 Claude가 실행하려는 명령을, 출입 규정표는 settings.json 파일의 permissions 항목을, 규정표를 확인하는 출입 관리자는 Claude Code 프로그램을, 규정표를 써 두고 인터폰을 받는 담당자는 사용자를 뜻합니다.
zip 명령 규칙 Bash(zip *)를 적을 목록 고르기
Bash(zip *)는 zip으로 시작하는 모든 명령에 맞는 규칙입니다. zip은 폴더를 압축 파일 하나로 묶는 명령입니다.
.claude/settings.local.json
목록 버튼을 누르면 이 파일에 규칙 한 줄이 적힙니다.
목록 버튼을 누르면 이 터미널에 같은 요청을 보낸 결과가 나옵니다.
⏸ manual mode on
권한 규칙은 Claude Code가 특정 명령과 파일을 묻지 않고 실행할지(allow), 물어볼지(ask), 막을지(deny) 정해 두는 설정으로, settings.json 파일의 permissions 항목에 적습니다.
공식 문서에 따르면 권한 규칙은 Claude(AI 모델)가 아니라 Claude Code 프로그램이 지키게 합니다. CLAUDE.md에 "지우지 마"라고 적은 문장은 Claude가 참고하는 지시이지만, deny 규칙에 맞는 명령은 Claude Code가 막습니다.
문 세 개는 allow, ask, deny를 설명하려고 만든 비유입니다. 승인 창과 거부 문구는 2026년 10월 25일 Claude Code v2.1.310에서 연습 폴더에 같은 규칙을 두고 본 화면이고, 요청 문장과 Claude의 마지막 답은 가상 예시입니다.
승인 창에서 "다시 묻지 않기"를 고르면
settings.local.json에 allow 한 줄이 생깁니다
규칙이 하나도 없는 Manual 모드(파일 편집과 명령마다 허락을 묻는 권한 모드)의 Claude Code에 같은 zip 요청을 보내면 아래 승인 창이 뜹니다. 선택지 네 개를 하나씩 누르면 명령이 실행되는지, 설정 파일에 어떤 줄이 생기는지, 다음에 zip 명령을 보낼 때 무엇이 달라지는지 나옵니다.
Bash command 보고서 폴더를 zip으로 압축 zip -r 보고서.zip 보고서 This command requires approval Do you want to proceed?
Esc to cancelTab to amend
⏸ manual mode on
선택지를 누르면 결과 카드에 그 선택지가 하는 일과 다음에 달라지는 점이 나옵니다.
.claude/settings.local.json
연습 폴더에는 아직 .claude/settings.local.json 파일이 없습니다.
연습 폴더
- TXT
초안.txt - TXT
임시.txt - DIR
보고서
승인 창 문구와 2번을 고른 뒤 생긴 파일 내용은 2026년 10월 25일 Claude Code v2.1.310에서 연습 폴더에 zip 요청을 보내 본 화면입니다. 3번 선택지는 auto 모드를 쓸 수 있는 세션의 Bash 승인 창에만 나옵니다(v2.1.247 이상). 2번 선택지의 문구는 명령에 따라 달라지며, mkdir처럼 폴더를 만드는 명령에는 폴더 접근을 허락하는 문구가 나왔습니다.
규칙은 deny, ask, allow 순서로 대조하고
처음 맞는 규칙이 결과를 정합니다
연습 폴더의 settings.local.json에 규칙 세 줄이 있습니다. 명령 버튼을 누르면 Claude Code가 그 명령을 deny 목록부터 차례로 대조하는 과정과 결과가 나옵니다.
.claude/settings.local.json
- 1
{ - 2
"permissions": { - 3
"allow": ["Bash(rm 임시.txt)"], - 4
"ask": ["Bash(mv *)"], - 5
"deny": ["Bash(rm *)"] - 6
} - 7
}
Claude가 실행하려는 명령
Claude Code가 대조하는 순서
- 1deny
Bash(rm *) - 2ask
Bash(mv *) - 3allow
Bash(rm 임시.txt)
명령 버튼을 누르면 deny부터 차례로 대조한 결과가 나옵니다.
대조 순서는 2026년 10월 25일 Claude Code Configure permissions 문서 기준입니다. 결과 줄은 이날 Claude Code v2.1.310에서 연습 폴더에 같은 규칙을 두고 본 문구이고, 규칙과 명령은 가상 예시입니다.
규칙을 저장할 파일에 따라
규칙이 적용되는 범위가 달라집니다
/permissions 화면에서 규칙을 새로 더하면 Claude Code가 규칙을 저장할 파일을 묻습니다. 아래 터미널은 deny 규칙 Bash(rm *)를 더할 때 나오는 실제 화면입니다. 선택지를 누르면 폴더 목록에서 그 파일이 초록색으로 표시되고, 그 규칙이 누구에게 적용되는지 나옵니다.
Add deny permission rule Bash(rm *) Any Bash command starting with rm Where should this rule be saved?
선택지를 누르면 결과 카드에 그 파일의 규칙이 적용되는 사람과 범위가 나옵니다.
내 컴퓨터의 폴더
- DIR
~ (홈 폴더) - DIR
.claude - JSON
settings.json - DIR
연습 (작업 폴더) - DIR
.claude - JSON
settings.json - JSON
settings.local.json
2026년 10월 25일 Claude Code v2.1.310 화면입니다. 3. User settings 줄의 "Saved in at"은 실제 화면 문구를 그대로 옮겼습니다. 회사가 배포하는 관리 정책 설정은 본문 표에 적었습니다.
/permissions를 입력하면
지금 걸린 규칙과 저장된 파일이 보입니다
/permissions는 권한 규칙을 보고, 더하고, 지우는 명령입니다. 탭 버튼을 누르면 그 탭의 실제 설명 문구와 연습 폴더의 규칙이 나오고, 규칙을 고를 때 뜨는 삭제 확인 창에 그 규칙이 저장된 파일이 적혀 있습니다. 지우지 않으려면 Esc로 닫습니다.
Recently deniedAuto modeWorkspace
탭 버튼을 누르면 이 터미널에 그 탭의 화면이 나옵니다.
/permissions 화면의 탭 누르기
탭 버튼을 누르면 이 터미널에 그 탭의 화면이 나옵니다.
2026년 10월 25일 Claude Code v2.1.310 화면 문구입니다. 실제 목록에는 사용자 설정 파일의 규칙도 함께 나오며, 그림에는 연습 폴더의 규칙만 그렸습니다.
권한 규칙을 정리하면 이렇습니다
- 1
권한 규칙은 명령을 묻지 않고 실행할지(allow), 실행 전에 물어볼지(ask), 막을지(deny) 정하는 설정이며, settings.json의
permissions항목에Bash(zip *)처럼도구(조건)형식으로 적습니다. - 2
Claude Code는 규칙을 deny, ask, allow 순서로 대조하고 처음 맞는 규칙으로 결과를 정하므로, 좁은 allow 규칙으로 넓은 deny 규칙에 예외를 만들 수 없습니다. 어느 규칙에도 맞지 않는 명령은 권한 모드가 처리합니다.
- 3
승인 창의 "다시 묻지 않기"는 Bash 명령 규칙을
.claude/settings.local.json에 저장합니다. 팀과 함께 쓸 규칙은.claude/settings.json에, 모든 프로젝트에 쓸 규칙은~/.claude/settings.json에 적습니다. - 4
Bash(rm *)같은 deny 규칙은/bin/rm처럼 다른 형태로 부른 같은 명령까지 막지는 못하므로, 지워지면 안 되는 중요한 파일은 샌드박스(운영체제 수준에서 파일과 네트워크 접근을 막는 기능)와 함께 지킵니다.
클로드 코드 권한 규칙이란: 출입 규정표와 settings.json
담당자는 새 직원이 드나들 방을 출입 규정표에 정해 둡니다. 문 앞의 출입 관리자는 그 규정표를 보고 문을 바로 열어 주거나, 담당자에게 인터폰으로 묻거나, 열어 주지 않습니다. Claude Code에서는 Claude가 새 직원이고, Claude가 실행하려는 명령과 열려는 파일이 방이며, settings.json 파일의 permissions 항목이 출입 규정표입니다. 규정표를 확인하는 출입 관리자는 Claude Code 프로그램이고, 규정표를 써 두고 인터폰을 받는 담당자는 사용자입니다.
| 출입 규정표 | Claude Code의 권한 규칙 | 같은 요청 "보고서 폴더를 zip으로 묶어 줘"의 결과 |
|---|---|---|
| 출입 관리자가 바로 열어 주는 방 | allow 목록 | 승인 창 없이 zip 명령이 실행됩니다 |
| 출입 관리자가 담당자에게 인터폰으로 묻는 방 | ask 목록 | 실행 전에 승인 창이 뜨고, 사용자가 Yes를 골라야 실행됩니다 |
| 출입 관리자가 열어 주지 않는 방 | deny 목록 | 실행되지 않고 거부 문구가 남습니다 |
공식 문서는 권한 규칙을 AI 모델이 아니라 Claude Code 프로그램이 지키게 한다고 적습니다. 요청이나 CLAUDE.md에 적은 "지우지 마"는 Claude가 하려는 일에 영향을 줄 뿐 Claude Code가 허용하는 범위를 바꾸지 않습니다. 반드시 막아야 하는 명령은 deny 규칙으로 막습니다.
권한 모드와 권한 규칙의 차이
권한 모드는 Claude Code가 대체로 얼마나 자주 묻는지 정하는 설정이고, 권한 규칙은 특정 명령이나 파일을 항상 어떻게 처리할지 정하는 목록입니다. 규칙에 맞는 명령은 규칙대로 처리되고, 어느 규칙에도 맞지 않는 명령은 지금 권한 모드가 처리합니다.
권한 모드 여섯 가지(Manual, acceptEdits, plan, auto, dontAsk, bypassPermissions)와 Shift+Tab으로 모드를 바꾸는 순서, 상태 표시줄 문구는 입문 수업 클로드 코드란과 플랜 모드 활용하기에서 다뤘습니다. 이 글의 화면은 매번 묻는 Manual 모드(상태 표시줄 ⏸ manual mode on)를 기준으로 합니다. Claude Code v2.1.283 이상의 대화형 터미널은 auto 모드로 시작하므로, 같은 화면을 보려면 claude --permission-mode default로 시작합니다.
모드와 규칙이 만나는 곳에서 알아 둘 점은 두 가지입니다. 공식 문서에 따르면 deny 규칙은 모든 권한을 허용하는 bypassPermissions 모드에서도 막고, ask 규칙에 맞는 명령은 어떤 모드에서도 자동으로 승인되지 않습니다.
settings.json에 allow, ask, deny 규칙 쓰는 법
규칙은 설정 파일의 permissions 안에 세 목록으로 적습니다. 형식은 도구 또는 도구(조건)입니다.
{
"permissions": {
"allow": ["Bash(zip *)"],
"ask": ["Bash(mv *)"],
"deny": ["Bash(rm *)", "Read(./비밀/**)"]
}
}Bash는 터미널 명령을 실행하는 도구이고 Read는 파일을 읽는 도구입니다. 위 예시는 zip 명령은 묻지 않고, 파일을 옮기는 mv 명령은 묻고, 파일을 지우는 rm 명령과 비밀 폴더 읽기는 막습니다.
| 쓰는 법 | 맞는 것 | 맞지 않는 것 |
|---|---|---|
Bash(zip -r 보고서.zip 보고서) | 이 명령 한 줄 그대로 | 다른 폴더를 묶는 zip 명령 |
Bash(zip *) | zip으로 시작하는 모든 명령, 인자 없는 zip | zipinfo 같은 다른 명령 |
Bash(zip*) | zip 명령과 zipinfo처럼 zip으로 시작하는 다른 명령(별표 앞에 공백이 없어 zipinfo까지 잡습니다) | zip으로 시작하지 않는 명령 |
Bash | 모든 터미널 명령 | 없음 |
Read(./비밀/**) | 현재 폴더의 비밀 폴더 안 모든 파일 읽기 | 비밀 폴더 밖 파일 읽기 |
Edit(보고서/**) | 보고서 폴더 안 파일 고치기와 만들기 | 보고서 폴더 밖 파일 고치기 |
WebFetch(domain:example.com) | example.com 주소 가져오기 | 다른 도메인 |
별표(*)는 별표 위치에 들어가는 어떤 글자와도 맞습니다. 공식 문서는 별표를 명령 이름과 하위 명령 뒤에 공백과 함께 두라고 안내합니다. Bash(git log *)는 git log 명령만 잡지만 Bash(git *)는 모든 git 명령을 잡습니다.
파일 경로 규칙에서 알아 둘 점은 다음과 같습니다.
- 경로 앞 기호:
//경로는 파일 시스템 맨 위부터 쓴 절대 경로,~/경로는 홈 폴더 기준,/경로는 그 설정 파일 기준(프로젝트 설정이면 작업 폴더),경로나./경로는 현재 폴더 기준입니다./Users/나/파일처럼 빗금 하나로 시작하면 절대 경로가 아니므로, 절대 경로는//Users/나/파일로 씁니다. - 파일 쓰기 규칙은 Edit로: 파일을 고치거나 만드는 일을 막는 경로 규칙은
Edit(보고서/**)처럼 씁니다.Write(보고서/**)처럼 경로를 넣은 Write 규칙은 설정에 받아들여지지만 어떤 파일에도 맞지 않습니다. - Read deny는 편집도 막음:
Readdeny 규칙은 같은 경로의 파일 고치기와 새로 만들기도 막습니다. .claudeignore는 효과가 없음: 읽히면 안 되는 파일은Readdeny 규칙으로 옮깁니다.
도구 이름만 쓴 deny 규칙("deny": ["Bash"])은 그 도구를 Claude가 보는 도구 목록에서 아예 뺍니다. Bash(rm *)처럼 조건을 붙인 규칙은 도구를 남겨 두고 맞는 호출만 막습니다.
규칙 우선순위: deny, ask, allow 순서로 대조합니다
Claude Code는 실행하려는 명령을 deny, ask, allow 순서로 대조하고 처음 맞는 규칙이 결과를 정합니다. 규칙이 얼마나 구체적인지는 이 순서를 바꾸지 않습니다. 그래서 넓은 deny 규칙 Bash(rm *) 아래에서는 좁은 allow 규칙 Bash(rm 임시.txt)가 있어도 rm 임시.txt가 막힙니다. ask와 allow 사이도 같아서, ask 규칙에 맞는 명령은 더 좁은 allow 규칙이 있어도 승인 창이 뜹니다.
&&나 ;로 이어 붙인 명령은 부분마다 따로 대조합니다. allow 규칙 Bash(zip *)가 있어도 zip -r 보고서.zip 보고서 && rm 임시.txt는 뒤의 rm 부분이 allow 규칙에 없으므로 바로 실행되지 않고 승인 창이 뜹니다(Manual 모드 기준). deny와 ask 규칙은 어느 한 부분에만 맞아도 적용됩니다.
공식 문서가 스스로 밝히는 한계도 있습니다. Bash 규칙은 Claude가 쓴 명령 글자를 대조하므로 같은 프로그램을 다른 형태로 부르면 맞지 않습니다. Bash(rm *)는 rm -rf build/를 막지만 /bin/rm -rf build/나 bash -c 'rm -rf build/'는 막지 못합니다. Read deny 규칙도 파이썬이나 Node 스크립트가 직접 여는 파일까지 막지는 못합니다. 모든 프로그램의 파일 접근을 막아야 한다면 운영체제 수준에서 파일과 네트워크 접근을 제한하는 샌드박스를 켭니다.
설정 파일 세 곳과 적용 범위
같은 규칙도 어느 파일에 적느냐에 따라 적용되는 사람과 폴더가 다릅니다. ~는 홈 폴더, .claude는 작업 폴더 안의 .claude 폴더입니다.
| 범위 | 파일 | 적용 대상 |
|---|---|---|
| 사용자 | ~/.claude/settings.json | 내 컴퓨터의 모든 프로젝트에서 나 |
| 공유 프로젝트 | .claude/settings.json | 그 폴더에서 일하는 모두, Git 저장소에 올리면 팀원도 |
| 프로젝트 로컬 | .claude/settings.local.json | 그 프로젝트에서 나만, Git에 올리지 않음 |
| 관리 정책 | managed-settings.json 등 | 회사가 배포한 모든 컴퓨터 |
설치만으로는 설정 파일이 생기지 않습니다. .claude/settings.local.json은 승인 창에서 "다시 묻지 않기"를 처음 고를 때 Claude Code가 만들고, 이때 Git에 올리지 않을 파일 목록에 이 파일을 넣습니다. 손으로 만들었다면 .gitignore에 직접 넣습니다.
같은 설정 값이 여러 파일에 있으면 관리 정책, 명령줄 인자, 프로젝트 로컬, 공유 프로젝트, 사용자 순서로 위에 있는 값이 이깁니다. 그런데 permissions.allow 같은 목록은 이기고 지는 대신 여러 파일의 목록을 합칩니다. 합친 목록을 다시 deny, ask, allow 순서로 대조하므로, 사용자 설정에서 허용한 명령도 프로젝트 설정에서 막으면 막히고 그 반대도 같습니다. 관리 정책의 deny 규칙은 명령줄 인자로도 풀 수 없습니다.
설정 파일에서 자주 막히는 조건은 두 가지입니다.
- 프로젝트 allow와 폴더 신뢰: 공유 프로젝트 파일
.claude/settings.json의 allow 규칙은 그 폴더를 처음 열 때 뜨는 신뢰 창(Quick safety check: Is this a project you created or one you trust?)에서 Yes, I trust this folder를 고른 뒤에만 적용됩니다. deny와 ask 규칙은 바로 적용됩니다. - 시작 모드
defaultMode:permissions.defaultMode는 세션을 어떤 권한 모드로 시작할지 정하는 값입니다. 프로젝트 파일(.claude/settings.json,.claude/settings.local.json)에 적은"auto"는 무시되어 내장 기본값으로 시작하고,"bypassPermissions"는 적용되지 않아 Manual 모드로 시작합니다. 두 값은 사용자 설정이나 관리 정책에 적거나,claude --permission-mode auto처럼 시작할 때 줍니다.
지금 불러온 설정 파일은 /status의 Status 탭 Setting sources 줄에서 볼 수 있습니다.
승인 창에서 "다시 묻지 않기"(항상 허용)를 고르면 저장되는 규칙
규칙 없이 Manual 모드에서 zip 명령을 시키면 Claude Code v2.1.310은 아래 승인 창을 띄웠습니다.
Bash command
보고서 폴더를 zip으로 압축
zip -r 보고서.zip 보고서
This command requires approval
Do you want to proceed?
❯ 1. Yes
2. Yes, and don’t ask again for: zip *
3. Yes, and switch to auto mode
4. No| 선택지 | 이번 명령 | 설정 파일 | 다음에 같은 명령을 시키면 |
|---|---|---|---|
| 1. Yes | 실행 | 그대로 | 승인 창이 다시 뜹니다 |
| 2. Yes, and don't ask again for | 실행 | .claude/settings.local.json에 "allow": ["Bash(zip *)"] | 승인 창 없이 실행됩니다 |
| 3. Yes, and switch to auto mode | 실행 | 그대로 | 이 세션은 auto 모드로 바뀌어 분류 모델이 검사합니다 |
| 4. No | 실행하지 않음 | 그대로 | 승인 창이 다시 뜹니다 |
흔히 "항상 허용"이라고 부르는 선택지가 2번입니다. 공식 문서에 따르면 터미널의 Claude Code는 이 규칙을 git 저장소 맨 위의 .claude/settings.local.json에만 저장하고, 저장소 안의 하위 폴더에서 연 세션에도 같은 규칙이 적용됩니다. git 저장소가 아닌 폴더와 Windows에서는 작업 폴더의 .claude 폴더에 저장합니다.
도구마다 "다시 묻지 않기"가 남는 기간이 다릅니다.
| 도구 | "다시 묻지 않기"가 남는 기간 |
|---|---|
| Bash 명령 | 저장소와 명령마다 파일에 저장 |
| 파일 수정 | 파일에 저장하지 않고 세션이 끝날 때까지 |
| WebFetch(웹 주소 가져오기) | 저장소와 도메인마다 파일에 저장 |
| WebSearch(웹 검색) | 저장소마다 파일에 저장 |
승인 창에 1번 Yes와 4번 No만 나올 때도 있습니다. 공식 문서는 저장될 범위를 창에 다 보여 줄 수 없을 때 "다시 묻지 않기"를 빼고 한 번 승인만 보여 준다고 설명합니다. 그 명령을 계속 허용하려면 /permissions에서 규칙을 직접 더합니다. mkdir 완료처럼 폴더를 만드는 명령에서는 2번 선택지가 작업 폴더 접근을 허락하는 문구로 나왔습니다.
/permissions 화면에서 규칙을 보고 고치기
세션 안에서 /permissions를 입력하면 권한 규칙 화면이 열립니다. v2.1.310의 탭은 Recently denied, Allow, Ask, Deny, Auto mode, Workspace이고, 왼쪽과 오른쪽 화살표 키로 탭을 옮깁니다.
| 탭 | 화면 설명 문구 | 뜻 |
|---|---|---|
| Allow | Claude Code won't ask before using allowed tools. | 묻지 않고 쓰는 규칙 목록 |
| Ask | Claude Code will always ask for confirmation before using these tools. | 쓰기 전에 항상 묻는 규칙 목록 |
| Deny | Claude Code will always reject requests to use denied tools. | 항상 거부하는 규칙 목록 |
| Workspace | Claude Code can read files in the workspace, and make edits when auto-accept edits is on. | Claude Code가 파일을 읽을 수 있는 작업 폴더 목록 |
규칙을 더할 때는 탭의 첫 줄 Add a new rule을 고르고 Bash(rm *)처럼 입력한 뒤, 저장할 파일을 세 가지(Project settings (local), Project settings, User settings) 가운데 고릅니다. 목록에서 규칙을 고르면 터미널에 규칙 삭제 확인 창이 뜨고, 삭제 확인 창에 From project local settings처럼 고른 규칙이 들어 있는 설정 파일이 나옵니다. 작업 도중에 규칙을 더하거나 지우면 Claude가 다음 도구를 호출할 때부터 적용됩니다.
직접 해 보기: 연습 폴더에서 zip 규칙 확인하기
Claude Code 설치와 로그인이 끝났다면 진행합니다. 아직이라면 설치 기초를 먼저 따라 합니다. 요청을 보내면 계정의 사용량이 듭니다.
- Finder나 파일 탐색기에서 빈 폴더
연습을 만들고, 그 안에 텍스트 편집기(Windows 메모장, Mac 텍스트 편집기)로초안.txt,임시.txt를 만들고 하위 폴더보고서를 만듭니다. 실제 업무 파일은 넣지 않습니다. - 터미널이나 PowerShell에서
cd뒤에연습폴더를 끌어다 놓고 Enter를 누른 뒤claude --permission-mode default를 입력합니다. 신뢰 창이 나오면 Yes, I trust this folder를 고릅니다. 상태 표시줄에⏸ manual mode on이 보이면 Manual 모드입니다. - 입력창에 "보고서 폴더를 zip으로 묶어 줘"를 보냅니다. 승인 창이 뜨면 2번 Yes, and don't ask again for: zip </strong>*을 고릅니다.
- 텍스트 편집기(Windows 메모장, Mac 텍스트 편집기)로
연습/.claude/settings.local.json을 열어"allow": ["Bash(zip *)"]가 생겼는지 봅니다. Finder에서는Command+Shift+.을 눌러야.claude폴더가 보입니다. - Finder나 파일 탐색기에서
보고서.zip을 지우고 같은 요청을 다시 보냅니다. 이번에는 승인 창 없이 실행돼야 합니다. /permissions를 입력하고 Deny 탭의 Add a new rule에Bash(rm *)를 입력해 1번 Project settings (local)에 저장합니다.- "Bash 도구로 rm 임시.txt를 실행해 줘. 막히면 다른 방법을 쓰지 말고 멈춰 줘"를 보냅니다.
Ctrl+O로 자세히 보기를 켜면Error: Permission to use Bash with command rm 임시.txt has been denied.가 보이고, Finder나 파일 탐색기에서임시.txt가 그대로 있어야 합니다.
다른 조건으로 한 번 더 해 봅니다. /permissions의 Ask 탭에 Bash(zip *)를 Project settings로 더한 뒤 zip 요청을 보내면, 로컬 파일의 allow 규칙이 있어도 Permission rule Bash(zip *) requires confirmation for this command. 문구와 함께 승인 창이 다시 뜹니다. 연습이 끝나면 /exit로 세션을 끝내고 연습 폴더를 지웁니다.
막혔을 때
| 상황 | 원인 | 할 일 |
|---|---|---|
| 승인 창이 아예 안 뜨고 명령이 실행됨 | 세션이 auto 모드로 시작했습니다 | 상태 표시줄을 보고, Shift+Tab으로 ⏸ manual mode on까지 바꾸거나 claude --permission-mode default로 다시 시작합니다 |
| "다시 묻지 않기"를 골랐는데 또 물음 | 다른 설정 파일에 같은 명령에 맞는 ask 규칙이 있거나, 명령 모양이 저장된 규칙과 다릅니다(이어 붙인 명령 등) | /permissions의 Ask 탭에서 그 명령에 맞는 규칙과 출처 파일을 봅니다 |
| 공유 프로젝트 파일의 allow가 적용되지 않음 | 그 폴더를 신뢰한다고 고르지 않았습니다 | 대화형 세션에서 폴더를 열어 신뢰 창에서 Yes, I trust this folder를 고릅니다 |
defaultMode를 bypassPermissions로 프로젝트 파일에 적었는데 Manual로 시작 | 프로젝트 파일(.claude/settings.json, .claude/settings.local.json)의 bypassPermissions는 적용되지 않습니다 | ~/.claude/settings.json으로 옮기거나 claude --permission-mode bypassPermissions로 시작합니다 |
defaultMode를 auto로 프로젝트 파일에 적었는데 적용되지 않음 | 프로젝트 파일의 auto는 무시되고 내장 기본값으로 시작합니다 | ~/.claude/settings.json으로 옮기거나 claude --permission-mode auto로 시작합니다 |
| deny 규칙을 적었는데 비슷한 작업이 실행됨 | Claude가 규칙에 맞지 않는 다른 형태의 명령이나 스크립트를 썼습니다 | 규칙 범위를 넓히거나 샌드박스를 켜고, 실제로 막히는지 연습 파일로 시험합니다 |
| 시작할 때 규칙 경고가 나옴 | 규칙의 도구 이름에 오타가 있습니다(예: Bsh) | 공식 도구 이름(Bash, Read, Edit 등)으로 고칩니다 |
자주 묻는 질문
클로드 코드에서 모든 권한을 허용하려면 어떻게 하나요?
claude --dangerously-skip-permissions 또는 claude --permission-mode bypassPermissions로 시작하면 bypassPermissions 모드가 되어 승인 창 대부분을 건너뜁니다. 공식 문서는 이 모드를 Claude Code가 피해를 줄 수 없는 컨테이너나 가상 머신 같은 격리 환경에서만 쓰라고 경고합니다. 이 모드는 세션을 시작할 때만 켤 수 있고, 켜도 deny 규칙, ask 규칙, 중요한 경로를 지우는 rm 명령은 그대로 막히거나 묻습니다. 상태 표시줄에는 ⏵⏵ bypass permissions on이 보입니다. 내 컴퓨터에서 승인 창을 줄이려면 모든 권한을 여는 대신 자주 쓰는 명령만 allow 규칙에 적습니다.
auto 모드와 allow 규칙은 무엇이 다른가요?
allow 규칙은 사용자가 적은 명령만 묻지 않고 실행합니다. auto 모드는 규칙에 없는 명령도 별도 분류 모델이 요청 범위 안인지 검사해 실행하거나 막습니다. 공식 문서에 따르면 auto 모드에서도 deny, ask, allow 규칙에 맞는 명령은 규칙대로 처리되고, 작업 폴더 안의 읽기와 파일 편집은 자동으로 승인되며, 그 밖의 명령을 분류 모델이 검사합니다. 보호된 경로에 쓰는 일처럼 allow 규칙에 맞아도 분류 모델이 검사하는 예외가 있고, Bash(*)처럼 모든 명령을 여는 allow 규칙은 auto 모드에 있는 동안 적용되지 않고, auto 모드를 나오면 다시 적용됩니다. 설정 파일의 규칙은 그대로 남습니다.
팀 전체가 bypassPermissions 모드를 못 쓰게 할 수 있나요?
할 수 있습니다. 관리 정책 설정에 "permissions": {"disableBypassPermissionsMode": "disable"}을 두면 bypassPermissions 모드를 켤 수 없고, auto 모드는 disableAutoMode로 막습니다. 두 값은 어느 설정 파일에서도 작동하지만, 관리 정책에 두어야 사용자가 덮어쓸 수 없습니다.
참고 자료

제대로 이해했는지 한 문제로 확인해 볼까요?
답을 고르면 바로 풀이가 나와요.
settings.json에 allow 규칙 "Bash(rm 임시.txt)"와 deny 규칙 "Bash(rm *)"가 함께 있습니다. Claude가 rm 임시.txt를 실행하려 하면 어떻게 되나요?
예제나 확인 질문을 직접 시도한 뒤 완료 표시해요. 더 연습할 내용이 남으면 표시하지 않고 다음 글을 읽어도 됩니다. 완료 버튼은 이해도를 채점하지 않으며 잘못 표시하면 취소할 수 있어요.






