기본 패턴
json
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./secrets/**)"
]
}
}설명
- Claude Code 설정은 한 파일에만 있는 것이 아니라 user, project, local 계층으로 나뉩니다. 공식 docs는
~/.claude/settings.json,.claude/settings.json,.claude/settings.local.json이 서로 다른 범위와 우선순위를 가진다고 설명합니다. - 이 구조를 이해하면 "개인 취향", "팀 공통 규칙", "로컬 실험 설정"을 분리할 수 있습니다. 즉 테마나 개인 알림은 user, 팀이 공유할 규칙은 project, 커밋하고 싶지 않은 실험은 local에 두는 식이 자연스럽습니다.
permissions.deny는 특히 중요합니다..env, secrets, credential 파일처럼 민감한 내용을 Claude Code가 아예 보지 못하게 막는 구조라서, 단순 요청 규칙보다 훨씬 강한 보호 장치가 됩니다.- 또 설정은 interactive session의
/config와 CLIclaude config ...명령으로도 다룰 수 있습니다. 그래서 설정 문제를 "문서만 읽고 손으로 고치는 작업"으로 보지 않고, 세션 운영의 일부로 보는 편이 좋습니다. - 결국 settings 카드는 편의성 카드이면서 동시에 안전성 카드입니다. Claude Code를 오래 쓸수록 output 품질보다 permissions와 scope 관리가 더 중요해지는 경우가 많기 때문입니다.
빠른 정리
| 위치 | 의미 |
|---|---|
~/.claude/settings.json | 모든 프로젝트에 적용되는 user 설정 |
.claude/settings.json | 팀과 공유할 project 설정 |
.claude/settings.local.json | 개인 실험용 local 설정 |
permissions.deny | 민감 파일 접근 차단 |
/config | 세션 안에서 설정 조회와 수정 |
주의할 점
Claude Code를 오래 쓰면 프롬프트보다 설정이 더 큰 영향을 줄 때가 많습니다. 민감한 파일을 "읽지 말라"고 프롬프트에만
적는 것보다, permissions.deny로 구조적으로 막는 편이 훨씬 안전합니다.
참고 링크
1 sources