Logo
본문으로 이동
중급12분 소요settingsenvironment-variablesconfiguration

설정 및 환경변수

읽는 시간: 12분 | 난이도: 중급

Claude Code의 설정 파일 구조, 권한 시스템, 환경변수를 이해하고 프로젝트와 팀에 맞게 최적화하는 방법을 알아봅니다.

설정 스코프 시스템

Claude Code는 5단계 스코프 시스템으로 설정을 관리합니다. 각 스코프는 적용 범위와 우선순위가 다릅니다.

스코프 종류

스코프 위치 적용 대상 팀 공유
Managed 서버 관리형 설정, plist/레지스트리, 또는 시스템 수준 managed-settings.json 머신의 모든 사용자 예 (IT 배포)
User ~/.claude/settings.json 모든 프로젝트의 나 아니오
Project .claude/settings.json 이 저장소의 모든 협업자 예 (git 커밋)
Local .claude/settings.local.json 이 저장소의 나만 아니오 (gitignore)
CLI 플래그 커맨드라인 인수 현재 세션만 아니오

스코프별 용도

Managed 스코프는 다음에 적합합니다:

  • 조직 전체에 적용해야 하는 보안 정책
  • 재정의할 수 없는 컴플라이언스 요구사항
  • IT/DevOps가 배포하는 표준화된 설정

User 스코프는 다음에 적합합니다:

  • 모든 프로젝트에서 원하는 개인 설정
  • 프로젝트 전반에서 사용하는 플러그인
  • API 키 및 인증 정보

Project 스코프는 다음에 적합합니다:

  • 팀이 공유하는 설정 (권한, 훅, MCP 서버)
  • 팀 전체가 사용해야 하는 플러그인
  • 협업자 간 툴링 표준화

Local 스코프는 다음에 적합합니다:

  • 특정 프로젝트에서의 개인 재정의
  • 팀과 공유하기 전 설정 테스트
  • 다른 사람에게는 작동하지 않는 머신 고유 설정

스코프 우선순위

동일한 설정이 여러 스코프에 설정된 경우, 더 구체적인 스코프가 우선합니다:

  1. Managed (최고) — 어떤 것으로도 재정의 불가
  2. CLI 플래그 — 특정 세션에 대한 임시 재정의
  3. Local (.claude/settings.local.json) — 프로젝트 및 사용자 설정을 재정의
  4. Project (.claude/settings.json) — 사용자 설정을 재정의
  5. User (~/.claude/settings.json) (최저) — 다른 설정이 없을 때 적용

예를 들어, 사용자 설정에서 권한이 허용되었지만 프로젝트 설정에서 거부되었다면, 프로젝트 설정이 우선하여 해당 권한이 차단됩니다.


설정 파일 구조

settings.json은 Claude Code를 계층적으로 설정하는 공식 메커니즘입니다.

파일 위치 요약

~/.claude/
├── settings.json          # User 스코프 (모든 프로젝트에 적용)
└── CLAUDE.md              # 전역 지침 파일

프로젝트/
├── .claude/
│   ├── settings.json      # Project 스코프 (팀과 공유, git 커밋)
│   ├── settings.local.json # Local 스코프 (개인용, gitignore)
│   └── agents/            # 프로젝트 서브에이전트 정의
├── CLAUDE.md              # 프로젝트 지침
└── .claudeignore          # 파일 제외 설정

settings.json 기본 형식

{
  "permissions": {
    "allow": [
      "Bash(git *)",
      "Bash(npm run *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Read(./.env)"
    ],
    "defaultMode": "acceptEdits"
  },
  "env": {
    "NODE_ENV": "development"
  },
  "hooks": {
    "PostToolUse": [...]
  }
}

권한 설정 (Permissions)

권한 설정은 Claude가 어떤 도구를 어떤 조건으로 사용할 수 있는지 제어합니다.

permissions 구조

설명 예시
allow 도구 사용을 허용하는 규칙 배열 ["Bash(git diff *)"]
ask 확인을 요청하는 규칙 배열 ["Bash(git push *)"]
deny 도구 사용을 거부하는 규칙 배열 ["WebFetch", "Bash(curl *)"]
additionalDirectories Claude가 접근할 수 있는 추가 작업 디렉토리 ["../docs/"]
defaultMode Claude Code 시작 시 기본 권한 모드 "acceptEdits"
disableBypassPermissionsMode bypassPermissions 모드 비활성화 "disable"

권한 규칙 문법

규칙은 Tool 또는 Tool(specifier) 형식을 따릅니다. 규칙 평가 순서: deny 먼저, 그 다음 ask, 마지막으로 allow. 첫 번째로 매칭되는 규칙이 적용됩니다.

기본 예시:

규칙 효과
Bash 모든 Bash 명령 매칭
Bash(npm run *) npm run으로 시작하는 명령 매칭
Read(./.env) .env 파일 읽기 매칭
WebFetch(domain:example.com) example.com에 대한 fetch 요청 매칭

도구별 패턴 예시:

{
  "permissions": {
    "allow": [
      "Bash(git *)",
      "Bash(npm run *)",
      "Bash(pytest *)",
      "Read(**)",
      "WebFetch(domain:github.com)"
    ],
    "ask": [
      "Bash(git push *)",
      "Bash(git merge *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(curl *)",
      "WebFetch",
      "Read(./.env)",
      "Read(./secrets/**)"
    ]
  }
}

MCP 도구 패턴:

{
  "permissions": {
    "allow": [
      "mcp__filesystem__read_file",
      "mcp__github__*"
    ],
    "deny": [
      "mcp__dangerous-server__*"
    ]
  }
}

Skill 도구 패턴:

{
  "permissions": {
    "allow": [
      "Skill(deploy *)",
      "Skill(test *)"
    ]
  }
}

서브에이전트(Task) 제한:

{
  "permissions": {
    "deny": [
      "Task(dangerous-agent)"
    ]
  }
}

/permissions 명령어

Claude Code 내부에서 /permissions 명령어로 현재 권한 설정을 확인하고 대화형으로 관리할 수 있습니다. /allowed-tools 명령어도 권한 규칙 설정에 사용할 수 있습니다.

현재 설정 확인

/status 명령어로 활성화된 설정 소스와 출처를 확인할 수 있습니다. 각 설정 레이어(managed, user, project)와 함께 출처 정보(Enterprise managed settings (remote), Enterprise managed settings (plist) 등)가 표시됩니다. 설정 파일에 오류가 있으면 /status가 문제를 보고합니다.


주요 설정 항목

전체 settings.json 설정 키

설명 예시
apiKeyHelper 인증 값을 생성하는 커스텀 스크립트 (/bin/sh에서 실행) "/bin/generate_temp_api_key.sh"
cleanupPeriodDays 이 기간보다 오래된 비활성 세션 삭제 (기본: 30일) 20
companyAnnouncements 시작 시 사용자에게 표시할 공지 ["코드 가이드라인: docs.acme.com"]
env 모든 세션에 적용할 환경변수 {"FOO": "bar"}
attribution git 커밋 및 PR의 저작자 표기 커스터마이징 아래 참조
includeCoAuthoredBy Deprecated: attribution 사용 권장. git 커밋/PR에 co-authored-by Claude 포함 여부 (기본: true) false
permissions 권한 설정 (위 표 참조) -
hooks 생명주기 이벤트에 실행할 커스텀 명령 설정 -
disableAllHooks 모든 훅 및 커스텀 상태 표시줄 비활성화 true
language Claude 응답 기본 언어 설정 "japanese", "korean"
autoUpdatesChannel 업데이트 릴리즈 채널 ("stable" 또는 "latest") "stable"
fileSuggestion @ 파일 경로 자동완성 커스텀 명령 설정 아래 참조
enabledPlugins 활성화/비활성화할 플러그인 목록 아래 참조
extraKnownMarketplaces 추가 플러그인 마켓플레이스 정의 아래 참조

샌드박스 설정 (sandbox)

샌드박싱은 Bash 명령을 파일시스템 및 네트워크에서 격리합니다. 파일시스템/네트워크 제한은 Read, Edit, WebFetch 권한 규칙으로 설정합니다.

{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["git", "docker"],
    "allowUnsandboxedCommands": false
  }
}
설명 기본값
enabled Bash 샌드박싱 활성화 (macOS, Linux, WSL2) false
autoAllowBashIfSandboxed 샌드박스 환경에서 Bash 명령 자동 승인 true
excludedCommands 샌드박스 외부에서 실행할 명령 목록 []
allowUnsandboxedCommands dangerouslyDisableSandbox 매개변수로 샌드박스 외부 실행 허용 true

저작자 표기 설정 (attribution)

git 커밋 및 PR에 대한 Claude Code 저작자 표기를 커스터마이징합니다.

{
  "attribution": {
    "commit": "Generated with AI\n\nCo-Authored-By: AI <ai@company.com>",
    "pr": ""
  }
}
설명
commit git 커밋에 대한 저작자 표기 (트레일러 포함 가능). 빈 문자열로 설정 시 숨김
pr PR 설명에 대한 저작자 표기. 빈 문자열로 설정 시 숨김

기본 커밋 저작자 표기:

Generated with [Claude Code](https://claude.com/claude-code)

   Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

저작자 표기를 완전히 숨기려면 commitpr 모두 빈 문자열로 설정하세요.

파일 제안 설정 (fileSuggestion)

@ 파일 경로 자동완성에 커스텀 명령을 설정합니다. 대규모 모노레포에서 유용합니다.

{
  "fileSuggestion": {
    "type": "command",
    "command": "~/.claude/file-suggestion.sh"
  }
}

커맨드는 훅과 동일한 환경변수(CLAUDE_PROJECT_DIR 포함)로 실행됩니다. stdin으로 JSON이 입력됩니다:

{"query": "src/comp"}

stdout으로 줄바꿈 구분 파일 경로를 출력합니다 (최대 15개):

src/components/Button.tsx
src/components/Modal.tsx
src/components/Form.tsx

민감한 파일 제외 (.claudeignore)

Claude Code가 API 키, 시크릿, 환경 파일 등 민감한 정보가 포함된 파일에 접근하지 못하도록 하려면 .claude/settings.jsonpermissions.deny 설정을 사용합니다:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(./config/credentials.json)",
      "Read(./build)"
    ]
  }
}

프로젝트 루트에 .claudeignore 파일을 생성하여 파일 탐색에서 제외할 파일과 디렉토리를 지정할 수도 있습니다. .gitignore와 동일한 패턴 문법을 사용합니다:

# .claudeignore 예시
.env
.env.*
secrets/
*.key
*.pem
node_modules/
dist/
build/
__pycache__/
.pytest_cache/

이러한 패턴과 일치하는 파일들은 파일 탐색 및 검색 결과에서 제외되고, 해당 파일에 대한 읽기 작업이 거부됩니다.


시스템 프롬프트

Claude Code의 내부 시스템 프롬프트는 공개되지 않습니다. 커스텀 지침을 추가하려면 CLAUDE.md 파일 또는 --append-system-prompt 플래그를 사용하세요.


서브에이전트 설정

Claude Code는 사용자 및 프로젝트 수준에서 커스텀 AI 서브에이전트를 지원합니다. 서브에이전트는 YAML 프론트매터가 있는 Markdown 파일로 저장됩니다:

  • User 서브에이전트: ~/.claude/agents/ — 모든 프로젝트에서 사용 가능
  • Project 서브에이전트: .claude/agents/ — 프로젝트에 한정, 팀과 공유 가능

플러그인 설정

Claude Code는 스킬, 에이전트, 훅, MCP 서버로 기능을 확장하는 플러그인 시스템을 지원합니다.

enabledPlugins

어떤 플러그인을 활성화할지 제어합니다. 형식: "plugin-name@marketplace-name": true/false

{
  "enabledPlugins": {
    "formatter@acme-tools": true,
    "deployer@acme-tools": true,
    "analyzer@security-plugins": false
  }
}

extraKnownMarketplaces

저장소에서 사용 가능한 추가 마켓플레이스를 정의합니다. 팀 편의를 위해 저장소 수준 설정에서 주로 사용합니다.

{
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": {
        "source": "github",
        "repo": "acme-corp/claude-plugins"
      }
    }
  }
}

저장소에 extraKnownMarketplaces가 포함된 경우:

  1. 팀원은 폴더를 신뢰할 때 마켓플레이스 설치를 요청받습니다.
  2. 해당 마켓플레이스의 플러그인 설치를 요청받습니다.
  3. 원하지 않는 마켓플레이스나 플러그인은 건너뛸 수 있습니다.

/plugin 명령어

/plugin 명령어로 플러그인을 대화형으로 관리합니다:

  • 마켓플레이스에서 사용 가능한 플러그인 탐색
  • 플러그인 설치/제거
  • 플러그인 활성화/비활성화
  • 플러그인 세부 정보 보기 (제공하는 명령, 에이전트, 훅)
  • 마켓플레이스 추가/제거

환경변수 레퍼런스

Claude Code는 동작을 제어하는 다양한 환경변수를 지원합니다. 환경변수는 settings.jsonenv 키로도 설정할 수 있습니다.

API 및 인증

변수 설명
ANTHROPIC_API_KEY X-Api-Key 헤더로 전송되는 API 키 (대화형 사용은 /login 권장)
ANTHROPIC_AUTH_TOKEN Authorization 헤더의 커스텀 값 (Bearer 접두사 자동 추가)
ANTHROPIC_CUSTOM_HEADERS 요청에 추가할 커스텀 헤더 (Name: Value 형식, 여러 헤더는 줄바꿈으로 구분)
CLAUDE_CODE_USE_BEDROCK AWS Bedrock 사용
CLAUDE_CODE_USE_VERTEX Google Vertex AI 사용
CLAUDE_CODE_USE_FOUNDRY Microsoft Foundry 사용
CLAUDE_CODE_SKIP_BEDROCK_AUTH Bedrock AWS 인증 건너뛰기 (LLM 게이트웨이 사용 시)
CLAUDE_CODE_SKIP_VERTEX_AUTH Vertex Google 인증 건너뛰기
CLAUDE_CODE_SKIP_FOUNDRY_AUTH Foundry Azure 인증 건너뛰기

모델 설정

변수 설명
ANTHROPIC_DEFAULT_HAIKU_MODEL 기본 Haiku 모델 재정의
ANTHROPIC_DEFAULT_OPUS_MODEL 기본 Opus 모델 재정의
CLAUDE_CODE_SUBAGENT_MODEL 서브에이전트용 모델 설정
CLAUDE_CODE_MAX_OUTPUT_TOKENS 최대 출력 토큰 수 (기본: 32,000, 최대: 64,000)
CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS 파일 읽기의 기본 토큰 한도 재정의
MAX_MCP_OUTPUT_TOKENS MCP 도구 응답에 허용되는 최대 토큰 수 (기본: 25,000)
MAX_THINKING_TOKENS 확장 사고(extended thinking) 토큰 예산 재정의
CLAUDE_CODE_EFFORT_LEVEL 지원 모델의 노력 수준 설정. 값: low, medium, high (기본)

Vertex AI 지역 설정

변수 설명
VERTEX_REGION_CLAUDE_3_5_HAIKU Vertex AI에서 Claude 3.5 Haiku 지역 재정의
VERTEX_REGION_CLAUDE_3_7_SONNET Vertex AI에서 Claude 3.7 Sonnet 지역 재정의
VERTEX_REGION_CLAUDE_4_0_OPUS Vertex AI에서 Claude 4.0 Opus 지역 재정의
VERTEX_REGION_CLAUDE_4_0_SONNET Vertex AI에서 Claude 4.0 Sonnet 지역 재정의

동작 제어

변수 설명
CLAUDE_CONFIG_DIR Claude Code 설정 및 데이터 파일 저장 위치 커스터마이징
CLAUDE_CODE_SHELL 자동 셸 감지 재정의 (예: bash, zsh)
CLAUDE_CODE_SHELL_PREFIX 모든 Bash 명령에 적용할 명령 접두사 (로깅/감사용)
CLAUDE_ENV_FILE 각 Bash 명령 전에 소싱할 환경 설정 파일 경로
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR 1로 설정 시 각 명령 후 프로젝트 디렉토리로 재설정
CLAUDE_CODE_TMPDIR 내부 임시 파일용 임시 디렉토리 재정의
CLAUDE_CODE_SIMPLE 1로 설정 시 최소 시스템 프롬프트와 기본 도구만으로 실행
CLAUDE_CODE_EXIT_AFTER_STOP_DELAY 쿼리 루프가 유휴 상태가 된 후 자동 종료까지 대기 시간 (밀리초)

업데이트 및 원격 측정

변수 설명
DISABLE_AUTOUPDATER 1로 설정 시 자동 업데이트 비활성화
FORCE_AUTOUPDATE_PLUGINS true로 설정 시 메인 자동 업데이터가 비활성화된 경우에도 플러그인 자동 업데이트 강제 실행
DISABLE_TELEMETRY 1로 설정 시 Statsig 텔레메트리 수신 거부
DISABLE_ERROR_REPORTING 1로 설정 시 Sentry 에러 보고 수신 거부
CLAUDE_CODE_ENABLE_TELEMETRY 1로 설정 시 OpenTelemetry 데이터 수집 활성화
DISABLE_BUG_COMMAND 1로 설정 시 /bug 명령어 비활성화
DISABLE_COST_WARNINGS 1로 설정 시 비용 경고 메시지 비활성화
DISABLE_INSTALLATION_CHECKS 1로 설정 시 설치 경고 비활성화
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC DISABLE_AUTOUPDATER, DISABLE_BUG_COMMAND, DISABLE_ERROR_REPORTING, DISABLE_TELEMETRY를 일괄 설정하는 동등 효과

프록시 및 네트워크

변수 설명
HTTP_PROXY 네트워크 연결용 HTTP 프록시 서버 지정
HTTPS_PROXY 네트워크 연결용 HTTPS 프록시 서버 지정
NO_PROXY 프록시를 우회하여 직접 요청을 보낼 도메인 및 IP 목록
CLAUDE_CODE_PROXY_RESOLVES_HOSTS true로 설정 시 프록시가 DNS 해석 수행 허용

MCP 설정

변수 설명
MCP_TIMEOUT MCP 서버 시작 타임아웃 (밀리초)
MCP_TOOL_TIMEOUT MCP 도구 실행 타임아웃 (밀리초)
MAX_MCP_OUTPUT_TOKENS MCP 도구 응답에 허용되는 최대 토큰 수 (기본: 25,000)
ENABLE_TOOL_SEARCH MCP 도구 검색 제어. 값: auto (기본, 10% 컨텍스트에서 활성화), auto:N (커스텀 임계값), true (항상 켜기), false (비활성화)
MCP_CLIENT_SECRET OAuth 클라이언트 시크릿 (사전 구성된 자격증명이 필요한 MCP 서버용)
MCP_OAUTH_CALLBACK_PORT OAuth 리디렉션 콜백 고정 포트

프롬프트 캐싱

변수 설명
DISABLE_PROMPT_CACHING 1로 설정 시 모든 모델에 대해 프롬프트 캐싱 비활성화
DISABLE_PROMPT_CACHING_HAIKU 1로 설정 시 Haiku 모델 프롬프트 캐싱 비활성화
DISABLE_PROMPT_CACHING_OPUS 1로 설정 시 Opus 모델 프롬프트 캐싱 비활성화
DISABLE_PROMPT_CACHING_SONNET 1로 설정 시 Sonnet 모델 프롬프트 캐싱 비활성화

기타

변수 설명
USE_BUILTIN_RIPGREP 0으로 설정 시 Claude Code에 포함된 rg 대신 시스템 설치 rg 사용
DISABLE_NON_ESSENTIAL_MODEL_CALLS 1로 설정 시 플레이버 텍스트 같은 비핵심 경로의 모델 호출 비활성화
CLAUDE_CODE_DISABLE_TERMINAL_TITLE 1로 설정 시 대화 컨텍스트 기반 터미널 제목 자동 업데이트 비활성화
IS_DEMO true로 설정 시 데모 모드 활성화 (UI에서 이메일/조직 숨김, 온보딩 건너뜀)
SLASH_COMMAND_TOOL_CHAR_BUDGET Skill 도구에 표시되는 스킬 메타데이터 문자 예산 재정의

내장 도구 목록

Claude Code는 다음 내장 도구를 사용합니다:

도구 설명 권한 필요
AskUserQuestion 요구사항 수집 또는 모호성 해소를 위한 객관식 질문 아니오
Bash 환경에서 셸 명령 실행
Edit 특정 파일의 대상 편집 수행
ExitPlanMode 사용자에게 계획 모드를 종료하고 코딩 시작 요청
Glob 패턴 매칭으로 파일 찾기 아니오
Grep 파일 내용에서 패턴 검색 아니오
KillShell ID로 실행 중인 백그라운드 Bash 셸 종료 아니오
LSP 언어 서버를 통한 코드 인텔리전스 (타입 에러, 정의 이동, 참조 찾기 등) 아니오
MCPSearch 도구 검색이 활성화된 경우 MCP 도구 검색 및 로드 아니오
NotebookEdit Jupyter 노트북 셀 수정
Read 파일 내용 읽기 아니오
Skill 메인 대화에서 스킬 실행
Task 복잡한 멀티스텝 작업을 처리하는 서브에이전트 실행 아니오
TaskCreate 작업 목록에 새 작업 생성 아니오
TaskGet 특정 작업의 전체 세부 정보 조회 아니오
TaskList 현재 상태와 함께 모든 작업 목록 표시 아니오
TaskOutput 백그라운드 작업(Bash 셸 또는 서브에이전트)의 출력 조회 아니오
TaskUpdate 작업 상태, 의존성, 세부 정보 업데이트 또는 작업 삭제 아니오
WebFetch 지정된 URL에서 콘텐츠 가져오기
WebSearch 도메인 필터링으로 웹 검색 수행
Write 파일 생성 또는 덮어쓰기

Bash 도구 동작

Bash 도구는 다음 지속성 동작으로 셸 명령을 실행합니다:

  • 작업 디렉토리는 유지됩니다: Claude가 작업 디렉토리를 변경(cd /path/to/dir)하면, 이후 Bash 명령들은 해당 디렉토리에서 실행됩니다. 각 명령 후 프로젝트 디렉토리로 재설정하려면 CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1을 사용하세요.

  • 환경변수는 유지되지 않습니다: 한 Bash 명령에서 설정한 환경변수(export MY_VAR=value)는 이후 Bash 명령에서 사용할 수 없습니다. 각 Bash 명령은 새로운 셸 환경에서 실행됩니다.

환경변수를 Bash 명령에서 사용 가능하게 하는 세 가지 방법:

방법 1: Claude Code 시작 전 환경 활성화 (가장 간단)

conda activate myenv
# 또는: source /path/to/venv/activate
claude

방법 2: CLAUDE_ENV_FILE 설정 (영속적 환경 설정)

export CLAUDE_ENV_FILE=/path/to/env-setup.sh
claude

/path/to/env-setup.sh 내용:

conda activate myenv
# 또는: export MY_VAR=value

Claude Code는 각 Bash 명령 전에 이 파일을 소싱합니다.

방법 3: SessionStart 훅 사용 (프로젝트별 설정)

.claude/settings.json:

{
  "hooks": {
    "SessionStart": [{
      "matcher": "startup",
      "hooks": [{
        "type": "command",
        "command": "echo 'conda activate myenv' >> \"$CLAUDE_ENV_FILE\""
      }]
    }]
  }
}

엔터프라이즈 설정

Managed Settings 파일 위치

플랫폼 위치
macOS /Library/Application Support/ClaudeCode/managed-settings.json
Linux 및 WSL /etc/claude-code/managed-settings.json
Windows C:\Program Files\ClaudeCode\managed-settings.json

MDM/OS 수준 정책

  • macOS: com.anthropic.claudecode 관리형 환경설정 도메인 (Jamf, Kandji 등 MDM 도구를 통해 설정 프로필로 배포)
  • Windows: HKLM\SOFTWARE\Policies\ClaudeCode 레지스트리 키에 JSON을 포함한 Settings 값 (그룹 정책 또는 Intune으로 배포)

Managed 전용 설정

다음 설정들은 managed settings에서만 사용 가능합니다:

설정 설명
allowManagedHooksOnly 사용자, 프로젝트, 플러그인 훅 로드 방지. managed 훅 및 SDK 훅만 허용
allowManagedPermissionRulesOnly 사용자 및 프로젝트 설정의 allow, ask, deny 권한 규칙 정의 방지
allowManagedMcpServersOnly managed 설정 이외의 MCP 서버 설정 방지
strictKnownMarketplaces 사용자가 추가할 수 있는 플러그인 마켓플레이스 제어

실전 예제

한국어 개발팀을 위한 프로젝트 설정

.claude/settings.json:

{
  "permissions": {
    "allow": [
      "Bash(git *)",
      "Bash(npm *)",
      "Bash(yarn *)",
      "Bash(pnpm *)",
      "Bash(python *)",
      "Bash(pytest *)",
      "Bash(ruff *)",
      "Bash(mypy *)"
    ],
    "ask": [
      "Bash(git push *)",
      "Bash(git merge *)",
      "Bash(git rebase *)",
      "Bash(npm publish *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "WebFetch"
    ],
    "additionalDirectories": [
      "../shared-utils/"
    ]
  },
  "attribution": {
    "commit": "AI 보조 작성\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
    "pr": ""
  },
  "env": {
    "NODE_ENV": "development",
    "PYTHONPATH": "./src"
  }
}

위험한 명령어 제한

{
  "permissions": {
    "deny": [
      "Bash(rm -rf *)",
      "Bash(sudo rm *)",
      "Bash(chmod 777 *)",
      "Bash(curl * | bash)",
      "Bash(wget * | bash)",
      "Bash(> /etc/*)",
      "Bash(dd *)"
    ]
  }
}

개인 로컬 설정 예시

.claude/settings.local.json (git에 커밋되지 않음):

{
  "permissions": {
    "allow": [
      "Bash(open *)",
      "Bash(pbcopy *)"
    ]
  },
  "env": {
    "MY_LOCAL_API_KEY": "개인_테스트_키"
  }
}

트러블슈팅

설정이 적용되지 않을 때

  1. /status 명령어로 현재 활성 설정 소스 확인
  2. 설정 파일의 JSON 문법 확인:
    jq '.' ~/.claude/settings.json
    jq '.' .claude/settings.json
    
  3. 스코프 우선순위 확인 — 더 높은 우선순위 스코프의 설정이 재정의하고 있을 수 있습니다.

권한 오류 발생 시

  1. /permissions 명령어로 현재 권한 규칙 확인
  2. deny 규칙이 allow 규칙보다 먼저 평가되는지 확인
  3. 규칙 문법이 올바른지 확인 (예: Bash(git *), Read(./.env))

환경변수가 적용되지 않을 때

각 Bash 명령은 새로운 셸 환경에서 실행되므로, export로 설정한 변수는 다음 명령에서 사용할 수 없습니다. CLAUDE_ENV_FILE 또는 settings.jsonenv 키를 사용하세요:

{
  "env": {
    "PYTHONPATH": "./src",
    "DATABASE_URL": "postgresql://localhost/mydb"
  }
}

다음 단계


이 섹션이 도움이 되셨나요?

관련 가이드

설정 및 환경변수 | Claude Code 가이드 | GodDaeHee | GodDaeHee