
CLAUDE.md를 사용하여 Claude Code 내장 스킬의 자동 실행을 차단하기
요약
Claude Code의 빌트인 워크플로우인 'deep-research'가 특정 트리거 문구에 의해 자동 실행되는 것을 CLAUDE.md를 통해 제어하는 방법을 설명합니다. 설정 파일만으로는 제어가 불가능한 빌트인 기능을 선언적 규칙으로 소프트 블록하는 기술적 팁을 제공합니다.
핵심 포인트
- 빌트인 워크플로우는 특정 트리거 문구 입력 시 자동으로 실행됨
- SKILL.md의 플래그로는 플랫폼 제공 빌트인 기능을 개별 제어할 수 없음
- CLAUDE.md에 금지 규칙을 작성하여 자동 실행을 소프트 블록 가능
- 금지할 문구 열거, 대안 명시, 명시적 명령 예외 처리가 핵심 구현 포인트
TL;DR: Claude Code가 표준 탑재하는 deep-research (공식 분류는 빌트인 Workflow)는 트리거 문구로 자동 실행되며, disable-model-invocation으로는 막을 수 없다. CLAUDE.md에 금지 규칙을 작성함으로써 자동 실행을 소프트 블록(soft block)할 수 있다. 완전히 무효화하는 settings.json 측의 설정도 별도로 존재하지만, 대상을 개별적으로 선택할 수 없다.
"디ープリサーチして(딥 리서치 해줘)"라고 입력한 순간, deep-research (공식 분류: 빌트인 Workflow)가 실행되었다. 멀티 에이전트 Workflow가 돌아가며 토큰이 대량 소비되었다. 설정은 아무것도 바꾸지 않은 상태였다.
원인은 단순하다. 해당 트리거 문구를 처음 사용했기 때문에 처음으로 실행된 것이다. 빌트인으로 제공되는 기능은 상시 트리거 대기 상태에 있다.
대처법은 CLAUDE.md에 규칙 섹션을 하나 추가하는 것뿐이었다. 실제로 추가한 내용의 전문은 다음과 같다:
## Deep Research Delegation Rule
ClaudeCode must **never** invoke the `deep-research` skill autonomously,
including when the user says phrases like "ディープリサーチして",
...
구현의 포인트는 세 가지다.
- 금지할 말을 열거한다— "ディープリサーチして", "deep research して", "詳しく調べて(자세히 조사해줘)" 등, 실제로 사용할 법한 표현을 구체적으로 적는다. 모호한 말투 하나에 의존하지 않는다.
- 대안을 명시한다— "Perplexity에 요청해 주세요"라는 정형 응답을 그대로 지정한다. AI가 스스로 판단하여 말을 바꾸지 않도록 한다.
- 명시적 명령의 예외를 작성한다—
/deep-research라고 명시적으로 입력했을 경우에만 허용함을 명기하여, 기능 자체는 죽이지 않는다.
CLAUDE.md에 작성한 규칙은 "Always-on rules"로서 기능하며, 스킬의 동작보다 우선된다.

Claude Code의 기능에는 사용자가 정의하는 것과 플랫폼이 제공하는 것이 있다.
프로젝트 내의 SKILL.md에서 정의한다. 프론트매터(Frontmatter)로 제어 가능하다:
---
disable-model-invocation: true
---
이 플래그를 설정하면 /skill-name이라고 명시적으로 입력하지 않는 한 실행되지 않는다.
Claude Code 플랫폼이 제공하는 기능 (/code-review와 같은 빌트인 스킬, deep-research와 같은 빌트인 Workflow). 사용자가 편집할 수 있는 SKILL.md가 존재하지 않기 때문에 disable-model-invocation을 설정할 장소가 없다. 트리거 문구에 매칭된 발화로 자동 실행된다. 이것은 플랫폼의 사양이다.
그렇기 때문에 코드 레벨의 플래그가 아니라 CLAUDE.md라는 선언적인 규칙 계층에서 동작을 묶어둘 필요가 있었다.
| 기능 | 공식 분류 | 실행 조건 | 대책 |
|---|---|---|---|
deep-research | 빌트인 Workflow | 자연어 트리거 | CLAUDE.md 금지 규칙 (개별) / disableWorkflows (모든 Workflow 일괄) |
code-review ultra | 빌트인 스킬 | /code-review ultra 명시 시에만 | 저위험 · 대책 불필요 |
| 커스텀 스킬 | 커스텀 | 트리거 조건 또는 /cmd | disable-model-invocation: true |
code-review ultra (/ultrareview)는 명시적 명령이 필요하므로 자연어로부터의 오작동 리스크는 낮다. 고비용이라는 점은 deep-research와 공통적이지만, 멋대로 발화되는 조건이 다르다.
AI worker의 운용 비용을 관리하려면 "의도하지 않은 자동 실행"에 대한 대책이 필요하다.
빌트인으로 제공되는 스킬·Workflow는 플랫폼 제공 방식이므로, 커스텀 스킬처럼 코드 레벨에서 개별적으로 제어할 수 없다. 대신, CLAUDE.md라는 선언적인 규칙 계층으로 동작을 제약한다.
CLAUDE.md 규칙은 AI의 판단에 의존하는 소프트 블록 (soft block)이다.
--no-verify를 통해 훅 (hook)을 건너뛸 수 있듯이, 강제적인 덮어쓰기 지시로 인해 무효화될 가능성이 제로(0)는 아니다. 완전히 무효화하고 싶은 경우에는 settings.json의 disableBundledSkills: true (번들드 스킬 (Bundled Skills) 및 워크플로 (Workflow) 전체 삭제) 또는 disableWorkflows: true (워크플로 (Workflow)만 무효화) 사용을 검토하라. 단, 두 방법 모두 개별 기능만을 정밀하게 타격하여 끌 수는 없으며, 다른 편리한 내장 기능들도 함께 중단된다는 점에 주의해야 한다. permissions.deny는 도구 호출 (tool call)을 차단하기 위한 용도이며, 스킬 (skill) 및 워크플로 (Workflow) 자체의 무효화와는 별개의 기능이므로 혼동하지 말 것.
실제 프로젝트에서는 기능의 존재를 파악한 시점에 금지 규칙을 작성하는 것을 권장한다. 사후 대응보다 사전 선언이 토큰 소비의 예측 가능성을 높여준다.

이 기사는 실제 운영 로그를 바탕으로 작성되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기