Claude Code의 권한 모드(--dangerously-skip-permissions 등)와 자동 수락 전략 — 빠른 자동화와 안전성의 균형.
권한 모드 — 얼마나 자율적으로 실행할 것인가
Claude Code는 파일 편집, 터미널 명령 실행, 외부 서비스 접근 등 실제 시스템에 영향을 주는 작업을 합니다. 이 때문에 각 행동 전에 사용자에게 승인을 요청하는 것이 기본 동작입니다. 그러나 자동화 파이프라인에서는 이 승인 프롬프트가 흐름을 막습니다. 권한 모드를 이해하고 상황에 맞게 설정하는 것이 안전하고 효율적인 자동화의 핵심입니다.
허용 도구 지정: --allowedTools
가장 안전한 자동화 방법은 Claude가 사용할 수 있는 도구를 명시적으로 제한하는 것입니다.
# 읽기 전용 작업 — 파일 수정 불가
claude -p "프로젝트 구조를 분석하고 아키텍처 문서를 작성해줘" \
--allowedTools "Read,Glob,Grep" \
--output-format json
# 편집 허용 — 터미널 실행은 불가
claude -p "TypeScript 타입 오류를 모두 수정해줘" \
--allowedTools "Read,Edit,Write,Glob,Grep"
# 완전 자동화 — 터미널까지 허용
claude -p "테스트 실패를 수정하고 다시 통과시켜줘" \
--allowedTools "Read,Edit,Write,Glob,Grep,Bash"
도구를 최소한으로 제한할수록 안전합니다. CI 환경에서는 작업 성격에 맞는 최소 권한 원칙을 적용하세요.
자동 수락 패턴: --dangerouslySkipPermissions
신뢰할 수 있는 환경(격리된 Docker 컨테이너, CI 샌드박스)에서 모든 승인 프롬프트를 건너뛰려면 이 플래그를 사용합니다.
# 주의: 격리된 환경에서만 사용
claude -p "전체 코드베이스 린트 오류 수정" \
--dangerouslySkipPermissions \
--allowedTools "Read,Edit,Glob,Grep,Bash"
이름에 dangerously가 붙은 이유가 있습니다. 로컬 개발 환경에서 잘못된 작업을 자동 수락하면 복구 불가능한 변경이 생길 수 있습니다. 반드시 git으로 관리되는 환경에서만 사용하고, 실행 전 git stash로 현재 상태를 저장하는 습관을 들이세요.
settings.json으로 영구 권한 설정
매번 플래그를 붙이는 대신, 프로젝트별 설정 파일로 기본 권한을 지정할 수 있습니다.
// .claude/settings.json
{
"permissions": {
"allow": [
"Bash(npm run test*)",
"Bash(npm run lint*)",
"Bash(git diff*)",
"Bash(git log*)",
"Edit(*)"
],
"deny": [
"Bash(git push*)",
"Bash(rm -rf*)",
"Bash(curl*)"
]
}
}
이 설정은 테스트·린트·git 조회는 자동 허용, 외부 네트워크 요청과 파괴적 명령은 차단합니다. 팀 공유 프로젝트에서 .claude/settings.json을 커밋하면 모든 팀원이 동일한 권한 기준을 공유합니다.
환경별 권한 전략
- 로컬 개발 (탐색·실험): 기본 대화형 모드. 각 행동마다 확인. 실수 시 git으로 복구 가능.
- 로컬 자동화 (스크립트): settings.json으로 안전한 명령만 자동 허용. 위험 명령(push, rm)은 차단.
- CI/CD 파이프라인: Docker 컨테이너 격리 +
--dangerouslySkipPermissions. 코드 변경은 PR로만 반영. - 프로덕션 연동 작업: 사람 승인(human-in-the-loop) 체크포인트 필수. 자동화로 초안 생성 → 사람 검토 → 수동 실행.
작업별 최소 권한 체크리스트
# 코드 분석만 → Read, Glob, Grep
# 코드 수정 → + Edit, Write
# 빌드/테스트 실행 → + Bash(npm*)
# git 조회 → + Bash(git log*, git diff*, git status*)
# git 커밋 → + Bash(git add*, git commit*)
# 패키지 설치 → + Bash(npm install*)
# git push → ⚠️ 신중히, 격리 환경에서만
권한 설정의 황금률: 작업에 필요한 최소 권한만 부여하되, 팀과 공유하는 settings.json에 기록하라. "어제는 됐는데 왜 안되지?"를 방지하는 것은 문서화된 권한 정책입니다.
핵심 정리
- --allowedTools로 사용 가능한 도구를 명시적으로 제한 — 최소 권한 원칙이 자동화 안전성의 기본
- --dangerouslySkipPermissions는 격리 환경(CI Docker)에서만, 로컬에서는 settings.json의 allow/deny 규칙으로 세밀하게 제어
- 환경(로컬·CI·프로덕션)별로 다른 권한 전략 적용 — settings.json을 커밋해 팀 전체가 동일 기준 공유
관련 검색어 · 클로드 코드 · Claude Code · 클로드 코드 권한 설정 · allowedTools · dangerouslySkipPermissions · settings.json 자동화 · 안전한 AI 자동화