개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

Permission System — Claude Code 도구 실행 권한 관리

2025년 12월 15일
Claude CodePermission권한보안안전 실행

Claude Code가 파일을 수정하거나 명령을 실행할 때 매번 물어보면 번거롭습니다. 반대로 아무것도 묻지 않고 실행하면 위험할 수 있습니다. Permission System이 이 균형을 맞춥니다.

세 가지 모드

Ask (기본)

Claude Code가 도구를 실행하기 전에 사용자에게 확인을 요청합니다.

Claude: Bash("rm -rf ./dist") 를 실행하려 합니다.
        허용하시겠습니까? [y/N]

처음 접하는 명령이나 위험할 수 있는 작업에 기본 적용됩니다.

Allow

특정 도구나 명령을 자동으로 허용합니다. 매번 확인 없이 실행됩니다.

Deny

특정 도구나 명령을 항상 거부합니다. Claude가 시도해도 실행되지 않습니다.

설정 방법

settings.json에 권한을 설정합니다.

{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git status)",
      "Bash(git log *)",
      "Edit",
      "Read"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force)",
      "Bash(DROP TABLE *)"
    ]
  }
}

Glob 패턴: 와일드카드(*)를 사용해 여러 명령을 한 번에 매칭. "npm run *"은 npm run으로 시작하는 모든 명령을 의미합니다.

도구별 권한

파일 도구

{
  "permissions": {
    "allow": [
      "Read",
      "Edit",
      "Write",
      "Glob",
      "Grep"
    ]
  }
}

파일 읽기/쓰기/검색을 모두 허용합니다. 로컬 개발 환경에서 일반적인 설정입니다.

Bash 명령 세분화

{
  "permissions": {
    "allow": [
      "Bash(npm *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git add *)",
      "Bash(git commit *)"
    ],
    "deny": [
      "Bash(git push *)",
      "Bash(npm publish)"
    ]
  }
}

로컬 작업은 허용하되 원격 작업(push, publish)은 항상 확인하는 설정입니다.

/permissions 명령

claude> /permissions

현재 권한 설정을 확인하고 세션 중에 임시로 조정할 수 있습니다.

/fewer-permission-prompts

claude> /fewer-permission-prompts

반복적으로 허용하는 패턴을 자동으로 감지해 권한 확인 횟수를 줄입니다. 안전한 작업은 이후 자동 허용으로 전환됩니다.

Auto Permission

세션 중에 특정 명령을 항상 허용하도록 설정할 수 있습니다.

Claude: npm run build 를 실행하려 합니다.
        [y] 허용 / [Y] 항상 허용 / [n] 거부

Y(항상 허용)를 선택하면 해당 세션에서 같은 명령은 다시 묻지 않습니다.

프로젝트 환경별 설정

// .claude/settings.json (프로젝트 공유)
{
  "permissions": {
    "allow": ["Read", "Glob", "Grep"],
    "deny": ["Bash(git push *)"]
  }
}
// .claude/settings.local.json (개인 로컬, Git 제외)
{
  "permissions": {
    "allow": [
      "Read", "Edit", "Write",
      "Bash(npm *)", "Bash(git *)"
    ]
  }
}

팀 공유 설정에는 안전한 도구만 허용하고, 개인 로컬 설정에서 개발 편의를 위한 권한을 추가합니다.

CI/CD 환경

자동화 파이프라인에서는 모든 도구를 허용하는 설정을 씁니다.

{
  "permissions": {
    "allow": ["*"]
  }
}

또는 환경변수로 제어합니다.

CLAUDE_SKIP_PERMISSIONS=1 claude --print "테스트 실행하고 결과 보고해줘"

CLAUDE_SKIP_PERMISSIONS: 권한 확인을 건너뛰는 환경변수. CI/CD 환경처럼 사람이 개입할 수 없는 상황에서 씁니다.

권한 설계 원칙

읽기는 넓게, 쓰기는 좁게, 실행은 명시적으로 설정하는 것이 일반적인 원칙입니다.

Read, Glob, Grep    → 모두 허용 (읽기만 하므로 안전)
Edit, Write         → 프로젝트 범위 내 허용
Bash                → 필요한 명령만 명시적 허용
외부 서비스 호출    → 항상 확인 (MCP 도구 등)
← 이전 글CLAUDE.md — Claude Code에 프로젝트 규칙 알려주기
다음 글 →Agent Lifecycle — Claude Code가 작업을 처리하는 순서