Claude Code가 매번 권한을 물어서 자동화가 안 된다면. --dangerously-skip-permissions와 allowedTools로 해결하는 방법.
한 줄 요약:claude --dangerously-skip-permissions 플래그 하나로 클로드 코드(Claude Code)의 모든 권한 질문을 없앨 수 있다. 로컬 개인 작업 환경에서만 사용하고, 프로덕션·공유 서버에서는 절대 쓰지 않는다.
Claude Code를 쓰다 보면 파일 하나 고칠 때마다, 명령어 하나 실행할 때마다 "이 작업을 수행할까요?"가 뜬다. 자동화 스크립트에 넣거나 길게 돌려야 할 때는 이 질문들이 전부 블로킹 포인트가 된다. 이 글에서는 권한 모드의 구조를 설명하고, 상황에 맞는 설정 방법을 단계별로 정리한다. 2026년 3월 기준 최신 설정 기준이다.
왜 Claude Code는 매번 물어보는가
Claude Code는 기본적으로 파일 시스템 접근과 셸 명령 실행 전에 사용자 승인을 요구한다. 이유는 하나다. 에이전트가 임의로 파일을 삭제하거나 외부 서비스에 요청을 보내는 것을 방지하기 위해서다.
권한 모드는 4가지다.
모드
파일 편집
셸 명령
외부 API
특징
Ask permissions (기본)
매번 물어봄
매번 물어봄
매번 물어봄
가장 안전, 자동화 불가
Auto accept edits
자동 승인
매번 물어봄
매번 물어봄
파일 편집만 자동
Plan mode
읽기 전용
실행 안 함
읽기만
계획만 보고 실행은 직접
dangerously-skip-permissions
자동 승인
자동 승인
자동 승인
전부 자동, 위험 있음
클로드 코드 완전 자동화 #1 — 권한 질문 없이 실행하기 — AI 코딩 도구 작업 화면 (출처: 공식 문서 및 벤치마크 데이터 기반)
📌 참고: Auto accept edits는 파일 편집은 넘기지만 npm install, git push 같은 셸 명령은 여전히 승인을 요구한다. 완전 자동화가 목적이라면 이 모드로는 부족하다.
--dangerously-skip-permissions 상세 분석
이 플래그는 Claude Code가 다음 작업들의 승인 요청을 전부 건너뛰게 한다.
파일 생성, 수정, 삭제
셸 명령 실행 (bash, npm, python, git 등)
MCP 서버를 통한 외부 API 호출
디렉토리 탐색 및 읽기
이름에 "dangerously"가 붙은 이유는 명확하다. Claude가 내리는 판단이 잘못되었을 때 사용자가 개입할 기회 자체가 없어진다. 예를 들어 프롬프트를 잘못 작성하면 의도하지 않은 파일이 삭제되거나, 외부로 데이터가 전송될 수 있다.
기본 실행 방법
# 현재 디렉토리에서 권한 질문 없이 실행
claude --dangerously-skip-permissions
# 특정 작업을 바로 실행 (headless)
claude -p "package.json의 의존성을 최신 버전으로 업데이트해줘" --dangerously-skip-permissions
⚠️ 막히는 케이스: 공유 개발 서버, CI/CD 파이프라인, Docker 컨테이너에서 이 플래그를 쓰는 경우가 있다. 해당 환경에서 Claude가 의도하지 않은 파일을 건드리거나 외부 요청을 보낼 경우 복구가 어렵다. 프로덕션 환경에서는 절대 사용하지 않는다. 로컬 개인 작업, 테스트 환경에서만 사용해야 한다.
이 플래그를 써도 되는 상황과 쓰면 안 되는 상황을 명확히 구분한다.
상황
사용 여부
이유
로컬 개인 프로젝트
OK
본인만 영향, git으로 롤백 가능
테스트용 VM/컨테이너
OK
격리된 환경, 실환경에 영향 없음
CI/CD 파이프라인 (읽기 전용)
조건부 OK
allowedTools로 범위 제한 시에만
프로덕션 서버
NO
임의 파일 삭제, 서비스 중단 위험
공유 개발 환경
NO
다른 사람 작업에 영향
외부 API 키가 있는 환경
NO
API 남용, 비용 폭탄 위험
클로드 코드 완전 자동화 #1 — 권한 질문 없이 실행하기 — 프로젝트 구조와 빌드 흐름 (출처: 공식 문서 및 벤치마크 데이터 기반)
allowedTools로 필요한 것만 허용하기
--dangerously-skip-permissions가 너무 광범위하다면, 허용할 도구만 명시하는 방법이 더 안전하다. 두 가지 방법이 있다.
방법 1: CLI 플래그로 지정 (일회성)
실행 시 --allowedTools 플래그로 허용할 도구 목록을 지정한다. 지정하지 않은 도구는 기본값(물어봄)으로 동작한다.
--allowedTools 플래그 사용 예시
# Python 실행과 파일 편집만 자동 승인
claude -p "테스트를 실행하고 실패한 케이스를 수정해줘" \
--allowedTools "Bash(python *),Edit,Write"
# npm 명령과 파일 편집만 자동 승인
claude -p "의존성 설치 후 빌드해줘" \
--allowedTools "Bash(npm *),Edit,Write,Read"
# git 명령만 자동 승인
claude -p "변경사항을 커밋해줘" \
--allowedTools "Bash(git *)"
방법 2: settings.json으로 영구 설정
매번 플래그를 붙이기 번거롭다면 설정 파일에 고정해둘 수 있다. permissions.allow 배열에 허용할 도구를 추가한다.
Headless 모드는 claude -p 플래그로 프롬프트를 직접 전달하고 결과를 받는 방식이다. 터미널 인터랙션 없이 스크립트 안에서 Claude를 호출할 때 쓴다.
셸 스크립트, cron job, CI/CD에서 Claude를 도구처럼 호출하는 게 목적이라면 이 모드가 맞다.
Headless 모드 기본 사용법
# 단일 작업 실행 (-p = --print, non-interactive)
claude -p "현재 디렉토리의 TODO.md를 읽고 완료된 항목을 체크해줘" \
--allowedTools "Read,Edit"
# 출력 결과를 파일로 저장
claude -p "src/ 디렉토리의 함수 목록을 정리해줘" \
--allowedTools "Read" \
> function-list.txt
# 환경변수로 API 키 지정 (CI/CD 환경)
ANTHROPIC_API_KEY=$SECRET_KEY \
claude -p "린트 에러를 수정해줘" \
--allowedTools "Bash(npm run lint),Edit"
⚠️ 막히는 케이스: Headless 모드에서 Claude가 중간에 clarification을 요청하면 응답 없이 멈출 수 있다. 프롬프트를 작성할 때 "모르는 게 있으면 가장 합리적인 방법으로 진행해줘"를 명시적으로 포함하거나, 작업 범위를 충분히 구체화해야 한다.
설정 전 체크리스트
권한 자동화 설정 전에 아래 항목을 확인한다.
작업 환경이 로컬 또는 격리된 테스트 환경인가?
git 저장소가 초기화되어 있어 롤백이 가능한가?
외부 API 키나 민감한 환경변수가 포함된 환경인가? (포함되어 있다면 allowedTools로 Bash 범위를 제한)
의도하지 않은 파일이 삭제되어도 복구할 수 있는가?
--dangerously-skip-permissions 대신 --allowedTools로 범위를 좁힐 수 있는가?
💡 팁: 처음 자동화를 설정할 때는 --dangerously-skip-permissions 대신 --allowedTools "Read,Edit,Write"로 시작하는 게 좋다. 셸 명령 없이 파일 편집만 자동화해도 대부분의 반복 작업은 해결된다. 셸 명령이 실제로 필요해진 시점에 범위를 넓힌다.