settings.json은 Claude Code의 동작을 파일로 고정합니다. 매번 같은 확인 창을 넘기고 있다면 이 파일을 손볼 때입니다.
파일 위치와 우선순위
~/.claude/settings.json ← 개인 전역 설정
프로젝트/.claude/settings.json ← 팀 공유 (커밋 대상)
프로젝트/.claude/settings.local.json ← 개인 로컬 (커밋 제외)아래쪽이 위쪽을 덮어씁니다. 팀 전체에 적용할 규칙은 가운데, 내 컴퓨터에만 해당하는 건 아래쪽에 두세요.
권한 허용 목록
가장 자주 쓰는 설정입니다. 안전한 읽기 전용 명령을 미리 허용해 두면 확인 요청이 크게 줄어듭니다.
{
"permissions": {
"allow": [
"Bash(npm run test:*)",
"Bash(npm run lint)",
"Bash(git status)",
"Bash(git diff:*)",
"Read(**)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(git push --force:*)",
"Read(./.env)",
"Read(./secrets/**)"
]
}
}deny가 allow보다 강합니다. 위험한 명령과 비밀 파일은 여기 명시적으로 넣어 두세요.
환경 변수
세션마다 주입할 값을 고정합니다.
{
"env": {
"NODE_ENV": "development",
"API_BASE_URL": "http://localhost:3000"
}
}API 키나 토큰은 여기에 넣지 마세요. 커밋되는 파일이라면 특히 위험합니다. 비밀값은 settings.local.json이나 별도 환경 파일을 쓰세요.
자주 쓰는 옵션
| 키 | 설명 |
|---|---|
model | 세션 기본 모델을 지정합니다 |
env | 세션에 주입할 환경 변수 |
permissions | 도구 허용/차단 규칙 |
hooks | 특정 시점에 실행할 스크립트 (훅 문서) |
허용 목록을 만드는 실전 순서
- 며칠 그냥 써 봅니다.
- 같은 명령을 세 번 이상 승인했다면 그건 허용 목록 후보입니다.
- 단, 부작용이 있는 명령은 편해도 넣지 마세요. 배포·삭제·전송은 매번 확인하는 게 맞습니다.
팀에 배포할 때
.claude/settings.json을 커밋하면 팀원 전체가 같은 규칙을 공유합니다. 이때 넣으면 좋은 것:
- 이 저장소에서 금지된 명령 (
deny) - 표준 검증 명령 허용 (
npm run test,typecheck) - 공통 환경 변수 (비밀값 제외)
개인 취향은 각자 settings.local.json에 두고, 이 파일은 .gitignore에 넣으세요.
설정권한settings.json
팀에 Claude Code를 도입하려면 실제 코드베이스에 맞춘 설계가 필요합니다.
기업교육 · 도입 상담하기