CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS: 설정과 점검
Claude Code v2.1.311+에서는 bypassPermissions 모드의 중요 경로 삭제 확인을 생략할 수 있습니다. 시작 환경에만 적용되는 변수 설정, 세 가지 시작 메시지, 적용되지 않는 아홉 가지 원인, 팀과 CI를 위한 관리형 정책 및 샌드박스 통제를 설명합니다.
목차

개발용 머신과 공유 CI 러너에서는 CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS를 설정하지 않는 것이 좋습니다. Claude Code v2.1.311+에서는 세션이 bypassPermissions를 사용할 때만 중요 경로 삭제 전에 표시되는 특정 확인 절차를 생략합니다. 쓰기 가능한 파일을 모두 잃어도 되는 격리된 일회용 환경에서만 사용합니다.
2026-10-28 기준 Anthropic 문서에서는 이 변수를 시작 환경에서 읽는 설정으로 설명합니다. 이 설정이 자동으로 권한 우회 모드를 켜거나 다른 모든 권한 통제를 끄지는 않습니다.
위험 모드에서도 rm -rf ~가 차단되는 이유
Claude Code는 인식한 rm 및 rmdir 명령의 대상을 일반적인 도구 승인과 별도로 검사합니다. --dangerously-skip-permissions 플래그는 bypassPermissions를 선택합니다. 하지만 새 설정이 적용되기 전까지는 이 모드에서도 중요 경로 검사가 유지됩니다.
Claude Code가 삭제 대상을 중요 경로로 인식했다면, allow 규칙으로도 해당 삭제를 승인할 수 없습니다. allow를 반환하는 PreToolUse 후크도 마찬가지입니다. 기본적으로 터미널은 승인을 요청하며 2분 동안 카운트다운을 표시합니다.
-p로 실행할 때는 권한 도구, SDK 콜백 또는 승인을 허용하는 PermissionRequest 후크가 작업의 허용 여부를 결정할 수 있습니다. 이런 처리 수단이 없으면 기본 결과는 거부입니다.
중요 경로 정의에 포함되는 대상은 다음과 같습니다.
/와 같은 파일 시스템 루트입니다./usr,/etc,/data등 루트 바로 아래의 디렉터리입니다.- 홈 디렉터리입니다. Windows 8.3 짧은 이름도 포함하며,
C:\Users\LONGNA~1이 그 예입니다. - Windows 드라이브 루트와 바로 아래의 디렉터리입니다. 예로
C:\와C:\Windows가 있으며,\\?\C:\및\\localhost\C$같은 루트 표기도 포함됩니다. - 현재 작업 디렉터리와 그 상위 디렉터리들입니다.
- 추가 작업 디렉터리와 그 상위 디렉터리들입니다. 단,
rm -rf <dir>/*처럼 그 아래를 가리키는 글로브 패턴인 경우에만 해당합니다. 글로브는 와일드카드로 경로를 지정하는 패턴입니다.
rm -rf <dir>로 추가 디렉터리 자체를 삭제하면 추가 디렉터리에 대한 이 검사가 실행되지 않습니다. 해당 디렉터리가 루트 바로 아래에 있는 경우처럼 다른 규칙은 여전히 적용될 수 있습니다.
이 검사는 Claude Code가 인식하는 명령에 적용됩니다. 놓친 명령에는 특별한 보호가 없으며, 승인된 다른 프로그램도 파일을 삭제할 수 있습니다. PowerShell의 Remove-Item과 cmd의 삭제 명령에는 별도의 검사가 있습니다.
격리된 터미널 세션 하나에만 설정하기
claude를 시작하는 환경에 변수를 설정하고 bypassPermissions를 명시적으로 선택합니다. 폐기 가능한 작업 디렉터리를 의도적으로 비우는 자동화 작업이 적절한 사용 사례입니다.
정상 작동하고 인증이 완료된 v2.1.311 이상의 CLI가 필요합니다. macOS, Linux 또는 WSL의 Bash에서 다음을 확인합니다.
claude --version
claude auth status --text
인증에 실패하면 승인된 계정 설정에 맞춰 claude auth login을 실행합니다. 잘못된 바이너리가 실행된다면 Claude Code 설치와 PATH 확인 절차를 따릅니다. 이전 버전이라면 먼저 업데이트합니다.
Bash의 임시 변수 할당으로 원하는 세션을 시작합니다.
CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1 \
claude --permission-mode bypassPermissions
이 할당은 지금 실행하는 명령과 그 명령에서 시작한 자식 프로세스에만 적용됩니다. 이를 실행한 부모 셸에는 해당 할당이 저장되어 남지 않습니다. --permission-mode bypassPermissions 대신 --dangerously-skip-permissions를 사용할 수도 있습니다.
격리 환경에서도 루트가 아닌 사용자로 실행합니다. Linux와 macOS에서는 일반적으로 루트 또는 sudo를 통한 권한 우회 모드 실행을 거부합니다. 인식된 샌드박스에는 예외가 있습니다.
이 변수를 ~/.claude/settings.json, .claude/settings.json, .claude/settings.local.json의 env 블록에 넣지 않습니다. 환경 변수 문서에서는 이 위치의 설정을 Claude Code가 무시한다고 명시합니다. 이 변수는 시작 환경에서만 읽습니다. 따라서 설정 파일의 종류나 설정 범위를 바꾸는 방식으로는 적용할 수 없습니다.
실제 세션 모드가 bypassPermissions일 때만 이 설정이 적용되며, plan에서는 적용되지 않습니다. 대상은 Bash 및 Monitor 도구의 중요 경로 검사입니다. 해당 검사가 완전히 구문 분석하지 못하는 명령도 포함됩니다.
이미 내보낸 변수를 제거하려면 해당 세션을 종료하고 시작 시 값을 지정하는 원본에서 할당을 삭제합니다. 셸에서 unset CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS를 실행한 뒤 새 세션을 시작합니다.
삭제 없이 시작 메시지 확인하기
Claude Code의 시작 메시지로 이 설정이 적용될 수 있는 상태인지 확인합니다. 모델이 정상 응답했다는 사실만으로 권한 상태를 판단할 수는 없습니다.
격리 환경에서 간단히 진단하려면 Bash에서 다음을 실행합니다.
CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1 \
claude --permission-mode bypassPermissions \
--tools "" --disallowedTools "mcp__*" \
-p "Reply with READY." 2>claude-startup.log
grep -F 'CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS' claude-startup.log
이 진단의 CLI 플래그는 기본 제공 도구를 제외하고 MCP 도구를 거부합니다. 모델이 호출할 수 있는 도구를 제한하는 설정입니다. 시작 후크와 확장 기능은 여전히 로드됩니다.
명령은 stdout에 READY라는 응답을 요청합니다. 삭제를 요청하지 않고 시작 시 stderr 출력을 claude-startup.log에 저장합니다.
문서에 나온 시작 메시지에는 다음 세 문구 중 하나가 포함됩니다.
| 메시지 일부 | 의미 |
|---|---|
is set, so dangerous rm commands can run without a prompt | 관리형 설정과 플러그인 후크가 로드되면 삭제 확인 생략이 적용될 수 있습니다. 관련 규칙이나 후크가 여전히 적용을 막을 수 있습니다. |
has no effect in this session | 이 세션 전체에서 기존 확인 또는 거부가 유지됩니다. 원인을 해결한 뒤 다시 시작합니다. |
has no effect while the Windows registry cannot be read for managed settings | 레지스트리 조회가 실패하는 동안 기존 검사가 유지됩니다. 이후 조회에 성공하면 재시작 없이 설정이 활성화될 수 있습니다. |
Agent SDK 애플리케이션에서는 메시지를 받도록 stderr 옵션을 지정합니다. 출력이 없다고 중요 경로 확인이 활성 상태라고 단정해서는 안 됩니다. 시작 변수가 상속되었는지, 현재 권한 모드가 무엇인지, 세션이 간접적으로 시작되었는지 확인합니다.
메시지가 나오기 전에 진단이 종료되면, 권한 모드를 바꾸기 전에 시작 오류부터 확인합니다. 이 단계에서 확인할 인증이나 구성 오류는 해당 삭제 확인 설정과 별개의 문제입니다.
설정이 적용되지 않는 아홉 가지 이유
다른 구성을 바꾸기 전에 버전, 시작 환경, 활성 모드를 확인합니다. 그런 다음 문서에 명시된 예외 중 해당하는 원인을 찾습니다.
다음은 각각 별개의 원인입니다. 팀이 의도적으로 설정한 보호 조치는 유지합니다.
| 원인 | 확인 사항과 조치 |
|---|---|
| 1. 다른 구성 요소가 승인 요청을 처리합니다 | --permission-prompts none 없이 사용하는 --permission-prompt-tool 또는 SDK의 canUseTool 콜백을 확인합니다. 매칭 조건에 관계없이 모든 PermissionRequest 후크와 해당 이벤트를 처리하는 mod도 확인합니다. 의도하지 않은 처리기를 제거한 뒤 다시 시작합니다. |
| 2. 그래픽 채팅 패널에서 실행 중입니다 | VS Code 확장의 채팅 패널과 Desktop 앱에서는 이 설정이 적용되지 않습니다. 직접 연 터미널에서 CLI를 시작합니다. IDE의 통합 터미널도 사용할 수 있습니다. |
3. deny 또는 ask 규칙이 Bash, Edit, Read를 대상으로 합니다 | 삭제와 무관한 규칙이라도 이 설정을 비활성화합니다. 규칙을 한 번 읽으면 나중에 제거해도 해당 세션이 끝날 때까지 비활성 상태가 유지됩니다. 승인된 규칙 변경 후에는 다시 시작해야 합니다. 도구를 제외하려면 deny 규칙 대신 --tools를 사용합니다. |
| 4. 작업 디렉터리 밖의 읽기를 차단합니다 | permissions.blockReadsOutsideWorkingDirectories를 확인합니다. 의도적으로 이 제한을 해제하려면 이 키를 true로 지정한 설정을 모두 제거하고 다시 시작합니다. |
| 5. 다른 세션 안에서 Claude Code를 시작했습니다 | 다른 세션의 Bash 도구나 후크로 시작하면 기존 검사가 유지됩니다. 명령줄에 변수를 지정해도 같습니다. 직접 연 셸에서 시작합니다. 이 중첩 세션 제한은 보안 경계가 아닙니다. |
6. PreToolUse 후크가 ask를 반환합니다 | 해당 삭제에 대한 후크의 결정을 확인합니다. 의도하지 않은 ask 응답을 수정합니다. allow 응답만으로 일반적인 중요 경로 검사를 우회할 수는 없습니다. |
| 7. Claude Code가 세션을 만들었습니다 | Claude Code가 만든 백그라운드 세션에는 변수가 전달되지 않습니다. 분할 창에서 실행하는 에이전트 팀원 세션과 Remote Control 서버가 만든 세션도 같습니다. 이 설정이 필요하면 터미널에서 직접 세션을 시작합니다. |
| 8. 관리형 설정을 정상적으로 로드하지 못했습니다 | 관리자에게 문제가 있는 설정 소스를 복구하도록 요청합니다. 서버 관리형 설정을 가져오는 오류는 claude doctor로 조사합니다. 레지스트리 조회 실패는 다음 행과 같이 별도로 동작합니다. |
| 9. Windows 레지스트리 조회가 실패합니다 | Windows와 WSL 모두에 해당하며, WSL이 레지스트리 설정을 사용하지 않아도 적용됩니다. 상호 운용 기능 비활성화, 영어 이외의 언어를 사용하는 Windows, WSL2 커널의 컨테이너 등이 원인입니다. 허용된 경우에만 상호 운용 기능을 복구합니다. 그렇지 않으면 필요한 정리를 직접 수행합니다. |
승인된 변경 후 시작 메시지 확인을 반복합니다. Windows 후크가 예상과 다르게 동작하면 권한 정책을 바꾸기 전에 실행 중인 바이너리와 Windows 후크 점검을 진행합니다.
시작 환경을 점검하고 팀 정책 적용하기
구성 파일과 Claude Code를 시작하는 프로세스의 환경을 함께 점검합니다. 저장소 검색에서 결과가 없다는 이유만으로 해당 변수가 없다고 판단하지 않습니다. 호스팅형 CI 서비스가 실행 시 별도로 환경 변수를 주입할 수 있기 때문입니다.
저장된 설정을 찾고 CI에서 실행 차단하기
파일 내용을 출력하지 않고 저장소와 일반적인 셸 프로필을 검색합니다. 다음 Bash 예제는 ripgrep이 필요하며, 해당 문자열이 포함된 파일의 이름만 출력합니다.
audit_paths=(.)
for audit_path in \
"$HOME/.bashrc" "$HOME/.bash_profile" "$HOME/.profile" \
"$HOME/.zshrc" "$HOME/.zprofile" "$HOME/.zshenv"
do
if [[ -f "$audit_path" ]]; then
audit_paths+=("$audit_path")
fi
done
rg -l --hidden --no-ignore -F \
-g '!.git/**' -g '!node_modules/**' \
'CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS' \
"${audit_paths[@]}"
검색 결과를 검토한 뒤 변경합니다. 문서에 변수 이름이 적혀 있어도 실제로 그 변수를 내보내고 있다는 뜻은 아닙니다. 프로필에서 불러오는 다른 파일, 실행 스크립트, 컨테이너 정의, 환경 파일도 검색합니다.
CI 변수의 조직, 저장소, 환경, 작업 범위를 모두 확인합니다. 러너 서비스의 환경과 Claude Code 실행 전에 변수를 바꾸는 단계도 점검합니다. 전체 환경을 로그에 출력하지 않습니다.
관리되는 CI 실행 스크립트에서 Claude Code 호출 바로 앞에 다음 Bash 검사를 넣습니다.
if [[ -n "${CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS+x}" ]]; then
printf '%s\n' 'Refusing Claude Code launch: critical-path override variable is set.' >&2
exit 1
fi
이 검사는 변수의 활성화 값을 판별하는 대신, 변수 자체가 설정되어 있는지를 확인합니다. 값이 비어 있거나 0이어도 실행을 거부합니다. 보수적으로 정한 실행 정책이며, 모든 값이 기능을 활성화한다는 뜻은 아닙니다. 이 검사를 거치지 않고 실행하는 별도 스크립트에는 보호가 적용되지 않습니다.
관리형 설정으로 권한 우회 모드 비활성화하기
팀에 필요하지 않다면 권한 우회 모드를 차단합니다. 삭제 확인 생략에는 이 모드가 필요하므로, 차단하면 필수 조건이 사라집니다. 관리형 설정의 env 블록으로는 시작 환경에서만 읽는 변수를 무력화할 수 없습니다.
조직에서 현재 적용 중인 관리형 설정에 다음 제어 항목을 병합합니다.
{
"permissions": {
"disableBypassPermissionsMode": "disable"
}
}
파일로 배포할 때는 다음 위치를 사용합니다.
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json - Linux 및 WSL:
/etc/claude-code/managed-settings.json - Windows:
C:\Program Files\ClaudeCode\managed-settings.json
Claude Code를 다시 시작하고 /status를 확인합니다. Setting sources에 의도한 관리형 소스가 표시되는지 확인합니다. 설정 적용 후에는 새 세션에서 bypassPermissions 모드로 들어가려는 시도가 거부되어야 합니다.
배포 전에 선택된 소스를 점검합니다. 우선순위가 더 높은 관리형 소스가 배포한 파일을 대체할 수 있습니다. 장치 관리 체계로 정책을 보호합니다. 로컬 관리자 권한이 있으면 파일 기반 정책을 수정할 수 있습니다.
deny 규칙과 샌드박스의 보호 범위 비교
파일 시스템 접근 범위는 운영체제의 격리 기능으로 제한하고, 개별 도구 호출은 권한 규칙으로 통제합니다. 중요 경로 확인은 추가 검사이며 파일 시스템 전체를 보호하지는 않습니다.
유용한 deny 규칙은 유지합니다. 다만 Bash 규칙 문서 설명처럼 규칙은 명령 텍스트를 기준으로 일치 여부를 판단합니다. Bash(rm *)는 모든 호출 방식이나 파일을 삭제하는 다른 프로그램까지 포함하지 않습니다. 확장 기능도 권한 결정에 영향을 줄 수 있으므로 설치된 후크와 mod를 점검합니다.
지원되는 macOS, Linux, WSL2 시스템에서는 다음 샌드박스 설정을 관리형 정책에 병합합니다.
{
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false
}
}
이 구성은 샌드박스를 사용할 수 없으면 시작을 차단하고, 샌드박스 밖에서 다시 실행하는 시도를 비활성화합니다. 네이티브 Windows는 이 샌드박스를 지원하지 않으므로 해당 정책을 적용하면 시작이 차단됩니다.
/sandbox에서 실제 적용된 구성과 의존성을 확인합니다. excludedCommands와 쓰기 가능한 경로를 점검합니다. 엄격 모드에서도 제외 항목은 허용되며, 사용자 설정이나 --settings가 일부 목록을 확장할 수 있습니다.
샌드박스 안의 명령도 쓰기 가능한 프로젝트 데이터를 삭제할 수 있습니다. 기본 격리 경계가 모든 후크, 로컬에서 시작한 MCP 서버, 파일 도구까지 포함하는 것은 아닙니다.
무인 작업에 더 넓은 경계가 필요하면 Claude Code 프로세스 전체 격리 안내에 따라 컨테이너, VM 또는 샌드박스 런타임으로 격리합니다. 호스트의 중요한 경로를 쓰기 가능한 상태로 마운트하지 않습니다. 작업 복사본은 다시 만들 수 있게 유지합니다.