SpyBara
Go Premium

Documentation 2026-05-11 23:00 UTC to 2026-05-12 22:57 UTC

31 files changed +974 −351. View all changes and history on the product overview
2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

agent-sdk/hooks.md +13 −13

Details

24 </Step>24 </Step>

25 25 

26 <Step title="SDK가 등록된 훅을 수집합니다">26 <Step title="SDK가 등록된 훅을 수집합니다">

27 SDK는 해당 이벤트 유형에 대해 등록된 훅을 확인합니다. 여기에는 `options.hooks`에 전달하는 콜백 훅과 해당 [`settingSources`](/ko/agent-sdk/typescript#setting-source) 또는 [`setting_sources`](/ko/agent-sdk/python#setting-source) 항목이 활성화된 경우 설정 파일의 셸 명령 훅이 포함되며, 기본 `query()` 옵션에서는 활성화됩니다.27 SDK는 해당 이벤트 유형에 대해 등록된 훅을 확인합니다. 여기에는 `options.hooks`에 전달하는 콜백 훅과 해당 [`settingSources`](/ko/agent-sdk/typescript#settingSources) 또는 [`setting_sources`](/ko/agent-sdk/python#setting_sources) 항목이 활성화된 경우 설정 파일의 셸 명령 훅이 포함되며, 기본 `query()` 옵션에서는 활성화됩니다.

28 </Step>28 </Step>

29 29 

30 <Step title="매처가 실행할 훅을 필터링합니다">30 <Step title="매처가 실행할 훅을 필터링합니다">


40 </Step>40 </Step>

41</Steps>41</Steps>

42 42 

43다음 예제는 이러한 단계를 함께 보여줍니다. `PreToolUse` 훅(단계 1)을 `"Write|Edit"` 매처(단계 3)로 등록하므로 콜백은 파일 쓰기 도구에만 발생합니다. 트리거되면 콜백은 도구의 입력(단계 4)을 받고 파일 경로가 `.env` 파일을 대상으로 하는지 확인한 후 `permissionDecision: "deny"`를 반환하여 작업을 차단합니다(단계 5).43다음 예제는 이러한 단계를 함께 보여줍니다. `PreToolUse` 훅(단계 1)을 `"Write|Edit"` 매처(단계 3)로 등록하므로 콜백은 파일 쓰기 도구에만 발생합니다. 트리거되면 콜백은 도구의 입력(단계 4)을 받고 파일 경로가 `.env` 파일을 대상으로 하는지 확인한 후 `permissionDecision: "deny"`를 반환하여 작업을 차단합니다(단계 5):

44 44 

45<CodeGroup>45<CodeGroup>

46 ```python Python theme={null}46 ```python Python theme={null}


225 225 

226모든 훅 콜백은 세 가지 인수를 받습니다.226모든 훅 콜백은 세 가지 인수를 받습니다.

227 227 

228* **입력 데이터:** 이벤트 세부 정보를 포함하는 입력된 객체입니다. 각 훅 유형은 자체 입력 형태를 가집니다(예: `PreToolUseHookInput`은 `tool_name`과 `tool_input`을 포함하고, `NotificationHookInput`은 `message`를 포함합니다). [TypeScript](/ko/agent-sdk/typescript#hook-input) 및 [Python](/ko/agent-sdk/python#hook-input) SDK 참조에서 전체 타입 정의를 참조하세요.228* **입력 데이터:** 이벤트 세부 정보를 포함하는 입력된 객체입니다. 각 훅 유형은 자체 입력 형태를 가집니다(예: `PreToolUseHookInput`은 `tool_name`과 `tool_input`을 포함하고, `NotificationHookInput`은 `message`를 포함합니다). [TypeScript](/ko/agent-sdk/typescript#hookinput) 및 [Python](/ko/agent-sdk/python#hookinput) SDK 참조에서 전체 타입 정의를 참조하세요.

229 * 모든 훅 입력은 `session_id`, `cwd`, `hook_event_name`을 공유합니다.229 * 모든 훅 입력은 `session_id`, `cwd`, `hook_event_name`을 공유합니다.

230 * `agent_id`와 `agent_type`은 훅이 서브에이전트 내에서 발생할 때 채워집니다. TypeScript에서는 기본 훅 입력에 있으며 모든 훅 유형에서 사용 가능합니다. Python에서는 `PreToolUse`, `PostToolUse`, `PostToolUseFailure`에만 있습니다.230 * `agent_id`와 `agent_type`은 훅이 서브에이전트 내에서 발생할 때 채워집니다. TypeScript에서는 기본 훅 입력에 있으며 모든 훅 유형에서 사용 가능합니다. Python에서는 `PreToolUse`, `PostToolUse`, `PostToolUseFailure`에만 있습니다.

231* **도구 사용 ID** (`str | None` / `string | undefined`): 동일한 도구 호출에 대해 `PreToolUse` 및 `PostToolUse` 이벤트를 연결합니다.231* **도구 사용 ID** (`str | None` / `string | undefined`): 동일한 도구 호출에 대해 `PreToolUse` 및 `PostToolUse` 이벤트를 연결합니다.


236콜백은 두 가지 필드 범주를 포함하는 객체를 반환합니다.236콜백은 두 가지 필드 범주를 포함하는 객체를 반환합니다.

237 237 

238* **최상위 필드**는 대화를 제어합니다. `systemMessage`는 모델에 표시되는 메시지를 대화에 주입하고, `continue`(Python에서는 `continue_`)는 이 훅 후에 에이전트가 계속 실행되는지 여부를 결정합니다.238* **최상위 필드**는 대화를 제어합니다. `systemMessage`는 모델에 표시되는 메시지를 대화에 주입하고, `continue`(Python에서는 `continue_`)는 이 훅 후에 에이전트가 계속 실행되는지 여부를 결정합니다.

239* \*\*`hookSpecificOutput`\*\*은 현재 작업을 제어합니다. 내부의 필드는 훅 이벤트 유형에 따라 다릅니다. `PreToolUse` 훅의 경우 `permissionDecision`(`"allow"`, `"deny"`, 또는 `"ask"`), `permissionDecisionReason`, `updatedInput`을 설정하는 곳입니다. TypeScript SDK에서 `permissionDecision`은 또한 `"defer"`를 수락하여 쿼리를 종료하고 [나중에 재개](/ko/hooks#defer-a-tool-call-for-later)합니다. 이 값은 Python SDK에서 사용할없습니다. `PostToolUse` 훅의 경우 `additionalContext`를 설정하여 도구 결과에 정보를 추가하거나 `updatedToolOutput`을 설정하여 Claude가 보기 전에 도구의 출력을 완전히 바꿀 수 있습니다.239* \*\*`hookSpecificOutput`\*\*은 현재 작업을 제어합니다. 내부의 필드는 훅 이벤트 유형에 따라 다릅니다. `PreToolUse` 훅의 경우 `permissionDecision`(`"allow"`, `"deny"`, `"ask"`, 또는 `"defer"`), `permissionDecisionReason`, `updatedInput`을 설정하는 곳입니다. `"defer"`를 반환하면 쿼리가 종료되어 [나중에 재개](/ko/hooks#defer-a-tool-call-for-later)있습니다. `PostToolUse` 훅의 경우 `additionalContext`를 설정하여 도구 결과에 정보를 추가하거나 `updatedToolOutput`을 설정하여 Claude가 보기 전에 도구의 출력을 완전히 바꿀 수 있습니다.

240 240 

241변경 없이 작업을 허용하려면 `{}`를 반환합니다. SDK 콜백 훅은 [Claude Code 셸 명령 훅](/ko/hooks#json-output)과 동일한 JSON 출력 형식을 사용하며, 이는 모든 필드와 이벤트별 옵션을 문서화합니다. SDK 타입 정의는 [TypeScript](/ko/agent-sdk/typescript#sync-hook-json-output) 및 [Python](/ko/agent-sdk/python#sync-hook-json-output) SDK 참조를 참조하세요.241변경 없이 작업을 허용하려면 `{}`를 반환합니다. SDK 콜백 훅은 [Claude Code 셸 명령 훅](/ko/hooks#json-output)과 동일한 JSON 출력 형식을 사용하며, 이는 모든 필드와 이벤트별 옵션을 문서화합니다. SDK 타입 정의는 [TypeScript](/ko/agent-sdk/typescript#synchookjsonoutput) 및 [Python](/ko/agent-sdk/python#synchookjsonoutput) SDK 참조를 참조하세요.

242 242 

243<Note>243<Note>

244 여러 훅 또는 권한 규칙이 적용되는 경우 **deny**는 **defer**보다 우선하고, **defer**는 **ask**보다 우선하고, **ask**는 **allow**보다 우선합니다. 훅이 `deny`를 반환하면 다른 훅에 관계없이 작업이 차단됩니다.244 여러 훅 또는 권한 규칙이 적용되는 경우 **deny**는 **defer**보다 우선하고, **defer**는 **ask**보다 우선하고, **ask**는 **allow**보다 우선합니다. 훅이 `deny`를 반환하면 다른 훅에 관계없이 작업이 차단됩니다.


326</CodeGroup>326</CodeGroup>

327 327 

328<Note>328<Note>

329 `updatedInput`을 사용할 때는 `permissionDecision: 'allow'` 포함해야 합니다. 항상 원본 `tool_input`을 변경하지 않고 새 객체를 반환합니다.329 `updatedInput`을 사용할 때는 수정된 입력을 자동 승인하기 위해 `permissionDecision: 'allow'` 포함하거나 사용자에게 표시하기 위해 `permissionDecision: 'ask'`를 포함해야 합니다. `'defer'`를 사용하면 `updatedInput`은 무시됩니다. 항상 원본 `tool_input`을 변경하지 않고 새 객체를 반환합니다.

330</Note>330</Note>

331 331 

332### 컨텍스트 추가 및 도구 차단332### 컨텍스트 추가 및 도구 차단


489 489 

490### 서브에이전트 활동 추적490### 서브에이전트 활동 추적

491 491 

492`SubagentStop` 훅을 사용하여 서브에이전트가 작업을 완료할 때를 모니터링합니다. [TypeScript](/ko/agent-sdk/typescript#hook-input) 및 [Python](/ko/agent-sdk/python#hook-input) SDK 참조에서 전체 입력 타입을 참조하세요. 이 예제는 서브에이전트가 완료될 때마다 요약을 기록합니다.492`SubagentStop` 훅을 사용하여 서브에이전트가 작업을 완료할 때를 모니터링합니다. [TypeScript](/ko/agent-sdk/typescript#hookinput) 및 [Python](/ko/agent-sdk/python#hookinput) SDK 참조에서 전체 입력 타입을 참조하세요. 이 예제는 서브에이전트가 완료될 때마다 요약을 기록합니다.

493 493 

494<CodeGroup>494<CodeGroup>

495 ```python Python theme={null}495 ```python Python theme={null}


621 621 

622### Slack으로 알림 전달622### Slack으로 알림 전달

623 623 

624`Notification` 훅을 사용하여 에이전트에서 시스템 알림을 받고 외부 서비스로 전달합니다. 알림은 특정 이벤트 유형에 대해 발생합니다. `permission_prompt`(Claude가 권한 필요), `idle_prompt`(Claude가 입력 대기 중), `auth_success`(인증 완료), `elicitation_dialog`(Claude가 사용자에게 프롬프트 중). 각 알림에는 인간이 읽을 수 있는 설명이 있는 `message` 필드와 선택적으로 `title`이 포함됩니다.624`Notification` 훅을 사용하여 에이전트에서 시스템 알림을 받고 외부 서비스로 전달합니다. 알림은 특정 이벤트 유형에 대해 발생합니다. `permission_prompt`(Claude가 권한 필요), `idle_prompt`(Claude가 입력 대기 중), `auth_success`(인증 완료), `elicitation_dialog`(Claude가 사용자에게 프롬프트 중), `elicitation_response`(사용자가 유도 질문에 답함), `elicitation_complete`(유도 질문이 종료됨). 각 알림에는 인간이 읽을 수 있는 설명이 있는 `message` 필드와 선택적으로 `title`이 포함됩니다.

625 625 

626이 예제는 모든 알림을 Slack 채널로 전달합니다. [Slack 수신 웹훅 URL](https://api.slack.com/messaging/webhooks)이 필요하며, 이는 Slack 작업 공간에 앱을 추가하고 수신 웹훅을 활성화하여 생성합니다.626이 예제는 모든 알림을 Slack 채널로 전달합니다. [Slack 수신 웹훅 URL](https://api.slack.com/messaging/webhooks)이 필요하며, 이는 Slack 작업 공간에 앱을 추가하고 수신 웹훅을 활성화하여 생성합니다.

627 627 


727* 매처 패턴이 도구 이름과 정확히 일치하는지 확인합니다.727* 매처 패턴이 도구 이름과 정확히 일치하는지 확인합니다.

728* 훅이 `options.hooks`의 올바른 이벤트 유형 아래에 있는지 확인합니다.728* 훅이 `options.hooks`의 올바른 이벤트 유형 아래에 있는지 확인합니다.

729* `Stop` 및 `SubagentStop` 같은 도구가 아닌 훅의 경우 매처는 다른 필드와 일치합니다([매처 패턴](/ko/hooks#matcher-patterns) 참조).729* `Stop` 및 `SubagentStop` 같은 도구가 아닌 훅의 경우 매처는 다른 필드와 일치합니다([매처 패턴](/ko/hooks#matcher-patterns) 참조).

730* 에이전트가 [`max_turns`](/ko/agent-sdk/python#claude-agent-options) 제한에 도달하면 훅이 발생하지 않을 수 있습니다. 세션이 훅을 실행하기 전에 종료되기 때문입니다.730* 에이전트가 [`max_turns`](/ko/agent-sdk/python#claudeagentoptions) 제한에 도달하면 훅이 발생하지 않을 수 있습니다. 세션이 훅을 실행하기 전에 종료되기 때문입니다.

731 731 

732### 매처가 예상대로 필터링하지 않음732### 매처가 예상대로 필터링하지 않음

733 733 

734매처는 **도구 이름**만 일치하며, 파일 경로나 다른 인수는 일치하지 않습니다. 파일 경로로 필터링하려면 훅 내에서 `tool_input.file_path`를 확인합니다.734매처는 **도구 이름**만 일치하며, 파일 경로나 다른 인수는 일치하지 않습니다. 파일 경로로 필터링하려면 훅 내에서 `tool_input.file_path`를 확인합니다:

735 735 

736```typescript theme={null}736```typescript theme={null}

737const myHook: HookCallback = async (input, toolUseID, { signal }) => {737const myHook: HookCallback = async (input, toolUseID, { signal }) => {


757 757 

758### 수정된 입력이 적용되지 않음758### 수정된 입력이 적용되지 않음

759 759 

760* `updatedInput`이 최상위 수준이 아닌 `hookSpecificOutput` 내부에 있는지 확인합니다.760* `updatedInput`이 최상위 수준이 아닌 `hookSpecificOutput` 내부에 있는지 확인합니다:

761 761 

762 ```typescript theme={null}762 ```typescript theme={null}

763 return {763 return {


769 };769 };

770 ```770 ```

771 771 

772* 입력 수정이 적용되려면 `permissionDecision: 'allow'`도 반환해야 합니다.772* 입력 수정이 적용되려면 `permissionDecision: 'allow'` 또는 `'ask'`도 반환해야 합니다.

773 773 

774* `hookSpecificOutput`에 `hookEventName`을 포함하여 출력이 어떤 훅 유형에 대한 것인지 식별합니다.774* `hookSpecificOutput`에 `hookEventName`을 포함하여 출력이 어떤 훅 유형에 대한 것인지 식별합니다.

775 775 

776### Python에서 세션 훅을 사용할 수 없음776### Python에서 세션 훅을 사용할 수 없음

777 777 

778`SessionStart` 및 `SessionEnd`는 TypeScript에서 SDK 콜백 훅으로 등록할 수 있지만 Python SDK에서는 사용할 수 없습니다(`HookEvent`는 이를 생략합니다). Python에서는 설정 파일(예: `.claude/settings.json`)에 정의된 [셸 명령 훅](/ko/hooks#hook-events)으로만 사용 가능합니다. SDK 애플리케이션에서 셸 명령 훅을 로드하려면 [`setting_sources`](/ko/agent-sdk/python#setting-source) 또는 [`settingSources`](/ko/agent-sdk/typescript#setting-source)를 사용하여 적절한 설정 소스를 포함합니다.778`SessionStart` 및 `SessionEnd`는 TypeScript에서 SDK 콜백 훅으로 등록할 수 있지만 Python SDK에서는 사용할 수 없습니다(`HookEvent`는 이를 생략합니다). Python에서는 설정 파일(예: `.claude/settings.json`)에 정의된 [셸 명령 훅](/ko/hooks#hook-events)으로만 사용 가능합니다. SDK 애플리케이션에서 셸 명령 훅을 로드하려면 [`setting_sources`](/ko/agent-sdk/python#settingsource) 또는 [`settingSources`](/ko/agent-sdk/typescript#settingsource)를 사용하여 적절한 설정 소스를 포함합니다:

779 779 

780<CodeGroup>780<CodeGroup>

781 ```python Python theme={null}781 ```python Python theme={null}

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# 시스템 프롬프트 수정

6 

7> `claude_code` 프리셋과 사용자 정의 시스템 프롬프트 중에서 선택하고, CLAUDE.md, 출력 스타일, append, 또는 완전히 사용자 정의된 프롬프트로 동작을 사용자 정의합니다.

8 

9시스템 프롬프트는 Claude의 동작, 기능 및 응답 스타일을 정의합니다. CLI 또는 IDE와 같은 코딩 도구에서 인간이 작업을 감시하고 조종하는 경우 `claude_code` 프리셋으로 시작합니다. 다른 표면, 정체성 또는 권한 모델을 가진 에이전트의 경우 자신의 프롬프트를 작성합니다.

10 

11이 페이지에서 다루는 내용:

12 

13* [시스템 프롬프트 작동 방식](#how-system-prompts-work), 프리셋, `append`가 있는 프리셋, 사용자 정의 프롬프트 중에서 선택하기 위한 결정 테이블 포함

14* [에이전트 동작 사용자 정의](#customize-agent-behavior) CLAUDE.md 파일, 출력 스타일, `append`, 또는 사용자 정의 문자열 사용

15* [네 가지 접근 방식 비교](#compare-the-four-approaches) 지속성, 범위 및 보존되는 항목별

16* [접근 방식 결합](#combine-approaches) 사용자 정의 방법을 함께 계층화

17 

18## 시스템 프롬프트 작동 방식

19 

20시스템 프롬프트는 대화 전체에서 Claude의 동작 방식을 형성하는 초기 명령 집합입니다. Agent SDK에는 이에 대한 세 가지 시작점이 있습니다:

21 

22* **최소 기본값**: TypeScript에서 `systemPrompt`를 설정하지 않거나 Python에서 `system_prompt`를 설정하지 않으면, SDK는 도구 호출을 다루지만 Claude Code의 코딩 지침, 응답 스타일 및 프로젝트 컨텍스트를 생략하는 최소 프롬프트를 사용합니다. 이는 기본적으로 전체 Claude Code 프롬프트를 사용하는 `claude -p`와 다릅니다. CLI에서 마이그레이션하고 일치하는 동작을 원하면 `claude_code` 프리셋을 설정합니다.

23* **`claude_code` 프리셋**: Claude Code CLI가 사용하는 전체 시스템 프롬프트로, 도구 사용 명령, 코드 스타일 및 형식 지침, 응답 톤 및 상세도 규칙, 보안 및 안전 명령, 작업 디렉토리 및 환경에 대한 컨텍스트를 포함합니다. TypeScript에서 `systemPrompt: { type: "preset", preset: "claude_code" }`를 설정하거나 Python에서 `system_prompt={"type": "preset", "preset": "claude_code"}`를 설정하고, 선택적으로 `append`를 사용하여 끝에 자신의 명령을 추가합니다.

24* **사용자 정의 문자열**: 직접 작성한 프롬프트입니다. SDK는 제공하는 것만 전송합니다.

25 

26### 시작점 결정

27 

28결정 요소는 에이전트가 Claude Code와 얼마나 유사한지입니다: 저장소에서 작동하는 코딩 에이전트로, 인간이 스트리밍 출력을 보고 작업을 조종합니다. 제품이 그것으로부터 멀어질수록, 자신의 프롬프트를 더 많이 작성하고 싶을 것입니다.

29 

30| 구축 중인 것 | 사용 | 얻을 수 있는 것 |

31| :---------------------------------------------------------- | :----------------------------- | :----------------------------------------------------------- |

32| 인간이 보고 조종하는 CLI 또는 IDE와 같은 코딩 도구이며, Claude Code의 기본값이 원하는 것 | `claude_code` 프리셋 | 전체 Claude Code 프롬프트: 도구 지침, 안전 규칙, 터미널 친화적 응답, 저장소 규칙 인식 |

33| 동일한 종류의 도구에 코딩 표준, 출력 형식 또는 도메인 컨텍스트와 같은 제품별 규칙 추가 | `append`가 있는 `claude_code` 프리셋 | 위의 모든 것에 프리셋 후에 추가된 명령. 제거되는 것이 없으므로 이것이 가장 낮은 위험의 사용자 정의입니다 |

34| 다른 표면, 정체성 또는 권한 모델을 가진 에이전트, 또는 비코딩 에이전트 | 사용자 정의 프롬프트 문자열 | 작성한 것만. 에이전트가 여전히 필요로 하는 도구 지침 및 안전 명령을 교체할 책임이 있습니다 |

35| 에이전트 페르소나가 없는 얇은 도구 호출 루프로, 사용자 프롬프트에서 모든 동작을 제공합니다 | `systemPrompt` 옵션 없음 | 최소 기본값: 도구 호출 지원 및 그 이상 없음 |

36 

37"Claude Code와 다름"은 일반적으로 다음 중 하나를 의미합니다:

38 

39* **다른 표면**: 출력이 이를 트리거한 사람에 의해 터미널에서 읽혀지지 않습니다. 채팅 UI, 구조화된 출력 소비자 및 비코딩 자동화는 각각 출력이 렌더링되고 검토되는 방식과 일치하는 프롬프트가 필요합니다. CI 작업이 린트 오류를 수정하거나 diff를 검토하는 것과 같은 무인 코딩 자동화는 작업 자체가 프리셋이 작성된 것이기 때문에 여전히 프리셋에 맞습니다.

40* **다른 정체성**: 에이전트는 자신을 Claude Code로 제시하지 않아야 합니다. 지원 봇, 데이터 분석 어시스턴트 또는 도메인별 에이전트는 자신의 이름, 범위 및 페르소나가 필요합니다.

41* **다른 권한 모델**: 에이전트는 인간이 각 단계를 승인하지 않고 자율적으로 실행되거나 좁은 리소스 집합에서 작동합니다. Claude Code의 프롬프트는 인간이 전체 도구 세트에 액세스할 수 있는 루프에 있다고 가정합니다.

42* **비코딩 작업**: Claude Code의 프롬프트 대부분은 코딩 지침입니다. 연구, 콘텐츠 또는 운영 에이전트의 경우, 해당 지침은 실제로 필요한 명령과 경쟁합니다.

43 

44[비교 표](#compare-the-four-approaches)는 각 사용자 정의 방법이 보존하는 것을 보여줍니다.

45 

46## 에이전트 동작 사용자 정의

47 

48출력 스타일, `append`, 그리고 사용자 정의 프롬프트 문자열은 각각 시스템 프롬프트를 직접 변경합니다. CLAUDE.md는 다른 경로를 따릅니다: SDK가 이를 읽고 그 내용을 시스템 프롬프트가 아닌 프로젝트 컨텍스트로 대화에 주입하므로, 선택한 시스템 프롬프트와 함께 동작을 형성합니다. [Skills](/ko/agent-sdk/skills), [hooks](/ko/agent-sdk/hooks), 그리고 [permissions](/ko/agent-sdk/permissions)도 시스템 프롬프트 외부에서 동작을 형성하며 자체 페이지에서 다룹니다.

49 

50### 프로젝트 수준 명령을 위한 CLAUDE.md 파일

51 

52CLAUDE.md 파일은 Claude에 지속적인 프로젝트 컨텍스트와 명령을 제공합니다. SDK는 그 내용을 시스템 프롬프트가 아닌 대화에 주입하므로, 모든 시스템 프롬프트 구성과 함께 작동합니다. CLAUDE.md에 무엇을 넣을지, 어디에 배치할지, 그리고 효과적인 명령을 작성하는 방법에 대해서는 [Claude가 프로젝트를 기억하는 방법](/ko/memory)을 참조하십시오. 이 섹션은 SDK에 특정한 내용을 다룹니다: CLAUDE.md가 로드되는 방식입니다.

53 

54SDK는 일치하는 설정 소스가 활성화될 때 CLAUDE.md를 읽습니다: `'project'`는 작업 디렉토리에서 `CLAUDE.md` 또는 `.claude/CLAUDE.md`를 로드하고, `'user'`는 `~/.claude/CLAUDE.md`를 로드합니다. 기본 `query()` 옵션은 두 소스를 모두 활성화하므로 CLAUDE.md가 자동으로 로드됩니다. TypeScript에서 `settingSources`를 명시적으로 설정하거나 Python에서 `setting_sources`를 명시적으로 설정하면, 필요한 소스를 포함하십시오. CLAUDE.md 로딩은 `claude_code` 프리셋이 아닌 설정 소스에 의해 제어됩니다.

55 

56#### SDK와 함께 CLAUDE.md 로드

57 

58CLAUDE.md를 로드하려면, `settingSources`를 CLAUDE.md가 있는 수준을 포함하도록 설정하십시오. 아래 예제는 프로젝트 수준 CLAUDE.md를 `claude_code` 프리셋과 함께 로드하므로, Claude는 전체 코딩 에이전트 프롬프트와 프로젝트의 규칙을 모두 가지고 있습니다:

59 

60<CodeGroup>

61 ```typescript TypeScript theme={null}

62 import { query } from "@anthropic-ai/claude-agent-sdk";

63 

64 const messages = [];

65 

66 for await (const message of query({

67 prompt: "Add a new React component for user profiles",

68 options: {

69 systemPrompt: {

70 type: "preset",

71 preset: "claude_code" // Use Claude Code's system prompt

72 },

73 settingSources: ["project"] // Loads CLAUDE.md from project

74 }

75 })) {

76 messages.push(message);

77 }

78 

79 // Now Claude has access to your project guidelines from CLAUDE.md

80 ```

81 

82 ```python Python theme={null}

83 from claude_agent_sdk import query, ClaudeAgentOptions

84 

85 messages = []

86 

87 async for message in query(

88 prompt="Add a new React component for user profiles",

89 options=ClaudeAgentOptions(

90 system_prompt={

91 "type": "preset",

92 "preset": "claude_code", # Use Claude Code's system prompt

93 },

94 setting_sources=["project"], # Loads CLAUDE.md from project

95 ),

96 ):

97 messages.append(message)

98 

99 # Now Claude has access to your project guidelines from CLAUDE.md

100 ```

101</CodeGroup>

102 

103CLAUDE.md는 프로젝트의 모든 세션에서 지속되며, git을 통해 팀과 공유되고, 코드 변경 없이 자동으로 검색됩니다. 빈 `settingSources` 배열을 전달하면 로드되지 않습니다.

104 

105### 지속적인 구성을 위한 출력 스타일

106 

107출력 스타일은 Claude의 시스템 프롬프트를 수정하는 저장된 구성입니다. 마크다운 파일로 저장되며 세션 및 프로젝트 전체에서 재사용할 수 있습니다.

108 

109#### 출력 스타일 생성

110 

111출력 스타일은 프론트매터에 `name`과 `description`이 있는 마크다운 파일이며, 그 뒤에 프롬프트 내용이 있습니다. 모든 프로젝트에서 사용 가능한 사용자 수준 스타일의 경우 `~/.claude/output-styles/`에 저장하거나, 팀과 커밋하고 공유할 수 있는 프로젝트 수준 스타일의 경우 저장소의 `.claude/output-styles/`에 저장하십시오.

112 

113아래 예제는 코드 리뷰 담당자 페르소나를 정의합니다. 프로젝트 전체에서 사용 가능하도록 `~/.claude/output-styles/code-reviewer.md`로 저장하십시오:

114 

115```markdown ~/.claude/output-styles/code-reviewer.md theme={null}

116---

117name: Code Reviewer

118description: Thorough code review assistant

119---

120 

121You are an expert code reviewer.

122 

123For every code submission:

1241. Check for bugs and security issues

1252. Evaluate performance

1263. Suggest improvements

1274. Rate code quality (1-10)

128```

129 

130#### 출력 스타일 활성화

131 

132생성되면, 다음을 통해 출력 스타일을 활성화합니다:

133 

134* **CLI**: `/config`를 실행하고 출력 스타일을 선택합니다

135* **설정**: `.claude/settings.local.json`에서 `outputStyle`을 설정합니다

136* **TypeScript SDK**: `options.outputStyle`을 스타일의 이름으로 설정합니다

137 

138Python SDK는 프로그래밍 방식으로 출력 스타일을 선택하는 옵션이 없습니다. `.claude/settings.local.json`에 쓸 수 없는 코드 전용 배포의 경우, `append` 또는 사용자 정의 프롬프트 문자열을 대신 사용하십시오.

139 

140**SDK 사용자를 위한 참고:** 출력 스타일은 `settingSources: ['user']` 또는 `settingSources: ['project']`(TypeScript) / `setting_sources=["user"]` 또는 `setting_sources=["project"]`(Python)을 옵션에 포함할 때 로드됩니다.

141 

142### `claude_code` 프리셋에 추가

143 

144Claude Code 프리셋을 `append` 속성과 함께 사용하여 모든 기본 제공 기능을 유지하면서 사용자 정의 명령을 추가할 수 있습니다.

145 

146<CodeGroup>

147 ```typescript TypeScript theme={null}

148 import { query } from "@anthropic-ai/claude-agent-sdk";

149 

150 const messages = [];

151 

152 for await (const message of query({

153 prompt: "Help me write a Python function to calculate fibonacci numbers",

154 options: {

155 systemPrompt: {

156 type: "preset",

157 preset: "claude_code",

158 append: "Always include detailed docstrings and type hints in Python code."

159 }

160 }

161 })) {

162 messages.push(message);

163 if (message.type === "assistant") {

164 console.log(message.message.content);

165 }

166 }

167 ```

168 

169 ```python Python theme={null}

170 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage

171 

172 messages = []

173 

174 async for message in query(

175 prompt="Help me write a Python function to calculate fibonacci numbers",

176 options=ClaudeAgentOptions(

177 system_prompt={

178 "type": "preset",

179 "preset": "claude_code",

180 "append": "Always include detailed docstrings and type hints in Python code.",

181 }

182 ),

183 ):

184 messages.append(message)

185 if isinstance(message, AssistantMessage):

186 print(message.content)

187 ```

188</CodeGroup>

189 

190#### 사용자 및 머신 전체에서 프롬프트 캐싱 개선

191 

192기본적으로, 동일한 `claude_code` 프리셋과 `append` 텍스트를 사용하는 두 세션은 다른 작업 디렉토리에서 실행되는 경우 프롬프트 캐시 항목을 공유할 수 없습니다. 이는 프리셋이 `append` 텍스트 앞의 시스템 프롬프트에 세션별 컨텍스트를 포함하기 때문입니다: 작업 디렉토리, git 저장소 여부, 플랫폼, 활성 셸, OS 버전, 그리고 자동 메모리 경로. 해당 컨텍스트의 차이는 다른 시스템 프롬프트를 생성하고 캐시 미스를 초래합니다. CLAUDE.md 내용은 SDK가 이를 시스템 프롬프트가 아닌 대화에 주입하기 때문에 시스템 프롬프트 캐시에 영향을 주지 않습니다.

193 

194세션 전체에서 시스템 프롬프트를 동일하게 만들려면, TypeScript에서 `excludeDynamicSections: true`를 설정하거나 Python에서 `"exclude_dynamic_sections": True`를 설정하십시오. 세션별 컨텍스트는 첫 번째 사용자 메시지로 이동하여, 정적 프리셋과 `append` 텍스트만 시스템 프롬프트에 남으므로 동일한 구성이 사용자 및 머신 전체에서 캐시 항목을 공유합니다.

195 

196<Note>

197 `excludeDynamicSections`는 `@anthropic-ai/claude-agent-sdk` v0.2.98 이상 또는 Python의 경우 `claude-agent-sdk` v0.1.58 이상이 필요합니다. 프리셋 객체 형식에만 적용되며 `systemPrompt`가 문자열일 때는 효과가 없습니다.

198</Note>

199 

200다음 예제는 공유 `append` 블록을 `excludeDynamicSections`와 쌍으로 만들어 다양한 디렉토리에서 실행되는 에이전트 플릿이 동일한 캐시된 시스템 프롬프트를 재사용할 수 있도록 합니다:

201 

202<CodeGroup>

203 ```typescript TypeScript theme={null}

204 import { query } from "@anthropic-ai/claude-agent-sdk";

205 

206 for await (const message of query({

207 prompt: "Triage the open issues in this repo",

208 options: {

209 systemPrompt: {

210 type: "preset",

211 preset: "claude_code",

212 append: "You operate Acme's internal triage workflow. Label issues by component and severity.",

213 excludeDynamicSections: true

214 }

215 }

216 })) {

217 // ...

218 }

219 ```

220 

221 ```python Python theme={null}

222 from claude_agent_sdk import query, ClaudeAgentOptions

223 

224 async for message in query(

225 prompt="Triage the open issues in this repo",

226 options=ClaudeAgentOptions(

227 system_prompt={

228 "type": "preset",

229 "preset": "claude_code",

230 "append": "You operate Acme's internal triage workflow. Label issues by component and severity.",

231 "exclude_dynamic_sections": True,

232 },

233 ),

234 ):

235 ...

236 ```

237</CodeGroup>

238 

239**트레이드오프:** 작업 디렉토리, git 저장소 플래그, 플랫폼, 활성 셸, OS 버전, 그리고 자동 메모리 경로는 여전히 Claude에 도달하지만, 시스템 프롬프트가 아닌 첫 번째 사용자 메시지의 일부로 도달합니다. 사용자 메시지의 명령은 시스템 프롬프트의 동일한 텍스트보다 약간 덜 가중치를 가지므로, Claude는 현재 디렉토리 또는 자동 메모리 경로에 대해 추론할 때 이를 덜 강하게 의존할 수 있습니다. 교차 세션 캐시 재사용이 최대한 권위 있는 환경 컨텍스트보다 더 중요할 때 이 옵션을 활성화하십시오.

240 

241비대화형 CLI 모드의 동등한 플래그는 [`--exclude-dynamic-system-prompt-sections`](/ko/cli-reference)를 참조하십시오.

242 

243### 사용자 정의 시스템 프롬프트

244 

245사용자 정의 문자열을 `systemPrompt`로 제공하여 기본값을 완전히 자신의 명령으로 바꿀 수 있습니다.

246 

247<CodeGroup>

248 ```typescript TypeScript theme={null}

249 import { query } from "@anthropic-ai/claude-agent-sdk";

250 

251 const customPrompt = `You are a Python coding specialist.

252 Follow these guidelines:

253 - Write clean, well-documented code

254 - Use type hints for all functions

255 - Include comprehensive docstrings

256 - Prefer functional programming patterns when appropriate

257 - Always explain your code choices`;

258 

259 const messages = [];

260 

261 for await (const message of query({

262 prompt: "Create a data processing pipeline",

263 options: {

264 systemPrompt: customPrompt

265 }

266 })) {

267 messages.push(message);

268 if (message.type === "assistant") {

269 console.log(message.message.content);

270 }

271 }

272 ```

273 

274 ```python Python theme={null}

275 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage

276 

277 custom_prompt = """You are a Python coding specialist.

278 Follow these guidelines:

279 - Write clean, well-documented code

280 - Use type hints for all functions

281 - Include comprehensive docstrings

282 - Prefer functional programming patterns when appropriate

283 - Always explain your code choices"""

284 

285 messages = []

286 

287 async for message in query(

288 prompt="Create a data processing pipeline",

289 options=ClaudeAgentOptions(system_prompt=custom_prompt),

290 ):

291 messages.append(message)

292 if isinstance(message, AssistantMessage):

293 print(message.content)

294 ```

295</CodeGroup>

296 

297## 네 가지 방식 모두 비교

298 

299네 가지 사용자 정의 방법은 위치, 공유 방식, `claude_code` 사전에서 보존되는 내용이 다릅니다.

300 

301| 기능 | CLAUDE.md | 출력 스타일 | `systemPrompt`과 함께 추가 | 사용자 정의 `systemPrompt` |

302| ------------- | --------- | ----------- | --------------------- | --------------------- |

303| **지속성** | 프로젝트별 파일 | 파일로 저장 | 세션만 | 세션만 |

304| **재사용성** | 프로젝트별 | 프로젝트 전체 | 코드 중복 | 코드 중복 |

305| **관리** | 파일 시스템 | CLI + 파일 | 코드에서 | 코드에서 |

306| **기본 도구** | 유지됨 | 유지됨 | 유지됨 | 손실됨(포함되지 않은 경우) |

307| **기본 제공 안전** | 유지됨 | 유지됨 | 유지됨 | 추가해야 함 |

308| **환경 컨텍스트** | 자동 | 자동 | 자동 | 제공해야 함 |

309| **사용자 정의 수준** | 추가만 | 기본값 바꾸기 | 추가만 | 완전 제어 |

310| **버전 제어** | 프로젝트와 함께 | 예 | 코드와 함께 | 코드와 함께 |

311| **범위** | 프로젝트별 | 사용자 또는 프로젝트 | 코드 세션 | 코드 세션 |

312 

313"추가와 함께"는 TypeScript에서 `systemPrompt: { type: "preset", preset: "claude_code", append: "..." }`를 사용하거나 Python에서 `system_prompt={"type": "preset", "preset": "claude_code", "append": "..."}`를 사용하는 것을 의미합니다. CLAUDE.md는 시스템 프롬프트 자체를 변경하지 않습니다. SDK는 프로젝트 컨텍스트로 대화에 내용을 주입합니다.

314 

315## 사용 사례 및 모범 사례

316 

317### CLAUDE.md를 사용할 때

318 

319CLAUDE.md는 세션에서 사용하는 시스템 프롬프트와 관계없이 프로젝트의 모든 세션에 적용되어야 하는 지침에 사용합니다: 코딩 표준, 일반적인 명령, 아키텍처 컨텍스트, 팀 규칙. CLAUDE.md는 저장소에 커밋되므로 설명하는 코드와 동기화된 상태를 유지합니다. 전체 지침은 [CLAUDE.md에 추가할 때](/ko/memory#when-to-add-to-claude-md)를 참조하십시오.

320 

321CLAUDE.md 파일은 `project` 설정 소스가 활성화될 때 로드되며, 이는 기본 `query()` 옵션에 대해 활성화됩니다. TypeScript에서 `settingSources`를 명시적으로 설정하거나 Python에서 `setting_sources`를 명시적으로 설정하는 경우, 프로젝트 수준 CLAUDE.md 로드를 유지하기 위해 `'project'`를 포함합니다.

322 

323### 출력 스타일을 사용할 때

324 

325출력 스타일은 애플리케이션 코드를 변경하지 않고 CLI와 SDK 전체에서 재사용하려는 페르소나를 위한 것입니다. `.claude/output-styles`의 파일로 존재하므로 동일한 페르소나는 CLI의 `/config`에서 그리고 일치하는 설정 소스를 로드하는 모든 SDK 세션에서 사용할 수 있습니다.

326 

327**최적의 용도:**

328 

329* 세션 전체에서 지속적인 동작 변경

330* 팀 공유 구성

331* 코드 검토자, 데이터 과학자 또는 DevOps 어시스턴트와 같은 전문화된 어시스턴트

332* 버전 관리가 필요한 복잡한 프롬프트 수정

333 

334**예제:**

335 

336* 전용 SQL 최적화 어시스턴트 생성

337* 보안 중심 코드 검토자 구축

338* 특정 교육학을 가진 교육 어시스턴트 개발

339 

340### `systemPrompt`과 함께 추가를 사용할 때

341 

342`claude_code` 프리셋이 이미 제품에 맞고 추가 지침만 계층화하면 되는 경우 `append`를 사용합니다. 프리셋의 도구 지침, 안전 규칙, 코딩 규칙을 다시 구현하지 않고도 유지합니다.

343 

344**최적의 용도:**

345 

346* 특정 코딩 표준 또는 선호도 추가

347* 출력 형식 사용자 정의

348* 도메인별 지식 추가

349* 응답 상세도 수정

350* 도구 지침을 잃지 않고 Claude Code의 기본 동작 향상

351 

352### 사용자 정의 `systemPrompt`를 사용할 때

353 

354[시작점 결정](#decide-on-a-starting-point)에 설명된 대로 에이전트의 표면, 정체성 또는 권한 모델이 Claude Code의 것과 다른 경우 사용자 정의 프롬프트를 사용합니다. 에이전트가 필요한 도구 지침 및 안전 규칙을 포함하여 전체 지침 집합을 정의합니다.

355 

356**최적의 용도:**

357 

358* Claude의 동작에 대한 완전한 제어

359* 전문화된 단일 세션 작업

360* 새로운 프롬프트 전략 테스트

361* 기본 도구가 필요하지 않은 상황

362* 고유한 동작을 가진 전문화된 에이전트 구축

363 

364## 방식 결합

365 

366이러한 방식들은 구성됩니다. 지속적인 출력 스타일 또는 CLAUDE.md는 장기적인 동작을 설정하고, `append`는 저장된 구성을 건드리지 않으면서 세션별 지침을 그 위에 계층화합니다.

367 

368### 출력 스타일과 세션별 추가 결합

369 

370아래 예제는 Code Reviewer 출력 스타일이 이미 활성화되어 있다고 가정합니다. `append` 블록은 세션별 초점 영역을 페르소나 위에 계층화하므로, 단일 검토 세션이 저장된 출력 스타일을 변경하지 않으면서 OAuth 및 토큰 저장소에 우선순위를 지정할 수 있습니다:

371 

372<CodeGroup>

373 ```typescript TypeScript theme={null}

374 import { query } from "@anthropic-ai/claude-agent-sdk";

375 

376 // Assuming "Code Reviewer" output style is active (via /config or settings)

377 // Add session-specific focus areas

378 const messages = [];

379 

380 for await (const message of query({

381 prompt: "Review this authentication module",

382 options: {

383 systemPrompt: {

384 type: "preset",

385 preset: "claude_code",

386 append: `

387 For this review, prioritize:

388 - OAuth 2.0 compliance

389 - Token storage security

390 - Session management

391 `

392 }

393 }

394 })) {

395 messages.push(message);

396 }

397 ```

398 

399 ```python Python theme={null}

400 from claude_agent_sdk import query, ClaudeAgentOptions

401 

402 # Assuming "Code Reviewer" output style is active (via /config or settings)

403 # Add session-specific focus areas

404 messages = []

405 

406 async for message in query(

407 prompt="Review this authentication module",

408 options=ClaudeAgentOptions(

409 system_prompt={

410 "type": "preset",

411 "preset": "claude_code",

412 "append": """

413 For this review, prioritize:

414 - OAuth 2.0 compliance

415 - Token storage security

416 - Session management

417 """,

418 }

419 ),

420 ):

421 messages.append(message)

422 ```

423</CodeGroup>

424 

425## 참고 항목

426 

427* [출력 스타일](/ko/output-styles): CLI용 출력 스타일을 생성, 관리 및 공유합니다. 파일 형식 및 저장 위치를 포함합니다.

428* [Claude가 프로젝트를 기억하는 방식](/ko/memory): CLAUDE.md에 무엇을 넣을지, 어디에 배치할지, 효과적인 프로젝트 지침을 작성하는 방법

429* [TypeScript SDK 참조](/ko/agent-sdk/typescript): `systemPrompt`, `settingSources`, `outputStyle`을 포함한 전체 `Options` 타입

430* [Python SDK 참조](/ko/agent-sdk/python): `system_prompt` 및 `setting_sources`를 포함한 전체 `ClaudeAgentOptions` 타입

431* [설정](/ko/settings): 출력 스타일 및 기타 구성이 저장되는 위치를 포함한 `settings.json` 참조

Details

396| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | MCP 서버 구성 |396| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | MCP 서버 구성 |

397| `model` | `string` | CLI의 기본값 | 사용할 Claude 모델 |397| `model` | `string` | CLI의 기본값 | 사용할 Claude 모델 |

398| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | 에이전트 결과의 출력 형식을 정의합니다. [구조화된 출력](/ko/agent-sdk/structured-outputs) 참조 |398| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | 에이전트 결과의 출력 형식을 정의합니다. [구조화된 출력](/ko/agent-sdk/structured-outputs) 참조 |

399| `outputStyle` | `string` | `undefined` | 세션에 대해 활성화할 [출력 스타일](/ko/output-styles)의 이름입니다. 스타일은 `.claude/output-styles/`와 같은 로드된 `settingSources` 위치에 존재해야 합니다. [출력 스타일 활성화](/ko/agent-sdk/modifying-system-prompts#activate-an-output-style) 참조 |

399| `pathToClaudeCodeExecutable` | `string` | 번들된 네이티브 바이너리에서 자동 해결 | Claude Code 실행 파일의 경로입니다. 설치 중에 선택적 종속성을 건너뛰었거나 플랫폼이 지원되는 집합에 없을 때만 필요합니다 |400| `pathToClaudeCodeExecutable` | `string` | 번들된 네이티브 바이너리에서 자동 해결 | Claude Code 실행 파일의 경로입니다. 설치 중에 선택적 종속성을 건너뛰었거나 플랫폼이 지원되는 집합에 없을 때만 필요합니다 |

400| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | 세션의 권한 모드 |401| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | 세션의 권한 모드 |

401| `permissionPromptToolName` | `string` | `undefined` | 권한 프롬프트용 MCP 도구 이름 |402| `permissionPromptToolName` | `string` | `undefined` | 권한 프롬프트용 MCP 도구 이름 |

Details

12 12 

13명확화 질문의 경우 Claude가 질문과 옵션을 생성합니다. 사용자의 역할은 이를 사용자에게 제시하고 선택 사항을 반환하는 것입니다. 이 흐름에 자신의 질문을 추가할 수 없습니다. 사용자에게 직접 물어봐야 할 사항이 있으면 애플리케이션 로직에서 별도로 수행하십시오.13명확화 질문의 경우 Claude가 질문과 옵션을 생성합니다. 사용자의 역할은 이를 사용자에게 제시하고 선택 사항을 반환하는 것입니다. 이 흐름에 자신의 질문을 추가할 수 없습니다. 사용자에게 직접 물어봐야 할 사항이 있으면 애플리케이션 로직에서 별도로 수행하십시오.

14 14 

15콜백은 무기한 대기 상태로 유지될 수 있습니다. 콜백이 반환될 때까지 실행이 일시 중지되며, SDK는 쿼리 자체가 취소될 때만 대기를 취소합니다. 사용자가 프로세스가 합리적으로 실행 상태를 유지할 수 있는 것보다 더 오래 응답하는 데 시간이 걸릴 수 있다면, TypeScript SDK는 [`defer` 훅 결정](/ko/hooks#defer-a-tool-call-for-later)을 지원하므로 프로세스를 종료하고 나중에 지속된 세션에서 재개할 수 있습니다. 이 옵션은 Python SDK에서는 사용할 수 없습니다.15콜백은 무기한 대기 상태로 유지될 수 있습니다. 콜백이 반환될 때까지 실행이 일시 중지되며, SDK는 쿼리 자체가 취소될 때만 대기를 취소합니다. 사용자가 프로세스가 합리적으로 실행 상태를 유지할 수 있는 것보다 더 오래 응답하는 데 시간이 걸릴 수 있다면, [`defer` 훅 결정](/ko/hooks#defer-a-tool-call-for-later)을 반환하십시오. 이를 통해 프로세스를 종료하고 나중에 지속된 세션에서 재개할 수 있습니다.

16 16 

17이 가이드는 각 유형의 요청을 감지하고 적절하게 응답하는 방법을 보여줍니다.17이 가이드는 각 유형의 요청을 감지하고 적절하게 응답하는 방법을 보여줍니다.

18 18 


232 232 

233* **승인**: 도구가 Claude가 요청한 대로 실행되도록 허용233* **승인**: 도구가 Claude가 요청한 대로 실행되도록 허용

234* **변경 사항과 함께 승인**: 실행 전에 입력 수정(예: 경로 정제, 제약 조건 추가)234* **변경 사항과 함께 승인**: 실행 전에 입력 수정(예: 경로 정제, 제약 조건 추가)

235* **승인 및 기억**: 제안된 권한 규칙을 다시 에코하여 일치하는 호출이 다음 번에 프롬프트를 건너뛰도록 함

235* **거부**: 도구를 차단하고 이유를 Claude에 알림236* **거부**: 도구를 차단하고 이유를 Claude에 알림

236* **대안 제안**: 차단하지만 사용자가 원하는 것으로 Claude를 안내237* **대안 제안**: 차단하지만 사용자가 원하는 것으로 Claude를 안내

237* **완전히 리디렉션**: [스트리밍 입력](/ko/agent-sdk/streaming-vs-single-mode)을 사용하여 Claude에 완전히 새로운 지시를 보냄238* **완전히 리디렉션**: [스트리밍 입력](/ko/agent-sdk/streaming-vs-single-mode)을 사용하여 Claude에 완전히 새로운 지시를 보냄


297 </CodeGroup>298 </CodeGroup>

298 </Tab>299 </Tab>

299 300 

301 <Tab title="승인 및 기억">

302 사용자가 승인하고 이런 종류의 호출에 대해 다시 묻지 않기를 원합니다. 세 번째 콜백 인수는 `suggestions`을 포함하며, 이는 준비된 [`PermissionUpdate`](/ko/agent-sdk/typescript#permissionupdate) 항목의 배열입니다. `updatedPermissions`에서 하나를 다시 에코하여 적용합니다. `localSettings` 대상이 있는 제안은 규칙을 `.claude/settings.local.json`에 작성하므로 향후 세션에서 일치하는 호출에 대한 프롬프트를 건너뜁니다.

303 

304 Python 예제는 `claude-agent-sdk` 0.1.80 이상이 필요합니다.

305 

306 <CodeGroup>

307 ```python Python theme={null}

308 async def can_use_tool(tool_name, input_data, context):

309 choice = await ask_user(f"Allow {tool_name}?", ["once", "always", "no"])

310 

311 if choice == "always":

312 persist = [

313 s for s in context.suggestions if s.destination == "localSettings"

314 ]

315 return PermissionResultAllow(

316 updated_input=input_data, updated_permissions=persist

317 )

318 if choice == "once":

319 return PermissionResultAllow(updated_input=input_data)

320 return PermissionResultDeny(message="User declined")

321 ```

322 

323 ```typescript TypeScript theme={null}

324 canUseTool: async (toolName, input, { suggestions = [] }) => {

325 const choice = await askUser(`Allow ${toolName}?`, ["once", "always", "no"]);

326 

327 if (choice === "always") {

328 const persist = suggestions.filter(

329 (s) => s.destination === "localSettings"

330 );

331 return {

332 behavior: "allow",

333 updatedInput: input,

334 updatedPermissions: persist

335 };

336 }

337 if (choice === "once") {

338 return { behavior: "allow", updatedInput: input };

339 }

340 return { behavior: "deny", message: "User declined" };

341 };

342 ```

343 </CodeGroup>

344 </Tab>

345 

300 <Tab title="거부">346 <Tab title="거부">

301 사용자가 이 작업이 발생하기를 원하지 않습니다. 도구를 차단하고 이유를 설명하는 메시지를 제공합니다. Claude는 이 메시지를 보고 다른 접근 방식을 시도할 수 있습니다.347 사용자가 이 작업이 발생하기를 원하지 않습니다. 도구를 차단하고 이유를 설명하는 메시지를 제공합니다. Claude는 이 메시지를 보고 다른 접근 방식을 시도할 수 있습니다.

302 348 


333 ```python Python theme={null}379 ```python Python theme={null}

334 async def can_use_tool(tool_name, input_data, context):380 async def can_use_tool(tool_name, input_data, context):

335 if tool_name == "Bash" and "rm" in input_data.get("command", ""):381 if tool_name == "Bash" and "rm" in input_data.get("command", ""):

336 # 사용자가 삭제를 원하지 않음, 대신 보관을 제안382 # 사용자가 삭제를 원하지 않음, 대신 압축을 제안

337 return PermissionResultDeny(383 return PermissionResultDeny(

338 message="User doesn't want to delete files. They asked if you could compress them into an archive instead."384 message="User doesn't want to delete files. They asked if you could compress them into an archive instead."

339 )385 )


343 ```typescript TypeScript theme={null}389 ```typescript TypeScript theme={null}

344 canUseTool: async (toolName, input) => {390 canUseTool: async (toolName, input) => {

345 if (toolName === "Bash" && input.command.includes("rm")) {391 if (toolName === "Bash" && input.command.includes("rm")) {

346 // 사용자가 삭제를 원하지 않음, 대신 보관을 제안392 // 사용자가 삭제를 원하지 않음, 대신 압축을 제안

347 return {393 return {

348 behavior: "deny",394 behavior: "deny",

349 message:395 message:

agent-teams.md +2 −0

Details

129Use Sonnet for each teammate.129Use Sonnet for each teammate.

130```130```

131 131 

132팀원들은 기본적으로 리더의 `/model` 선택을 상속하지 않습니다. 프롬프트가 지정하지 않을 때 사용되는 모델을 변경하려면, `/config`에서 **기본 팀원 모델**을 설정합니다. \*\*기본값(리더의 모델)\*\*을 선택하여 팀원들이 리더의 현재 모델을 따르도록 합니다.

133 

132### 팀원을 위한 계획 승인 요구134### 팀원을 위한 계획 승인 요구

133 135 

134복잡하거나 위험한 작업의 경우, 팀원들이 구현하기 전에 계획하도록 요구할 수 있습니다. 팀원은 리더가 접근 방식을 승인할 때까지 읽기 전용 계획 모드에서 작동합니다:136복잡하거나 위험한 작업의 경우, 팀원들이 구현하기 전에 계획하도록 요구할 수 있습니다. 팀원은 리더가 접근 방식을 승인할 때까지 읽기 전용 계획 모드에서 작동합니다:

agent-view.md +34 −15

Details

26 26 

27## 빠른 시작27## 빠른 시작

28 28 

29이 연습은 에이전트 뷰를 열고, 세션을 디스패치하고, 엿보기 패널에서 답변하고, 연결하는 방법을 보여줍니다.29이 연습은 에이전트 뷰를 열고, 세션을 디스패치하고, 엿보기 패널에서 답변하고, 전체 대화를 위해 연결하는 방법을 보여줍니다.

30 30 

31<Steps>31<Steps>

32 <Step title="에이전트 뷰 열기">32 <Step title="에이전트 뷰 열기">


40 </Step>40 </Step>

41 41 

42 <Step title="세션 디스패치">42 <Step title="세션 디스패치">

43 입력에 프롬프트를 입력하고 `Enter`를 누릅니다. 새로운 세션이 시작되고 작업 중인지, 입력을 기다리는지, 완료되었는지를 보여주는 행으로 나타납니다. 원하는 만큼 많은 세션을 병렬로 실행하려면 반복합니다.43 입력에 프롬프트를 입력하고 `Enter`를 누릅니다. 새로운 세션이 시작되고 작업 중인지, 입력을 기다리는지, 완료되었는지를 보여주는 행으로 나타납니다. 여러 세션을 병렬로 실행하려면 반복합니다. 각 세션은 구독 할당량을 독립적으로 사용하므로 한 번에 많은 세션을 디스패치하기 전에 [제한사항](#limitations)을 참조하십시오.

44 </Step>44 </Step>

45 45 

46 <Step title="엿보기 및 답변">46 <Step title="엿보기 및 답변">


60 60 

61`claude agents`를 실행하여 에이전트 뷰를 엽니다. 전체 터미널을 차지하고 상태별로 그룹화된 모든 세션을 나열하며, 고정된 세션과 입력이 필요한 세션이 맨 위에 있습니다. 각 행은 세션의 이름, 현재 활동 및 마지막 변경 이후 경과 시간을 보여줍니다.61`claude agents`를 실행하여 에이전트 뷰를 엽니다. 전체 터미널을 차지하고 상태별로 그룹화된 모든 세션을 나열하며, 고정된 세션과 입력이 필요한 세션이 맨 위에 있습니다. 각 행은 세션의 이름, 현재 활동 및 마지막 변경 이후 경과 시간을 보여줍니다.

62 62 

63목록은 머신에 전역이며 작업 중인 프로젝트나 워크트리에 관계없이 모든 백그라운드 세션을 포함합니다. 다른 터미널에서 열려 있는 대화형 세션은 [백그라운드로 보낼](#from-inside-a-session) 때까지 나타나지 않으며, [서브에이전트](/ko/sub-agents)는 별도의 행으로 나열되지 않습니다.63목록은 [config directory](#how-background-sessions-are-hosted)의 모든 백그라운드 세션을 포함하며, 작업 중인 프로젝트나 worktree에 관계없이 저장소에서 시작된 세션과 다른 worktree에서 시작된 세션이 함께 나타납니다. 다른 터미널에서 열려 있는 대화형 세션은 [백그라운드로 보낼](#from-inside-a-session) 때까지 나타나지 않으며, [서브에이전트](/ko/sub-agents)는 별도의 행으로 나열되지 않습니다.

64 64 

65```text theme={null}65```text theme={null}

66고정됨66고정됨

67 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m67 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m

68 68 

69검토 준비 완료69검토 준비 완료

70 ∙ jump physics github.com/anthropics/example/pull/2048 2h70 ∙ jump physics github.com/anthropics/example/pull/20482h

71 71 

72입력 필요72입력 필요

73 ✻ power-up design needs input: double jump or wall climb? 1m73 ✻ power-up design needs input: double jump or wall climb? 1m


82 … 6 more82 … 6 more

83```83```

84 84 

85아이콘은 세션의 상태를 나타냅니다:85각 행의 아이콘은 두 가지 신호를 전달합니다. 표시기는 세션의 상태를 나타내고, 아이콘의 모양은 기본 프로세스가 여전히 실행 중인지 여부를 나타냅니다. 상태는 다음과 같습니다:

86 86 

87| 아이콘 | 상태 | 의미 |87| 표시기 | 상태 | 의미 |

88| :---- | :---- | :---------------------------------- |88| :---- | :---- | :---------------------------------- |

89| 애니메이션 | 작업 중 | Claude가 적극적으로 도구를 실행하거나 응답을 생성 중 |89| 애니메이션 | 작업 중 | Claude가 적극적으로 도구를 실행하거나 응답을 생성 중 |

90| 노란색 | 입력 필요 | Claude가 입력을 기다리는 중, 보통 권한 결정 또는 답변 |90| 노란색 | 입력 필요 | Claude가 입력을 기다리는 중, 보통 권한 결정 또는 답변 |


99 99 

100세션은 디스크에 유지됩니다: 터미널을 닫거나 자동 업데이트가 발생해도 손실되지 않으며, `claude agents`를 다시 열면 모두 표시됩니다. 머신이 절전 상태이거나 종료되면 실행 중인 세션이 중지됩니다; `claude respawn --all`로 다시 시작합니다.100세션은 디스크에 유지됩니다: 터미널을 닫거나 자동 업데이트가 발생해도 손실되지 않으며, `claude agents`를 다시 열면 모두 표시됩니다. 머신이 절전 상태이거나 종료되면 실행 중인 세션이 중지됩니다; `claude respawn --all`로 다시 시작합니다.

101 101 

102각 행의 한 줄 요약은 구성된 [Haiku 클래스 모델](/ko/model-config)에 의해 생성되므로 행은 세션이 무엇을 하고 있는지, 무엇이 필요한지, 또는 트랜스크립트를 열지 않고도 무엇을 생성했는지 알려줄 수 있습니다. 요약은 일반 제공자를 통한 하나의 짧은 Haiku 클래스 요청이며, 세션 자체와 동일한 [데이터 사용 약관](/ko/data-usage)에 따라 청구되고 처리됩니다.102각 행의 한 줄 요약은 구성된 [Haiku 클래스 모델](/ko/model-config)에 의해 생성되므로 행은 세션이 무엇을 하고 있는지, 무엇이 필요한지, 또는 트랜스크립트를 열지 않고도 무엇을 생성했는지 알려줄 수 있습니다. 세션이 적극적으로 작동하는 동안 요약은 최대 15초마다 한 번, 그리고 각 턴이 끝날 때 한 번 새로고침됩니다. 각 새로고침은 일반 제공자를 통한 하나의 짧은 Haiku 클래스 요청이며, 세션 자체와 동일한 [데이터 사용 약관](/ko/data-usage)에 따라 청구되고 처리됩니다.

103 103 

104세션이 풀 리퀘스트를 열면 행은 PR 링크와 CI 검사의 상태 표시기를 보여줍니다. 대부분의 작업에서 행은 작업을 수집하는 방법입니다: 검사가 통과하면 리퀘스트를 검토하고 병합합니다.104세션이 풀 리퀘스트를 열면 상태 점이 행의 오른쪽 가장자리에 나타나며, 하이퍼링크를 지원하는 터미널에서 풀 리퀘스트에 연결됩니다. 세션이 이상의 리퀘스트를 열었을 개수가 앞에 나타나고 색상은 가장 주의가 필요한 것을 반영합니다.

105 

106| 점 색상 | 풀 리퀘스트 상태 |

107| :--- | :---------------------- |

108| 노란색 | 검사 또는 검토 대기 중, 또는 검사 실패 |

109| 녹색 | 검사 통과 및 검토 차단 없음 |

110| 보라색 | 병합됨 |

111| 회색 | 초안 또는 닫힘 |

112 

113대부분의 작업에서 이 행은 결과를 수집하는 방법입니다: 점이 녹색으로 변하면 풀 리퀘스트를 검토하고 병합합니다.

105 114 

106### 엿보기 및 답변115### 엿보기 및 답변

107 116 


121 130 

122분리는 백그라운드 세션을 중지하지 않습니다: `←`, `Ctrl+C`, `Ctrl+D`, `Ctrl+Z` 및 `/exit`은 모두 실행 상태로 둡니다. 세션 내에서 세션을 종료하려면 `/stop`을 실행합니다.131분리는 백그라운드 세션을 중지하지 않습니다: `←`, `Ctrl+C`, `Ctrl+D`, `Ctrl+Z` 및 `/exit`은 모두 실행 상태로 둡니다. 세션 내에서 세션을 종료하려면 `/stop`을 실행합니다.

123 132 

124에이전트 뷰를 사용한 후 빈 프롬프트에서 `←`를 누르면 연결한 세션뿐만 아니라 모든 Claude Code 세션에서 작동합니다. 현재 세션이 미리 선택된 상태로 에이전트 뷰를 열어 터미널을 떠나지 않고 세션을 전환할 수 있습니다.133에이전트 뷰에서 디스패치하거나 백그라운드로 보낸 , 빈 프롬프트에서 `←`를 누르면 에이전트 뷰에서 연결한 세션뿐만 아니라 모든 Claude Code 세션에서 작동합니다. 현재 세션을 백그라운드로 보내고 해당 세션이 미리 선택된 상태로 에이전트 뷰를 열어 터미널을 떠나지 않고 세션을 전환할 수 있습니다. `/config`에서 이 단축키를 끌 수 있습니다.

125 134 

126### 목록 구성135### 목록 구성

127 136 


183 192 

184`/`를 입력하여 [스킬](/ko/skills)을 디스패치합니다. 반복되는 작업을 스킬로 패키징하면 프롬프트를 다시 입력하지 않고 에이전트 뷰에서 동일한 워크플로우를 여러 번 시작할 수 있습니다. 빈 입력에서 `Tab`을 눌러 모든 디스패치 가능한 서브에이전트를 검색하거나, 제안이 표시될 때 강조된 제안을 적용합니다.193`/`를 입력하여 [스킬](/ko/skills)을 디스패치합니다. 반복되는 작업을 스킬로 패키징하면 프롬프트를 다시 입력하지 않고 에이전트 뷰에서 동일한 워크플로우를 여러 번 시작할 수 있습니다. 빈 입력에서 `Tab`을 눌러 모든 디스패치 가능한 서브에이전트를 검색하거나, 제안이 표시될 때 강조된 제안을 적용합니다.

185 194 

195동일한 `@name`이 서브에이전트와 형제 저장소 모두와 일치하면 서브에이전트가 우선합니다. `@` 없는 첫 단어 형식도 모든 서브에이전트 이름에 적용되므로 서브에이전트 이름 중 하나와 일치하는 단어로 시작하는 프롬프트는 해당 서브에이전트를 디스패치합니다. 명시적으로 하려면 `@` 형식을 사용합니다.

196 

186#### 특정 디렉토리로 디스패치197#### 특정 디렉토리로 디스패치

187 198 

188새로운 세션은 에이전트 뷰를 연 디렉토리에서 실행됩니다. 다른 디렉토리를 대상으로 하려면:199새로운 세션은 에이전트 뷰를 연 디렉토리에서 실행됩니다. 다른 디렉토리를 대상으로 하려면:


193 204 

194에이전트 뷰가 디렉토리별로 그룹화되면 강조된 행의 디렉토리가 디스패치 대상이 되므로 그룹으로 스크롤하고 경로를 다시 입력하지 않고 디스패치할 수 있습니다.205에이전트 뷰가 디렉토리별로 그룹화되면 강조된 행의 디렉토리가 디스패치 대상이 되므로 그룹으로 스크롤하고 경로를 다시 입력하지 않고 디스패치할 수 있습니다.

195 206 

196#### 워크트리에서 파일 편집 격리

197 

198에이전트 뷰에서 디스패치된 세션은 기본적으로 작업 디렉토리를 공유하므로 두 에이전트가 동일한 파일을 편집하면 충돌할 수 있습니다. 이를 방지하기 위해 Claude Code는 에이전트 뷰에서 디스패치된 세션이 격리된 [git 워크트리](/ko/worktrees)로 이동할 때까지 파일을 쓰지 못하도록 차단합니다. Claude는 파일을 편집해야 할 때 자동으로 처리합니다. 워크트리는 프로젝트 디렉토리 내의 `.claude/worktrees/` 아래에 생성되고 세션을 삭제할 때 제거됩니다. 세션을 삭제하면 워크트리도 삭제되므로 삭제하기 전에 유지하려는 변경 사항을 병합하거나 푸시합니다.

199 

200서브에이전트가 시작된 방식에 관계없이 항상 자체 워크트리에서 실행되도록 하려면 프론트매터에서 [`isolation: worktree`](/ko/sub-agents#supported-frontmatter-fields)를 설정합니다.

201 

202### 세션 내에서207### 세션 내에서

203 208 

204`/background` 또는 별칭 `/bg`를 실행하여 현재 대화를 분리하고 계속 실행합니다. `/bg run the test suite and fix any failures`와 같은 프롬프트를 전달하여 분리하기 전에 하나의 추가 명령을 보냅니다.209`/background` 또는 별칭 `/bg`를 실행하여 현재 대화를 분리하고 계속 실행합니다. `/bg run the test suite and fix any failures`와 같은 프롬프트를 전달하여 분리하기 전에 하나의 추가 명령을 보냅니다.


227 claude stop 7c5dcf5d stop this session232 claude stop 7c5dcf5d stop this session

228```233```

229 234 

235### 파일 편집이 격리되는 방식

236 

237에이전트 뷰, `/bg` 또는 `claude --bg`에서 시작된 모든 백그라운드 세션은 작업 디렉토리에서 시작되지만 거기에 파일을 쓰는 것이 차단됩니다. 세션이 파일을 편집해야 할 때 Claude는 자동으로 이를 `.claude/worktrees/` 아래의 격리된 [git worktree](/ko/worktrees)로 이동하므로 병렬 세션은 동일한 체크아웃을 읽을 수 있지만 각각은 자신의 것에 씁니다. 세션이 이미 워크트리 내에 있을 때, 작업 디렉토리가 git 저장소가 아닐 때, 또는 작업 디렉토리 외부에 쓸 때는 차단이 적용되지 않습니다.

238 

239워크트리는 세션을 삭제할 때 제거되므로 삭제하기 전에 유지하려는 변경 사항을 병합하거나 푸시합니다. 세션의 워크트리 경로를 찾으려면 세션을 엿보거나 연결하고 작업 디렉토리를 확인합니다.

240 

241서브에이전트가 시작된 방식에 관계없이 항상 자체 워크트리에서 실행되도록 하려면 프론트매터에서 [`isolation: worktree`](/ko/sub-agents#supported-frontmatter-fields)를 설정합니다.

242 

243### 권한 모드 및 설정

244 

245디스패치된 세션은 실행되는 디렉토리에서 [설정](/ko/settings) 및 [권한 모드](/ko/permissions)를 읽으며, 마치 거기서 `claude`를 시작한 것처럼 동일합니다. 에이전트 뷰 입력에서 디스패치하면 권한 모드를 전달하지 않으므로 세션은 해당 디렉토리의 설정에서 `defaultMode`를 사용하거나 디스패치된 [서브에이전트의 프론트매터](/ko/sub-agents#supported-frontmatter-fields)에서 `permissionMode`를 사용합니다.

246 

247셸에서 모드를 설정하려면 `claude --bg`와 함께 `--permission-mode`를 전달합니다. 이러한 방식으로 `bypassPermissions` 또는 `auto`를 사용하는 것은 대화형으로 한 번 실행하여 해당 모드를 수락할 때까지 거부됩니다. 이러한 모드는 감시하지 않는 세션이 승인 없이 작동하도록 허용하기 때문입니다.

248 

230## 셸에서 세션 관리249## 셸에서 세션 관리

231 250 

232모든 백그라운드 세션에는 셸에서 사용할 수 있는 짧은 ID가 있습니다. 이 명령은 스크립팅이나 에이전트 뷰를 열고 싶지 않을 때 유용합니다.251모든 백그라운드 세션에는 셸에서 사용할 수 있는 짧은 ID가 있습니다. 이 명령은 스크립팅이나 에이전트 뷰를 열고 싶지 않을 때 유용합니다.

Details

1465파일 이름을 클릭하여 위의 탐색기에서 해당 노드를 엽니다.1465파일 이름을 클릭하여 위의 탐색기에서 해당 노드를 엽니다.

1466 1466 

1467| 파일 | 범위 | 커밋 | 기능 | 참조 |1467| 파일 | 범위 | 커밋 | 기능 | 참조 |

1468| --------------------------------------------------- | --------- | -- | ------------------------------------ | -------------------------------------------------------------------- |1468| --------------------------------------------------- | --------- | -- | ------------------------------------ | --------------------------------------------------------------- |

1469| [`CLAUDE.md`](#ce-claude-md) | 프로젝트 및 전역 | ✓ | 매 세션마다 로드되는 지침 | [메모리](/ko/memory) |1469| [`CLAUDE.md`](#ce-claude-md) | 프로젝트 및 전역 | ✓ | 매 세션마다 로드되는 지침 | [메모리](/ko/memory) |

1470| [`rules/*.md`](#ce-rules) | 프로젝트 및 전역 | ✓ | 주제 범위 지침, 선택적으로 경로 제한 | [규칙](/ko/memory#organize-rules-with-claude/rules/) |1470| [`rules/*.md`](#ce-rules) | 프로젝트 및 전역 | ✓ | 주제 범위 지침, 선택적으로 경로 제한 | [규칙](/ko/memory#organize-rules-with-claude/rules/) |

1471| [`settings.json`](#ce-settings-json) | 프로젝트 및 전역 | ✓ | 권한, hooks, 환경 변수, 모델 기본값 | [설정](/ko/settings) |1471| [`settings.json`](#ce-settings-json) | 프로젝트 및 전역 | ✓ | 권한, hooks, 환경 변수, 모델 기본값 | [설정](/ko/settings) |

1472| [`settings.local.json`](#ce-settings-local-json) | 프로젝트만 | | 개인 재정의, 자동 gitignored | [설정 범위](/ko/settings#settings-files) |1472| [`settings.local.json`](#ce-settings-local-json) | 프로젝트만 | | 개인 재정의, 자동 gitignored | [설정 범위](/ko/settings#settings-files) |

1473| [`.mcp.json`](#ce-mcp-json) | 프로젝트만 | ✓ | 팀 공유 MCP 서버 | [MCP 범위](/ko/mcp#mcp-installation-scopes) |1473| [`.mcp.json`](#ce-mcp-json) | 프로젝트만 | ✓ | 팀 공유 MCP 서버 | [MCP 범위](/ko/mcp#mcp-installation-scopes) |

1474| [`.worktreeinclude`](#ce-worktreeinclude) | 프로젝트만 | ✓ | 새 worktrees로 복사할 Gitignored 파일 | [Worktrees](/ko/common-workflows#copy-gitignored-files-to-worktrees) |1474| [`.worktreeinclude`](#ce-worktreeinclude) | 프로젝트만 | ✓ | 새 worktrees로 복사할 Gitignored 파일 | [Worktrees](/ko/worktrees#copy-gitignored-files-into-worktrees) |

1475| [`skills/<name>/SKILL.md`](#ce-skills) | 프로젝트 및 전역 | ✓ | `/name`으로 호출되거나 자동 호출되는 재사용 가능한 프롬프트 | [Skills](/ko/skills) |1475| [`skills/<name>/SKILL.md`](#ce-skills) | 프로젝트 및 전역 | ✓ | `/name`으로 호출되거나 자동 호출되는 재사용 가능한 프롬프트 | [Skills](/ko/skills) |

1476| [`commands/*.md`](#ce-commands) | 프로젝트 및 전역 | ✓ | 단일 파일 프롬프트; skills와 동일한 메커니즘 | [Skills](/ko/skills) |1476| [`commands/*.md`](#ce-commands) | 프로젝트 및 전역 | ✓ | 단일 파일 프롬프트; skills와 동일한 메커니즘 | [Skills](/ko/skills) |

1477| [`output-styles/*.md`](#ce-output-styles) | 프로젝트 및 전역 | ✓ | 사용자 정의 시스템 프롬프트 섹션 | [출력 스타일](/ko/output-styles) |1477| [`output-styles/*.md`](#ce-output-styles) | 프로젝트 및 전역 | ✓ | 사용자 정의 시스템 프롬프트 섹션 | [출력 스타일](/ko/output-styles) |


1497| `~/.claude/` 아래 경로 | 내용 |1497| `~/.claude/` 아래 경로 | 내용 |

1498| -------------------------------------------- | ------------------------------------------------------------------------------------- |1498| -------------------------------------------- | ------------------------------------------------------------------------------------- |

1499| `projects/<project>/<session>.jsonl` | 전체 대화 트랜스크립트: 모든 메시지, 도구 호출, 도구 결과 |1499| `projects/<project>/<session>.jsonl` | 전체 대화 트랜스크립트: 모든 메시지, 도구 호출, 도구 결과 |

1500| `projects/<project>/<session>/subagents/` | [Subagent](/ko/sub-agents) 대화 트랜스크립트로, 상위 세션 트랜스크립트가 만료될 때 함께 제거됨 |

1500| `projects/<project>/<session>/tool-results/` | 별도 파일로 유출된 대형 도구 출력 |1501| `projects/<project>/<session>/tool-results/` | 별도 파일로 유출된 대형 도구 출력 |

1501| `file-history/<session>/` | Claude가 변경한 파일의 편집 전 스냅샷으로, [checkpoint 복원](/ko/checkpointing)에 사용됨 |1502| `file-history/<session>/` | Claude가 변경한 파일의 편집 전 스냅샷으로, [checkpoint 복원](/ko/checkpointing)에 사용됨 |

1502| `plans/` | [plan mode](/ko/permission-modes#analyze-before-you-edit-with-plan-mode) 중에 작성된 계획 파일 |1503| `plans/` | [plan mode](/ko/permission-modes#analyze-before-you-edit-with-plan-mode) 중에 작성된 계획 파일 |


1512다음 경로는 자동 정리 대상이 아니며 무기한 지속됩니다.1513다음 경로는 자동 정리 대상이 아니며 무기한 지속됩니다.

1513 1514 

1514| `~/.claude/` 아래 경로 | 내용 |1515| `~/.claude/` 아래 경로 | 내용 |

1515| ------------------ | ------------------------------------------------- |1516| ---------------------- | -------------------------------------------------------------------------------------------- |

1516| `history.jsonl` | 입력한 모든 프롬프트로, 타임스탬프 및 프로젝트 경로 포함. 위쪽 화살표 회상에 사용됨. |1517| `history.jsonl` | 입력한 모든 프롬프트로, 타임스탬프 및 프로젝트 경로 포함. 위쪽 화살표 회상에 사용됨. |

1517| `stats-cache.json` | `/usage`로 표시된 집계 토큰 및 비용 계산 |1518| `stats-cache.json` | `/usage`로 표시된 집계 토큰 및 비용 계산 |

1519| `remote-settings.json` | 조직의 [서버 관리 설정](/ko/server-managed-settings)의 캐시된 복사본입니다. 조직이 설정한 경우에만 존재합니다. 각 시작 시 새로고침됩니다. |

1518| `todos/` | 레거시 세션별 작업 목록. 현재 버전에서는 더 이상 작성되지 않음. 안전하게 삭제 가능. |1520| `todos/` | 레거시 세션별 작업 목록. 현재 버전에서는 더 이상 작성되지 않음. 안전하게 삭제 가능. |

1519 1521 

1520기타 작은 캐시 및 잠금 파일은 사용하는 기능에 따라 나타나며 안전하게 삭제할 수 있습니다.1522기타 작은 캐시 및 잠금 파일은 사용하는 기능에 따라 나타나며 안전하게 삭제할 수 있습니다.


1570| `~/.claude/history.jsonl` | 위쪽 화살표 프롬프트 회상 |1572| `~/.claude/history.jsonl` | 위쪽 화살표 프롬프트 회상 |

1571| `~/.claude/file-history/` | 과거 세션의 checkpoint 복원 |1573| `~/.claude/file-history/` | 과거 세션의 checkpoint 복원 |

1572| `~/.claude/stats-cache.json` | `/usage`로 표시된 과거 합계 |1574| `~/.claude/stats-cache.json` | `/usage`로 표시된 과거 합계 |

1575| `~/.claude/remote-settings.json` | 없음. 다음 시작 시 다시 가져옵니다. |

1573| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/paste-cache/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/tasks/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | 사용자 대면 항목 없음 |1576| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/paste-cache/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/tasks/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | 사용자 대면 항목 없음 |

1574| `~/.claude/todos/` | 없음. 현재 버전에서 작성되지 않는 레거시 디렉토리. |1577| `~/.claude/todos/` | 없음. 현재 버전에서 작성되지 않는 레거시 디렉토리. |

1575 1578 

Details

124 124 

125`--system-prompt`와 `--system-prompt-file`은 상호 배타적입니다. 추가 플래그는 바꾸기 플래그 중 하나와 결합할 수 있습니다.125`--system-prompt`와 `--system-prompt-file`은 상호 배타적입니다. 추가 플래그는 바꾸기 플래그 중 하나와 결합할 수 있습니다.

126 126 

127대부분의 사용 사례에서는 추가 플래그를 사용합니다. 추가하면 Claude Code의 기본 제공 기능을 유지하면서 요구 사항을 추가합니다. 시스템 프롬프트를 완전히 제어해야 때만 바꾸기 플래그를 사용합니다.127Claude Code의 기본 정체성이 여전히 작업에 맞는지에 따라 선택합니다. Claude가 코딩 어시스턴트로 남아 있으면서 추가 규칙도 따라야 할 때 추가 플래그를 사용합니다: 호출별 지시사항, 출력 형식 또는 `-p` 스크립트에 대한 도메인 컨텍스트입니다. 추가하면 기본 도구 지침, 안전 지시사항 코딩 규칙이 유지되므로 다른 부분만 제공하면 됩니다. Claude Code의 표면, 정체성 또는 권한 모델과 다를 때 바꾸기 플래그를 사용합니다. 예를 들어 사람이 감시하지 않는 파이프라인의 비코딩 에이전트입니다. 바꾸면 도구 지침 및 안전 지시사항을 포함한 전체 기본 프롬프트가 제거되므로 작업에 필요한 모든 것에 대해 책임을 져야 합니다.

128 

129이러한 플래그는 현재 호출에만 적용됩니다. 프로젝트 간에 전환하고 공유할 수 있는 지속적인 페르소나의 경우 [출력 스타일](/ko/output-styles)을 사용합니다. 프로젝트 규칙 Claude가 항상 따라야 할 경우 [CLAUDE.md](/ko/memory)를 사용합니다. [시스템 프롬프트에 대한 Agent SDK 가이드](/ko/agent-sdk/modifying-system-prompts#decide-on-a-starting-point)는 더 깊이 있는 동일한 결정을 다룹니다.

128 130 

129## 참고 항목131## 참고 항목

130 132 

commands.md +1 −0

Details

103| `/rewind` | 대화 및/또는 코드를 이전 지점으로 되감기하거나 선택한 메시지에서 요약합니다. [checkpointing](/ko/checkpointing)을 참조하세요. 별칭: `/checkpoint`, `/undo` |103| `/rewind` | 대화 및/또는 코드를 이전 지점으로 되감기하거나 선택한 메시지에서 요약합니다. [checkpointing](/ko/checkpointing)을 참조하세요. 별칭: `/checkpoint`, `/undo` |

104| `/sandbox` | [sandbox mode](/ko/sandboxing)를 전환합니다. 지원되는 플랫폼에서만 사용 가능합니다 |104| `/sandbox` | [sandbox mode](/ko/sandboxing)를 전환합니다. 지원되는 플랫폼에서만 사용 가능합니다 |

105| `/schedule [description]` | [routines](/ko/routines)를 만들거나, 업데이트하거나, 나열하거나, 실행합니다. Claude가 설정 과정을 대화형으로 안내합니다. 별칭: `/routines` |105| `/schedule [description]` | [routines](/ko/routines)를 만들거나, 업데이트하거나, 나열하거나, 실행합니다. Claude가 설정 과정을 대화형으로 안내합니다. 별칭: `/routines` |

106| `/scroll-speed` | 마우스 휠 [scroll speed](/ko/fullscreen#mouse-wheel-scrolling)를 대화형으로 조정합니다. 대화 상자가 열려 있는 동안 스크롤할 수 있는 눈금자를 사용하여 변경 사항을 미리 봅니다. [fullscreen rendering](/ko/fullscreen)에서만 사용 가능하며 JetBrains IDE 터미널에서는 사용할 수 없습니다 |

106| `/security-review` | 현재 브랜치의 보류 중인 변경 사항을 보안 취약점에 대해 분석합니다. git diff를 검토하고 주입, 인증 문제 및 데이터 노출과 같은 위험을 식별합니다 |107| `/security-review` | 현재 브랜치의 보류 중인 변경 사항을 보안 취약점에 대해 분석합니다. git diff를 검토하고 주입, 인증 문제 및 데이터 노출과 같은 위험을 식별합니다 |

107| `/setup-bedrock` | [Amazon Bedrock](/ko/amazon-bedrock) 인증, 지역 및 모델 핀을 대화형 마법사를 통해 구성합니다. `CLAUDE_CODE_USE_BEDROCK=1`이 설정되어 있을 때만 표시됩니다. 처음 Bedrock을 사용하는 사용자는 로그인 화면에서도 이 마법사에 액세스할 수 있습니다 |108| `/setup-bedrock` | [Amazon Bedrock](/ko/amazon-bedrock) 인증, 지역 및 모델 핀을 대화형 마법사를 통해 구성합니다. `CLAUDE_CODE_USE_BEDROCK=1`이 설정되어 있을 때만 표시됩니다. 처음 Bedrock을 사용하는 사용자는 로그인 화면에서도 이 마법사에 액세스할 수 있습니다 |

108| `/setup-vertex` | [Google Vertex AI](/ko/google-vertex-ai) 인증, 프로젝트, 지역 및 모델 핀을 대화형 마법사를 통해 구성합니다. `CLAUDE_CODE_USE_VERTEX=1`이 설정되어 있을 때만 표시됩니다. 처음 Vertex AI를 사용하는 사용자는 로그인 화면에서도 이 마법사에 액세스할 수 있습니다 |109| `/setup-vertex` | [Google Vertex AI](/ko/google-vertex-ai) 인증, 프로젝트, 지역 및 모델 핀을 대화형 마법사를 통해 구성합니다. `CLAUDE_CODE_USE_VERTEX=1`이 설정되어 있을 때만 표시됩니다. 처음 Vertex AI를 사용하는 사용자는 로그인 화면에서도 이 마법사에 액세스할 수 있습니다 |

data-usage.md +2 −2

Details

33* **아니오**: 아무것도 보내지 않고 거절합니다.33* **아니오**: 아무것도 보내지 않고 거절합니다.

34* **다시 묻지 않기**: 거절하고 향후 세션에서 이 후속 질문이 표시되지 않도록 합니다.34* **다시 묻지 않기**: 거절하고 향후 세션에서 이 후속 질문이 표시되지 않도록 합니다.

35 35 

36**예**를 명시적으로 선택하지 않으면 아무것도 업로드되지 않습니다. [Zero data retention](/ko/zero-data-retention)이 있는 조직이거나 조직 정책에 의해 제품 피드백이 비활성화된 조직은 이 후속 질문을 볼 수 없습니다. 등급 메시지 이후 제출된 세션 기록을 포함한 이 설문조사에 대한 응답은 데이터 학습 선호도에 영향을 주지 않으며 AI 모델을 학습하는 데 사용될 수 없습니다.36**예**를 명시적으로 선택하지 않으면 아무것도 업로드되지 않습니다. [Zero data retention](/ko/zero-data-retention)이 있는 조직이거나 조직 정책에 의해 제품 피드백이 비활성화된 조직이거나 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`이 설정된 조직은 이 후속 질문을 볼 수 없습니다. 등급 메시지 이후 제출된 세션 기록을 포함한 이 설문조사에 대한 응답은 데이터 학습 선호도에 영향을 주지 않으며 AI 모델을 학습하는 데 사용될 수 없습니다.

37 37 

38이러한 설문조사를 비활성화하려면 `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`을 설정합니다. `DISABLE_TELEMETRY` 또는 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`이 설정되면 설문조사도 비활성화됩니다. 빈도를 제어하려면 설정 파일에서 [`feedbackSurveyRate`](/ko/settings#available-settings)를 `0`과 `1` 사이의 확률로 설정합니다.38이러한 설문조사를 비활성화하려면 `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`을 설정합니다. `DISABLE_TELEMETRY`, `DO_NOT_TRACK` 또는 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`이 설정되면 설문조사도 비활성화됩니다. 비필수 트래픽을 차단하지만 자신의 [OpenTelemetry collector](/ko/monitoring-usage)를 통해 설문조사 응답을 캡처하는 조직은 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1`을 설정하여 설문조사를 다시 활성화할 수 있습니다. 그러면 설문조사는 구성된 수집기에만 등급을 기록합니다. 기록 공유 후속 및 기타 모든 Anthropic 바운드 피드백 트래픽은 비활성화된 상태로 유지됩니다. 빈도를 제어하려면 설정 파일에서 [`feedbackSurveyRate`](/ko/settings#available-settings)를 `0`과 `1` 사이의 확률로 설정합니다.

39 39 

40### 데이터 보관40### 데이터 보관

41 41 

env-vars.md +10 −7

Details

48| `API_TIMEOUT_MS` | API 요청의 타임아웃(밀리초)(기본값: 600000, 또는 10분; 최대: 2147483647). 느린 네트워크에서 요청이 시간 초과되거나 프록시를 통해 라우팅할 때 이를 증가시킵니다. 최대값을 초과하는 값은 기본 타이머를 오버플로우하여 요청이 즉시 실패하게 합니다. |48| `API_TIMEOUT_MS` | API 요청의 타임아웃(밀리초)(기본값: 600000, 또는 10분; 최대: 2147483647). 느린 네트워크에서 요청이 시간 초과되거나 프록시를 통해 라우팅할 때 이를 증가시킵니다. 최대값을 초과하는 값은 기본 타이머를 오버플로우하여 요청이 즉시 실패하게 합니다. |

49| `AWS_BEARER_TOKEN_BEDROCK` | 인증용 Bedrock API 키([Bedrock API 키](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/) 참조) |49| `AWS_BEARER_TOKEN_BEDROCK` | 인증용 Bedrock API 키([Bedrock API 키](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/) 참조) |

50| `BASH_DEFAULT_TIMEOUT_MS` | 장시간 실행되는 bash 명령의 기본 타임아웃(기본값: 120000, 또는 2분) |50| `BASH_DEFAULT_TIMEOUT_MS` | 장시간 실행되는 bash 명령의 기본 타임아웃(기본값: 120000, 또는 2분) |

51| `BASH_MAX_OUTPUT_LENGTH` | bash 출력이 중간 잘림되기 전의 최대 문자 |51| `BASH_MAX_OUTPUT_LENGTH` | bash 출력이 전체 출력이 파일에 저장되고 Claude가 경로와 짧은 미리보기를 받기 전의 최대 문자 수입니다. [Bash 도구 동작](/ko/tools-reference#bash-tool-behavior) 참조 |

52| `BASH_MAX_TIMEOUT_MS` | 모델이 장시간 실행되는 bash 명령에 대해 설정할 수 있는 최대 타임아웃(기본값: 600000, 또는 10분) |52| `BASH_MAX_TIMEOUT_MS` | 모델이 장시간 실행되는 bash 명령에 대해 설정할 수 있는 최대 타임아웃(기본값: 600000, 또는 10분) |

53| `CCR_FORCE_BUNDLE` | GitHub 액세스가 가능한 경우에도 [`claude --remote`](/ko/claude-code-on-the-web#send-local-repositories-without-github)가 로컬 리포지토리를 번들로 제공하고 업로드하도록 강제하려면 `1`로 설정합니다. |53| `CCR_FORCE_BUNDLE` | GitHub 액세스가 가능한 경우에도 [`claude --remote`](/ko/claude-code-on-the-web#send-local-repositories-without-github)가 로컬 리포지토리를 번들로 제공하고 업로드하도록 강제하려면 `1`로 설정합니다. |

54| `CLAUDECODE` | Claude Code가 생성하는 셸 환경(Bash 도구, tmux 세션)에서 `1`로 설정합니다. [훅](/ko/hooks) 또는 [상태 줄](/ko/statusline) 명령에서는 설정되지 않습니다. Claude Code가 생성한 셸 내에서 스크립트가 실행 중인지 감지하는 데 사용합니다. |54| `CLAUDECODE` | Claude Code가 생성하는 셸 환경(Bash 도구, tmux 세션)에서 `1`로 설정됩니다. [훅](/ko/hooks) 또는 [상태 줄](/ko/statusline) 명령에서는 설정되지 않습니다. Claude Code가 생성한 셸 내에서 스크립트가 실행 중인지 감지하는 데 사용합니다. |

55| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | 모든 기본 제공 [subagent](/ko/sub-agents) 유형(예: Explore 및 Plan)을 비활성화하려면 `1`로 설정합니다. 비대화형 모드(`-p` 플래그)에만 적용됩니다. SDK 사용자가 백지 상태를 원할 때 유용합니다. |55| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | 모든 기본 제공 [subagent](/ko/sub-agents) 유형(예: Explore 및 Plan)을 비활성화하려면 `1`로 설정합니다. 비대화형 모드(`-p` 플래그)에만 적용됩니다. SDK 사용자가 백지 상태를 원할 때 유용합니다. |

56| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | SDK에서 생성한 MCP 서버의 도구 이름에서 `mcp__<server>__` 접두사를 건너뛰려면 `1`로 설정합니다. 도구는 원래 이름을 사용합니다. SDK 사용만 해당 |56| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | SDK에서 생성한 MCP 서버의 도구 이름에서 `mcp__<server>__` 접두사를 건너뛰려면 `1`로 설정합니다. 도구는 원래 이름을 사용합니다. SDK 사용만 해당 |

57| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | 백그라운드 subagent의 정체 타임아웃(밀리초). 기본값 `600000`(10분). 타이머는 각 스트리밍 진행 이벤트에서 재설정됩니다. 윈도우 내에 진행이 도착하지 않으면 subagent가 중단되고 작업이 실패로 표시되며 부분 결과가 부모에게 표시됩니다. |57| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | 백그라운드 subagent의 정체 타임아웃(밀리초). 기본값 `600000`(10분). 타이머는 각 스트리밍 진행 이벤트에서 재설정됩니다. 윈도우 내에 진행이 도착하지 않으면 subagent가 중단되고 작업이 실패로 표시되며 부분 결과가 부모에게 표시됩니다. |


81| `CLAUDE_CODE_DISABLE_CRON` | [예약된 작업](/ko/scheduled-tasks)을 비활성화하려면 `1`로 설정합니다. `/loop` skill과 cron 도구를 사용할 수 없게 되고 이미 예약된 모든 작업이 중지되며, 세션 중에 이미 실행 중인 작업을 포함한 모든 작업이 실행되지 않습니다. |81| `CLAUDE_CODE_DISABLE_CRON` | [예약된 작업](/ko/scheduled-tasks)을 비활성화하려면 `1`로 설정합니다. `/loop` skill과 cron 도구를 사용할 수 없게 되고 이미 예약된 모든 작업이 중지되며, 세션 중에 이미 실행 중인 작업을 포함한 모든 작업이 실행되지 않습니다. |

82| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Anthropic 특정 `anthropic-beta` 요청 헤더 및 베타 도구 스키마 필드(`defer_loading` 및 `eager_input_streaming` 등)를 API 요청에서 제거하려면 `1`로 설정합니다. 프록시 게이트웨이가 "Unexpected value(s) for the `anthropic-beta` header" 또는 "Extra inputs are not permitted"와 같은 오류로 요청을 거부할 때 사용합니다. 표준 필드(`name`, `description`, `input_schema`, `cache_control`)는 유지됩니다. |82| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Anthropic 특정 `anthropic-beta` 요청 헤더 및 베타 도구 스키마 필드(`defer_loading` 및 `eager_input_streaming` 등)를 API 요청에서 제거하려면 `1`로 설정합니다. 프록시 게이트웨이가 "Unexpected value(s) for the `anthropic-beta` header" 또는 "Extra inputs are not permitted"와 같은 오류로 요청을 거부할 때 사용합니다. 표준 필드(`name`, `description`, `input_schema`, `cache_control`)는 유지됩니다. |

83| `CLAUDE_CODE_DISABLE_FAST_MODE` | [빠른 모드](/ko/fast-mode)를 비활성화하려면 `1`로 설정합니다. |83| `CLAUDE_CODE_DISABLE_FAST_MODE` | [빠른 모드](/ko/fast-mode)를 비활성화하려면 `1`로 설정합니다. |

84| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | "Claude가 어떻게 하고 있나요?" 세션 품질 설문조사를 비활성화하려면 `1`로 설정합니다. `DISABLE_TELEMETRY` 또는 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`이 설정되면 설문조사도 비활성화됩니다. 설문조사 샘플 레이트를 설정하려면 [`feedbackSurveyRate`](/ko/settings#available-settings) 설정을 사용합니다. [세션 품질 설문조사](/ko/data-usage#session-quality-surveys) 참조 |84| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | "Claude가 어떻게 하고 있나요?" 세션 품질 설문조사를 비활성화하려면 `1`로 설정합니다. `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, 또는 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`이 설정되면 설문조사도 비활성화됩니다. `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`이 다시 옵트인하지 않으면 설문조사 샘플 레이트를 설정하려면 [`feedbackSurveyRate`](/ko/settings#available-settings) 설정을 사용합니다. [세션 품질 설문조사](/ko/data-usage#session-quality-surveys) 참조 |

85| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | 파일 [체크포인팅](/ko/checkpointing)을 비활성화하려면 `1`로 설정합니다. `/rewind` 명령이 코드 변경 사항을 복원할 수 없습니다. |85| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | 파일 [체크포인팅](/ko/checkpointing)을 비활성화하려면 `1`로 설정합니다. `/rewind` 명령이 코드 변경 사항을 복원할 수 없습니다. |

86| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Claude의 시스템 프롬프트에서 기본 제공 커밋 및 PR 워크플로우 지침과 git 상태 스냅샷을 제거하려면 `1`로 설정합니다. 자신의 git 워크플로우 skill을 사용할 때 유용합니다. 설정하면 [`includeGitInstructions`](/ko/settings#available-settings) 설정보다 우선합니다. |86| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Claude의 시스템 프롬프트에서 기본 제공 커밋 및 PR 워크플로우 지침과 git 상태 스냅샷을 제거하려면 `1`로 설정합니다. 자신의 git 워크플로우 skill을 사용할 때 유용합니다. 설정하면 [`includeGitInstructions`](/ko/settings#available-settings) 설정보다 우선합니다. |

87| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Anthropic API에서 Opus 4.0 및 4.1을 현재 Opus 버전으로 자동 재매핑하지 않으려면 `1`로 설정합니다. 의도적으로 이전 모델을 고정하려는 경우 사용합니다. 재매핑은 Bedrock, Vertex 또는 Foundry에서 실행되지 않습니다. |87| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Anthropic API에서 Opus 4.0 및 4.1을 현재 Opus 버전으로 자동 재매핑하지 않으려면 `1`로 설정합니다. 의도적으로 이전 모델을 고정하려는 경우 사용합니다. 재매핑은 Bedrock, Vertex 또는 Foundry에서 실행되지 않습니다. |


96| `CLAUDE_CODE_EFFORT_LEVEL` | 지원되는 모델의 노력 수준을 설정합니다. 값: `low`, `medium`, `high`, `xhigh`, `max`, 또는 `auto`(모델 기본값 사용). 사용 가능한 수준은 모델에 따라 다릅니다. `/effort` 및 `effortLevel` 설정보다 우선합니다. [노력 수준 조정](/ko/model-config#adjust-effort-level) 참조 |96| `CLAUDE_CODE_EFFORT_LEVEL` | 지원되는 모델의 노력 수준을 설정합니다. 값: `low`, `medium`, `high`, `xhigh`, `max`, 또는 `auto`(모델 기본값 사용). 사용 가능한 수준은 모델에 따라 다릅니다. `/effort` 및 `effortLevel` 설정보다 우선합니다. [노력 수준 조정](/ko/model-config#adjust-effort-level) 참조 |

97| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | [세션 요약](/ko/interactive-mode#session-recap) 가용성을 재정의합니다. 재개를 강제로 끄려면 `0`으로 설정합니다. [`awaySummaryEnabled`](/ko/settings#available-settings)가 `false`일 때 재개를 강제로 켜려면 `1`로 설정합니다. 설정 및 `/config` 토글보다 우선합니다. |97| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | [세션 요약](/ko/interactive-mode#session-recap) 가용성을 재정의합니다. 재개를 강제로 끄려면 `0`으로 설정합니다. [`awaySummaryEnabled`](/ko/settings#available-settings)가 `false`일 때 재개를 강제로 켜려면 `1`로 설정합니다. 설정 및 `/config` 토글보다 우선합니다. |

98| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | [비대화형 모드](/ko/headless)에서 백그라운드 설치가 완료된 후 턴 경계에서 플러그인 상태를 새로 고치려면 `1`로 설정합니다. 새로 고침이 세션 중간에 시스템 프롬프트를 변경하여 해당 턴의 [프롬프트 캐싱](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)을 무효화하므로 기본적으로 꺼져 있습니다. |98| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | [비대화형 모드](/ko/headless)에서 백그라운드 설치가 완료된 후 턴 경계에서 플러그인 상태를 새로 고치려면 `1`로 설정합니다. 새로 고침이 세션 중간에 시스템 프롬프트를 변경하여 해당 턴의 [프롬프트 캐싱](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)을 무효화하므로 기본적으로 꺼져 있습니다. |

99| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Anthropic 바운드 비필수 트래픽이 차단될 때 "Claude가 어떻게 하고 있나요?" 세션 품질 설문조사를 자신의 [OpenTelemetry 수집기](/ko/monitoring-usage)로 라우팅하려면 `1`로 설정합니다. 설문조사 등급은 구성된 수집기에 OTEL 이벤트로만 내보내집니다. 이 모드에서는 설문조사 데이터가 Anthropic으로 전송되지 않습니다. `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY`, 또는 `DO_NOT_TRACK`이 설정되었을 때 적용되며, 그렇지 않으면 효과가 없습니다. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` 및 조직 제품 피드백 정책이 우선합니다. |

99| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | 도구 호출 입력이 Claude가 생성할 때 API에서 스트리밍되는지 여부를 제어합니다. 이 없으면 파일 쓰기와 같은 큰 도구 입력이 Claude가 생성을 완료한 후에만 도착하므로 중단된 것처럼 보일 수 있습니다. Anthropic API에 대해 기본적으로 활성화됩니다. Bedrock 및 Vertex에서는 배포된 컨테이너가 지원하는 모델별로 활성화됩니다. 옵트아웃하려면 `0`으로 설정합니다. `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL` 또는 `ANTHROPIC_BEDROCK_BASE_URL`을 통해 프록시로 라우팅할 때 강제로 활성화하려면 `1`로 설정합니다. Foundry 및 [게이트웨이](/ko/llm-gateway) 연결에는 기본적으로 꺼져 있습니다. |100| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | 도구 호출 입력이 Claude가 생성할 때 API에서 스트리밍되는지 여부를 제어합니다. 이 없으면 파일 쓰기와 같은 큰 도구 입력이 Claude가 생성을 완료한 후에만 도착하므로 중단된 것처럼 보일 수 있습니다. Anthropic API에 대해 기본적으로 활성화됩니다. Bedrock 및 Vertex에서는 배포된 컨테이너가 지원하는 모델별로 활성화됩니다. 옵트아웃하려면 `0`으로 설정합니다. `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL` 또는 `ANTHROPIC_BEDROCK_BASE_URL`을 통해 프록시로 라우팅할 때 강제로 활성화하려면 `1`로 설정합니다. Foundry 및 [게이트웨이](/ko/llm-gateway) 연결에는 기본적으로 꺼져 있습니다. |

100| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | `ANTHROPIC_BASE_URL`이 LiteLLM, Kong 또는 내부 프록시와 같은 Anthropic 호환 게이트웨이를 가리킬 때 게이트웨이의 `/v1/models` 엔드포인트에서 `/model` 선택기를 채우려면 `1`로 설정합니다. 공유 API 키로 지원되는 게이트웨이는 그렇지 않으면 모든 사용자에게 키가 액세스할 수 있는 모든 모델을 표시하므로 기본적으로 꺼져 있습니다. 검색된 모델은 여전히 [`availableModels`](/ko/settings#available-settings) 허용 목록으로 필터링됩니다. |101| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | `ANTHROPIC_BASE_URL`이 LiteLLM, Kong 또는 내부 프록시와 같은 Anthropic 호환 게이트웨이를 가리킬 때 게이트웨이의 `/v1/models` 엔드포인트에서 `/model` 선택기를 채우려면 `1`로 설정합니다. 공유 API 키로 지원되는 게이트웨이는 그렇지 않으면 모든 사용자에게 키가 액세스할 수 있는 모든 모델을 표시하므로 기본적으로 꺼져 있습니다. 검색된 모델은 여전히 [`availableModels`](/ko/settings#available-settings) 허용 목록으로 필터링됩니다. |

102| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | [빠른 모드](/ko/fast-mode)를 Claude Opus 4.7에서 실행하려면 `1`로 설정합니다. Opus 4.6 대신 변수를 설정하면 `/fast`가 Opus 4.7로 전환됩니다. 변수가 없으면 `/fast`는 계속 Opus 4.6을 사용합니다. |

101| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | 프롬프트 제안을 비활성화하려면 `false`로 설정합니다(`/config`의 "프롬프트 제안" 토글). 이는 Claude가 응답한 후 프롬프트 입력에 나타나는 회색으로 표시된 예측입니다. [프롬프트 제안](/ko/interactive-mode#prompt-suggestions) 참조 |103| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | 프롬프트 제안을 비활성화하려면 `false`로 설정합니다(`/config`의 "프롬프트 제안" 토글). 이는 Claude가 응답한 후 프롬프트 입력에 나타나는 회색으로 표시된 예측입니다. [프롬프트 제안](/ko/interactive-mode#prompt-suggestions) 참조 |

102| `CLAUDE_CODE_ENABLE_TASKS` | 비대화형 모드(`-p` 플래그)에서 작업 추적 시스템을 활성화하려면 `1`로 설정합니다. 작업은 대화형 모드에서 기본적으로 켜져 있습니다. [작업 목록](/ko/interactive-mode#task-list) 참조 |104| `CLAUDE_CODE_ENABLE_TASKS` | 비대화형 모드(`-p` 플래그)에서 작업 추적 시스템을 활성화하려면 `1`로 설정합니다. 작업은 대화형 모드에서 기본적으로 켜져 있습니다. [작업 목록](/ko/interactive-mode#task-list) 참조 |

103| `CLAUDE_CODE_ENABLE_TELEMETRY` | 메트릭 및 로깅을 위한 OpenTelemetry 데이터 수집을 활성화하려면 `1`로 설정합니다. OTel 내보내기를 구성하기 전에 필수입니다. [모니터링](/ko/monitoring-usage) 참조 |105| `CLAUDE_CODE_ENABLE_TELEMETRY` | 메트릭 및 로깅을 위한 OpenTelemetry 데이터 수집을 활성화하려면 `1`로 설정합니다. OTel 내보내기를 구성하기 전에 필수입니다. [모니터링](/ko/monitoring-usage) 참조 |


108| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 터미널이 지원하지만 자동 감지되지 않을 때 DEC 개인 모드 2026 [동기화된 출력](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)을 강제로 활성화하려면 `1`로 설정합니다. Emacs `eat`과 같은 BSU/ESU를 구현하지만 기능 프로브에 응답하지 않는 에뮬레이터에 유용합니다. tmux에서는 효과가 없습니다. |110| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 터미널이 지원하지만 자동 감지되지 않을 때 DEC 개인 모드 2026 [동기화된 출력](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)을 강제로 활성화하려면 `1`로 설정합니다. Emacs `eat`과 같은 BSU/ESU를 구현하지만 기능 프로브에 응답하지 않는 에뮬레이터에 유용합니다. tmux에서는 효과가 없습니다. |

109| `CLAUDE_CODE_FORK_SUBAGENT` | [포크된 subagent](/ko/sub-agents#fork-the-current-conversation)를 활성화하려면 `1`로 설정합니다. 포크된 subagent는 새로 시작하는 대신 주 세션에서 전체 대화 컨텍스트를 상속합니다. 활성화되면 `/fork`는 [`/branch`](/ko/commands)의 별칭으로 작동하는 대신 포크된 subagent를 생성하며, 모든 subagent 생성은 백그라운드에서 실행됩니다. 대화형 모드와 SDK 또는 `claude -p`를 통해 작동합니다. |111| `CLAUDE_CODE_FORK_SUBAGENT` | [포크된 subagent](/ko/sub-agents#fork-the-current-conversation)를 활성화하려면 `1`로 설정합니다. 포크된 subagent는 새로 시작하는 대신 주 세션에서 전체 대화 컨텍스트를 상속합니다. 활성화되면 `/fork`는 [`/branch`](/ko/commands)의 별칭으로 작동하는 대신 포크된 subagent를 생성하며, 모든 subagent 생성은 백그라운드에서 실행됩니다. 대화형 모드와 SDK 또는 `claude -p`를 통해 작동합니다. |

110| `CLAUDE_CODE_GIT_BASH_PATH` | Windows 전용: Git Bash 실행 파일(`bash.exe`)의 경로입니다. Git Bash가 설치되었지만 PATH에 없을 때 사용합니다. [Windows 설정](/ko/setup#set-up-on-windows) 참조 |112| `CLAUDE_CODE_GIT_BASH_PATH` | Windows 전용: Git Bash 실행 파일(`bash.exe`)의 경로입니다. Git Bash가 설치되었지만 PATH에 없을 때 사용합니다. [Windows 설정](/ko/setup#set-up-on-windows) 참조 |

111| `CLAUDE_CODE_GLOB_HIDDEN` | Claude가 [Glob 도구](/ko/tools-reference)를 호출할 때 결과에서 dotfile을 제외하려면 `false`로 설정합니다. 기본적으로 포함됩니다. `@` 파일 자동 완성, `ls`, Grep 또는 Read에는 영향을 주지 않습니다. |113| `CLAUDE_CODE_GLOB_HIDDEN` | Claude가 [Glob 도구](/ko/tools-reference#glob-tool-behavior)를 호출할 때 결과에서 dotfile을 제외하려면 `false`로 설정합니다. 기본적으로 포함됩니다. `@` 파일 자동 완성, `ls`, Grep 또는 Read에는 영향을 주지 않습니다. |

112| `CLAUDE_CODE_GLOB_NO_IGNORE` | [Glob 도구](/ko/tools-reference)가 `.gitignore` 패턴을 존중하도록 하려면 `false`로 설정합니다. 기본적으로 Glob은 gitignored된 파일을 포함한 모든 일치하는 파일을 반환합니다. `@` 파일 자동 완성에는 영향을 주지 않으며, 이는 자체 [`respectGitignore` 설정](/ko/settings#available-settings)을 가집니다. |114| `CLAUDE_CODE_GLOB_NO_IGNORE` | [Glob 도구](/ko/tools-reference#glob-tool-behavior)가 `.gitignore` 패턴을 존중하도록 하려면 `false`로 설정합니다. 기본적으로 Glob은 gitignored된 파일을 포함한 모든 일치하는 파일을 반환합니다. `@` 파일 자동 완성에는 영향을 주지 않으며, 이는 자체 [`respectGitignore` 설정](/ko/settings#available-settings)을 가집니다. |

113| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Glob 도구 파일 검색의 타임아웃(초). 대부분의 플랫폼에서 기본값은 20초이고 WSL에서는 60초입니다. |115| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Glob 도구 파일 검색의 타임아웃(초). 대부분의 플랫폼에서 기본값은 20초이고 WSL에서는 60초입니다. |

114| `CLAUDE_CODE_HIDE_CWD` | 시작 로고에서 작업 디렉토리를 숨기려면 `1`로 설정합니다. 경로가 OS 사용자명을 노출하는 화면 공유 또는 녹화에 유용합니다. |116| `CLAUDE_CODE_HIDE_CWD` | 시작 로고에서 작업 디렉토리를 숨기려면 `1`로 설정합니다. 경로가 OS 사용자명을 노출하는 화면 공유 또는 녹화에 유용합니다. |

115| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | IDE 확장에 연결하는 데 사용되는 호스트 주소를 재정의합니다. 기본적으로 Claude Code는 WSL-to-Windows 라우팅을 포함한 올바른 주소를 자동 감지합니다. |117| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | IDE 확장에 연결하는 데 사용되는 호스트 주소를 재정의합니다. 기본적으로 Claude Code는 WSL-to-Windows 라우팅을 포함한 올바른 주소를 자동 감지합니다. |


119| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | 대부분의 요청에 대한 최대 출력 토큰 수를 설정합니다. 기본값 및 상한은 모델에 따라 다릅니다. [최대 출력 토큰](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) 참조. 이 값을 증가시키면 [자동 압축](/ko/costs#reduce-token-usage)이 트리거되기 전에 사용 가능한 효과적인 컨텍스트 윈도우가 감소합니다. |121| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | 대부분의 요청에 대한 최대 출력 토큰 수를 설정합니다. 기본값 및 상한은 모델에 따라 다릅니다. [최대 출력 토큰](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) 참조. 이 값을 증가시키면 [자동 압축](/ko/costs#reduce-token-usage)이 트리거되기 전에 사용 가능한 효과적인 컨텍스트 윈도우가 감소합니다. |

120| `CLAUDE_CODE_MAX_RETRIES` | 실패한 API 요청을 재시도할 횟수를 재정의합니다(기본값: 10) |122| `CLAUDE_CODE_MAX_RETRIES` | 실패한 API 요청을 재시도할 횟수를 재정의합니다(기본값: 10) |

121| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | 병렬로 실행할 수 있는 읽기 전용 도구 및 subagent의 최대 수(기본값: 10). 더 높은 값은 병렬 처리를 증가시키지만 더 많은 리소스를 소비합니다. |123| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | 병렬로 실행할 수 있는 읽기 전용 도구 및 subagent의 최대 수(기본값: 10). 더 높은 값은 병렬 처리를 증가시키지만 더 많은 리소스를 소비합니다. |

124| `CLAUDE_CODE_MAX_TURNS` | 명시적 제한이 전달되지 않을 때 에이전트 턴 수를 제한합니다. [`--max-turns`](/ko/cli-reference#cli-flags) 전달과 동일하며, 둘 다 설정되면 우선합니다. 양의 정수가 아닌 값은 제한이 없는 것으로 취급되지 않고 오류와 함께 시작 시 거부됩니다. |

122| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | stdio MCP 서버를 안전한 기본 환경과 서버의 구성된 `env`만으로 생성하려면 `1`로 설정합니다. 셸 환경을 상속하지 않습니다. |125| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | stdio MCP 서버를 안전한 기본 환경과 서버의 구성된 `env`만으로 생성하려면 `1`로 설정합니다. 셸 환경을 상속하지 않습니다. |

123| `CLAUDE_CODE_NATIVE_CURSOR` | 터미널의 자체 커서를 입력 캐럿에서 그려진 블록 대신 표시하려면 `1`로 설정합니다. 커서는 터미널의 깜박임, 모양, 포커스 설정을 존중합니다. |126| `CLAUDE_CODE_NATIVE_CURSOR` | 터미널의 자체 커서를 입력 캐럿에서 그려진 블록 대신 표시하려면 `1`로 설정합니다. 커서는 터미널의 깜박임, 모양, 포커스 설정을 존중합니다. |

124| `CLAUDE_CODE_NEW_INIT` | `/init`이 대화형 설정 흐름을 실행하도록 하려면 `1`로 설정합니다. 흐름은 코드베이스를 탐색하고 작성하기 전에 CLAUDE.md, skill 및 훅을 포함하여 생성할 파일을 묻습니다. 이 변수가 없으면 `/init`은 프롬프트 없이 자동으로 CLAUDE.md를 생성합니다. |127| `CLAUDE_CODE_NEW_INIT` | `/init`이 대화형 설정 흐름을 실행하도록 하려면 `1`로 설정합니다. 흐름은 코드베이스를 탐색하고 작성하기 전에 CLAUDE.md, skill 및 훅을 포함하여 생성할 파일을 묻습니다. 이 변수가 없으면 `/init`은 프롬프트 없이 자동으로 CLAUDE.md를 생성합니다. |


202| `ENABLE_CLAUDEAI_MCP_SERVERS` | Claude Code에서 [claude.ai MCP 서버](/ko/mcp#use-mcp-servers-from-claude-ai)를 비활성화하려면 `false`로 설정합니다. 로그인한 사용자의 경우 기본적으로 활성화됩니다. |205| `ENABLE_CLAUDEAI_MCP_SERVERS` | Claude Code에서 [claude.ai MCP 서버](/ko/mcp#use-mcp-servers-from-claude-ai)를 비활성화하려면 `false`로 설정합니다. 로그인한 사용자의 경우 기본적으로 활성화됩니다. |

203| `ENABLE_PROMPT_CACHING_1H` | API 키, [Bedrock](/ko/amazon-bedrock), [Vertex](/ko/google-vertex-ai), [Foundry](/ko/microsoft-foundry), [Claude Platform on AWS](/ko/claude-platform-on-aws) 사용자를 위해 기본 5분 대신 1시간 프롬프트 캐시 TTL을 요청하려면 `1`로 설정합니다. 구독 사용자는 자동으로 1시간 TTL을 받습니다. 1시간 캐시 쓰기는 더 높은 요금으로 청구됩니다. |206| `ENABLE_PROMPT_CACHING_1H` | API 키, [Bedrock](/ko/amazon-bedrock), [Vertex](/ko/google-vertex-ai), [Foundry](/ko/microsoft-foundry), [Claude Platform on AWS](/ko/claude-platform-on-aws) 사용자를 위해 기본 5분 대신 1시간 프롬프트 캐시 TTL을 요청하려면 `1`로 설정합니다. 구독 사용자는 자동으로 1시간 TTL을 받습니다. 1시간 캐시 쓰기는 더 높은 요금으로 청구됩니다. |

204| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 더 이상 사용되지 않음. 대신 `ENABLE_PROMPT_CACHING_1H` 사용 |207| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 더 이상 사용되지 않음. 대신 `ENABLE_PROMPT_CACHING_1H` 사용 |

205| `ENABLE_TOOL_SEARCH` | [MCP 도구 검색](/ko/mcp#scale-with-mcp-tool-search)을 제어합니다. 설정 해제: 모든 MCP 도구는 기본적으로 연기되지만 Vertex AI에서 또는 `ANTHROPIC_BASE_URL`이 비자사 호스트를 가리킬 때 미리 로드됩니다. 값: `true`(프록시 포함 항상 연기), `auto`(임계값 모드: 도구가 컨텍스트의 10% 이내에 맞으면 미리 로드), `auto:N`(사용자 정의 임계값, 예: 5%의 경우 `auto:5`), `false`(모두 미리 로드) |208| `ENABLE_TOOL_SEARCH` | [MCP 도구 검색](/ko/mcp#scale-with-mcp-tool-search)을 제어합니다. 설정 해제: 모든 MCP 도구는 기본적으로 연기되지만 Vertex AI에서 또는 `ANTHROPIC_BASE_URL`이 비자사 호스트를 가리킬 때 미리 로드됩니다. 값: `true`(항상 연기 및 베타 헤더 전송, Vertex AI 또는 `tool_reference`를 지원하지 않는 프록시에서 요청 실패), `auto`(임계값 모드: 도구가 컨텍스트의 10% 이내에 맞으면 미리 로드), `auto:N`(사용자 정의 임계값, 예: 5%의 경우 `auto:5`), `false`(모두 미리 로드) |

206| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | 모든 기본 모델에서 반복된 과부하 오류 후 [`--fallback-model`](/ko/cli-reference#cli-flags)로 폴백을 트리거하려면 비어 있지 않은 값으로 설정합니다. 기본적으로 Opus 모델만 폴백을 트리거합니다. |209| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | 모든 기본 모델에서 반복된 과부하 오류 후 [`--fallback-model`](/ko/cli-reference#cli-flags)로 폴백을 트리거하려면 비어 있지 않은 값으로 설정합니다. 기본적으로 Opus 모델만 폴백을 트리거합니다. |

207| `FORCE_AUTOUPDATE_PLUGINS` | `DISABLE_AUTOUPDATER`를 통해 주 자동 업데이터가 비활성화된 경우에도 플러그인 자동 업데이트를 강제하려면 `1`로 설정합니다. |210| `FORCE_AUTOUPDATE_PLUGINS` | `DISABLE_AUTOUPDATER`를 통해 주 자동 업데이터가 비활성화된 경우에도 플러그인 자동 업데이트를 강제하려면 `1`로 설정합니다. |

208| `FORCE_PROMPT_CACHING_5M` | 1시간 TTL이 적용되는 경우에도 5분 프롬프트 캐시 TTL을 강제하려면 `1`로 설정합니다. `ENABLE_PROMPT_CACHING_1H` 재정의 |211| `FORCE_PROMPT_CACHING_5M` | 1시간 TTL이 적용되는 경우에도 5분 프롬프트 캐시 TTL을 강제하려면 `1`로 설정합니다. `ENABLE_PROMPT_CACHING_1H` 재정의 |


223| `NO_PROXY` | 프록시를 우회하여 직접 발급될 요청의 도메인 및 IP 목록 |226| `NO_PROXY` | 프록시를 우회하여 직접 발급될 요청의 도메인 및 IP 목록 |

224| `OTEL_LOG_RAW_API_BODIES` | 전체 Anthropic Messages API 요청 및 응답 JSON을 OpenTelemetry 로그 이벤트(`api_request_body`, `api_response_body`)로 내보냅니다. 60KB에서 잘린 인라인 본문의 경우 `1`로 설정하거나, 잘리지 않은 본문을 디스크에 쓰고 `body_ref` 경로를 내보내려면 `file:<dir>`로 설정합니다. 기본적으로 비활성화됩니다. 본문에는 전체 대화 기록이 포함됩니다. [모니터링](/ko/monitoring-usage#api-request-body-event) 참조 |227| `OTEL_LOG_RAW_API_BODIES` | 전체 Anthropic Messages API 요청 및 응답 JSON을 OpenTelemetry 로그 이벤트(`api_request_body`, `api_response_body`)로 내보냅니다. 60KB에서 잘린 인라인 본문의 경우 `1`로 설정하거나, 잘리지 않은 본문을 디스크에 쓰고 `body_ref` 경로를 내보내려면 `file:<dir>`로 설정합니다. 기본적으로 비활성화됩니다. 본문에는 전체 대화 기록이 포함됩니다. [모니터링](/ko/monitoring-usage#api-request-body-event) 참조 |

225| `OTEL_LOG_TOOL_CONTENT` | 도구 입력 및 출력 내용을 OpenTelemetry 스팬 이벤트에 포함하려면 `1`로 설정합니다. 민감한 데이터를 보호하기 위해 기본적으로 비활성화됩니다. [모니터링](/ko/monitoring-usage) 참조 |228| `OTEL_LOG_TOOL_CONTENT` | 도구 입력 및 출력 내용을 OpenTelemetry 스팬 이벤트에 포함하려면 `1`로 설정합니다. 민감한 데이터를 보호하기 위해 기본적으로 비활성화됩니다. [모니터링](/ko/monitoring-usage) 참조 |

226| `OTEL_LOG_TOOL_DETAILS` | 도구 입력 인수, MCP 서버 이름, 도구 세부 정보를 OpenTelemetry 추적 및 로그에 포함하려면 `1`로 설정합니다. PII를 보호하기 위해 기본적으로 비활성화됩니다. [모니터링](/ko/monitoring-usage) 참조 |229| `OTEL_LOG_TOOL_DETAILS` | 도구 입력 인수, MCP 서버 이름, 도구 실패 시 원본 오류 문자열, 기타 도구 세부 정보를 OpenTelemetry 추적 및 로그에 포함하려면 `1`로 설정합니다. PII를 보호하기 위해 기본적으로 비활성화됩니다. [모니터링](/ko/monitoring-usage) 참조 |

227| `OTEL_LOG_USER_PROMPTS` | 사용자 프롬프트 텍스트를 OpenTelemetry 추적 및 로그에 포함하려면 `1`로 설정합니다. 기본적으로 비활성화됩니다(프롬프트는 수정됨). [모니터링](/ko/monitoring-usage) 참조 |230| `OTEL_LOG_USER_PROMPTS` | 사용자 프롬프트 텍스트를 OpenTelemetry 추적 및 로그에 포함하려면 `1`로 설정합니다. 기본적으로 비활성화됩니다(프롬프트는 수정됨). [모니터링](/ko/monitoring-usage) 참조 |

228| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | 메트릭 속성에서 계정 UUID를 제외하려면 `false`로 설정합니다(기본값: 포함). [모니터링](/ko/monitoring-usage) 참조 |231| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | 메트릭 속성에서 계정 UUID를 제외하려면 `false`로 설정합니다(기본값: 포함). [모니터링](/ko/monitoring-usage) 참조 |

229| `OTEL_METRICS_INCLUDE_SESSION_ID` | 메트릭 속성에서 세션 ID를 제외하려면 `false`로 설정합니다(기본값: 포함). [모니터링](/ko/monitoring-usage) 참조 |232| `OTEL_METRICS_INCLUDE_SESSION_ID` | 메트릭 속성에서 세션 ID를 제외하려면 `false`로 설정합니다(기본값: 포함). [모니터링](/ko/monitoring-usage) 참조 |

fast-mode.md +51 −18

Details

4 4 

5# 빠른 모드로 응답 속도 향상5# 빠른 모드로 응답 속도 향상

6 6 

7> Claude Code에서 빠른 모드를 전환하여 더 빠른 Opus 4.6 응답을 받습니다.7> Claude Code에서 빠른 모드를 전환하여 더 빠른 Opus 응답을 받습니다.

8 8 

9<Note>9<Note>

10 빠른 모드는 [연구 미리보기](#research-preview)입니다. 피드백에 따라 기능, 가격 책정 및 가용성이 변경될 수 있습니다.10 빠른 모드는 [연구 미리보기](#research-preview)입니다. 피드백에 따라 기능, 가격 책정 및 가용성이 변경될 수 있습니다.

11</Note>11</Note>

12 12 

13빠른 모드는 Claude Opus 4.6을 위한 고속 구성으로, 토큰당 더 높은 비용으로 모델을 2.5배 빠르게 만듭니다. 빠른 반복이나 라이브 디버깅과 같은 대화형 작업에서 속도가 필요할 때 `/fast`로 켜고, 비용이 지연 시간보다 중요할 때 끕니다.13빠른 모드는 Claude Opus를 위한 고속 구성으로, 토큰당 더 높은 비용으로 모델을 2.5배 빠르게 만듭니다. 빠른 반복이나 라이브 디버깅과 같은 대화형 작업에서 속도가 필요할 때 `/fast`로 켜고, 비용이 지연 시간보다 중요할 때 끕니다.

14 14 

15빠른 모드는 다른 모델이 아닙니다. 비용 효율성보다 속도를 우선시하는 다른 API 구성을 사용하는 동일한 Opus 4.6을 사용합니다. 동일한 품질과 기능을 얻으며, 응답만 더 빠릅니다.15빠른 모드는 다른 모델이 아닙니다. 비용 효율성보다 속도를 우선시하는 다른 API 구성을 사용하는 동일한 Claude Opus를 사용합니다. 동일한 품질과 기능을 얻으며, 응답만 더 빠릅니다. 빠른 모드는 Opus 4.6 및 Opus 4.7에서 지원됩니다. Sonnet, Haiku 또는 다른 모델에서는 사용할 수 없습니다.

16 16 

17<Note>17<Note>

18 빠른 모드는 Claude Code v2.1.36 이상이 필요합니다. `claude --version`으로 버전을 확인합니다.18 빠른 모드는 Claude Code v2.1.36 이상이 필요합니다. `claude --version`으로 버전을 확인합니다.


21알아야 할 사항:21알아야 할 사항:

22 22 

23* Claude Code CLI에서 `/fast`를 사용하여 빠른 모드를 전환합니다. Claude Code VS Code 확장 프로그램에서도 `/fast`를 통해 사용할 수 있습니다.23* Claude Code CLI에서 `/fast`를 사용하여 빠른 모드를 전환합니다. Claude Code VS Code 확장 프로그램에서도 `/fast`를 통해 사용할 수 있습니다.

24* Opus 4.6의 빠른 모드 가격은 \$30/150 MTok부터 시작합니다. 빠른 모드는 2월 16일 오후 11:59(PT)까지 모든 요금제에 대해 50% 할인으로 제공됩니다.24* 기본적으로 `/fast`는 Opus 4.6에서 실행됩니다. 대신 Opus 4.7에서 빠른 모드를 실행하려면 [`CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE`](#use-fast-mode-on-opus-4-7) 환경 변수를 설정합니다.

25* 빠른 모드 가격은 Opus 4.6과 Opus 4.7 모두에서 \$30/150 MTok입니다.

25* 구독 요금제(Pro/Max/Team/Enterprise)의 모든 Claude Code 사용자 및 Claude Console에서 사용할 수 있습니다.26* 구독 요금제(Pro/Max/Team/Enterprise)의 모든 Claude Code 사용자 및 Claude Console에서 사용할 수 있습니다.

26* 구독 요금제(Pro/Max/Team/Enterprise)의 Claude Code 사용자의 경우, 빠른 모드는 추가 사용을 통해서만 사용 가능하며 구독 요금제 사용량 제한에 포함되지 않습니다.27* 구독 요금제(Pro/Max/Team/Enterprise)의 Claude Code 사용자의 경우, 빠른 모드는 추가 사용을 통해서만 사용 가능하며 구독 요금제 사용량 제한에 포함되지 않습니다.

27 28 

28이 페이지에서는 [빠른 모드 전환](#toggle-fast-mode), [비용 트레이드오프](#understand-the-cost-tradeoff), [빠른 모드 사용 시기](#decide-when-to-use-fast-mode), [요구사항](#requirements), [세션별 옵트인](#require-per-session-opt-in) 및 [속도 제한 처리](#handle-rate-limits)를 다룹니다.29이 페이지에서는 [빠른 모드 전환](#toggle-fast-mode), [Opus 4.7에서 빠른 모드 사용](#use-fast-mode-on-opus-4-7), [비용 트레이드오프](#understand-the-cost-tradeoff), [빠른 모드 사용 시기](#decide-when-to-use-fast-mode), [요구사항](#requirements), [세션별 옵트인](#require-per-session-opt-in) 및 [속도 제한 처리](#handle-rate-limits)를 다룹니다.

29 30 

30## 빠른 모드 전환31## 빠른 모드 전환

31 32 


40 41 

41빠른 모드를 활성화하면:42빠른 모드를 활성화하면:

42 43 

43* 다른 모델을 사용 중인 경우 Claude Code가 자동으로 Opus 4.6으로 전환됩니다44* 다른 모델을 사용 중인 경우 Claude Code가 자동으로 빠른 모드 모델로 전환됩니다: 기본적으로 Opus 4.6이거나 [`CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE`](#use-fast-mode-on-opus-4-7)가 설정되어 있을 때 Opus 4.7입니다.

44* 확인 메시지가 표시됩니다: "Fast mode ON"45* 확인 메시지가 표시됩니다: "Fast mode ON"

45* 빠른 모드가 활성화되어 있는 동안 프롬프트 옆에 작은 `↯` 아이콘이 나타납니다46* 빠른 모드가 활성화되어 있는 동안 프롬프트 옆에 작은 `↯` 아이콘이 나타납니다

46* 언제든지 `/fast`를 다시 실행하여 빠른 모드가 켜져 있는지 꺼져 있는지 확인합니다47* 언제든지 `/fast`를 다시 실행하여 빠른 모드가 켜져 있는지 꺼져 있는지 확인합니다

47 48 

48`/fast`를 다시 실행하여 빠른 모드를 비활성화하면 Opus 4.6에 유지됩니다. 모델이 이전 모델로 되돌아가지 않습니다. 다른 모델로 전환하려면 `/model`을 사용합니다.49`/fast`를 다시 실행하여 빠른 모드를 비활성화하면 빠른 모드가 실행 중이던 동일한 Opus 버전에 유지됩니다. 모델이 이전 모델로 되돌아가지 않습니다. 다른 모델로 전환하려면 `/model`을 사용합니다.

50 

51## Opus 4.7에서 빠른 모드 사용

52 

53<Note>

54 Opus 4.7의 빠른 모드는 Claude Code v2.1.139 이상이 필요합니다.

55</Note>

56 

57Claude Opus 4.7의 빠른 모드는 연구 미리보기입니다. Opus 4.6의 빠른 모드와 동일한 2.5배 속도 및 동일한 가격으로 실행되며, 다른 동작 변경 사항은 없습니다.

58 

59<Note>

60 2026년 5월 14일에 Opus 4.7이 기본 빠른 모드 모델이 됩니다. 그때까지 `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE=1`을 설정하여 옵트인합니다.

61</Note>

62 

63옵트인하려면 Claude Code를 시작하기 전에 `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE=1`을 설정합니다. 변수가 설정되면 `/fast`는 Opus 4.7에서 실행됩니다. 설정되지 않으면 `/fast`는 계속 Opus 4.6에서 실행됩니다.

64 

65변수를 셸 내보내기로 설정할 수 있습니다:

66 

67```bash theme={null}

68export CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE=1

69```

70 

71또는 사용자, 프로젝트 및 관리되는 설정을 포함한 모든 Claude Code [설정 파일](/ko/settings#settings-files)에서 옵트인 범위를 지정하려면:

72 

73```json theme={null}

74{

75 "env": {

76 "CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE": "1"

77 }

78}

79```

80 

81Opus 4.6의 빠른 모드는 Opus 4.7과 함께 계속 사용할 수 있습니다. 둘 다 동일한 빠른 모드 속도 제한 풀을 공유합니다: 어느 모델에서든 사용량은 동일한 제한에서 차감됩니다.

49 82 

50## 비용 트레이드오프 이해83## 비용 트레이드오프 이해

51 84 

52빠른 모드는 표준 Opus 4.6보다 토큰당 가격이 높습니다:85빠른 모드는 표준 Opus보다 토큰당 가격이 높습니다:

53 86 

54| 모드 | 입력 (MTok) | 출력 (MTok) |87| 모드 | 입력 (MTok) | 출력 (MTok) |

55| ------------------------ | --------- | --------- |88| --------------- | --------- | --------- |

56| Opus 4.6의 빠른 모드 (\<200K) | \$30 | \$150 |89| Opus 4.6의 빠른 모드 | \$30 | \$150 |

57| Opus 4.6의 빠른 모드 (>200K) | \$60 | \$225 |90| Opus 4.7의 빠른 모드 | \$30 | \$150 |

58 91 

59빠른 모드는 1M 토큰 확장 컨텍스트 윈도우와 호환됩니다.92빠른 모드 가격은 전체 1M 토큰 컨텍스트 윈도우에 걸쳐 고정입니다.

60 93 

61대화 중간에 빠른 모드로 전환하면 전체 대화 컨텍스트에 대해 전체 빠른 모드 캐시되지 않은 입력 토큰 가격을 지불합니다. 이는 처음부터 빠른 모드를 활성화했을 경우보다 더 많은 비용이 듭니다.94대화 중간에 빠른 모드로 전환하면 전체 대화 컨텍스트에 대해 전체 빠른 모드 캐시되지 않은 입력 토큰 가격을 지불합니다. 이는 처음부터 빠른 모드를 활성화했을 경우보다 더 많은 비용이 듭니다.

62 95 


90빠른 모드는 다음 모두를 필요로 합니다:123빠른 모드는 다음 모두를 필요로 합니다:

91 124 

92* **타사 클라우드 제공자에서 사용 불가**: 빠른 모드는 Amazon Bedrock, Google Vertex AI 또는 Microsoft Azure Foundry에서 사용할 수 없습니다. 빠른 모드는 Anthropic Console API 및 추가 사용을 사용하는 Claude 구독 요금제를 통해 사용할 수 있습니다.125* **타사 클라우드 제공자에서 사용 불가**: 빠른 모드는 Amazon Bedrock, Google Vertex AI 또는 Microsoft Azure Foundry에서 사용할 수 없습니다. 빠른 모드는 Anthropic Console API 및 추가 사용을 사용하는 Claude 구독 요금제를 통해 사용할 수 있습니다.

93* **추가 사용 활성화**: 계정에 추가 사용이 활성화되어 있어야 하며, 이를 통해 요금제의 포함된 사용량을 초과하여 청구할 수 있습니다. 개인 계정의 경우 [Console 청구 설정](https://platform.claude.com/settings/organization/billing)에서 활성화합니다. Teams 및 Enterprise의 경우 관리자가 조직에 대해 추가 사용을 활성화해야 합니다.126* **추가 사용 활성화**: 계정에 추가 사용이 활성화되어 있어야 하며, 이를 통해 요금제의 포함된 사용량을 초과하여 청구할 수 있습니다. 개인 계정의 경우 [Console 청구 설정](https://platform.claude.com/settings/organization/billing)에서 활성화합니다. Team 및 Enterprise의 경우 관리자가 조직에 대해 추가 사용을 활성화해야 합니다.

94 127 

95<Note>128<Note>

96 빠른 모드 사용량은 요금제에 남은 사용량이 있더라도 추가 사용으로 직접 청구됩니다. 이는 빠른 모드 토큰이 요금제의 포함된 사용량에 포함되지 않으며 첫 번째 토큰부터 빠른 모드 요금으로 청구됨을 의미합니다.129 빠른 모드 사용량은 요금제에 남은 사용량이 있더라도 추가 사용으로 직접 청구됩니다. 이는 빠른 모드 토큰이 요금제의 포함된 사용량에 포함되지 않으며 첫 번째 토큰부터 빠른 모드 요금으로 청구됨을 의미합니다.

97</Note>130</Note>

98 131 

99* **Teams 및 Enterprise의 관리자 활성화**: 빠른 모드는 Teams 및 Enterprise 조직에 대해 기본적으로 비활성화됩니다. 사용자가 액세스할 수 있으려면 관리자가 명시적으로 [빠른 모드를 활성화](#enable-fast-mode-for-your-organization)해야 합니다.132* **Team 및 Enterprise의 관리자 활성화**: 빠른 모드는 Team 및 Enterprise 조직에 대해 기본적으로 비활성화됩니다. 사용자가 액세스할 수 있으려면 관리자가 명시적으로 [빠른 모드를 활성화](#enable-fast-mode-for-your-organization)해야 합니다.

100 133 

101<Note>134<Note>

102 관리자가 조직에 대해 빠른 모드를 활성화하지 않은 경우 `/fast` 명령은 "Fast mode has been disabled by your organization."을 표시합니다.135 관리자가 조직에 대해 빠른 모드를 활성화하지 않은 경우 `/fast` 명령은 "Fast mode has been disabled by your organization."을 표시합니다.


107관리자는 다음에서 빠른 모드를 활성화할 수 있습니다:140관리자는 다음에서 빠른 모드를 활성화할 수 있습니다:

108 141 

109* **Console** (API 고객): [Claude Code 기본 설정](https://platform.claude.com/claude-code/preferences)142* **Console** (API 고객): [Claude Code 기본 설정](https://platform.claude.com/claude-code/preferences)

110* **Claude AI** (Teams 및 Enterprise): [관리자 설정 > Claude Code](https://claude.ai/admin-settings/claude-code)143* **Claude AI** (Team 및 Enterprise): [관리자 설정 > Claude Code](https://claude.ai/admin-settings/claude-code)

111 144 

112빠른 모드를 완전히 비활성화하는 또 다른 옵션은 `CLAUDE_CODE_DISABLE_FAST_MODE=1`을 설정하는 것입니다. [환경 변수](/ko/env-vars)를 참조합니다.145빠른 모드를 완전히 비활성화하는 또 다른 옵션은 `CLAUDE_CODE_DISABLE_FAST_MODE=1`을 설정하는 것입니다. [환경 변수](/ko/env-vars)를 참조합니다.

113 146 

114### 세션별 옵트인 필요147### 세션별 옵트인 필요

115 148 

116기본적으로 빠른 모드는 세션 간에 유지됩니다: 사용자가 빠른 모드를 활성화하면 향후 세션에서도 켜져 있습니다. [Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise) 또는 [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise) 요금제의 관리자는 [관리되는 설정](/ko/settings#settings-files) 또는 [서버 관리 설정](/ko/server-managed-settings)에서 `fastModePerSessionOptIn`을 `true`로 설정하여 이를 방지할 수 있습니다. 이로 인해 각 세션이 빠른 모드가 꺼진 상태로 시작되며, 사용자가 `/fast`로 명시적으로 활성화해야 합니다.149기본적으로 빠른 모드는 세션 간에 유지됩니다: 사용자가 빠른 모드를 활성화하면 향후 세션에서도 켜져 있습니다. [Team](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise) 또는 [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise) 요금제의 관리자는 [관리되는 설정](/ko/settings#settings-files) 또는 [서버 관리 설정](/ko/server-managed-settings)에서 `fastModePerSessionOptIn`을 `true`로 설정하여 이를 방지할 수 있습니다. 이로 인해 각 세션이 빠른 모드가 꺼진 상태로 시작되며, 사용자가 `/fast`로 명시적으로 활성화해야 합니다.

117 150 

118```json theme={null}151```json theme={null}

119{152{


125 158 

126## 속도 제한 처리159## 속도 제한 처리

127 160 

128빠른 모드는 표준 Opus 4.6과 별도의 속도 제한을 가집니다. 빠른 모드 속도 제한에 도달하거나 추가 사용 크레딧이 부족할 때:161빠른 모드는 표준 Opus와 별도의 속도 제한을 가집니다. Opus 4.6 Opus 4.7의 빠른 모드는 동일한 속도 제한 풀을 공유합니다: 어느 모델에서든 사용량은 동일한 제한에서 차감됩니다. 빠른 모드 속도 제한에 도달하거나 추가 사용이 부족할 때:

129 162 

1301. 빠른 모드가 자동으로 표준 Opus 4.6으로 폴백됩니다1631. 빠른 모드가 자동으로 동일한 Opus 버전의 표준 속도로 폴백됩니다

1312. `↯` 아이콘이 회색으로 변하여 쿨다운을 나타냅니다1642. `↯` 아이콘이 회색으로 변하여 쿨다운을 나타냅니다

1323. 표준 속도 및 가격으로 계속 작업합니다1653. 표준 속도 및 가격으로 계속 작업합니다

1334. 쿨다운이 만료되면 빠른 모드가 자동으로 다시 활성화됩니다1664. 쿨다운이 만료되면 빠른 모드가 자동으로 다시 활성화됩니다

fullscreen.md +2 −0

Details

93 93 

94`3` 값은 `vim` 및 유사한 애플리케이션의 기본값과 일치합니다. 설정은 1에서 20 사이의 값을 허용합니다.94`3` 값은 `vim` 및 유사한 애플리케이션의 기본값과 일치합니다. 설정은 1에서 20 사이의 값을 허용합니다.

95 95 

96스크롤 속도를 대화형으로 조정하려면 `/scroll-speed`를 실행합니다. 대화는 열려 있는 동안 스크롤할 수 있는 눈금자를 표시하므로 변경 사항을 즉시 느낄 수 있습니다. `←` 및 `→`를 눌러 조정하고, `r`을 눌러 자동 감지된 기본값으로 재설정하고, `Enter`를 눌러 저장합니다. 명령은 `CLAUDE_CODE_SCROLL_SPEED` 환경 변수가 설정하는 동일한 값을 작성하며, `~/.claude/settings.json`에 유지됩니다. 이 명령은 JetBrains IDE 터미널에서 사용할 수 없습니다.

97 

96### JetBrains IDE 터미널에서 스크롤98### JetBrains IDE 터미널에서 스크롤

97 99 

98JetBrains IDE 터미널에서 Claude Code는 자체 스크롤 처리를 적용하고 `CLAUDE_CODE_SCROLL_SPEED`를 무시합니다. 터미널은 다른 에뮬레이터보다 훨씬 높은 속도로 스크롤 이벤트를 보내므로 다른 곳에서 조정된 배수는 여기서 과도합니다.100JetBrains IDE 터미널에서 Claude Code는 자체 스크롤 처리를 적용하고 `CLAUDE_CODE_SCROLL_SPEED`를 무시합니다. 터미널은 다른 에뮬레이터보다 훨씬 높은 속도로 스크롤 이벤트를 보내므로 다른 곳에서 조정된 배수는 여기서 과도합니다.

glossary.md +2 −2

Details

172 172 

173## O173## O

174 174 

175### Output style175### 출력 스타일

176 176 

177Claude의 시스템 프롬프트를 수정하여 응답 동작, 톤 또는 형식을 변경하는 구성입니다. 출력 스타일은 사용자 메시지로 전달되는 [CLAUDE.md](#claude-md)와 달리 기본 시스템 프롬프트의 소프트웨어 엔지니어링 관련 부분을 끕니다. 기본 제공 스타일에는 Default, Explanatory 및 Learning이 포함됩니다.177Claude의 시스템 프롬프트를 수정하여 응답 동작, 톤 또는 형식을 변경하는 구성입니다. 출력 스타일은 사용자 메시지로 전달되는 [CLAUDE.md](#claude-md)와 달리 기본 시스템 프롬프트의 소프트웨어 엔지니어링 관련 부분을 끕니다. 기본 제공 스타일에는 Default, Proactive, Explanatory 및 Learning이 포함됩니다.

178 178 

179자세히 알아보기: [출력 스타일](/ko/output-styles)179자세히 알아보기: [출력 스타일](/ko/output-styles)

180 180 

hooks.md +86 −23

Details

70 {70 {

71 "type": "command",71 "type": "command",

72 "if": "Bash(rm *)",72 "if": "Bash(rm *)",

73 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-rm.sh"73 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh",

74 "args": []

74 }75 }

75 ]76 ]

76 }77 }


307[공통 필드](#common-fields) 외에도 명령 hook은 이러한 필드를 허용합니다:308[공통 필드](#common-fields) 외에도 명령 hook은 이러한 필드를 허용합니다:

308 309 

309| 필드 | 필수 | 설명 |310| 필드 | 필수 | 설명 |

310| :------------ | :-- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |311| :------------ | :-- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

311| `command` | 예 | 실행할 셸 명령 |312| `command` | 예 | 실행할 셸 명령. `args`와 함께 직접 생성할 실행 파일입니다. [Exec 형식 및 셸 형식](#exec-form-and-shell-form) 참조 |

313| `args` | 아니오 | 인수 목록. 존재할 때 `command`는 실행 파일로 해결되고 `args`를 인수 벡터로 하여 직접 생성되며 셸이 관여하지 않습니다. [Exec 형식 및 셸 형식](#exec-form-and-shell-form) 참조 |

312| `async` | 아니오 | `true`인 경우 차단하지 않고 백그라운드에서 실행됩니다. [백그라운드에서 hook 실행](#run-hooks-in-the-background) 참조 |314| `async` | 아니오 | `true`인 경우 차단하지 않고 백그라운드에서 실행됩니다. [백그라운드에서 hook 실행](#run-hooks-in-the-background) 참조 |

313| `asyncRewake` | 아니오 | `true`인 경우 백그라운드에서 실행되고 종료 코드 2에서 Claude를 깨웁니다. `async`를 의미합니다. hook의 stderr 또는 stderr이 비어 있으면 stdout이 Claude에 시스템 알림으로 표시되므로 장기 실행 백그라운드 실패에 반응할 수 있습니다 |315| `asyncRewake` | 아니오 | `true`인 경우 백그라운드에서 실행되고 종료 코드 2에서 Claude를 깨웁니다. `async`를 의미합니다. hook의 stderr 또는 stderr이 비어 있으면 stdout이 Claude에 시스템 알림으로 표시되므로 장기 실행 백그라운드 실패에 반응할 수 있습니다 |

314| `shell` | 아니오 | 이 hook에 사용할 셸. `"bash"` (기본값) 또는 `"powershell"`을 허용합니다. `"powershell"`을 설정하면 Windows에서 PowerShell을 통해 명령을 실행합니다. `CLAUDE_CODE_USE_POWERSHELL_TOOL`이 필요하지 않습니다. hook이 PowerShell을 직접 생성하기 때문입니다 |316| `shell` | 아니오 | 이 hook에 사용할 셸. `"bash"` (기본값) 또는 `"powershell"`을 허용합니다. `"powershell"`을 설정하면 Windows에서 PowerShell을 통해 명령을 실행합니다. `CLAUDE_CODE_USE_POWERSHELL_TOOL`이 필요하지 않습니다. hook이 PowerShell을 직접 생성하기 때문입니다. `args`가 설정되면 무시됩니다 |

317 

318<a id="exec-form-and-shell-form" />

319 

320##### Exec 형식 및 셸 형식

321 

322명령 hook은 `args`가 설정되면 exec 형식으로 실행되고 `args`가 생략되면 셸 형식으로 실행됩니다. hook이 [경로 자리 표시자](#reference-scripts-by-path)를 참조할 때마다 `args`를 설정하세요. 각 요소는 따옴표 없이 하나의 인수로 전달됩니다. 파이프 또는 `&&`와 같은 셸 기능이 필요하거나 두 가지 우려 사항이 모두 적용되지 않을 때 `args`를 생략합니다.

323 

324**Exec 형식**은 `args`가 있을 때 실행됩니다. Claude Code는 `command`를 `PATH`의 실행 파일로 해결하고 `args`를 인수 벡터로 하여 직접 생성합니다. 셸이 없으므로 각 `args` 요소는 작성된 그대로 정확히 하나의 인수이며 `${CLAUDE_PLUGIN_ROOT}`와 같은 경로 자리 표시자는 `command` 및 각 `args` 요소로 일반 문자열로 대체됩니다. 아포스트로피, `$`, 백틱과 같은 특수 문자는 해석할 셸이 없으므로 그대로 전달됩니다. 어떤 플랫폼에서도 셸 토큰화가 발생하지 않습니다.

325 

326**셸 형식**은 `args`가 없을 때 실행됩니다. `command` 문자열은 셸로 전달됩니다: macOS 및 Linux에서는 `sh -c`, Windows에서는 Git Bash, Git Bash가 설치되지 않았을 때는 PowerShell입니다. `shell` 필드를 설정하여 명시적으로 선택합니다. 셸은 문자열을 토큰화하고 변수를 확장하며 파이프, `&&`, 리다이렉트, 글로브를 해석합니다.

327 

328<Note>

329 Windows에서 exec 형식은 `.exe`와 같은 실제 실행 파일로 해결되는 `command`를 필요로 합니다. npm, npx, eslint 및 기타 도구가 `node_modules/.bin`에 설치하는 `.cmd` 및 `.bat` shim은 실행 파일이 아니며 셸 없이 생성될 수 없습니다. exec 형식으로 실행하려면 기본 스크립트를 `node`로 직접 호출합니다. 예를 들어 `"command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/node_modules/eslint/bin/eslint.js"]`. `node` 더하기 스크립트 경로 패턴은 `node.exe`가 실제 바이너리이므로 모든 플랫폼에서 작동합니다. `.cmd` 또는 `.bat` shim을 이름으로 실행하려면 셸 형식을 사용합니다.

330</Note>

331 

332이 예제는 plugin과 함께 번들된 Node 스크립트를 실행합니다. Exec 형식은 해결된 스크립트 경로를 따옴표 없이 하나의 인수로 전달합니다:

333 

334```json theme={null}

335{

336 "type": "command",

337 "command": "node",

338 "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/format.js", "--fix"]

339}

340```

341 

342동등한 셸 형식은 공백이나 특수 문자가 있는 경로를 처리하기 위해 따옴표가 필요합니다:

343 

344```json theme={null}

345{

346 "type": "command",

347 "command": "node \"${CLAUDE_PLUGIN_ROOT}\"/scripts/format.js --fix"

348}

349```

350 

351두 형식 모두 동일한 [경로 자리 표시자](#reference-scripts-by-path)를 지원하며 생성된 프로세스에서 환경 변수 `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`로 내보내므로 스크립트는 시작 방식과 관계없이 `process.env.CLAUDE_PLUGIN_ROOT`를 읽을 수 있습니다. Plugin hook은 추가로 `${user_config.*}` 값을 대체합니다. [사용자 구성](/ko/plugins-reference#user-configuration)을 참조하세요.

352 

353<Note>

354 Exec 형식에서 `command`는 실행 파일 이름 또는 경로만입니다. `command`가 경로 구분자가 없는 bare 이름이고 `args`와 함께 공백을 포함하면 Claude Code는 경고를 기록합니다. 생성이 실패하기 때문입니다: `node script.js`라는 이름의 실행 파일이 없습니다. 추가 토큰을 `args`로 이동합니다. `C:\Program Files\nodejs\node.exe`와 같은 공백이 있는 절대 경로는 단일 유효한 실행 파일이며 경고를 트리거하지 않습니다.

355</Note>

315 356 

316#### HTTP hook 필드357#### HTTP hook 필드

317 358 


397| `prompt` | 예 | 모델에 전송할 프롬프트 텍스트. hook 입력 JSON에 대한 자리 표시자로 `$ARGUMENTS` 사용 |438| `prompt` | 예 | 모델에 전송할 프롬프트 텍스트. hook 입력 JSON에 대한 자리 표시자로 `$ARGUMENTS` 사용 |

398| `model` | 아니오 | 평가에 사용할 모델. 기본값은 빠른 모델 |439| `model` | 아니오 | 평가에 사용할 모델. 기본값은 빠른 모델 |

399 440 

400일치하는 모든 hook은 병렬로 실행되며 동일한 핸들러는 자동으로 중복 제거됩니다. 명령 hook은 명령 문자열로 중복 제거되고 HTTP hook은 URL로 중복 제거됩니다. 핸들러는 현재 디렉토리에서 Claude Code의 환경으로 실행됩니다. `$CLAUDE_CODE_REMOTE` 환경 변수는 원격 웹 환경에서 `"true"`로 설정되고 로컬 CLI에서는 설정되지 않습니다.441일치하는 모든 hook은 병렬로 실행되며 동일한 핸들러는 자동으로 중복 제거됩니다. 명령 hook은 명령 문자열과 `args`로 중복 제거되고 HTTP hook은 URL로 중복 제거됩니다. 핸들러는 현재 디렉토리에서 Claude Code의 환경으로 실행됩니다. `$CLAUDE_CODE_REMOTE` 환경 변수는 원격 웹 환경에서 `"true"`로 설정되고 로컬 CLI에서는 설정되지 않습니다.

401 442 

402### 경로별로 스크립트 참조443### 경로별로 스크립트 참조

403 444 

404프로젝트 또는 plugin 루트를 기준으로 hook 스크립트를 참조하려면 환경 변수를 사용하세요. hook이 실행될 때의 작업 디렉토리와 관계없이:445프로젝트 또는 plugin 루트를 기준으로 hook 스크립트를 참조하려면 이러한 자리 표시자를 사용합니다. hook이 실행될 때의 작업 디렉토리와 관계없이:

405 446 

406* `$CLAUDE_PROJECT_DIR`: 프로젝트 루트. 공백이 있는 경로를 처리하려면 따옴표로 감싸세요.447* `${CLAUDE_PROJECT_DIR}`: 프로젝트 루트.

407* `${CLAUDE_PLUGIN_ROOT}`: plugin의 설치 디렉토리, [plugin](/ko/plugins)과 함께 번들된 스크립트의 경우. plugin 업데이트 시마다 변경됩니다.448* `${CLAUDE_PLUGIN_ROOT}`: plugin의 설치 디렉토리, [plugin](/ko/plugins)과 함께 번들된 스크립트의 경우. plugin 업데이트 시마다 변경됩니다.

408* `${CLAUDE_PLUGIN_DATA}`: plugin의 [지속적 데이터 디렉토리](/ko/plugins-reference#persistent-data-directory), plugin 업데이트를 거쳐 유지되어야 하는 종속성 및 상태의 경우.449* `${CLAUDE_PLUGIN_DATA}`: plugin의 [지속적 데이터 디렉토리](/ko/plugins-reference#persistent-data-directory), plugin 업데이트를 거쳐 유지되어야 하는 종속성 및 상태의 경우.

409 450 

451경로 자리 표시자를 참조하는 모든 hook에 대해 [exec 형식](#exec-form-and-shell-form)을 선호합니다. Exec 형식은 각 `args` 요소를 셸 토큰화 없이 하나의 인수로 전달하므로 공백이나 특수 문자가 있는 경로는 따옴표가 필요하지 않습니다. 셸 형식에서는 각 자리 표시자를 큰따옴표로 감싸세요.

452 

410<Tabs>453<Tabs>

411 <Tab title="프로젝트 스크립트">454 <Tab title="프로젝트 스크립트">

412 이 예제는 `$CLAUDE_PROJECT_DIR`을 사용하여 `Write` 또는 `Edit` 도구 호출 후 프로젝트의 `.claude/hooks/` 디렉토리에서 스타일 검사기를 실행합니다:455 이 예제는 `${CLAUDE_PROJECT_DIR}`을 사용하여 `Write` 또는 `Edit` 도구 호출 후 프로젝트의 `.claude/hooks/` 디렉토리에서 스타일 검사기를 실행합니다:

413 456 

414 ```json theme={null}457 ```json theme={null}

415 {458 {


420 "hooks": [463 "hooks": [

421 {464 {

422 "type": "command",465 "type": "command",

423 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-style.sh"466 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh",

467 "args": []

424 }468 }

425 ]469 ]

426 }470 }


446 {490 {

447 "type": "command",491 "type": "command",

448 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh",492 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh",

493 "args": [],

449 "timeout": 30494 "timeout": 30

450 }495 }

451 ]496 ]


529`--agent`로 실행하거나 subagent 내부에서 실행할 때 두 개의 추가 필드가 포함됩니다:574`--agent`로 실행하거나 subagent 내부에서 실행할 때 두 개의 추가 필드가 포함됩니다:

530 575 

531| 필드 | 설명 |576| 필드 | 설명 |

532| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |577| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

533| `agent_id` | subagent의 고유 식별자. hook이 subagent 호출 내부에서 발생할 때만 존재합니다. 이를 사용하여 subagent hook 호출을 메인 스레드 호출과 구별합니다. |578| `agent_id` | subagent의 고유 식별자. hook이 subagent 호출 내부에서 발생할 때만 존재합니다. 이를 사용하여 subagent hook 호출을 메인 스레드 호출과 구별합니다. |

534| `agent_type` | 에이전트 이름 (예: `"Explore"` 또는 `"security-reviewer"`). 세션이 `--agent`를 사용하거나 hook이 subagent 내부에서 발생할 때 존재합니다. subagent의 경우 subagent의 유형이 세션의 `--agent` 값보다 우선합니다. |579| `agent_type` | 에이전트 이름 (예: `"Explore"` 또는 `"security-reviewer"`). 세션이 `--agent`를 사용하거나 hook이 subagent 내부에서 발생할 때 존재합니다. subagent의 경우 subagent의 유형이 세션의 `--agent` 값보다 우선합니다. [사용자 정의 subagent](/ko/sub-agents)의 경우 이는 에이전트의 frontmatter에서 `name` 필드이며 파일명이 아닙니다. |

580 

581`SessionStart` hook만 `model` 필드를 받습니다. `$CLAUDE_MODEL` 환경 변수는 없습니다. hook 프로세스는 부모 환경을 상속하므로 셸에서 설정한 경우 `$ANTHROPIC_MODEL`을 읽을 수 있지만 세션 중에 `/model`로 모델을 전환할 때 해당 값은 변경되지 않습니다.

535 582 

536예를 들어 Bash 명령에 대한 `PreToolUse` hook은 stdin에서 다음을 받습니다:583예를 들어 Bash 명령에 대한 `PreToolUse` hook은 stdin에서 다음을 받습니다:

537 584 


1153| `questions` | 배열 | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | 제시할 질문, 각각 `question` 문자열, 짧은 `header`, `options` 배열, 선택적 `multiSelect` 플래그 |1200| `questions` | 배열 | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | 제시할 질문, 각각 `question` 문자열, 짧은 `header`, `options` 배열, 선택적 `multiSelect` 플래그 |

1154| `answers` | 객체 | `{"Which framework?": "React"}` | 선택적. 질문 텍스트를 선택한 옵션 레이블로 매핑합니다. 다중 선택 답변은 쉼표로 레이블을 결합합니다. Claude는 이 필드를 설정하지 않습니다. `updatedInput`을 통해 프로그래밍 방식으로 답변을 제공하세요 |1201| `answers` | 객체 | `{"Which framework?": "React"}` | 선택적. 질문 텍스트를 선택한 옵션 레이블로 매핑합니다. 다중 선택 답변은 쉼표로 레이블을 결합합니다. Claude는 이 필드를 설정하지 않습니다. `updatedInput`을 통해 프로그래밍 방식으로 답변을 제공하세요 |

1155 1202 

1203##### ExitPlanMode

1204 

1205Claude가 [plan 모드](/ko/permission-modes#analyze-before-you-edit-with-plan-mode)를 떠나기 전에 계획을 제시하고 사용자에게 승인을 요청합니다. Claude는 도구를 호출하기 전에 계획을 파일에 디스크에 작성하므로 모델의 리터럴 `tool_input`은 `allowedPrompts`만 전달합니다. Claude Code는 hook에 전달하기 전에 계획 내용과 파일 경로를 주입합니다.

1206 

1207| 필드 | 유형 | 예제 | 설명 |

1208| :--------------- | :-- | :------------------------------------------ | :----------------------------------------------------------------------------- |

1209| `plan` | 문자열 | `"## Refactor auth\n1. Extract..."` | Markdown의 계획 내용. 디스크의 계획 파일에서 주입됨 |

1210| `planFilePath` | 문자열 | `"/Users/.../plans/refactor-auth.md"` | 계획 파일의 경로. 주입됨 |

1211| `allowedPrompts` | 배열 | `[{"tool": "Bash", "prompt": "run tests"}]` | 선택적. Claude가 계획을 구현하기 위해 요청하는 prompt 기반 권한, 각각 `tool` 이름과 작업 범주를 설명하는 `prompt` |

1212 

1213`PostToolUse`에서 `tool_response`는 승인된 계획을 보유하는 `plan` 및 `filePath` 필드가 있는 객체이며, 내부 상태 플래그도 있습니다. 디스크에서 파일을 다시 읽는 대신 `tool_response.plan`에서 계획 내용을 읽으세요.

1214 

1156#### PreToolUse 결정 제어1215#### PreToolUse 결정 제어

1157 1216 

1158`PreToolUse` hook은 도구 호출 진행 여부를 제어할 수 있습니다. 최상위 `decision` 필드를 사용하는 다른 hook과 달리 PreToolUse는 `hookSpecificOutput` 객체 내에 결정을 반환합니다. 이는 더 풍부한 제어를 제공합니다: 네 가지 결과 (허용, 거부, 요청 또는 연기) 및 실행 전에 도구 입력을 수정하는 기능.1217`PreToolUse` hook은 도구 호출 진행 여부를 제어할 수 있습니다. 최상위 `decision` 필드를 사용하는 다른 hook과 달리 PreToolUse는 `hookSpecificOutput` 객체 내에 결정을 반환합니다. 이는 더 풍부한 제어를 제공합니다: 네 가지 결과 (허용, 거부, 요청 또는 연기) 및 실행 전에 도구 입력을 수정하는 기능.


1596 1655 

1597### SubagentStart1656### SubagentStart

1598 1657 

1599Agent 도구를 통해 Claude Code subagent가 생성될 때 실행됩니다. 에이전트 유형 이름으로 필터링할 matcher를 지원합니다 (Bash, Explore, Plan과 같은 기본 제공 에이전트 또는 `.claude/agents/`사용자 정의 에이전트 이름).1658Agent 도구를 통해 Claude Code subagent가 생성될 때 실행됩니다. 에이전트 유형 이름으로 필터링할 matcher를 지원합니다. 기본 제공 에이전트의 경우 이는 `general-purpose`, `Explore`, `Plan`과 같은 에이전트 이름입니다. [사용자 정의 subagent](/ko/sub-agents)경우 이는 파일명이 아닌 에이전트의 frontmatter의 `name` 필드입니다.

1600 1659 

1601#### SubagentStart 입력1660#### SubagentStart 입력

1602 1661 

1603[공통 입력 필드](#common-input-fields) 외에도 SubagentStart hook은 subagent의 고유 식별자가 있는 `agent_id`와 에이전트 이름이 있는 `agent_type` (Bash, Explore, Plan과 같은 기본 제공 에이전트 또는 사용자 정의 에이전트 이름)을 받습니다.1662[공통 입력 필드](#common-input-fields) 외에도 SubagentStart hook은 subagent의 고유 식별자가 있는 `agent_id`와 에이전트 이름이 있는 `agent_type` (`general-purpose`, `Explore`, `Plan`과 같은 기본 제공 에이전트 또는 사용자 정의 에이전트 이름)을 받습니다.

1604 1663 

1605```json theme={null}1664```json theme={null}

1606{1665{


1651}1710}

1652```1711```

1653 1712 

1654SubagentStop hook은 [Stop hook](#stop-decision-control)과 동일한 결정 제어 형식을 사용합니다.1713SubagentStop hook은 [Stop hook](#stop-decision-control)과 동일한 결정 제어 형식을 사용합니다. 이들은 `additionalContext`를 지원하지 않습니다. `decision: "block"`을 `reason`과 함께 반환하면 subagent가 계속 실행되고 `reason`이 subagent의 다음 명령으로 전달됩니다. subagent가 반환한 후 부모 세션에 컨텍스트를 주입하려면 `Agent` 도구에서 [`PostToolUse`](#posttooluse) hook을 대신 사용합니다.

1655 1714 

1656### TaskCreated1715### TaskCreated

1657 1716 


1905 "hooks": [1964 "hooks": [

1906 {1965 {

1907 "type": "command",1966 "type": "command",

1908 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/audit-config-change.sh"1967 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/audit-config-change.sh",

1968 "args": []

1909 }1969 }

1910 ]1970 ]

1911 }1971 }


2392```2452```

2393 2453 

2394| 필드 | 필수 | 설명 |2454| 필드 | 필수 | 설명 |

2395| :-------- | :-- | :--------------------------------------------------------------------------------------------------- |2455| :---------------- | :-- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2396| `type` | 예 | `"prompt"`여야 합니다 |2456| `type` | 예 | `"prompt"`여야 합니다 |

2397| `prompt` | 예 | LLM으로 전송할 프롬프트 텍스트. hook 입력 JSON에 대한 자리 표시자로 `$ARGUMENTS` 사용. `$ARGUMENTS`가 없으면 입력 JSON이 프롬프트에 추가됩니다 |2457| `prompt` | 예 | LLM으로 전송할 프롬프트 텍스트. hook 입력 JSON에 대한 자리 표시자로 `$ARGUMENTS` 사용. `$ARGUMENTS`가 없으면 입력 JSON이 프롬프트에 추가됩니다 |

2398| `model` | 아니오 | 평가에 사용할 모델. 기본값은 빠른 모델 |2458| `model` | 아니오 | 평가에 사용할 모델. 기본값은 빠른 모델 |

2399| `timeout` | 아니오 | 초 단위 시간 초과. 기본값: 30 |2459| `timeout` | 아니오 | 초 단위 시간 초과. 기본값: 30 |

2460| `continueOnBlock` | 아니오 | 프롬프트가 `ok: false`를 반환할 때 이유를 Claude에 다시 피드백하고 중지하는 대신 턴을 계속합니다. 기본값: `false`. 결과 `decision: "block"`에서 `continue: true`로 구현됩니다. 이벤트별 동작은 [응답 스키마](#response-schema)를 참조하세요 |

2400 2461 

2401### 응답 스키마2462### 응답 스키마

2402 2463 


2410```2471```

2411 2472 

2412| 필드 | 설명 |2473| 필드 | 설명 |

2413| :------- | :-------------------------------------------------- |2474| :------- | :----------------------------------------------------------------------- |

2414| `ok` | `true`는 작업을 허용하고 `false`는 방지합니다. 아래의 이벤트별 동작을 참조하세요 |2475| `ok` | `true`는 작업을 허용하고 `false`는 `decision: "block"`을 생성합니다. 아래의 이벤트별 동작을 참조하세요 |

2415| `reason` | `ok`가 `false`일 때 필수입니다. 결정에 대한 설명 |2476| `reason` | `ok`가 `false`일 때 필수입니다. 차단 이유로 사용됩니다 |

2416 2477 

2417`ok: false`에서 발생하는 상황은 이벤트에 따라 다릅니다:2478`ok: false`에서 발생하는 상황은 이벤트에 따라 다릅니다:

2418 2479 

2419* `Stop` 및 `SubagentStop`: 이유는 Claude의 다음 명령으로 피드백되며 턴이 계속됩니다2480* `Stop` 및 `SubagentStop`: 이유는 Claude의 다음 명령으로 피드백되며 턴이 계속됩니다

2420* `PreToolUse`: tool 호출이 거부되고 이유는 Claude에 tool 오류로 반환되며, 이는 명령 hook의 `permissionDecision: "deny"`와 동일합니다2481* `PreToolUse`: tool 호출이 거부되고 이유는 Claude에 tool 오류로 반환되며, 이는 명령 hook의 `permissionDecision: "deny"`와 동일합니다

2421* `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` 및 `UserPromptExpansion`: 턴이 끝나고 이유는 채팅에 경고 줄로 나타나며, 이는 명령 hook에서 `"continue": false`를 반환하는 것과 동일합니다2482* `PostToolUse`: 기본적으로 턴이 끝나고 이유는 채팅에 경고 줄로 나타납니다. `continueOnBlock: true`를 설정하여 이유를 Claude에 다시 피드백하고 턴을 계속하는 대신 사용합니다

2483* `PostToolBatch`, `UserPromptSubmit` 및 `UserPromptExpansion`: 턴이 끝나고 이유는 경고 줄로 나타납니다. 이러한 이벤트는 `continue`에 관계없이 `decision: "block"`에서 턴을 종료합니다

2422* `PostToolUseFailure`, `TaskCreated` 및 `TaskCompleted`: 이유는 Claude에 tool 오류로 반환되며, `PreToolUse`와 유사합니다2484* `PostToolUseFailure`, `TaskCreated` 및 `TaskCompleted`: 이유는 Claude에 tool 오류로 반환되며, `PreToolUse`와 유사합니다

2423* `PermissionRequest`: `ok: false`는 효과가 없습니다. hook에서 승인을 거부하려면 `hookSpecificOutput.decision.behavior: "deny"`를 반환하는 [명령 hook](#command-hook-fields)을 사용합니다2485* `PermissionRequest`: `ok: false`는 효과가 없습니다. hook에서 승인을 거부하려면 `hookSpecificOutput.decision.behavior: "deny"`를 반환하는 [명령 hook](#command-hook-fields)을 사용합니다

2424 2486 


2577 "hooks": [2639 "hooks": [

2578 {2640 {

2579 "type": "command",2641 "type": "command",

2580 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/run-tests-async.sh",2642 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/run-tests-async.sh",

2643 "args": [],

2581 "async": true,2644 "async": true,

2582 "timeout": 3002645 "timeout": 300

2583 }2646 }


2614* **입력 검증 및 살균**: 입력 데이터를 맹목적으로 신뢰하지 마세요2677* **입력 검증 및 살균**: 입력 데이터를 맹목적으로 신뢰하지 마세요

2615* **항상 셸 변수를 따옴표로 감싸세요**: `$VAR` 대신 `"$VAR"` 사용2678* **항상 셸 변수를 따옴표로 감싸세요**: `$VAR` 대신 `"$VAR"` 사용

2616* **경로 순회 차단**: 파일 경로에서 `..` 확인2679* **경로 순회 차단**: 파일 경로에서 `..` 확인

2617* **절대 경로 사용**: `"$CLAUDE_PROJECT_DIR"`을 사용하여 프로젝트 루트에 대한 전체 경로를 지정합니다2680* **절대 경로 사용**: 스크립트의 전체 경로를 지정하세요. exec 형식에서는 `${CLAUDE_PROJECT_DIR}`을 사용하고 경로는 따옴표가 필요하지 않습니다. shell 형식에서는 큰따옴표로 감싸세요

2618* **민감한 파일 건너뛰기**: `.env`, `.git/`, 키 등을 피합니다2681* **민감한 파일 건너뛰기**: `.env`, `.git/`, 키 등을 피하세요

2619 2682 

2620## Windows PowerShell 도구2683## Windows PowerShell 도구

2621 2684 

hooks-guide.md +13 −13

Details

862### 제한 사항862### 제한 사항

863 863 

864* 명령 hooks는 stdout, stderr 및 종료 코드를 통해서만 통신합니다. 직접 `/` 명령이나 도구 호출을 트리거할 수 없습니다. `additionalContext`를 통해 반환된 텍스트는 Claude가 일반 텍스트로 읽는 시스템 알림으로 주입됩니다. HTTP hooks는 응답 본문을 통해 통신합니다.864* 명령 hooks는 stdout, stderr 및 종료 코드를 통해서만 통신합니다. 직접 `/` 명령이나 도구 호출을 트리거할 수 없습니다. `additionalContext`를 통해 반환된 텍스트는 Claude가 일반 텍스트로 읽는 시스템 알림으로 주입됩니다. HTTP hooks는 응답 본문을 통해 통신합니다.

865* Hook 타임아웃은 기본적으로 10분이며 `timeout` 필드 (초 단위)로 hook당 구성 가능합니다.865* Hook 타임아웃은 기본적으로 10분이며 `timeout` 필드(초 단위)로 hook당 구성 가능합니다.

866* `PostToolUse` hooks는 도구가 이미 실행되었으므로 작업을 취소할 수 없습니다.866* `PostToolUse` hooks는 도구가 이미 실행되었으므로 작업을 취소할 수 없습니다.

867* `PermissionRequest` hooks는 [비대화형 모드](/ko/headless) (`-p`)에서 발생하지 않습니다. 자동화된 권한 결정을 위해 `PreToolUse` hooks를 사용합니다.867* `PermissionRequest` hooks는 [비대화형 모드](/ko/headless)(`-p`)에서 발생하지 않습니다. 자동화된 권한 결정을 위해 `PreToolUse` hooks를 사용합니다.

868* `Stop` hooks는 작업 완료 시에만이 아니라 Claude가 응답을 완료할 때마다 발생합니다. 사용자 중단 시에는 발생하지 않습니다. API 오류는 대신 [StopFailure](/ko/hooks#stopfailure)를 발생시킵니다.868* `Stop` hooks는 작업 완료 시에만이 아니라 Claude가 응답을 완료할 때마다 발생합니다. 사용자 중단 시에는 발생하지 않습니다. API 오류는 대신 [StopFailure](/ko/hooks#stopfailure)를 발생시킵니다.

869* 여러 PreToolUse hooks가 [`updatedInput`](/ko/hooks#pretooluse)을 반환하여 도구의 인수를 다시 쓸 때 마지막으로 완료된 것이 우승합니다. Hooks는 병렬로 실행되므로 순서는 비결정적입니다. 동일한 도구의 입력을 수정하는 hook이 두 개 이상 있는 것을 피합니다.869* 여러 PreToolUse hooks가 [`updatedInput`](/ko/hooks#pretooluse)을 반환하여 도구의 인수를 다시 쓸 때 마지막으로 완료된 것이 우승합니다. Hooks는 병렬로 실행되므로 순서는 비결정적입니다. 동일한 도구의 입력을 수정하는 hook이 두 개 이상 있는 것을 피합니다.

870 870 


879Hook이 구성되었지만 실행되지 않습니다.879Hook이 구성되었지만 실행되지 않습니다.

880 880 

881* `/hooks`를 실행하고 hook이 올바른 이벤트 아래에 나타나는지 확인합니다881* `/hooks`를 실행하고 hook이 올바른 이벤트 아래에 나타나는지 확인합니다

882* Matcher 패턴이 도구 이름과 정확히 일치하는지 확인합니다 (matchers는 대소문자 구분)882* Matcher 패턴이 도구 이름과 정확히 일치하는지 확인합니다(matchers는 대소문자 구분)

883* 올바른 이벤트 유형을 트리거하는지 확인합니다 (예: `PreToolUse`는 도구 실행 전에 발생하고 `PostToolUse`는 후에 발생)883* 올바른 이벤트 유형을 트리거하는지 확인합니다(예: `PreToolUse`는 도구 실행 전에 발생하고 `PostToolUse`는 후에 발생)

884* 비대화형 모드 (`-p`)에서 `PermissionRequest` hooks를 사용하는 경우 대신 `PreToolUse`로 전환합니다884* 비대화형 모드(`-p`)에서 `PermissionRequest` hooks를 사용하는 경우 대신 `PreToolUse`로 전환합니다

885 885 

886### 출력에 Hook 오류886### 출력에 Hook 오류

887 887 


890* 스크립트가 예기치 않게 0이 아닌 코드로 종료되었습니다. 샘플 JSON을 파이프하여 수동으로 테스트합니다:890* 스크립트가 예기치 않게 0이 아닌 코드로 종료되었습니다. 샘플 JSON을 파이프하여 수동으로 테스트합니다:

891 ```bash theme={null}891 ```bash theme={null}

892 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh892 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh

893 echo $? // 종료 코드 확인893 echo $? # 종료 코드 확인

894 ```894 ```

895* "command not found"가 표시되면 절대 경로를 사용하거나 `$CLAUDE_PROJECT_DIR`을 사용하여 스크립트를 참조합니다895* "command not found"가 표시되면 절대 경로를 사용하거나 `${CLAUDE_PROJECT_DIR}`을 사용하여 스크립트를 참조합니다. 셸 인용을 완전히 피하려면 `"args": []`를 추가하여 [exec form](/ko/hooks#exec-form-and-shell-form)으로 전환하면 셸 없이 스크립트를 직접 생성합니다

896* "jq: command not found"가 표시되면 `jq`를 설치하거나 JSON 구문 분석을 위해 Python/Node.js를 사용합니다896* "jq: command not found"가 표시되면 `jq`를 설치하거나 JSON 구문 분석을 위해 Python/Node.js를 사용합니다

897* 스크립트가 실행되지 않으면 실행 가능하게 만듭니다: `chmod +x ./my-hook.sh`897* 스크립트가 실행되지 않으면 실행 가능하게 만듭니다: `chmod +x ./my-hook.sh`

898 898 


901설정 파일을 편집했지만 hooks가 메뉴에 나타나지 않습니다.901설정 파일을 편집했지만 hooks가 메뉴에 나타나지 않습니다.

902 902 

903* 파일 편집은 일반적으로 자동으로 선택됩니다. 몇 초 후에 나타나지 않으면 파일 감시자가 변경을 놓쳤을 수 있습니다: 세션을 다시 시작하여 강제로 다시 로드합니다.903* 파일 편집은 일반적으로 자동으로 선택됩니다. 몇 초 후에 나타나지 않으면 파일 감시자가 변경을 놓쳤을 수 있습니다: 세션을 다시 시작하여 강제로 다시 로드합니다.

904* JSON이 유효한지 확인합니다 (후행 쉼표 및 주석은 허용되지 않음)904* JSON이 유효한지 확인합니다(후행 쉼표 및 주석은 허용되지 않음)

905* 설정 파일이 올바른 위치에 있는지 확인합니다: 프로젝트 hooks의 경우 `.claude/settings.json`, 전역 hooks의 경우 `~/.claude/settings.json`905* 설정 파일이 올바른 위치에 있는지 확인합니다: 프로젝트 hooks의 경우 `.claude/settings.json`, 전역 hooks의 경우 `~/.claude/settings.json`

906 906 

907### Stop hook이 무한 실행됨907### Stop hook이 무한 실행됨


914#!/bin/bash914#!/bin/bash

915INPUT=$(cat)915INPUT=$(cat)

916if [ "$(echo "$INPUT" | jq -r '.stop_hook_active')" = "true" ]; then916if [ "$(echo "$INPUT" | jq -r '.stop_hook_active')" = "true" ]; then

917 exit 0 // Claude가 중지되도록 허용917 exit 0 # Claude가 중지되도록 허용

918fi918fi

919// ... hook 로직의 나머지919# ... hook 로직의 나머지

920```920```

921 921 

922### JSON 검증 실패922### JSON 검증 실패

923 923 

924Hook 스크립트가 유효한 JSON을 출력하더라도 Claude Code에 JSON 구문 분석 오류가 표시됩니다.924Hook 스크립트가 유효한 JSON을 출력하더라도 Claude Code에 JSON 구문 분석 오류가 표시됩니다.

925 925 

926Claude Code가 hook을 실행할 때 프로필 (`~/.zshrc` 또는 `~/.bashrc`) 소싱하는 셸을 생성합니다. 프로필에 무조건적인 `echo` 문이 포함되어 있으면 해당 출력이 hook의 JSON에 앞에 붙습니다:926Claude Code가 형식 명령 hook(args 없는 hook)을 실행할 때 macOS 및 Linux에서는 기본적으로 `sh -c` 생성하거나 Windows에서는 Git Bash를 생성합니다. 이 셸은 비대화형이지만 Git Bash 및 일부 구성(예: `BASH_ENV`가 `~/.bashrc`를 가리킴) 여전히 프로필을 소싱합니다. 해당 프로필에 무조건적인 `echo` 문이 포함되어 있으면 출력이 hook의 JSON에 앞에 붙습니다:

927 927 

928```text theme={null}928```text theme={null}

929Shell ready on arm64929Shell ready on arm64


933Claude Code는 이를 JSON으로 구문 분석하려고 하고 실패합니다. 이를 수정하려면 셸 프로필의 echo 문을 래핑하여 대화형 셸에서만 실행되도록 합니다:933Claude Code는 이를 JSON으로 구문 분석하려고 하고 실패합니다. 이를 수정하려면 셸 프로필의 echo 문을 래핑하여 대화형 셸에서만 실행되도록 합니다:

934 934 

935```bash theme={null}935```bash theme={null}

936// ~/.zshrc 또는 ~/.bashrc에서936# ~/.zshrc 또는 ~/.bashrc에서

937if [[ $- == *i* ]]; then937if [[ $- == *i* ]]; then

938 echo "Shell ready"938 echo "Shell ready"

939fi939fi


945 945 

946트랜스크립트 보기는 `Ctrl+O`로 전환되며 발생한 각 hook에 대해 한 줄 요약을 표시합니다: 성공은 자동으로 표시되고, 차단 오류는 stderr를 표시하며, 차단하지 않는 오류는 `<hook name> hook error` 공지를 표시한 후 stderr의 첫 번째 줄을 표시합니다.946트랜스크립트 보기는 `Ctrl+O`로 전환되며 발생한 각 hook에 대해 한 줄 요약을 표시합니다: 성공은 자동으로 표시되고, 차단 오류는 stderr를 표시하며, 차단하지 않는 오류는 `<hook name> hook error` 공지를 표시한 후 stderr의 첫 번째 줄을 표시합니다.

947 947 

948전체 실행 세부 정보 (일치한 hooks, 종료 코드, stdout 및 stderr 포함)는 디버그 로그를 읽습니다. `claude --debug-file /tmp/claude.log`로 Claude Code를 시작하여 알려진 경로에 쓰거나 다른 터미널에서 `tail -f /tmp/claude.log`를 실행합니다. 해당 플래그 없이 시작한 경우 세션 중에 `/debug`를 실행하여 로깅을 활성화하고 로그 경로를 찾습니다.948전체 실행 세부 정보(일치한 hooks, 종료 코드, stdout 및 stderr 포함)는 디버그 로그를 읽습니다. `claude --debug-file /tmp/claude.log`로 Claude Code를 시작하여 알려진 경로에 쓰거나 다른 터미널에서 `tail -f /tmp/claude.log`를 실행합니다. 해당 플래그 없이 시작한 경우 세션 중에 `/debug`를 실행하여 로깅을 활성화하고 로그 경로를 찾습니다.

949 949 

950## 자세히 알아보기950## 자세히 알아보기

951 951 

Details

9## 키보드 단축키9## 키보드 단축키

10 10 

11<Note>11<Note>

12 키보드 단축키는 플랫폼 및 터미널에 따라 다를 수 있습니다. `?`를 눌러 사용자 환경에서 사용 가능한 단축키를 확인하세요.12 키보드 단축키는 플랫폼 및 터미널에 따라 다를 수 있습니다. [전체 화면 렌더링](/ko/fullscreen)에서 트랜스크립트 뷰어의 `?`를 눌러 사용 가능한 단축키를 확인하세요.

13 13 

14 **macOS 사용자**: Option/Alt 키 단축키(`Alt+B`, `Alt+F`, `Alt+Y`, `Alt+M`, `Alt+P`)를 사용하려면 터미널에서 Option을 Meta로 구성해야 합니다:14 **macOS 사용자**: Option/Alt 키 단축키(`Alt+B`, `Alt+F`, `Alt+Y`, `Alt+M`, `Alt+P`)를 사용하려면 터미널에서 Option을 Meta로 구성해야 합니다:

15 15 


36| `Ctrl+T` | 작업 목록 토글 | 터미널 상태 영역에서 [작업 목록](#task-list) 표시 또는 숨기기 |36| `Ctrl+T` | 작업 목록 토글 | 터미널 상태 영역에서 [작업 목록](#task-list) 표시 또는 숨기기 |

37| `Left/Right 화살표` | 대화 상자 탭 순환 | 권한 대화 상자 및 메뉴의 탭 간 탐색 |37| `Left/Right 화살표` | 대화 상자 탭 순환 | 권한 대화 상자 및 메뉴의 탭 간 탐색 |

38| `Up/Down 화살표` 또는 `Ctrl+P`/`Ctrl+N` | 커서 이동 또는 명령 기록 탐색 | 여러 줄 입력에서 먼저 프롬프트 내에서 커서를 이동합니다. 커서가 이미 위쪽 또는 아래쪽 가장자리에 있으면 다시 누르면 명령 기록을 탐색합니다 |38| `Up/Down 화살표` 또는 `Ctrl+P`/`Ctrl+N` | 커서 이동 또는 명령 기록 탐색 | 여러 줄 입력에서 먼저 프롬프트 내에서 커서를 이동합니다. 커서가 이미 위쪽 또는 아래쪽 가장자리에 있으면 다시 누르면 명령 기록을 탐색합니다 |

39| `Esc` | Claude 중단 | 현재 응답 또는 도구 호출을 중간에 중지하여 리다이렉트할 수 있습니다. Claude는 지금까지 수행한 작업을 유지합니다 |

39| `Esc` + `Esc` | 되돌리기 또는 요약 | 코드 및/또는 대화를 이전 지점으로 복원하거나 선택한 메시지에서 요약 |40| `Esc` + `Esc` | 되돌리기 또는 요약 | 코드 및/또는 대화를 이전 지점으로 복원하거나 선택한 메시지에서 요약 |

40| `Shift+Tab` 또는 `Alt+M` (일부 구성) | 권한 모드 순환 | `default`, `acceptEdits`, `plan` 및 `auto` 또는 `bypassPermissions`와 같이 활성화한 모든 모드를 순환합니다. [권한 모드](/ko/permission-modes)를 참조하세요. |41| `Shift+Tab` 또는 `Alt+M` (일부 구성) | 권한 모드 순환 | `default`, `acceptEdits`, `plan` 및 `auto` 또는 `bypassPermissions`와 같이 활성화한 모든 모드를 순환합니다. [권한 모드](/ko/permission-modes)를 참조하세요. |

41| `Option+P` (macOS) 또는 `Alt+P` (Windows/Linux) | 모델 전환 | 프롬프트를 지우지 않고 모델 전환 |42| `Option+P` (macOS) 또는 `Alt+P` (Windows/Linux) | 모델 전환 | 프롬프트를 지우지 않고 모델 전환 |


86 87 

87### 트랜스크립트 뷰어88### 트랜스크립트 뷰어

88 89 

89트랜스크립트 뷰어가 열려 있을 때(`Ctrl+O`로 토글), 이 단축키를 사용할 수 있습니다. `Ctrl+E`는 [`transcript:toggleShowAll`](/ko/keybindings)을 통해 재바인딩할 수 있습니다.90트랜스크립트 뷰어가 열려 있을 때(`Ctrl+O`로 토글), 이 단축키를 사용할 수 있습니다. [전체 화면 렌더링](/ko/fullscreen)에서 `?`를 눌러 뷰어 내에서 전체 단축키 참조 패널을 표시합니다. `Ctrl+E`는 [`transcript:toggleShowAll`](/ko/keybindings)을 통해 재바인딩할 수 있습니다.

90 91 

91| 단축키 | 설명 |92| 단축키 | 설명 |

92| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |93| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |

94| `?` | 키보드 단축키 도움말 패널 토글. [전체 화면 렌더링](/ko/fullscreen) 필요 |

95| `{` / `}` | vim 단락 이동처럼 이전 또는 다음 사용자 프롬프트로 이동합니다. [전체 화면 렌더링](/ko/fullscreen) 필요 |

93| `Ctrl+E` | 모든 콘텐츠 표시 토글 |96| `Ctrl+E` | 모든 콘텐츠 표시 토글 |

94| `[` | 전체 대화를 터미널의 기본 스크롤백에 작성하여 `Cmd+F`, tmux 복사 모드 및 기타 기본 도구가 검색할 수 있도록 합니다. [전체 화면 렌더링](/ko/fullscreen#search-and-review-the-conversation) 필요 |97| `[` | 전체 대화를 터미널의 기본 스크롤백에 작성하여 `Cmd+F`, tmux 복사 모드 및 기타 기본 도구가 검색할 수 있도록 합니다. [전체 화면 렌더링](/ko/fullscreen#search-and-review-the-conversation) 필요 |

95| `v` | 대화를 임시 파일에 작성하고 `$VISUAL` 또는 `$EDITOR`에서 엽니다. [전체 화면 렌더링](/ko/fullscreen) 필요 |98| `v` | 대화를 임시 파일에 작성하고 `$VISUAL` 또는 `$EDITOR`에서 엽니다. [전체 화면 렌더링](/ko/fullscreen) 필요 |

llm-gateway.md +5 −1

Details

42Claude Code는 모든 API 요청에 다음 헤더를 포함합니다:42Claude Code는 모든 API 요청에 다음 헤더를 포함합니다:

43 43 

44| 헤더 | 설명 |44| 헤더 | 설명 |

45| :------------------------- | :----------------------------------------------------------------------------------------- |45| :------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------- |

46| `X-Claude-Code-Session-Id` | 현재 Claude Code 세션의 고유 식별자입니다. 프록시는 이를 사용하여 요청 본문을 구문 분석하지 않고 단일 세션의 모든 API 요청을 집계할 수 있습니다. |46| `X-Claude-Code-Session-Id` | 현재 Claude Code 세션의 고유 식별자입니다. 프록시는 이를 사용하여 요청 본문을 구문 분석하지 않고 단일 세션의 모든 API 요청을 집계할 수 있습니다. |

47| `X-Claude-Code-Agent-Id` | 요청을 발급한 서브에이전트 또는 팀원의 식별자입니다. 프록시는 이를 사용하여 요청 본문을 구문 분석하지 않고 세션 내 개별 병렬 서브에이전트에 API 비용을 할당할 수 있습니다. 프로세스 내 서브에이전트 또는 팀원이 발급한 요청에만 표시됩니다. |

48| `X-Claude-Code-Parent-Agent-Id` | 요청을 하는 에이전트를 생성한 에이전트의 식별자입니다. 프록시에서 중첩된 에이전트 전체에 API 비용을 할당하려면 `X-Claude-Code-Agent-Id`와 함께 이를 사용합니다. 요청하는 에이전트가 다른 에이전트에 의해 생성된 경우에만 표시됩니다. |

49 

50두 에이전트 ID 헤더는 지속적인 사용자 또는 디바이스 ID가 아닌 생성당 임시 식별자입니다.

47 51 

48Claude Code는 또한 클라이언트 버전과 대화에서 파생된 지문을 포함하는 짧은 속성 블록을 시스템 프롬프트 앞에 추가합니다. Anthropic API는 처리 전에 이 블록을 제거하므로 자사 프롬프트 캐싱에 영향을 주지 않습니다. Gateway가 전체 요청 본문을 기반으로 키가 지정된 자체 프롬프트 캐시를 구현하는 경우 [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/ko/env-vars)을 설정하여 이를 생략합니다.52Claude Code는 또한 클라이언트 버전과 대화에서 파생된 지문을 포함하는 짧은 속성 블록을 시스템 프롬프트 앞에 추가합니다. Anthropic API는 처리 전에 이 블록을 제거하므로 자사 프롬프트 캐싱에 영향을 주지 않습니다. Gateway가 전체 요청 본문을 기반으로 키가 지정된 자체 프롬프트 캐시를 구현하는 경우 [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/ko/env-vars)을 설정하여 이를 생략합니다.

49 53 

mcp.md +36 −220

Details

6 6 

7> Model Context Protocol을 사용하여 Claude Code를 도구에 연결하는 방법을 알아봅니다.7> Model Context Protocol을 사용하여 Claude Code를 도구에 연결하는 방법을 알아봅니다.

8 8 

9export const MCPServersTable = ({platform = "all"}) => {

10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';

11 const [servers, setServers] = useState([]);

12 const [loading, setLoading] = useState(true);

13 const [error, setError] = useState(null);

14 useEffect(() => {

15 const fetchServers = async () => {

16 try {

17 setLoading(true);

18 const allServers = [];

19 let cursor = null;

20 do {

21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');

22 url.searchParams.set('version', 'latest');

23 url.searchParams.set('visibility', 'commercial');

24 url.searchParams.set('limit', '100');

25 if (cursor) {

26 url.searchParams.set('cursor', cursor);

27 }

28 const response = await fetch(url);

29 if (!response.ok) {

30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);

31 }

32 const data = await response.json();

33 allServers.push(...data.servers);

34 cursor = data.metadata?.nextCursor || null;

35 } while (cursor);

36 const transformedServers = allServers.map(item => {

37 const server = item.server;

38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});

39 const worksWith = meta.worksWith || [];

40 const availability = {

41 claudeCode: worksWith.includes('claude-code'),

42 mcpConnector: worksWith.includes('claude-api'),

43 claudeDesktop: worksWith.includes('claude-desktop')

44 };

45 const remotes = server.remotes || [];

46 const httpRemote = remotes.find(r => r.type === 'streamable-http');

47 const sseRemote = remotes.find(r => r.type === 'sse');

48 const preferredRemote = httpRemote || sseRemote;

49 const remoteUrl = preferredRemote?.url || meta.url;

50 const remoteType = preferredRemote?.type;

51 const isTemplatedUrl = remoteUrl?.includes('{');

52 let setupUrl;

53 if (isTemplatedUrl && meta.requiredFields) {

54 const urlField = meta.requiredFields.find(f => f.field === 'url');

55 setupUrl = urlField?.sourceUrl || meta.documentation;

56 }

57 const urls = {};

58 if (!isTemplatedUrl) {

59 if (remoteType === 'streamable-http') {

60 urls.http = remoteUrl;

61 } else if (remoteType === 'sse') {

62 urls.sse = remoteUrl;

63 }

64 }

65 let envVars = [];

66 if (server.packages && server.packages.length > 0) {

67 const npmPackage = server.packages.find(p => p.registryType === 'npm');

68 if (npmPackage) {

69 urls.stdio = `npx -y ${npmPackage.identifier}`;

70 if (npmPackage.environmentVariables) {

71 envVars = npmPackage.environmentVariables;

72 }

73 }

74 }

75 return {

76 name: meta.displayName || server.title || server.name,

77 description: meta.oneLiner || server.description,

78 documentation: meta.documentation,

79 urls: urls,

80 envVars: envVars,

81 availability: availability,

82 customCommands: meta.claudeCodeCopyText ? {

83 claudeCode: meta.claudeCodeCopyText

84 } : undefined,

85 setupUrl: setupUrl

86 };

87 });

88 setServers(transformedServers);

89 setError(null);

90 } catch (err) {

91 setError(err.message);

92 console.error('Error fetching MCP registry:', err);

93 } finally {

94 setLoading(false);

95 }

96 };

97 fetchServers();

98 }, []);

99 const generateClaudeCodeCommand = server => {

100 if (server.customCommands && server.customCommands.claudeCode) {

101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');

102 }

103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');

104 if (server.urls.http) {

105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;

106 }

107 if (server.urls.sse) {

108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;

109 }

110 if (server.urls.stdio) {

111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';

112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;

113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;

114 }

115 return null;

116 };

117 if (loading) {

118 return <div>Loading MCP servers...</div>;

119 }

120 if (error) {

121 return <div>Error loading MCP servers: {error}</div>;

122 }

123 const filteredServers = servers.filter(server => {

124 if (platform === "claudeCode") {

125 return server.availability.claudeCode;

126 } else if (platform === "mcpConnector") {

127 return server.availability.mcpConnector;

128 } else if (platform === "claudeDesktop") {

129 return server.availability.claudeDesktop;

130 } else if (platform === "all") {

131 return true;

132 } else {

133 throw new Error(`Unknown platform: ${platform}`);

134 }

135 });

136 return <>

137 <style jsx>{`

138 .cards-container {

139 display: grid;

140 gap: 1rem;

141 margin-bottom: 2rem;

142 }

143 .server-card {

144 border: 1px solid var(--border-color, #e5e7eb);

145 border-radius: 6px;

146 padding: 1rem;

147 }

148 .command-row {

149 display: flex;

150 align-items: center;

151 gap: 0.25rem;

152 }

153 .command-row code {

154 font-size: 0.75rem;

155 overflow-x: auto;

156 }

157 `}</style>

158 

159 <div className="cards-container">

160 {filteredServers.map(server => {

161 const claudeCodeCommand = generateClaudeCodeCommand(server);

162 const mcpUrl = server.urls.http || server.urls.sse;

163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;

164 return <div key={server.name} className="server-card">

165 <div>

166 {server.documentation ? <a href={server.documentation}>

167 <strong>{server.name}</strong>

168 </a> : <strong>{server.name}</strong>}

169 </div>

170 

171 <p style={{

172 margin: '0.5rem 0',

173 fontSize: '0.9rem'

174 }}>

175 {server.description}

176 </p>

177 

178 {server.setupUrl && <p style={{

179 margin: '0.25rem 0',

180 fontSize: '0.8rem',

181 fontStyle: 'italic',

182 opacity: 0.7

183 }}>

184 Requires user-specific URL.{' '}

185 <a href={server.setupUrl} style={{

186 textDecoration: 'underline'

187 }}>

188 Get your URL here

189 </a>.

190 </p>}

191 

192 {commandToShow && !server.setupUrl && <>

193 <p style={{

194 display: 'block',

195 fontSize: '0.75rem',

196 fontWeight: 500,

197 minWidth: 'fit-content',

198 marginTop: '0.5rem',

199 marginBottom: 0

200 }}>

201 {platform === "claudeCode" ? "Command" : "URL"}

202 </p>

203 <div className="command-row">

204 <code>

205 {commandToShow}

206 </code>

207 </div>

208 </>}

209 </div>;

210 })}

211 </div>

212 </>;

213};

214 

215Claude Code는 AI 도구 통합을 위한 오픈 소스 표준인 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)를 통해 수백 개의 외부 도구 및 데이터 소스에 연결할 수 있습니다. MCP 서버는 Claude Code에 도구, 데이터베이스 및 API에 대한 액세스를 제공합니다.9Claude Code는 AI 도구 통합을 위한 오픈 소스 표준인 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)를 통해 수백 개의 외부 도구 및 데이터 소스에 연결할 수 있습니다. MCP 서버는 Claude Code에 도구, 데이터베이스 및 API에 대한 액세스를 제공합니다.

216 10 

217다른 도구(예: 이슈 추적기 또는 모니터링 대시보드)에서 채팅으로 데이터를 복사하는 자신을 발견할 때 서버를 연결하세요. 연결되면 Claude는 붙여넣은 내용에서 작업하는 대신 해당 시스템을 직접 읽고 작동할 수 있습니다.11다른 도구(예: 이슈 추적기 또는 모니터링 대시보드)에서 채팅으로 데이터를 복사하는 자신을 발견할 때 서버를 연결하세요. 연결되면 Claude는 붙여넣은 내용에서 작업하는 대신 해당 시스템을 직접 읽고 작동할 수 있습니다.


227* **워크플로우 자동화**: "이 10명의 사용자를 새로운 기능에 대한 피드백 세션에 초대하는 Gmail 초안을 생성하세요."21* **워크플로우 자동화**: "이 10명의 사용자를 새로운 기능에 대한 피드백 세션에 초대하는 Gmail 초안을 생성하세요."

228* **외부 이벤트에 반응**: MCP 서버는 [채널](/ko/channels)로도 작동할 수 있으며, 세션에 메시지를 푸시하므로 Claude는 자리를 비운 동안 Telegram 메시지, Discord 채팅 또는 webhook 이벤트에 반응할 수 있습니다.22* **외부 이벤트에 반응**: MCP 서버는 [채널](/ko/channels)로도 작동할 수 있으며, 세션에 메시지를 푸시하므로 Claude는 자리를 비운 동안 Telegram 메시지, Discord 채팅 또는 webhook 이벤트에 반응할 수 있습니다.

229 23 

230## 인기 있는 MCP 서버24## MCP 서버 찾기 및 구축

231 25 

232Claude Code에 연결할 있는 일반적으로 사용되는 MCP 서버는 다음과 같습니다:26[Anthropic Directory](https://claude.ai/directory)에서 검토된 커넥터를 찾아보세요. Directory 커넥터는 Claude Code와 동일한 MCP 인프라를 사용하므로 `claude mcp add`를 사용하여 여기에 나열된 모든 원격 서버를 추가할 수 있습니다.

233 27 

234<Warning>28<Warning>

235 타사 MCP 서버를 사용할 때는 자신의 책임하에 사용하십시오 - Anthropic은 이러한 모든 서버의 정확성이나 보안을 검증하지 않았습니다.29 연결하기 전에 서버를 신뢰할 있는지 확인하세요. 외부 콘텐츠를 가져오는 서버는 [프롬프트 주입 위험](/ko/security#protect-against-prompt-injection)에 노출될 있습니다.

236 설치하는 MCP 서버를 신뢰하는지 확인하세요.

237 신뢰할 수 없는 콘텐츠를 가져올 수 있는 MCP 서버를 사용할 때는 특히 주의하세요. 이러한 서버는 프롬프트 주입 위험에 노출될 수 있습니다.

238</Warning>30</Warning>

239 31 

240<MCPServersTable platform="claudeCode" />32자신만의 서버를 구축하려면 프로토콜 기본 사항에 대한 [MCP 서버 가이드](https://modelcontextprotocol.io/docs/develop/build-server)와 인증, 테스트 및 Directory 제출에 대한 [Claude 커넥터 구축 문서](https://claude.com/docs/connectors/building)를 참조하세요.

241 33 

242<Note>34공식 [`mcp-server-dev` 플러그인](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/mcp-server-dev)을 사용하여 Claude가 서버를 스캐폴드하도록 할 수도 있습니다.

243 **특정 통합이 필요하신가요?** [GitHub에서 수백 개 이상의 MCP 서버를 찾거나](https://github.com/modelcontextprotocol/servers), [MCP SDK](https://modelcontextprotocol.io/quickstart/server)를 사용하여 자신만의 서버를 구축하세요.35 

244</Note>36<Steps>

37 <Step title="플러그인 설치">

38 Claude Code 세션에서 다음을 실행하세요:

39 

40 ```

41 /plugin install mcp-server-dev@claude-plugins-official

42 ```

43 

44 그런 다음 `/reload-plugins`를 실행하여 현재 세션에서 활성화하세요.

45 </Step>

46 

47 <Step title="빌드 스킬 실행">

48 ```

49 /mcp-server-dev:build-mcp-server

50 ```

51 

52 Claude가 사용 사례에 대해 묻고 원격 HTTP 또는 로컬 stdio 서버를 스캐폴드합니다.

53 </Step>

54</Steps>

245 55 

246## MCP 서버 설치56## MCP 서버 설치

247 57 


287 97 

288Stdio 서버는 컴퓨터에서 로컬 프로세스로 실행됩니다. 시스템에 직접 액세스하거나 사용자 정의 스크립트가 필요한 도구에 이상적입니다.98Stdio 서버는 컴퓨터에서 로컬 프로세스로 실행됩니다. 시스템에 직접 액세스하거나 사용자 정의 스크립트가 필요한 도구에 이상적입니다.

289 99 

100Claude Code는 생성된 서버의 환경에서 `CLAUDE_PROJECT_DIR`을 프로젝트 루트로 설정하므로 서버는 작업 디렉터리에 의존하지 않고 프로젝트 상대 경로를 확인할 수 있습니다. 이는 hooks가 `CLAUDE_PROJECT_DIR` 변수에서 받는 것과 동일한 디렉터리입니다. 서버 프로세스 내에서 읽으세요. 예를 들어 Node에서는 `process.env.CLAUDE_PROJECT_DIR` 또는 Python에서는 `os.environ["CLAUDE_PROJECT_DIR"]`입니다. 서버는 또한 MCP `roots/list` 요청을 호출할 수 있으며, 이는 Claude Code가 시작된 디렉터리를 반환합니다.

101 

102이 변수는 Claude Code 자체의 환경이 아닌 서버의 환경에 설정되므로 프로젝트 또는 사용자 범위의 `.mcp.json` `command` 또는 `args`에서 `${VAR}` 확장을 통해 참조하려면 `${CLAUDE_PROJECT_DIR:-.}`와 같은 기본값이 필요합니다. 플러그인 제공 MCP 구성은 `${CLAUDE_PROJECT_DIR}`을 직접 대체하며 기본값이 필요하지 않습니다.

103 

290```bash theme={null}104```bash theme={null}

291# 기본 구문105# 기본 구문

292claude mcp add [options] <name> -- <command> [args...]106claude mcp add [options] <name> -- <command> [args...]


404**플러그인 MCP 기능**:218**플러그인 MCP 기능**:

405 219 

406* **자동 라이프사이클**: 세션 시작 시 활성화된 플러그인의 서버가 자동으로 연결됩니다. 세션 중에 플러그인을 활성화하거나 비활성화하면 `/reload-plugins`를 실행하여 MCP 서버를 연결하거나 연결 해제합니다220* **자동 라이프사이클**: 세션 시작 시 활성화된 플러그인의 서버가 자동으로 연결됩니다. 세션 중에 플러그인을 활성화하거나 비활성화하면 `/reload-plugins`를 실행하여 MCP 서버를 연결하거나 연결 해제합니다

407* **환경 변수**: 번들된 플러그인 파일에 `${CLAUDE_PLUGIN_ROOT}` 사용 플러그인 업데이트를 유지하는 [지속적인 상태](/ko/plugins-reference#persistent-data-directory)에 `${CLAUDE_PLUGIN_DATA}` 사용221* **환경 변수**: 번들된 플러그인 파일에 `${CLAUDE_PLUGIN_ROOT}` 사용, 플러그인 업데이트를 유지하는 [지속적인 상태](/ko/plugins-reference#persistent-data-directory)에 `${CLAUDE_PLUGIN_DATA}` 사용, 그리고 안정적인 프로젝트 루트에 `${CLAUDE_PROJECT_DIR}` 사용

408* **사용자 환경 액세스**: 수동으로 구성된 서버와 동일한 환경 변수에 액세스222* **사용자 환경 액세스**: 수동으로 구성된 서버와 동일한 환경 변수에 액세스

409* **여러 전송 유형**: stdio, SSE 및 HTTP 전송 지원 (전송 지원은 서버에 따라 다를 수 있음)223* **여러 전송 유형**: stdio, SSE 및 HTTP 전송 지원 (전송 지원은 서버에 따라 다를 수 있음)

410 224 


644 458 

645많은 클라우드 기반 MCP 서버는 인증이 필요합니다. Claude Code는 보안 연결을 위해 OAuth 2.0을 지원합니다.459많은 클라우드 기반 MCP 서버는 인증이 필요합니다. Claude Code는 보안 연결을 위해 OAuth 2.0을 지원합니다.

646 460 

461Claude Code는 서버가 `401 Unauthorized`로 응답하고 인증 서버를 가리키는 `WWW-Authenticate` 헤더를 포함할 때 원격 서버를 인증이 필요한 것으로 표시합니다. 해당 응답을 반환하는 모든 사용자 정의 서버는 다른 원격 서버와 동일한 `/mcp` 인증 흐름을 받습니다.

462 

647<Steps>463<Steps>

648 <Step title="인증이 필요한 서버 추가">464 <Step title="인증이 필요한 서버 추가">

649 예를 들어:465 예를 들어:


689 505 

690### 사전 구성된 OAuth 자격 증명 사용506### 사전 구성된 OAuth 자격 증명 사용

691 507 

692일부 MCP 서버는 자동 OAuth 설정을 지원하지 않습니다. "Incompatible auth server: does not support dynamic client registration"과 같은 오류가 표시되면 서버에 사전 구성된 자격 증명이 필요합니다. Claude Code는 또한 동적 클라이언트 등록 대신 클라이언트 ID 메타데이터 문서 (CIMD)를 사용하는 서버를 지원하며 자동으로 검색합니다. 자동 검색이 실패하면 먼저 서버의 개발자 포털을 통해 OAuth 앱을 등록한 다음 서버를 추가할 때 자격 증명을 제공합니다.508일부 MCP 서버는 동적 클라이언트 등록을 통한 자동 OAuth 설정을 지원하지 않습니다. "Incompatible auth server: does not support dynamic client registration"과 같은 오류가 표시되면 서버에 사전 구성된 자격 증명이 필요합니다. Claude Code는 또한 동적 클라이언트 등록 대신 클라이언트 ID 메타데이터 문서 (CIMD)를 사용하는 서버를 지원하며 자동으로 검색합니다. 자동 검색이 실패하면 먼저 서버의 개발자 포털을 통해 OAuth 앱을 등록한 다음 서버를 추가할 때 자격 증명을 제공합니다.

693 509 

694<Steps>510<Steps>

695 <Step title="서버로 OAuth 앱 등록">511 <Step title="서버로 OAuth 앱 등록">


1137 953 

1138### Tool Search 구성954### Tool Search 구성

1139 955 

1140Tool Search는 기본적으로 활성화됩니다: MCP 도구는 연기되고 필요에 따라 검색됩니다. Vertex AI에서는 기본적으로 비활성화되어 있습니다(도구 검색 베타 헤더를 허용하지 않음). `ANTHROPIC_BASE_URL`이 비 자사 호스트를 가리킬 때도 비활성화됩니다(대부분의 프록시가 `tool_reference` 블록을 전달하지 않기 때문). 명시적으로 `ENABLE_TOOL_SEARCH`를 설정하여 옵트인합니다. 이 기능은 `tool_reference` 블록을 지원하는 모델이 필요합니다: Sonnet 4 이상 또는 Opus 4 이상. Haiku 모델은 Tool Search를 지원하지 않습니다.956Tool Search는 기본적으로 활성화됩니다: MCP 도구는 연기되고 필요에 따라 검색됩니다. Vertex AI에서는 기본적으로 비활성화되어 있습니다(도구 검색 베타 헤더를 허용하지 않음). `ANTHROPIC_BASE_URL`이 비 자사 호스트를 가리킬 때도 비활성화됩니다(대부분의 프록시가 `tool_reference` 블록을 전달하지 않기 때문). 프록시가 `tool_reference` 블록을 전달하는 경우 명시적으로 `ENABLE_TOOL_SEARCH`를 설정하여 폴백을 재정의합니다. 이 기능은 `tool_reference` 블록을 지원하는 모델이 필요합니다: Sonnet 4 이상 또는 Opus 4 이상. Haiku 모델은 Tool Search를 지원하지 않습니다.

1141 957 

1142`ENABLE_TOOL_SEARCH` 환경 변수로 Tool Search 동작을 제어합니다:958`ENABLE_TOOL_SEARCH` 환경 변수로 Tool Search 동작을 제어합니다:

1143 959 

1144| 값 | 동작 |960| 값 | 동작 |

1145| :--------- | :----------------------------------------------------------------------------------- |961| :--------- | :---------------------------------------------------------------------------------------------------------- |

1146| (설정되지 않음) | 모든 MCP 도구 연기되고 필요에 따라 로드됨. Vertex AI 또는 `ANTHROPIC_BASE_URL`이 비 자사 호스트일 때 미리 로드로 돌아감 |962| (설정되지 않음) | 모든 MCP 도구 연기되고 필요에 따라 로드됨. Vertex AI 또는 `ANTHROPIC_BASE_URL`이 비 자사 호스트일 때 미리 로드로 돌아감 |

1147| `true` | 모든 MCP 도구 연기, Vertex AI 및 자사 `ANTHROPIC_BASE_URL` 포함 |963| `true` | 모든 MCP 도구 연기. Claude Code는 Vertex AI 및 프록시를 통해서도 베타 헤더를 전송합니다. 백엔드가 `tool_reference` 블록을 지원하지 않으면 요청이 실패합니다 |

1148| `auto` | 임계값 모드: 도구가 컨텍스트 윈도우의 10% 이내에 맞으면 미리 로드, 그렇지 않으면 연기 |964| `auto` | 임계값 모드: 도구가 컨텍스트 윈도우의 10% 이내에 맞으면 미리 로드, 그렇지 않으면 연기 |

1149| `auto:<N>` | 사용자 정의 백분율을 사용한 임계값 모드, `<N>`은 0-100 (예: `auto:5`는 5%) |965| `auto:<N>` | 사용자 정의 백분율을 사용한 임계값 모드, `<N>`은 0-100 (예: `auto:5`는 5%) |

1150| `false` | 모든 MCP 도구 미리 로드, 연기 없음 |966| `false` | 모든 MCP 도구 미리 로드, 연기 없음 |

memory.md +17 −1

Details

26| :-------- | :---------------------- | :------------------------------- |26| :-------- | :---------------------- | :------------------------------- |

27| **작성자** | 사용자 | Claude |27| **작성자** | 사용자 | Claude |

28| **포함 내용** | 지침 및 규칙 | 학습 및 패턴 |28| **포함 내용** | 지침 및 규칙 | 학습 및 패턴 |

29| **범위** | 프로젝트, 사용자 또는 조직 | 작업 트리당 |29| **범위** | 프로젝트, 사용자 또는 조직 | 저장소당, 작업 트리 전체에서 공유 |

30| **로드 대상** | 모든 세션 | 모든 세션(처음 200줄 또는 25KB) |30| **로드 대상** | 모든 세션 | 모든 세션(처음 200줄 또는 25KB) |

31| **사용 목적** | 코딩 표준, 워크플로우, 프로젝트 아키텍처 | 빌드 명령, 디버깅 인사이트, Claude가 발견한 선호도 |31| **사용 목적** | 코딩 표준, 워크플로우, 프로젝트 아키텍처 | 빌드 명령, 디버깅 인사이트, Claude가 발견한 선호도 |

32 32 


270 </Step>270 </Step>

271</Steps>271</Steps>

272 272 

273`claudeMd` 키를 사용하면 별도의 파일을 배포하는 대신 관리 CLAUDE.md 콘텐츠를 `managed-settings.json`에 직접 배치할 수 있습니다.

274 

275**범위**: 컴퓨터의 모든 Claude Code 세션, 모든 저장소에서. 저장소별 지침은 대신 프로젝트 CLAUDE.md를 커밋합니다.

276 

277**우선순위**: 관리 CLAUDE.md 파일과 동일합니다. 사용자 및 프로젝트 CLAUDE.md 전에 로드됩니다.

278 

279**적용되는 위치**: 관리 및 정책 설정만. 사용자, 프로젝트 또는 로컬 설정에서 `claudeMd`를 설정해도 효과가 없습니다.

280 

281아래 예제는 관리 설정 파일에 행동 지침을 직접 추가합니다:

282 

283```json theme={null}

284{

285 "claudeMd": "Always run `make lint` before committing.\nNever push directly to main."

286}

287```

288 

273관리 CLAUDE.md와 [관리 설정](/ko/settings#settings-files)은 다른 목적을 제공합니다. 기술적 강제를 위해 설정을 사용하고 CLAUDE.md를 행동 지침으로 사용합니다:289관리 CLAUDE.md와 [관리 설정](/ko/settings#settings-files)은 다른 목적을 제공합니다. 기술적 강제를 위해 설정을 사용하고 CLAUDE.md를 행동 지침으로 사용합니다:

274 290 

275| 관심사 | 구성 대상 |291| 관심사 | 구성 대상 |

Details

171| `gen_ai.system` | 항상 `anthropic`. OpenTelemetry GenAI 의미론적 규칙 | |171| `gen_ai.system` | 항상 `anthropic`. OpenTelemetry GenAI 의미론적 규칙 | |

172| `gen_ai.request.model` | `model`과 동일한 값. OpenTelemetry GenAI 의미론적 규칙 | |172| `gen_ai.request.model` | `model`과 동일한 값. OpenTelemetry GenAI 의미론적 규칙 | |

173| `query_source` | 요청을 발급한 하위 시스템 (예: `repl_main_thread` 또는 하위 에이전트 이름) | |173| `query_source` | 요청을 발급한 하위 시스템 (예: `repl_main_thread` 또는 하위 에이전트 이름) | |

174| `agent_id` | 요청을 발급한 하위 에이전트 또는 팀원의 식별자. 주 세션에는 없음 | |

175| `parent_agent_id` | 이 에이전트를 생성한 에이전트의 식별자. 주 세션 및 직접 생성된 에이전트에는 없음 | |

174| `speed` | `fast` 또는 `normal` | |176| `speed` | `fast` 또는 `normal` | |

175| `llm_request.context` | 부모 스팬에 따라 `interaction`, `tool` 또는 `standalone` | |177| `llm_request.context` | 부모 스팬에 따라 `interaction`, `tool` 또는 `standalone` | |

176| `duration_ms` | 재시도를 포함한 벽시계 지속 시간 | |178| `duration_ms` | 재시도를 포함한 벽시계 지속 시간 | |


421 423 

422#### 풀 요청 카운터424#### 풀 요청 카운터

423 425 

424Claude Code를 통해 풀 요청을 생성할 때 증가합니다.426Claude Code를 통해 셸 명령 또는 MCP 도구를 통해 요청 또는 병합 요청을 생성할 때 증가합니다.

425 427 

426**속성**:428**속성**:

427 429 


446* `query_source`: 요청을 발급한 하위 시스템의 범주. `"main"`, `"subagent"` 또는 `"auxiliary"` 중 하나448* `query_source`: 요청을 발급한 하위 시스템의 범주. `"main"`, `"subagent"` 또는 `"auxiliary"` 중 하나

447* `speed`: 요청이 빠른 모드를 사용했을 때 `"fast"`. 그 외에는 없음449* `speed`: 요청이 빠른 모드를 사용했을 때 `"fast"`. 그 외에는 없음

448* `effort`: 요청에 적용된 [노력 수준](/ko/model-config#adjust-effort-level): `"low"`, `"medium"`, `"high"`, `"xhigh"` 또는 `"max"`. 모델이 노력을 지원하지 않을 때는 없음450* `effort`: 요청에 적용된 [노력 수준](/ko/model-config#adjust-effort-level): `"low"`, `"medium"`, `"high"`, `"xhigh"` 또는 `"max"`. 모델이 노력을 지원하지 않을 때는 없음

451* `agent.name`: 요청을 발급한 하위 에이전트 유형. 기본 제공 에이전트 이름 및 공식 마켓플레이스 플러그인의 에이전트는 그대로 나타납니다. 다른 사용자 정의 에이전트 이름은 `"custom"`으로 대체됩니다. 요청이 명명된 하위 에이전트 유형에서 발급되지 않았을 때는 없음

452* `skill.name`: 요청에 대해 활성화된 스킬 (Skill 도구, `/` 명령으로 설정되거나 생성된 하위 에이전트에 의해 상속됨). 기본 제공, 번들, 사용자 정의 및 공식 마켓플레이스 플러그인 스킬 이름은 그대로 나타납니다. 타사 플러그인 스킬 이름은 `"third-party"`로 대체됩니다. 활성 스킬이 없을 때는 없음

453* `plugin.name`: 활성 스킬 또는 하위 에이전트가 플러그인에서 제공될 때 소유 플러그인. 공식 마켓플레이스 플러그인 이름은 그대로 나타납니다. 타사 플러그인 이름은 `"third-party"`로 대체됩니다. 스킬 및 하위 에이전트 모두 소유 플러그인이 없을 때는 없음

454* `marketplace.name`: 소유 플러그인이 설치된 마켓플레이스. 공식 마켓플레이스 플러그인에만 내보내집니다. 그 외에는 없음

449 455 

450#### 토큰 카운터456#### 토큰 카운터

451 457 


459* `query_source`: 요청을 발급한 하위 시스템의 범주. `"main"`, `"subagent"` 또는 `"auxiliary"` 중 하나465* `query_source`: 요청을 발급한 하위 시스템의 범주. `"main"`, `"subagent"` 또는 `"auxiliary"` 중 하나

460* `speed`: 요청이 빠른 모드를 사용했을 때 `"fast"`. 그 외에는 없음466* `speed`: 요청이 빠른 모드를 사용했을 때 `"fast"`. 그 외에는 없음

461* `effort`: 요청에 적용된 [노력 수준](/ko/model-config#adjust-effort-level). [비용 카운터](#cost-counter)의 세부 정보를 참조하세요.467* `effort`: 요청에 적용된 [노력 수준](/ko/model-config#adjust-effort-level). [비용 카운터](#cost-counter)의 세부 정보를 참조하세요.

468* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`: 요청에 대한 스킬, 플러그인 및 에이전트 속성. [비용 카운터](#cost-counter)의 정의 및 수정 동작을 참조하세요.

462 469 

463#### 코드 편집 도구 결정 카운터470#### 코드 편집 도구 결정 카운터

464 471 


647* `tool_use_id`: 이 도구 호출의 고유 식별자. 훅에 전달된 `tool_use_id`와 일치하여 OTel 이벤트와 훅 캡처 데이터 간의 상관관계를 허용합니다.654* `tool_use_id`: 이 도구 호출의 고유 식별자. 훅에 전달된 `tool_use_id`와 일치하여 OTel 이벤트와 훅 캡처 데이터 간의 상관관계를 허용합니다.

648* `decision`: `"accept"` 또는 `"reject"`655* `decision`: `"accept"` 또는 `"reject"`

649* `source`: 결정 출처:656* `source`: 결정 출처:

650 * `"config"`: 프로젝트 설정, 엔터프라이즈 관리 정책, `--allowedTools` 또는 `--disallowedTools` 플래그, 활성 권한 모드 또는 도구가 본질적으로 안전하기 때문에 프롬프트 없이 자동으로 결정됨.657 * `"config"`: 프로젝트 설정, 사용자의 개인 설정의 허용 규칙, 엔터프라이즈 관리 정책, `--allowedTools` 또는 `--disallowedTools` 플래그, 활성 권한 모드, 같은 대화형 CLI 세션의 이전 프롬프트에서의 세션 범위 부여 또는 도구가 본질적으로 안전하기 때문에 프롬프트 없이 자동으로 결정됨. 이벤트는 이러한 출처 중 어느 것이 일치했는지 나타내지 않습니다.

651 * `"hook"`: `PreToolUse` 또는 `PermissionRequest` 훅이 결정을 반환함.658 * `"hook"`: `PreToolUse` 또는 `PermissionRequest` 훅이 결정을 반환함.

652 * `"user_permanent"`: 사용자가 프롬프트될 "항상 허용" 선택하여 개인 설정에 규칙을 저장했을 때 내보내집니다. 또한 해당 저장된 규칙과 일치하는 이후 호출에 대해서도 내보내집니다. 수락으로 처리됨.659 * `"user_permanent"`: 사용자가 권한 프롬프트에서 "예, 그리고 ... 다시 묻지 마세요" 선택하여 개인 설정에 허용 규칙을 저장했을 때 내보내집니다. 대화형 CLI에서는 해당 선택 자체에 대해서만 내보내집니다. 나중에 저장된 규칙과 일치하는 호출은 대신 `"config"`을 내보냅니다. Agent SDK 또는 비대화형 `-p` 세션에서는 초기 선택과 나중의 규칙 일치 모두 `"user_permanent"`를 내보냅니다. 수락으로 처리됨.

653 * `"user_temporary"`: 사용자가 프롬프트될 "예" 또는 "이 세션에만" 선택했지만 규칙을 저장하지 않았을 때 내보내집니다. 또한 해당 세션 범위 허용과 일치하는 같은 세션의 이후 호출에 대해서도 내보내집니다. 수락으로 처리됨.660 * `"user_temporary"`: 사용자가 권한 프롬프트에서 "예" 선택했거나 파일 편집 또는 읽기 프롬프트에서 "이 세션 중" 옵션 하나를 선택했을 때 내보내집니다. 대화형 CLI에서는 선택 자체에 대해서만 내보내집니다. 나중에 해당 세션 범위 부여와 일치하는 호출은 대신 `"config"`을 내보냅니다. Agent SDK 또는 비대화형 `-p` 세션에서는 선택과 나중의 일치 모두 `"user_temporary"`를 내보냅니다. 수락으로 처리됨.

654 * `"user_abort"`: 사용자가 답변 없이 권한 프롬프트를 닫았을 때 내보내집니다. 거부로 처리됨.661 * `"user_abort"`: 사용자가 답변 없이 권한 프롬프트를 닫았을 때 내보내집니다. 거부로 처리됨.

655 * `"user_reject"`: 사용자가 프롬프트될 때 "아니오"를 선택했거나 호출이 개인 설정의 거부 규칙과 일치했을 때 내보내집니다. 거부로 처리됨.662 * `"user_reject"`: 사용자가 프롬프트될 때 "아니오"를 선택했거나 호출이 개인 설정의 거부 규칙과 일치했을 때 내보내집니다. 거부로 처리됨.

656 663 


741* `plugin.version`: 마켓플레이스 항목에 선언된 경우 플러그인 버전. 타사 마켓플레이스의 경우 `OTEL_LOG_TOOL_DETAILS=1`일 때만 포함됩니다748* `plugin.version`: 마켓플레이스 항목에 선언된 경우 플러그인 버전. 타사 마켓플레이스의 경우 `OTEL_LOG_TOOL_DETAILS=1`일 때만 포함됩니다

742* `marketplace.name`: 플러그인이 설치된 마켓플레이스. 타사 마켓플레이스의 경우 `OTEL_LOG_TOOL_DETAILS=1`일 때만 포함됩니다749* `marketplace.name`: 플러그인이 설치된 마켓플레이스. 타사 마켓플레이스의 경우 `OTEL_LOG_TOOL_DETAILS=1`일 때만 포함됩니다

743 750 

751#### 플러그인 로드됨 이벤트

752 

753세션 시작 시 활성화된 플러그인당 한 번 기록됩니다. 이 이벤트를 사용하여 플릿 전체에서 활성화된 플러그인을 인벤토리화합니다. 설치 작업 자체를 기록하는 `plugin_installed`를 보완합니다.

754 

755**이벤트 이름**: `claude_code.plugin_loaded`

756 

757**속성**:

758 

759* 모든 [표준 속성](#standard-attributes)

760* `event.name`: `"plugin_loaded"`

761* `event.timestamp`: ISO 8601 타임스탬프

762* `event.sequence`: 세션 내 이벤트 순서 지정을 위한 단조 증가 카운터

763* `plugin.name`: 플러그인의 이름. 공식 마켓플레이스 및 기본 제공 번들 외부의 플러그인의 경우 `OTEL_LOG_TOOL_DETAILS=1`이 아니면 값은 `"third-party"`입니다

764* `marketplace.name`: 플러그인이 설치된 마켓플레이스 (알려진 경우). `plugin.name`과 동일한 조건에서 `"third-party"`로 수정됩니다

765* `plugin.version`: 플러그인 매니페스트의 버전. 이름이 수정되지 않고 매니페스트가 버전을 선언할 때만 포함됩니다

766* `plugin.scope`: 플러그인의 출처 범주: `"official"`, `"org"`, `"user-local"` 또는 `"default-bundle"`

767* `enabled_via`: 플러그인이 활성화된 방식: `"default-enable"`, `"org-policy"`, `"seed-mount"` 또는 `"user-install"`

768* `plugin_id_hash`: 플러그인 이름 및 마켓플레이스의 결정론적 해시 (구성된 내보내기로만 전송됨). 플릿 전체에서 로드된 서로 다른 타사 플러그인 수를 세는 것을 허용합니다 (이름 기록 없이)

769* `has_hooks`: 플러그인이 훅을 제공하는지 여부

770* `has_mcp`: 플러그인이 MCP 서버를 제공하는지 여부

771* `skill_path_count`: 플러그인이 선언하는 스킬 디렉토리 수

772* `command_path_count`: 플러그인이 선언하는 명령 디렉토리 수

773* `agent_path_count`: 플러그인이 선언하는 에이전트 디렉토리 수

774 

744#### 스킬 활성화됨 이벤트775#### 스킬 활성화됨 이벤트

745 776 

746스킬이 호출될 때 기록됩니다. Claude가 Skill 도구를 통해 호출하든 `/` 명령으로 실행하든 상관없습니다.777스킬이 호출될 때 기록됩니다. Claude가 Skill 도구를 통해 호출하든 `/` 명령으로 실행하든 상관없습니다.


793* `total_retry_duration_ms`: 모든 시도에 걸친 총 벽시계 시간824* `total_retry_duration_ms`: 모든 시도에 걸친 총 벽시계 시간

794* `speed`: `"fast"` 또는 `"normal"`825* `speed`: `"fast"` 또는 `"normal"`

795 826 

827#### 훅 등록됨 이벤트

828 

829세션 시작 시 구성된 훅당 한 번 기록됩니다. 이 이벤트를 사용하여 플릿 전체에서 활성화된 훅을 인벤토리화합니다. 실행별 `hook_execution_start` 및 `hook_execution_complete` 이벤트를 보완합니다.

830 

831**이벤트 이름**: `claude_code.hook_registered`

832 

833**속성**:

834 

835* 모든 [표준 속성](#standard-attributes)

836* `event.name`: `"hook_registered"`

837* `event.timestamp`: ISO 8601 타임스탬프

838* `event.sequence`: 세션 내 이벤트 순서 지정을 위한 단조 증가 카운터

839* `hook_event`: 훅 이벤트 유형 (예: `"PreToolUse"` 또는 `"PostToolUse"`)

840* `hook_type`: 훅 구현 유형: `"command"`, `"prompt"`, `"mcp_tool"`, `"http"` 또는 `"agent"`

841* `hook_source`: 훅이 정의된 위치: `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"` 또는 `"pluginHook"`

842* `hook_matcher` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 설정된 경우 훅 구성의 매처 문자열

843* `plugin.name` (`hook_source`가 `"pluginHook"`일 때): 기여하는 플러그인의 이름. 공식 마켓플레이스 및 기본 제공 번들 외부의 플러그인의 경우 `OTEL_LOG_TOOL_DETAILS=1`이 아니면 값은 `"third-party"`입니다

844* `plugin_id_hash` (`hook_source`가 `"pluginHook"`일 때): 플러그인 이름 및 마켓플레이스의 결정론적 해시 (구성된 내보내기로만 전송됨). 이름을 기록하지 않고 기여하는 서로 다른 플러그인을 세는 것을 허용합니다

845 

796#### 훅 실행 시작 이벤트846#### 훅 실행 시작 이벤트

797 847 

798하나 이상의 훅이 훅 이벤트에 대해 실행을 시작할 때 기록됩니다.848하나 이상의 훅이 훅 이벤트에 대해 실행을 시작할 때 기록됩니다.


855* `post_tokens`: 압축 후 대략적인 토큰 수905* `post_tokens`: 압축 후 대략적인 토큰 수

856* `error`: 압축이 실패했을 때 오류 메시지906* `error`: 압축이 실패했을 때 오류 메시지

857 907 

908#### 피드백 설문 이벤트

909 

910세션 품질 설문이 표시되거나 답변될 때 기록됩니다. [세션 품질 설문](/ko/data-usage#session-quality-surveys)을 참조하여 설문이 수집하는 내용과 제어 방법을 확인하세요.

911 

912**이벤트 이름**: `claude_code.feedback_survey`

913 

914**속성**:

915 

916* 모든 [표준 속성](#standard-attributes)

917* `event.name`: `"feedback_survey"`

918* `event.timestamp`: ISO 8601 타임스탬프

919* `event.sequence`: 세션 내 이벤트 순서 지정을 위한 단조 증가 카운터

920* `event_type`: 설문 수명 주기 이벤트 (예: `"appeared"`, `"responded"` 또는 `"transcript_prompt_appeared"`)

921* `appearance_id`: 하나의 설문 인스턴스에 대해 내보내진 이벤트를 연결하는 고유 ID

922* `survey_type`: 이벤트를 생성한 설문. `"session"`은 "Claude가 어떻게 하고 있나요?" 평가 프롬프트입니다

923* `response`: `responded` 이벤트에서 사용자의 선택

924* `enabled_via_override`: [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](/ko/env-vars)이 설정되어 있을 때 `true`. 문자열이 아닌 부울로 내보내집니다. `session` 설문 이벤트에 표시됩니다. 이 속성을 필터링하여 플릿 전체에서 재정의가 적용되었는지 확인합니다

925 

858## 메트릭 및 이벤트 데이터 해석926## 메트릭 및 이벤트 데이터 해석

859 927 

860내보낸 메트릭 및 이벤트는 다양한 분석을 지원합니다:928내보낸 메트릭 및 이벤트는 다양한 분석을 지원합니다:


862### 사용 모니터링930### 사용 모니터링

863 931 

864| 메트릭 | 분석 기회 |932| 메트릭 | 분석 기회 |

865| ------------------------------------------------------------- | --------------------------------- |933| ------------------------------------------------------------- | ---------------------------------------------------------------------------- |

866| `claude_code.token.usage` | `type` (입력/출력), 사용자, 팀 또는 모델별로 분류 |934| `claude_code.token.usage` | `type` (입력/출력), 사용자, 팀, 모델, `skill.name`, `plugin.name` 또는 `agent.name`별로 분류 |

867| `claude_code.session.count` | 시간 경과에 따른 채택 및 참여 추적 |935| `claude_code.session.count` | 시간 경과에 따른 채택 및 참여 추적 |

868| `claude_code.lines_of_code.count` | 코드 추가/제거를 추적하여 생산성 측정 |936| `claude_code.lines_of_code.count` | 코드 추가/제거를 추적하여 생산성 측정 |

869| `claude_code.commit.count` & `claude_code.pull_request.count` | 개발 워크플로우에 미치는 영향 이해 |937| `claude_code.commit.count` & `claude_code.pull_request.count` | 개발 워크플로우에 미치는 영향 이해 |


874 942 

875* 팀 또는 개인 전체의 사용 추세 추적943* 팀 또는 개인 전체의 사용 추세 추적

876* 최적화를 위한 높은 사용 세션 식별944* 최적화를 위한 높은 사용 세션 식별

945* `skill.name`, `plugin.name` 및 `agent.name` 속성을 통해 특정 스킬, 플러그인 또는 서브에이전트 유형에 지출 귀속

877 946 

878<Note>947<Note>

879 비용 메트릭은 근사값입니다. 공식 청구 데이터는 API 제공자 (Claude Console, Amazon Bedrock 또는 Google Cloud Vertex)를 참조하세요.948 비용 메트릭은 근사값입니다. 공식 청구 데이터는 API 제공자 (Claude Console, Amazon Bedrock 또는 Google Cloud Vertex)를 참조하세요.

Details

14 14 

15Claude Code의 **Default** 출력 스타일은 기존 시스템 프롬프트이며, 소프트웨어 엔지니어링 작업을 효율적으로 완료하도록 설계되었습니다.15Claude Code의 **Default** 출력 스타일은 기존 시스템 프롬프트이며, 소프트웨어 엔지니어링 작업을 효율적으로 완료하도록 설계되었습니다.

16 16 

17코드베이스와 Claude의 작동 방식을 가르치는 데 중점을 두는 두 가지 추가 기본 제공 출력 스타일이 있습니다:17 가지 추가 기본 제공 출력 스타일이 있습니다:

18 

19* **Proactive**: Claude가 즉시 실행하고, 일상적인 결정을 위해 일시 중지하는 대신 합리적인 가정을 하며, 계획보다 행동을 선호합니다.

20 이는 [자동 모드](/ko/permission-modes#eliminate-prompts-with-auto-mode)와 동일한 지침을 적용하지만 권한 모드를 변경하지 않으므로, 도구가 실행되기 전에 여전히 권한 프롬프트를 볼 수 있습니다.

18 21 

19* **Explanatory**: 소프트웨어 엔지니어링 작업을 완료하는 동안 교육용 "Insights"를 제공합니다. 구현 선택 사항과 코드베이스 패턴을 이해하는 데 도움이 됩니다.22* **Explanatory**: 소프트웨어 엔지니어링 작업을 완료하는 동안 교육용 "Insights"를 제공합니다. 구현 선택 사항과 코드베이스 패턴을 이해하는 데 도움이 됩니다.

20 23 


88 91 

89### 출력 스타일 vs. CLAUDE.md vs. --append-system-prompt92### 출력 스타일 vs. CLAUDE.md vs. --append-system-prompt

90 93 

91출력 스타일은 소프트웨어 엔지니어링에 특정한 Claude Code의 기본 시스템 프롬프트 부분을 완전히 "끕니다". CLAUDE.md와 `--append-system-prompt`는 Claude Code의 기본 시스템 프롬프트를 편집하지 않습니다. CLAUDE.md는 내용을 Claude Code의 기본 시스템 프롬프트 *다음에* 사용자 메시지로 추가합니다. `--append-system-prompt`는 내용을 시스템 프롬프트에 추가합니다.94Claude가 코딩 어시스턴트로서의 역할을 중단할지 아니면 기본 역할을 유지하고 더 많이 학습할지에 따라 선택합니다. 출력 스타일은 Claude Code의 시스템 프롬프트에서 소프트웨어 엔지니어링 부분을 사용자의 역할과 음성으로 바꾸므로, Claude가 글쓰기 편집자나 데이터 분석 어시스턴트와 같은 다른 정체성을 채택해야 할 때 사용합니다. CLAUDE.md와 `--append-system-prompt`는 모두 Claude Code의 기본 정체성을 유지하고 여기에 추가하므로, Claude가 프로젝트 규칙이나 추가 지침을 따르는 코딩 어시스턴트로 남아야 사용합니다.

95 

96메커니즘도 다릅니다. 출력 스타일은 시스템 프롬프트를 직접 편집합니다. CLAUDE.md는 시스템 프롬프트 이후에 사용자 메시지로 내용을 추가합니다. `--append-system-prompt`는 아무것도 제거하지 않고 시스템 프롬프트의 끝에 내용을 추가합니다.

92 97 

93### 출력 스타일 vs. [Agents](/ko/sub-agents)98### 출력 스타일 vs. [Agents](/ko/sub-agents)

94 99 

95출력 스타일은에이전트 루프에 직접 영향을 미치며 시스템 프롬프트에만 영향을 줍니다. 에이전트는 특정 작업을 처리하기 위해 호출되며 사용할 모델, 사용 가능한 도구, 에이전트 사용 시기에 대한 일부 컨텍스트와 같은 추가 설정을 포함할 수 있습니다.100모든 세션에서 주 대화가 응답하는 방식을 변경하려면 출력 스타일을 사용합니다. 대화가 위임하는 별도로 범위가 지정된 도우미가 필요할 때는 [subagent](/ko/sub-agents)를 사용합니다. 출력 스타일은 주 에이전트 루프의 시스템 프롬프트에만 영향을 미칩니다. 에이전트는 특정 작업을 처리하며 자신의 모델, 도구, 호출 시기에 대한 컨텍스트를 가질 수 있습니다.

96 101 

97### 출력 스타일 vs. [Skills](/ko/skills)102### 출력 스타일 vs. [Skills](/ko/skills)

98 103 

Details

128 128 

129계획을 승인하지 않고 계획 모드를 떠나려면 `Shift+Tab`을 다시 누릅니다.129계획을 승인하지 않고 계획 모드를 떠나려면 `Shift+Tab`을 다시 누릅니다.

130 130 

131### 계획 검토 및 승인

132 

131계획이 준비되면, Claude는 이를 제시하고 진행 방법을 묻습니다. 해당 프롬프트에서 다음을 수행할 수 있습니다:133계획이 준비되면, Claude는 이를 제시하고 진행 방법을 묻습니다. 해당 프롬프트에서 다음을 수행할 수 있습니다:

132 134 

133* 승인하고 자동 모드로 시작135* 승인하고 자동 모드로 시작


136* 피드백으로 계획 유지138* 피드백으로 계획 유지

137* [Ultraplan](/ko/ultraplan)으로 브라우저 기반 검토를 위해 개선139* [Ultraplan](/ko/ultraplan)으로 브라우저 기반 검토를 위해 개선

138 140 

139각 승인 옵션은 먼저 계획 컨텍스트를 지우도록 제안합니다.141계획을 승인하면 계획 모드를 종료하고 세션을 각 승인 옵션이 설명하는 권한 모드로 전환하므로 Claude가 편집을 시작합니다. 다시 계획하려면 `Shift+Tab`으로 계획 모드로 돌아가거나 다음 프롬프트 앞에 `/plan`을 붙입니다.

142 

143`Ctrl+G`를 눌러 제안된 계획을 기본 텍스트 편집기에서 열고 Claude가 진행하기 전에 직접 편집할 수 있습니다. [`showClearContextOnPlanAccept`](/ko/settings#available-settings)가 활성화되면, 각 승인 옵션도 먼저 계획 컨텍스트를 지우도록 제안합니다.

144 

145계획을 수락하면 이미 `--name` 또는 `/rename`으로 이름을 설정하지 않은 경우 계획 내용에서 자동으로 세션 이름을 지정합니다.

146 

147### 계획 모드를 기본값으로 설정

148 

149프로젝트에 대해 계획 모드를 기본값으로 설정하려면 `.claude/settings.json`에서 `defaultMode`를 설정합니다:

150 

151```json theme={null}

152{

153 "permissions": {

154 "defaultMode": "plan"

155 }

156}

157```

140 158 

141## 자동 모드로 프롬프트 제거159## 자동 모드로 프롬프트 제거

142 160 


146 164 

147자동 모드는 Claude가 권한 프롬프트 없이 실행되도록 합니다. 별도의 분류기 모델이 실행 전에 작업을 검토하여, 요청을 초과하여 확대되거나, 인식되지 않은 인프라를 대상으로 하거나, Claude가 읽은 적대적 콘텐츠에 의해 주도되는 것으로 보이는 모든 것을 차단합니다.165자동 모드는 Claude가 권한 프롬프트 없이 실행되도록 합니다. 별도의 분류기 모델이 실행 전에 작업을 검토하여, 요청을 초과하여 확대되거나, 인식되지 않은 인프라를 대상으로 하거나, Claude가 읽은 적대적 콘텐츠에 의해 주도되는 것으로 보이는 모든 것을 차단합니다.

148 166 

167자동 모드는 또한 Claude에게 즉시 실행하고 명확히 하는 질문을 최소화하도록 지시합니다. 권한 프롬프트를 유지하면서 해당 동작을 얻으려면 [사전 예방적 출력 스타일](/ko/output-styles)을 대신 설정합니다.

168 

149<Warning>169<Warning>

150 자동 모드는 연구 미리보기입니다. 프롬프트를 줄이지만 안전을 보장하지는 않습니다. 일반적인 방향을 신뢰하는 작업에 사용하고, 민감한 작업에 대한 검토 대체로 사용하지 마세요.170 자동 모드는 연구 미리보기입니다. 프롬프트를 줄이지만 안전을 보장하지는 않습니다. 일반적인 방향을 신뢰하는 작업에 사용하고, 민감한 작업에 대한 검토 대체로 사용하지 마세요.

151</Warning>171</Warning>


256 276 

257`--dangerously-skip-permissions` 플래그는 동등합니다.277`--dangerously-skip-permissions` 플래그는 동등합니다.

258 278 

279Linux 및 macOS에서 Claude Code는 root로 실행되거나 `sudo` 아래에서 실행될 때 이 모드에서 시작하기를 거부합니다:

280 

281```text theme={null}

282--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons

283```

284 

285인식된 샌드박스 내에서는 검사가 자동으로 건너뜁니다. 컨테이너에서 자율적으로 실행하려면 [개발 컨테이너](/ko/devcontainer) 구성을 사용하십시오. 이는 Claude Code를 비root 사용자로 실행합니다.

286 

259<Warning>287<Warning>

260 `bypassPermissions`는 프롬프트 주입 또는 의도하지 않은 작업에 대한 보호를 제공하지 않습니다. 프롬프트 없이 백그라운드 안전 검사를 위해 [자동 모드](#eliminate-prompts-with-auto-mode)를 대신 사용하십시오. 관리자는 [관리 설정](/ko/permissions#managed-settings)에서 `permissions.disableBypassPermissionsMode`를 `"disable"`로 설정하여 이 모드를 차단할 수 있습니다.288 `bypassPermissions`는 프롬프트 주입 또는 의도하지 않은 작업에 대한 보호를 제공하지 않습니다. 프롬프트 없이 백그라운드 안전 검사를 위해 [자동 모드](#eliminate-prompts-with-auto-mode)를 대신 사용하십시오. 관리자는 [관리 설정](/ko/permissions#managed-settings)에서 `permissions.disableBypassPermissionsMode`를 `"disable"`로 설정하여 이 모드를 차단할 수 있습니다.

261</Warning>289</Warning>

permissions.md +5 −1

Details

28 28 

29규칙은 순서대로 평가됩니다: **deny -> ask -> allow**. 첫 번째 일치하는 규칙이 우선이므로 deny 규칙이 항상 우선합니다.29규칙은 순서대로 평가됩니다: **deny -> ask -> allow**. 첫 번째 일치하는 규칙이 우선이므로 deny 규칙이 항상 우선합니다.

30 30 

31<Note>

32 권한 규칙은 모델이 아닌 Claude Code에 의해 적용됩니다. 프롬프트 또는 `CLAUDE.md`의 지시사항은 Claude가 시도하는 작업을 형성하지만, Claude Code가 허용하는 것을 변경하지는 않습니다. 액세스 권한을 부여하거나 취소하려면 `/permissions`, 여기에 설명된 규칙, [권한 모드](/ko/permission-modes), 또는 [PreToolUse hook](#extend-permissions-with-hooks)을 사용하십시오.

33</Note>

34 

31## 권한 모드35## 권한 모드

32 36 

33Claude Code는 도구 승인 방식을 제어하는 여러 권한 모드를 지원합니다. [권한 모드](/ko/permission-modes)에서 각 모드를 사용할 시기를 확인합니다. [설정 파일](/ko/settings#settings-files)에서 `defaultMode`를 설정합니다:37Claude Code는 도구 승인 방식을 제어하는 여러 권한 모드를 지원합니다. [권한 모드](/ko/permission-modes)에서 각 모드를 사용할 시기를 확인합니다. [설정 파일](/ko/settings#settings-files)에서 `defaultMode`를 설정합니다:


153 157 

154 * **Bash 네트워크 도구 제한**: deny 규칙을 사용하여 `curl`, `wget` 및 유사한 명령을 차단한 다음 허용된 도메인에 대해 `WebFetch(domain:github.com)` 권한으로 WebFetch 도구를 사용합니다158 * **Bash 네트워크 도구 제한**: deny 규칙을 사용하여 `curl`, `wget` 및 유사한 명령을 차단한 다음 허용된 도메인에 대해 `WebFetch(domain:github.com)` 권한으로 WebFetch 도구를 사용합니다

155 * **PreToolUse 훅 사용**: Bash 명령의 URL을 검증하고 허용되지 않은 도메인을 차단하는 훅을 구현합니다159 * **PreToolUse 훅 사용**: Bash 명령의 URL을 검증하고 허용되지 않은 도메인을 차단하는 훅을 구현합니다

156 * CLAUDE.md를 통해 Claude Code에 허용된 curl 패턴에 대해 지시합니다160 * **CLAUDE.md 지침 추가**: `CLAUDE.md`에서 허용된 curl 패턴을 설명합니다. 이는 Claude가 시도하는 것을 형성하지만 경계를 적용하지 않으므로 위의 옵션 중 하나와 함께 사용합니다

157 161 

158 WebFetch만 사용하는 것은 네트워크 액세스를 방지하지 않습니다. Bash가 허용되면 Claude는 여전히 `curl`, `wget` 또는 다른 도구를 사용하여 모든 URL에 도달할 수 있습니다.162 WebFetch만 사용하는 것은 네트워크 액세스를 방지하지 않습니다. Bash가 허용되면 Claude는 여전히 `curl`, `wget` 또는 다른 도구를 사용하여 모든 URL에 도달할 수 있습니다.

159</Warning>163</Warning>

plugins.md +6 −0

Details

299claude --plugin-dir ./my-plugin299claude --plugin-dir ./my-plugin

300```300```

301 301 

302플래그는 플러그인 디렉토리의 `.zip` 아카이브도 허용하며, 이는 Claude Code v2.1.128 이상이 필요합니다.

303 

304```bash theme={null}

305claude --plugin-dir ./my-plugin.zip

306```

307 

302`--plugin-dir` 플러그인이 설치된 마켓플레이스 플러그인과 동일한 이름을 가진 경우 로컬 복사본이 해당 세션에 우선합니다. 이를 통해 먼저 제거하지 않고도 이미 설치한 플러그인의 변경 사항을 테스트할 수 있습니다. 관리 설정에 의해 강제로 활성화된 마켓플레이스 플러그인은 유일한 예외이며 재정의할 수 없습니다.308`--plugin-dir` 플러그인이 설치된 마켓플레이스 플러그인과 동일한 이름을 가진 경우 로컬 복사본이 해당 세션에 우선합니다. 이를 통해 먼저 제거하지 않고도 이미 설치한 플러그인의 변경 사항을 테스트할 수 있습니다. 관리 설정에 의해 강제로 활성화된 마켓플레이스 플러그인은 유일한 예외이며 재정의할 수 없습니다.

303 309 

304플러그인을 변경할 때 `/reload-plugins`를 실행하여 다시 시작하지 않고 업데이트를 적용합니다. 이는 플러그인, skills, agents, hooks, 플러그인 MCP servers, 플러그인 LSP servers를 다시 로드합니다. 플러그인 구성 요소를 테스트합니다:310플러그인을 변경할 때 `/reload-plugins`를 실행하여 다시 시작하지 않고 업데이트를 적용합니다. 이는 플러그인, skills, agents, hooks, 플러그인 MCP servers, 플러그인 LSP servers를 다시 로드합니다. 플러그인 구성 요소를 테스트합니다:

Details

97 "hooks": [97 "hooks": [

98 {98 {

99 "type": "command",99 "type": "command",

100 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format-code.sh"100 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/format-code.sh"

101 }101 }

102 ]102 ]

103 }103 }


289[289[

290 {290 {

291 "name": "deploy-status",291 "name": "deploy-status",

292 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/poll-deploy.sh ${user_config.api_endpoint}",292 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/poll-deploy.sh ${user_config.api_endpoint}",

293 "description": "배포 상태 변경"293 "description": "배포 상태 변경"

294 },294 },

295 {295 {


317| :----- | :------------------------------------------------------------------------------------------------------------------------------------------ |317| :----- | :------------------------------------------------------------------------------------------------------------------------------------------ |

318| `when` | monitor가 시작되는 시기를 제어합니다. `"always"`는 세션 시작 및 플러그인 다시 로드 시 시작하며 기본값입니다. `"on-skill-invoke:<skill-name>"`은 이 플러그인의 명명된 skill이 처음 발송될 때 시작합니다. |318| `when` | monitor가 시작되는 시기를 제어합니다. `"always"`는 세션 시작 및 플러그인 다시 로드 시 시작하며 기본값입니다. `"on-skill-invoke:<skill-name>"`은 이 플러그인의 명명된 skill이 처음 발송될 때 시작합니다. |

319 319 

320`command` 값은 MCP 및 LSP 서버 구성과 동일한 [변수 대체](#environment-variables)를 지원합니다: `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, `${user_config.*}` 및 환경의 모든 `${ENV_VAR}`. 스크립트가 플러그인 자체 디렉토리에서 실행되어야 하는 경우 명령어 앞에 `cd "${CLAUDE_PLUGIN_ROOT}" && `를 붙이세요.320`command` 값은 MCP 및 LSP 서버 구성과 동일한 [변수 대체](#environment-variables)를 지원합니다: `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, `${CLAUDE_PROJECT_DIR}`, `${user_config.*}` 및 환경의 모든 `${ENV_VAR}`. 스크립트가 플러그인 자체 디렉토리에서 실행되어야 하는 경우 명령어 앞에 `cd "${CLAUDE_PLUGIN_ROOT}" && `를 붙이세요.

321 321 

322세션 중간에 플러그인을 비활성화해도 이미 실행 중인 monitors는 중지되지 않습니다. 세션이 끝날 때 중지됩니다.322세션 중간에 플러그인을 비활성화해도 이미 실행 중인 monitors는 중지되지 않습니다. 세션이 끝날 때 중지됩니다.

323 323 


540 540 

541### 환경 변수541### 환경 변수

542 542 

543Claude Code는 플러그인 경로를 참조하기 위한 가지 변수를 제공합니다. 둘 다 skill 콘텐츠, agent 콘텐츠, hook 명령어, monitor 명령어 및 MCP 또는 LSP 서버 구성에 나타나는 모든 곳에서 인라인으로 대체됩니다. 둘 다 hook 프로세스 및 MCP 또는 LSP 서버 서브프로세스에 환경 변수로 내보내집니다.543Claude Code는 플러그인 경로를 참조하기 위한 가지 변수를 제공합니다. 모두 skill 콘텐츠, agent 콘텐츠, hook 명령어, monitor 명령어 및 MCP 또는 LSP 서버 구성에 나타나는 모든 곳에서 인라인으로 대체됩니다. 모두 hook 프로세스 및 MCP 또는 LSP 서버 서브프로세스에 환경 변수로 내보내집니다.

544 544 

545**`${CLAUDE_PLUGIN_ROOT}`**: 플러그인 설치 디렉토리의 절대 경로입니다. 플러그인과 함께 번들로 제공되는 스크립트, 바이너리 및 구성 파일을 참조하는 데 사용하세요. 이 경로는 플러그인이 업데이트될 때 변경됩니다. 이전 버전의 디렉토리는 업데이트 후 약 7일 동안 디스크에 남아 있지만 이를 임시로 취급하고 여기에 상태를 작성하지 마세요.545**`${CLAUDE_PLUGIN_ROOT}`**: 플러그인 설치 디렉토리의 절대 경로입니다. 플러그인과 함께 번들로 제공되는 스크립트, 바이너리 및 구성 파일을 참조하는 데 사용하세요. hook 명령어에서 [exec form](/ko/hooks#exec-form-and-shell-form)을 `args`와 함께 사용하여 경로가 따옴표 없이 하나의 인수로 전달되도록 하세요. shell-form hook 및 monitor 명령어에서 `"${CLAUDE_PLUGIN_ROOT}"`와 같이 큰따옴표로 감싸세요. 이 경로는 플러그인이 업데이트될 때 변경됩니다. 이전 버전의 디렉토리는 업데이트 후 약 7일 동안 디스크에 남아 있지만 이를 임시로 취급하고 여기에 상태를 작성하지 마세요.

546 546 

547플러그인이 세션 중에 업데이트될 때 hook 명령어, monitors, MCP 서버 및 LSP 서버는 이전 버전의 경로를 계속 사용합니다. `/reload-plugins`를 실행하여 hook, MCP 서버 및 LSP 서버를 새 경로로 전환하세요. monitors는 세션 재시작이 필요합니다.547플러그인이 세션 중에 업데이트될 때 hook 명령어, monitors, MCP 서버 및 LSP 서버는 이전 버전의 경로를 계속 사용합니다. `/reload-plugins`를 실행하여 hook, MCP 서버 및 LSP 서버를 새 경로로 전환하세요. monitors는 세션 재시작이 필요합니다.

548 548 

549**`${CLAUDE_PLUGIN_DATA}`**: 업데이트 후에도 유지되는 플러그인 상태를 위한 영구 디렉토리입니다. `node_modules` 또는 Python 가상 환경과 같은 설치된 종속성, 생성된 코드, 캐시 및 플러그인 버전 전체에서 유지되어야 하는 기타 파일에 사용하세요. 이 변수가 처음 참조될 때 디렉토리가 자동으로 생성됩니다.549**`${CLAUDE_PLUGIN_DATA}`**: 업데이트 후에도 유지되는 플러그인 상태를 위한 영구 디렉토리입니다. `node_modules` 또는 Python 가상 환경과 같은 설치된 종속성, 생성된 코드, 캐시 및 플러그인 버전 전체에서 유지되어야 하는 기타 파일에 사용하세요. 이 변수가 처음 참조될 때 디렉토리가 자동으로 생성됩니다.

550 550 

551**`${CLAUDE_PROJECT_DIR}`**: 프로젝트 루트입니다. 이는 hook이 `CLAUDE_PROJECT_DIR` 변수에서 받는 것과 동일한 디렉토리입니다. 프로젝트 로컬 스크립트 또는 구성 파일을 참조하는 데 사용하세요. 공백이 있는 경로를 처리하기 위해 따옴표로 감싸세요 (예: `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`). MCP 서버는 MCP `roots/list` 요청을 호출할 수도 있으며, 이는 Claude Code가 시작된 디렉토리를 반환합니다.

552 

551```json theme={null}553```json theme={null}

552{554{

553 "hooks": {555 "hooks": {


556 "hooks": [558 "hooks": [

557 {559 {

558 "type": "command",560 "type": "command",

559 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/process.sh"561 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/process.sh"

560 }562 }

561 ]563 ]

562 }564 }


629 631 

630설치된 플러그인은 해당 디렉토리 외부의 파일을 참조할 수 없습니다. 플러그인 루트 외부를 순회하는 경로(예: `../shared-utils`)는 설치 후 작동하지 않습니다. 왜냐하면 이러한 외부 파일이 캐시에 복사되지 않기 때문입니다.632설치된 플러그인은 해당 디렉토리 외부의 파일을 참조할 수 없습니다. 플러그인 루트 외부를 순회하는 경로(예: `../shared-utils`)는 설치 후 작동하지 않습니다. 왜냐하면 이러한 외부 파일이 캐시에 복사되지 않기 때문입니다.

631 633 

632### 외부 종속성 작업634### 마켓플레이스 내에서 심볼릭 링크를 사용하여 파일 공유

635 

636플러그인이 동일한 마켓플레이스의 다른 부분과 파일을 공유해야 하는 경우 플러그인 디렉토리 내에 심볼릭 링크를 만들 수 있습니다. 플러그인이 캐시에 복사될 때 심볼릭 링크가 처리되는 방식은 해당 대상이 어디로 해석되는지에 따라 달라집니다:

637 

638* **플러그인 자체 디렉토리 내:** 심볼릭 링크는 캐시에 상대 심볼릭 링크로 보존되므로 런타임에 복사된 대상으로 계속 해석됩니다.

639* **동일한 마켓플레이스 내의 다른 곳:** 심볼릭 링크는 역참조됩니다. 대상의 콘텐츠가 캐시에 복사됩니다. 이를 통해 메타 플러그인의 `skills/` 디렉토리가 마켓플레이스의 다른 플러그인으로 정의된 skills에 링크할 수 있습니다.

640* **마켓플레이스 외부:** 심볼릭 링크는 보안상의 이유로 건너뜁니다. 이는 플러그인이 시스템 경로와 같은 임의의 호스트 파일을 캐시로 가져오는 것을 방지합니다.

633 641 

634플러그인이 디렉토리 외부의 파일에 액세스해야 하는 경우 플러그인 디렉토리 내에서 외부 파일에 대한 심볼릭 링크를 만들 수 있습니다. 심볼릭 링크는 캐시에 보존되며 런타임에 해당 대상으로 확인됩니다. 다음 명령어는 플러그인 디렉토리 내부에서 공유 유틸리티 위치로의 링크를 만듭니다:642`--plugin-dir`으로 설치되거나 로컬 경로에서 설치된 플러그인의 경우 플러그인 자체 디렉토리 내에서 해석되는 심볼릭 링크만 보존됩니다. 다른 모든 것은 건너뜁니다.

643 

644다음 명령어는 마켓플레이스 플러그인 내부에서 형제 플러그인으로 정의된 공유 skill로의 링크를 만듭니다. Windows에서는 관리자 권한 명령 프롬프트에서 `mklink /D`를 사용하거나 개발자 모드를 활성화하세요:

635 645 

636```bash theme={null}646```bash theme={null}

637ln -s /path/to/shared-utils ./shared-utils647ln -s ../../shared-plugin/skills/foo ./skills/foo

638```648```

639 649 

640이는 캐싱 시스템의 보안 이점을 유지하면서 유연성을 제공합니다.650이는 캐싱 시스템의 보안 이점을 유지하면서 유연성을 제공합니다.


875| `--available` | 마켓플레이스에서 사용 가능한 플러그인 포함. `--json` 필요 | |885| `--available` | 마켓플레이스에서 사용 가능한 플러그인 포함. `--json` 필요 | |

876| `-h, --help` | 명령어 도움말 표시 | |886| `-h, --help` | 명령어 도움말 표시 | |

877 887 

888### plugin details

889 

890플러그인의 컴포넌트 인벤토리 및 예상 토큰 비용을 표시합니다. 출력은 플러그인이 기여하는 모든 컴포넌트를 Skills(스킬 및 명령어), Agents, Hooks 및 MCP 서버로 그룹화하여 나열하며, 각 세션에 추가되는 토큰 수의 추정치를 함께 표시합니다.

891 

892```bash theme={null}

893claude plugin details <name>

894```

895 

896**인수:**

897 

898* `<name>`: 플러그인 이름 또는 `plugin-name@marketplace-name`

899 

900**옵션:**

901 

902| 옵션 | 설명 | 기본값 |

903| :----------- | :--------- | :-- |

904| `-h, --help` | 명령어 도움말 표시 | |

905 

906출력은 각 컴포넌트에 대해 두 가지 비용 수치를 표시합니다:

907 

908* **Always-on:** 컴포넌트가 실행되는지 여부와 관계없이 플러그인의 목록 텍스트(예: 스킬 설명, 에이전트 설명, 명령어 이름)에 의해 모든 세션에 추가되는 토큰입니다.

909* **On-invoke:** 컴포넌트가 실행될 때 비용이 드는 토큰입니다. 일반적인 세션에서는 컴포넌트의 일부만 호출되므로 플러그인 전체가 아닌 컴포넌트별로 표시됩니다.

910 

911다음 예시는 두 개의 스킬이 있는 플러그인의 출력 모습을 보여줍니다:

912 

913```

914security-guidance 1.2.0

915 Real-time security analysis for Claude Code sessions

916 Source: security-guidance@claude-code-marketplace

917 

918Component inventory

919 Skills (2) scan-dependencies, review-changes

920 Agents (0)

921 Hooks (1) (harness-only — no model context cost)

922 MCP servers (0)

923 

924Projected token cost

925 Always-on: ~180 tok added to every session

926 

927Per-component (rounded)

928 component always-on on-invoke

929 scan-dependencies ~100 ~2400

930 review-changes ~80 ~1800

931 

932 On-invoke cost is paid each time a skill or agent fires.

933 Token counts are estimates and may differ from actual usage.

934```

935 

936Always-on 합계는 활성 모델에 대한 `count_tokens` API를 통해 계산됩니다. 컴포넌트별 수치는 해당 합계에서 비례적으로 조정됩니다. API에 연결할 수 없으면 명령어는 문자 기반 추정으로 폴백됩니다.

937 

878### plugin tag938### plugin tag

879 939 

880현재 디렉토리의 플러그인에 대한 릴리스 git 태그를 생성합니다. 플러그인의 폴더 내에서 실행하세요. [플러그인 릴리스 태그 지정](/ko/plugin-dependencies#tag-plugin-releases-for-version-resolution)을 참조하세요.940현재 디렉토리의 플러그인에 대한 릴리스 git 태그를 생성합니다. 플러그인의 폴더 내에서 실행하세요. [플러그인 릴리스 태그 지정](/ko/plugin-dependencies#tag-plugin-releases-for-version-resolution)을 참조하세요.

quickstart.md +2 −2

Details

307 </Accordion>307 </Accordion>

308 308 

309 <Accordion title="바로가기로 시간 절약">309 <Accordion title="바로가기로 시간 절약">

310 * `?`를 눌러 사용 가능한 모든 키보드 바로가기 보기310 * `/`를 입력하여 모든 명령 skills 보기

311 * Tab을 사용하여 명령 완성311 * Tab을 사용하여 명령 완성

312 * ↑를 눌러 명령 기록 보기312 * ↑를 눌러 명령 기록 보기

313 * `/`를 입력하여 모든 명령 skills 보기313 * `Shift+Tab` 눌러 권한 모드 순환

314 </Accordion>314 </Accordion>

315</AccordionGroup>315</AccordionGroup>

316 316 

routines.md +3 −1

Details

318 318 

319루틴은 연결된 MCP 커넥터를 사용하여 각 실행 중에 외부 서비스에서 읽고 쓸 수 있습니다. 예를 들어 지원 요청을 분류하는 루틴은 Slack 채널에서 읽고 Linear에서 이슈를 생성할 수 있습니다.319루틴은 연결된 MCP 커넥터를 사용하여 각 실행 중에 외부 서비스에서 읽고 쓸 수 있습니다. 예를 들어 지원 요청을 분류하는 루틴은 Slack 채널에서 읽고 Linear에서 이슈를 생성할 수 있습니다.

320 320 

321루틴을 생성할 현재 연결된 모든 커넥터가 기본적으로 포함됩니다. 실행 중에 Claude가 액세스할 있는 도구를 제한하려면 필요하지 않은 것을 제거하세요. 루틴 양식 외부에서 커넥터를 관리하거나 추가할 수도 있습니다.321커넥터는 계정의 [claude.ai 통합](/ko/mcp#use-mcp-servers-from-claude-ai)입니다. CLI에서 `claude mcp add`로 로컬에 추가한 MCP 서버는 claude.ai 계정이 아닌 컴퓨터에 저장되므로 커넥터 목록에 나타나지 않습니다. 루틴에서 이러한 서버 중 하나를 사용하려면 [claude.ai/customize/connectors](https://claude.ai/customize/connectors)에서 커넥터로 추가하거나 커밋된 [`.mcp.json`](/ko/mcp#project-scope)에서 선언하여 복제된 저장소의 일부가 되도록 하세요.

322 

323루틴을 생성할 때 현재 연결된 모든 커넥터가 기본적으로 포함됩니다. 실행 중에 Claude가 액세스할 수 있는 도구를 제한하려면 필요하지 않은 것을 제거하세요. 루틴 양식에서 직접 커넥터를 추가할 수도 있습니다.

322 324 

323루틴 양식 외부에서 커넥터를 관리하거나 추가하려면 claude.ai의 **설정 > 커넥터**를 방문하거나 CLI에서 `/schedule update`를 사용하세요.325루틴 양식 외부에서 커넥터를 관리하거나 추가하려면 claude.ai의 **설정 > 커넥터**를 방문하거나 CLI에서 `/schedule update`를 사용하세요.

324 326 

security.md +1 −1

Details

85 85 

86Claude Code를 사용하면 사용자가 Model Context Protocol(MCP) 서버를 구성할 수 있습니다. 허용된 MCP 서버 목록은 소스 코드에서 구성되며, Claude Code 설정의 일부로 엔지니어가 소스 제어에 체크인합니다.86Claude Code를 사용하면 사용자가 Model Context Protocol(MCP) 서버를 구성할 수 있습니다. 허용된 MCP 서버 목록은 소스 코드에서 구성되며, Claude Code 설정의 일부로 엔지니어가 소스 제어에 체크인합니다.

87 87 

88자신의 MCP 서버를 작성하거나 신뢰하는 제공자의 MCP 서버를 사용할 것을 권장합니다. Claude Code 권한을 MCP 서버에 대해 구성할 수 있습니다. Anthropic은 MCP 서버를 관리하거나 감사하지 않습니다.88자신의 MCP 서버를 작성하거나 신뢰하는 제공자의 MCP 서버를 사용할 것을 권장합니다. Claude Code 권한을 MCP 서버에 대해 구성할 수 있습니다. Anthropic은 커넥터를 [나열 기준](https://claude.com/docs/connectors/building/review-criteria)에 따라 검토한 후 [Anthropic 디렉토리](https://claude.ai/directory)에 추가하지만, MCP 서버에 대한 보안 감사를 수행하거나 관리하지 않습니다.

89 89 

90## IDE 보안90## IDE 보안

91 91 

settings.md +3 −1

Details

178| `awsCredentialExport` | AWS 자격 증명이 포함된 JSON을 출력하는 사용자 정의 스크립트 ([고급 자격 증명 구성](/ko/amazon-bedrock#advanced-credential-configuration) 참조) | `/bin/generate_aws_grant.sh` |178| `awsCredentialExport` | AWS 자격 증명이 포함된 JSON을 출력하는 사용자 정의 스크립트 ([고급 자격 증명 구성](/ko/amazon-bedrock#advanced-credential-configuration) 참조) | `/bin/generate_aws_grant.sh` |

179| `blockedMarketplaces` | (Managed 설정만) 마켓플레이스 소스의 차단 목록입니다. 마켓플레이스 추가 및 플러그인 설치, 업데이트, 새로고침 및 자동 업데이트에 적용되므로 정책이 설정되기 전에 추가된 마켓플레이스는 플러그인을 가져오는 데 사용할 수 없습니다. 차단된 소스는 다운로드 전에 확인되므로 파일 시스템에 닿지 않습니다. [Managed 마켓플레이스 제한](/ko/plugin-marketplaces#managed-marketplace-restrictions)을 참조하세요 | `[{ "source": "github", "repo": "untrusted/plugins" }]` |179| `blockedMarketplaces` | (Managed 설정만) 마켓플레이스 소스의 차단 목록입니다. 마켓플레이스 추가 및 플러그인 설치, 업데이트, 새로고침 및 자동 업데이트에 적용되므로 정책이 설정되기 전에 추가된 마켓플레이스는 플러그인을 가져오는 데 사용할 수 없습니다. 차단된 소스는 다운로드 전에 확인되므로 파일 시스템에 닿지 않습니다. [Managed 마켓플레이스 제한](/ko/plugin-marketplaces#managed-marketplace-restrictions)을 참조하세요 | `[{ "source": "github", "repo": "untrusted/plugins" }]` |

180| `channelsEnabled` | (Managed 설정만) 조직을 위해 [channels](/ko/channels)를 허용합니다. Claude.ai Team 및 Enterprise 플랜에서 설정되지 않거나 `false`이면 채널이 차단됩니다. [Anthropic Console](/ko/authentication#claude-console-authentication) 계정이 API 키 인증을 사용하는 경우 조직이 managed 설정을 배포하지 않으면 기본적으로 채널이 허용되며, 이 경우 이 키를 `true`로 설정해야 합니다 | `true` |180| `channelsEnabled` | (Managed 설정만) 조직을 위해 [channels](/ko/channels)를 허용합니다. Claude.ai Team 및 Enterprise 플랜에서 설정되지 않거나 `false`이면 채널이 차단됩니다. [Anthropic Console](/ko/authentication#claude-console-authentication) 계정이 API 키 인증을 사용하는 경우 조직이 managed 설정을 배포하지 않으면 기본적으로 채널이 허용되며, 이 경우 이 키를 `true`로 설정해야 합니다 | `true` |

181| `claudeMd` | (Managed 설정만) 조직 관리 메모리로 주입된 CLAUDE.md 스타일 지침입니다. Managed 또는 정책 설정에서 설정된 경우에만 적용되며 사용자, 프로젝트 및 local 설정에서는 무시됩니다. [조직 전체 CLAUDE.md](/ko/memory#deploy-organization-wide-claude-md)를 참조하세요 | `"Always run make lint before committing."` |

181| `claudeMdExcludes` | [메모리](/ko/memory)를 로드할 때 건너뛸 `CLAUDE.md` 파일의 Glob 패턴 또는 절대 경로입니다. 패턴은 절대 파일 경로와 일치합니다. 사용자, 프로젝트 및 local 메모리에만 적용됩니다. managed 정책 파일은 제외할 수 없습니다 | `["**/vendor/**/CLAUDE.md"]` |182| `claudeMdExcludes` | [메모리](/ko/memory)를 로드할 때 건너뛸 `CLAUDE.md` 파일의 Glob 패턴 또는 절대 경로입니다. 패턴은 절대 파일 경로와 일치합니다. 사용자, 프로젝트 및 local 메모리에만 적용됩니다. managed 정책 파일은 제외할 수 없습니다 | `["**/vendor/**/CLAUDE.md"]` |

182| `cleanupPeriodDays` | 이 기간보다 오래된 세션 파일은 시작 시 삭제됩니다 (기본값: 30일, 최소 1). `0`으로 설정하면 검증 오류가 발생합니다. 또한 시작 시 [고아 subagent worktrees](/ko/worktrees#clean-up-worktrees)의 자동 제거에 대한 나이 기준을 제어합니다. 트랜스크립트 쓰기를 완전히 비활성화하려면 [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/ko/env-vars) 환경 변수를 설정하거나 비대화형 모드 (`-p`)에서 `--no-session-persistence` 플래그 또는 `persistSession: false` SDK 옵션을 사용합니다. | `20` |183| `cleanupPeriodDays` | 이 기간보다 오래된 세션 파일은 시작 시 삭제됩니다 (기본값: 30일, 최소 1). `0`으로 설정하면 검증 오류가 발생합니다. 또한 시작 시 [고아 subagent worktrees](/ko/worktrees#clean-up-worktrees)의 자동 제거에 대한 나이 기준을 제어합니다. 트랜스크립트 쓰기를 완전히 비활성화하려면 [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/ko/env-vars) 환경 변수를 설정하거나 비대화형 모드 (`-p`)에서 `--no-session-persistence` 플래그 또는 `persistSession: false` SDK 옵션을 사용합니다. | `20` |

183| `companyAnnouncements` | 시작 시 사용자에게 표시할 공지사항입니다. 여러 공지사항이 제공되면 무작위로 순환됩니다. | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |184| `companyAnnouncements` | 시작 시 사용자에게 표시할 공지사항입니다. 여러 공지사항이 제공되면 무작위로 순환됩니다. | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |


253</Note>254</Note>

254 255 

255| 키 | 설명 | 예제 |256| 키 | 설명 | 예제 |

256| :------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |257| :------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

257| `autoConnectIde` | Claude Code가 외부 터미널에서 시작될 때 실행 중인 IDE에 자동으로 연결합니다. 기본값: `false`. VS Code 또는 JetBrains 터미널 외부에서 실행할 때 `/config`에 \*\*IDE에 자동 연결 (외부 터미널)\*\*로 표시됩니다. [`CLAUDE_CODE_AUTO_CONNECT_IDE`](/ko/env-vars) 환경 변수가 설정되면 이를 재정의합니다 | `true` |258| `autoConnectIde` | Claude Code가 외부 터미널에서 시작될 때 실행 중인 IDE에 자동으로 연결합니다. 기본값: `false`. VS Code 또는 JetBrains 터미널 외부에서 실행할 때 `/config`에 \*\*IDE에 자동 연결 (외부 터미널)\*\*로 표시됩니다. [`CLAUDE_CODE_AUTO_CONNECT_IDE`](/ko/env-vars) 환경 변수가 설정되면 이를 재정의합니다 | `true` |

258| `autoInstallIdeExtension` | VS Code 터미널에서 실행할 때 Claude Code IDE 확장을 자동으로 설치합니다. 기본값: `true`. VS Code 또는 JetBrains 터미널 내에서 실행할 때 `/config`에 **IDE 확장 자동 설치**로 표시됩니다. [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/ko/env-vars) 환경 변수도 설정할 수 있습니다 | `false` |259| `autoInstallIdeExtension` | VS Code 터미널에서 실행할 때 Claude Code IDE 확장을 자동으로 설치합니다. 기본값: `true`. VS Code 또는 JetBrains 터미널 내에서 실행할 때 `/config`에 **IDE 확장 자동 설치**로 표시됩니다. [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/ko/env-vars) 환경 변수도 설정할 수 있습니다 | `false` |

259| `externalEditorContext` | `Ctrl+G`로 외부 편집기를 열 때 Claude의 이전 응답을 `#` 주석 처리된 컨텍스트로 앞에 붙입니다. 기본값: `false`. `/config`에 **외부 편집기에 마지막 응답 표시**로 표시됩니다 | `true` |260| `externalEditorContext` | `Ctrl+G`로 외부 편집기를 열 때 Claude의 이전 응답을 `#` 주석 처리된 컨텍스트로 앞에 붙입니다. 기본값: `false`. `/config`에 **외부 편집기에 마지막 응답 표시**로 표시됩니다 | `true` |

261| `teammateDefaultModel` | [에이전트 팀](/ko/agent-teams) 팀원을 위한 기본 모델로 spawn 프롬프트가 하나를 지정하지 않을 때 사용됩니다. `"sonnet"`과 같은 모델 별칭으로 설정하거나 lead의 현재 `/model` 선택을 상속하려면 `null`로 설정합니다. `/config`에 **기본 팀원 모델**로 표시됩니다 | `"sonnet"` |

260 262 

261### Worktree 설정263### Worktree 설정

262 264 

vs-code.md +4 −2

Details

233</Note>233</Note>

234 234 

235| 명령 | 단축키 | 설명 |235| 명령 | 단축키 | 설명 |

236| -------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------ |236| -------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |

237| Focus Input | `Cmd+Esc`(Mac) / `Ctrl+Esc`(Windows/Linux) | 편집기와 Claude 사이의 포커스 전환 |237| Focus Input | `Cmd+Esc`(Mac) / `Ctrl+Esc`(Windows/Linux) | 편집기와 Claude 사이의 포커스 전환 |

238| Open in Side Bar | - | 왼쪽 사이드바에서 Claude 열기 |238| Open in Side Bar | - | 왼쪽 사이드바에서 Claude 열기 |

239| Open in Terminal | - | 터미널 모드에서 Claude 열기 |239| Open in Terminal | - | 터미널 모드에서 Claude 열기 |

240| Open in New Tab | `Cmd+Shift+Esc`(Mac) / `Ctrl+Shift+Esc`(Windows/Linux) | 편집기 탭으로 새 대화 열기 |240| Open in New Tab | `Cmd+Shift+Esc`(Mac) / `Ctrl+Shift+Esc`(Windows/Linux) | 편집기 탭으로 새 대화 열기 |

241| Open in New Window | - | 별도 창에서 새 대화 열기 |241| Open in New Window | - | 별도 창에서 새 대화 열기 |

242| New Conversation | `Cmd+N`(Mac) / `Ctrl+N`(Windows/Linux) | 새 대화 시작. Claude가 포커스되어야 하고 `enableNewConversationShortcut`이 `true`로 설정되어야 합니다. |242| New Conversation | `Cmd+N`(Mac) / `Ctrl+N`(Windows/Linux) | 새 대화 시작. Claude가 포커스되어야 하고 `enableNewConversationShortcut`이 `true`로 설정되어야 합니다. |

243| Reopen Closed Session | `Cmd+Shift+T`(Mac) / `Ctrl+Shift+T`(Windows/Linux) | 가장 최근에 닫은 Claude 세션 탭을 다시 엽니다. 마지막으로 닫은 탭이 Claude 세션이 아닐 때는 VS Code의 일반 닫힌 편집기 다시 열기로 넘어갑니다. `enableReopenClosedSessionShortcut`으로 비활성화합니다. |

243| Insert @-Mention Reference | `Option+K`(Mac) / `Alt+K`(Windows/Linux) | 현재 파일 및 선택에 대한 참조 삽입(편집기가 포커스되어야 함) |244| Insert @-Mention Reference | `Option+K`(Mac) / `Alt+K`(Windows/Linux) | 현재 파일 및 선택에 대한 참조 삽입(편집기가 포커스되어야 함) |

244| Show Logs | - | 확장 프로그램 디버그 로그 보기 |245| Show Logs | - | 확장 프로그램 디버그 로그 보기 |

245| Logout | - | Anthropic 계정에서 로그아웃 |246| Logout | - | Anthropic 계정에서 로그아웃 |


307### 확장 프로그램 설정308### 확장 프로그램 설정

308 309 

309| 설정 | 기본값 | 설명 |310| 설정 | 기본값 | 설명 |

310| --------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |311| ----------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

311| `useTerminal` | `false` | 그래픽 패널 대신 터미널 모드에서 Claude 시작 |312| `useTerminal` | `false` | 그래픽 패널 대신 터미널 모드에서 Claude 시작 |

312| `initialPermissionMode` | `default` | 새 대화에 대한 승인 프롬프트 제어: `default`, `plan`, `acceptEdits` 또는 `bypassPermissions`. [권한 모드](/ko/permission-modes)를 참조하십시오. |313| `initialPermissionMode` | `default` | 새 대화에 대한 승인 프롬프트 제어: `default`, `plan`, `acceptEdits` 또는 `bypassPermissions`. [권한 모드](/ko/permission-modes)를 참조하십시오. |

313| `preferredLocation` | `panel` | Claude가 열리는 위치: `sidebar`(오른쪽) 또는 `panel`(새 탭) |314| `preferredLocation` | `panel` | Claude가 열리는 위치: `sidebar`(오른쪽) 또는 `panel`(새 탭) |

314| `autosave` | `true` | Claude가 파일을 읽거나 쓰기 전에 자동 저장 |315| `autosave` | `true` | Claude가 파일을 읽거나 쓰기 전에 자동 저장 |

315| `useCtrlEnterToSend` | `false` | Enter 대신 Ctrl/Cmd+Enter를 사용하여 프롬프트 보내기 |316| `useCtrlEnterToSend` | `false` | Enter 대신 Ctrl/Cmd+Enter를 사용하여 프롬프트 보내기 |

316| `enableNewConversationShortcut` | `false` | Cmd/Ctrl+N을 사용하여 새 대화 시작 활성화 |317| `enableNewConversationShortcut` | `false` | Cmd/Ctrl+N을 사용하여 새 대화 시작 활성화 |

318| `enableReopenClosedSessionShortcut` | `true` | Cmd/Ctrl+Shift+T를 사용하여 가장 최근에 닫은 Claude 세션 탭을 다시 엽니다. 마지막으로 닫은 탭이 Claude 세션이 아닌 경우 바로 가기는 VS Code의 일반 닫힌 편집기 다시 열기 명령을 대신 실행합니다. |

317| `hideOnboarding` | `false` | 온보딩 체크리스트 숨기기(졸업 모자 아이콘) |319| `hideOnboarding` | `false` | 온보딩 체크리스트 숨기기(졸업 모자 아이콘) |

318| `respectGitIgnore` | `true` | 파일 검색에서 .gitignore 패턴 제외 |320| `respectGitIgnore` | `true` | 파일 검색에서 .gitignore 패턴 제외 |

319| `usePythonEnvironment` | `true` | Claude를 실행할 때 작업 공간의 Python 환경을 활성화합니다. Python 확장 프로그램이 필요합니다. |321| `usePythonEnvironment` | `true` | Claude를 실행할 때 작업 공간의 Python 환경을 활성화합니다. Python 확장 프로그램이 필요합니다. |