Claude Code의 셸 허용 목록을 프롬프트가 아닌 settings.json에 넣으세요
요약
Claude Code의 셸 명령어 허용/거부 목록을 프롬프트가 아닌 `settings.json` 파일에 명시하는 것이 더 안전하고 강력한 방법입니다. 이는 모델이 위험한 명령어를 시도하기 전에 도구 계층에서 정책을 강제적으로 차단(fails closed)할 수 있게 합니다.
핵심 포인트
- 정책은 프롬프트보다 settings.json에 정의해야 함.
- settings.json 사용 시 런타임에서 명령어 실행 전 차단 가능.
- fail-closed 상태를 유지하여 보안성을 높일 수 있음.
프롬프트는 제안입니다. 설정은 규칙입니다.
만약 CLAUDE.md에 '위험한 셸 명령어는 절대 실행하지 마라'라고만 작성한다면, 모델은 여전히 이를 시도할 수 있습니다. Claude Code를 사용하면 .claude/settings.json에 명시적인 허용/거부 목록을 넣을 수 있어, 런타임에서 도구 호출이 실행되기 전에 차단합니다.
최소 예제
{
"permissions": {
"deny": [
...
정확한 일치 구문(Exact matcher syntax)은 Claude Code 버전에 따라 다를 수 있으니, 이것을 형태(shape)로 간주하고 설치된 문서를 통해 확인하세요. 핵심은 정책을 도구 계층(tool layer)이 강제하는 곳에 넣는 것입니다.
왜 이것이 긴 프롬프트보다 나은가
- settings에서 거부(deny)를 설정하면 실패 시 닫힘(fails closed) 상태가 됩니다.
AGENTS.md의 문장은 부드럽습니다(soft). CLAUDE.md는 짧게 유지하면서도 셸에 대해 엄격할 수 있습니다 (집안 규칙 + 스택 맵만 포함).- 패턴 설정으로는 표현할 수 없는 것을 위해
PreToolUse후크와,tsc가 빨간색일 때 에이전트가 '완료'라고 말하지 못하게 하는Stop후크를 함께 사용하세요.
저는 거부 목록, 후크, 그리고 짧은 집안 규칙 파일을 Vildanden Agent Config에 모아두었습니다. 무료 샘플만으로도 패턴을 시도하기에 충분합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기