Claude Code가 계속 권한을 요청하나요? --dangerously-skip-permissions 없이 해결하기
npm test를 마흔 번째 승인하는 일은 그저 소음일 뿐입니다. Claude Code에는 지루한 프롬프트는 잠재우고 위험한 프롬프트는 남기는 데 필요한 기능이 모두 있습니다. 다만 세 개의 파일과 여섯 개의 모드에 흩어져 있을 뿐입니다.
핵심 요약
항상 승인하는 명령은 permissions.allow에 넣고(예: Bash(npm run *)), 반드시 멈춰야 하는 명령은 ask나 deny에 넣은 다음, 작업에 맞는 권한 모드를 고르세요. 편집이 많을 때는 acceptEdits, 일상적인 작업에는 auto, 코드를 읽을 때는 plan입니다. 규칙은 deny → ask → allow 순서로 확인하므로 deny는 절대 재정의되지 않습니다. /permissions를 사용하면 각 규칙이 어디서 왔는지 볼 수 있습니다. --dangerously-skip-permissions는 쓰고 버릴 컨테이너에서만 사용하세요.
Claude Code가 이렇게 자주 묻는 이유
기본 모드(CLI에서는 Manual로 표시)에서 Claude Code는 각 도구를 처음 사용할 때 프롬프트를 띄우고, 실행이 허용되지 않은 셸 명령마다 다시 묻습니다. 이 프롬프트는 잘못된 rm이나 실수로 실행한 git push를 막을 수 있는 순간이므로 남겨 둘 가치가 있습니다. 문제는 에이전트가 한 세션에서 하는 수많은 무해한 작업에도 프롬프트가 뜬다는 점입니다.
프롬프트가 뜰지는 세 가지가 결정합니다. 설정 파일의 규칙, 현재 권한 모드, 그리고 이전에 "Yes, and don’t ask again"(예, 다시 묻지 않음)으로 했던 응답입니다. 소음을 줄이려면 세 가지를 모두 조정해야 합니다.
Claude Code v2.1.283 이상은 모든 플랜과 제공자에서 대화형 터미널 및 VS Code 세션을 auto 모드로 시작합니다. auto 모드에서는 일상적인 작업마다 프롬프트를 띄우는 대신 백그라운드 분류기가 명령과 네트워크 요청을 사용자의 요청 내용과 대조해 확인합니다. 여전히 모든 작업에 프롬프트가 뜬다면 상태 표시줄을 확인하세요. "⏸ manual mode on"은 기본 모드라는 뜻입니다.
allow, ask, deny 규칙
규칙은 설정 파일의 permissions 아래에 있습니다. 다음 예시는 Anthropic의 설정 레퍼런스에서 그대로 가져온 것입니다.
allow: 묻지 않고 실행합니다.ask: 원래라면 자동 승인되는 모드에서도 항상 묻습니다.deny: 절대 실행하지 않습니다.
중요한 것은 순서입니다. deny, ask, allow 순서로 확인합니다. 처음 일치하는 규칙이 적용되며, 규칙이 얼마나 구체적인지는 순서에 영향을 주지 않습니다. allow 규칙으로 deny 규칙에 예외를 만들 수 없으며, 어느 수준에서든 도구가 거부되면 다른 수준에서 허용할 수 없습니다. 규칙은 모델이 아니라 Claude Code 자체가 적용하므로, CLAUDE.md에 "절대 push하지 말 것"이라고 쓰는 것은 deny 규칙과 같은 효과가 없습니다.
규칙 작성법
| 규칙 | 일치 대상 |
|---|---|
Bash(npm run *) | npm run build, npm run test --watch. npm install은 해당하지 않음 |
Bash(git log *) | git log …만 해당. 반면 Bash(git *)는 모든 git 명령을 허용합니다. |
Bash(ls:*) | Bash(ls *)와 같음. :*는 끝 와일드카드를 쓰는 또 다른 방법입니다 |
Read(./.env) | 해당 파일 읽기. Read 및 Edit 규칙은 gitignore 패턴을 사용합니다 |
Edit(//Users/alice/notes/**) | 절대 경로. 앞에 /가 하나만 있으면 설정 파일 기준 상대 경로이므로, 절대 경로에는 //가 필요합니다 |
WebFetch(domain:example.com) | example.com만 해당. 하위 도메인은 WebFetch(domain:*.example.com)를 추가하세요 |
mcp__github__* | github MCP 서버의 모든 도구. mcp__ 뒤에 괄호가 있는 규칙은 건너뜁니다 |
Windows에서 PowerShell 규칙은 Bash 규칙과 같은 형식을 사용합니다.
어떤 설정 파일을 사용할까
| 범위 | 파일 | 용도 |
|---|---|---|
| 사용자 | ~/.claude/settings.json(Windows: %USERPROFILE%\.claude\settings.json) | 모든 프로젝트에 적용할 나만의 습관 |
| 프로젝트, 공유 | .claude/settings.json | 팀 전체가 받아야 할 규칙(커밋하세요) |
| 프로젝트, 로컬 | .claude/settings.local.json | 한 저장소에서만 쓰는 개인 규칙(커밋하지 않음) |
| 관리형 | managed-settings.json 및 기타 관리형 소스 | 회사 정책. 어떤 설정도 이를 재정의할 수 없음 |
우선순위(높은 순): 관리형, 명령줄, 프로젝트 로컬, 공유 프로젝트, 사용자. permissions.allow 같은 목록 키는 파일 간에 대체되지 않고 합쳐집니다. 많은 사람이 놓치는 세부 사항이 두 가지 있습니다.
- 설정 파일은 엄격한 JSON입니다.
//주석이나 끝에 붙은 쉼표는 구문 오류이며, 파일 전체가 무시됩니다. - 공유 프로젝트 파일의 allow 규칙은 각 팀원이 폴더를 신뢰한 뒤에야 적용됩니다. deny와 ask 규칙은 즉시 적용됩니다.
permissions와 hooks를 포함한 대부분의 수정 사항은 다시 시작하지 않아도 실행 중인 세션에 적용됩니다. 실제로 무엇이 로드되었는지 보려면 /status(Setting sources 줄)나 /permissions를 실행하세요. 후자는 모든 규칙과 그 규칙이 온 파일을 보여 줍니다.
"Yes, and don’t ask again"이 실제로 저장하는 것
프롬프트에 "다시 묻지 않음"으로 답하면 git 저장소 루트의 .claude/settings.local.json에 규칙이 자동으로 기록됩니다. 유지 기간은 도구에 따라 다릅니다.
| 도구 | 기억 기간 |
|---|---|
| Bash 명령 | 영구적, 저장소 및 명령별 |
| 파일 편집 | 세션이 끝날 때까지 |
| WebFetch | 영구적, 저장소 및 도메인별 |
따라서 Claude가 새 세션마다 파일 편집을 요청한다면 의도된 동작입니다. 파일 편집 승인은 세션 단위입니다. 대신 acceptEdits 모드나 Edit(...) allow 규칙을 사용하세요. 그리고 "다시 묻지 않음" 이후에도 어떤 명령이 계속 묻는다면 프로젝트 파일이나 관리형 파일에 ask 규칙이 있는지 찾아보세요. 로컬 파일의 allow 규칙은 그보다 우선하지 않습니다.
권한 모드와 각 모드의 사용 시점
| 모드 | 동작 | 적합한 경우 |
|---|---|---|
default(Manual) | 각 도구를 처음 사용할 때 프롬프트 표시 | 낯선 저장소, 위험한 작업 |
acceptEdits | 묻지 않고 파일 편집 수락 | 나중에 git에서 검토할 긴 리팩터링 |
plan | 읽고 계획만 하며 아무것도 변경하지 않음 | 코드베이스 탐색, 변경 설계 |
auto | 일상적인 프롬프트 없음. 분류기가 명령과 네트워크 요청을 먼저 확인 | 일상 작업 |
dontAsk | 프롬프트를 표시하지 않음 | 스크립트 및 자동화 |
bypassPermissions | .git 및 .claude에 대한 쓰기를 포함해 프롬프트를 건너뜀 | 격리된 컨테이너나 VM 전용 |
Shift+Tab을 누르면 모드가 순환됩니다. auto에서 처음 누르면 default로 가고, 그다음은 default → acceptEdits → plan 순서입니다. 시작 모드는 permissions.defaultMode로 설정합니다. 단, auto와 bypassPermissions는 프로젝트 파일이 아니라 사용자 설정이나 관리형 설정에서만 적용됩니다.
명시적인 ask 규칙, Claude가 사용자에게 하는 질문, 중요한 경로에 대한 rm 등 일부 항목은 bypass를 포함한 모든 모드에서 항상 프롬프트가 뜹니다. 관리자는 permissions.disableBypassPermissionsMode나 permissions.disableAutoMode를 "disable"로 설정해 위험한 모드를 끌 수 있습니다.
--dangerously-skip-permissions에 대해
--dangerously-skip-permissions는 --permission-mode bypassPermissions와 같습니다. Anthropic 문서는 단호합니다. 인터넷에 연결되지 않은 컨테이너, VM, 개발 컨테이너 같은 격리된 환경에서만 사용하라는 것입니다. Linux와 macOS에서는 root로 실행을 거부하며, 경고를 수락하면 사용자 설정에 skipDangerousModePermissionPrompt가 설정됩니다.
실제로 원하는 것이 "지루한 것은 그만 물어보기"라면, auto 모드와 allow 규칙 몇 개만으로 중요한 프롬프트를 포기하지 않고도 그렇게 할 수 있습니다.
샌드박스: 안전망을 갖춘 채 프롬프트 줄이기
Claude Code는 셸 명령을 샌드박스에서 실행할 수 있습니다. 기본적으로 꺼져 있으며, /sandbox나 sandbox.enabled: true로 켭니다. 한 샌드박스 모드는 샌드박스에서 실행되는 명령을 자동으로 승인하고, 다른 모드는 여전히 묻습니다. 샌드박스는 셸 명령만 다룹니다. 파일 도구, MCP 서버, 훅은 샌드박스 밖에서 실행됩니다.
샌드박스는 macOS, Linux, WSL2에서 실행됩니다. 네이티브 Windows에서는 샌드박스가 실행되지 않으며, 명령이 샌드박스 없이 실행됩니다. Windows에서 ask 목록을 짧게라도 유지해야 하는 또 하나의 이유입니다.
잘 작동하는 설정
JavaScript 프로젝트라면 다음이 무난한 출발점입니다. 명령은 사용하는 스택에 맞게 조정하세요.
- 읽기 전용 명령과 테스트 명령으로 allow 목록을 시작합니다.
- 내 컴퓨터 밖으로 나가는 모든 작업(push, publish, deploy)은
ask에 넣습니다. - 비밀 정보는 아예 deny합니다.
- auto나 acceptEdits 모드로 작업하고, 탐색할 때는 plan 모드로 전환합니다.
- 며칠마다
.claude/settings.local.json을 열어 "다시 묻지 않음"이 추가한 규칙을 정리합니다.
남은 프롬프트가 엉뚱한 곳에 뜰 때
조정을 마치면 결정이 필요한 일에 대해서만 질문을 받게 됩니다. 남은 문제는 질문이 나타나는 위치입니다. 브라우저 뒤에 가려진 터미널 탭에 뜨면, 사용자가 알아차릴 때까지 에이전트가 20분이나 기다리게 될 수도 있습니다.
Pet Island는 이런 질문을 화면 상단의 작은 아일랜드로 옮깁니다. Claude Code에 권한이 필요하면 요청이 명령이나 diff와 함께 그곳에 나타나고, 창을 전환하지 않고 허용, 거부, 항상 허용을 선택할 수 있습니다. Claude Code의 질문과 계획도 아일랜드에서 처리할 수 있으며, 아일랜드가 닫혀 있으면 Claude Code는 그냥 터미널에서 묻는 방식으로 돌아갑니다.
자주 묻는 질문
Claude Code가 명령마다 권한을 묻지 않게 하려면 어떻게 하나요?
신뢰하는 명령을 ~/.claude/settings.json의 permissions.allow에 추가하고(예: "Bash(npm run *)"), auto 또는 acceptEdits 모드를 사용하세요. 위험한 명령은 permissions.ask에 남겨 두어 여전히 멈추게 하세요.
다시 묻지 않음을 선택했는데 Claude Code가 파일 편집을 또 묻는 이유는 무엇인가요?
파일 편집 승인은 세션이 끝날 때까지만 유지됩니다. 세션을 넘어 편집을 승인하려면 acceptEdits 모드나 Edit(...) allow 규칙을 사용하세요.
allow 규칙이 deny 규칙을 재정의할 수 있나요?
아니요. 규칙은 deny, ask, allow 순서로 확인하며 처음 일치하는 규칙이 적용됩니다. 어느 수준에서든 거부된 도구는 다른 곳에서 허용할 수 없습니다.
--dangerously-skip-permissions는 안전한가요?
Anthropic은 인터넷에 연결되지 않은 컨테이너나 VM 같은 격리된 환경에서만 사용하도록 권장합니다. 이 옵션은 .git 및 .claude에 대한 쓰기 프롬프트도 건너뜁니다.
"Yes, and don’t ask again"은 규칙을 어디에 저장하나요?
git 저장소 루트의 .claude/settings.local.json에 저장합니다.
Claude Code 샌드박스는 Windows에서 작동하나요?
네이티브 Windows에서는 작동하지 않으며, 명령이 샌드박스 없이 실행됩니다. macOS, Linux, WSL2에서는 실행됩니다.
출처
이 페이지의 모든 설정과 동작은 2026년 10월 26일에 아래 페이지와 대조해 확인했습니다. 에이전트는 빠르게 바뀌므로, 내용이 더 이상 맞지 않으면 공식 페이지를 따르세요.
- Claude Code 문서: Configure permissions(권한 구성)
- Claude Code 문서: Permission modes(권한 모드)
- Claude Code 문서: Settings(설정)
- Claude Code 문서: Settings reference(설정 레퍼런스)
- Claude Code 문서: Sandboxing(샌드박싱)