SpyBara
Go Premium

Documentation 2026-11-05 23:03 UTC to 2026-11-06 23:01 UTC

47 files changed +362 −203. View all changes and history on the product overview
2026
Thu 12 21:00 Wed 11 22:59 Tue 10 21:57 Mon 9 23:02 Sun 8 22:58 Sat 7 23:58 Fri 6 23:01 Thu 5 23:03 Wed 4 23:59 Tue 3 23:58 Mon 2 23:57 Sun 1 23:57
Details

167 167 

168### 도구 권한168### 도구 권한

169 169 

170Claude는 작업에 따라 호출할 도구를 결정하지만, 해당 호출이 실행되도록 허용할지 여부를 제어합니다. 특정 도구를 자동 승인하거나, 다른 도구를 완전히 차단하거나, 모든 것에 대해 승인을 요구할 수 있습니다. 3가지 옵션이 함께 작동하여 실행되는 것을 결정합니다:170Claude는 작업에 따라 호출할 도구를 결정하지만, 해당 호출의 실행 허용 여부는 사용자가 제어합니다. 다음 옵션을 사용하여 도구를 자동 승인하거나, 도구를 차단하거나, 권한 모드를 설정할 수 있습니다:

171 171 

172* **`allowed_tools` / `allowedTools`** 나열된 도구를 자동 승인합니다. `["Read", "Glob", "Grep"]`이 허용된 도구 목록에 있는 읽기 전용 에이전트는 [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서 읽는 경우를 제외하고 프롬프트 없이 해당 도구를 실행합니다. 나열되지 않은 도구는 여전히 사용 가능하며, 승인이 필요한 해당 도구에 대한 호출은 권한 모드 및 `canUseTool`로 넘어갑니다.172* **`allowed_tools` / `allowedTools`** 나열된 도구를 자동 승인합니다. `["Read", "Glob", "Grep"]`이 허용된 도구 목록에 있는 읽기 전용 에이전트는 [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서 읽는 경우를 제외하고 프롬프트 없이 해당 도구를 실행합니다. 나열되지 않은 도구는 여전히 사용 가능하며, 승인이 필요한 해당 도구에 대한 호출은 권한 모드 및 `canUseTool`로 넘어갑니다.

173* **`disallowed_tools` / `disallowedTools`** 다른 설정에 관계없이 나열된 도구를 차단합니다. 도구가 실행되기 전에 규칙이 확인되는 순서는 [권한](https://code.claude.com/docs/ko/agent-sdk/permissions.md)을 참조하세요.173* **`disallowed_tools` / `disallowedTools`** 다른 설정에 관계없이 나열된 도구를 차단합니다. 도구가 실행되기 전에 규칙이 확인되는 순서는 [권한](https://code.claude.com/docs/ko/agent-sdk/permissions.md)을 참조하세요.

Details

303 303 

304API는 응답 끝에서 실제 출력 수를 보고하며, Claude Code는 이를 결과 메시지에 추가합니다. 결과의 `usage`에서 또는 모델별 분석을 위해 `modelUsage`에서 출력 토큰을 읽습니다.304API는 응답 끝에서 실제 출력 수를 보고하며, Claude Code는 이를 결과 메시지에 추가합니다. 결과의 `usage`에서 또는 모델별 분석을 위해 `modelUsage`에서 출력 토큰을 읽습니다.

305 305 

306응답의 출력 수가 스트리밍되는 동안 증가하는 것을 보려면 `includePartialMessages` 또는 Python의 `include_partial_messages`를 설정하고, 각 `message_delta` 스트림 이벤트에서 `usage`를 읽습니다. TypeScript에서는 [`SDKPartialAssistantMessage`](https://code.claude.com/docs/ko/agent-sdk/typescript#sdkpartialassistantmessage)로, Python에서는 [`StreamEvent`](https://code.claude.com/docs/ko/agent-sdk/python#streamevent)로 입력됩니다.

307 

308### 실패한 대화의 비용 추적306### 실패한 대화의 비용 추적

309 307 

310성공 및 오류 결과 메시지 모두 `usage` 및 `total_cost_usd`를 포함합니다. Python에서는 두 필드 모두 선택 사항으로 입력되므로, 읽기 전에 `None`이 아닌지 확인해야 합니다.308성공 및 오류 결과 메시지 모두 `usage` 및 `total_cost_usd`를 포함합니다. Python에서는 두 필드 모두 선택 사항으로 입력되므로, 읽기 전에 `None`이 아닌지 확인해야 합니다.

Details

226| `timeout` | `number` | `undefined` | 초 단위의 타임아웃입니다. 생략하면 Claude Code는 [이벤트의 기본 타임아웃](#hook-timeout)을 적용합니다. SDK 콜백은 `command` 훅 기본값을 따릅니다. |226| `timeout` | `number` | `undefined` | 초 단위의 타임아웃입니다. 생략하면 Claude Code는 [이벤트의 기본 타임아웃](#hook-timeout)을 적용합니다. SDK 콜백은 `command` 훅 기본값을 따릅니다. |

227| `onFailure` | `"continue" \| "block"` | `undefined` | 콜백이 실패했을 때의 동작입니다. [콜백이 실패하면 작업을 차단](#block-the-action-when-a-callback-fails)하려면 `"block"`으로 설정합니다. Python에서는 `on_failure`를 사용합니다. |227| `onFailure` | `"continue" \| "block"` | `undefined` | 콜백이 실패했을 때의 동작입니다. [콜백이 실패하면 작업을 차단](#block-the-action-when-a-callback-fails)하려면 `"block"`으로 설정합니다. Python에서는 `on_failure`를 사용합니다. |

228 228 

229가능할 때마다 `matcher` 패턴을 사용하여 특정 도구를 대상으로 합니다. `'Bash'` 매처는 Bash 명령에만 실행되지만 패턴을 생략하면 콜백이 이벤트의 모든 발생에 대해 실행됩니다.229가능할 때마다 `matcher` 패턴을 사용하여 특정 도구를 대상으로 합니다. `'Bash'` 매처를 사용하면 콜백이 Bash 명령에 대해 실행됩니다. Claude Code v2.1.314 이상에서는 Monitor 명령에 대한 `PreToolUse` 및 `PermissionRequest`에서도 실행되며, 이때 콜백은 Monitor 명령을 [거부할 수는 있지만 승인할 수는 없습니다](https://code.claude.com/docs/ko/hooks.md#match-monitor-commands). matcher가 없으면 콜백은 이벤트가 발생할 때마다 실행됩니다.

230 230 

231### 콜백 함수231### 콜백 함수

232 232 

Details

70>70>

71> 경로는 플러그인의 루트 디렉터리를 가리켜야 합니다: `skills/`, `agents/`, `hooks/`, `commands/` 또는 `.claude-plugin/`의 상위 디렉터리입니다.71> 경로는 플러그인의 루트 디렉터리를 가리켜야 합니다: `skills/`, `agents/`, `hooks/`, `commands/` 또는 `.claude-plugin/`의 상위 디렉터리입니다.

72 72 

73### 실행 중인 세션에서 플러그인 다시 로드

74 

75새 세션을 시작하지 않고 플러그인의 스킬, 명령, 에이전트 또는 훅에 대한 변경 사항을 적용하려면 TypeScript SDK의 `Query` 객체에서 [`reloadPlugins()`](https://code.claude.com/docs/ko/agent-sdk/typescript#query-object)를 호출합니다. Python SDK는 이에 상응하는 메서드를 제공하지 않으므로, 대신 세션에서 [`/reload-plugins`](https://code.claude.com/docs/ko/plugins/cli-reference#reload-plugins)를 프롬프트로 보내십시오.

76 

73### 실행 중인 세션에 플러그인 추가77### 실행 중인 세션에 플러그인 추가

74 78 

75TypeScript SDK에서는 `query()`가 반환한 `Query` 객체에서 [`reloadPlugins()`](https://code.claude.com/docs/ko/agent-sdk/typescript#load-more-plugin-folders-with-addplugins)를 호출하고, 해당 호출의 `addPlugins` 옵션에 플러그인 디렉터리를 나열합니다. 각 `addPlugins` 항목은 절대 `path`를 가진 `{ type: "local", path }` 객체입니다. TypeScript Agent SDK v0.3.301 이상이 필요합니다.79TypeScript SDK에서는 `query()`가 반환한 `Query` 객체에서 [`reloadPlugins()`](https://code.claude.com/docs/ko/agent-sdk/typescript#load-more-plugin-folders-with-addplugins)를 호출하고, 해당 호출의 `addPlugins` 옵션에 플러그인 디렉터리를 나열합니다. 각 `addPlugins` 항목은 절대 `path`를 가진 `{ type: "local", path }` 객체입니다. TypeScript Agent SDK v0.3.301 이상이 필요합니다.

Details

1385| `enabled` | `type`, `budget_tokens`, `display` | 특정 토큰 예산으로 사고 활성화 |1385| `enabled` | `type`, `budget_tokens`, `display` | 특정 토큰 예산으로 사고 활성화 |

1386| `disabled` | `type` | 사고 비활성화 |1386| `disabled` | `type` | 사고 비활성화 |

1387 1387 

1388선택적 `display` 필드는 사고 텍스트가 `"summarized"` 또는 `"omitted"`로 반환되는지 제어합니다. Claude Opus 4.7 이상에서 API 기본값은 `"omitted"`이므로, [`ThinkingBlock`](#thinkingblock) 출력에서 사고 콘텐츠를 받으려면 `"summarized"`를 설정합니다. Claude Code는 Amazon Bedrock 및 Google Cloud의 Agent Platform과 같은 일부 공급자에는 설정한 `display` 값을 전달하지 않습니다. 이러한 공급자에서 Opus 4.7 이상은 `display`를 `"summarized"`로 설정하더라도 빈 `ThinkingBlock` 출력을 반환합니다.1388선택적 `display` 필드는 사고 텍스트가 `"summarized"` 또는 `"omitted"`로 반환되는지 제어합니다. Claude Opus 4.7 이상에서 API 기본값은 `"omitted"`이므로, [`ThinkingBlock`](#thinkingblock) 출력에서 사고 콘텐츠를 받으려면 `"summarized"`를 설정합니다. Amazon Bedrock 및 Google Cloud의 Agent Platform과 같은 공급자에서 Claude Code는 인식하는 이전 모델에 대해 `display`를 전달하지 않습니다. 해당 모델은 Opus 4.6, Sonnet 4.6, Haiku 4.5 및 그 이전 모델이며, 이들은 자체 기본값을 사용합니다.

1389 1389 

1390이들은 `TypedDict` 클래스이므로 런타임에 일반 dict입니다. dict 리터럴로 구성하거나 클래스를 생성자처럼 호출합니다. 둘 다 `dict`를 생성합니다. `config.budget_tokens`가 아닌 `config["budget_tokens"]`로 필드에 접근합니다:1390이들은 `TypedDict` 클래스이므로 런타임에 일반 dict입니다. dict 리터럴로 구성하거나 클래스를 생성자처럼 호출합니다. 둘 다 `dict`를 생성합니다. `config.budget_tokens`가 아닌 `config["budget_tokens"]`로 필드에 접근합니다:

1391 1391 


2517 2517 

2518### Hook 사용 예제2518### Hook 사용 예제

2519 2519 

2520이 예제는 두 개의 hooks를 등록합니다: `rm -rf /`와 같은 위험한 bash 명령을 차단하는 하나, 감사를 위해 모든 도구 사용을 기록하는 다른 하나. 보안 hook은 `matcher`를 통해 Bash 명령에서만 실행되고, 로깅 hook은 모든 도구에서 실행됩니다.2520이 예제는 두 개의 hooks를 등록합니다. 하나는 `rm -rf /`와 같은 위험한 Bash 명령을 차단하고, 다른 하나는 감사를 위해 모든 도구 사용을 로그에 기록합니다. 보안 hook은 [`Bash` matcher](https://code.claude.com/docs/ko/agent-sdk/hooks#matchers)를 통해 Bash 도구 호출에서 실행됩니다. 로깅 hook은 matcher가 없으므로 모든 도구 호출에서 실행됩니다.

2521 2521 

2522```python theme={null}2522```python theme={null}

2523import asyncio2523import asyncio


3668 3668 

3669### `SandboxIgnoreViolations`3669### `SandboxIgnoreViolations`

3670 3670 

3671특정 샌드박스 위반을 무시하기 위한 구성입니다.3671샌드박스의 위반 보고서에서 제외할 위반입니다. 각 키는 명령의 일부와 일치하거나 모든 명령을 나타내는 `*`이며, 각 값은 위반 줄에서 일치시킬 텍스트를 나열합니다. `{"*": ["/etc/hosts"]}`는 `/etc/hosts`를 언급하는 위반을 숨깁니다. 일치하는 접근은 여전히 차단됩니다. [`sandbox.ignoreViolations`](https://code.claude.com/docs/ko/settings-reference#sandbox-ignoreviolations)를 참조하십시오.

3672 3672 

3673```python theme={null}3673```python theme={null}

3674class SandboxIgnoreViolations(TypedDict, total=False):3674SandboxIgnoreViolations = dict[str, list[str]]

3675 file: list[str]

3676 network: list[str]

3677```3675```

3678 3676 

3679| 속성 | 타입 | 기본값 | 설명 |

3680| :- | :- | :- | :- |

3681| `file` | `list[str]` | `[]` | 위반을 무시할 파일 경로 패턴 |

3682| `network` | `list[str]` | `[]` | 위반을 무시할 네트워크 패턴 |

3683 

3684### 샌드박스되지 않은 명령을 위한 권한 폴백3677### 샌드박스되지 않은 명령을 위한 권한 폴백

3685 3678 

3686`allowUnsandboxedCommands`가 활성화되면, 모델은 도구 입력에서 `dangerouslyDisableSandbox: True`를 설정하여 샌드박스 외부에서 명령 실행을 요청할 수 있습니다. 이러한 요청은 기존 권한 시스템으로 폴백되므로, `can_use_tool` 핸들러가 호출되어 사용자 정의 인증 로직을 구현할 수 있습니다.3679`allowUnsandboxedCommands`가 활성화되면, 모델은 도구 입력에서 `dangerouslyDisableSandbox: True`를 설정하여 샌드박스 외부에서 명령 실행을 요청할 수 있습니다. 이러한 요청은 기존 권한 시스템으로 폴백되므로, `can_use_tool` 핸들러가 호출되어 사용자 정의 인증 로직을 구현할 수 있습니다.

Details

1931 1931 

1932같은 필드 쌍이 [`SDKSystemMessage`](#sdksystemmessage)와 [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse)에도 나타나므로, 첫 번째 턴 전에 빠른 모드 상태를 읽을 수 있습니다.1932같은 필드 쌍이 [`SDKSystemMessage`](#sdksystemmessage)와 [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse)에도 나타나므로, 첫 번째 턴 전에 빠른 모드 상태를 읽을 수 있습니다.

1933 1933 

1934`origin` 필드는 이 결과를 트리거한 사용자 메시지의 [`SDKMessageOrigin`](#sdkmessageorigin)을 전달합니다. `origin: { kind: "task-notification" }`을 담는 결과는 다음과 같습니다.1934`origin` 필드에는 사용자가 보낸 `origin`의 사본이 아니라, 이 결과를 트리거한 사용자 메시지에 Claude Code가 할당한 [`SDKMessageOrigin`](#sdkmessageorigin)이 담깁니다. `origin: { kind: "task-notification" }`을 포함하는 결과는 다음과 같습니다.

1935 1935 

1936* **합성 후속 턴**: SDK가 완료된 백그라운드 작업 등을 위해 합성 후속 턴을 주입하면, 그 결과로 생성되는 `SDKResultMessage`가 이 kind를 담습니다1936* **합성 후속 턴**: SDK가 완료된 백그라운드 작업 등을 위해 합성 후속 턴을 주입하면, 그 결과로 생성되는 `SDKResultMessage`가 이 kind를 담습니다

1937* **실행된 예약 작업 및 다른 세션의 메시지**: 트리거가 실행된 클라우드 예약 작업과 사용자의 다른 세션에서 온 서버 검증 메시지도 이 kind로 도착하며, 각각 [작업 알림 subkind](#task-notification-subkinds)에 설명된 `subkind`를 가집니다1937* **실행된 예약 작업 및 다른 세션의 메시지**: 트리거가 실행된 클라우드 예약 작업과 사용자의 다른 세션에서 온 서버 검증 메시지도 이 kind로 도착하며, 각각 [작업 알림 subkind](#task-notification-subkinds)에 설명된 `subkind`를 가집니다


1940 1940 

1941여러 백그라운드 작업 완료가 함께 대기열에 있을 때, Claude Code는 각각 한 턴씩이 아니라 한 턴에서 모두 응답할 수 있습니다. 각 완료는 여전히 이 origin을 가진 자체 결과를 생성합니다. Claude Code가 함께 응답하는 완료 중 마지막을 제외한 모든 완료는 순서대로 `num_turns: 0`인 빈 결과를 생성하며, 마지막 완료의 결과에 모두에 응답하는 턴이 담깁니다.1941여러 백그라운드 작업 완료가 함께 대기열에 있을 때, Claude Code는 각각 한 턴씩이 아니라 한 턴에서 모두 응답할 수 있습니다. 각 완료는 여전히 이 origin을 가진 자체 결과를 생성합니다. Claude Code가 함께 응답하는 완료 중 마지막을 제외한 모든 완료는 순서대로 `num_turns: 0`인 빈 결과를 생성하며, 마지막 완료의 결과에 모두에 응답하는 턴이 담깁니다.

1942 1942 

1943시작 오류처럼 사용자 턴 이전에 발생한 결과에는 이 필드가 없습니다.1943다음과 같이 Claude Code가 아무것도 할당하지 않은 경우 `origin`은 없습니다.

1944 

1945* `origin`과 [`isSynthetic`](#sdkusermessage)이 모두 없는 메시지로 시작한 턴

1946* 시작 오류처럼 사용자 턴 이전에 내보낸 결과

1944 1947 

1945`PreToolUse` 훅이 `permissionDecision: "defer"`를 반환하면, 결과는 `stop_reason: "tool_deferred"`를 가지며 `deferred_tool_use`에 보류 중인 도구의 `id`, `name`, `input`이 담깁니다. 이 필드를 읽어 자체 UI에 요청을 표시한 다음, 같은 `session_id`로 재개하여 계속하세요. 전체 흐름은 [나중을 위해 도구 호출 연기](https://code.claude.com/docs/ko/hooks.md#defer-a-tool-call-for-later)를 참조하세요.1948`PreToolUse` 훅이 `permissionDecision: "defer"`를 반환하면, 결과는 `stop_reason: "tool_deferred"`를 가지며 `deferred_tool_use`에 보류 중인 도구의 `id`, `name`, `input`이 담깁니다. 이 필드를 읽어 자체 UI에 요청을 표시한 다음, 같은 `session_id`로 재개하여 계속하세요. 전체 흐름은 [나중을 위해 도구 호출 연기](https://code.claude.com/docs/ko/hooks.md#defer-a-tool-call-for-later)를 참조하세요.

1946 1949 


2435 2438 

2436### `SDKMessageOrigin`2439### `SDKMessageOrigin`

2437 2440 

2438사용자 역할 메시지의 출처입니다. 이는 [`SDKUserMessage`](#sdkusermessage)에 `origin`으로 나타나며, 해당하는 [`SDKResultMessage`](#sdkresultmessage)로 전달되므로 특정 턴을 무엇이 트리거했는지 알 수 있습니다.2441사용자 역할 메시지의 출처입니다. [`SDKUserMessage`](#sdkusermessage)에 `origin`으로 나타납니다. 턴의 [`SDKResultMessage`](#sdkresultmessage)에는 Claude Code가 할당한 `origin`이 포함되므로, 해당 턴을 무엇이 트리거했는지 알 수 있습니다.

2439 2442 

2440```typescript theme={null}2443```typescript theme={null}

2441type SDKMessageOrigin =2444type SDKMessageOrigin =


2462 | { kind: "unclassified" };2465 | { kind: "unclassified" };

2463```2466```

2464 2467 

2468애플리케이션이 보내는 메시지에는 다음 종류의 `origin`을 설정할 수 있습니다.

2469 

2470* `{ kind: "human" }`: 사용자가 입력한 내용

2471* `{ kind: "task-notification", subkind: "scheduled-trigger" }`: [직접 선언하는 예약 실행](#declare-a-scheduled-run)

2472 

2473다른 종류는 Claude Code와 Anthropic 서버에 맡기십시오. 그러한 종류 중 하나를 설정하면 Claude는 기본적으로 해당 메시지를 사용자의 메시지로 읽습니다.

2474 

2475가져온 페이지나 다른 에이전트의 출력처럼 사용자가 작성하지 않은 텍스트를 보내려면, [`isSynthetic`](#sdkusermessage)을 `true`로 설정하고 `origin`은 설정하지 않은 별도의 메시지로 보내십시오. 또한 `/`로 시작하는 텍스트가 명령으로 실행되지 않도록 [`client_composed`](#sdkusermessage)도 `true`로 설정하십시오.

2476 

2465| `kind` | 의미 |2477| `kind` | 의미 |

2466| - | - |2478| - | - |

2467| `human` | 최종 사용자의 직접 입력입니다. 애플리케이션이 사용자가 입력한 내용을 사용자 메시지로 전달하는 경우, `origin`을 명시적으로 `{ kind: "human" }`으로 설정하세요. Claude Code는 `origin`이 없는 사용자 메시지를 귀속되지 않은 것으로 처리하며, [`ultracode` 워크플로 키워드](https://code.claude.com/docs/ko/workflows#ask-for-a-workflow-in-your-prompt)처럼 사람이 입력한 프롬프트를 요구하는 검사는 이를 받아들이지 않습니다. v2.1.210 이전에는 Claude Code가 사용자 메시지에 `origin`이 없으면 사람의 입력으로 처리했습니다. |2479| `human` | 최종 사용자의 직접 입력입니다. 애플리케이션이 사용자가 입력한 내용을 사용자 메시지로 전달하는 경우 해당 `origin`을 `{ kind: "human" }`으로 설정하십시오. 이 `origin`이 없어도 Claude는 메시지를 사용자의 메시지로 읽지만, [`ultracode` 워크플로 키워드](https://code.claude.com/docs/ko/workflows#ask-for-a-workflow-in-your-prompt)처럼 사람이 입력한 프롬프트를 요구하는 검사는 해당 메시지를 받아들이지 않습니다. |

2468| `channel` | [채널](https://code.claude.com/docs/ko/channels.md)에서 도착한 메시지입니다. `server`는 출처 MCP 서버 이름입니다. |2480| `channel` | [채널](https://code.claude.com/docs/ko/channels.md)에서 도착한 메시지입니다. `server`는 출처 MCP 서버 이름입니다. |

2469| `peer` | 다른 에이전트의 메시지입니다. 프로세스 내 [팀원](https://code.claude.com/docs/ko/agent-teams.md) 또는 사용자의 다른 Claude Code 세션인 [세션 간 피어](https://code.claude.com/docs/ko/cross-session-messaging.md)가 해당합니다. 필드별 의미와 신뢰 모델은 [피어 origin 필드](#peer-origin-fields)를 참조하세요. |2481| `peer` | 다른 Claude Code 에이전트의 메시지입니다. 프로세스 내 [팀원](https://code.claude.com/docs/ko/agent-teams.md) 또는 사용자의 다른 Claude Code 세션인 [교차 세션 피어](https://code.claude.com/docs/ko/cross-session-messaging.md)가 이에 해당합니다. 세션 간에 이러한 메시지를 중계하는 [데스크톱 앱](https://code.claude.com/docs/ko/desktop.md#work-across-sessions)은 [`fromMode`](#peer-origin-fields)와 함께 이 종류를 선언합니다. 자체 애플리케이션에서 다른 에이전트의 출력을 중계하려면 대신 `isSynthetic`과 `client_composed`를 설정하십시오. 필드별 의미와 신뢰 모델은 [피어 출처 필드](#peer-origin-fields)를 참조하십시오. |

2470| `task-notification` | 완료된 백그라운드 작업처럼 새 사용자 프롬프트 없이 도착하는 전달을 위해 주입된 합성 턴입니다. 해당 분기는 [`SDKTaskNotificationMessage`](#sdktasknotificationmessage)를 참조하세요. 애플리케이션이 [예약 실행으로 선언](#declare-a-scheduled-run)한 프롬프트도 이 kind를 가집니다. 선택적 `subkind`는 알림을 발생시킨 원인을 표시합니다. [Task-notification 하위 유형](#task-notification-subkinds)을 참조하세요. |2482| `task-notification` | 완료된 백그라운드 작업처럼 새 사용자 프롬프트 없이 도착하는 전달을 위해 주입된 합성 턴입니다. 해당 분기는 [`SDKTaskNotificationMessage`](#sdktasknotificationmessage)를 참조하세요. 애플리케이션이 [예약 실행으로 선언](#declare-a-scheduled-run)한 프롬프트도 이 kind를 가집니다. 선택적 `subkind`는 알림을 발생시킨 원인을 표시합니다. [Task-notification 하위 유형](#task-notification-subkinds)을 참조하세요. |

2471| `coordinator` | [에이전트 팀](https://code.claude.com/docs/ko/agent-teams.md)의 팀 코디네이터가 보낸 메시지입니다. |2483| `coordinator` | [에이전트 팀](https://code.claude.com/docs/ko/agent-teams.md)의 팀 코디네이터가 보낸 메시지입니다. |

2472| `auto-continuation` | 후속 프롬프트를 트리거하는 명령 결과처럼 새 사용자 입력 없이 세션이 계속될 때 주입되는 합성 턴입니다. |2484| `auto-continuation` | 후속 프롬프트를 트리거하는 명령 결과처럼 새 사용자 입력 없이 세션이 계속될 때 주입되는 합성 턴입니다. |

2473| `unclassified` | 출처를 판단할 수 없는 주입 턴입니다. Claude Code v2.1.223 이상이 필요합니다. Claude Code가 `isSynthetic: true`인 [`SDKUserMessage`](#sdkusermessage)를 받았는데 다른 `kind`로 분류할 수 없으면, 메시지가 도착할 때 이 kind를 설정하고 해당 턴을 사람의 입력으로 처리하는 대신 사용자가 아닌 출처로 모델에 제시합니다. 애플리케이션에서는 이 값을 설정하지 않아야 합니다. |2485| `unclassified` | `isSynthetic: true`로 보내는 [`SDKUserMessage`](#sdkusermessage)처럼 사용자로부터 오지 않은 것으로 표시된 메시지입니다. Claude Code v2.1.223 이상이 필요합니다. |

2474 2486 

2475### Task-notification 하위 유형2487### Task-notification 하위 유형

2476 2488 


2494`peer` origin은 메시지를 보낸 에이전트를 식별합니다. `SendMessage`로 `main`에 메시지를 보내는 프로세스 내 [팀원](https://code.claude.com/docs/ko/agent-teams.md), 또는 사용자의 다른 Claude Code 세션인 [세션 간 피어](https://code.claude.com/docs/ko/cross-session-messaging.md)가 이에 해당합니다. 세션 간 피어는 macOS와 Linux에서 Claude Code v2.1.224 이상이 필요합니다. 네이티브 Windows 요구 사항은 [세션 간 메시징 가용성](https://code.claude.com/docs/ko/cross-session-messaging.md#availability)을 참조하세요. 세션 간 피어는 같은 머신에서 실행될 수도 있고, 메시지가 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)을 통해 도착하는 경우 [사용자의 다른 머신](https://code.claude.com/docs/ko/cross-session-messaging.md#message-sessions-on-other-machines)에서 실행될 수도 있습니다.2506`peer` origin은 메시지를 보낸 에이전트를 식별합니다. `SendMessage`로 `main`에 메시지를 보내는 프로세스 내 [팀원](https://code.claude.com/docs/ko/agent-teams.md), 또는 사용자의 다른 Claude Code 세션인 [세션 간 피어](https://code.claude.com/docs/ko/cross-session-messaging.md)가 이에 해당합니다. 세션 간 피어는 macOS와 Linux에서 Claude Code v2.1.224 이상이 필요합니다. 네이티브 Windows 요구 사항은 [세션 간 메시징 가용성](https://code.claude.com/docs/ko/cross-session-messaging.md#availability)을 참조하세요. 세션 간 피어는 같은 머신에서 실행될 수도 있고, 메시지가 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)을 통해 도착하는 경우 [사용자의 다른 머신](https://code.claude.com/docs/ko/cross-session-messaging.md#message-sessions-on-other-machines)에서 실행될 수도 있습니다.

2495 2507 

2496* `from`: 팀원의 이름 또는 cross-session peer의 발신자 주소입니다. [단방향 cross-machine 메시지](https://code.claude.com/docs/ko/cross-session-messaging.md#message-sessions-on-other-machines)의 경우 발신자에게 회신 주소가 없으므로 `from`은 `"unknown"`입니다. 이 값은 발신자가 작성한 것이며, 검증된 신원은 `verifiedPeerPid`입니다.2508* `from`: 팀원의 이름 또는 cross-session peer의 발신자 주소입니다. [단방향 cross-machine 메시지](https://code.claude.com/docs/ko/cross-session-messaging.md#message-sessions-on-other-machines)의 경우 발신자에게 회신 주소가 없으므로 `from`은 `"unknown"`입니다. 이 값은 발신자가 작성한 것이며, 검증된 신원은 `verifiedPeerPid`입니다.

2497* `fromMode`: 발신 세션의 권한 클래스(`bypass` 또는 `prompting`)로, [데스크톱 앱](https://code.claude.com/docs/ko/desktop.md#work-across-sessions)처럼 사용자의 세션 간에 peer 메시지를 중계하는 호스트가 선언합니다. Claude Code는 [인바운드 제어](https://code.claude.com/docs/ko/cross-session-messaging.md#control-inbound-messages)를 적용할 때 수신 세션에서 이 값을 읽습니다. Agent SDK v0.3.234 이상이 필요합니다.2509* `fromMode`: 보내는 세션의 권한 등급으로, `bypass` 또는 `prompting`입니다. Claude Code는 수신 세션에서 [인바운드 제어](https://code.claude.com/docs/ko/cross-session-messaging.md#control-inbound-messages)를 적용할 때 이 값을 읽습니다. Agent SDK v0.3.234 이상이 필요합니다.

2498* `senderTaskId`: 팀원의 작업 ID입니다. cross-session peer의 경우에는 존재하지 않습니다.2510* `senderTaskId`: 팀원의 작업 ID입니다. cross-session peer의 경우에는 존재하지 않습니다.

2499* `name`: Claude Code가 정규화한 발신자의 표시 이름입니다. Claude Code는 Unicode 제어, 서식, 서로게이트, 줄 또는 단락 구분자 코드 포인트를 제거한 다음, 결과의 앞뒤 공백을 제거하고 말줄임표를 붙여 최대 64개 코드 포인트로 제한합니다. Claude Code v2.1.205 이상이 필요합니다.2511* `name`: Claude Code가 정규화한 발신자의 표시 이름입니다. Claude Code는 Unicode 제어, 서식, 서로게이트, 줄 또는 단락 구분자 코드 포인트를 제거한 다음, 결과의 앞뒤 공백을 제거하고 말줄임표를 붙여 최대 64개 코드 포인트로 제한합니다. Claude Code v2.1.205 이상이 필요합니다.

2500* `body`: 피어 엔벨로프를 제거한 디코딩된 메시지 본문으로, 모델이 보는 내용과 바이트 단위로 정확히 일치합니다. 단일 팀원 메시지에는 존재하며, 여러 메시지가 병합된 경우에는 존재하지 않습니다. 세션 간 피어의 경우 턴이 Claude Code가 구성한 정확히 하나의 피어 엔벨로프일 때만 존재합니다. 메시지 텍스트를 다시 파싱하는 대신 `name`과 `body`를 렌더링하세요. v2.1.299 이전에는 병합된 메시지가 첫 번째 메시지의 `body`를 유지했습니다. Claude Code v2.1.205 이상이 필요합니다.2512* `body`: 피어 엔벨로프를 제거한 디코딩된 메시지 본문으로, 모델이 보는 내용과 바이트 단위로 정확히 일치합니다. 단일 팀원 메시지에는 존재하며, 여러 메시지가 병합된 경우에는 존재하지 않습니다. 세션 간 피어의 경우 턴이 Claude Code가 구성한 정확히 하나의 피어 엔벨로프일 때만 존재합니다. 메시지 텍스트를 다시 파싱하는 대신 `name`과 `body`를 렌더링하세요. v2.1.299 이전에는 병합된 메시지가 첫 번째 메시지의 `body`를 유지했습니다. Claude Code v2.1.205 이상이 필요합니다.


5417 | { type: "disabled" }; // No extended thinking5429 | { type: "disabled" }; // No extended thinking

5418```5430```

5419 5431 

5420선택적 `display` 필드는 사고 텍스트를 `"summarized"`로 반환할지 `"omitted"`로 반환할지 제어합니다. Claude Opus 4.7 이상에서 API 기본값은 `"omitted"`이므로, `thinking` 블록에서 사고 내용을 받으려면 `"summarized"`로 설정합니다. Claude Code는 Amazon Bedrock이나 Google Cloud의 Agent Platform 같은 일부 제공자에는 `display` 값을 전달하지 않습니다. 이러한 제공자에서는 `display`를 `"summarized"`로 설정해도 Opus 4.7 이상이 빈 `thinking` 블록을 반환합니다.5432선택적 `display` 필드는 사고 텍스트를 `"summarized"`로 반환할지 `"omitted"`로 반환할지 제어합니다. Claude Opus 4.7 이상에서 API 기본값은 `"omitted"`이므로, `thinking` 블록에서 사고 내용을 받으려면 `"summarized"`로 설정합니다. Amazon Bedrock이나 Google Cloud의 Agent Platform 같은 제공자에서 Claude Code는 자신이 인식하는 이전 모델에 대해 `display`를 전달하지 않습니다. 해당 모델은 Opus 4.6, Sonnet 4.6, Haiku 4.5 및 그 이전 모델이며, 이 모델들은 자체 기본값을 사용합니다.

5421 5433 

5422### `SpawnedProcess`5434### `SpawnedProcess`

5423 5435 


6038| `allowUnsandboxedCommands` | `boolean` | `true` | 모델이 샌드박스 외부에서 명령을 실행하도록 요청하도록 허용합니다. `true`일 때 모델은 도구 입력에서 `dangerouslyDisableSandbox`를 설정할 수 있으며, 이는 [권한 시스템](#permissions-fallback-for-unsandboxed-commands)으로 폴백됩니다 |6050| `allowUnsandboxedCommands` | `boolean` | `true` | 모델이 샌드박스 외부에서 명령을 실행하도록 요청하도록 허용합니다. `true`일 때 모델은 도구 입력에서 `dangerouslyDisableSandbox`를 설정할 수 있으며, 이는 [권한 시스템](#permissions-fallback-for-unsandboxed-commands)으로 폴백됩니다 |

6039| `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `undefined` | 네트워크 특정 샌드박스 구성 |6051| `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `undefined` | 네트워크 특정 샌드박스 구성 |

6040| `filesystem` | [`SandboxFilesystemConfig`](#sandboxfilesystemconfig) | `undefined` | 읽기/쓰기 제한을 위한 파일 시스템 특정 샌드박스 구성 |6052| `filesystem` | [`SandboxFilesystemConfig`](#sandboxfilesystemconfig) | `undefined` | 읽기/쓰기 제한을 위한 파일 시스템 특정 샌드박스 구성 |

6041| `ignoreViolations` | `Record<string, string[]>` | `undefined` | 명령 부분 문자열 또는 모든 명령에 대해 `*`를 무시할 위반 텍스트의 부분 문자열에 매핑합니다 (예: `{ "*": ['/etc/hosts'] }`). [`sandbox.ignoreViolations`](https://code.claude.com/docs/ko/settings-reference#sandbox-ignoreviolations)을 참조합니다 |6053| `ignoreViolations` | `Record<string, string[]>` | `undefined` | 샌드박스의 위반 보고서에서 제외할 위반입니다. 각 키는 명령의 일부와 일치하거나 모든 명령에 대해 `*`를 사용하며, 각 값은 위반 줄에서 일치시킬 텍스트를 나열합니다. `{ "*": ['/etc/hosts'] }`는 `/etc/hosts`를 언급하는 위반을 숨깁니다. [`sandbox.ignoreViolations`](https://code.claude.com/docs/ko/settings-reference#sandbox-ignoreviolations)를 참조합니다 |

6042| `enableWeakerNestedSandbox` | `boolean` | `false` | 호환성을 위해 더 약한 중첩 샌드박스 활성화 |6054| `enableWeakerNestedSandbox` | `boolean` | `false` | 호환성을 위해 더 약한 중첩 샌드박스 활성화 |

6043| `allowNestedUserNamespaces` | `boolean` | `false` | Linux 및 WSL2에서 샌드박스된 명령이 사용자 네임스페이스를 생성할 수 있도록 합니다. `true`로 설정하기 전에 이 설정이 필요한 도구와 해제되는 보안 경계를 다루는 [`sandbox.allowNestedUserNamespaces`](https://code.claude.com/docs/ko/settings-reference#sandbox-allownestedusernamespaces)를 읽어 보십시오. Claude Code v2.1.305 이상이 필요합니다 |6055| `allowNestedUserNamespaces` | `boolean` | `false` | Linux 및 WSL2에서 샌드박스된 명령이 사용자 네임스페이스를 생성할 수 있도록 합니다. `true`로 설정하기 전에 이 설정이 필요한 도구와 해제되는 보안 경계를 다루는 [`sandbox.allowNestedUserNamespaces`](https://code.claude.com/docs/ko/settings-reference#sandbox-allownestedusernamespaces)를 읽어 보십시오. Claude Code v2.1.305 이상이 필요합니다 |

6044| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | 샌드박스 환경을 위한 사용자 정의 ripgrep 바이너리 구성 |6056| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | 샌드박스 환경을 위한 사용자 정의 ripgrep 바이너리 구성 |

agent-teams.md +1 −1

Details

296>296>

297> 편집하기 전에 묻도록 하려면, 에이전트 패널의 `main` 행에서 Enter를 누르고 리더도 Manual 모드로 전환합니다. 그러면 리더도 묻게 되며, Manual 모드인 다른 모든 팀원도 마찬가지입니다.297> 편집하기 전에 묻도록 하려면, 에이전트 패널의 `main` 행에서 Enter를 누르고 리더도 Manual 모드로 전환합니다. 그러면 리더도 묻게 되며, Manual 모드인 다른 모든 팀원도 마찬가지입니다.

298 298 

299생성 시 팀원별 권한 모드를 설정할 수 없습니다. 새 팀원은 `--dangerously-skip-permissions`가 켜는 `bypassPermissions` 모드를 포함하여 리더의 모드로 시작합니다. 리더가 [`dontAsk` 모드](https://code.claude.com/docs/ko/permission-modes#allow-only-pre-approved-tools-with-dontask-mode)에 있으면, 팀원은 대신 [Manual 모드](https://code.claude.com/docs/ko/permission-modes.md#available-modes)로 시작합니다.299생성 시 팀원별 권한 모드를 설정할 수 없습니다. 새 팀원은 `--dangerously-skip-permissions`가 켜는 `bypassPermissions` 모드를 포함하여 리더의 모드로 시작합니다. 리더가 [`dontAsk` 모드](https://code.claude.com/docs/ko/permission-modes#allow-only-pre-approved-tools-with-dontask-mode)에 있으면, 팀원은 대신 [Manual 모드](https://code.claude.com/docs/ko/permission-modes.md#available-modes)로 시작합니다. 리더가 Manual 또는 `dontAsk` 모드에 있을 때의 분할 창 팀원의 경우, 이 동작에는 Claude Code v2.1.317 이상이 필요합니다.

300 300 

301[프로세스 내](#choose-a-display-mode) 팀원은 리더의 실시간 허용 및 거부 규칙에 따라 실행되므로, [`--disallowedTools`](https://code.claude.com/docs/ko/cli-reference#cli-flags), `--tools`, `--allowedTools`가 모두 적용됩니다. 분할 창 팀원의 경우 각 플래그를 확인합니다:301[프로세스 내](#choose-a-display-mode) 팀원은 리더의 실시간 허용 및 거부 규칙에 따라 실행되므로, [`--disallowedTools`](https://code.claude.com/docs/ko/cli-reference#cli-flags), `--tools`, `--allowedTools`가 모두 적용됩니다. 분할 창 팀원의 경우 각 플래그를 확인합니다:

302 302 

artifacts.md +1 −1

Details

141 141 

142* **네트워크 액세스가 없는 클라우드 세션**: [클라우드 환경](https://code.claude.com/docs/ko/cloud-environments.md#access-levels)의 경우 **None** 수준에 해당합니다. [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)에서는 분류기가 대신 승인할 수 있으며, [Cowork](https://claude.com/product/cowork) 세션에서는 사용자만 승인할 수 있습니다.142* **네트워크 액세스가 없는 클라우드 세션**: [클라우드 환경](https://code.claude.com/docs/ko/cloud-environments.md#access-levels)의 경우 **None** 수준에 해당합니다. [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)에서는 분류기가 대신 승인할 수 있으며, [Cowork](https://claude.com/product/cowork) 세션에서는 사용자만 승인할 수 있습니다.

143* **다른 조직의 공개 아티팩트**: 자동 모드에서도 Claude Code는 먼저 사용자에게 묻습니다. `bypassPermissions` 모드처럼 Claude Code가 사용자에게 물을 수 없는 경우 Claude는 아티팩트를 읽을 수 없습니다. Claude는 [기능 플래그 가져오기](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching)가 켜져 있는 동안에만 이러한 아티팩트를 읽을 수 있습니다.143* **다른 조직의 공개 아티팩트**: 자동 모드에서도 Claude Code는 먼저 사용자에게 묻습니다. `bypassPermissions` 모드처럼 Claude Code가 사용자에게 물을 수 없는 경우 Claude는 아티팩트를 읽을 수 없습니다. Claude는 [기능 플래그 가져오기](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching)가 켜져 있는 동안에만 이러한 아티팩트를 읽을 수 있습니다.

144* **확인되지 않은 소유자 또는 네트워크 설정**: Claude Code가 아티팩트를 만든 사람을 확인할 수 없거나 클라우드 세션의 네트워크 설정을 확인할 수 없는 경우 사용자에게 묻으며, 사용자의 승인은 해당 요청 한 건에만 적용됩니다.144* **확인되지 않은 소유자 또는 네트워크 설정**: Claude Code가 아티팩트를 만든 사람을 확인할 수 없거나 클라우드 세션의 네트워크 설정을 확인할 수 없는 경우 사용자에게 묻고, 사용자의 승인은 해당 요청 한 건에만 적용됩니다. [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)에서는 분류기가 사용자에게 묻는 대신 읽기를 승인하거나 차단할 수 있습니다.

145* **플랜 모드**: [플랜 모드](https://code.claude.com/docs/ko/permission-modes.md#analyze-before-you-edit-with-plan-mode)에서는 Claude Code가 Artifact 도구가 조직 내 다른 사람이 만든 아티팩트를 읽기 전에 사용자에게 묻습니다.145* **플랜 모드**: [플랜 모드](https://code.claude.com/docs/ko/permission-modes.md#analyze-before-you-edit-with-plan-mode)에서는 Claude Code가 Artifact 도구가 조직 내 다른 사람이 만든 아티팩트를 읽기 전에 사용자에게 묻습니다.

146 146 

147Claude가 WebFetch로 아티팩트를 읽을 때는 WebFetch 자체의 [프롬프트 규칙](https://code.claude.com/docs/ko/tools-reference.md#webfetch-tool-behavior)도 계속 적용됩니다.147Claude가 WebFetch로 아티팩트를 읽을 때는 WebFetch 자체의 [프롬프트 규칙](https://code.claude.com/docs/ko/tools-reference.md#webfetch-tool-behavior)도 계속 적용됩니다.

Details

29 29 

30## 세션을 적격으로 만들기30## 세션을 적격으로 만들기

31 31 

32게이트웨이가 원인인 경우, 회사의 관리자 또는 게이트웨이 제공자에게 요청과 응답을 변경하지 않고 통과시켜 달라고 요청하십시오. 이는 게이트웨이가 인식하지 못하는 `safeguards` 요청 필드와 같은 요청 헤더와 본문 필드를 그대로 전달하고, `safeguard_results` 필드와 같은 키를 삭제하지 않고 도구 사용 ID를 다시 작성하지 않고 응답과 스트리밍 이벤트를 반환하는 것을 의미합니다. [게이트웨이 호환성 가이드](https://code.claude.com/docs/ko/llm-gateway-protocol.md#feature-pass-through)에서 설명하는 대로입니다. 이러한 방식으로 트래픽을 통과시키는 게이트웨이는 이 기능 및 향후 기능과 계속 작동합니다. 새 세션은 서버의 검사를 다시 사용합니다.32게이트웨이로 인해 자동 모드의 서버 측 검사가 세션에 도달하지 못하는데 해당 게이트웨이를 직접 운영하지 않는 경우, 아래 요구 사항을 회사의 관리자 또는 게이트웨이 제공자에게 전달하십시오. [업스트림이 게이트웨이가 수신하는 형식을 허용하는 경우](https://code.claude.com/docs/ko/llm-gateway-protocol.md#format-mismatch-with-the-upstream), Claude Code는 [게이트웨이 호환성 가이드](https://code.claude.com/docs/ko/llm-gateway-protocol.md#feature-pass-through)에서 설명하는 대로 게이트웨이가 요청과 응답을 변경하지 않고 통과시킬 것으로 기대합니다:

33 

34* **요청**: 검사를 통과시키려면 게이트웨이는 `anthropic-beta` 헤더와 `safeguards` 본문 필드를 모두 변경하지 않고 전달해야 합니다. [이 둘은 한 쌍으로 함께 전달되기](https://code.claude.com/docs/ko/llm-gateway-protocol.md#beta-header-and-body-field-pairs) 때문입니다. [Amazon Bedrock InvokeModel 형식](https://code.claude.com/docs/ko/llm-gateway-protocol.md#api-formats)에서는 헤더 대신 `anthropic_beta` 본문 필드를 전달합니다.

35* **응답**: 게이트웨이는 필드를 삭제하거나 도구 사용 ID를 다시 작성하지 않고 응답과 스트리밍 이벤트를 반환합니다. 검사 결과를 통과시키려면 `safeguard_results` 필드를 유지합니다.

36 

37이러한 방식으로 트래픽을 통과시키는 게이트웨이는 이 기능 및 향후 기능과 계속 작동합니다. 그러면 새 세션은 서버의 검사를 다시 사용합니다.

33 38 

34게이트웨이가 서버의 검사를 제공할 수 없다는 것을 이미 알고 있다면, 세션을 시작하기 전에 셸 또는 [`env` 설정 키](https://code.claude.com/docs/ko/settings-reference#env)에서 `CLAUDE_CODE_AUTO_MODE_SERVER`를 `0`으로 설정하여 Claude Code에 그곳에서 검사를 요청하지 않도록 지시하십시오:39게이트웨이가 서버의 검사를 제공할 수 없다는 것을 이미 알고 있다면, 세션을 시작하기 전에 셸 또는 [`env` 설정 키](https://code.claude.com/docs/ko/settings-reference#env)에서 `CLAUDE_CODE_AUTO_MODE_SERVER`를 `0`으로 설정하여 Claude Code에 그곳에서 검사를 요청하지 않도록 지시하십시오:

35 40 

channels.md +1 −1

Details

354| 기능 | 수행하는 작업 | 좋은 점 |354| 기능 | 수행하는 작업 | 좋은 점 |

355| - | - | - |355| - | - | - |

356| [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md) | GitHub에서 복제된 새로운 클라우드 샌드박스에서 작업 실행 | 나중에 확인하는 자체 포함된 비동기 작업 위임 |356| [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md) | GitHub에서 복제된 새로운 클라우드 샌드박스에서 작업 실행 | 나중에 확인하는 자체 포함된 비동기 작업 위임 |

357| [Slack의 Claude](https://code.claude.com/docs/ko/slack.md) | 채널 또는 스레드의 `@Claude` 언급에서 클라우드 세션 생성 | 팀 대화 컨텍스트에서 직접 작업 시작 |357| [Slack의 Claude](https://code.claude.com/docs/ko/slack.md) | 채널 또는 스레드의 `@Claude` 언급에서 클라우드 세션 생성 | 팀 대화에서 직접 작업 시작 |

358| 표준 [MCP 서버](https://code.claude.com/docs/ko/mcp.md) | Claude는 작업 중에 쿼리합니다. 세션으로 푸시되는 것은 없습니다. | Claude에게 시스템을 읽거나 쿼리하기 위한 온디맨드 액세스 제공 |358| 표준 [MCP 서버](https://code.claude.com/docs/ko/mcp.md) | Claude는 작업 중에 쿼리합니다. 세션으로 푸시되는 것은 없습니다. | Claude에게 시스템을 읽거나 쿼리하기 위한 온디맨드 액세스 제공 |

359| [Remote Control](https://code.claude.com/docs/ko/remote-control.md) | claude.ai 또는 Claude 모바일 앱에서 로컬 세션을 운전합니다. | 책상에서 멀리 있을 때 진행 중인 세션 조종 |359| [Remote Control](https://code.claude.com/docs/ko/remote-control.md) | claude.ai 또는 Claude 모바일 앱에서 로컬 세션을 운전합니다. | 책상에서 멀리 있을 때 진행 중인 세션 조종 |

360 360 

Details

350 350 

351### Claude Desktop 세션에 정책 전달351### Claude Desktop 세션에 정책 전달

352 352 

353Claude Desktop은 Cowork 및 Code 탭과, 활성화한 경우 Chat 탭을 내장된 Claude Code 세션에서 실행하며, 해당 세션의 모델 요청을 게이트웨이를 통해 전송합니다. Claude Desktop은 게이트웨이가 `/user/bootstrap`에서 제공하는 구성을 바탕으로 정책을 만들어 각 세션에 전달합니다. 이 정책에는 일치하는 정책의 `cli` 또는 `code` 블록에서 파생된 모델 허용 목록, 비활성화된 도구, 이그레스 허용 목록과 함께 [`desktop` 오버레이](https://code.claude.com/docs/ko/claude-apps-gateway-config#claude-desktop-overlay)가 포함됩니다.353Claude Desktop은 내장된 Claude Code 세션에서 탭을 실행하며, 해당 세션의 모델 요청을 게이트웨이를 통해 전송합니다. Claude Desktop은 게이트웨이가 `/user/bootstrap`에서 제공하는 구성을 바탕으로 정책을 만들어 각 세션에 전달합니다. 이 정책에는 일치하는 정책의 `cli` 또는 `code` 블록에서 파생된 모델 허용 목록, 비활성화된 도구, 이그레스 허용 목록과 함께 [`desktop` 오버레이](https://code.claude.com/docs/ko/claude-apps-gateway-config#claude-desktop-overlay)가 포함됩니다.

354 354 

355훅, `env`, `Bash(npm *)` 같은 범위 지정 권한 규칙 등 블록의 다른 키는 `/login`을 통해 로그인하는 클라이언트에 도달합니다. `code` 아래에 있는 경우, [Code 탭 조건](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#apply-code-settings-in-the-code-tab)이 충족되면 Code 탭의 세션에도 도달합니다. Cowork 또는 Chat 세션에는 도달하지 않습니다. Claude Desktop은 게이트웨이 URL을 자체 관리형 구성에서 읽고, [게이트웨이 URL 설정](#set-the-gateway-url)의 `forceLoginMethod` 및 `forceLoginGatewayUrl` 키와는 별개인 자체 흐름으로 로그인합니다.355훅, `env`, `Bash(npm *)` 같은 범위 지정 권한 규칙 등 블록의 다른 키는 `/login`을 통해 로그인하는 클라이언트에 도달합니다. `code` 아래에 있는 경우, [Code 탭 조건](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#apply-code-settings-in-the-code-tab)이 충족되면 Code 탭의 세션에도 도달합니다. Cowork 또는 Chat 세션에는 도달하지 않습니다. Claude Desktop은 게이트웨이 URL을 자체 관리형 구성에서 읽고, [게이트웨이 URL 설정](#set-the-gateway-url)의 `forceLoginMethod` 및 `forceLoginGatewayUrl` 키와는 별개인 자체 흐름으로 로그인합니다.

356 356 


476 476 

477### Claude Desktop 연결477### Claude Desktop 연결

478 478 

479[Claude Desktop](https://code.claude.com/docs/ko/desktop.md)은 다른 MDM 키를 통해 동일한 게이트웨이에 연결합니다. Claude Desktop의 [관리형 구성](https://claude.com/docs/third-party/claude-desktop/configuration)에서 `bootstrapUrl`을 `<listen.public_url>/user/bootstrap`으로 설정하고, `desktop` 키로 사용자의 정책을 옵트인하세요. [Claude Desktop 오버레이](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#claude-desktop-overlay)에서 두 부분을 모두 다룹니다. 게이트웨이 서버에 Claude Code v2.1.203 이상이 필요합니다.479[Claude Desktop](https://code.claude.com/docs/ko/desktop.md)은 다른 MDM 키를 통해 동일한 게이트웨이에 연결합니다. Claude Desktop의 [관리형 구성](https://claude.com/docs/third-party/claude-desktop/configuration)에서 `bootstrapUrl`을 `<listen.public_url>/user/bootstrap`으로 설정하고, `desktop` 키로 사용자의 정책을 옵트인하세요. [Claude Desktop 오버레이](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#claude-desktop-overlay)에서 두 부분을 모두 다룹니다. 게이트웨이 서버에 Claude Code v2.1.203 이상이 필요합니다. 연결되면 Claude Desktop은 활성화된 모든 탭의 모델 요청을 게이트웨이를 통해 보냅니다.

480 480 

481Claude Desktop은 동일한 브라우저 SSO 단계로 게이트웨이의 ID 제공자를 통해 개발자를 로그인시킨 다음, Anthropic 대신 게이트웨이에서 구성을 가져옵니다. 모델 액세스와 정책은 CLI와 동일한 그룹별 규칙을 따릅니다. CLI와 Claude Desktop을 모두 사용하는 개발자는 각각 별도로 로그인하며, 게이트웨이 세션은 둘 사이에 공유되지 않습니다.481Claude Desktop은 동일한 브라우저 SSO 단계로 게이트웨이의 ID 제공자를 통해 개발자를 로그인시킨 다음, Anthropic 대신 게이트웨이에서 구성을 가져옵니다. 모델 액세스와 정책은 CLI와 동일한 그룹별 규칙을 따릅니다. CLI와 Claude Desktop을 모두 사용하는 개발자는 각각 별도로 로그인하며, 게이트웨이 세션은 둘 사이에 공유되지 않습니다.

482 482 

483연결되면 Claude Desktop은 활성화된 모든 탭의 모델 요청을 게이트웨이를 통해 보냅니다. 기본적으로 Cowork 및 Code 탭이 표시됩니다. Chat도 사용할 수 있게 하려면 Claude Code v2.1.227 이상을 실행하는 게이트웨이에서 정책의 [`desktop` 블록](https://code.claude.com/docs/ko/claude-apps-gateway-config#claude-desktop-overlay)에 `chatTabEnabled`를 `true`로 설정하세요. 그러면 Cowork가 켜져 있을 때 Claude Desktop은 Chat과 Cowork를 하나의 탭에 함께 표시합니다.

484 

485### CI 파이프라인 및 원격 머신483### CI 파이프라인 및 원격 머신

486 484 

487무인 파이프라인을 위한 서비스 토큰 흐름은 없습니다. 게이트웨이 로그인은 항상 브라우저 디바이스 흐름을 실행하므로, 로그인을 승인할 개발자가 없는 CI 작업은 인증할 수 없습니다. 이러한 작업은 제공자에 직접 연결하도록 구성하세요. `forceLoginMethod`와 `forceLoginGatewayUrl`은 개발자 머신에 배포하고 CI 러너에는 배포하지 마세요. 관리형 설정에서 이 키를 설정한 머신에서는 `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` 또는 `apiKeyHelper`로 인증하는 세션이 [시작 시 종료됩니다](https://code.claude.com/docs/ko/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in).485무인 파이프라인을 위한 서비스 토큰 흐름은 없습니다. 게이트웨이 로그인은 항상 브라우저 디바이스 흐름을 실행하므로, 로그인을 승인할 개발자가 없는 CI 작업은 인증할 수 없습니다. 이러한 작업은 제공자에 직접 연결하도록 구성하세요. `forceLoginMethod`와 `forceLoginGatewayUrl`은 개발자 머신에 배포하고 CI 러너에는 배포하지 마세요. 관리형 설정에서 이 키를 설정한 머신에서는 `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` 또는 `apiKeyHelper`로 인증하는 세션이 [시작 시 종료됩니다](https://code.claude.com/docs/ko/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in).


523| 추론 전달 (Amazon Bedrock, Claude Platform on AWS, Google Cloud의 Agent Platform, Microsoft Foundry, Anthropic) | 사용 가능 | 업스트림별 모델 변환 및 장애 조치 포함. Amazon Bedrock 업스트림은 `bedrock-runtime` 엔드포인트 및 AWS 기본 자격 증명 체인을 사용합니다. [Amazon Bedrock Mantle 업스트림](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#amazon-bedrock-mantle-endpoint)은 게이트웨이 서버에서 Claude Code v2.1.283 이상이 필요하며, [Claude Platform on AWS 업스트림](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#claude-platform-on-aws)은 v2.1.198 이상이 필요합니다. |521| 추론 전달 (Amazon Bedrock, Claude Platform on AWS, Google Cloud의 Agent Platform, Microsoft Foundry, Anthropic) | 사용 가능 | 업스트림별 모델 변환 및 장애 조치 포함. Amazon Bedrock 업스트림은 `bedrock-runtime` 엔드포인트 및 AWS 기본 자격 증명 체인을 사용합니다. [Amazon Bedrock Mantle 업스트림](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#amazon-bedrock-mantle-endpoint)은 게이트웨이 서버에서 Claude Code v2.1.283 이상이 필요하며, [Claude Platform on AWS 업스트림](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#claude-platform-on-aws)은 v2.1.198 이상이 필요합니다. |

524| 1M 토큰 컨텍스트 윈도우 | 사용 가능 | Fable 모델, Sonnet 5 이상, Opus 4.7 이상은 기본적으로 1M 윈도우로 실행됩니다. [확장 컨텍스트](https://code.claude.com/docs/ko/model-config.md#extended-context)를 참조하세요. Fable 및 Opus 모델의 1M 기본값을 사용하려면 개발자 머신에 Claude Code v2.1.287 이상이 필요합니다 |522| 1M 토큰 컨텍스트 윈도우 | 사용 가능 | Fable 모델, Sonnet 5 이상, Opus 4.7 이상은 기본적으로 1M 윈도우로 실행됩니다. [확장 컨텍스트](https://code.claude.com/docs/ko/model-config.md#extended-context)를 참조하세요. Fable 및 Opus 모델의 1M 기본값을 사용하려면 개발자 머신에 Claude Code v2.1.287 이상이 필요합니다 |

525| IdP 그룹별 모델 액세스 및 관리형 설정 | 사용 가능 | 모델 액세스는 서버 측에서 적용됩니다; 관리형 설정은 IdP 그룹별로 전달되고 CLI에서 [관리형 설정 계층](https://code.claude.com/docs/ko/settings.md#settings-precedence)에서 적용됩니다. |523| IdP 그룹별 모델 액세스 및 관리형 설정 | 사용 가능 | 모델 액세스는 서버 측에서 적용됩니다; 관리형 설정은 IdP 그룹별로 전달되고 CLI에서 [관리형 설정 계층](https://code.claude.com/docs/ko/settings.md#settings-precedence)에서 적용됩니다. |

526| Claude Desktop | 옵트인 가능 | 게이트웨이는 정책이 [`desktop` 키로 옵트인](https://code.claude.com/docs/ko/claude-apps-gateway-config#claude-desktop-overlay)하면 `/user/bootstrap`에서 Claude Desktop의 구성을 제공하며, Claude Desktop은 게이트웨이를 통해 모델 요청을 보냅니다. Chat을 켜려면 [Claude Desktop 연결](#connect-claude-desktop)을 참조하세요. 게이트웨이 서버에서 Claude Code v2.1.203 이상이 필요합니다. |524| Claude Desktop | 옵트인 가능 | [`desktop` 키](https://code.claude.com/docs/ko/claude-apps-gateway-config#claude-desktop-overlay)로 정책을 옵트인하세요. 게이트웨이 서버에서 Claude Code v2.1.203 이상이 필요합니다. |

527| 텔레메트리 팬아웃 (OTLP/HTTP) | 사용 가능 | 내보내기별 ID 스탬프; protobuf 및 JSON 인코딩 모두 |525| 텔레메트리 팬아웃 (OTLP/HTTP) | 사용 가능 | 내보내기별 ID 스탬프; protobuf 및 JSON 인코딩 모두 |

528| OIDC 신원 제공자 | 사용 가능 | 모든 OIDC 호환 IdP; 게이트웨이는 표준 OIDC 검색 및 인증 코드 흐름을 실행합니다. [신원 제공자 설정](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#identity-provider-setup)에서 IdP별 구성을 참조하세요. |526| OIDC 신원 제공자 | 사용 가능 | 모든 OIDC 호환 IdP; 게이트웨이는 표준 OIDC 검색 및 인증 코드 흐름을 실행합니다. [신원 제공자 설정](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#identity-provider-setup)에서 IdP별 구성을 참조하세요. |

529| 사용자별 및 그룹별 지출 제한 | 사용 가능 | [지출 제한](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md) 참조 |527| 사용자별 및 그룹별 지출 제한 | 사용 가능 | [지출 제한](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md) 참조 |


540| 다중 테넌트 (여러 OIDC 발급자) | 지원되지 않음 | 게이트웨이당 하나의 발급자. 별도 인스턴스 실행 |538| 다중 테넌트 (여러 OIDC 발급자) | 지원되지 않음 | 게이트웨이당 하나의 발급자. 별도 인스턴스 실행 |

541| Windows 서버 | 지원되지 않음 | Linux에 배포. 로컬 개발만 macOS |539| Windows 서버 | 지원되지 않음 | Linux에 배포. 로컬 개발만 macOS |

542| Helm 차트 | 사용 불가능 | 게이트웨이는 표준 상태 비저장 배포로 실행됩니다; [배포 가이드](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#kubernetes) 참조 |540| Helm 차트 | 사용 불가능 | 게이트웨이는 표준 상태 비저장 배포로 실행됩니다; [배포 가이드](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#kubernetes) 참조 |

543| 관리자 UI | 사용 불가능 | 구성은 YAML 파일입니다; 변경하려면 다시 배포하세요. |541| 관리자 UI | 지출 제한만 | [게이트웨이에 연결된](#connect-claude-desktop) Claude Desktop 4.23118.0 이상에서 [`admin.admin_groups`](https://code.claude.com/docs/ko/claude-apps-gateway-config#admin)의 구성원은 지출 제한을 관리할 수 있습니다. 그 밖의 구성은 YAML 파일입니다; 변경하려면 다시 배포하세요. |

544 542 

545## 다음 단계543## 다음 단계

546 544 

Details

1651| `reply_tokens` | 아니요 | 기본값 `750`. 각 미리 준비된 응답에 포함되는 텍스트의 대략적인 토큰 수로, 1에서 100000 사이의 정수입니다. |1651| `reply_tokens` | 아니요 | 기본값 `750`. 각 미리 준비된 응답에 포함되는 텍스트의 대략적인 토큰 수로, 1에서 100000 사이의 정수입니다. |

1652| `reply_seconds` | 아니요 | 기본값 `9.5`. 스트리밍 응답에 걸리는 시간으로, 0에서 600 사이입니다. `0`은 전체 응답을 한 번에 보냅니다. 스트리밍이 아닌 요청에 대한 응답은 항상 한 번에 반환됩니다. |1652| `reply_seconds` | 아니요 | 기본값 `9.5`. 스트리밍 응답에 걸리는 시간으로, 0에서 600 사이입니다. `0`은 전체 응답을 한 번에 보냅니다. 스트리밍이 아닌 요청에 대한 응답은 항상 한 번에 반환됩니다. |

1653 1653 

1654이 모드의 부하 테스트는 게이트웨이, Postgres, 게이트웨이 앞에 있는 모든 것을 대상으로 합니다. 제공자의 제한, 속도, 네트워크 경로는 대상으로 하지 않습니다.1654이 모드의 부하 테스트는 게이트웨이, Postgres, 그리고 게이트웨이 앞의 모든 구성 요소를 대상으로 합니다. 제공자의 제한, 속도, 네트워크 경로, 또는 각 레플리카의 [동시 업스트림 요청 제한](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#concurrent-upstream-requests)에서의 대기는 대상에 포함되지 않습니다. 열려 있는 요청이 이 제한보다 많으면, 즉 프로덕션 요청이 대기하기 시작하는 시점에는 레플리카가 여전히 `client requests are open` 경고를 로그에 기록합니다.

1655 1655 

1656모델 요청이 제공자에게 전송되지 않으므로 복제본의 요청당 CPU는 추정치이며, 제공자로의 트래픽도 암호화하는 프로덕션 환경보다 낮게 측정됩니다. 실제 제공자를 대상으로 소규모 파일럿을 실행하여 복제본 수를 확인하세요. v2.1.283 이전에는 추정치가 훨씬 낮게 측정됩니다.1656모델 요청이 제공자에게 전송되지 않으므로 복제본의 요청당 CPU는 추정치이며, 제공자로의 트래픽도 암호화하는 프로덕션 환경보다 낮게 측정됩니다. 실제 제공자를 대상으로 소규모 파일럿을 실행하여 복제본 수를 확인하세요. v2.1.283 이전에는 추정치가 훨씬 낮게 측정됩니다.

1657 1657 

Details

202>202>

203> 열려 있는 모든 요청은 스트리밍되는 동안 그리고 슬롯을 기다리는 동안 게이트웨이 프로세스에서 메모리를 보유합니다. 제한을 256으로 유지하면, 과부하 상태의 복제본의 메모리는 여전히 증가합니다. 대기 중인 요청이 요청 본문을 유지하기 때문입니다. 컨테이너의 메모리를 피크 시 열려 있는 요청 수에 맞게 크기를 조정하고, 제한을 변경할 때 메모리를 모니터링합니다. 메모리가 부족한 복제본은 종료되고 보유한 모든 스트림을 삭제합니다.203> 열려 있는 모든 요청은 스트리밍되는 동안 그리고 슬롯을 기다리는 동안 게이트웨이 프로세스에서 메모리를 보유합니다. 제한을 256으로 유지하면, 과부하 상태의 복제본의 메모리는 여전히 증가합니다. 대기 중인 요청이 요청 본문을 유지하기 때문입니다. 컨테이너의 메모리를 피크 시 열려 있는 요청 수에 맞게 크기를 조정하고, 제한을 변경할 때 메모리를 모니터링합니다. 메모리가 부족한 복제본은 종료되고 보유한 모든 스트림을 삭제합니다.

204 204 

205[`load_test_mode`](https://code.claude.com/docs/ko/claude-apps-gateway-config#load_test_mode)를 사용한 부하 테스트에서는 요청이 이 제한에서 대기하지 않지만, 복제본은 여전히 `client requests are open` 경고를 기록합니다.

206 

205### `API_TIMEOUT_MS`를 게이트웨이의 첫 바이트 수신 시간보다 높게 유지207### `API_TIMEOUT_MS`를 게이트웨이의 첫 바이트 수신 시간보다 높게 유지

206 208 

207응답이 없는 요청을 더 빨리 재시도하기 위해 [`API_TIMEOUT_MS`](https://code.claude.com/docs/ko/network-config#streaming-idle-watchdogs)를 낮추는 경우, 게이트웨이가 스트리밍 응답의 첫 바이트를 보내는 데 걸리는 시간보다 높게 유지합니다. 이보다 오래 기다리는 요청은 시간 초과되며, 그만큼 기다리는 각 재시도도 시간 초과되어, [첫 바이트 기한](#retry-an-unanswered-request-sooner-with-the-first-byte-deadline)이 턴을 끝내지 않는 한 결국 턴이 `Request timed out`으로 끝납니다.209응답이 없는 요청을 더 빨리 재시도하기 위해 [`API_TIMEOUT_MS`](https://code.claude.com/docs/ko/network-config#streaming-idle-watchdogs)를 낮추는 경우, 게이트웨이가 스트리밍 응답의 첫 바이트를 보내는 데 걸리는 시간보다 높게 유지합니다. 이보다 오래 기다리는 요청은 시간 초과되며, 그만큼 기다리는 각 재시도도 시간 초과되어, [첫 바이트 기한](#retry-an-unanswered-request-sooner-with-the-first-byte-deadline)이 턴을 끝내지 않는 한 결국 턴이 `Request timed out`으로 끝납니다.

Details

628 628 

629* [구성 참조](https://code.claude.com/docs/ko/claude-apps-gateway-config.md): 모든 `gateway.yaml` 옵션, `managed.policies` 및 `telemetry` 포함629* [구성 참조](https://code.claude.com/docs/ko/claude-apps-gateway-config.md): 모든 `gateway.yaml` 옵션, `managed.policies` 및 `telemetry` 포함

630* [배포 및 운영](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md): IdP 설정, 상태 확인, JWT 비밀 회전, 업그레이드 및 보안 모델630* [배포 및 운영](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md): IdP 설정, 상태 확인, JWT 비밀 회전, 업그레이드 및 보안 모델

631* [부하 테스트 모드](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#load_test_mode): 모델 제공자를 호출하지 않고 게이트웨이 부하 테스트

631* [Claude 앱 게이트웨이 개요](https://code.claude.com/docs/ko/claude-apps-gateway): 빠른 시작 및 개발자 연결632* [Claude 앱 게이트웨이 개요](https://code.claude.com/docs/ko/claude-apps-gateway): 빠른 시작 및 개발자 연결

632* [Claude 앱 게이트웨이용 AWS 샘플](https://github.com/aws-samples/anthropic-on-aws/tree/main/claude-apps-gateway): 다양한 고객 환경을 다루는 AWS 유지 배포 샘플633* [Claude 앱 게이트웨이용 AWS 샘플](https://github.com/aws-samples/anthropic-on-aws/tree/main/claude-apps-gateway): 다양한 고객 환경을 다루는 AWS 유지 배포 샘플

Details

316 316 

317* [구성 참조](https://code.claude.com/docs/ko/claude-apps-gateway-config.md): 모든 `gateway.yaml` 옵션(예: `managed.policies` 및 `telemetry`)317* [구성 참조](https://code.claude.com/docs/ko/claude-apps-gateway-config.md): 모든 `gateway.yaml` 옵션(예: `managed.policies` 및 `telemetry`)

318* [배포 및 운영](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md): IdP 설정, 상태 확인, JWT 비밀 로테이션, 업그레이드, 보안 모델318* [배포 및 운영](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md): IdP 설정, 상태 확인, JWT 비밀 로테이션, 업그레이드, 보안 모델

319* [부하 테스트 모드](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#load_test_mode): 모델 제공자를 호출하지 않고 게이트웨이 부하 테스트

319* [Claude 앱 게이트웨이 개요](https://code.claude.com/docs/ko/claude-apps-gateway): 빠른 시작 및 개발자 연결320* [Claude 앱 게이트웨이 개요](https://code.claude.com/docs/ko/claude-apps-gateway): 빠른 시작 및 개발자 연결

Details

95프로젝트를 계속 추가할 하나의 작업 흐름으로 범위를 지정합니다. 예를 들어 하나의 API를 지연 시간 목표 이내로 유지하는 데 필요한 모든 것입니다. [프로젝트를 사용할 때](#when-to-use-a-project)에 더 많은 예시가 있습니다. 그런 다음 대화상자의 필드를 채웁니다:95프로젝트를 계속 추가할 하나의 작업 흐름으로 범위를 지정합니다. 예를 들어 하나의 API를 지연 시간 목표 이내로 유지하는 데 필요한 모든 것입니다. [프로젝트를 사용할 때](#when-to-use-a-project)에 더 많은 예시가 있습니다. 그런 다음 대화상자의 필드를 채웁니다:

96 96 

97* **이름**: **프로젝트** 목록에 프로젝트가 표시되는 방식입니다.97* **이름**: **프로젝트** 목록에 프로젝트가 표시되는 방식입니다.

98* **목표** (선택 사항): "p95 API 지연 시간을 200ms 이하로 유지"와 같이 달성하려는 작업의 한 줄입니다. 대화에서 Claude는 이를 향해 작업합니다. 목표가 없으면 Claude는 사용자가 보내는 작업에서 작업하며, 나중에 **프로젝트 설정 > 일반**에서 목표를 추가할 수 있습니다.98* **어떤 작업을 하시겠습니까?** (선택 사항): "p95 API 지연 시간을 200ms 이하로 유지"와 같이 프로젝트의 목표가 되는 한 줄입니다. 대화에서 Claude는 이를 향해 작업합니다. 목표가 없으면 Claude는 사용자가 보내는 작업에서 작업하며, 나중에 **프로젝트 설정 > 일반**에서 목표를 추가할 수 있습니다.

99* **컨텍스트** (선택 사항): 이 프로젝트가 작업할 GitHub 리포지토리와 스레드가 읽어야 할 파일, 폴더 또는 Google Drive 폴더입니다. 각각에 대해 **추가**를 클릭합니다. 작업이 만질 수 있는 모든 리포지토리가 아닌 대부분의 작업이 필요로 하는 리포지토리를 추가합니다. [추가할 리포지토리 결정하기](#decide-which-repositories-to-add)에서 선택 사항을 다룹니다. 나중에 **프로젝트 설정 > 환경**에서 더 추가할 수 있습니다.99* **컨텍스트** (선택 사항): 이 프로젝트가 작업할 GitHub 저장소와 스레드가 읽어야 할 파일, 폴더 또는 Google Drive 폴더입니다. 각각에 대해 **추가**를 클릭합니다. 작업이 만질 수 있는 모든 저장소가 아닌 대부분의 작업이 필요로 하는 저장소를 추가합니다. [추가할 저장소 결정하기](#decide-which-repositories-to-add)에서 선택 사항을 다룹니다. 나중에 **프로젝트 설정 > 환경**에서 더 추가할 수 있습니다.

100 100 

101스레드가 어떻게 작동해야 하는지에 대한 상시 규칙은 [프로젝트 지침](#give-a-project-standing-context)에 들어가며, 이는 프로젝트가 존재한 후에 설정합니다.101스레드가 어떻게 작동해야 하는지에 대한 상시 규칙은 [프로젝트 지침](#give-a-project-standing-context)에 들어가며, 이는 프로젝트가 존재한 후에 설정합니다.

102 102 


388| 플러그인 | Plugins | 각 새 스레드에 로드되는 플러그인 |388| 플러그인 | Plugins | 각 새 스레드에 로드되는 플러그인 |

389| 사용 | Usage | 스레드 및 모델별 [토큰 사용](#usage-and-cost) |389| 사용 | Usage | 스레드 및 모델별 [토큰 사용](#usage-and-cost) |

390| Memory | Memory | 프로젝트의 [메모리 파일](#give-a-project-standing-context) |390| Memory | Memory | 프로젝트의 [메모리 파일](#give-a-project-standing-context) |

391| 사용 한도 재설정 시 자동 계속 | General | [사용 한도에 도달해 중지된](#usage-limit-reached) 스레드 또는 프로젝트 대화가 한도가 재설정될 때 자동으로 계속되는지 여부입니다. 기본적으로 켜져 있습니다. |

391| Claude 다시 시작 | General | Claude가 [거기서 응답을 중지](#claude-hasnt-responded)할 때 프로젝트 대화를 다시 시작합니다 |392| Claude 다시 시작 | General | Claude가 [거기서 응답을 중지](#claude-hasnt-responded)할 때 프로젝트 대화를 다시 시작합니다 |

392| 일시 중지, 보관, 삭제 | General | 프로젝트를 중지, 숨기거나 제거합니다. [프로젝트 일시 중지, 보관 또는 삭제](#pause-archive-or-delete-a-project)를 참조하세요 |393| 일시 중지, 보관, 삭제 | General | 프로젝트를 중지, 숨기거나 제거합니다. [프로젝트 일시 중지, 보관 또는 삭제](#pause-archive-or-delete-a-project)를 참조하세요 |

393 394 


403 404 

404프로젝트 사용량은 다른 Claude Code 세션과 동일한 [플랜 한도](https://code.claude.com/docs/ko/errors.md#youve-hit-your-session-limit)에 포함되며, 프로젝트는 자체적으로 해당 한도를 초과할 수 없습니다.405프로젝트 사용량은 다른 Claude Code 세션과 동일한 [플랜 한도](https://code.claude.com/docs/ko/errors.md#youve-hit-your-session-limit)에 포함되며, 프로젝트는 자체적으로 해당 한도를 초과할 수 없습니다.

405 406 

406플랜 한도에 도달한 스레드는 대기했다가 한도가 초기화되면 자동으로 계속 진행되므로, 실행 중인 작업은 사용자의 메시지 없이 다음 사용 기간에 자동으로 시작됩니다. [스레드가 사용량 한도에 도달함](#usage-limit-reached)에서는 표시되는 내용, 중지 방법, 그리고 대기하지 않는 한 가지 경우를 다룹니다.407플랜 한도에 도달한 스레드는 대기하며, 기본적으로 한도가 초기화되면 자동으로 계속 진행됩니다. 이때 해당 작업은 다음 사용 기간에 포함됩니다. 스레드가 계속 진행되지 않도록 하려면 [스레드가 사용 한도에 도달함](#usage-limit-reached)을 참조하세요.

407 408 

408작업이 플랜 한도를 초과하는 경우는 계정에 [사용량 크레딧](https://code.claude.com/docs/ko/costs.md#add-usage-credits-to-your-subscription)을 활성화한 경우에만 가능합니다. 스레드는 사용자를 위해 이를 활성화할 수 없습니다.409작업이 플랜 한도를 초과하는 경우는 계정에 [사용량 크레딧](https://code.claude.com/docs/ko/costs.md#add-usage-credits-to-your-subscription)을 활성화한 경우에만 가능합니다. 스레드는 사용자를 위해 이를 활성화할 수 없습니다.

409 410 


484 485 

485### 스레드가 사용 한도에 도달한 경우486### 스레드가 사용 한도에 도달한 경우

486 487 

487스레드나 프로젝트 대화가 플랜의 5시간 한도 또는 주간 한도에 도달하면, 자동으로 계속 재시도하다가 한도가 재설정되면 작업을 이어 갑니다. 예약 작업으로 시작된 스레드는 기다리지 않습니다. 해당 턴은 한도 오류와 함께 중지되며, 한도가 재설정된 후 메시지를 보내야 합니다.488스레드나 프로젝트 대화가 플랜의 5시간 한도 또는 주간 한도에 도달하여 멈추면, 대기하다가 기본적으로 한도가 재설정될 때 자동으로 작업을 이어 갑니다.

488 489 

489스레드가 대기하는 동안 "Claude is still retrying and will continue automatically."라는 문구와 함께 **Service is busy**가 표시됩니다. 작업을 계속하기 위해 별도로 조치할 필요는 없습니다. 다음 사용 기간을 소비하지 않으려면 스레드에서 **Stop**을 클릭하거나, [프로젝트를 일시 중지](#pause-archive-or-delete-a-project)하여 모든 스레드를 보류합니다. [사용 한도 오류](https://code.claude.com/docs/ko/errors.md#youve-hit-your-session-limit)에서 한도와 재설정 시점을 설명합니다.490메시지에 표시된 재설정 시점에 스레드나 대화가 이어지지 않도록 하려면, 그 전에 [**Project settings > General**](#project-settings-reference)에서 **Auto-continue when usage limits reset**을 끕니다. 이 설정은 현재 보고 있는 스레드만이 아니라 프로젝트 전체에 적용됩니다. 설정을 끈 상태에서 계속하려면 재설정 후 스레드나 대화에 메시지를 보냅니다. [사용 한도 오류](https://code.claude.com/docs/ko/errors.md#youve-hit-your-session-limit)에서 한도와 재설정 시점을 설명합니다.

490 491 

491### Additional usage credits are required492### Additional usage credits are required

492 493 


509| "Unable to connect to repository"와 "Claude couldn't access your repository or environment" | GitHub 계정에 저장소에 대한 푸시 권한이 있어야 하며, 환경이 여전히 존재해야 합니다. **Project settings > Environment**에서 두 가지를 모두 확인한 다음 재시도합니다 |510| "Unable to connect to repository"와 "Claude couldn't access your repository or environment" | GitHub 계정에 저장소에 대한 푸시 권한이 있어야 하며, 환경이 여전히 존재해야 합니다. **Project settings > Environment**에서 두 가지를 모두 확인한 다음 재시도합니다 |

510| "Couldn't show the setup proposal" | 열려 있는 앱이 Claude가 보낸 **Setup recommendations**보다 오래된 버전입니다. 페이지를 새로 고치거나 데스크톱 앱을 다시 시작하거나, Claude에게 설정을 다시 제안하도록 요청합니다 |511| "Couldn't show the setup proposal" | 열려 있는 앱이 Claude가 보낸 **Setup recommendations**보다 오래된 버전입니다. 페이지를 새로 고치거나 데스크톱 앱을 다시 시작하거나, Claude에게 설정을 다시 제안하도록 요청합니다 |

511| "The project's environment was removed" | **Project settings > Environment**에서 다른 환경을 선택합니다. 변경 사항은 새 스레드에 적용됩니다 |512| "The project's environment was removed" | **Project settings > Environment**에서 다른 환경을 선택합니다. 변경 사항은 새 스레드에 적용됩니다 |

512| "Setup script failed" | 오류에서 **Edit setup script**를 클릭하고 환경의 스크립트를 수정한 다음 메시지를 다시 보냅니다. [Setup script failed](https://code.claude.com/docs/ko/web-quickstart.md#setup-script-failed)에 일반적인 원인이 나와 있습니다 |513| "Setup script failed" | [Setup script failed](https://code.claude.com/docs/ko/web-quickstart.md#setup-script-failed)에 일반적인 원인이 나와 있습니다. 환경에서 스크립트를 수정한 다음, 스크립트가 다시 실행되도록 프로젝트 대화에서 Claude에게 새 스레드에서 작업을 실행하도록 요청합니다 |

513| "Claude ran out of context on this turn" | 스레드가 컨텍스트 윈도우를 가득 채웠습니다. 메시지에 스레드가 새 세션에서 계속된다고 표시되면 자동으로 이어 갑니다. 그렇지 않으면 프로젝트 대화에서 Claude에게 남은 작업을 위한 새 스레드를 시작하도록 요청합니다 |514| "Claude ran out of context on this turn" | 스레드가 컨텍스트 윈도우를 가득 채웠습니다. 메시지에 스레드가 새 세션에서 계속된다고 표시되면 자동으로 이어 갑니다. 그렇지 않으면 프로젝트 대화에서 Claude에게 남은 작업을 위한 새 스레드를 시작하도록 요청합니다 |

514| "Couldn't start in" 뒤에 폴더 이름 | 스레드가 컴퓨터에서 실행되도록 허용했지만 그곳에서 세션을 시작할 수 없었습니다. 메시지 아래 줄에 이유가 표시되면 해당 문제를 수정한 다음 Claude에게 작업을 다시 실행하도록 요청합니다 |515| "Couldn't start in" 뒤에 폴더 이름 | 스레드가 컴퓨터에서 실행되도록 허용했지만 그곳에서 세션을 시작할 수 없었습니다. 메시지 아래 줄에 이유가 표시되면 해당 문제를 수정한 다음 Claude에게 작업을 다시 실행하도록 요청합니다 |

515| "Claude is out of date on your device" | 스레드를 실행하도록 선택한 컴퓨터의 Claude Code 버전이 v2.1.280보다 오래되었습니다. 해당 컴퓨터에서 Claude Code를 업데이트하거나, 데스크톱 앱이 폴더를 연결하는 경우 데스크톱 앱을 업데이트한 다음 Claude에게 작업을 다시 실행하도록 요청합니다 |516| "Claude is out of date on your device" | 스레드를 실행하도록 선택한 컴퓨터의 Claude Code 버전이 v2.1.280보다 오래되었습니다. 해당 컴퓨터에서 Claude Code를 업데이트하거나, 데스크톱 앱이 폴더를 연결하는 경우 데스크톱 앱을 업데이트한 다음 Claude에게 작업을 다시 실행하도록 요청합니다 |

Details

120 120 

121**Add secret**(관리자 설정에서는 **Add**로 표시됨)을 선택하고 양식을 작성합니다. 요청 헤더로 전달되는 API 키의 경우 기본 **Secret type**인 **Bearer**를 유지하고 다음 필드를 입력합니다.121**Add secret**(관리자 설정에서는 **Add**로 표시됨)을 선택하고 양식을 작성합니다. 요청 헤더로 전달되는 API 키의 경우 기본 **Secret type**인 **Bearer**를 유지하고 다음 필드를 입력합니다.

122 122 

123* **Name**: 시크릿의 레이블(예: `Internal billing API`)

124* **Allowed websites**: API의 호스트(예: `api.example.com`). 앞에 `*.`를 붙이면 모든 하위 도메인과 일치합니다123* **Allowed websites**: API의 호스트(예: `api.example.com`). 앞에 `*.`를 붙이면 모든 하위 도메인과 일치합니다

125* **Custom headers**: 키를 전달하는 헤더에 대한 한 행. 이 행은 헤더의 **Name**이 `Authorization`, **Prefix**가 `Bearer`로 시작하며, 키 자체는 **Value**에 붙여 넣습니다. `X-Api-Key`처럼 값만 그대로 받는 헤더의 경우 이름을 변경하고 접두사를 지우십시오124* **Custom headers**: 키를 전달하는 헤더에 대한 한 행. 이 행에는 **Header name**으로 `Authorization`, **Prefix**로 `Bearer`가 이미 입력되어 있으며, 키 자체는 **Value**에 붙여 넣습니다. `X-Api-Key`처럼 값만 그대로 받는 헤더의 경우 이름을 변경하고 접두사를 지우십시오

126 125 

127다른 방식으로 인증하는 API의 경우 다른 **Secret type**을 선택하십시오. 이 목록은 Team 및 Enterprise 요금제용 Slack 통합인 [Claude Tag](https://claude.com/docs/claude-tag/overview)가 [연결](https://claude.com/docs/claude-tag/admins/add-connections)에 제공하는 목록과 동일합니다.126다른 방식으로 인증하는 API의 경우 다른 **Secret type**을 선택하십시오. 이 목록은 Team 및 Enterprise 요금제용 Slack 통합인 [Claude Tag](https://claude.com/docs/claude-tag/overview)가 [연결](https://claude.com/docs/claude-tag/admins/add-connections)에 제공하는 목록과 동일합니다.

128 127 


137Team 또는 Enterprise 요금제를 사용 중이며 [조직 관리자 역할](#requirements)이 없다면 **Add secret** 양식은 하나의 호스트에 대해 하나의 시크릿을 받습니다. 환경의 [**Network secrets** 행](#add-a-credential)을 선택한 다음 **Add secret**을 선택하십시오. 다음 필드를 입력하고 양식의 **Add secret** 버튼을 선택하십시오.136Team 또는 Enterprise 요금제를 사용 중이며 [조직 관리자 역할](#requirements)이 없다면 **Add secret** 양식은 하나의 호스트에 대해 하나의 시크릿을 받습니다. 환경의 [**Network secrets** 행](#add-a-credential)을 선택한 다음 **Add secret**을 선택하십시오. 다음 필드를 입력하고 양식의 **Add secret** 버튼을 선택하십시오.

138 137 

139* **Host**: 시크릿을 받는 단일 호스트(예: `api.example.com`). 이 양식은 `*.` 와일드카드를 허용하지 않습니다138* **Host**: 시크릿을 받는 단일 호스트(예: `api.example.com`). 이 양식은 `*.` 와일드카드를 허용하지 않습니다

140* **Name**: 시크릿의 선택적 레이블139* **Secret type**: 요청 헤더로 전달되는 키의 경우 **Token**, 또는 **Username and password**. 토큰의 경우 키를 **Token** 필드에 붙여 넣습니다. `X-Api-Key`처럼 `Authorization`이 아닌 헤더의 경우 **Header**를 해당 헤더 이름으로 변경하십시오

141* **Secret type**: 요청 헤더로 전달되는 키의 경우 **Token**, 또는 **Username and password**. 토큰의 경우 키를 **Value**에 붙여 넣습니다

142 140 

143#### 시크릿이 첨부되는 요청141#### 시크릿이 첨부되는 요청

144 142 


445 443 

446설정 스크립트에는 작성할 때 고려해야 할 네 가지 제약이 있습니다.444설정 스크립트에는 작성할 때 고려해야 할 네 가지 제약이 있습니다.

447 445 

448* **종료 코드 0**: 스크립트가 0이 아닌 코드로 종료되면 세션이 시작되지 않습니다. 중요하지 않은 명령에 `|| true`를 추가하여 일시적인 설치 실패가 세션을 차단하지 않도록 합니다.446* **종료 코드 0**: 스크립트가 0이 아닌 코드로 종료되면 세션이 [시작되지 않거나](https://code.claude.com/docs/ko/web-quickstart.md#setup-script-failed) 스크립트가 설치하지 못한 항목 없이 시작됩니다. 중요하지 않은 명령에 `|| true`를 추가하여 일시적인 설치 실패로 스크립트가 실패하지 않도록 합니다.

449* **5분 이내에 완료**: 스크립트의 총 실행 시간을 약 5분 이내로 유지하여 [환경 캐시](#environment-caching)를 구축할 수 있도록 합니다. 설정이 그보다 오래 걸리면 환경이 캐시되지 않습니다. `&`와 `wait`를 사용하여 독립적인 설치를 병렬로 실행하고, 맞지 않는 단일 다운로드는 백그라운드에서 실행하는 [SessionStart hook](#setup-scripts-vs-sessionstart-hooks)으로 이동합니다. 새 세션이 설정 중에 정지되거나 실패하면 [새 세션이 설정 중에 정지되거나 시간 초과됨](https://code.claude.com/docs/ko/web-quickstart.md#new-sessions-hang-or-time-out-during-setup)을 참조합니다.447* **5분 이내에 완료**: 스크립트의 총 실행 시간을 약 5분 이내로 유지하여 [환경 캐시](#environment-caching)를 구축할 수 있도록 합니다. 설정이 그보다 오래 걸리면 환경이 캐시되지 않습니다. `&`와 `wait`를 사용하여 독립적인 설치를 병렬로 실행하고, 맞지 않는 단일 다운로드는 백그라운드에서 실행하는 [SessionStart hook](#setup-scripts-vs-sessionstart-hooks)으로 이동합니다. 새 세션이 설정 중에 정지되거나 실패하면 [새 세션이 설정 중에 정지되거나 시간 초과됨](https://code.claude.com/docs/ko/web-quickstart.md#new-sessions-hang-or-time-out-during-setup)을 참조합니다.

450* **설치를 위한 네트워크 액세스**: 패키지 설치는 레지스트리에 도달해야 합니다. 기본 **신뢰됨** 수준은 npm, PyPI, RubyGems 및 crates.io를 포함한 [일반적인 패키지 레지스트리](#default-allowed-domains)를 포함합니다. **없음** 네트워크 액세스를 사용하면 설치가 실패합니다.448* **설치를 위한 네트워크 액세스**: 패키지 설치는 레지스트리에 도달해야 합니다. 기본 **신뢰됨** 수준은 npm, PyPI, RubyGems 및 crates.io를 포함한 [일반적인 패키지 레지스트리](#default-allowed-domains)를 포함합니다. **없음** 네트워크 액세스를 사용하면 설치가 실패합니다.

451* **환경의 변수가 아직 설정되지 않음**: 스크립트는 세션이 환경의 [환경 변수](#set-environment-variables)를 설정하기 전에 실행됩니다. 스크립트에 필요한 값은 스크립트 자체에서 설정합니다.449* **환경의 변수가 아직 설정되지 않음**: 스크립트는 세션이 환경의 [환경 변수](#set-environment-variables)를 설정하기 전에 실행됩니다. 스크립트에 필요한 값은 스크립트 자체에서 설정합니다.

Details

25 25 

26## 리뷰 전용 규칙에는 REVIEW\.md 사용26## 리뷰 전용 규칙에는 REVIEW\.md 사용

27 27 

28`REVIEW.md`는 저장소 루트에 위치하며 Code Review를 저장소에 맞게 조정하는 파일입니다. 하위 디렉터리에 `REVIEW.md`를 추가하여 루트 파일에 더해 해당 경로 아래의 변경 사항에 대한 검사를 추가할 수도 있습니다.28`REVIEW.md`는 저장소 루트에 위치하며 Code Review를 저장소에 맞게 조정하는 파일입니다. [보호된 브랜치](#what-a-review-reads-for-each-branch-setup)에서는 [대부분의 하위 디렉터리](#when-a-subdirectory-review-md-doesnt-apply)에 `REVIEW.md`를 추가하여 루트 파일에 더해 해당 하위 디렉터리 아래의 변경 사항에 대한 검사를 추가할 수도 있습니다.

29 29 

30문제를 찾는 에이전트와 이를 검증하는 에이전트는 Code Review의 기본 리뷰 지침과 함께 이 파일의 내용을 저장소의 리뷰 지침으로 전달받습니다. 최종 리뷰를 작성하는 단계는 심각도를 확정하고 요약을 작성하기 전에 이 파일을 참조합니다.30문제를 찾는 에이전트와 이를 검증하는 에이전트는 Code Review의 기본 리뷰 지침과 함께 이 파일의 내용을 저장소의 리뷰 지침으로 전달받습니다. 최종 리뷰를 작성하는 단계는 심각도를 확정하고 요약을 작성하기 전에 이 파일을 참조합니다.

31 31 


46>46>

47> Code Review 서비스와 로컬 [`/code-review` 명령](https://code.claude.com/docs/ko/code-review-local)은 서로 별개의 도구이며, 읽는 파일도 다릅니다. 서비스는 `CLAUDE.md`와 `REVIEW.md`를 모두 읽습니다. 사용자의 로컬 머신에서 Claude Code 세션 안에서 실행하는 `/code-review` 명령은 `CLAUDE.md` 파일을 읽지만 `REVIEW.md`는 읽지 않습니다. 두 곳 모두에 적용하려는 지침은 `CLAUDE.md`에 작성하고, `REVIEW.md`에는 풀 리퀘스트 리뷰에 특화된 규칙만 둡니다.47> Code Review 서비스와 로컬 [`/code-review` 명령](https://code.claude.com/docs/ko/code-review-local)은 서로 별개의 도구이며, 읽는 파일도 다릅니다. 서비스는 `CLAUDE.md`와 `REVIEW.md`를 모두 읽습니다. 사용자의 로컬 머신에서 Claude Code 세션 안에서 실행하는 `/code-review` 명령은 `CLAUDE.md` 파일을 읽지만 `REVIEW.md`는 읽지 않습니다. 두 곳 모두에 적용하려는 지침은 `CLAUDE.md`에 작성하고, `REVIEW.md`에는 풀 리퀘스트 리뷰에 특화된 규칙만 둡니다.

48 48 

49### 하위 디렉터리 REVIEW\.md가 적용되지 않는 경우

50 

51Code Review는 다음 이름 중 하나를 가진 하위 디렉터리 안이나 그 아래에 있는 `REVIEW.md`는 해당 하위 디렉터리의 내용과 관계없이 적용하지 않습니다. 하위 디렉터리 이름은 대소문자와 깊이에 관계없이 이름 전체가 일치할 때만 해당하므로, `Tests`는 해당하지만 `integration-tests`는 해당하지 않습니다.

52 

53* **테스트**: `test`, `tests`, `__tests__`, `testdata`, `fixtures`, `__fixtures__`, `golden`, `corpus`, `snapshots`, `__snapshots__`

54* **예시**: `example`, `examples`, `sample`, `samples`, `demo`, `demos`

55* **생성된 코드**: `generated`

56* **서드파티 코드**: `vendor`, `third_party`, `third-party`, `thirdparty`, `node_modules`, `bower_components`, `external`, `extern`, `deps`, `godeps`, `pods`, `carthage`, `site-packages`, `contrib`

57 

58이러한 하위 디렉터리에 대한 검사는 루트 `REVIEW.md`에 작성하거나, 상위 하위 디렉터리와 그 위의 어떤 디렉터리도 목록에 없는 경우 해당 상위 하위 디렉터리의 `REVIEW.md`에 작성합니다.

59 

60풀 리퀘스트가 변경하는 경로에 있는 나머지 하위 디렉터리 `REVIEW.md` 파일은 루트 파일을 제외하고 합계 150,000바이트 제한을 공유합니다. [check run](https://code.claude.com/docs/ko/code-review-pull-requests.md#check-run-output)에서 일부 파일이 제한에 들어가지 않았다고 보고하면 해당 제한에 맞도록 파일을 줄입니다.

61 

49### REVIEW\.md 예시62### REVIEW\.md 예시

50 63 

51이 `REVIEW.md`는 백엔드 서비스에 맞게 심각도를 재조정하고, nit 수를 제한하고, 생성된 파일을 건너뛰고, 저장소별 검사를 추가합니다.64이 `REVIEW.md`는 백엔드 서비스에 맞게 심각도를 재조정하고, nit 수를 제한하고, 생성된 파일을 건너뛰고, 저장소별 검사를 추가합니다.


217 230 

218| 브랜치 보호 | 읽는 사본 | 읽는 파일 |231| 브랜치 보호 | 읽는 사본 | 읽는 파일 |

219| :- | :- | :- |232| :- | :- | :- |

220| 기본 브랜치가 보호되어 있고, 풀 리퀘스트가 기본 브랜치 또는 ruleset으로 보호되지 않는 브랜치를 대상으로 함 | 기본 브랜치 | 루트 파일, 루트 파일이 포함하는 파일, 하위 디렉터리 파일 |233| 기본 브랜치가 보호되어 있고, 풀 리퀘스트가 기본 브랜치 또는 ruleset으로 보호되지 않는 브랜치를 대상으로 함 | 기본 브랜치 | 루트 파일, 루트 파일이 포함하는 파일, [대부분의 하위 디렉터리 파일](#when-a-subdirectory-review-md-doesnt-apply) |

221| 풀 리퀘스트가 ruleset으로 보호되는 다른 브랜치를 대상으로 함 | 해당 base 브랜치 | 루트 파일, 루트 파일이 포함하는 파일, 하위 디렉터리 파일 |234| 풀 리퀘스트가 ruleset으로 보호되는 다른 브랜치를 대상으로 함 | 해당 base 브랜치 | 루트 파일, 루트 파일이 포함하는 파일, [대부분의 하위 디렉터리 파일](#when-a-subdirectory-review-md-doesnt-apply) |

222| 기본 브랜치가 보호되어 있지 않고, base 브랜치에 어떤 종류의 보호 규칙도 없음 | 기본 브랜치 | 루트 파일 |235| 기본 브랜치가 보호되어 있지 않고, base 브랜치에 어떤 종류의 보호 규칙도 없음 | 기본 브랜치 | 루트 파일 |

223| Code Review가 보호 설정을 확인할 수 없음. 보호되지 않은 기본 브랜치와 클래식 규칙만 있는 base 브랜치의 조합도 여기에 포함됨 | 없음 | 없음 |236| Code Review가 보호 설정을 확인할 수 없음. 보호되지 않은 기본 브랜치와 클래식 규칙만 있는 base 브랜치의 조합도 여기에 포함됨 | 없음 | 없음 |

224 237 

Details

4 4 

5# iOS 시뮬레이터에서 앱 테스트하기5# iOS 시뮬레이터에서 앱 테스트하기

6 6 

7> Claude Code Desktop은 Claude가 앱을 빌드, 실행 또는 확인할 때 iOS 시뮬레이터 창에서 앱을 열며, 각 세션마다 별도의 시뮬레이터를 제공합니다.7> Claude Code Desktop은 Claude가 앱을 빌드, 실행 또는 확인할 때 iOS 시뮬레이터 창에서 앱을 엽니다.

8 8 

9> [!NOTE]9> [!NOTE]

10>10>


63 63 

64앱이 시뮬레이터에서 실행되면 iOS 시뮬레이터 창이 대화 옆에 열립니다. Claude가 기기를 처음 사용할 때 데스크톱 앱이 허용을 요청합니다. [Claude에게 기기 접근 권한 부여](#grant-claude-access-to-a-device)를 참조하세요. Claude가 앱을 설치하고, 탭하며 이동하고, 화면을 읽어 자신의 변경 사항을 검증하는 동안 시청할 수 있습니다.64앱이 시뮬레이터에서 실행되면 iOS 시뮬레이터 창이 대화 옆에 열립니다. Claude가 기기를 처음 사용할 때 데스크톱 앱이 허용을 요청합니다. [Claude에게 기기 접근 권한 부여](#grant-claude-access-to-a-device)를 참조하세요. Claude가 앱을 설치하고, 탭하며 이동하고, 화면을 읽어 자신의 변경 사항을 검증하는 동안 시청할 수 있습니다.

65 65 

66시뮬레이터 창은 Claude가 세션의 어느 시점에서든 시뮬레이터에서 앱을 실행할 때마다 열립니다. 요청이 앱 보기에 관한 것일 때 (예: "새 화면이 맞나요?"), Claude는 작업을 시작하기 전에 시뮬레이터를 시작합니다. Claude가 버그를 수정하거나 화면을 변경한 후 변경 사항을 검증하도록 요청합니다. 앱을 다시 실행하면 창이 열려 있지 않으면 창을 다시 엽니다.66요청이 앱 보기에 관한 것일 때 (예: "새 화면이 맞나요?"), Claude는 작업을 시작하기 전에 시뮬레이터를 시작합니다. Claude가 버그를 수정하거나 화면을 변경한 후 변경 사항을 검증하도록 요청합니다.

67 67 

68시뮬레이터 창은 앱이 실제로 실행된 기기를 표시합니다. 특정 기기에서 테스트하려면 요청에서 기기 이름을 지정합니다 (예: "iPhone SE 시뮬레이터에서 실행"). Claude는 빌드 및 실행 시 해당 기기를 대상으로 합니다.68시뮬레이터 창은 앱이 실제로 실행된 기기를 표시합니다. 특정 기기에서 테스트하려면 요청에서 기기 이름을 지정합니다 (예: "iPhone SE 시뮬레이터에서 실행"). Claude는 빌드 및 실행 시 해당 기기를 대상으로 합니다.

69 69 


86 86 

87사용자와 Claude가 동일한 기기를 제어하므로 탭이 Claude가 보는 앱 상태를 변경합니다. Claude가 특정 화면을 확인하도록 하려면 탭하여 이동한 후 요청합니다. Claude가 기기를 제어하는 동안 창은 화면 위에 **Claude is using this device** 배지를 표시합니다. 배지가 사라질 때까지 탭을 기다려 결과가 입력이 아닌 앱을 반영하도록 합니다.87사용자와 Claude가 동일한 기기를 제어하므로 탭이 Claude가 보는 앱 상태를 변경합니다. Claude가 특정 화면을 확인하도록 하려면 탭하여 이동한 후 요청합니다. Claude가 기기를 제어하는 동안 창은 화면 위에 **Claude is using this device** 배지를 표시합니다. 배지가 사라질 때까지 탭을 기다려 결과가 입력이 아닌 앱을 반영하도록 합니다.

88 88 

89### 시뮬레이터 창 최소화 또는 닫기

90 

91시뮬레이터 창을 최소화하거나 닫을 수 있으며, 어느 경우에도 Claude는 계속 기기를 사용할 수 있습니다.

92 

93* 창을 최소화하면 기기가 작은 크기로 계속 표시됩니다. 창을 최소화하거나 다시 확장하는 방법은 [창 최소화](https://code.claude.com/docs/ko/desktop.md#minimize-a-pane)를 참조하십시오.

94* 전체 크기 창 또는 최소화된 창을 닫아도 기기는 연결된 상태로 계속 실행됩니다. 기기를 다시 표시하려면 세션 제목 표시줄에서 **iOS Simulator**를 클릭합니다.

95 

89## 세션이 기기를 관리하는 방식96## 세션이 기기를 관리하는 방식

90 97 

91각 기기는 이를 실행한 세션에 속하므로 [병렬 세션](https://code.claude.com/docs/ko/desktop.md#work-in-parallel-with-sessions)은 기기를 공유하지 않습니다. 한 세션의 창에 표시되는 내용은 해당 세션의 작업을 반영하며 다른 세션의 작업은 반영하지 않습니다. 사이드바에서 세션을 전환하면 시뮬레이터 보기가 대화와 함께 전환되고, 다시 전환하면 동일한 기기가 중단된 위치에서 재개됩니다. Claude가 둘 이상의 기기로 작업하면 각각 자체 창을 열며, 세션당 최대 4개까지 가능합니다.98프롬프트에서 시뮬레이터를 지정하지 않으면 Claude는 이미 실행 중인 시뮬레이터를 사용하며, 다른 [병렬 세션](https://code.claude.com/docs/ko/desktop.md#work-in-parallel-with-sessions)이 연 시뮬레이터라도 마찬가지입니다. 각 세션에 별도의 시뮬레이터를 부여하려면 세션마다 프롬프트에서 서로 다른 시뮬레이터를 지정합니다.

92 99 

93Claude Code Desktop은 더 이상 사용하지 않을 때 부팅한 시뮬레이터를 종료합니다. 앱을 종료할 때, 세션을 보관할 때, 또는 기기를 창에서 분리한 후 10분 후입니다. Claude Code Desktop 외부에서 부팅한 기기(예: Apple의 Simulator 앱이나 Device Hub)는 자동으로 종료되지 않습니다. 연결된 기기를 즉시 종료하려면 창의 종료 버튼을 사용합니다.100Claude Code Desktop은 더 이상 사용하지 않을 때 부팅한 시뮬레이터를 종료합니다. 앱을 종료할 때, 세션을 보관할 때, 또는 기기를 창에서 분리한 후 10분 후입니다. Claude Code Desktop 외부에서 부팅한 기기(예: Apple의 Simulator 앱이나 Device Hub)는 자동으로 종료되지 않습니다. 연결된 기기를 즉시 종료하려면 창의 종료 버튼을 사용합니다.

94 101 

95## Claude에게 기기 접근 권한 부여102## Claude에게 기기 접근 권한 부여

96 103 

97Claude는 기기를 제어하기 전에 동의를 요청하며, 기기에서 앱을 빌드하거나 실행하는 작업 또는 URL을 여는 작업은 세션의 권한 모드를 따릅니다. 사용자 또는 조직이 Claude의 접근을 완전히 끌 수도 있습니다.104Claude는 기기를 제어하기 전에 동의를 요청하며, 앱을 빌드하거나 실행하는 작업 또는 기기에서 URL을 여는 작업은 세션의 권한 모드를 따릅니다. 사용자 또는 조직이 Claude의 접근을 완전히 끌 수도 있습니다.

98 105 

99### 처음으로 기기 허용106### 처음으로 기기 허용

100 107 


102 109 

103기기를 허용한 후 탭, 입력, 스크린샷 촬영과 같은 Claude의 작업은 프롬프트 없이 실행되지만, 앱 실행은 [권한 모드](#actions-that-follow-your-permission-mode)가 요구하는 대로 승인해야 합니다. 이러한 작업은 사용자가 창을 직접 클릭하는 것과 동일한 신뢰를 가지며, 시뮬레이션된 기기에만 영향을 주므로 창에는 컴퓨터 사용에 필요한 macOS 접근성 및 화면 녹화 권한이 필요하지 않습니다.110기기를 허용한 후 탭, 입력, 스크린샷 촬영과 같은 Claude의 작업은 프롬프트 없이 실행되지만, 앱 실행은 [권한 모드](#actions-that-follow-your-permission-mode)가 요구하는 대로 승인해야 합니다. 이러한 작업은 사용자가 창을 직접 클릭하는 것과 동일한 신뢰를 가지며, 시뮬레이션된 기기에만 영향을 주므로 창에는 컴퓨터 사용에 필요한 macOS 접근성 및 화면 녹화 권한이 필요하지 않습니다.

104 111 

105거부하면 기기는 여전히 부팅되고 창은 여전히 자신의 탭에 작동합니다. Claude의 접근만 비활성화됩니다. 나중에 마음을 바꾸면 창에서 **Let Claude use it**을 클릭합니다.112Claude의 요청을 거부하면 기기가 연결되지 않으며 Desktop은 기기를 부팅하지 않습니다. 기기를 직접 사용하려면 다음을 수행합니다:

113 

1141. 창에서 **Attach simulator**를 클릭합니다.

1152. 권한 화면에서 **Continue**를 클릭합니다.

1163. 이어서 표시되는 대화 상자에서 **Cancel**을 클릭합니다.

117 

118기기가 연결되어 사용자의 탭에 작동하며, Claude의 접근은 비활성화된 상태로 유지됩니다. 이후 Claude에게 접근 권한을 부여하려면 창에서 **Let Claude use it**을 클릭합니다.

106 119 

107### 권한 모드를 따르는 작업120### 권한 모드를 따르는 작업

108 121 


110 123 

111* 기기에서 URL 열기 (예: 딥 링크 테스트 또는 기기의 Safari에서 페이지 로드), URL이 기기에서 데이터를 전달할 수 있기 때문입니다.124* 기기에서 URL 열기 (예: 딥 링크 테스트 또는 기기의 Safari에서 페이지 로드), URL이 기기에서 데이터를 전달할 수 있기 때문입니다.

112* 앱 빌드 (`xcodebuild`가 Mac에서 프로젝트의 빌드 스크립트를 실행하기 때문). 이미 진행 중인 빌드를 확인하면 프롬프트가 표시되지 않습니다.125* 앱 빌드 (`xcodebuild`가 Mac에서 프로젝트의 빌드 스크립트를 실행하기 때문). 이미 진행 중인 빌드를 확인하면 프롬프트가 표시되지 않습니다.

113* 앱 설치 및 실행, Claude가 빌드 중인 앱뿐만 아니라 지정한 모든 앱을 실행할 수 있기 때문입니다.126* 앱 설치 및 실행, Claude는 사용자가 빌드 중인 앱뿐만 아니라 Claude가 지정한 모든 앱을 실행할 수 있기 때문입니다.

114 127 

115### 시뮬레이터 접근 비활성화128### 시뮬레이터 접근 비활성화

116 129 

Details

53gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc53gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc

54```54```

55 55 

56gpg가 출력하는 지문은 `31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE`여야 합니다. gpg가 파일을 열 수 없거나 유효한 OpenPGP 데이터가 없다고 보고하면 다운로드가 실패했거나 잘못된 콘텐츠를 반환한 것입니다. 네트워크가 `downloads.claude.ai`에 도달할 수 있는지 확인한 후 다운로드 명령을 다시 실행하세요.56gpg가 출력하는 유일한 지문은 `31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE`여야 합니다. gpg가 파일을 열 수 없거나 유효한 OpenPGP 데이터가 없다고 보고하면 다운로드가 실패했거나 잘못된 콘텐츠를 반환한 것입니다. 네트워크가 `downloads.claude.ai`에 도달할 수 있는지 확인한 후 다운로드 명령을 다시 실행하세요.

57 57 

58저장소를 등록합니다:58저장소를 등록합니다:

59 59 

Details

160 160 

161## 예약된 작업에 대한 권한161## 예약된 작업에 대한 권한

162 162 

163각 작업에는 자신의 권한 모드가 있으며, 이는 작업을 만들거나 편집할 때 설정합니다. `~/.claude/settings.json`의 Allow 규칙도 예약된 작업 세션에 적용됩니다. 작업이 [Manual 모드](https://code.claude.com/docs/ko/desktop.md#choose-a-permission-mode)에서 실행되고 권한이 없는 도구를 실행해야 하는 경우, 승인할 때까지 실행이 정지됩니다. 승인하려면 [해당 실행의 세션을 찾아](#find-a-runs-session) 그곳에서 권한 프롬프트에 응답합니다.163각 작업에는 자신의 [권한 모드](https://code.claude.com/docs/ko/desktop.md#choose-a-permission-mode)가 있으며, 이는 작업을 만들거나 편집할 때 설정합니다. `~/.claude/settings.json`의 Allow 규칙도 예약된 작업 세션에 적용됩니다. 실행이 권한 프롬프트에서 정지된 경우 [해당 실행의 세션을 찾아](#find-a-runs-session) 그곳에서 프롬프트에 응답합니다.

164 164 

165정지를 방지하려면 작업을 만든 후 **Run now**를 클릭하고 권한 프롬프트를 확인한 다음 각 프롬프트에 대해 "always allow"를 선택합니다. 해당 작업의 향후 실행은 프롬프트 없이 동일한 도구를 자동으로 승인합니다. 작업의 세부 정보 페이지에서 이러한 승인을 검토하고 취소할 수 있습니다.165정지를 방지하려면 작업을 만든 후 **Run now**를 클릭하고 권한 프롬프트를 확인한 다음 각 프롬프트에 대해 "always allow"를 선택합니다. 이후 실행에서는 이러한 프롬프트 대부분이 생략됩니다. 작업의 세부 정보 페이지에서 이러한 승인을 검토하고 취소할 수 있습니다. 작업 폴더의 파일 편집에 대해 "always allow"를 선택하면 해당 세션만 **Accept edits**로 전환되므로, 작업의 권한 모드를 **Accept edits**로 설정합니다.

166 166 

167[`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구는 매번 호출할 때마다 프롬프트를 표시하며 always-allow 옵션을 제공하지 않습니다. 이러한 도구를 호출하는 실행은 매번 정지됩니다.167[`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구는 매번 호출할 때마다 프롬프트를 표시하며 always-allow 옵션을 제공하지 않습니다. 이러한 도구를 호출하는 실행은 매번 정지됩니다.

168 168 


179 179 

180Desktop의 모든 세션에서 Claude에게 요청하여 작업을 나열, 만들, 편집 및 일시 중지할 수도 있습니다. 예를 들어, "내 dependency-audit 작업을 일시 중지해 줘" 또는 "내 예약된 작업을 보여 줘"입니다. 작업을 삭제하려면 세부 정보 페이지의 **Delete** 버튼을 사용합니다.180Desktop의 모든 세션에서 Claude에게 요청하여 작업을 나열, 만들, 편집 및 일시 중지할 수도 있습니다. 예를 들어, "내 dependency-audit 작업을 일시 중지해 줘" 또는 "내 예약된 작업을 보여 줘"입니다. 작업을 삭제하려면 세부 정보 페이지의 **Delete** 버튼을 사용합니다.

181 181 

182예약된 작업은 실행 중인 세션 내에서 `update_scheduled_task` MCP 도구를 사용하여 자신의 일정이나 프롬프트를 수정할 수도 있습니다. 이를 통해 작업은 발견한 내용에 따라 자신을 재예약할 수 있습니다. 예를 들어, 릴리스 브랜치가 생성되었음을 감지할 때 코드 리뷰를 더 일찍 실행하도록 재예약합니다.182작업이 `update_scheduled_task` MCP 도구로 자신의 일정이나 프롬프트를 변경하도록 허용하려면 **Run now**를 클릭하고 매번 호출을 승인합니다.

183 183 

184디스크에서 작업의 프롬프트를 편집하려면 `~/.claude/scheduled-tasks/<task-name>/SKILL.md`를 엽니다 (설정된 경우 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ko/env-vars) 아래). 파일은 `name` 및 `description`에 대해 YAML frontmatter를 사용하며, 프롬프트는 본문입니다. 변경 사항은 다음 실행에 적용됩니다. Schedule, folder, model 및 enabled state는 이 파일에 없습니다: Edit 양식을 통해 변경하거나 Claude에게 요청합니다.184디스크에서 작업의 프롬프트를 편집하려면 `~/.claude/scheduled-tasks/<task-name>/SKILL.md`를 엽니다 (설정된 경우 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ko/env-vars) 아래). 파일은 `name` 및 `description`에 대해 YAML frontmatter를 사용하며, 프롬프트는 본문입니다. 변경 사항은 다음 실행에 적용됩니다. Schedule, folder, model 및 enabled state는 이 파일에 없습니다: Edit 양식을 통해 변경하거나 Claude에게 요청합니다.

185 185 

env-vars.md +5 −3

Details

221| `CLAUDE_CODE_CLIENT_CERT` | mTLS 인증용 클라이언트 인증서 파일 경로입니다 |221| `CLAUDE_CODE_CLIENT_CERT` | mTLS 인증용 클라이언트 인증서 파일 경로입니다 |

222| `CLAUDE_CODE_CLIENT_KEY` | mTLS 인증용 클라이언트 개인 키 파일 경로입니다 |222| `CLAUDE_CODE_CLIENT_KEY` | mTLS 인증용 클라이언트 개인 키 파일 경로입니다 |

223| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | 암호화된 CLAUDE\_CODE\_CLIENT\_KEY의 암호문구입니다(선택 사항) |223| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | 암호화된 CLAUDE\_CODE\_CLIENT\_KEY의 암호문구입니다(선택 사항) |

224| `CLAUDE_CODE_CONFIG_LOCK_WAIT_MS` | `claude mcp add`와 같이 `user` 또는 `local` 범위 MCP 서버를 추가하거나 제거하는 명령이 [실패](https://code.claude.com/docs/ko/errors.md#mcp-server-was-not-saved-or-removed)하기 전에 `~/.claude.json`의 잠금을 계속 시도하는 시간(밀리초)입니다. 설정하지 않으면 명령은 약 10\~20초 동안 대기하며, 이보다 짧은 값은 아무것도 변경하지 않습니다. Claude Code v2.1.318 이상이 필요합니다 |

224| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | v2.1.186에서 제거되어 현재는 아무 효과가 없습니다. 이전에는 스트리밍 API 요청의 연결, TLS, 응답 헤더 단계에 대해 별도의 타임아웃을 설정했습니다. 대신 `API_TIMEOUT_MS`를 사용합니다. 스트리밍 요청의 응답 헤더 단계는 `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`를 참조하세요 |225| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | v2.1.186에서 제거되어 현재는 아무 효과가 없습니다. 이전에는 스트리밍 API 요청의 연결, TLS, 응답 헤더 단계에 대해 별도의 타임아웃을 설정했습니다. 대신 `API_TIMEOUT_MS`를 사용합니다. 스트리밍 요청의 응답 헤더 단계는 `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`를 참조하세요 |

225| `CLAUDE_CODE_DEBUG_LOGS_DIR` | 디버그 로그 파일 경로를 재정의합니다. 이름과 달리 디렉터리가 아닌 파일 경로입니다. `--debug`, `/debug` 또는 `DEBUG` 환경 변수를 통해 디버그 모드를 별도로 활성화해야 하며, 이 변수만 설정해서는 로깅이 활성화되지 않습니다. [`--debug-file`](https://code.claude.com/docs/ko/cli-reference#cli-flags) 플래그는 두 가지를 한 번에 수행합니다. 기본값은 `~/.claude/debug/<session-id>.txt`입니다 |226| `CLAUDE_CODE_DEBUG_LOGS_DIR` | 디버그 로그 파일 경로를 재정의합니다. 이름과 달리 디렉터리가 아닌 파일 경로입니다. `--debug`, `/debug` 또는 `DEBUG` 환경 변수를 통해 디버그 모드를 별도로 활성화해야 하며, 이 변수만 설정해서는 로깅이 활성화되지 않습니다. [`--debug-file`](https://code.claude.com/docs/ko/cli-reference#cli-flags) 플래그는 두 가지를 한 번에 수행합니다. 기본값은 `~/.claude/debug/<session-id>.txt`입니다 |

226| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | 디버그 로그 파일에 기록되는 최소 로그 수준입니다. 값: `verbose`, `debug`(기본값), `info`, `warn`, `error`. 전체 상태줄 명령 출력 같은 대용량 진단 정보를 포함하려면 `verbose`로 설정하고, 노이즈를 줄이려면 `error`로 높입니다 |227| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | 디버그 로그 파일에 기록되는 최소 로그 수준입니다. 값: `verbose`, `debug`(기본값), `info`, `warn`, `error`. 전체 상태줄 명령 출력 같은 대용량 진단 정보를 포함하려면 `verbose`로 설정하고, 노이즈를 줄이려면 `error`로 높입니다 |


277| `CLAUDE_CODE_DISABLE_WEB_FETCH` | `1`로 설정하면 [WebFetch](https://code.claude.com/docs/ko/tools-reference.md#webfetch-tool-behavior) 도구를 끕니다. [WebSearch](https://code.claude.com/docs/ko/tools-reference.md#websearch-tool-behavior) 도구는 계속 사용할 수 있습니다. Claude Code v2.1.285 이상이 필요합니다 |278| `CLAUDE_CODE_DISABLE_WEB_FETCH` | `1`로 설정하면 [WebFetch](https://code.claude.com/docs/ko/tools-reference.md#webfetch-tool-behavior) 도구를 끕니다. [WebSearch](https://code.claude.com/docs/ko/tools-reference.md#websearch-tool-behavior) 도구는 계속 사용할 수 있습니다. Claude Code v2.1.285 이상이 필요합니다 |

278| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | `1`로 설정하면 Windows에서 [PowerShell 도구](https://code.claude.com/docs/ko/tools-reference.md#powershell-tool) 명령을 `cmd.exe` 런처를 거치지 않고 직접 시작합니다. 기본적으로 런처는 [백그라운드에서 실행 중인](https://code.claude.com/docs/ko/tools-reference.md#background-commands) PowerShell 명령이 [세션의 다음 프로세스로 이어지도록](https://code.claude.com/docs/ko/agent-view.md#the-supervisor-process) 하며, 예를 들어 [세션을 백그라운드로 전환](https://code.claude.com/docs/ko/agent-view.md#from-inside-a-session)할 때가 이에 해당합니다. 변수를 설정하면 백그라운드로 전환된 PowerShell 명령은 세션의 프로세스가 종료될 때 중지됩니다. Bash 명령은 영향을 받지 않습니다. Claude Code v2.1.269 이상이 필요합니다 |279| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | `1`로 설정하면 Windows에서 [PowerShell 도구](https://code.claude.com/docs/ko/tools-reference.md#powershell-tool) 명령을 `cmd.exe` 런처를 거치지 않고 직접 시작합니다. 기본적으로 런처는 [백그라운드에서 실행 중인](https://code.claude.com/docs/ko/tools-reference.md#background-commands) PowerShell 명령이 [세션의 다음 프로세스로 이어지도록](https://code.claude.com/docs/ko/agent-view.md#the-supervisor-process) 하며, 예를 들어 [세션을 백그라운드로 전환](https://code.claude.com/docs/ko/agent-view.md#from-inside-a-session)할 때가 이에 해당합니다. 변수를 설정하면 백그라운드로 전환된 PowerShell 명령은 세션의 프로세스가 종료될 때 중지됩니다. Bash 명령은 영향을 받지 않습니다. Claude Code v2.1.269 이상이 필요합니다 |

279| `CLAUDE_CODE_DISABLE_WORKFLOWS` | `1`로 설정하면 [워크플로](https://code.claude.com/docs/ko/workflows.md#turn-workflows-off)를 비활성화합니다. [`disableWorkflows`](https://code.claude.com/docs/ko/settings-reference#disableworkflows) 설정과 동일합니다 |280| `CLAUDE_CODE_DISABLE_WORKFLOWS` | `1`로 설정하면 [워크플로](https://code.claude.com/docs/ko/workflows.md#turn-workflows-off)를 비활성화합니다. [`disableWorkflows`](https://code.claude.com/docs/ko/settings-reference#disableworkflows) 설정과 동일합니다 |

281| `CLAUDE_CODE_DROP_UNAVAILABLE_DEFERRED_TOOL` | `1`로 설정하면 `-p`로 재개할 때 도구를 사용할 수 없는 [지연된 도구 호출](https://code.claude.com/docs/ko/hooks.md#resume-when-a-deferred-tool-is-unavailable)을 삭제합니다. 이 변수가 없으면 호출이 보류 상태로 남아 보내는 프롬프트가 Claude에 전달되지 않습니다. Claude Code v2.1.319 이상이 필요합니다 |

280| `CLAUDE_CODE_EFFORT_LEVEL` | 지원되는 모델의 effort 수준을 설정합니다. 값: `low`, `medium`, `high`, `xhigh` 또는 `max`. 사용 가능한 수준은 모델에 따라 다릅니다. `--effort`, `/effort`, 그리고 `modelSettings` 및 `effortLevel` 설정보다 우선합니다. [`maxEffortLevel`](https://code.claude.com/docs/ko/settings-reference#maxeffortlevel) 상한은 여전히 적용됩니다. `auto` 또는 `unset`으로 설정하면 Claude Code가 [effort 수준을 보내지 않으므로](https://code.claude.com/docs/ko/model-config.md#send-no-effort-level) API가 해당 모델의 자체 기본값을 적용합니다. [effort 수준 조정](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)을 참조하세요 |282| `CLAUDE_CODE_EFFORT_LEVEL` | 지원되는 모델의 effort 수준을 설정합니다. 값: `low`, `medium`, `high`, `xhigh` 또는 `max`. 사용 가능한 수준은 모델에 따라 다릅니다. `--effort`, `/effort`, 그리고 `modelSettings` 및 `effortLevel` 설정보다 우선합니다. [`maxEffortLevel`](https://code.claude.com/docs/ko/settings-reference#maxeffortlevel) 상한은 여전히 적용됩니다. `auto` 또는 `unset`으로 설정하면 Claude Code가 [effort 수준을 보내지 않으므로](https://code.claude.com/docs/ko/model-config.md#send-no-effort-level) API가 해당 모델의 자체 기본값을 적용합니다. [effort 수준 조정](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)을 참조하세요 |

281| `CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS` | 세션 상태를 담은 [`session_state_changed`](https://code.claude.com/docs/ko/agent-sdk/typescript#sdksessionstatechangedmessage) 메시지를 메시지 스트림에 추가하려면 `1`로 설정합니다. [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/overview.md)가 필요하거나, `--print`, `--output-format stream-json`, `--verbose`가 모두 필요합니다 |283| `CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS` | 세션 상태를 담은 [`session_state_changed`](https://code.claude.com/docs/ko/agent-sdk/typescript#sdksessionstatechangedmessage) 메시지를 메시지 스트림에 추가하려면 `1`로 설정합니다. [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/overview.md)가 필요하거나, `--print`, `--output-format stream-json`, `--verbose`가 모두 필요합니다 |

282| `CLAUDE_CODE_ENABLE_AUTO_MODE` | 이전 릴리스와의 호환성을 위해 허용되며 아무 효과가 없습니다. 자동 모드는 Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, 로그인한 [Claude apps gateway](https://code.claude.com/docs/ko/claude-apps-gateway) 세션을 포함한 모든 제공업체에서 기본적으로 사용할 수 있습니다. v2.1.158부터 v2.1.206까지는 해당 제공업체에서 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)를 사용하려면 이 변수를 `1`로 설정해야 했습니다 |284| `CLAUDE_CODE_ENABLE_AUTO_MODE` | 이전 릴리스와의 호환성을 위해 허용되며 아무 효과가 없습니다. 자동 모드는 Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, 로그인한 [Claude apps gateway](https://code.claude.com/docs/ko/claude-apps-gateway) 세션을 포함한 모든 제공업체에서 기본적으로 사용할 수 있습니다. v2.1.158부터 v2.1.206까지는 해당 제공업체에서 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)를 사용하려면 이 변수를 `1`로 설정해야 했습니다 |


295| `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` | `1`로 설정하면 `bypassPermissions` 모드에서 [위험한 `rm` 명령을 프롬프트 없이 실행](https://code.claude.com/docs/ko/permission-modes#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode)하며, 이는 파괴적인 삭제에 대한 안전 프롬프트를 제거합니다. 연결된 섹션에 이 변수가 효과가 없는 경우가 나열되어 있습니다. Claude Code는 [설정의 `env` 블록에서 이 변수를 무시하므로](https://code.claude.com/docs/ko/settings-reference#variables-claude-code-ignores-in-env) [Claude Code를 실행하는 환경에서 설정하세요](#set-variables-in-your-shell). Claude Code v2.1.311 이상이 필요합니다 |297| `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` | `1`로 설정하면 `bypassPermissions` 모드에서 [위험한 `rm` 명령을 프롬프트 없이 실행](https://code.claude.com/docs/ko/permission-modes#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode)하며, 이는 파괴적인 삭제에 대한 안전 프롬프트를 제거합니다. 연결된 섹션에 이 변수가 효과가 없는 경우가 나열되어 있습니다. Claude Code는 [설정의 `env` 블록에서 이 변수를 무시하므로](https://code.claude.com/docs/ko/settings-reference#variables-claude-code-ignores-in-env) [Claude Code를 실행하는 환경에서 설정하세요](#set-variables-in-your-shell). Claude Code v2.1.311 이상이 필요합니다 |

296| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | 쿼리 루프가 유휴 상태가 된 후 자동으로 종료하기 전까지 기다리는 시간(밀리초)입니다. SDK 모드를 사용하는 자동화된 워크플로와 스크립트에 유용합니다 |298| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | 쿼리 루프가 유휴 상태가 된 후 자동으로 종료하기 전까지 기다리는 시간(밀리초)입니다. SDK 모드를 사용하는 자동화된 워크플로와 스크립트에 유용합니다 |

297| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | [에이전트 팀](https://code.claude.com/docs/ko/agent-teams.md)을 활성화하려면 `1`로 설정합니다. 에이전트 팀은 실험적 기능이며 기본적으로 비활성화되어 있습니다 |299| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | [에이전트 팀](https://code.claude.com/docs/ko/agent-teams.md)을 활성화하려면 `1`로 설정합니다. 에이전트 팀은 실험적 기능이며 기본적으로 비활성화되어 있습니다 |

298| `CLAUDE_CODE_EXTRA_BODY` | 모든 API 요청 본문의 최상위 수준에 병합할 JSON 객체입니다. Claude Code가 직접 노출하지 않는 제공업체별 매개변수를 전달할 때 유용합니다. 셸에서 export한 값은 `claude agents` 또는 `--bg`로 실행하는 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md)에도 적용됩니다. v2.1.206 이전에는 백그라운드 세션이 셸에서 export한 값을 무시하고 백그라운드 수퍼바이저 프로세스가 상속한 값을 사용했습니다 |300| `CLAUDE_CODE_EXTRA_BODY` | `/model` 확인처럼 대화 외부의 일부 요청을 제외하고 모델 요청 본문의 최상위 수준에 병합할 JSON 객체입니다. Claude Code가 직접 노출하지 않는 제공업체별 매개변수를 전달할 때 유용합니다. 셸에서 내보낸 값은 `claude agents` 또는 `--bg`로 디스패치하는 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md)에도 적용됩니다. v2.1.206 이전에는 백그라운드 세션이 셸에서 내보낸 값을 무시하고 백그라운드 감독 프로세스가 상속한 값을 사용했습니다 |

299| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | [파일 읽기](https://code.claude.com/docs/ko/tools-reference.md#large-files)의 기본 토큰 제한(25,000 토큰)을 재정의합니다. 더 큰 파일을 전체로 읽어야 할 때 유용합니다. Claude가 `allow_large` 매개변수를 사용해 수행하는 읽기는 컨텍스트 윈도우에 여유가 있을 때 이 제한을 넘을 수 있습니다 |301| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | [파일 읽기](https://code.claude.com/docs/ko/tools-reference.md#large-files)의 기본 토큰 제한(25,000 토큰)을 재정의합니다. 더 큰 파일을 전체로 읽어야 할 때 유용합니다. Claude가 `allow_large` 매개변수를 사용해 수행하는 읽기는 컨텍스트 윈도우에 여유가 있을 때 이 제한을 넘을 수 있습니다 |

300| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | 이 `claude`가 다른 Claude Code 세션 내부에서 실행된 경우에도 트랜스크립트 저장, 프롬프트 기록, `claude agents` 등록을 강제하려면 `1`로 설정합니다. 예를 들어 `screen` 세션이나 Claude Code의 Bash 도구로 처음 시작된 백그라운드 런처에서 상속된 `CLAUDE_CODE_CHILD_SESSION` 값으로 인해 실제 최상위 세션이 중첩된 세션으로 잘못 분류될 때 사용합니다. v2.1.178부터 Claude Code는 tmux의 경우를 자동으로 감지하여 상속된 마커를 무시하므로 tmux에서는 더 이상 이 변수가 필요하지 않습니다. v2.1.169 이하에서도 적용되며, 이 변수가 재정의하는 중첩 세션 감지가 제거된 v2.1.170과 v2.1.171에서는 아무 효과가 없습니다 |302| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | 이 `claude`가 다른 Claude Code 세션 내부에서 실행된 경우에도 트랜스크립트 저장, 프롬프트 기록, `claude agents` 등록을 강제하려면 `1`로 설정합니다. 예를 들어 `screen` 세션이나 Claude Code의 Bash 도구로 처음 시작된 백그라운드 런처에서 상속된 `CLAUDE_CODE_CHILD_SESSION` 값으로 인해 실제 최상위 세션이 중첩된 세션으로 잘못 분류될 때 사용합니다. v2.1.178부터 Claude Code는 tmux의 경우를 자동으로 감지하여 상속된 마커를 무시하므로 tmux에서는 더 이상 이 변수가 필요하지 않습니다. v2.1.169 이하에서도 적용되며, 이 변수가 재정의하는 중첩 세션 감지가 제거된 v2.1.170과 v2.1.171에서는 아무 효과가 없습니다 |

301| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | 터미널이 취소선을 지원하지만 자동으로 감지되지 않는 경우(예: `TERM_PROGRAM`이 전달되지 않은 SSH 환경) Claude의 응답에서 `~~text~~`를 취소선으로 강제 렌더링하려면 `1`로 설정합니다. 이 변수가 없으면 감지되지 않은 터미널에서는 텍스트를 취소선으로 렌더링하는 대신 `~~` 마커가 그대로 표시됩니다. Claude Code v2.1.186 이상이 필요합니다 |303| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | 터미널이 취소선을 지원하지만 자동으로 감지되지 않는 경우(예: `TERM_PROGRAM`이 전달되지 않은 SSH 환경) Claude의 응답에서 `~~text~~`를 취소선으로 강제 렌더링하려면 `1`로 설정합니다. 이 변수가 없으면 감지되지 않은 터미널에서는 텍스트를 취소선으로 렌더링하는 대신 `~~` 마커가 그대로 표시됩니다. Claude Code v2.1.186 이상이 필요합니다 |


313| `CLAUDE_CODE_GZIP_REQUEST_BODIES` | `api.anthropic.com`으로 전송되는 Claude API, 텔레메트리, [아티팩트](https://code.claude.com/docs/ko/artifacts.md) 게시 요청 본문의 gzip 압축을 끄려면 `0`으로 설정합니다. 기본적으로 Claude Code는 직접 연결에서 큰 요청 본문을 압축하며, 프록시를 통해 요청을 보내거나, 클라이언트 인증서를 구성하거나, `NODE_EXTRA_CA_CERTS`를 설정한 경우에는 압축을 건너뜁니다. Claude Code가 감지할 수 없는 [TLS 검사 프록시](https://code.claude.com/docs/ko/network-config.md#ca-certificate-store)가 압축된 요청을 잘못 처리하는 경우 `0`을 사용합니다 |315| `CLAUDE_CODE_GZIP_REQUEST_BODIES` | `api.anthropic.com`으로 전송되는 Claude API, 텔레메트리, [아티팩트](https://code.claude.com/docs/ko/artifacts.md) 게시 요청 본문의 gzip 압축을 끄려면 `0`으로 설정합니다. 기본적으로 Claude Code는 직접 연결에서 큰 요청 본문을 압축하며, 프록시를 통해 요청을 보내거나, 클라이언트 인증서를 구성하거나, `NODE_EXTRA_CA_CERTS`를 설정한 경우에는 압축을 건너뜁니다. Claude Code가 감지할 수 없는 [TLS 검사 프록시](https://code.claude.com/docs/ko/network-config.md#ca-certificate-store)가 압축된 요청을 잘못 처리하는 경우 `0`을 사용합니다 |

314| `CLAUDE_CODE_HIDE_CWD` | 시작 로고에서 작업 디렉터리를 숨기려면 `1`로 설정합니다. 경로에 OS 사용자 이름이 노출되는 화면 공유나 녹화에 유용합니다 |316| `CLAUDE_CODE_HIDE_CWD` | 시작 로고에서 작업 디렉터리를 숨기려면 `1`로 설정합니다. 경로에 OS 사용자 이름이 노출되는 화면 공유나 녹화에 유용합니다 |

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

316| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | `1`로 설정하면 `/ide`가 IDE 확장 프로그램을 설치하지 않습니다. [`autoInstallIdeExtension`](https://code.claude.com/docs/ko/settings-reference#autoinstallideextension)을 `false`로 설정하는 것과 동일합니다 |318| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | `/ide`가 IDE 확장 프로그램을 설치하지 않도록 하려면 `1`로 설정합니다. [`autoInstallIdeExtension`](https://code.claude.com/docs/ko/settings-reference#autoinstallideextension)을 `false`로 설정하는 것과 동일합니다. v2.1.318 이전 버전의 Claude Code는 VS Code, Cursor 또는 Devin Desktop 터미널에서 `claude`를 시작할 때도 확장 프로그램을 설치하거나 업데이트합니다. 이 변수는 이 동작도 중지합니다 |

317| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | 연결 중 IDE 잠금 파일 항목의 유효성 검사를 건너뛰려면 `1`로 설정합니다. IDE가 실행 중인데도 자동 연결이 IDE를 찾지 못할 때 사용합니다 |319| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | 연결 중 IDE 잠금 파일 항목의 유효성 검사를 건너뛰려면 `1`로 설정합니다. IDE가 실행 중인데도 자동 연결이 IDE를 찾지 못할 때 사용합니다 |

318| `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` | [유휴 압축](https://code.claude.com/docs/ko/settings-reference.md#idlecompaction)이 대화에 적용되는 컨텍스트 크기(토큰)입니다(기본값: `200000`). 양의 정수를 허용하며 그 외의 값은 무시됩니다. `100000` 미만의 값은 최저 임계값인 `100000`으로 올려집니다. 유휴 압축은 조건을 충족하는 대화에 대해 기본적으로 켜져 있습니다. 끄려면 `idleCompaction`을 `false`로 설정합니다. Claude Code v2.1.290 이상이 필요합니다 |320| `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` | [유휴 압축](https://code.claude.com/docs/ko/settings-reference.md#idlecompaction)이 대화에 적용되는 컨텍스트 크기(토큰)입니다(기본값: `200000`). 양의 정수를 허용하며 그 외의 값은 무시됩니다. `100000` 미만의 값은 최저 임계값인 `100000`으로 올려집니다. 유휴 압축은 조건을 충족하는 대화에 대해 기본적으로 켜져 있습니다. 끄려면 `idleCompaction`을 `false`로 설정합니다. Claude Code v2.1.290 이상이 필요합니다 |

319| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Agent 도구가 추가 생성을 거부하기 전까지 한 세션에서 동시에 실행할 수 있는 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#concurrent-subagent-limit) 수입니다(기본값: 20). 숫자로만 된 양의 정수를 허용하며 그 밖의 값은 무시되므로, 이 변수로 상한을 조정할 수는 있지만 비활성화할 수는 없습니다. Claude Code v2.1.217 이상이 필요합니다 |321| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Agent 도구가 추가 생성을 거부하기 전까지 한 세션에서 동시에 실행할 수 있는 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#concurrent-subagent-limit) 수입니다(기본값: 20). 숫자로만 된 양의 정수를 허용하며 그 밖의 값은 무시되므로, 이 변수로 상한을 조정할 수는 있지만 비활성화할 수는 없습니다. Claude Code v2.1.217 이상이 필요합니다 |


486| `MCP_DISCOVERY_CACHE_STRIKES` | [검색 캐시](https://code.claude.com/docs/ko/mcp.md#server-status-detail) 항목이 `MCP_DISCOVERY_CACHE_TTL_S`보다 오래된 상태로 시작하면 Claude Code는 백그라운드에서 항목을 새로 고칩니다. 이 변수는 Claude Code가 항목을 폐기하고 다음 시작 시 서버에 연결하기 전까지 연속으로 실패할 수 있는 새로 고침 횟수를 설정합니다(기본값: 1). 네트워크 연결이 가끔 끊기는 경우 값을 높이면 한 번의 새로 고침 실패로 항목이 폐기되지 않습니다. Claude Code v2.1.238 이상이 필요합니다 |488| `MCP_DISCOVERY_CACHE_STRIKES` | [검색 캐시](https://code.claude.com/docs/ko/mcp.md#server-status-detail) 항목이 `MCP_DISCOVERY_CACHE_TTL_S`보다 오래된 상태로 시작하면 Claude Code는 백그라운드에서 항목을 새로 고칩니다. 이 변수는 Claude Code가 항목을 폐기하고 다음 시작 시 서버에 연결하기 전까지 연속으로 실패할 수 있는 새로 고침 횟수를 설정합니다(기본값: 1). 네트워크 연결이 가끔 끊기는 경우 값을 높이면 한 번의 새로 고침 실패로 항목이 폐기되지 않습니다. Claude Code v2.1.238 이상이 필요합니다 |

487| `MCP_DISCOVERY_CACHE_TTL_S` | Claude Code가 [검색 캐시](https://code.claude.com/docs/ko/mcp.md#server-status-detail) 항목을 새로 고치지 않고 사용하는 시간(초)입니다(기본값: 900). 항목이 그보다 오래된 상태로 시작하면 Claude Code는 여전히 항목을 사용하되 백그라운드에서 새로 고칩니다. 항목이 `MCP_DISCOVERY_CACHE_MAX_STALE_S`보다 오래되면 Claude Code는 대신 항목을 폐기합니다. Claude Code는 값을 `MCP_DISCOVERY_CACHE_MAX_STALE_S`(기본값 4시간)로 제한합니다. v2.1.238 이전에는 Claude Code가 값을 제한하지 않았습니다 |489| `MCP_DISCOVERY_CACHE_TTL_S` | Claude Code가 [검색 캐시](https://code.claude.com/docs/ko/mcp.md#server-status-detail) 항목을 새로 고치지 않고 사용하는 시간(초)입니다(기본값: 900). 항목이 그보다 오래된 상태로 시작하면 Claude Code는 여전히 항목을 사용하되 백그라운드에서 새로 고칩니다. 항목이 `MCP_DISCOVERY_CACHE_MAX_STALE_S`보다 오래되면 Claude Code는 대신 항목을 폐기합니다. Claude Code는 값을 `MCP_DISCOVERY_CACHE_MAX_STALE_S`(기본값 4시간)로 제한합니다. v2.1.238 이전에는 Claude Code가 값을 제한하지 않았습니다 |

488| `MCP_OAUTH_CALLBACK_PORT` | [사전 구성된 자격 증명](https://code.claude.com/docs/ko/mcp.md#use-pre-configured-oauth-credentials)으로 MCP 서버를 추가할 때 `--callback-port`의 대안으로 사용하는 OAuth 리디렉션 콜백용 고정 포트입니다 |490| `MCP_OAUTH_CALLBACK_PORT` | [사전 구성된 자격 증명](https://code.claude.com/docs/ko/mcp.md#use-pre-configured-oauth-credentials)으로 MCP 서버를 추가할 때 `--callback-port`의 대안으로 사용하는 OAuth 리디렉션 콜백용 고정 포트입니다 |

489| `MCP_PROTOCOL_NEGOTIATION` | [v2 MCP 클라이언트 런타임](https://code.claude.com/docs/ko/mcp.md#mcp-client-runtimes)에서만, Claude Code가 MCP 프로토콜 리비전 2026-07-28에 대해 서버를 탐색할지 여부를 제어합니다. 탐색을 건너뛰어 모든 서버가 해당 리비전 이전의 핸드셰이크로 연결되게 하려면 `legacy`를 설정합니다. 탐색을 지원하는 서버 종류, 즉 HTTP 및 stdio 서버, claude.ai 커넥터, 클라우드 및 Remote Control 세션의 커넥터를 탐색하려면 `auto`를 설정합니다. 변수가 설정되지 않은 경우 Claude Code는 기본적으로 동일한 종류를 탐색합니다. [MCP 클라이언트 런타임](https://code.claude.com/docs/ko/mcp.md#mcp-client-runtimes)을 참조하십시오. 그 외의 값은 디버그 로그에 경고를 남기고 무시됩니다. Claude Code v2.1.221 이상이 필요합니다 |491| `MCP_PROTOCOL_NEGOTIATION` | [v2 MCP 클라이언트 런타임](https://code.claude.com/docs/ko/mcp.md#mcp-client-runtimes)에서만, Claude Code가 MCP 프로토콜 리비전 2026-07-28에 대해 서버를 탐색할지 여부를 제어합니다. 모든 서버를 이전 핸드셰이크로 유지하려면 `legacy`를, 이를 지원하는 서버 종류를 탐색하려면 `auto`를 설정합니다. 설정되지 않으면 Claude Code는 해당 서버를 탐색하지만 [일부 서버를 건너뛸](https://code.claude.com/docs/ko/mcp.md#mcp-client-runtimes) 수 있습니다. 그 밖의 값은 디버그 로그에 경고를 남기고 무시됩니다. Claude Code v2.1.221 이상이 필요합니다 |

490| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | 시작 중 병렬로 연결할 원격 MCP 서버(HTTP/SSE)의 최대 수입니다(기본값: 20) |492| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | 시작 중 병렬로 연결할 원격 MCP 서버(HTTP/SSE)의 최대 수입니다(기본값: 20) |

491| `MCP_SDK_GENERATION` | 이 프로세스가 MCP 서버에 연결할 때 사용할 [MCP 클라이언트 런타임](https://code.claude.com/docs/ko/mcp.md#mcp-client-runtimes)을 고정합니다. MCP TypeScript SDK 1.x 기반의 `v1` 또는 [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/) 기반의 `v2`입니다. 변수가 없으면 Claude Code는 해당 섹션에 나열된 버전부터 v2를 사용합니다. Claude Code v2.1.221 이상에서 v2 런타임은 MCP OAuth 서버가 인가 응답에서 반환하는 발급자를 확인하고, 일치하지 않으면 `Issuer mismatch in authorization response`로 시작하는 오류와 함께 로그인을 실패시킵니다. v1 런타임은 이 확인을 실행하지 않습니다. 인식할 수 없는 값을 설정하면 Claude Code는 이를 무시하고 디버그 로그에 경고를 기록합니다. Claude Code는 프로세스당 한 번 값을 읽습니다. Claude Code v2.1.218 이상이 필요합니다 |493| `MCP_SDK_GENERATION` | 이 프로세스가 MCP 서버에 연결할 때 사용할 [MCP 클라이언트 런타임](https://code.claude.com/docs/ko/mcp.md#mcp-client-runtimes)을 고정합니다. MCP TypeScript SDK 1.x 기반의 `v1` 또는 [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/) 기반의 `v2`입니다. 변수가 없으면 Claude Code는 해당 섹션에 나열된 버전부터 v2를 사용합니다. Claude Code v2.1.221 이상에서 v2 런타임은 MCP OAuth 서버가 인가 응답에서 반환하는 발급자를 확인하고, 일치하지 않으면 `Issuer mismatch in authorization response`로 시작하는 오류와 함께 로그인을 실패시킵니다. v1 런타임은 이 확인을 실행하지 않습니다. 인식할 수 없는 값을 설정하면 Claude Code는 이를 무시하고 디버그 로그에 경고를 기록합니다. Claude Code는 프로세스당 한 번 값을 읽습니다. Claude Code v2.1.218 이상이 필요합니다 |

492| `MCP_SERVER_CONNECTION_BATCH_SIZE` | 시작 중 병렬로 연결할 로컬 MCP 서버(stdio)의 최대 수입니다(기본값: 3) |494| `MCP_SERVER_CONNECTION_BATCH_SIZE` | 시작 중 병렬로 연결할 로컬 MCP 서버(stdio)의 최대 수입니다(기본값: 3) |

errors.md +26 −16

Details

61| `Could not resolve authentication method` | [인증](#could-not-resolve-authentication-method) |61| `Could not resolve authentication method` | [인증](#could-not-resolve-authentication-method) |

62| `Invalid API key` | [인증](#invalid-api-key) |62| `Invalid API key` | [인증](#invalid-api-key) |

63| `Your apiKeyHelper script is failing` | [인증](#your-apikeyhelper-script-is-failing) |63| `Your apiKeyHelper script is failing` | [인증](#your-apikeyhelper-script-is-failing) |

64| `Claude Code didn't send your claude.ai login, because the API key helper your administrator set isn't in effect` | [인증](#claude-code-didnt-send-your-claude-ai-login) |64| `Your organization's settings need an update` | [인증](#claude-code-didnt-send-your-claude-ai-login) |

65| `Couldn't load your organization's settings. Check your connection` | [인증](#claude-code-didnt-send-your-claude-ai-login) |

66| `Restart Claude Code to finish signing in` | [인증](#claude-code-didnt-send-your-claude-ai-login) |

65| `Invalid auth token · Fix external auth token` | [인증](#invalid-request-header-value) |67| `Invalid auth token · Fix external auth token` | [인증](#invalid-request-header-value) |

66| `Invalid ANTHROPIC_CUSTOM_HEADERS · Fix the environment variable` | [인증](#invalid-request-header-value) |68| `Invalid ANTHROPIC_CUSTOM_HEADERS · Fix the environment variable` | [인증](#invalid-request-header-value) |

67| `Invalid request header from the environment · Fix the environment variable` | [인증](#invalid-request-header-value) |69| `Invalid request header from the environment · Fix the environment variable` | [인증](#invalid-request-header-value) |


1117 1119 

1118### Claude Code didn't send your claude.ai login1120### Claude Code didn't send your claude.ai login

1119 1121 

1120이 메시지 전체를 관리자에게 보내십시오. 메시지에는 관리자가 적용할 수 있는 변경 사항이 나열되어 있습니다. 이 메시지는 Claude Code가 프롬프트를 거부했다는 의미입니다. claude.ai 로그인을 사용하는 동안 Claude Code는 다시 시작한 후에도 계속 프롬프트를 거부합니다:1122다음 메시지는 Claude Code가 요청을 거부하고 claude.ai 로그인을 전송하지 않았다는 의미입니다.

1121 1123 

1122```text theme={null}1124```text theme={null}

1123Claude Code didn't send your claude.ai login, because the API key helper your administrator set isn't in effect. Your organization's managed settings may be overriding it. Ask your administrator to keep the key helper and its API address in effect, to name Anthropic's API address in those managed settings, or to remove the key helper. Run /status to see your setting sources.1125Your organization's settings need an update. Ask your administrator to fix the API key helper configuration.

1126Couldn't load your organization's settings. Check your connection, then restart Claude Code.

1127Restart Claude Code to finish signing in.

1124```1128```

1125 1129 

1126**해결 방법:**1130**해결 방법:**

1127 1131 

1128* 머신에 어떤 관리형 소스가 있는지 관리자에게 알리려면 Claude Code 프롬프트에서 `/status`를 실행하고 [`Setting sources` 줄](https://code.claude.com/docs/ko/managed-settings#read-the-source-in-/status)을 복사합니다. `Skipped sources` 줄이 표시되면 그것도 복사합니다1132* `Your organization's settings need an update`: 관리자에게 API 키 헬퍼 구성을 수정하도록 요청하세요

1129* 설정을 관리하는 경우 [머신의 키 헬퍼가 적용되지 않는 이유](https://code.claude.com/docs/ko/server-managed-settings.md#machine-apikeyhelper-not-in-effect)를 참조하십시오1133 * 머신에 어떤 관리형 소스가 있는지 관리자에게 알리려면 Claude Code 프롬프트에서 `/status`를 실행하고 [`Setting sources` 줄](https://code.claude.com/docs/ko/managed-settings#read-the-source-in-/status)을 복사하세요. `Skipped sources` 줄이 표시되면 그것도 복사하세요

1134 * 사용자가 설정을 관리하고 헬퍼가 머신의 관리형 설정 파일 또는 MDM 정책에 있다면 [When a machine's `apiKeyHelper` isn't in effect](https://code.claude.com/docs/ko/server-managed-settings#machine-apikeyhelper-not-in-effect)를 참조하세요

1135* `Couldn't load your organization's settings`: 연결을 확인한 다음 Claude Code를 다시 시작하세요. 다시 시작한 후에도 메시지가 다시 나타나면 관리자에게 알리세요

1136* `Restart Claude Code to finish signing in`: Claude Code를 다시 시작하세요

1137 

1138v2.1.315 이전에는 거부된 프롬프트나 파일 업로드에 대해 `Claude Code didn't send your claude.ai login`으로 시작하는 하나의 메시지가 출력되었습니다.

1130 1139 

1131### 유효하지 않은 요청 헤더 값1140### 유효하지 않은 요청 헤더 값

1132 1141 


3422* **`Error: Workspace not trusted. <folder> is your home directory`**: 홈 디렉터리에 대한 신뢰는 절대 저장되지 않으므로 그곳에서 먼저 `claude`를 실행해도 도움이 되지 않습니다. 대신 프로젝트 디렉터리에서 `claude`를 한 번 실행해 신뢰 대화 상자를 수락한 후 그곳에서 `claude ultrareview`를 실행하거나, `--trust-workspace`를 추가합니다.3431* **`Error: Workspace not trusted. <folder> is your home directory`**: 홈 디렉터리에 대한 신뢰는 절대 저장되지 않으므로 그곳에서 먼저 `claude`를 실행해도 도움이 되지 않습니다. 대신 프로젝트 디렉터리에서 `claude`를 한 번 실행해 신뢰 대화 상자를 수락한 후 그곳에서 `claude ultrareview`를 실행하거나, `--trust-workspace`를 추가합니다.

3423* **`No answer in time.` 뒤에 `Error: Workspace not trusted`**: `Trust <folder>? [y/N]` 질문에 5분 동안 응답이 없었습니다. `claude ultrareview`를 다시 실행하고 질문에 답합니다.3432* **`No answer in time.` 뒤에 `Error: Workspace not trusted`**: `Trust <folder>? [y/N]` 질문에 5분 동안 응답이 없었습니다. `claude ultrareview`를 다시 실행하고 질문에 답합니다.

3424* **`Ultrareview did not start: <folder> is not trusted`**: `n`으로 답하거나 Enter를 누르는 등 `Trust <folder>? [y/N]` 질문에서 거절했습니다. 리뷰를 시작하려면 `claude ultrareview`를 다시 실행하고 `y`로 답합니다.3433* **`Ultrareview did not start: <folder> is not trusted`**: `n`으로 답하거나 Enter를 누르는 등 `Trust <folder>? [y/N]` 질문에서 거절했습니다. 리뷰를 시작하려면 `claude ultrareview`를 다시 실행하고 `y`로 답합니다.

3425* **``Ultrareview did not start: `--trust-workspace` takes no value``**: `--trust-workspace` 뒤에 PR 번호나 `false`처럼 플래그가 아닌 값이 왔습니다. 폴더를 신뢰하지 않는다면 플래그를 빼고 실행합니다. 이번 실행에 대해 신뢰하려면 PR 번호나 기준 브랜치를 플래그 앞에 둡니다: `claude ultrareview 1234 --trust-workspace`.3434* **``Ultrareview did not start: `--trust-workspace` takes no value``**: PR 번호나 `false` 등 플래그가 아닌 무언가가 `--trust-workspace` 뒤에 있습니다. 폴더를 신뢰하지 않는다면 플래그를 빼십시오. 이번 실행에서 신뢰하려면 PR 번호나 기본 브랜치를 플래그 앞에 둡니다: `claude ultrareview 1234 --trust-workspace`.

3426 3435 

3427v2.1.309 이전에는 `claude ultrareview`가 `--trust-workspace`를 받지 않았습니다.3436v2.1.309 이전에는 `claude ultrareview`가 `--trust-workspace`를 받지 않았습니다.

3428 3437 


3554 3563 

3555### MCP server was not saved or removed3564### MCP server was not saved or removed

3556 3565 

3557`user` 또는 `local` [범위](https://code.claude.com/docs/ko/mcp.md#mcp-installation-scopes)의 서버에 대해 `claude mcp add`, `claude mcp add-json` 또는 `claude mcp remove`를 실행했습니다. 두 범위 모두 `~/.claude.json`에 저장되는데, Claude Code가 기록 후 파일을 다시 읽었을 때 변경 사항이 없었습니다. 명령은 성공 줄 대신 이 오류와 함께 종료됩니다.3566이 오류는 `claude mcp add` 또는 `claude mcp remove` 같은 명령이 변경 사항을 `~/.claude.json`에 반영하지 못했다는 의미입니다. 다른 Claude Code 프로세스가 파일을 잠근 상태로 유지했거나, 파일이 읽기 전용이거나 샌드박스로 보호되어 있을 수 있습니다.

3558 3567 

3559```text theme={null}3568```text theme={null}

3560MCP server "example" was not saved to /home/user/.claude.json. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox, then add the server again.3569MCP server "example" was not saved to /home/user/.claude.json. If other Claude Code processes use that file, they may have kept it locked: add the server again, with CLAUDE_CODE_CONFIG_LOCK_WAIT_MS=60000 set to wait up to a minute. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox first.

3561```3570```

3562 3571 

3563제거 후에는 메시지가 `was not removed from`으로 표시되고 `then remove the server again`으로 끝납니다. `local` 범위 서버의 경우 경로 뒤에 해당 항목이 속한 프로젝트 디렉터리가 `(local scope for /path/to/project)` 형식으로 표시됩니다.3572제거 후에는 메시지에 `was not saved to` 대신 `was not removed from`이, `add the server again` 대신 `remove the server again`이 표시됩니다. `local` 범위 서버의 경우 경로 뒤에 해당 항목이 속한 프로젝트 디렉터리가 `(local scope for /path/to/project)` 형식으로 표시됩니다.

3564 

3565v2.1.283 이전에는 변경 사항이 파일에 반영되지 않았어도 `claude mcp add`, `claude mcp add-json`, `claude mcp remove`가 성공을 보고했습니다.

3566 3573 

3567**해결 방법:**3574**해결 방법:**

3568 3575 

3569* 메시지에 표시된 파일을 쓰기 가능하게 만들거나 샌드박스 외부에서 명령을 실행한 다음, 같은 추가 또는 제거 명령을 다시 실행합니다.3576* **다른 Claude Code 프로세스가 실행 중인 경우**: 명령은 파일 잠금을 약 10\~20초 동안 기다린 후 기록하지 않고 포기합니다. [`CLAUDE_CODE_CONFIG_LOCK_WAIT_MS`](https://code.claude.com/docs/ko/env-vars#variables)를 `60000`처럼 더 긴 대기 시간(밀리초)으로 설정하여 같은 명령을 다시 실행합니다.

3577* **파일이 읽기 전용이거나 샌드박스로 보호되는 경우**: 메시지에 명시된 파일을 쓰기 가능하게 만들고 같은 add 또는 remove 명령을 다시 실행하거나, 샌드박스 밖에서 해당 명령을 실행합니다.

3578 

3579v2.1.283 이전에는 변경 사항이 파일에 반영되지 않았을 때도 `claude mcp add`, `claude mcp add-json`, `claude mcp remove`가 성공을 보고했습니다. v2.1.318 이전에는 메시지에 잠금이 언급되지 않았고, Claude Code가 [`CLAUDE_CODE_CONFIG_LOCK_WAIT_MS`](https://code.claude.com/docs/ko/env-vars#variables)를 읽지 않았습니다.

3570 3580 

3571### MCP server may not have been saved or removed3581### MCP server may not have been saved or removed

3572 3582 

3573`user` 또는 `local` [범위](https://code.claude.com/docs/ko/mcp.md#mcp-installation-scopes)의 서버에 대해 `claude mcp add`, `claude mcp add-json` 또는 `claude mcp remove`를 실행했는데, Claude Code가 변경 사항을 확인하기 위해 `~/.claude.json`을 다시 읽지 못했습니다. 변경 사항이 디스크에 반영되었을 수도 있고 아닐 수도 있습니다. 괄호 안의 텍스트는 해당 읽기에서 발생한 오류입니다.3583`user` 또는 `local` [범위](https://code.claude.com/docs/ko/mcp.md#mcp-installation-scopes)의 서버에 대해 `claude mcp add`, `claude mcp add-json`, `claude mcp remove`를 실행했는데, Claude Code가 변경 사항을 확인하기 위해 `~/.claude.json`을 다시 읽지 못한 경우입니다. 변경 사항이 디스크에 반영되었을 수도 있고 아닐 수도 있습니다. `to confirm the change` 뒤의 괄호 안에 사유가 표시됩니다.

3574 3584 

3575```text theme={null}3585```text theme={null}

3576MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.3586MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.

3577```3587```

3578 3588 

3579제거 후에는 메시지가 `may not have been removed`로 표시되고 `then remove the server again if it is still listed`로 끝납니다.3589제거 후에는 메시지에 `may not have been removed`가 표시되고 `then remove the server again if it is still listed`로 끝납니다. 사유가 `the file was not found`인 경우 서버가 여전히 구성되어 있을 수 있습니다.

3580 3590 

3581v2.1.283 이전에는 변경 사항을 확인할 수 없어도 명령이 성공을 보고했습니다.3591v2.1.283 이전에는 변경 사항을 확인할 수 없어도 명령이 성공을 보고했습니다.

3582 3592 


3714 3724 

3715명령이 실행되기 전에 발생하는 관련 메시지도 있습니다.3725명령이 실행되기 전에 발생하는 관련 메시지도 있습니다.

3716 3726 

3717* `Shell command permission check failed for pattern "..."`: 명령의 권한 검사에서 허용되지 않았습니다. [주입된 명령의 권한 검사](https://code.claude.com/docs/ko/skills.md#permission-checks-on-injected-commands)에서 각 권한 모드에서 어떤 결과가 중단을 일으키는지, 그리고 `allowed-tools`로 명령을 사전 승인하는 방법을 설명합니다3727* `Shell command permission check failed for pattern "..."`: 명령의 권한 검사가 명령을 허용하지 않았습니다. [주입된 명령에 대한 권한 검사](https://code.claude.com/docs/ko/skills.md#permission-checks-on-injected-commands)에서 각 권한 모드에서 어떤 결과가 중단되는지와 `allowed-tools`로 명령을 미리 승인하는 방법을 다룹니다

3718* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: 스킬의 frontmatter가 bash가 없는 컴퓨터에서 bash를 요구합니다. Git for Windows를 설치하거나 frontmatter를 `shell: powershell`로 변경합니다. [주입된 명령이 실행되는 방식](https://code.claude.com/docs/ko/skills.md#how-injected-commands-run)을 참조하세요3728* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: 스킬의 frontmatter가 bash가 없는 컴퓨터에서 bash를 요구합니다. Git for Windows를 설치하거나 frontmatter를 `shell: powershell`로 변경합니다. [주입된 명령이 실행되는 방식](https://code.claude.com/docs/ko/skills.md#how-injected-commands-run)을 참조하세요

3719 3729 

3720**해결 방법:**3730**해결 방법:**


3868 3878 

3869* **기본 브랜치를 전달하지 않은 경우**: Claude Code는 저장소의 기본 브랜치와 비교했으며, 위 예시처럼 기본 브랜치를 명시적으로 전달하도록 제안합니다3879* **기본 브랜치를 전달하지 않은 경우**: Claude Code는 저장소의 기본 브랜치와 비교했으며, 위 예시처럼 기본 브랜치를 명시적으로 전달하도록 제안합니다

3870* **이미 클론에 있는 기본 브랜치를 전달한 경우**: 힌트는 ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``입니다3880* **이미 클론에 있는 기본 브랜치를 전달한 경우**: 힌트는 ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``입니다

3871* **클론에 없는 기본 브랜치를 전달한 경우**: Claude Code는 비교하기 전에 origin에서 해당 브랜치를 가져왔습니다. 힌트는 ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``입니다. Claude Code가 클론이 shallow 클론인지 판단할 수 없는 경우에는 대신 `git fetch --unshallow origin`을 제안합니다. v2.1.221 이전에는 가져온 모든 기본 브랜치에 대해 힌트가 `git fetch --unshallow origin`을 제안했으며, 완전한 클론에서는 해당 명령이 `fatal: --unshallow on a complete repository does not make sense`와 함께 실패했습니다.3881* **클론에 없던 기본 브랜치를 전달한 경우**: Claude Code가 비교하기 전에 origin에서 해당 브랜치를 가져왔습니다. 힌트는 ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``이며, Claude Code가 클론이 얕은(shallow) 클론인지 판단할 수 없는 경우에는 대신 `git fetch --unshallow origin`을 제안합니다. v2.1.221 이전에는 가져온 모든 기본 브랜치에 대해 `git fetch --unshallow origin`을 제안했으며, 완전한 클론에서는 이 명령이 `fatal: --unshallow on a complete repository does not make sense`와 함께 실패합니다.

3872 3882 

3873**해결 방법:**3883**해결 방법:**

3874 3884 

fast-mode.md +5 −5

Details

35CLI에서 다음 중 한 가지 방법으로 빠른 모드를 전환합니다:35CLI에서 다음 중 한 가지 방법으로 빠른 모드를 전환합니다:

36 36 

37* `/fast`를 입력하고 Space를 눌러 켜거나 끕니다. 그 다음 Enter를 눌러 확인합니다37* `/fast`를 입력하고 Space를 눌러 켜거나 끕니다. 그 다음 Enter를 눌러 확인합니다

38* [사용자 설정 파일](https://code.claude.com/docs/ko/settings.md)에서 `"fastMode": true`를 설정합니다38* 빠른 모드를 지원하는 모델에서 [사용자 설정 파일](https://code.claude.com/docs/ko/settings.md)에 `"fastMode": true`를 설정합니다. 다른 모델에서 이를 설정하면 해당 모델이 그대로 유지되며 빠른 모드는 꺼진 상태로 남습니다.

39 39 

40기본적으로 빠른 모드는 대화형 세션에서 켜면 세션 간에 유지됩니다. 빠른 모드를 각 세션마다 재설정하도록 구성할 수 있습니다. 자세한 내용은 [세션별 옵트인 필요](#require-per-session-opt-in)를 참조합니다.40기본적으로 빠른 모드는 대화형 세션에서 켜면 지원되는 모델에서 세션 간에 유지됩니다. 빠른 모드를 각 세션마다 재설정하도록 구성할 수 있습니다. 자세한 내용은 [세션별 옵트인 필요](#require-per-session-opt-in)를 참조합니다.

41 41 

42[클라우드 세션](#use-fast-mode-in-cloud-sessions) 외부에서 [비대화형 모드](https://code.claude.com/docs/ko/headless.md)에서 `-p` 플래그를 사용하면, `/fast`는 [`--settings`](https://code.claude.com/docs/ko/cli-reference#cli-flags) 값에 빠른 모드가 켜져 있는 상태로 시작된 세션에서만 작동합니다. 예를 들어 `claude -p --settings '{"fastMode": true}'`와 같이 사용하면, 토글이 해당 세션에만 적용되며 기본값으로 저장되지 않습니다. `-p` 형식은 Claude Code v2.1.205 이상이 필요합니다. 비대화형 모드의 다른 곳에서는 빠른 모드를 사용할 수 없다는 명령 보고가 나타납니다.42[클라우드 세션](#use-fast-mode-in-cloud-sessions) 외부에서 [비대화형 모드](https://code.claude.com/docs/ko/headless.md)에서 `-p` 플래그를 사용하면, `/fast`는 [`--settings`](https://code.claude.com/docs/ko/cli-reference#cli-flags) 값에 빠른 모드가 켜져 있는 상태로 시작된 세션에서만 작동합니다. 예를 들어 `claude -p --settings '{"fastMode": true}'`와 같이 사용하면, 토글이 해당 세션에만 적용되며 기본값으로 저장되지 않습니다. `-p` 형식은 Claude Code v2.1.205 이상이 필요합니다. 비대화형 모드의 다른 곳에서는 빠른 모드를 사용할 수 없다는 명령 보고가 나타납니다.

43 43 


45 45 

46최상의 비용 효율성을 위해 대화 중간에 전환하기보다는 세션 시작 시 빠른 모드를 활성화합니다. 자세한 내용은 [비용 트레이드오프 이해](#understand-the-cost-tradeoff)를 참조합니다.46최상의 비용 효율성을 위해 대화 중간에 전환하기보다는 세션 시작 시 빠른 모드를 활성화합니다. 자세한 내용은 [비용 트레이드오프 이해](#understand-the-cost-tradeoff)를 참조합니다.

47 47 

48빠른 모드를 활성화하면:48`/fast`로 빠른 모드를 활성화하면:

49 49 

50* 현재 모델이 빠른 모드를 지원하지 않으면 Claude Code가 Opus로 전환합니다50* 현재 모델이 빠른 모드를 지원하지 않으면 Claude Code가 Opus로 전환합니다

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


196 196 

197### 세션별 옵트인 필요197### 세션별 옵트인 필요

198 198 

199기본적으로 사용자가 대화형 세션에서 활성화하는 빠른 모드는 세션 간에 유지됩니다. 이를 변경하려면 [설정 파일](https://code.claude.com/docs/ko/settings.md#where-settings-live)에서 `fastModePerSessionOptIn`을 `true`로 설정합니다. 이로 인해 각 세션이 빠른 모드가 꺼진 상태로 시작되며 사용자가 `/fast`로 명시적으로 활성화해야 합니다. [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) 요금제의 소유자는 [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md)을 통해 조직 전체에 배포할 수 있습니다.199기본적으로 사용자가 대화형 세션에서 켠 빠른 모드는 지원되는 모델에서 세션 간에 유지됩니다. 이를 변경하려면 [설정 파일](https://code.claude.com/docs/ko/settings.md#where-settings-live)에서 `fastModePerSessionOptIn`을 `true`로 설정합니다. 이로 인해 각 세션이 빠른 모드가 꺼진 상태로 시작되며 사용자가 `/fast`로 명시적으로 활성화해야 합니다. [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) 요금제의 소유자는 [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md)을 통해 조직 전체에 배포할 수 있습니다.

200 200 

201```json theme={null}201```json theme={null}

202{202{


221 221 

222세션 중에 사용 크레딧이 부족하면 Claude Code는 거부된 각 빠른 모드 요청을 표준 속도 및 가격으로 재시도하므로 계속 작업할 수 있으며 쿨다운이 없습니다. 거부 사항을 보는 방식은 세션 유형에 따라 다릅니다:222세션 중에 사용 크레딧이 부족하면 Claude Code는 거부된 각 빠른 모드 요청을 표준 속도 및 가격으로 재시도하므로 계속 작업할 수 있으며 쿨다운이 없습니다. 거부 사항을 보는 방식은 세션 유형에 따라 다릅니다:

223 223 

224* 대화형 세션에서 Claude Code는 "Fast mode disabled · usage credits exhausted" 알림을 표시하고 세션의 나머지 부분에서 빠른 모드를 끕니다. 저장된 빠른 모드 기본 설정은 변경되지 않습니다: `/fast`를 실행하여 빠른 모드를 다시 켭니다.224* 대화형 세션에서 Claude Code는 "Fast mode disabled · Out of usage credits" 알림을 표시하고 빠른 모드를 끕니다. 저장된 빠른 모드 기본 설정은 변경되지 않습니다. `/fast`를 실행하여 빠른 모드를 다시 켭니다.

225* [비대화형 모드](https://code.claude.com/docs/ko/headless.md)에서 `--output-format stream-json`을 사용하고 Agent SDK를 통해 Claude Code는 메시지 스트림에서 `system` 메시지로 동일한 텍스트를 subtype `notification`으로 내보내며, 사용 크레딧이 부족한 동안 턴당 한 번씩 표시됩니다. 빠른 모드는 켜진 상태로 유지됩니다. Claude Code v2.1.221 이상이 필요합니다.225* [비대화형 모드](https://code.claude.com/docs/ko/headless.md)에서 `--output-format stream-json`을 사용하고 Agent SDK를 통해 Claude Code는 메시지 스트림에서 `system` 메시지로 동일한 텍스트를 subtype `notification`으로 내보내며, 사용 크레딧이 부족한 동안 턴당 한 번씩 표시됩니다. 빠른 모드는 켜진 상태로 유지됩니다. Claude Code v2.1.221 이상이 필요합니다.

226 226 

227## 연구 미리보기227## 연구 미리보기

hooks.md +90 −48

Details

14 14 

15플러그인은 Claude Code가 자체 프로세스에서 호출하는 JavaScript 함수로 훅을 등록할 수도 있으며, 이러한 함수는 이벤트에 대응할 뿐 아니라 인터페이스에 그리기도 할 수 있습니다. 이렇게 하는 플러그인을 [mod](https://code.claude.com/docs/ko/plugins/mods/overview.md)라고 하며, 이러한 함수 훅은 이 페이지가 아닌 [이벤트에 반응하기](https://code.claude.com/docs/ko/plugins/mods/events.md)에서 다룹니다. 이 페이지의 훅은 mod와 함께 계속 작동합니다.15플러그인은 Claude Code가 자체 프로세스에서 호출하는 JavaScript 함수로 훅을 등록할 수도 있으며, 이러한 함수는 이벤트에 대응할 뿐 아니라 인터페이스에 그리기도 할 수 있습니다. 이렇게 하는 플러그인을 [mod](https://code.claude.com/docs/ko/plugins/mods/overview.md)라고 하며, 이러한 함수 훅은 이 페이지가 아닌 [이벤트에 반응하기](https://code.claude.com/docs/ko/plugins/mods/events.md)에서 다룹니다. 이 페이지의 훅은 mod와 함께 계속 작동합니다.

16 16 

17## Hook 수명 주기17## 훅 수명 주기

18 18 

19Claude Code는 세션 중 특정 지점에서 hook을 실행합니다. 이벤트가 발생하고 matcher가 일치하면 Claude Code는 이벤트에 대한 JSON 컨텍스트를 hook 핸들러에 전달합니다. 명령 hook의 경우 입력은 stdin에 도착합니다. HTTP hook의 경우 POST 요청 본문으로 도착합니다. 그러면 핸들러는 입력을 검사하고 조치를 취한 후 선택적으로 결정을 반환할 수 있습니다.19Claude Code는 세션 중 특정 시점에 훅을 실행합니다. 이벤트가 발생하고 matcher가 일치하면 Claude Code는 해당 이벤트에 대한 JSON 컨텍스트를 훅 핸들러에 전달합니다. 명령 훅의 경우 입력은 stdin으로 전달됩니다. HTTP 훅의 경우 POST 요청 본문으로 전달됩니다. 그러면 핸들러는 입력을 검사하고, 작업을 수행하고, 선택적으로 결정을 반환할 수 있습니다.

20 20 

21이벤트는 세 가지 주기로 발생합니다:21이벤트는 세 가지 주기로 나뉩니다.

22 22 

23* 세션당 한 번: `SessionStart` 및 `SessionEnd`23* 세션마다: `SessionStart` 및 `SessionEnd`

24* 턴당 한 번: `UserPromptSubmit`, `Stop` 및 `StopFailure`24* 턴마다: `UserPromptSubmit`, `Stop`, `StopFailure`

25* 에이전트 루프 내의 모든 도구 호출에서: `PreToolUse` 및 `PostToolUse`(단, [`EndConversation`](https://code.claude.com/docs/ko/tools-reference#endconversation-tool-behavior) 호출은 제외되며, 이는 둘 다 건너뜁니다)25* 에이전틱 루프 내부의 모든 도구 호출마다: `PreToolUse` 및 `PostToolUse`. 단, [`EndConversation`](https://code.claude.com/docs/ko/tools-reference#endconversation-tool-behavior) 호출은 둘 다 건너뜁니다

26 26 

27![선택적 Setup에서 SessionStart로 시작하여 턴당 루프(UserPromptSubmit, 슬래시 명령에 대한 UserPromptExpansion, 중첩된 에이전트 루프(PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, PostToolBatch, SubagentStart/Stop, TaskCreated, TaskCompleted), Stop 또는 StopFailure), TeammateIdle, PreCompact, PostCompact, SessionEnd를 거쳐 진행되는 hook 수명 주기 다이어그램. Elicitation 및 ElicitationResult는 MCP 도구 실행 내에 중첩되고, PermissionDenied는 PermissionRequest의 부분 분기(자동 모드 거부용), WorktreeCreate, WorktreeRemove, Notification, ConfigChange, InstructionsLoaded, CwdChanged, FileChanged, DirectoryAdded는 독립적인 비동기 이벤트이며, PreModelSwitch는 요청된 모델 전환 전에 실행되는 독립적인 순차 이벤트이고, PostModelSwitch는 세션의 모델이 변경된 후에 실행되는 독립적인 비동기 이벤트이며, MessageDisplay는 어시스턴트 메시지 텍스트가 스트리밍되는 동안 실행되는 표시 전용 이벤트입니다](https://mintcdn.com/claude-code/x7pO8l4XcvAXCoVc/images/hooks-lifecycle.svg?fit=max\&auto=format\&n=x7pO8l4XcvAXCoVc\&q=85\&s=81b9256c1bbe8832553485f5d9e9c746)27![훅 수명 주기 다이어그램. 선택적인 Setup이 SessionStart로 이어지고, 이후 UserPromptSubmit, 슬래시 명령에 대한 UserPromptExpansion, 중첩된 에이전틱 루프(PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, PostToolBatch, SubagentStart/Stop, TaskCreated, TaskCompleted), 그리고 Stop 또는 StopFailure를 포함하는 턴별 루프가 이어지며, 그 뒤에 TeammateIdle, PreCompact, PostCompact, SessionEnd가 옵니다. Elicitation과 ElicitationResult는 MCP 도구 실행 내부에 중첩되어 있고, PermissionDenied는 자동 모드 거부를 위해 PermissionRequest에서 갈라지는 곁가지이며, WorktreeCreate, WorktreeRemove, Notification, ConfigChange, InstructionsLoaded, CwdChanged, FileChanged, DirectoryAdded는 독립적인 비동기 이벤트입니다. PreModelSwitch는 요청된 모델 전환 전에 실행되는 독립적인 순차 이벤트이고, PostModelSwitch는 세션의 모델이 변경된 후 실행되는 독립적인 비동기 이벤트이며, MessageDisplay는 어시스턴트 메시지 텍스트가 스트리밍되는 동안 실행되는 표시 전용 이벤트입니다](https://mintcdn.com/claude-code/x7pO8l4XcvAXCoVc/images/hooks-lifecycle.svg?fit=max\&auto=format\&n=x7pO8l4XcvAXCoVc\&q=85\&s=81b9256c1bbe8832553485f5d9e9c746)

28 28 

29아래 표는 각 이벤트가 언제 발생하는지 요약합니다. [Hook 이벤트](#hook-events) 섹션에서는 각 이벤트의 전체 입력 스키마와 결정 제어 옵션을 문서화합니다.29아래 표는 각 이벤트가 언제 발생하는지 요약합니다. [훅 이벤트](#hook-events) 섹션에서는 각 이벤트의 전체 입력 스키마와 결정 제어 옵션을 설명합니다.

30 30 

31| 이벤트 | 발생 시점 |31| 이벤트 | 발생 시점 |

32| :- | :- |32| :- | :- |


64| `ElicitationResult` | 사용자가 MCP 유도에 응답한 후, 응답이 서버로 다시 전송되기 전 |64| `ElicitationResult` | 사용자가 MCP 유도에 응답한 후, 응답이 서버로 다시 전송되기 전 |

65| `SessionEnd` | 세션이 종료될 때 |65| `SessionEnd` | 세션이 종료될 때 |

66 66 

67### Hook이 어떻게 해결되는지67### 훅이 처리되는 방식

68 68 

69파괴적인 셸 명령을 차단하는 이 `PreToolUse` hook을 고려하세요.69이벤트, matcher, 핸들러가 어떻게 맞물리는지 확인하기 위해 파괴적인 셸 명령을 차단하는 다음 `PreToolUse` 훅을 살펴보겠습니다.

70 70 

71> [tab] macOS/Linux71> [tab] macOS/Linux

72>72>

73> `matcher`는 Bash 도구 호출로 좁혀지고 `if` 조건은 `rm *`과 일치하는 Bash 부명령으로 더 좁혀지므로 `block-rm.sh`는 두 필터가 모두 일치할 때만 생성됩니다:73> `matcher`는 대상을 Bash 도구 호출과 [Monitor 명령](#match-monitor-commands)으로 좁히고, `if` 조건은 대상을 `rm *`와 일치하는 Bash 하위 명령으로 더 좁히므로, `block-rm.sh`는 두 필터가 모두 일치할 때만 실행됩니다.

74>74>

75> ```json theme={null}75> ```json theme={null}

76> {76> {


92> }92> }

93> ```93> ```

94>94>

95> 스크립트는 stdin에서 JSON 입력을 읽고 명령을 추출한 후 `rm -rf`를 포함하면 `permissionDecision`을 `"deny"`로 반환합니다. 프로젝트의 `.claude/hooks/block-rm.sh`에 저장하고 Claude Code가 실행할 수 있도록 `chmod +x .claude/hooks/block-rm.sh`로 실행 가능하게 만듭니다:95> 이 스크립트는 stdin에서 JSON 입력을 읽고, 명령을 추출한 다음, 명령에 `rm -rf`가 포함되어 있으면 `"deny"`라는 `permissionDecision`을 반환합니다. Claude Code가 실행할 수 있도록 프로젝트의 `.claude/hooks/block-rm.sh`에 저장하고 `chmod +x .claude/hooks/block-rm.sh`로 실행 가능하게 만드십시오.

96>96>

97> ```bash theme={null}97> ```bash theme={null}

98> #!/bin/bash98> #!/bin/bash


112> fi112> fi

113> ```113> ```

114>114>

115> 이 스크립트는 이 페이지의 다른 Bash 예제처럼 JSON 입력을 파싱하므로 `jq`를 사용합니다. 따라서 이들을 시도하기 전에 `jq`를 설치하고 `PATH`에 있는지 확인하세요.115> 이 스크립트는 JSON 입력을 파싱하는 이 페이지의 다른 Bash 예제와 마찬가지로 `jq`를 사용하므로, 예제를 실행해 보기 전에 `jq`를 설치하고 `PATH`에 포함되어 있는지 확인하십시오.

116 116 

117> [tab] Windows (PowerShell)117> [tab] Windows (PowerShell)

118>118>

119> matcher `Bash|PowerShell`은 [PowerShell 도구](#powershell)와 Bash를 모두 포함합니다. 단일 `if` 규칙은 한 도구의 호출만 일치하므로 각 도구는 자체 핸들러를 가집니다: 첫 번째는 `rm *`과 일치하는 Bash 부명령으로 좁혀지고, 두 번째는 `Remove-Item *`과 일치하는 PowerShell 명령으로 좁혀집니다. 둘 다 `powershell.exe`를 통해 동일한 스크립트를 실행합니다:119> matcher `Bash|PowerShell`은 Bash뿐 아니라 [PowerShell 도구](#powershell)도 포함합니다. 하나의 `if` 규칙은 하나의 도구만 지정하므로 각 도구마다 별도의 핸들러를 둡니다. 첫 번째 핸들러는 대상을 `rm *`와 일치하는 Bash 하위 명령으로, 두 번째 핸들러는 `Remove-Item *`와 일치하는 PowerShell 명령으로 좁힙니다. 두 핸들러 모두 `powershell.exe`를 통해 같은 스크립트를 실행합니다.

120>120>

121> ```json theme={null}121> ```json theme={null}

122> {122> {


156> }156> }

157> ```157> ```

158>158>

159> `-NoProfile` 플래그는 PowerShell 프로필 로드를 건너뛰므로 hook이 빠르게 시작되고, `-ExecutionPolicy Bypass`는 PowerShell이 로컬 스크립트 파일을 실행하도록 합니다.159> `-NoProfile` 플래그는 PowerShell 프로필 로드를 건너뛰어 훅이 빠르게 시작되도록 하고, `-ExecutionPolicy Bypass`는 PowerShell이 로컬 스크립트 파일을 실행할 수 있게 합니다.

160>160>

161> 스크립트는 stdin에서 JSON 입력을 읽고 명령을 추출한 후 `rm -rf` 또는 `-Recurse`가 뒤따르는 `Remove-Item`을 포함하면 `permissionDecision`을 `"deny"`로 반환합니다. 프로젝트의 `.claude/hooks/block-rm.ps1`에 저장합니다:161> 이 스크립트는 stdin에서 JSON 입력을 읽고, 명령을 추출한 다음, 명령에 `rm -rf`가 포함되어 있거나 `Remove-Item` 뒤에 `-Recurse`가 오면 `"deny"`라는 `permissionDecision`을 반환합니다. 프로젝트의 `.claude/hooks/block-rm.ps1`에 저장하십시오.

162>162>

163> ```powershell theme={null}163> ```powershell theme={null}

164> # .claude/hooks/block-rm.ps1164> # .claude/hooks/block-rm.ps1


178> }178> }

179> ```179> ```

180 180 

181이제 Claude Code가 macOS/Linux 구성에 대해 `Bash "rm -rf /tmp/build"`를 실행하기로 결정했다고 가정합니다. 다음은 발생하는 일입니다:181이제 macOS/Linux 구성에서 Claude Code가 `Bash "rm -rf /tmp/build"`를 실행하기로 결정했다고 가정해 보겠습니다. 다음과 같은 일이 일어납니다.

182 182 

183![Hook 해결 다이어그램: PreToolUse가 발생하고, matcher가 Bash 일치를 확인한 후 if 조건이 Bash(rm \*) 일치를 확인합니다. 둘 다 일치하면 hook 명령이 실행되고 permissionDecision deny를 반환하므로 도구 호출이 차단되고 Claude Code가 계속됩니다. 어느 검사도 일치하지 않으면 hook이 건너뛰어지고 도구 호출이 진행되도록 허용됩니다.](https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/hook-resolution.svg?fit=max\&auto=format\&n=ikqp3_70mqIahteV\&q=85\&s=be0bf3053550c26de5f54cd64674c197)183![훅 처리 다이어그램: PreToolUse가 발생하면 matcher가 Bash 일치 여부를 확인하고, 이어서 if 조건이 Bash(rm \*) 일치 여부를 확인합니다. 둘 다 일치하면 훅 명령이 실행되어 permissionDecision deny를 반환하므로 도구 호출이 차단되고 Claude Code는 계속 진행합니다. 두 검사 중 하나라도 일치하지 않으면 훅을 건너뛰고 도구 호출이 진행되도록 허용됩니다.](https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/hook-resolution.svg?fit=max\&auto=format\&n=ikqp3_70mqIahteV\&q=85\&s=be0bf3053550c26de5f54cd64674c197)

184 184 

185**1. 이벤트 발생**185**1. 이벤트 발생**

186 186 

187`PreToolUse` 이벤트가 발생합니다. Claude Code는 도구 입력을 stdin의 hook에 JSON으로 전송합니다:187`PreToolUse` 이벤트가 발생합니다. Claude Code는 도구 입력을 JSON 형식으로 stdin을 통해 훅에 보냅니다.

188 188 

189```json theme={null}189```json theme={null}

190{ "tool_name": "Bash", "tool_input": { "command": "rm -rf /tmp/build" }, ... }190{ "tool_name": "Bash", "tool_input": { "command": "rm -rf /tmp/build" }, ... }

191```191```

192 192 

193**2. Matcher 확인**193**2. matcher 확인**

194 194 

195matcher `"Bash"`가 도구 이름과 일치하므로 이 hook 그룹이 활성화됩니다. matcher를 생략하거나 `"*"`를 사용하면 이벤트의 모든 발생에서 그룹이 활성화됩니다.195matcher `"Bash"`가 도구 이름과 일치하므로 이 훅 그룹이 활성화됩니다. matcher를 생략하거나 `"*"`를 사용하면 해당 이벤트가 발생할 때마다 그룹이 활성화됩니다.

196 196 

197**3. If 조건 확인**197**3. if 조건 확인**

198 198 

199`if` 조건 `"Bash(rm *)"`은 `rm -rf /tmp/build`가 `rm *`과 일치하는 부명령이므로 일치하여 이 핸들러가 생성됩니다. 명령이 `npm test`였다면 `if` 검사가 실패하고 `block-rm.sh`는 절대 실행되지 않아 프로세스 생성 오버헤드를 피합니다. `if` 필드는 선택 사항입니다. 없으면 일치한 그룹의 모든 핸들러가 실행됩니다.199`rm -rf /tmp/build`는 `rm *`와 일치하는 하위 명령이므로 `if` 조건 `"Bash(rm *)"`가 일치하고, 이 핸들러가 실행됩니다. 명령이 `npm test`였다면 `if` 검사가 실패하여 `block-rm.sh`는 실행되지 않았을 것이며, 프로세스 생성 오버헤드를 피할 수 있습니다. `if` 필드는 선택 사항이며, 이 필드가 없으면 일치한 그룹의 모든 핸들러가 실행됩니다.

200 200 

201**4. Hook 핸들러 실행**201**4. 훅 핸들러 실행**

202 202 

203스크립트는 전체 명령을 검사하고 `rm -rf`를 찾으므로 stdout에 결정을 인쇄합니다:203스크립트가 전체 명령을 검사하여 `rm -rf`를 찾아내므로 stdout에 결정을 출력합니다.

204 204 

205```json theme={null}205```json theme={null}

206{206{


212}212}

213```213```

214 214 

215명령이 `rm file.txt`와 같은 더 안전한 `rm` 변형이었다면 스크립트는 대신 `exit 0`을 실행합니다. 출력이 없는 종료 코드 0은 hook이 보고할 결정이 없다는 의미이므로 도구 호출은 일반적인 [권한 흐름](https://code.claude.com/docs/ko/permissions.md)을 통해 계속됩니다. hook은 호출을 거부할 수 있지만 침묵을 유지하는 것은 이를 승인하지 않습니다.215명령이 `rm file.txt`처럼 더 안전한 `rm` 변형이었다면 스크립트는 대신 `exit 0`에 도달했을 것입니다. 출력 없이 종료 코드 0을 반환하면 훅이 보고할 결정이 없다는 의미이므로, 도구 호출은 일반적인 [권한 흐름](https://code.claude.com/docs/ko/permissions.md)을 따라 계속 진행됩니다. 훅은 호출을 거부할 수 있지만, 아무것도 출력하지 않는다고 해서 호출이 승인되는 것은 아닙니다.

216 216 

217**5. Claude Code가 결과에 따라 행동**217**5. Claude Code가 결과에 따라 동작**

218 218 

219Claude Code는 JSON 결정을 읽고 도구 호출을 차단하며 Claude에 이유를 표시합니다.219Claude Code는 JSON 결정을 읽고 도구 호출을 차단한 후 Claude에게 그 이유를 보여줍니다.

220 220 

221아래 [구성](#configuration) 섹션에서는 전체 스키마를 문서화하고, 각 [hook 이벤트](#hook-events) 섹션에서는 명령이 받는 입력과 반환할 수 있는 출력을 문서화합니다.221아래 [구성](#configuration) 섹션에서는 전체 스키마를 설명하며, 각 [훅 이벤트](#hook-events) 섹션에서는 명령이 받는 입력과 반환할 수 있는 출력을 설명합니다.

222 222 

223## 구성223## 구성

224 224 

225Hook은 JSON 설정 파일에서 정의됩니다. 구성은 세 가지 중첩 수준을 가집니다:225Hook은 JSON 설정 파일에서 정의됩니다. 구성은 세 가지 중첩 수준을 가집니다:

226 226 

2271. 응답할 [hook 이벤트](#hook-events)를 선택합니다(예: `PreToolUse` 또는 `Stop`).2271. 응답할 [hook 이벤트](#hook-events)를 선택합니다(예: `PreToolUse` 또는 `Stop`).

2282. 실행 시기를 필터링할 [matcher 그룹](#matcher-patterns)을 추가합니다(예: "Bash 도구에만 해당").2282. 실행 시점을 필터링하려면 "Bash 도구의 경우"와 같이 [matcher 그룹](#matcher-patterns)을 추가합니다

2293. 일치할 때 실행할 하나 이상의 [hook 핸들러](#hook-handler-fields)를 정의합니다.2293. 일치할 때 실행할 하나 이상의 [hook 핸들러](#hook-handler-fields)를 정의합니다.

230 230 

231주석이 달린 예제를 포함한 완전한 설명은 위의 [hook이 어떻게 해결되는지](#how-a-hook-resolves)를 참조하십시오.231주석이 달린 예제를 포함한 완전한 설명은 위의 [hook이 어떻게 해결되는지](#how-a-hook-resolves)를 참조하십시오.


277| Matcher 값 | 평가 대상 | 예제 |277| Matcher 값 | 평가 대상 | 예제 |

278| :- | :- | :- |278| :- | :- | :- |

279| `"*"`, `""` 또는 생략됨 | 모두 일치 | 이벤트의 모든 발생에서 실행됨 |279| `"*"`, `""` 또는 생략됨 | 모두 일치 | 이벤트의 모든 발생에서 실행됨 |

280| 문자, 숫자, `_`, `-`, 공백, `,` 및 `\|`만 포함 | 정확한 문자열 또는 `\|` 또는 `,`로 구분된 정확한 문자열 목록(선택적 주변 공백 포함) | `Bash`는 Bash 도구만 일치합니다. `Edit\|Write` 및 `Edit, Write`는 각각 두 도구 중 하나와 정확히 일치합니다. `code-reviewer`는 해당 에이전트 유형만 일치합니다. |280| 문자, 숫자, `_`, `-`, 공백, `,` 및 `\|`만 포함 | 정확한 문자열 또는 `\|` 또는 `,`로 구분된 정확한 문자열 목록(선택적 주변 공백 포함) | `Bash`는 Bash 도구와 일치하며, `PreToolUse` 및 `PermissionRequest`에서는 [Monitor 명령](#match-monitor-commands)과도 일치합니다. `Edit\|Write` 및 `Edit, Write`는 각각 두 도구 중 하나와 정확히 일치합니다. `code-reviewer`는 해당 에이전트 유형만 일치합니다. |

281| 다른 문자 포함 | JavaScript 정규 표현식, 앵커 없음 | `^Notebook`은 이름이 `Notebook`으로 시작하는 모든 도구와 일치합니다. `mcp__memory__.*`는 `memory` 서버의 모든 도구와 일치합니다. |281| 다른 문자 포함 | JavaScript 정규 표현식, 앵커 없음 | `^Notebook`은 이름이 `Notebook`으로 시작하는 모든 도구와 일치합니다. `mcp__memory__.*`는 `memory` 서버의 모든 도구와 일치합니다. |

282 282 

283정규 표현식 경로의 matcher는 JavaScript의 `RegExp.prototype.test`로 테스트되며, 값의 어디든지 일치하면 성공합니다. `Edit.*`는 `Edit`과 `NotebookEdit` 모두와 일치합니다. 전체 문자열 일치가 필요한 경우 `^Edit$`와 같이 패턴을 `^` 및 `$`로 래핑하십시오.283정규 표현식 경로의 matcher는 JavaScript의 `RegExp.prototype.test`로 테스트되며, 값의 어디든지 일치하면 성공합니다. `Edit.*`는 `Edit`과 `NotebookEdit` 모두와 일치합니다. 전체 문자열 일치가 필요한 경우 `^Edit$`와 같이 패턴을 `^` 및 `$`로 래핑하십시오.


294| `SessionStart` | 세션이 시작된 방식 | `startup`, `resume`, `clear`, `compact`, `fork` |294| `SessionStart` | 세션이 시작된 방식 | `startup`, `resume`, `clear`, `compact`, `fork` |

295| `Setup` | 설정을 트리거한 CLI 플래그 | `init`, `maintenance` |295| `Setup` | 설정을 트리거한 CLI 플래그 | `init`, `maintenance` |

296| `SessionEnd` | 세션이 종료된 이유 | `clear`, `resume`, `logout`, `prompt_input_exit`, `other` |296| `SessionEnd` | 세션이 종료된 이유 | `clear`, `resume`, `logout`, `prompt_input_exit`, `other` |

297| `Notification` | 알림 유형 | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_url_dialog`, `elicitation_complete`, `elicitation_response`, `agent_needs_input`, `agent_completed`, `quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled`, `plugin_notification` |297| `Notification` | 알림 유형 | `permission_prompt`, `idle_prompt`, `auth_success`, `auth_storage_failure`, `elicitation_dialog`, `elicitation_url_dialog`, `elicitation_complete`, `elicitation_response`, `agent_needs_input`, `agent_completed`, `quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled`, `plugin_notification` |

298| `SubagentStart` | 에이전트 유형 | `general-purpose`, `Explore`, `Plan`, 사용자 정의 에이전트 이름 또는 `^my-plugin:reviewer$`와 같은 플러그인 범위 이름 |298| `SubagentStart` | 에이전트 유형 | `general-purpose`, `Explore`, `Plan`, 사용자 정의 에이전트 이름 또는 `^my-plugin:reviewer$`와 같은 플러그인 범위 이름 |

299| `PreCompact`, `PostCompact` | 압축을 트리거한 항목 | `manual`, `auto` |299| `PreCompact`, `PostCompact` | 압축을 트리거한 항목 | `manual`, `auto` |

300| `PreModelSwitch`, `PostModelSwitch` | 세션이 전환되는 모델의 정규 이름([PreModelSwitch](#premodelswitch) 아래에 설명됨) | `claude-opus-5`, `claude-opus-4-6\|claude-opus-5`, `.*opus.*` |300| `PreModelSwitch`, `PostModelSwitch` | 세션이 전환되는 모델의 정규 이름([PreModelSwitch](#premodelswitch) 아래에 설명됨) | `claude-opus-5`, `claude-opus-4-6\|claude-opus-5`, `.*opus.*` |


385}385}

386```386```

387 387 

388#### Monitor 명령 일치

389 

390`Bash` matcher가 있는 [`PreToolUse`](#pretooluse) 또는 [`PermissionRequest`](#permissionrequest) hook은 Claude가 [Monitor 도구](https://code.claude.com/docs/ko/tools-reference.md#monitor-tool)로 시작하는 셸 명령에서도 실행되지만, 해당 hook의 `allow` 및 [`updatedInput`](#pretooluse-decision-control)은 이러한 명령에 영향을 주지 않습니다. Claude Code v2.1.314 이상이 필요합니다. `Bash|PowerShell`, `^Bash$`, `Bash.*`와 같은 matcher도 `Bash` matcher입니다. `Bash` matcher가 있는 hook은 [WebSocket 감시](https://code.claude.com/docs/ko/tools-reference.md#websocket-source)에 대해서는 실행되지 않으며, `Bash` matcher가 있는 `PostToolUse` hook은 Monitor에 대해 실행되지 않습니다.

391 

392Monitor 명령에 대해 실행되는 hook은 해당 명령을 거부하거나 Claude Code가 사용자에게 확인을 요청하도록 할 수 있습니다. 명령을 허용하거나 다시 작성하려면 `Bash` matcher에서 Monitor를 포함하는 matcher로 전환하십시오:

393 

394* **Monitor를 포함하는 matcher**: `Bash|Monitor` 또는 `.*`와 같은 matcher를 사용하거나 matcher가 없으면 hook은 Monitor 호출 자체의 입력을 받으며 `allow` 및 `updatedInput`이 적용됩니다. [`if`](#common-fields)에서는 `Monitor(tail *)`처럼 Monitor를 지정하며, 이는 [`Bash(tail *)`가 따르는 규칙](#bash-if-matching)에 따라 일치합니다. `if`에 Bash를 지정하면 hook은 여전히 Monitor 호출의 입력을 받지만 `allow` 및 `updatedInput`은 효과가 없습니다.

395* **`Bash` matcher**: hook은 Bash 호출을 받습니다. `if`에서는 `Bash(tail *)`처럼 Bash를 지정합니다. `if`에 Monitor를 지정하면 hook이 실행되지 않습니다.

396 

388### Hook 핸들러 필드397### Hook 핸들러 필드

389 398 

390내부 `hooks` 배열의 각 객체는 hook 핸들러입니다: matcher가 일치할 때 실행되는 셸 명령, HTTP 엔드포인트, MCP 도구, LLM 프롬프트 또는 에이전트입니다. 다섯 가지 유형이 있습니다:399내부 `hooks` 배열의 각 객체는 hook 핸들러입니다: matcher가 일치할 때 실행되는 셸 명령, HTTP 엔드포인트, MCP 도구, LLM 프롬프트 또는 에이전트입니다. 다섯 가지 유형이 있습니다:


811* **각각 자체적으로 JSON으로 구문 분석되는 두 줄 이상이며, 첫 줄이 `{`로 시작하고 마지막 줄이 `}`로 끝나는 출력**: 필드를 설정하는 JSON 출력 객체인 줄이 없으면 일반 텍스트입니다. 그러한 줄이 있으면 구문 분석 실패이므로, 해당 객체만 stdout에 출력하고 다른 내용은 출력하지 않습니다.820* **각각 자체적으로 JSON으로 구문 분석되는 두 줄 이상이며, 첫 줄이 `{`로 시작하고 마지막 줄이 `}`로 끝나는 출력**: 필드를 설정하는 JSON 출력 객체인 줄이 없으면 일반 텍스트입니다. 그러한 줄이 있으면 구문 분석 실패이므로, 해당 객체만 stdout에 출력하고 다른 내용은 출력하지 않습니다.

812* **`{`로 시작하고 `}`로 끝나지만 유효한 JSON이 아닌 그 밖의 출력**: 구문 분석 실패입니다.821* **`{`로 시작하고 `}`로 끝나지만 유효한 JSON이 아닌 그 밖의 출력**: 구문 분석 실패입니다.

813 822 

814대부분의 이벤트에서 Claude Code는 stdout을 디버그 로그에 기록하고 트랜스크립트에는 표시하지 않습니다. 예외는 `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart`, `PostModelSwitch`이며, 여기서 Claude Code는 일반 텍스트 stdout을 Claude가 보고 활용할 수 있는 컨텍스트로 추가합니다. 이러한 이벤트에서 Claude Code는 구문 분석에 실패한 stdout을 추가하지 않습니다.823대부분의 이벤트에서 Claude Code는 stdout을 디버그 로그에 기록하고 트랜스크립트에는 표시하지 않습니다. 다음 이벤트에서는 stdout이 Claude 또는 압축 요약에 전달됩니다:

824 

825* **`UserPromptSubmit`, `UserPromptExpansion`, `SessionStart`, `PostModelSwitch`**: Claude Code는 일반 텍스트 stdout을 Claude가 보고 활용할 수 있는 컨텍스트로 추가합니다. 구문 분석에 실패한 stdout은 추가하지 않습니다.

826* **`PreCompact`**: stdout이 [압축 요약에 대한 지침](#precompact-output)이 됩니다

815 827 

816Claude는 0으로 종료하는 hook의 stderr을 보지 못합니다. `PreToolUse`와 같은 이벤트에서 직접 읽으려면 [디버그 로깅](#debug-hooks)을 활성화합니다. `PostToolUse` 또는 `PostToolUseFailure` hook에서 Claude에 경고를 표시하려면 대신 종료 2로 나가면 도구가 이미 실행되었더라도 [Claude가 stderr을 봅니다](#exit-code-2-behavior-per-event).828Claude는 0으로 종료하는 hook의 stderr을 보지 못합니다. `PreToolUse`와 같은 이벤트에서 직접 읽으려면 [디버그 로깅](#debug-hooks)을 활성화합니다. `PostToolUse` 또는 `PostToolUseFailure` hook에서 Claude에 경고를 표시하려면 대신 종료 2로 나가면 도구가 이미 실행되었더라도 [Claude가 stderr을 봅니다](#exit-code-2-behavior-per-event).

817 829 


1050hook의 `additionalContext`, `systemMessage`, `initialUserMessage` 문자열 및 일반 stdout은 10,000자로 제한됩니다:1062hook의 `additionalContext`, `systemMessage`, `initialUserMessage` 문자열 및 일반 stdout은 10,000자로 제한됩니다:

1051 1063 

1052* **범위**: Claude Code는 동일한 이벤트에 대해 여러 hook이 실행되는 경우에도 각 문자열을 개별적으로 측정합니다. JSON 출력의 경우 각 필드는 별도로 측정되며, 일반 stdout은 전체를 측정합니다.1064* **범위**: Claude Code는 동일한 이벤트에 대해 여러 hook이 실행되는 경우에도 각 문자열을 개별적으로 측정합니다. JSON 출력의 경우 각 필드는 별도로 측정되며, 일반 stdout은 전체를 측정합니다.

1053* **제한 초과**: Claude Code는 출력을 세션 디렉터리의 파일에 저장하고 파일 경로와 최대 처음 2,000자의 미리보기로 대체합니다. 큰 유효한 Bash 결과도 [출력 제한](https://code.claude.com/docs/ko/tools-reference.md#output-limits)에 설명된 대로 동일한 방식으로 처리됩니다. 해당 Bash 상한과 달리 이 제한에는 이를 높이기 위한 설정이나 환경 변수가 없습니다.1065* **제한 초과**: [PreCompact stdout](#precompact-output)을 제외하고, Claude Code는 출력을 세션 디렉터리의 파일에 저장합니다. 그리고 출력을 파일 경로와 최대 처음 2,000자의 미리보기로 대체합니다. 큰 유효한 Bash 결과도 [출력 제한](https://code.claude.com/docs/ko/tools-reference.md#output-limits)에 설명된 대로 동일한 방식으로 처리됩니다. 해당 Bash 상한과 달리 이 제한에는 이를 높이기 위한 설정이나 환경 변수가 없습니다.

1054* **파일 읽기**: Claude Code는 Claude에 파일을 읽도록 요청하지 않으므로 Claude가 항상 봐야 하는 내용은 제한 내에 유지하세요.1066* **파일 읽기**: Claude Code는 Claude에 파일을 읽도록 요청하지 않으므로 Claude가 항상 봐야 하는 내용은 제한 내에 유지하세요.

1055 1067 

1056JSON 객체는 세 가지 종류의 필드를 지원합니다:1068JSON 객체는 세 가지 종류의 필드를 지원합니다:


1954 1966 

1955#### PreToolUse 결정 제어1967#### PreToolUse 결정 제어

1956 1968 

1957`PreToolUse` 훅은 도구 호출의 진행 여부를 제어할 수 있습니다. 최상위 `decision` 필드를 사용하는 다른 훅과 달리, PreToolUse는 `hookSpecificOutput` 객체 안에서 결정을 반환합니다. 이를 통해 더 풍부한 제어가 가능합니다. 네 가지 결과(허용, 거부, 확인 요청, 지연)와 함께 실행 전에 도구 입력을 수정하는 기능을 제공합니다.1969`PreToolUse` 훅은 도구 호출의 진행 여부를 제어할 수 있습니다. 최상위 `decision` 필드를 사용하는 다른 훅과 달리 PreToolUse는 `hookSpecificOutput` 객체 안에 결정을 반환합니다. 이를 통해 네 가지 결과(허용, 거부, 확인 요청, 지연)와 실행 전 도구 입력 수정 기능이라는 더 풍부한 제어가 가능합니다. Monitor 명령을 허용하거나 다시 작성하려면 [Monitor 명령 일치](#match-monitor-commands)를 참조하십시오.

1958 1970 

1959| 필드 | 설명 |1971| 필드 | 설명 |

1960| :- | :- |1972| :- | :- |


2051 2063 

2052#### 도구 호출을 나중으로 지연2064#### 도구 호출을 나중으로 지연

2053 2065 

2054`"defer"`는 Agent SDK 앱이나 Claude Code 위에 구축된 사용자 지정 UI처럼 `claude -p`를 하위 프로세스로 실행하고 JSON 출력을 읽는 통합을 위한 것입니다. 이를 통해 호출 프로세스는 도구 호출에서 Claude를 일시 중지하고, 자체 인터페이스로 입력을 수집한 다음, 중단한 지점에서 재개할 수 있습니다. Claude Code는 `-p` 플래그를 사용하는 [비대화형 모드](https://code.claude.com/docs/ko/headless.md)에서만 이 값을 적용합니다. 대화형 세션에서는 경고를 로그에 기록하고 훅 결과를 무시합니다.2066`"defer"`는 Agent SDK 앱이나 Claude Code 위에 구축한 사용자 정의 UI처럼 `claude -p`를 하위 프로세스로 실행하고 그 JSON 출력을 읽는 통합을 위한 것입니다. 이를 통해 호출 프로세스는 도구 호출 시점에 Claude를 일시 중지하고, 자체 인터페이스로 입력을 수집한 다음, 중단한 지점에서 재개할 수 있습니다.

2067 

2068Claude Code는 `-p` 플래그를 사용하는 [비대화형 모드](https://code.claude.com/docs/ko/headless.md)에서만, 그리고 Claude가 해당 턴에서 단일 도구 호출을 할 때만 `"defer"`를 적용합니다.

2069 

2070* **대화형 세션에서**: 경고를 로그에 기록하고 훅 결과를 무시합니다

2071* **여러 도구 호출을 한 번에 하는 경우**: `"defer"`는 경고와 함께 무시되고 도구는 일반 권한 흐름을 따라 진행됩니다

2055 2072 

2056`AskUserQuestion` 도구가 대표적인 사례입니다. Claude가 사용자에게 무언가를 묻고 싶지만 답할 터미널이 없는 경우입니다. `-p` 실행은 `--permission-prompt-tool`로 전달하는 MCP 도구 같은 [권한 호스트](https://code.claude.com/docs/ko/headless.md#turn-off-permission-prompts-in-unattended-runs)가 있을 때만 `AskUserQuestion`을 제공하므로, 권한 호스트와 함께 실행을 시작하십시오. 왕복 과정은 다음과 같습니다.2073`AskUserQuestion` 도구가 대표적인 사례입니다. Claude가 사용자에게 무언가를 묻고 싶지만 답할 터미널이 없는 경우입니다. `-p` 실행은 `--permission-prompt-tool`로 전달하는 MCP 도구 같은 [권한 호스트](https://code.claude.com/docs/ko/headless.md#turn-off-permission-prompts-in-unattended-runs)가 있을 때만 `AskUserQuestion`을 제공하므로, 권한 호스트와 함께 실행을 시작하십시오. 왕복 과정은 다음과 같습니다.

2057 2074 


20614. 호출 프로세스가 같은 권한 호스트로 `claude -p --resume <session-id>`를 실행합니다. 같은 도구 호출이 다시 `PreToolUse`를 발생시킵니다.20784. 호출 프로세스가 같은 권한 호스트로 `claude -p --resume <session-id>`를 실행합니다. 같은 도구 호출이 다시 `PreToolUse`를 발생시킵니다.

20625. 훅이 `updatedInput`에 답변을 담아 `permissionDecision: "allow"`를 반환합니다. 도구가 실행되고 Claude가 계속 진행합니다.20795. 훅이 `updatedInput`에 답변을 담아 `permissionDecision: "allow"`를 반환합니다. 도구가 실행되고 Claude가 계속 진행합니다.

2063 2080 

2064`deferred_tool_use` 필드는 도구의 `id`, `name`, `input`을 담습니다. `input`은 Claude가 도구 호출을 위해 생성한 매개변수로, 실행 전에 캡처됩니다.2081`deferred_tool_use` 필드에는 도구의 `id`, `name`, `input`이 포함됩니다.

2065 2082 

2066```json theme={null}2083```json theme={null}

2067{2084{


2077}2094}

2078```2095```

2079 2096 

2080타임아웃이나 재시도 제한은 없습니다. 세션은 재개할 때까지 디스크에 남아 있으며, [정리 규칙](https://code.claude.com/docs/ko/claude-directory.md#cleaned-up-automatically)에 따라 기본적으로 30일 후 세션 파일을 삭제하는 [`cleanupPeriodDays`](https://code.claude.com/docs/ko/settings-reference#cleanupperioddays) 보존 정리의 적용을 받습니다.2097타임아웃이나 재시도 횟수 제한은 없습니다. 세션은 [`cleanupPeriodDays`](https://code.claude.com/docs/ko/settings-reference#cleanupperioddays) [보존 정리](https://code.claude.com/docs/ko/claude-directory.md#cleaned-up-automatically)가 삭제할 때까지(기본값 30일) 디스크에 유지됩니다.

2081 

2082재개 시 지연된 도구를 더 이상 사용할 수 없으면, 재개의 첫 결과는 `stop_reason: "tool_deferred_unavailable"`과 `is_error: true`를 가지며 훅은 발생하지 않습니다. 이는 도구를 제공한 MCP 서버가 재개된 세션에 연결되어 있지 않을 때 발생합니다. 어떤 도구가 누락되었는지 식별할 수 있도록 `deferred_tool_use` 페이로드는 여전히 포함됩니다.

2083 

2084* **재개 시 또는 재개 후에 프롬프트를 보내지 않은 경우**, 호출은 여전히 보류 중입니다. 도구를 사용할 수 있는 상태로 다시 재개하면 그 호출이 먼저 실행됩니다.

2085* **재개 시 또는 재개 후에 프롬프트를 보낸 경우**, Claude Code는 도구 결과 없이 프롬프트에 답하고 지연된 호출을 버립니다. 여전히 호출이 필요하면 도구를 사용할 수 있게 된 후 새 프롬프트를 보냅니다.

2086 2098 

2087프롬프트 없이 재개할 때 기다리는 답변이 준비되지 않았다면 훅은 다시 `"defer"`를 반환할 수 있습니다. 프롬프트를 보냈는데 훅이 다시 지연하면 Claude Code는 프롬프트를 같은 방식으로 처리합니다. 즉, 도구 결과 없이 답하고 호출을 버립니다. 훅이 `"allow"` 또는 `"deny"`를 반환할 때까지 프롬프트 없이 재개하며, 이것이 호출 프로세스가 루프를 끊는 방법입니다.2099재개할 때 답변이 준비되지 않았다면 훅이 `"defer"`를 다시 반환할 수 있습니다. 그 재개와 함께 프롬프트를 보냈다면 Claude는 도구 결과 없이 프롬프트에 답하고 호출은 실행하지 않습니다. 훅이 `"allow"` 또는 `"deny"`를 반환할 때까지 프롬프트 없이 재개하십시오.

2088 

2089`"defer"`는 Claude가 턴에서 단일 도구 호출을 할 때만 작동합니다. Claude가 한 번에 여러 도구 호출을 하면 `"defer"`는 경고와 함께 무시되고 도구는 일반 권한 흐름을 통해 진행됩니다. 이 제약은 재개 시 하나의 도구만 다시 실행할 수 있기 때문에 존재합니다. 나머지를 미해결 상태로 두지 않고 묶음에서 하나의 호출만 지연할 방법이 없습니다.

2090 2100 

2091> [!NOTE]2101> [!NOTE]

2092>2102>

2093> 지연된 세션을 플랜 모드에서 재개하려면 Claude Code가 승인을 위해 계획을 제시할 수 있도록 `--resume`과 함께 [`--permission-prompt-tool`](https://code.claude.com/docs/ko/cli-reference#cli-flags)을 전달하십시오. 다른 조건은 [`-p`로 플랜 모드에서 재개](https://code.claude.com/docs/ko/sessions#resume-in-plan-mode-with-p)를 참조하십시오. Claude Code v2.1.246 이상이 필요합니다.2103> 지연된 세션을 플랜 모드에서 재개하려면 Claude Code가 승인을 위해 계획을 제시할 수 있도록 `--resume`과 함께 [`--permission-prompt-tool`](https://code.claude.com/docs/ko/cli-reference#cli-flags)을 전달하십시오. 다른 조건은 [`-p`로 플랜 모드에서 재개](https://code.claude.com/docs/ko/sessions#resume-in-plan-mode-with-p)를 참조하십시오. Claude Code v2.1.246 이상이 필요합니다.

2094>2104>

2095> `-p`로 재개하면 Claude Code는 저장된 다른 권한 모드를 복원하지 않습니다. 새 `claude -p` 실행이 시작될 권한 모드로 실행을 시작하므로, 지연된 세션이 `--permission-mode` 또는 `--dangerously-skip-permissions`를 사용했다면 다시 전달하십시오. `-p` 없이 `claude --resume <session-id>`로 재개하면 Claude Code는 [재개 시 권한 모드](https://code.claude.com/docs/ko/sessions.md#permission-mode-on-resume)에 나열된 예외를 제외하고 저장된 권한 모드를 복원합니다.2105> `-p`로 재개하면 Claude Code는 저장된 다른 권한 모드를 복원하지 않습니다. 새 `claude -p` 실행이 시작되는 권한 모드로 실행을 시작하므로, 연기된 세션에서 `--permission-mode` 또는 `--dangerously-skip-permissions`를 사용했다면 다시 전달하십시오.

2106 

2107##### 연기된 도구를 사용할 수 없을 때 재개하기

2108 

2109`stop_reason: "tool_deferred_unavailable"`이 포함된 결과는 연기된 호출의 도구를 재개된 세션에서 사용할 수 없다는 의미입니다. 예를 들어 해당 MCP 서버가 연결되지 않은 경우입니다. `PreToolUse` 훅은 실행되지 않으며, 결과의 `deferred_tool_use` 필드가 해당 도구를 알려 줍니다.

2110 

2111호출이 대기 중인 동안에는 보내는 프롬프트가 Claude에 전달되지 않고 실행은 종료 코드 1로 끝납니다. `result` 필드는 `<tool> isn't available, so its deferred call didn't run.`으로 시작합니다. 호출을 실행하거나, 실행되지 않도록 삭제하십시오.

2112 

2113* **호출을 실행하려면**: 도구를 사용할 수 있게 한 뒤 다시 재개합니다.

2114* **호출을 삭제하려면**: [`CLAUDE_CODE_DROP_UNAVAILABLE_DEFERRED_TOOL`](https://code.claude.com/docs/ko/env-vars#variables)을 `1`로 설정하고 프롬프트와 함께 재개합니다. Claude는 호출 결과로 오류를 받고 프롬프트에 답합니다. 이후 재개할 때는 대기 중인 호출이 없습니다.

2115 

2116호출을 삭제하면 실행은 빈 `result` 필드가 있는 `tool_deferred_unavailable` 결과를 기록한 다음, 두 번째 결과에 Claude의 답변을 기록합니다. 그 답변이 오류가 아니라면 종료 코드 0으로 종료됩니다. 변수를 설정하고 프롬프트를 보내지 않으면 실행은 여전히 호출을 삭제하지만 종료 코드 1로 종료됩니다.

2117 

2118v2.1.319 이전에는 Claude Code가 도구 결과 없이 프롬프트에 답하고 호출을 삭제했습니다. 해당 버전에서는 도구를 사용할 수 있게 된 후 새 프롬프트를 보내십시오.

2096 2119 

2097### PermissionRequest2120### PermissionRequest

2098 2121 


2148| `message` | `"deny"` 전용: 권한이 거부된 이유를 Claude에게 알립니다 |2171| `message` | `"deny"` 전용: 권한이 거부된 이유를 Claude에게 알립니다 |

2149| `interrupt` | `"deny"` 전용: `true`이면 Claude를 중지합니다 |2172| `interrupt` | `"deny"` 전용: `true`이면 Claude를 중지합니다 |

2150 2173 

2174Monitor 명령을 허용하거나 다시 작성하려면 [Monitor 명령 매칭하기](#match-monitor-commands)를 참조하십시오.

2175 

2151`decision` 객체 없이 종료 코드 2로 종료하는 훅은 권한 흐름을 변경하지 않으며, 해당 stderr는 버려집니다. 요청을 허용하거나 거부하려면 `decision` 객체를 반환하십시오.2176`decision` 객체 없이 종료 코드 2로 종료하는 훅은 권한 흐름을 변경하지 않으며, 해당 stderr는 버려집니다. 요청을 허용하거나 거부하려면 `decision` 객체를 반환하십시오.

2152 2177 

2153```json theme={null}2178```json theme={null}


2205* 모든 도구가 성공적으로 완료된 후 훅을 실행하려면 `matcher`를 생략하거나 `"*"`로 설정합니다. 그러면 훅이 직접 무엇이 변경되었는지 파악할 수 있습니다. 예를 들어 `git status --porcelain`을 실행하면 `git diff`가 놓치는 추적되지 않는 파일도 나열됩니다. 실패한 도구 호출의 경우 동일한 훅을 [PostToolUseFailure](#posttoolusefailure) 아래에 추가하십시오.2230* 모든 도구가 성공적으로 완료된 후 훅을 실행하려면 `matcher`를 생략하거나 `"*"`로 설정합니다. 그러면 훅이 직접 무엇이 변경되었는지 파악할 수 있습니다. 예를 들어 `git status --porcelain`을 실행하면 `git diff`가 놓치는 추적되지 않는 파일도 나열됩니다. 실패한 도구 호출의 경우 동일한 훅을 [PostToolUseFailure](#posttoolusefailure) 아래에 추가하십시오.

2206* 무엇이 기록했는지와 관계없이 특정 파일이 디스크에서 변경될 때 훅을 실행하려면 [FileChanged](#filechanged)를 사용하십시오. `Bash` 명령이나 Claude Code 외부의 프로세스가 동일한 파일을 다시 쓰는 경우 Claude Code는 `Edit|Write`와 일치하는 `PostToolUse` 훅을 실행하지 않습니다.2231* 무엇이 기록했는지와 관계없이 특정 파일이 디스크에서 변경될 때 훅을 실행하려면 [FileChanged](#filechanged)를 사용하십시오. `Bash` 명령이나 Claude Code 외부의 프로세스가 동일한 파일을 다시 쓰는 경우 Claude Code는 `Edit|Write`와 일치하는 `PostToolUse` 훅을 실행하지 않습니다.

2207 2232 

2233#### 중단 후 PostToolUse

2234 

2235도구 호출 중에 메시지를 보내거나 중단한 후 `PostToolUse` 훅이 일찍 멈춘다면, `Ctrl+Enter`, `Enter`, `Esc` 중 어느 것을 눌렀는지 확인하십시오.

2236 

2237* **`Ctrl+Enter`**: 도구가 실행 중일 때 이 키를 눌러 [턴이 종료되고](https://code.claude.com/docs/ko/interactive-mode.md#when-claude-code-sends-what-you-queued) 도구가 완료되면, `PostToolUse` 훅이 그 결과에 대해 실행되며 완료까지 10초가 주어집니다. 메시지 앞에 `!` 명령을 대기열에 넣었거나, 예를 들어 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/ko/env-vars#variables)로 백그라운드 작업이 비활성화된 경우 이 키는 `Esc`처럼 동작합니다.

2238* **`Enter`**: `Enter`로 대기열에 넣은 메시지는 턴을 중단하지 않으므로 훅은 평소의 `timeout`을 유지합니다.

2239* **`Esc`**: 훅이 즉시 취소되므로, 훅이 실행되어야 할 때는 `Enter` 또는 `Ctrl+Enter`로 메시지를 보내십시오.

2240 

224110초가 지나면 Claude Code는 [`timeout`](#common-fields)과 관계없이 아직 실행 중인 명령 훅을 종료합니다. 더 오래 걸리는 명령 훅이 완료되도록 하려면 [`async: true`](#run-hooks-in-the-background)로 실행하십시오. 이 경우 훅은 결과를 차단하거나 다시 작성할 수 없습니다.

2242 

2243v2.1.319 이전에는 메시지로 턴을 중단한 후 훅이 시작되지 않았고, 실행 중인 훅은 중지되었습니다.

2244 

2208#### PostToolUse 입력2245#### PostToolUse 입력

2209 2246 

2210`PostToolUse` 훅은 도구가 이미 성공적으로 실행된 후에 발생합니다. 입력에는 도구에 전송된 인수인 `tool_input`과 도구가 반환한 결과인 `tool_response`가 모두 포함됩니다. 두 항목의 정확한 스키마는 도구에 따라 다릅니다. 파일 도구의 `tool_input` 경로는 [PreToolUse](#pretooluse-input)와 동일한 형식으로 전달됩니다. 즉 항상 절대 경로이며 플랫폼 고유의 구분자를 사용하므로 Windows에서는 백슬래시입니다. MCP 도구의 경우 입력에 [`mcp_server`](#pretooluse-input) 객체도 포함됩니다.2247`PostToolUse` 훅은 도구가 이미 성공적으로 실행된 후에 발생합니다. 입력에는 도구에 전송된 인수인 `tool_input`과 도구가 반환한 결과인 `tool_response`가 모두 포함됩니다. 두 항목의 정확한 스키마는 도구에 따라 다릅니다. 파일 도구의 `tool_input` 경로는 [PreToolUse](#pretooluse-input)와 동일한 형식으로 전달됩니다. 즉 항상 절대 경로이며 플랫폼 고유의 구분자를 사용하므로 Windows에서는 백슬래시입니다. MCP 도구의 경우 입력에 [`mcp_server`](#pretooluse-input) 객체도 포함됩니다.


2479| `permission_prompt` | Claude가 도구 사용 또는 샌드박스 처리된 명령의 [네트워크 요청](https://code.claude.com/docs/ko/sandboxing.md#network-isolation)에 대한 사용자 승인이 필요하며, 프롬프트가 약 6초간 대기한 경우 |2516| `permission_prompt` | Claude가 도구 사용 또는 샌드박스 처리된 명령의 [네트워크 요청](https://code.claude.com/docs/ko/sandboxing.md#network-isolation)에 대한 사용자 승인이 필요하며, 프롬프트가 약 6초간 대기한 경우 |

2480| `idle_prompt` | Claude가 약 60초 전에 응답을 마쳤고 그 이후 사용자가 입력하지 않은 경우 |2517| `idle_prompt` | Claude가 약 60초 전에 응답을 마쳤고 그 이후 사용자가 입력하지 않은 경우 |

2481| `auth_success` | 인증이 완료된 경우 |2518| `auth_success` | 인증이 완료된 경우 |

2519| `auth_storage_failure` | 로그인은 완료되었지만 Claude Code가 새 자격 증명을 [자격 증명 저장소](https://code.claude.com/docs/ko/authentication.md#credential-management)에 저장할 수 없는 경우. `auth_success` 대신 실행됩니다 |

2482| `elicitation_dialog` | MCP 서버가 elicitation 양식을 열고 사용자가 약 6초간 입력하지 않은 경우 |2520| `elicitation_dialog` | MCP 서버가 elicitation 양식을 열고 사용자가 약 6초간 입력하지 않은 경우 |

2483| `elicitation_url_dialog` | MCP 서버가 브라우저 URL을 열도록 요청하고 사용자가 약 6초간 입력하지 않은 경우 |2521| `elicitation_url_dialog` | MCP 서버가 브라우저 URL을 열도록 요청하고 사용자가 약 6초간 입력하지 않은 경우 |

2484| `elicitation_complete` | MCP 서버가 [URL 모드 elicitation](#elicitation-input)이 완료되었다고 보고한 경우 |2522| `elicitation_complete` | MCP 서버가 [URL 모드 elicitation](#elicitation-input)이 완료되었다고 보고한 경우 |


2490| `quota_auto_resume_disabled` | Claude Code가 작업을 계속하지 않고 claude.ai 사용 한도 대기를 종료한 경우: Claude Code가 스스로 시작한 대기 중에 [`autoContinueAtUsageLimit`](https://code.claude.com/docs/ko/settings-reference#autocontinueatusagelimit)이 꺼졌거나 재설정 시점이 24시간 이상 뒤로 밀린 경우, 계속한 작업이 계속 한도에 도달한 경우, 또는 계속 진행이 모델에 도달하기 전에 차단된 경우입니다. 사용자가 `Esc` 또는 `Ctrl+C`를 누르거나 **Don't continue automatically**를 선택한 경우에는 발생하지 않습니다 |2528| `quota_auto_resume_disabled` | Claude Code가 작업을 계속하지 않고 claude.ai 사용 한도 대기를 종료한 경우: Claude Code가 스스로 시작한 대기 중에 [`autoContinueAtUsageLimit`](https://code.claude.com/docs/ko/settings-reference#autocontinueatusagelimit)이 꺼졌거나 재설정 시점이 24시간 이상 뒤로 밀린 경우, 계속한 작업이 계속 한도에 도달한 경우, 또는 계속 진행이 모델에 도달하기 전에 차단된 경우입니다. 사용자가 `Esc` 또는 `Ctrl+C`를 누르거나 **Don't continue automatically**를 선택한 경우에는 발생하지 않습니다 |

2491| `plugin_notification` | [mod](https://code.claude.com/docs/ko/plugins/mods/api.md#show-something-without-starting-a-turn)가 `$.ui.notify`로 알림을 발생시킨 경우. mod가 설정하지 않는 한 훅의 `title`은 mod의 이름입니다 |2529| `plugin_notification` | [mod](https://code.claude.com/docs/ko/plugins/mods/api.md#show-something-without-starting-a-turn)가 `$.ui.notify`로 알림을 발생시킨 경우. mod가 설정하지 않는 한 훅의 `title`은 mod의 이름입니다 |

2492 2530 

2493`quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled` 유형은 Claude Code v2.1.234 이상이 필요합니다.2531`quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled` 유형은 Claude Code v2.1.234 이상이 필요합니다. `auth_storage_failure` 유형은 v2.1.288 이상이 필요합니다.

2494 2532 

2495터미널 세션에서 샌드박스 처리된 명령의 네트워크 요청에 대한 `permission_prompt`는 Claude Code v2.1.246 이상이 필요합니다.2533터미널 세션에서 샌드박스 처리된 명령의 네트워크 요청에 대한 `permission_prompt`는 Claude Code v2.1.246 이상이 필요합니다.

2496 2534 


3326}3364}

3327```3365```

3328 3366 

3367#### PreCompact 출력

3368 

3369PreCompact 훅이 0으로 종료하고 차단하지 않으면, Claude Code는 해당 stdout을 압축 요약에 대한 지침으로 사용합니다. 이 stdout은 훅당 10,000자 미만으로 유지하세요. Claude Code는 더 긴 출력을 상한에서 자르고 표시를 덧붙입니다.

3370 

3329### PostCompact3371### PostCompact

3330 3372 

3331Claude Code가 압축 작업을 완료한 후 실행됩니다. 이 이벤트를 사용하여 새로 압축된 상태에 대응할 수 있습니다. 예를 들어 생성된 요약을 로그에 기록하거나 외부 상태를 업데이트할 수 있습니다. Claude Code는 PostCompact 훅의 `systemMessage`와 `continue` 필드를 무시합니다.3373Claude Code가 압축 작업을 완료한 후 실행됩니다. 이 이벤트를 사용하여 새로 압축된 상태에 대응할 수 있습니다. 예를 들어 생성된 요약을 로그에 기록하거나 외부 상태를 업데이트할 수 있습니다. Claude Code는 PostCompact 훅의 `systemMessage`와 `continue` 필드를 무시합니다.

hooks-guide.md +4 −3

Details

177> >177> >

178> > WSL 내에서 Claude Code를 실행하는 경우, Windows 상호 운용을 통해 `PATH`에서 `powershell.exe`를 사용할 수 있어야 합니다.178> > WSL 내에서 Claude Code를 실행하는 경우, Windows 상호 운용을 통해 `PATH`에서 `powershell.exe`를 사용할 수 있어야 합니다.

179 179 

180빈 `matcher`는 모든 알림 유형에서 발생합니다. 특정 이벤트에서만 발생하도록 하려면 다음 값 중 하나로 설정하십시오.180빈 `matcher`는 모든 알림 유형에서 발생합니다. 특정 이벤트에서만 발생하도록 하려면 다음 값 중 하나와 같은 알림 유형으로 설정하십시오.

181 181 

182| Matcher | 발생 시점 |182| Matcher | 발생 시점 |

183| :- | :- |183| :- | :- |

184| `permission_prompt` | Claude가 도구 사용 또는 샌드박스 명령의 [네트워크 요청](https://code.claude.com/docs/ko/sandboxing.md#network-isolation)에 대한 승인을 필요로 하고, 프롬프트가 약 6초 동안 대기한 경우 |184| `permission_prompt` | Claude가 도구 사용 또는 샌드박스 명령의 [네트워크 요청](https://code.claude.com/docs/ko/sandboxing.md#network-isolation)에 대한 승인을 필요로 하고, 프롬프트가 약 6초 동안 대기한 경우 |

185| `idle_prompt` | Claude가 약 60초 전에 응답을 마쳤고 그 이후로 사용자가 입력하지 않은 경우 |185| `idle_prompt` | Claude가 약 60초 전에 응답을 마쳤고 그 이후로 사용자가 입력하지 않은 경우 |

186| `auth_success` | 인증이 완료된 경우 |186| `auth_success` | 인증이 완료된 경우 |

187| `auth_storage_failure` | 로그인은 완료되었지만 Claude Code가 새 자격 증명을 [자격 증명 저장소](https://code.claude.com/docs/ko/authentication.md#credential-management)에 저장할 수 없는 경우. `auth_success` 대신 발생합니다 |

187| `elicitation_dialog` | MCP 서버가 elicitation 양식을 열고 사용자가 약 6초 동안 입력하지 않은 경우 |188| `elicitation_dialog` | MCP 서버가 elicitation 양식을 열고 사용자가 약 6초 동안 입력하지 않은 경우 |

188| `elicitation_url_dialog` | MCP 서버가 브라우저 URL을 열도록 요청하고 사용자가 약 6초 동안 입력하지 않은 경우 |189| `elicitation_url_dialog` | MCP 서버가 브라우저 URL을 열도록 요청하고 사용자가 약 6초 동안 입력하지 않은 경우 |

189| `elicitation_complete` | MCP 서버가 [URL 모드 elicitation](https://code.claude.com/docs/ko/hooks.md#elicitation-input)이 완료되었다고 보고한 경우 |190| `elicitation_complete` | MCP 서버가 [URL 모드 elicitation](https://code.claude.com/docs/ko/hooks.md#elicitation-input)이 완료되었다고 보고한 경우 |


197 198 

198Claude Code는 터미널과, Claude Desktop, VS Code 확장 프로그램 및 Agent SDK를 통해 권한 요청에 응답하는 기타 호스트에서 `permission_prompt`의 시점을 다르게 측정합니다. 두 가지 시점은 모두 [각 알림 유형이 발생하는 시점](https://code.claude.com/docs/ko/hooks.md#notification)을 참조하십시오.199Claude Code는 터미널과, Claude Desktop, VS Code 확장 프로그램 및 Agent SDK를 통해 권한 요청에 응답하는 기타 호스트에서 `permission_prompt`의 시점을 다르게 측정합니다. 두 가지 시점은 모두 [각 알림 유형이 발생하는 시점](https://code.claude.com/docs/ko/hooks.md#notification)을 참조하십시오.

199 200 

200`quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled` matcher를 사용하려면 Claude Code v2.1.234 이상이 필요합니다.201`quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled` matcher를 사용하려면 Claude Code v2.1.234 이상이 필요합니다. `auth_storage_failure` matcher를 사용하려면 v2.1.288 이상이 필요합니다.

201 202 

202터미널 세션에서 샌드박스 명령의 네트워크 요청에 대한 `permission_prompt`를 사용하려면 Claude Code v2.1.246 이상이 필요합니다.203터미널 세션에서 샌드박스 명령의 네트워크 요청에 대한 `permission_prompt`를 사용하려면 Claude Code v2.1.246 이상이 필요합니다.

203 204 


688| `SessionStart` | 세션이 시작된 방식 | `startup`, `resume`, `clear`, `compact`, `fork` |689| `SessionStart` | 세션이 시작된 방식 | `startup`, `resume`, `clear`, `compact`, `fork` |

689| `Setup` | 어떤 CLI 플래그가 설정을 트리거했는지 | `init`, `maintenance` |690| `Setup` | 어떤 CLI 플래그가 설정을 트리거했는지 | `init`, `maintenance` |

690| `SessionEnd` | 세션이 종료된 이유 | `clear`, `resume`, `logout`, `prompt_input_exit`, `other` |691| `SessionEnd` | 세션이 종료된 이유 | `clear`, `resume`, `logout`, `prompt_input_exit`, `other` |

691| `Notification` | 알림 유형 | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_url_dialog`, `elicitation_complete`, `elicitation_response`, `agent_needs_input`, `agent_completed`, `quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled`, `plugin_notification` |692| `Notification` | 알림 유형 | `permission_prompt`, `idle_prompt`, `auth_success`, `auth_storage_failure`, `elicitation_dialog`, `elicitation_url_dialog`, `elicitation_complete`, `elicitation_response`, `agent_needs_input`, `agent_completed`, `quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled`, `plugin_notification` |

692| `SubagentStart` | 에이전트 유형 | `general-purpose`, `Explore`, `Plan` 또는 사용자 정의 에이전트 이름 |693| `SubagentStart` | 에이전트 유형 | `general-purpose`, `Explore`, `Plan` 또는 사용자 정의 에이전트 이름 |

693| `PreCompact`, `PostCompact` | 압축을 트리거한 것 | `manual`, `auto` |694| `PreCompact`, `PostCompact` | 압축을 트리거한 것 | `manual`, `auto` |

694| `PreModelSwitch`, `PostModelSwitch` | 세션이 전환되는 모델의 정규 이름([PreModelSwitch](https://code.claude.com/docs/ko/hooks.md#premodelswitch) 아래에 설명됨) | `claude-opus-5`, `claude-opus-4-6\|claude-opus-5`, `.*opus.*` |695| `PreModelSwitch`, `PostModelSwitch` | 세션이 전환되는 모델의 정규 이름([PreModelSwitch](https://code.claude.com/docs/ko/hooks.md#premodelswitch) 아래에 설명됨) | `claude-opus-5`, `claude-opus-4-6\|claude-opus-5`, `.*opus.*` |

mcp.md +13 −3

Details

252 252 

253이 목록의 상태는 연결 시도가 아닌 구성 결정을 보고하므로 Claude Code는 서버에 연결하지 않고 인쇄합니다:253이 목록의 상태는 연결 시도가 아닌 구성 결정을 보고하므로 Claude Code는 서버에 연결하지 않고 인쇄합니다:

254 254 

255* ``⏸ Pending approval (run `claude` to approve)``: 아직 승인하지 않은 `.mcp.json`의 프로젝트 범위 서버입니다. Claude Code는 이 상태를 `claude mcp list`와 `claude mcp get <name>` 모두에 표시합니다. `claude`를 대화형으로 실행하여 검토하고 승인하십시오.255* ``⏸ Pending approval (run `claude` to approve)``: 아직 승인하지 않은 `.mcp.json`의 프로젝트 범위 서버입니다. Claude Code는 `claude mcp list`와 `claude mcp get <name>` 모두에 이 상태를 표시합니다. `claude`를 대화형으로 실행하여 검토하고 승인하십시오.

256* `✘ Rejected (see disabledMcpjsonServers in settings)`: [`disabledMcpjsonServers`](https://code.claude.com/docs/ko/settings-reference#disabledmcpjsonservers) 항목이 거부하는 `.mcp.json` 서버입니다. Claude Code는 `claude mcp get <name>`에만 표시합니다.256* `✘ Rejected (see disabledMcpjsonServers in settings)`: [`disabledMcpjsonServers`](https://code.claude.com/docs/ko/settings-reference#disabledmcpjsonservers) 항목이 거부하는 `.mcp.json` 서버입니다. Claude Code는 `claude mcp get <name>`에만 표시합니다.

257* `⊘ Disabled for this project (re-enable via /mcp)`: 프로젝트의 [`disabledMcpServers`](#disable-a-server-without-removing-it) 목록이 이름을 지정하는 서버입니다. Claude Code는 `claude mcp list` 및 `claude mcp get <name>` 모두에 표시합니다. `/mcp` 패널에서 서버를 다시 켜세요.257* `⊘ Disabled for this project (re-enable via /mcp)`: 프로젝트의 [`disabledMcpServers`](#disable-a-server-without-removing-it) 목록이 이름을 지정하는 서버입니다. Claude Code는 `claude mcp list` 및 `claude mcp get <name>` 모두에 표시합니다. `/mcp` 패널에서 서버를 다시 켜세요.

258* `✘ Blocked by enterprise managed policy`: 조직의 정책 중 하나가 거부한 서버입니다. Claude Code는 이 상태를 `claude mcp list`와 `claude mcp get <name>` 모두에 표시합니다. [관리형 MCP 구성](https://code.claude.com/docs/ko/managed-mcp.md#how-restrictions-appear-to-users)의 허용 목록, 거부 목록 또는 기타 제한으로 차단된 서버는 이 상태로 표시되지 않고 두 명령 모두에서 숨겨집니다. 어떤 정책이 서버를 차단하는지 관리자에게 문의하십시오.258* `✘ Blocked by enterprise managed policy`: 조직의 정책 중 하나가 거부한 서버입니다. Claude Code는 이 상태를 `claude mcp list`와 `claude mcp get <name>` 모두에 표시합니다. [관리형 MCP 구성](https://code.claude.com/docs/ko/managed-mcp.md#how-restrictions-appear-to-users)의 허용 목록, 거부 목록 또는 기타 제한으로 차단된 서버는 이 상태로 표시되지 않고 두 명령 모두에서 숨겨집니다. 어떤 정책이 서버를 차단하는지 관리자에게 문의하십시오.


306 306 

307`/mcp` 패널은 각 연결된 서버 옆에 도구 개수를 표시하고 도구 기능을 광고하지만 도구를 노출하지 않는 서버에 플래그를 지정합니다.307`/mcp` 패널은 각 연결된 서버 옆에 도구 개수를 표시하고 도구 기능을 광고하지만 도구를 노출하지 않는 서버에 플래그를 지정합니다.

308 308 

309##### 클라우드 세션의 도구 개수

310 

311[클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서 `3 of 13 tools available` 같은 개수는 Claude가 나머지 10개를 사용할 수 없다는 의미입니다. 다음과 같은 원인을 확인하십시오.

312 

313* **저장소의 `.claude/settings.json`에 있는 거부 규칙이 해당 도구나 서버 전체를 지정함**: [세션이 해당 파일을 읽는 경우](https://code.claude.com/docs/ko/settings.md#settings-in-cloud-sessions) [규칙](https://code.claude.com/docs/ko/permissions.md#mcp)을 제거하십시오

314* **도구의 전체 이름이 128자를 초과함**: [이름이 너무 긴 경우의 단계](https://code.claude.com/docs/ko/errors.md#mcp-tool-name-over-128-characters)를 따르십시오

315* **서버가 Claude가 아닌 자체 인터페이스용으로 도구를 나열함**: 서버를 관리하는 경우 도구의 `_meta.ui.visibility`에 `model`을 추가하여 Claude에 도구를 제공하십시오. 그렇지 않다면 수정할 것이 없습니다.

316 

317##### 아직 연결 중인 서버의 도구

318 

309요청이 백그라운드에서 아직 연결 중인 서버의 도구가 필요한 경우 Claude는 해당 서버가 연결될 때까지 기다립니다. 대기 방식은 구성에 따라 다릅니다:319요청이 백그라운드에서 아직 연결 중인 서버의 도구가 필요한 경우 Claude는 해당 서버가 연결될 때까지 기다립니다. 대기 방식은 구성에 따라 다릅니다:

310 320 

311* **[도구 검색](#scale-with-mcp-tool-search) 포함 (기본값)**: 대기는 `ToolSearch` 호출 내에서 발생합니다.321* **[도구 검색](#scale-with-mcp-tool-search) 포함 (기본값)**: 대기는 `ToolSearch` 호출 내에서 발생합니다.


349* 인증 응답이 예상치 못한 발급자의 이름을 지정하는 [MCP OAuth 로그인](#authenticate-with-remote-mcp-servers)을 실패합니다.359* 인증 응답이 예상치 못한 발급자의 이름을 지정하는 [MCP OAuth 로그인](#authenticate-with-remote-mcp-servers)을 실패합니다.

350* [MCP OAuth](#authenticate-with-remote-mcp-servers) 자격 증명을 HTTPS를 통해 제공되거나 `localhost`, `127.0.0.1` 또는 `::1`에서 제공되는 토큰 엔드포인트에만 보냅니다. 토큰 엔드포인트가 로컬 네트워크의 장치와 같은 다른 곳에서 일반 `http://`인 서버의 로그인이 실패합니다. [HTTPS가 아닌 토큰 엔드포인트로 자격 증명 전송 거부](https://code.claude.com/docs/ko/errors.md#refusing-to-send-credentials-to-non-https-token-endpoint)를 참조하세요.360* [MCP OAuth](#authenticate-with-remote-mcp-servers) 자격 증명을 HTTPS를 통해 제공되거나 `localhost`, `127.0.0.1` 또는 `::1`에서 제공되는 토큰 엔드포인트에만 보냅니다. 토큰 엔드포인트가 로컬 네트워크의 장치와 같은 다른 곳에서 일반 `http://`인 서버의 로그인이 실패합니다. [HTTPS가 아닌 토큰 엔드포인트로 자격 증명 전송 거부](https://code.claude.com/docs/ko/errors.md#refusing-to-send-credentials-to-non-https-token-endpoint)를 참조하세요.

351 361 

352Anthropic은 Claude Code가 가져오는 기능 플래그를 사용하여 특정 서버를 이전 프로토콜에 유지하거나 해당 스트림에서 제외할 수 있습니다.362Anthropic은 Claude Code가 가져오는 기능 플래그를 통해 특정 서버를 이전 프로토콜에 유지하거나 해당 스트림에서 제외할 수 있습니다. 런타임을 직접 선택하려면 [`MCP_SDK_GENERATION`](https://code.claude.com/docs/ko/env-vars)을 `v1` 또는 `v2`로 설정하십시오.

353 363 

354런타임을 직접 선택하려면 [`MCP_SDK_GENERATION`](https://code.claude.com/docs/ko/env-vars)을 `v1` 또는 `v2`로 설정하세요. Claude Code가 묻는지 결정하려면 [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/ko/env-vars)을 `auto` 또는 `legacy`로 설정하세요.364Claude Code가 서버에 최신 리비전에 대해 물을지 결정하려면 [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/ko/env-vars)을 `auto` 또는 `legacy`로 설정하십시오. 이 변수를 설정하지 않으면, 예를 들어 stdio 서버가 질문을 받고 종료된 후에는 Claude Code가 7일 동안 해당 서버에 묻는 것을 건너뛸 수 있습니다. 업그레이드된 서버에 더 빨리 묻게 하려면 `auto`를 설정하십시오.

355 365 

356### 동적 도구 업데이트366### 동적 도구 업데이트

357 367 

mobile.md +1 −1

Details

66 66 

67### 푸시 알림 받기67### 푸시 알림 받기

68 68 

69Remote Control이 활성화되면 Claude는 휴대폰에 푸시 알림을 보낼 수 있습니다. 일반적으로 오래 실행되는 작업이 완료되거나 사용자의 결정이 필요할 때입니다. 프롬프트에서 `notify me when the tests finish`와 같이 요청할 수도 있습니다. 두 개의 `/config` 토글과 전달 문제 해결은 [모바일 푸시 알림](https://code.claude.com/docs/ko/remote-control.md#mobile-push-notifications)을 참조하세요.69Remote Control이 활성화되면 Claude는 오래 실행되는 작업이 완료되거나 사용자의 결정이 필요할 때 휴대폰에 푸시 알림을 보낼 수 있습니다. 프롬프트에서 `notify me when the tests finish`와 같이 요청할 수도 있습니다. 두 개의 `/config` 토글과 전달 문제 해결은 [모바일 푸시 알림](https://code.claude.com/docs/ko/remote-control.md#mobile-push-notifications)을 참조하세요.

70 70 

71Dispatch는 생성한 Code 세션이 완료되거나 승인이 필요할 때 자체 알림을 보냅니다. 이는 [Dispatch의 세션](https://code.claude.com/docs/ko/desktop.md#sessions-from-dispatch)에서 설명합니다.71Dispatch는 생성한 Code 세션이 완료되거나 승인이 필요할 때 자체 알림을 보냅니다. 이는 [Dispatch의 세션](https://code.claude.com/docs/ko/desktop.md#sessions-from-dispatch)에서 설명합니다.

72 72 

model-config.md +10 −1

Details

566* 두 모델이 동일한 요청에 플래그를 지정하면, 프롬프트를 편집하고 재시도하거나 새 세션을 시작할 수 있습니다.566* 두 모델이 동일한 요청에 플래그를 지정하면, 프롬프트를 편집하고 재시도하거나 새 세션을 시작할 수 있습니다.

567* 모바일 앱의 [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서는 편집 및 재시도가 지원되지 않습니다. 모델을 전환하거나 데스크톱 브라우저 또는 데스크톱 앱에서 세션을 계속하세요.567* 모바일 앱의 [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서는 편집 및 재시도가 지원되지 않습니다. 모델을 전환하거나 데스크톱 브라우저 또는 데스크톱 앱에서 세션을 계속하세요.

568* [비대화형 모드](https://code.claude.com/docs/ko/cli-reference.md#cli-flags) 및 프롬프트를 표시할 수 없는 SDK 통합에서는 플래그된 요청이 거부로 턴을 종료합니다.568* [비대화형 모드](https://code.claude.com/docs/ko/cli-reference.md#cli-flags) 및 프롬프트를 표시할 수 없는 SDK 통합에서는 플래그된 요청이 거부로 턴을 종료합니다.

569* [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md)에서는 Claude Code가 프롬프트를 표시하지 않으며, 모델을 전환하게 될 플래그된 요청은 폴백 모델에서 다시 실행됩니다.569* Claude가 [Agent 도구](https://code.claude.com/docs/ko/tools-reference.md#agent-tool-behavior)로 시작하는 서브에이전트에서는 Claude Code가 일시 중지하여 묻지 않으며, 서브에이전트는 모델을 전환하는 대신 실패합니다. [서브에이전트는 묻지 않고 전환하거나 실패함](#subagents-switch-or-fail-without-asking)을 참조하세요.

570* 폴백 대상이 [`availableModels`](#restrict-model-selection)에 의해 차단될 때, Claude Code는 프롬프트를 표시하지 않습니다. 플래그된 요청은 거부로 종료되며, 대상이 차단될 때 자동 폴백과 동일합니다.570* 폴백 대상이 [`availableModels`](#restrict-model-selection)에 의해 차단될 때, Claude Code는 프롬프트를 표시하지 않습니다. 플래그된 요청은 거부로 종료되며, 대상이 차단될 때 자동 폴백과 동일합니다.

571 571 

572#### 서브에이전트는 묻지 않고 전환하거나 실패함

573 

574Claude가 [Agent 도구](https://code.claude.com/docs/ko/tools-reference.md#agent-tool-behavior)로 시작하는 기본 제공 또는 사용자 정의 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md)에서는 Claude Code가 플래그된 요청에서 [일시 중지하여 묻지](#ask-before-switching) 않습니다. 폴백 모델을 사용할 수 있으면, `/config`의 **Switch models when a message is flagged** 선택에 따라 요청이 폴백 모델에서 다시 실행되거나 서브에이전트가 실패합니다:

575 

576* **Switch automatically** 또는 아직 선택하지 않은 경우: 요청이 폴백 모델에서 다시 실행되며, 세션의 모델은 변경되지 않습니다

577* **Ask each time**: 서브에이전트가 [`Agent terminated early due to an API error`](https://code.claude.com/docs/ko/errors#agent-terminated-early-due-to-an-api-error) 및 거부 메시지와 함께 실패합니다. Claude는 해당 오류를 받고 완료되지 않은 작업을 어떻게 처리할지 결정합니다. 서브에이전트가 모델을 전환하도록 하려면 **Switch automatically**를 선택하세요. 그러면 메인 대화도 묻지 않고 전환됩니다.

578 

579폴백 모델을 사용할 수 없으면 어느 쪽을 선택하든 서브에이전트는 동일한 방식으로 실패합니다. v2.1.318 이전에는 어느 쪽을 선택하든 서브에이전트의 플래그된 요청이 사용 가능한 폴백 모델에서 다시 실행되었습니다.

580 

572#### Bedrock, Agent Platform 및 Foundry에서 폴백 활성화581#### Bedrock, Agent Platform 및 Foundry에서 폴백 활성화

573 582 

574[Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md), [Google Cloud의 Agent Platform](https://code.claude.com/docs/ko/google-vertex-ai.md) 및 [Microsoft Foundry](https://code.claude.com/docs/ko/microsoft-foundry.md)에서는 모델 ID가 제공자별이므로, 자동 폴백은 Claude Code가 관련된 각 모델을 식별할 수 있을 때만 작동합니다:583[Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md), [Google Cloud의 Agent Platform](https://code.claude.com/docs/ko/google-vertex-ai.md) 및 [Microsoft Foundry](https://code.claude.com/docs/ko/microsoft-foundry.md)에서는 모델 ID가 제공자별이므로, 자동 폴백은 Claude Code가 관련된 각 모델을 식별할 수 있을 때만 작동합니다:

Details

89export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem89export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem

90```90```

91 91 

92다음 경고 중 하나가 표시되면 Claude Code가 `NODE_EXTRA_CA_CERTS` 파일 전체를 로드하지 못한 것이며, 건너뛴 인증서가 필요한 연결은 실패할 수 있습니다:

93 

94* `Claude Code used only the certificates that it could read in full from the NODE_EXTRA_CA_CERTS file`

95* `Claude Code ignored all of the NODE_EXTRA_CA_CERTS file: it holds no certificate that Claude Code can read`

96 

97각 경고의 전체 텍스트에 파일을 수정하는 방법이 안내되어 있습니다. 건너뛴 인증서라도 [CA 인증서 저장소](#ca-certificate-store)에도 있는 경우에는 계속 작동합니다.

98 

92## mTLS 인증99## mTLS 인증

93 100 

94엔터프라이즈 환경에서 클라이언트 인증서 인증이 필요한 경우:101엔터프라이즈 환경에서 클라이언트 인증서 인증이 필요한 경우:

Details

154 154 

155### HIPAA 구성에서의 권한 모드155### HIPAA 구성에서의 권한 모드

156 156 

157[HIPAA 구성](https://code.claude.com/docs/ko/hipaa-setup.md)이 적용된 조직에서는 기본 제공 `auto` 기본값이 적용되지 않습니다. 시작 권한 모드를 선택하는 다른 항목이 없으면 터미널 또는 VS Code 세션은 수동 모드에서 시작됩니다. 터미널 세션에는 `Auto mode isn't the default for your organization · Shift+Tab to switch`도 표시되며, VS Code 확장 프로그램에는 알림이 표시되지 않습니다. 이 내용이 적용되는 세션은 [개발자의 로그인 및 연결 방식 확인](https://code.claude.com/docs/ko/hipaa-setup.md#check-how-developers-sign-in-and-connect)에 나와 있습니다.157[HIPAA 구성](https://code.claude.com/docs/ko/hipaa-setup.md)이 적용된 조직에서는 [기본 제공 `auto` 기본값](#which-mode-a-session-starts-in)이 적용되지 않습니다. 시작 권한 모드를 선택하는 다른 항목이 없으면 터미널 또는 VS Code 세션은 수동 모드에서 시작됩니다. 터미널 세션에는 `Auto mode isn't the default for your organization · Shift+Tab to switch`도 표시되며, VS Code 확장 프로그램에는 알림이 표시되지 않습니다. 이 내용이 적용되는 세션은 [개발자의 로그인 및 연결 방식 확인](https://code.claude.com/docs/ko/hipaa-setup.md#check-how-developers-sign-in-and-connect)에 나와 있습니다.

158 158 

159자동 모드와 `bypassPermissions`는 계속 사용할 수 있습니다.159자동 모드와 `bypassPermissions`는 계속 사용할 수 있습니다.

160 160 


163* **자동 모드 제거**: 관리형 설정에서 [`permissions.disableAutoMode`](https://code.claude.com/docs/ko/settings-reference#disableautomode)를 `"disable"`로 설정합니다163* **자동 모드 제거**: 관리형 설정에서 [`permissions.disableAutoMode`](https://code.claude.com/docs/ko/settings-reference#disableautomode)를 `"disable"`로 설정합니다

164* **`bypassPermissions` 차단**: 관리형 설정에서 [`permissions.disableBypassPermissionsMode`](https://code.claude.com/docs/ko/settings-reference#permissions-disablebypasspermissionsmode)를 `"disable"`로 설정합니다164* **`bypassPermissions` 차단**: 관리형 설정에서 [`permissions.disableBypassPermissionsMode`](https://code.claude.com/docs/ko/settings-reference#permissions-disablebypasspermissionsmode)를 `"disable"`로 설정합니다

165 165 

166[HIPAA 구성의 최소 버전](https://code.claude.com/docs/ko/hipaa-setup.md#update-claude-code-and-claude-desktop)인 Claude Code v2.1.285 이상이 필요합니다.

167 

168## 권한 모드 전환166## 권한 모드 전환

169 167 

170각 인터페이스는 세션 중에 권한 모드를 전환하기 위한 자체 컨트롤과 새 세션이 시작되는 권한 모드를 선택하는 자체 방법을 가집니다. 인터페이스를 선택하여 컨트롤을 확인하세요.168각 인터페이스는 세션 중에 권한 모드를 전환하기 위한 자체 컨트롤과 새 세션이 시작되는 권한 모드를 선택하는 자체 방법을 가집니다. 인터페이스를 선택하여 컨트롤을 확인하세요.


253>251>

254> [claude.ai/code](https://claude.ai/code)에서는 프롬프트 상자 아래 행에 있는 모드 드롭다운을 사용합니다. 모바일 앱에서는 프롬프트 상자의 **+** 버튼을 탭한 다음 **Permission**을 탭합니다. 클라우드 세션과 Remote Control 세션은 서로 다른 권한 모드를 제공합니다:252> [claude.ai/code](https://claude.ai/code)에서는 프롬프트 상자 아래 행에 있는 모드 드롭다운을 사용합니다. 모바일 앱에서는 프롬프트 상자의 **+** 버튼을 탭한 다음 **Permission**을 탭합니다. 클라우드 세션과 Remote Control 세션은 서로 다른 권한 모드를 제공합니다:

255>253>

256> * **[클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)**: Accept edits, Plan, Auto. Accept edits는 `default` 모드에 해당합니다: 클라우드 세션은 모드에 관계없이 파일 편집을 사전 승인하므로 드롭다운은 Manual 대신 Accept edits를 표시합니다. 클라우드 세션은 여전히 설정의 `defaultMode: "acceptEdits"`를 준수합니다. 자동 모드는 조직이 허용하고 선택한 모델이 지원할 때만 나타납니다. Bypass permissions는 사용할 수 없습니다.254> * **[클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)**: Accept edits, Plan, Auto. Accept edits는 `default` 모드에 해당합니다: 클라우드 세션은 모드에 관계없이 파일 편집을 사전 승인하므로 드롭다운은 Manual 대신 Accept edits를 표시합니다. 클라우드 세션은 여전히 설정의 `defaultMode: "acceptEdits"`를 준수합니다. 자동 모드는 조직이 끄지 않는 한 나타나며, claude.ai/code에서는 선택한 모델이 [지원하지 않는](#eliminate-prompts-with-auto-mode) 경우 회색으로 비활성화됩니다. Bypass permissions는 사용할 수 없습니다.

257> * **로컬 머신의 [Remote Control](https://code.claude.com/docs/ko/remote-control.md) 세션**: 직접 시작한 세션의 경우 Manual, Accept edits, Plan, Auto이며, 앱에서 Bypass permissions를 선택할 수 없습니다. Auto를 사용하려면 세션이 자동 모드 [사용 가능 요건](#eliminate-prompts-with-auto-mode)을 충족해야 합니다. 컴퓨터에서 실행 중인 프로젝트 스레드의 경우 [자신의 컴퓨터에서 스레드 실행](https://code.claude.com/docs/ko/claude-projects.md#run-a-thread-on-your-own-computer)을 참조하세요.255> * **로컬 머신의 [Remote Control](https://code.claude.com/docs/ko/remote-control.md) 세션**: 직접 시작한 세션의 경우 Manual, Accept edits, Plan, Auto이며, 앱에서 Bypass permissions를 선택할 수 없습니다. Auto를 사용하려면 세션이 자동 모드 [사용 가능 요건](#eliminate-prompts-with-auto-mode)을 충족해야 합니다. 컴퓨터에서 실행 중인 프로젝트 스레드의 경우 [자신의 컴퓨터에서 스레드 실행](https://code.claude.com/docs/ko/claude-projects.md#run-a-thread-on-your-own-computer)을 참조하세요.

258> * Bypass permissions를 제외하고, 드롭다운은 터미널에서 설정된 모드를 포함하여 로컬 세션이 있는 권한 모드를 표시합니다. 앱 또는 터미널에서 권한 모드가 변경될 때 업데이트됩니다.256> * Bypass permissions를 제외하고, 드롭다운은 터미널에서 설정된 모드를 포함하여 로컬 세션이 있는 권한 모드를 표시합니다. 앱 또는 터미널에서 권한 모드가 변경될 때 업데이트됩니다.

259> * [데스크톱 앱](https://code.claude.com/docs/ko/desktop.md) 또는 [VS Code 확장](https://code.claude.com/docs/ko/vs-code.md)이 호스팅하는 세션은 터미널에서 호스팅하는 세션과 동일하게 권한 모드 변경이 발생할 때 claude.ai에 보고합니다.257> * [데스크톱 앱](https://code.claude.com/docs/ko/desktop.md) 또는 [VS Code 확장](https://code.claude.com/docs/ko/vs-code.md)이 호스팅하는 세션은 터미널에서 호스팅하는 세션과 동일하게 권한 모드 변경이 발생할 때 claude.ai에 보고합니다.


433claude --permission-mode auto --debug-file classifier-debug.log431claude --permission-mode auto --debug-file classifier-debug.log

434```432```

435 433 

436Claude에게 읽기 전용이 아닌 셸 명령을 실행하게 한 다음, 로그에서 `classifier_request_started`를 검색하십시오.434분류기가 검토할 명령을 제공하려면 Claude에게 `curl https://example.com`을 실행하게 한 다음, 로그에서 `classifier_request_started`를 검색하십시오.

437 435 

438* **`model=` 뒤에 지정한 모델이 있음**: 변수가 적용되었습니다436* **`model=` 뒤에 지정한 모델이 있음**: 변수가 적용되었습니다

439* **`model=` 뒤에 다른 모델이 있음**: 로그에서 `ignoring CLAUDE_CODE_AUTO_MODE_MODEL`을 검색하면 이유와 필요한 조치를 확인할 수 있습니다437* **`model=` 뒤에 다른 모델이 있음**: 로그에서 `ignoring CLAUDE_CODE_AUTO_MODE_MODEL`을 검색하면 이유와 필요한 조치를 확인할 수 있습니다

440* **해당 줄이 없음**: Claude Code 프롬프트에서 `/status`의 `Auto mode server`를 확인하십시오.438* **해당 줄이 없음**: Claude Code 프롬프트에서 `/status`의 `Auto mode server`를 확인하십시오.

441 * **`Enabled`**: 이 세션의 호출을 [서버](#server-side-classifier-review)가 검토하도록 설정되어 있습니다.439 * **`Enabled`**: 이 세션의 호출을 [서버](#server-side-classifier-review)가 검토하도록 설정되어 있습니다.

442 * **`Disabled`**: [권한 모드](#switch-permission-modes)가 auto인지 확인한 다음, Claude에게 읽기 전용이 아닌 다른 명령을 실행하게 하십시오.440 * **`Disabled`**: 이 확인 절차로 아직 지정한 모델을 테스트하지 못했습니다. [권한 모드](#switch-permission-modes)가 auto이고 `curl`과 일치하는 [권한 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)이 없는지 확인한 다음, [샌드박스](https://code.claude.com/docs/ko/sandboxing.md)를 끈 상태에서 다시 확인하십시오.

443 441 

444### 분류기가 기본적으로 차단하는 항목442### 분류기가 기본적으로 차단하는 항목

445 443 

permissions.md +7 −4

Details

338 338 

339#### `Read` 및 `Edit` 규칙이 적용되는 범위339#### `Read` 및 `Edit` 규칙이 적용되는 범위

340 340 

341`Edit` 규칙은 파일을 편집하는 모든 내장 도구에 적용됩니다. Claude는 `Read` 규칙을 Grep 및 Glob처럼 파일을 읽는 모든 내장 도구, 프롬프트의 `@file` 멘션, 그리고 연결된 [IDE](https://code.claude.com/docs/ko/vs-code.md#the-built-in-ide-mcp-server)가 Claude와 공유하는 선택 영역 및 열린 파일 컨텍스트에 최선의 노력으로 적용합니다.341`Edit` 규칙은 파일을 편집하는 모든 내장 도구에 적용됩니다. Claude는 `Read(path)` 거부 규칙을 Grep 및 Glob처럼 파일을 읽는 모든 내장 도구에 최선의 노력으로 적용합니다. 또한 프롬프트의 `@file` 멘션, 그리고 연결된 [IDE](https://code.claude.com/docs/ko/vs-code.md#the-built-in-ide-mcp-server)가 Claude와 공유하는 선택 영역 및 열린 파일 컨텍스트에도 `Read(path)` 거부 규칙을 같은 방식으로 최선의 노력으로 적용합니다.

342 342 

343`Read(path)` 거부 규칙은 프롬프트에 붙여 넣은 이미지 경로와 @-멘션한 디렉터리에도 적용됩니다.343`Read(path)` 거부 규칙은 프롬프트에 붙여 넣은 이미지 경로와 @-멘션한 디렉터리에도 적용됩니다.

344 344 


353>353>

354> Read 및 Edit 거부 규칙은 Claude의 내장 파일 도구, `cat`, `head`, `tail`, `sed`, `tee`처럼 Claude Code가 Bash에서 인식하는 파일 명령, 그리고 `> file`과 `< file` 같은 Bash [리디렉션](#redirections)의 대상에 적용됩니다. 파일이 있는 디렉터리에서 실행한 `grep -r pattern .`처럼 파일 이름을 지정하지 않고 파일을 읽는 명령이나, 파일을 직접 여는 Python 또는 Node 스크립트처럼 간접적으로 파일을 읽거나 쓰는 임의의 하위 프로세스에는 적용되지 않습니다. 모든 프로세스가 특정 경로에 접근하지 못하도록 OS 수준에서 강제하려면 [샌드박스를 활성화](https://code.claude.com/docs/ko/sandboxing.md)하십시오.354> Read 및 Edit 거부 규칙은 Claude의 내장 파일 도구, `cat`, `head`, `tail`, `sed`, `tee`처럼 Claude Code가 Bash에서 인식하는 파일 명령, 그리고 `> file`과 `< file` 같은 Bash [리디렉션](#redirections)의 대상에 적용됩니다. 파일이 있는 디렉터리에서 실행한 `grep -r pattern .`처럼 파일 이름을 지정하지 않고 파일을 읽는 명령이나, 파일을 직접 여는 Python 또는 Node 스크립트처럼 간접적으로 파일을 읽거나 쓰는 임의의 하위 프로세스에는 적용되지 않습니다. 모든 프로세스가 특정 경로에 접근하지 못하도록 OS 수준에서 강제하려면 [샌드박스를 활성화](https://code.claude.com/docs/ko/sandboxing.md)하십시오.

355 355 

356#### 절대 매칭되지 않는 `Write(path)`, `NotebookEdit(path)`, `Glob(path)` 규칙356#### 매칭되지 않는 `Write(path)`, `Glob(path)`, `Grep(path)` 규칙

357 357 

358Claude Code는 파일 권한을 `Edit(path)` 및 `Read(path)` 규칙에 대해서만 검사합니다. `Write`, `NotebookEdit`, `Glob` 또는 레거시 `MultiEdit`에 대한 경로 규칙을 작성하면, Claude Code는 규칙을 받아들이지만 어떤 읽기나 편집도 해당 규칙과 매칭하지 않습니다.358Claude Code는 파일 권한을 `Edit(path)` 및 `Read(path)` 규칙에 대해 검사합니다. 아래 도구 중 하나에 대해 `*`가 아닌 경로가 있는 규칙을 받아들이기는 하지만, 어떤 읽기, 검색, 편집도 해당 규칙과 매칭하지 않습니다. `Grep(docs/**)` 거부 규칙은 Grep이 `docs`를 검색하는 것을 막지 않습니다. 대신 `Edit` 또는 `Read` 규칙을 작성하십시오.

359 359 

360`Write(docs/**)`, `NotebookEdit(docs/**)`, `MultiEdit(docs/**)` 대신 `Edit(docs/**)`를, `Glob(docs/**)` 대신 `Read(docs/**)`를 사용하십시오. 경로와 관계없이 Write, NotebookEdit, Glob 도구의 모든 사용과 매칭하려면 도구 이름만 작성하십시오.360* **`Write`, `NotebookEdit` 또는 레거시 `MultiEdit`**: `Write(docs/**)` 대신 `Edit(docs/**)`를 사용하십시오.

361* **`Glob` 또는 `Grep`**: `Grep(docs/**)` 대신 `Read(docs/**)`를 사용하십시오. 확인 규칙으로서 `Read(docs/**)`는 Claude가 매칭되는 경로에 대해 Grep이나 Glob을 호출할 때 확인을 요청하지만, 그 위의 작업 디렉터리를 검색한 결과로 매칭되는 파일이 반환될 때는 확인을 요청하지 않습니다.

362 

363경로와 관계없이 이러한 도구 중 하나의 모든 사용과 매칭하려면 [도구 이름만 작성하십시오](#match-all-uses-of-a-tool).

361 364 

362#### 경로 패턴의 매칭 방식365#### 경로 패턴의 매칭 방식

363 366 

Details

608 608 

609#### 디렉토리 검증609#### 디렉토리 검증

610 610 

611`<path>`는 매니페스트 파일 또는 디렉토리입니다. 디렉토리가 주어지면 Claude Code는 거기서 찾은 것으로 검증할 것을 선택합니다:611`<path>`는 [매니페스트 파일](#validate-a-manifest-file) 또는 디렉토리입니다. 디렉토리가 주어지면 Claude Code는 거기서 찾은 것으로 검증할 것을 선택합니다:

612 612 

613* `.claude-plugin/marketplace.json`(존재할 때)613* `.claude-plugin/marketplace.json`(존재할 때)

614* 그 외 `.claude-plugin/plugin.json`614* 그 외 `.claude-plugin/plugin.json`


631* **플러그인 루트의 `CLAUDE.md`**: 플러그인 실행에서 Claude Code는 플러그인 루트의 `CLAUDE.md`에 대해서도 경고합니다631* **플러그인 루트의 `CLAUDE.md`**: 플러그인 실행에서 Claude Code는 플러그인 루트의 `CLAUDE.md`에 대해서도 경고합니다

632* **마켓플레이스 실행의 플러그인 파일**: 마켓플레이스 디렉토리에서 실행할 때 Claude Code는 마켓플레이스가 다른 디렉토리에 나열한 플러그인의 스킬, 에이전트, 명령, 훅 파일이나 그 플러그인에 번들된 MCP 서버 파일을 열지 않습니다. 이 파일의 오류를 찾으려면 각 플러그인 디렉토리를 검증하세요632* **마켓플레이스 실행의 플러그인 파일**: 마켓플레이스 디렉토리에서 실행할 때 Claude Code는 마켓플레이스가 다른 디렉토리에 나열한 플러그인의 스킬, 에이전트, 명령, 훅 파일이나 그 플러그인에 번들된 MCP 서버 파일을 열지 않습니다. 이 파일의 오류를 찾으려면 각 플러그인 디렉토리를 검증하세요

633 633 

634#### 매니페스트 파일 검증

635 

636파일 이름이 `plugin.json` 또는 `marketplace.json`이 아니고 `.claude-plugin` 디렉토리에 있지 않으면, Claude Code는 파일의 필드를 보고 파일의 종류를 판단합니다. 다음 경우에는 파일을 마켓플레이스로 검증하고, 그 외에는 플러그인 매니페스트로 검증합니다:

637 

638* `plugins`가 배열임

639* `plugins`와 `owner`가 모두 존재함

640* 파일에 `owner`처럼 `marketplace.json`만 정의하는 필드가 있고, `author`처럼 `plugin.json`만 정의하는 필드는 없음

641 

642검사를 직접 선택하려면 파일 이름을 `plugin.json` 또는 `marketplace.json`으로 지정하세요. Claude Code는 `.claude-plugin` 디렉토리에 있는 그 외의 파일은 플러그인 매니페스트로 검증합니다.

643 

634#### 출력 및 종료 코드644#### 출력 및 종료 코드

635 645 

636Claude Code는 검증한 파일, 경로가 있는 오류 및 경고, 판정 줄을 출력합니다. 종료 코드는 판정을 따릅니다:646Claude Code는 검증한 파일, 경로가 있는 오류 및 경고, 판정 줄을 출력합니다. 종료 코드는 판정을 따릅니다:

Details

455 455 

456## 유효성 검사 메시지456## 유효성 검사 메시지

457 457 

458`claude plugin validate <path>`는 마켓플레이스 루트 또는 마켓플레이스 파일 자체를 사용합니다. 오류 및 경고를 출력합니다. 종료 코드 및 `--strict`에 대해서는 [plugin validate](https://code.claude.com/docs/ko/plugins/cli-reference.md#plugin-validate)를 참조하십시오.458`claude plugin validate <path>`는 마켓플레이스 루트 또는 마켓플레이스 파일 자체를 사용합니다. 해당 파일이 플러그인 매니페스트가 아닌 [마켓플레이스로 검증](https://code.claude.com/docs/ko/plugins/cli-reference.md#validate-a-manifest-file)되도록 하려면 파일 이름을 `marketplace.json`으로 지정하십시오. 종료 코드 및 `--strict`에 대해서는 [plugin validate](https://code.claude.com/docs/ko/plugins/cli-reference.md#plugin-validate)를 참조하십시오.

459 459 

460메시지는 플러그인 항목을 인덱스로 이름 지으며, `plugins.1.source` 또는 `plugins[1].source`로 작성됩니다.460메시지는 플러그인 항목을 인덱스로 이름 지으며, `plugins.1.source` 또는 `plugins[1].source`로 작성됩니다.

461 461 

Details

103[빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)와 표준 속도는 별도의 캐시를 유지하므로, 빠른 모드를 켜거나 끈 후 다음 요청은 다른 속도에서 캐시한 내용을 사용할 수 없습니다. 대화에서 처음으로 빠른 모드를 켜면 다음 요청은 지금까지의 전체 대화를 캐시 없이 [빠른 모드 요금](https://code.claude.com/docs/ko/fast-mode.md#understand-the-cost-tradeoff)으로 읽습니다. 이 비용을 작게 유지하려면 세션을 시작할 때 빠른 모드를 켭니다.103[빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)와 표준 속도는 별도의 캐시를 유지하므로, 빠른 모드를 켜거나 끈 후 다음 요청은 다른 속도에서 캐시한 내용을 사용할 수 없습니다. 대화에서 처음으로 빠른 모드를 켜면 다음 요청은 지금까지의 전체 대화를 캐시 없이 [빠른 모드 요금](https://code.claude.com/docs/ko/fast-mode.md#understand-the-cost-tradeoff)으로 읽습니다. 이 비용을 작게 유지하려면 세션을 시작할 때 빠른 모드를 켭니다.

104 104 

105* Claude가 작업 중일 때 켜면 해당 턴은 표준 속도로 완료되며, 캐시되지 않은 읽기 비용은 다음 턴의 첫 번째 요청에서 지불합니다.105* Claude가 작업 중일 때 켜면 해당 턴은 표준 속도로 완료되며, 캐시되지 않은 읽기 비용은 다음 턴의 첫 번째 요청에서 지불합니다.

106* 현재 모델이 빠른 모드를 지원하지 않으면 빠른 모드를 활성화할 때 [Opus로도 전환](https://code.claude.com/docs/ko/fast-mode.md#toggle-fast-mode)됩니다. 이 [모델 전환](#switching-models)은 실행 중인 턴의 다음 요청부터 자체적으로 새로운 캐시를 시작합니다.106* 현재 모델이 빠른 모드를 지원하지 않으면 `/fast`를 실행할 때 [Opus로도 전환](https://code.claude.com/docs/ko/fast-mode.md#toggle-fast-mode)됩니다. 이 [모델 전환](#switching-models)은 실행 중인 턴의 다음 요청부터 자체적으로 새로운 캐시를 시작합니다.

107 107 

108이후의 각 토글은 전환하는 속도에 캐시되어 있지 않은 내용을 캐시 없이 읽습니다. 속도 제한 후 [표준 속도로 폴백](https://code.claude.com/docs/ko/fast-mode.md#handle-rate-limits)하고 나중에 빠른 모드로 돌아가는 것처럼 Claude Code가 자체적으로 수행하는 속도 변경도 토글로 간주됩니다.108이후의 각 토글은 전환하는 속도에 캐시되어 있지 않은 내용을 캐시 없이 읽습니다. 속도 제한 후 [표준 속도로 폴백](https://code.claude.com/docs/ko/fast-mode.md#handle-rate-limits)하고 나중에 빠른 모드로 돌아가는 것처럼 Claude Code가 자체적으로 수행하는 속도 변경도 토글로 간주됩니다.

109 109 

Details

147* **This session was ended or archived from another device or app**: 세션을 다시 가져오려는 경우에만 `/remote-control`을 실행합니다. Claude Code는 보관 처리된 세션을 다시 엽니다.147* **This session was ended or archived from another device or app**: 세션을 다시 가져오려는 경우에만 `/remote-control`을 실행합니다. Claude Code는 보관 처리된 세션을 다시 엽니다.

148* **The server no longer reports this session**: 다른 기기나 앱에서 세션이 삭제되었을 수 있습니다.148* **The server no longer reports this session**: 다른 기기나 앱에서 세션이 삭제되었을 수 있습니다.

149 149 

150`/remote-control`을 실행했을 때 `Remote Control isn't connected.`라는 대화 상자가 열리면, `/login` 실행 또는 **Continue**를 선택한 후 다시 시도하기 등 대화 상자에 안내된 단계를 따릅니다.

151 

150### 다른 기기에서 연결하기152### 다른 기기에서 연결하기

151 153 

152Remote Control 세션이 활성화되면 다른 기기에서 연결하는 방법은 몇 가지가 있습니다.154Remote Control 세션이 활성화되면 다른 기기에서 연결하는 방법은 몇 가지가 있습니다.


318 320 

319Remote Control이 활성화되어 있으면 Claude가 휴대폰으로 푸시 알림을 보낼 수 있습니다.321Remote Control이 활성화되어 있으면 Claude가 휴대폰으로 푸시 알림을 보낼 수 있습니다.

320 322 

321Claude가 푸시를 보낼 시기를 결정합니다. 일반적으로 오래 실행되는 작업이 완료되거나 계속 진행하기 위해 사용자의 결정이 필요할 때 알림을 보냅니다. 프롬프트에서 푸시를 요청할 수도 있습니다. 예를 들어 `notify me when the tests finish`와 같이 입력할 수 있습니다. 아래의 두 가지 켜기/끄기 토글 외에는 이벤트별 구성이 없습니다.323오래 실행되는 작업이 완료되거나 Claude에게 사용자의 결정이 필요할 때 푸시가 도착할 수 있습니다. 프롬프트에서 푸시를 요청할 수도 있습니다. 예를 들어 `notify me when the tests finish`와 같이 입력할 수 있습니다. 아래의 두 가지 켜기/끄기 토글 외에는 이벤트별 구성이 없습니다.

322 324 

323모바일 푸시 알림을 설정하려면:325모바일 푸시 알림을 설정하려면:

324 326 

Details

25| [개발 컨테이너](#dev-containers) | 전체 개발 환경 | 예 | 중간 |25| [개발 컨테이너](#dev-containers) | 전체 개발 환경 | 예 | 중간 |

26| [사용자 정의 컨테이너](#custom-container) | 전체 개발 환경 | 예 | 중간\~높음 |26| [사용자 정의 컨테이너](#custom-container) | 전체 개발 환경 | 예 | 중간\~높음 |

27| [가상 머신](#virtual-machine) | 전체 운영 체제 | 아니오 | 높음 |27| [가상 머신](#virtual-machine) | 전체 운영 체제 | 아니오 | 높음 |

28| [클라우드 세션](#cloud-sessions) | 전체 운영 체제(Anthropic에서 호스팅) | 아니오 | 없음; Claude 구독 필요, `claude --cloud`로 실행하지 않는 한 연결된 GitHub 계정 필요 |28| [클라우드 세션](#cloud-sessions) | 전체 운영 체제(Anthropic에서 호스팅) | 아니오 | 없음; Claude 구독 필요, GitHub 저장소를 복제하려면 연결된 GitHub 계정 필요 |

29 29 

30[샌드박스 Bash 도구](https://code.claude.com/docs/ko/sandboxing.md)는 Claude Code에 기본 제공되며 Bash 명령만 제한합니다. 기본 제공 파일 도구, MCP 서버, 훅은 여전히 호스트에서 직접 실행됩니다. 표의 다른 모든 방식은 전체 Claude Code 프로세스를 격리 경계 내에 배치하므로 파일 도구, MCP 서버, 훅도 제한됩니다.30[샌드박스 Bash 도구](https://code.claude.com/docs/ko/sandboxing.md)는 Claude Code에 기본 제공되며 Bash 명령만 제한합니다. 기본 제공 파일 도구, MCP 서버, 훅은 여전히 호스트에서 직접 실행됩니다. 표의 다른 모든 방식은 전체 Claude Code 프로세스를 격리 경계 내에 배치하므로 파일 도구, MCP 서버, 훅도 제한됩니다.

31 31 


46| Docker 없이 MCP 서버 및 훅과 Bash 격리 | 샌드박스 런타임 |46| Docker 없이 MCP 서버 및 훅과 Bash 격리 | 샌드박스 런타임 |

47| 신뢰할 수 없는 저장소에서 작업 | 전용 가상 머신 또는 Claude 구독이 있는 경우 [웹의 Claude Code](https://code.claude.com/docs/ko/claude-code-on-the-web.md); `claude --cloud`로 시작할 때 GitHub는 필요하지 않습니다 |47| 신뢰할 수 없는 저장소에서 작업 | 전용 가상 머신 또는 Claude 구독이 있는 경우 [웹의 Claude Code](https://code.claude.com/docs/ko/claude-code-on-the-web.md); `claude --cloud`로 시작할 때 GitHub는 필요하지 않습니다 |

48| 팀 전체에서 샌드박스 환경 표준화 | 사전 구성된 [개발 컨테이너](https://code.claude.com/docs/ko/devcontainer.md), 저장소에 복사됨 |48| 팀 전체에서 샌드박스 환경 표준화 | 사전 구성된 [개발 컨테이너](https://code.claude.com/docs/ko/devcontainer.md), 저장소에 복사됨 |

49| 로컬 설정이 없는 장치에서 Claude Code 사용 | [웹의 Claude Code](https://code.claude.com/docs/ko/claude-code-on-the-web.md), Claude 구독 및 연결된 GitHub 계정 필요 |49| 로컬 설정이 없는 장치에서 Claude Code 사용 | [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md), Claude 구독 필요, GitHub 저장소를 복제하려면 연결된 GitHub 계정 필요 |

50| 조직의 모든 개발자를 위한 격리 필요 | [조직 전체 격리 적용](#enforce-isolation-across-an-organization) |50| 조직의 모든 개발자를 위한 격리 필요 | [조직 전체 격리 적용](#enforce-isolation-across-an-organization) |

51| 기본 Windows 호스트에서 작업 | 컨테이너 또는 VM, 또는 WSL2 내에서 Bash 샌드박스 실행 |51| 기본 Windows 호스트에서 작업 | 컨테이너 또는 VM, 또는 WSL2 내에서 Bash 샌드박스 실행 |

52 52 


165 165 

166[클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)은 격리된 Anthropic 관리 가상 머신에서 실행됩니다. 네트워크 프록시는 기본 허용 목록을 적용하고 별도의 프록시는 GitHub 토큰을 샌드박스 외부에 보관하면서 내부에서 저장소 접근을 위한 범위가 지정된 자격 증명을 발급합니다. 조직이 [자체 호스팅 환경](https://code.claude.com/docs/ko/self-hosted-environments)으로 라우팅하는 세션은 대신 사용자가 프로비저닝한 인프라에서 실행되며, 여기서 격리, 송신 제어 및 git 자격 증명은 배포의 책임입니다.166[클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)은 격리된 Anthropic 관리 가상 머신에서 실행됩니다. 네트워크 프록시는 기본 허용 목록을 적용하고 별도의 프록시는 GitHub 토큰을 샌드박스 외부에 보관하면서 내부에서 저장소 접근을 위한 범위가 지정된 자격 증명을 발급합니다. 조직이 [자체 호스팅 환경](https://code.claude.com/docs/ko/self-hosted-environments)으로 라우팅하는 세션은 대신 사용자가 프로비저닝한 인프라에서 실행되며, 여기서 격리, 송신 제어 및 git 자격 증명은 배포의 책임입니다.

167 167 

168인프라를 직접 프로비저닝하지 않고 전체 VM 격리를 원하거나 로컬 개발 환경이 없는 장치에서 작업을 위임할 때 이 방식을 사용합니다. Claude 구독이 필요합니다. CLI에서 시작하지 않는 한 샌드박스가 저장소를 복제할 수 있도록 연결된 GitHub 계정도 필요합니다. `--cloud`를 사용하여 CLI에서 시작할 때 Claude Code는 [로컬 저장소를 번들로 묶어 업로드](https://code.claude.com/docs/ko/claude-code-on-the-web.md#send-local-repositories-without-github)할 수 있습니다. 계획 가용성 및 GitHub 인증 옵션은 [웹의 Claude Code 사용](https://code.claude.com/docs/ko/claude-code-on-the-web.md)을 참조하십시오.168인프라를 직접 프로비저닝하지 않고 전체 VM 격리를 원하거나 로컬 개발 환경이 없는 장치에서 작업을 위임할 때 이 방식을 사용합니다. 다음이 필요합니다.

169 

170* **구독**: Claude 구독

171* **GitHub**: GitHub 저장소에서 작업하려면 연결된 GitHub 계정이 필요합니다. `--cloud`를 사용하여 CLI에서 시작하는 경우, Claude Code가 [로컬 저장소를 번들로 묶어 업로드](https://code.claude.com/docs/ko/claude-code-on-the-web.md#send-local-repositories-without-github)하면 GitHub 계정이 필요하지 않습니다

172 

173플랜 가용성 및 GitHub 인증 옵션은 [클라우드에서 Claude Code 사용](https://code.claude.com/docs/ko/claude-code-on-the-web.md)을 참조하십시오.

169 174 

170## 조직 전체 격리 적용175## 조직 전체 격리 적용

171 176 

Details

46| `CLAUDE_CODE_REMOTE_SLACK_CHANNEL_ID` | Claude Tag 세션의 경우 세션이 처리하거나 해당 스레드가 속한 Slack 채널 또는 다이렉트 메시지의 ID(예: `C0123ABCDE`)입니다. Slack 타임스탬프는 하나의 채널 내에서 메시지를 식별하므로 이 ID를 `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS`와 함께 기록하세요. 다른 세션에서는 설정되지 않으며, Claude Tag 세션에서도 설정되지 않을 수 있습니다. |46| `CLAUDE_CODE_REMOTE_SLACK_CHANNEL_ID` | Claude Tag 세션의 경우 세션이 처리하거나 해당 스레드가 속한 Slack 채널 또는 다이렉트 메시지의 ID(예: `C0123ABCDE`)입니다. Slack 타임스탬프는 하나의 채널 내에서 메시지를 식별하므로 이 ID를 `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS`와 함께 기록하세요. 다른 세션에서는 설정되지 않으며, Claude Tag 세션에서도 설정되지 않을 수 있습니다. |

47| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | 현재 세션 JWT를 보유하는 세션별 파일의 절대 경로이며, 토큰 새로고침 전체에서 최신 상태로 유지됩니다. 셸 서브프로세스는 사용자가 세션에 추가한 첨부 파일을 다운로드할 때 `Authorization` 헤더에 대해 이를 읽습니다. `exec`는 변수를 자동으로 보존합니다. 자식의 환경을 다시 빌드하는 래퍼는 변수를 전달해야 하거나 첨부 파일 다운로드가 자동으로 중지됩니다. |47| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | 현재 세션 JWT를 보유하는 세션별 파일의 절대 경로이며, 토큰 새로고침 전체에서 최신 상태로 유지됩니다. 셸 서브프로세스는 사용자가 세션에 추가한 첨부 파일을 다운로드할 때 `Authorization` 헤더에 대해 이를 읽습니다. `exec`는 변수를 자동으로 보존합니다. 자식의 환경을 다시 빌드하는 래퍼는 변수를 전달해야 하거나 첨부 파일 다운로드가 자동으로 중지됩니다. |

48| `CLAUDE_CONFIG_DIR` | 세션별 Claude 구성 디렉토리이며, 러너가 시작 시 캡처한 러너 호스트 구성의 스냅샷에서 세션 시작 시 작성됩니다. [권한 및 도구 승인](#permissions-and-tool-approval)을 참조하세요. 여기에 대한 쓰기는 이 세션으로 격리됩니다. 디렉토리는 [`--remove-session-state`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)로 러너를 시작하지 않는 한 세션이 끝난 후 `<base-dir>/_sessions/` 아래에 유지됩니다. [사전 준비된 체크아웃 재사용](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout)을 참조하세요. |48| `CLAUDE_CONFIG_DIR` | 세션별 Claude 구성 디렉토리이며, 러너가 시작 시 캡처한 러너 호스트 구성의 스냅샷에서 세션 시작 시 작성됩니다. [권한 및 도구 승인](#permissions-and-tool-approval)을 참조하세요. 여기에 대한 쓰기는 이 세션으로 격리됩니다. 디렉토리는 [`--remove-session-state`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)로 러너를 시작하지 않는 한 세션이 끝난 후 `<base-dir>/_sessions/` 아래에 유지됩니다. [사전 준비된 체크아웃 재사용](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout)을 참조하세요. |

49| `CLAUDE_CODE_REMOTE_MCP_CONFIG` | Anthropic의 제어 평면이 이 세션에 전달한 MCP 서버 정의를 보유하는 `CLAUDE_CONFIG_DIR` 내 파일의 경로입니다. 래퍼가 자식의 환경을 다시 빌드하는 경우 이 변수를 전달하세요. 이 변수가 없으면 제어 평면이 전달된 서버를 업데이트할 때, 래퍼가 [`--mcp-config`](https://code.claude.com/docs/ko/cli-reference#cli-flags)로 추가한 stdio, HTTP 또는 SSE 서버 중 업데이트에 포함되지 않은 서버를 자식이 종료합니다. Claude Code v2.1.299 이상이 필요합니다. |49| `CLAUDE_CODE_REMOTE_MCP_CONFIG` | 제어 평면이 전달한 MCP 서버를 보유하는 `CLAUDE_CONFIG_DIR` 내 파일의 경로입니다. 래퍼가 자식의 환경을 다시 빌드하는 경우 이 변수, [`CLAUDE_CODE_REMOTE`](https://code.claude.com/docs/ko/env-vars#variables), `CLAUDE_CODE_ENVIRONMENT_KIND`를 변경하지 않고 그대로 전달하세요. 러너가 세 가지를 모두 설정합니다. `CLAUDE_CODE_REMOTE`는 전달되었지만 이 변수나 `CLAUDE_CODE_ENVIRONMENT_KIND`가 전달되지 않으면, 래퍼가 [`--mcp-config`](https://code.claude.com/docs/ko/cli-reference#cli-flags)로 추가한 stdio, HTTP, SSE 서버 중 전달된 서버의 업데이트에 포함되지 않은 서버를 자식이 중지합니다. Claude Code v2.1.299 이상이 필요합니다. |

50| `ANTHROPIC_BASE_URL` | 자식이 사용할 API 기본 URL이며, 제어 평면에서 세션별로 전달되고 일반적으로 `https://api.anthropic.com`입니다. 이를 재정의하지 마세요. 세션의 추론 자격 증명은 Anthropic에서 발급한 OAuth 토큰이며 다른 공급자는 이를 수락하지 않습니다. |50| `ANTHROPIC_BASE_URL` | 자식이 사용할 API 기본 URL이며, 제어 평면에서 세션별로 전달되고 일반적으로 `https://api.anthropic.com`입니다. 이를 재정의하지 마세요. 세션의 추론 자격 증명은 Anthropic에서 발급한 OAuth 토큰이며 다른 공급자는 이를 수락하지 않습니다. |

51| `CLAUDE_CODE_OAUTH_TOKEN` | 자식이 모델 추론에 사용하는 단기 OAuth 액세스 토큰이며, 약 30분의 수명을 가집니다. 러너는 만료 전에 이를 다시 발급하고 자식의 stdin을 통해 회전을 전달하므로 [stdin을 연결된 상태로 유지](#keep-stdin-and-file-descriptor-3-attached)하지 않는 래퍼는 초기 값만 봅니다. 조직의 IP 허용 목록에 의존하여 이 토큰의 사용을 제한하지 마세요. 이를 베어러 자격 증명으로 취급하며 누출되면 약 30분 동안 사용 가능하므로 로깅하거나 디스크에 쓰거나 세션 컨테이너 외부로 전달하지 마세요. |51| `CLAUDE_CODE_OAUTH_TOKEN` | 자식이 모델 추론에 사용하는 단기 OAuth 액세스 토큰이며, 약 30분의 수명을 가집니다. 러너는 만료 전에 이를 다시 발급하고 자식의 stdin을 통해 회전을 전달하므로 [stdin을 연결된 상태로 유지](#keep-stdin-and-file-descriptor-3-attached)하지 않는 래퍼는 초기 값만 봅니다. 조직의 IP 허용 목록에 의존하여 이 토큰의 사용을 제한하지 마세요. 이를 베어러 자격 증명으로 취급하며 누출되면 약 30분 동안 사용 가능하므로 로깅하거나 디스크에 쓰거나 세션 컨테이너 외부로 전달하지 마세요. |

52| `CLAUDE_RUNNER_ALIVE_EVERY_MS` | [자식이 초기화되기 전에 턴이 시작될 때](https://code.claude.com/docs/ko/self-hosted-environments-reference.md#session-startup-timeout) 자식이 살아 있음을 보고하는 빈도(밀리초)이며, 러너가 설정합니다. 래퍼가 자식의 환경을 다시 빌드하는 경우 이 변수를 전달하세요. 그렇지 않으면 러너가 해당 턴 동안 세션을 해제하고 `no child output for <n> — releasing`을 로그에 기록할 수 있습니다. 러너와 자식 모두 v2.1.309 이상이 필요합니다. |52| `CLAUDE_RUNNER_ALIVE_EVERY_MS` | [자식이 초기화되기 전에 턴이 시작될 때](https://code.claude.com/docs/ko/self-hosted-environments-reference.md#session-startup-timeout) 자식이 살아 있음을 보고하는 빈도(밀리초)이며, 러너가 설정합니다. 래퍼가 자식의 환경을 다시 빌드하는 경우 이 변수를 전달하세요. 그렇지 않으면 러너가 해당 턴 동안 세션을 해제하고 `no child output for <n> — releasing`을 로그에 기록할 수 있습니다. 러너와 자식 모두 v2.1.309 이상이 필요합니다. |


329| `CLAUDE_RUNNER_REPO_SOURCES` | 세션의 모든 git 소스에 대한 `{url, revision}`의 JSON 배열이며, 보조 리포지토리에서 라우팅하는 훅용입니다. 소스가 없을 때 비어 있습니다. |329| `CLAUDE_RUNNER_REPO_SOURCES` | 세션의 모든 git 소스에 대한 `{url, revision}`의 JSON 배열이며, 보조 리포지토리에서 라우팅하는 훅용입니다. 소스가 없을 때 비어 있습니다. |

330| `CLAUDE_RUNNER_CORRELATION_ID` | 세션 생성 시 제공된 상관 ID이며, 훅이 이 작업 지시서를 세션을 생성한 요청에 매핑할 수 있도록 에코백됩니다. 세션에 없을 때 비어 있습니다. |330| `CLAUDE_RUNNER_CORRELATION_ID` | 세션 생성 시 제공된 상관 ID이며, 훅이 이 작업 지시서를 세션을 생성한 요청에 매핑할 수 있도록 에코백됩니다. 세션에 없을 때 비어 있습니다. |

331| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 세션을 생성한 클라이언트 표면입니다. 예: `web_claude_ai`, `desktop_app`, `ios` 또는 `scheduled_trigger`이며, 채택 분석용입니다. 세션에 기록되거나 인식된 표면이 없을 때 설정되지 않으며, 사전 워밍 요청의 경우도 마찬가지입니다. `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`로 확인하면 `set -u` 하에서 안전하게 유지됩니다. |331| `CLAUDE_RUNNER_CLIENT_PLATFORM` | 세션을 생성한 클라이언트 표면입니다. 예: `web_claude_ai`, `desktop_app`, `ios` 또는 `scheduled_trigger`이며, 채택 분석용입니다. 세션에 기록되거나 인식된 표면이 없을 때 설정되지 않으며, 사전 워밍 요청의 경우도 마찬가지입니다. `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`로 확인하면 `set -u` 하에서 안전하게 유지됩니다. |

332| `CLAUDE_RUNNER_SPAWN_REASON` | [Anthropic이 이 스폰 요청을 보낸 이유](#find-out-why-a-spawn-request-was-sent)입니다. 예: `runner_lost` 또는 `resumed`. 요청에 올바른 형식의 이유가 없으면 설정되지 않으므로 `"${CLAUDE_RUNNER_SPAWN_REASON:-}"`로 읽으십시오. 오케스트레이터에 Claude Code v2.1.318 이상이 필요합니다 |

332 333 

333스폰된 러너는 환경 시크릿 대신 작업 지시서로 등록합니다:334스폰된 러너는 환경 시크릿 대신 작업 지시서로 등록합니다:

334 335 


826 827 

827자체 호스팅 세션에는 연결된 터미널이 없으므로, 응답하지 않은 권한 프롬프트는 사용자가 UI에서 응답할 때까지 턴을 멈춥니다. Anthropic의 컨트롤 플레인은 각 세션의 도구 목록과 권한 규칙을 작업 페이로드와 함께 전송합니다. 기본 구성은 `Bash`를 포함한 일상적인 도구 호출을 사전 승인하며, 클라우드 세션은 [모드와 관계없이 파일 편집을 사전 승인합니다](https://code.claude.com/docs/ko/permission-modes.md#switch-permission-modes). 사전 승인되지 않은 호출은 세션 UI를 통해 확인을 요청합니다.828자체 호스팅 세션에는 연결된 터미널이 없으므로, 응답하지 않은 권한 프롬프트는 사용자가 UI에서 응답할 때까지 턴을 멈춥니다. Anthropic의 컨트롤 플레인은 각 세션의 도구 목록과 권한 규칙을 작업 페이로드와 함께 전송합니다. 기본 구성은 `Bash`를 포함한 일상적인 도구 호출을 사전 승인하며, 클라우드 세션은 [모드와 관계없이 파일 편집을 사전 승인합니다](https://code.claude.com/docs/ko/permission-modes.md#switch-permission-modes). 사전 승인되지 않은 호출은 세션 UI를 통해 확인을 요청합니다.

828 829 

830### 래퍼에서 권한 모드 고정

831 

829> [!NOTE]832> [!NOTE]

830>833>

831> 자동 모드는 세션 컨테이너가 [기본 거부 네트워크 이그레스](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#default-deny-egress)와 나머지 [보안 강화 섹션](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#harden-your-deployment)의 조치가 적용된 상태로 실행되는 환경에서만 고정하십시오. 기본 사전 승인 도구 세트와 자동 모드 모두에서 `Bash` 네트워크 요청을 포함한 일상적인 도구 호출은 사람의 개입 없이 실행되므로, 이러한 호출이 도달할 수 있는 범위를 제한하는 것은 네트워크 경계입니다.834> 자동 모드는 세션 컨테이너가 [기본 거부 네트워크 이그레스](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#default-deny-egress)와 나머지 [보안 강화 섹션](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#harden-your-deployment)의 조치가 적용된 상태로 실행되는 환경에서만 고정하십시오. 기본 사전 승인 도구 세트와 자동 모드 모두에서 `Bash` 네트워크 요청을 포함한 일상적인 도구 호출은 사람의 개입 없이 실행되므로, 이러한 호출이 도달할 수 있는 범위를 제한하는 것은 네트워크 경계입니다.

832 835 

833컨트롤 플레인이 무엇을 전송하든 프롬프트를 최소화하려면 래퍼 스크립트 또는 [`command` 훅](#command)에서 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)를 고정하십시오. 자동 모드를 사용하면 세션이 일상적인 권한 프롬프트 없이 실행됩니다. 별도의 분류기 모델이 작업을 실행 전에 검토하고 거부한 작업을 차단하며, 명시적인 확인 규칙은 여전히 프롬프트를 강제합니다. 분류기가 확인하는 항목은 권한 모드 페이지에서 다룹니다. 러너는 래퍼를 호출하기 전에 서버에서 계산한 플래그를 덧붙이며, `--permission-mode`와 같은 단일 값 플래그의 경우 파서가 마지막으로 나타난 값을 따르므로 `"$@"` 뒤에 덧붙인 플래그가 서버에서 전송한 값을 재정의합니다.836claude.ai/code 또는 다른 클라이언트가 세션의 권한 모드를 설정할 때까지 세션을 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)로 시작하려면 래퍼 스크립트 또는 [`command` 훅](#command)에서 자동 모드를 고정하십시오. 러너는 자체 플래그를 인수로 전달하여 래퍼를 호출하고, Claude Code는 명령줄의 마지막 `--permission-mode`를 적용하므로 `"$@"` 뒤에 원하는 모드를 덧붙이십시오.

834 837 

835```bash theme={null}838```bash theme={null}

836#!/bin/bash839#!/bin/bash

837exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@" --permission-mode auto840exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@" --permission-mode auto

838```841```

839 842 

840대신 특정 도구를 사전 승인하려면 `--allowed-tools "Bash(bazel *) Bash(yarn *) mcp__internal__*"`와 같이 규칙과 함께 `--allowed-tools`를 덧붙이십시오. `--allowed-tools` 및 `--disallowed-tools`와 같은 목록 플래그는 재정의되지 않고 여러 번 나타날 때마다 누적되므로, 사용자의 규칙은 컨트롤 플레인이 전송하는 규칙 위에 적용됩니다. 범위를 좁히려면 `--disallowed-tools`를 덧붙이십시오. 이 플래그는 다른 규칙이 허용하더라도 도구를 거부합니다.843클라이언트가 모드를 설정하면, 러너에서 세션이 다시 시작된 후에도 덧붙인 모드는 더 이상 적용되지 않습니다. 예를 들어 claude.ai/code는 모드 드롭다운에 Auto가 표시되거나 누군가 그곳에서 모드를 선택한 경우, 세션의 첫 메시지와 함께 모드를 설정합니다.

844 

845자동 모드에서는 별도의 분류기 모델이 작업을 실행 전에 검토하고 거부한 작업을 차단합니다. 명시적인 확인 규칙은 여전히 프롬프트를 강제합니다. [거부 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)이 차단하는 호출은 모든 모드에서 계속 차단됩니다.

846 

847### 특정 도구 사전 승인

848 

849특정 도구를 사전 승인하려면 래퍼 스크립트에서 `"$@"` 뒤에 `--allowed-tools "Bash(bazel *) Bash(yarn *) mcp__internal__*"`와 같이 규칙과 함께 `--allowed-tools`를 덧붙이십시오. `--allowed-tools` 및 `--disallowed-tools`와 같은 목록 플래그는 재정의되지 않고 여러 번 나타날 때마다 누적되므로, 사용자의 규칙은 컨트롤 플레인이 전송하는 규칙 위에 적용됩니다. 범위를 좁히려면 `--disallowed-tools`를 덧붙이십시오. 이 플래그는 다른 규칙이 허용하더라도 도구를 거부합니다.

841 850 

842### 각 세션의 구성이 조합되는 방식851### 각 세션의 구성이 조합되는 방식

843 852 

Details

195* 캐시된 [`prependPlugins`](https://code.claude.com/docs/ko/settings-reference#prependplugins), [`appendPlugins`](https://code.claude.com/docs/ko/settings-reference#appendplugins), 또는 [`enabledPlugins`](https://code.claude.com/docs/ko/settings-reference#enabledplugins) 값은 세션의 가져오기가 페이로드를 확인할 때까지 기본 제공 가드를 제거하거나, 위치를 변경하거나, 끌 수 없습니다.195* 캐시된 [`prependPlugins`](https://code.claude.com/docs/ko/settings-reference#prependplugins), [`appendPlugins`](https://code.claude.com/docs/ko/settings-reference#appendplugins), 또는 [`enabledPlugins`](https://code.claude.com/docs/ko/settings-reference#enabledplugins) 값은 세션의 가져오기가 페이로드를 확인할 때까지 기본 제공 가드를 제거하거나, 위치를 변경하거나, 끌 수 없습니다.

196* [엔드포인트 관리형 소스](https://code.claude.com/docs/ko/managed-settings.md#choose-a-delivery-mechanism)가 자체 플러그인을 나열하거나 활성화하는 머신에서는, 캐시된 목록만 활성화하는 플러그인은 가져오기가 페이로드를 확인할 때까지 조직의 플러그인이 아니라 [사용자의 플러그인](https://code.claude.com/docs/ko/plugins/mods/admin.md#install-your-organizations-mods)으로 간주됩니다.196* [엔드포인트 관리형 소스](https://code.claude.com/docs/ko/managed-settings.md#choose-a-delivery-mechanism)가 자체 플러그인을 나열하거나 활성화하는 머신에서는, 캐시된 목록만 활성화하는 플러그인은 가져오기가 페이로드를 확인할 때까지 조직의 플러그인이 아니라 [사용자의 플러그인](https://code.claude.com/docs/ko/plugins/mods/admin.md#install-your-organizations-mods)으로 간주됩니다.

197* Claude Code는 백그라운드에서 새로운 설정을 가져옵니다.197* Claude Code는 백그라운드에서 새로운 설정을 가져옵니다.

198* 세션의 공급자가 캐시된 [`allowedProviders`](https://code.claude.com/docs/ko/settings-reference#allowedproviders) 목록에 없으면, Claude Code는 거부하기 전에 해당 가져오기를 기다렸다가 다시 확인할 수 있습니다. 가져오기가 실패하면 세션이 거부됩니다.

198* 캐시된 설정은 네트워크 장애가 발생해도 유지됩니다. 시작 가져오기가 실패하면, Claude Code는 대화형 세션과 Code 탭에서 캐시된 정책이 적용 중임을 경고합니다199* 캐시된 설정은 네트워크 장애가 발생해도 유지됩니다. 시작 가져오기가 실패하면, Claude Code는 대화형 세션과 Code 탭에서 캐시된 정책이 적용 중임을 경고합니다

199* 가져오기가 성공할 때까지, 시작 시 보류된 값은 보류된 상태로 유지됩니다.200* 가져오기가 성공할 때까지, 시작 시 보류된 값은 보류된 상태로 유지됩니다.

200 201 

Details

111| [`footerLinksRegexes`](#footerlinksregexes) | 출력의 이슈 또는 리뷰 ID를 입력 상자 아래의 [클릭 가능한 링크](https://code.claude.com/docs/ko/statusline.md#clickable-links)로 만듭니다 | 인터페이스 및 터미널 | 사용자 또는 관리형 |111| [`footerLinksRegexes`](#footerlinksregexes) | 출력의 이슈 또는 리뷰 ID를 입력 상자 아래의 [클릭 가능한 링크](https://code.claude.com/docs/ko/statusline.md#clickable-links)로 만듭니다 | 인터페이스 및 터미널 | 사용자 또는 관리형 |

112| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | 로그인 화면이 연결할 [게이트웨이 URL](https://code.claude.com/docs/ko/claude-apps-gateway#set-the-gateway-url)을 설정합니다 | 인증 및 제공자 | 사용자 또는 관리형 |112| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | 로그인 화면이 연결할 [게이트웨이 URL](https://code.claude.com/docs/ko/claude-apps-gateway#set-the-gateway-url)을 설정합니다 | 인증 및 제공자 | 사용자 또는 관리형 |

113| [`forceLoginMethod`](#forceloginmethod) | \[로그인을 claude.ai, Claude Console 또는 [클라우드 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway)로 제한]\(/ko/authentication#restrict-login-to-your-organization)합니다 | 인증 및 제공자 | 모든 파일 |113| [`forceLoginMethod`](#forceloginmethod) | \[로그인을 claude.ai, Claude Console 또는 [클라우드 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway)로 제한]\(/ko/authentication#restrict-login-to-your-organization)합니다 | 인증 및 제공자 | 모든 파일 |

114| [`forceLoginOrgUUID`](#forceloginorguuid) | [claude.ai 로그인을 조직으로 고정](https://code.claude.com/docs/ko/authentication.md#restrict-login-to-your-organization)합니다. 관리형 소스에서만 적용됩니다 | 인증 및 제공자 | 모든 파일 |114| [`forceLoginOrgUUID`](#forceloginorguuid) | [claude.ai 로그인을 조직으로 고정](https://code.claude.com/docs/ko/authentication.md#restrict-login-to-your-organization)합니다. 관리형 설정에서만 적용됩니다 | 인증 및 제공자 | 모든 파일 |

115| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)을 새로 가져올 때까지 시작을 차단합니다 | 엔터프라이즈 및 관리형 설정 | 관리형 |115| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)을 새로 가져올 때까지 시작을 차단합니다 | 엔터프라이즈 및 관리형 설정 | 관리형 |

116| [`gatewayInternalNetworks`](#gatewayinternalnetworks) | 조직이 내부적으로 사용하는 공용 IPv4 공간의 [클라우드 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own)에 `/login`이 접근할 수 있도록 합니다 | 인증 및 제공자 | 관리형 |116| [`gatewayInternalNetworks`](#gatewayinternalnetworks) | 조직이 내부적으로 사용하는 공용 IPv4 공간의 [클라우드 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own)에 `/login`이 접근할 수 있도록 합니다 | 인증 및 제공자 | 관리형 |

117| [`gcpAuthRefresh`](#gcpauthrefresh) | 직접 지정한 명령으로 [Google Cloud 자격 증명](https://code.claude.com/docs/ko/google-vertex-ai.md#advanced-credential-configuration)을 갱신합니다 | 인증 및 제공자 | 모든 파일 |117| [`gcpAuthRefresh`](#gcpauthrefresh) | 직접 지정한 명령으로 [Google Cloud 자격 증명](https://code.claude.com/docs/ko/google-vertex-ai.md#advanced-credential-configuration)을 갱신합니다 | 인증 및 제공자 | 모든 파일 |


446 446 

447### `fastMode`447### `fastMode`

448 448 

449사용 가능한 세션에서 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)를 켭니다. 토큰당 비용이 더 높더라도 속도가 필요한 빠른 반복이나 실시간 디버깅 같은 대화형 작업에 적합합니다. 일반적으로 이 키를 직접 편집하지 않습니다. `/fast`를 실행하면 `~/.claude/settings.json`에 `fastMode: true`가 기록되고, 다시 실행하여 빠른 모드를 끄면 키가 제거됩니다. 빠른 모드는 Opus 5.5, Opus 5, Opus 4.8에서만 실행됩니다. 다른 모델에서 켜면 Opus로 전환되며, 지원되지 않는 모델로 전환하면 꺼집니다. [빠른 모드가 켜진 상태에서 모델 전환](https://code.claude.com/docs/ko/fast-mode.md#switch-models-while-fast-mode-is-on)을 참조하세요.449사용 가능한 세션에서 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)를 켭니다. 토큰당 비용이 더 높더라도 속도가 필요한 빠른 반복이나 실시간 디버깅 같은 대화형 작업에 적합합니다. 일반적으로 이 키를 직접 편집하지 않습니다. `/fast`를 실행하면 `~/.claude/settings.json`에 `fastMode: true`가 기록되고, 다시 실행하여 빠른 모드를 끄면 키가 제거됩니다.

450 

451빠른 모드는 Opus 5.5, Opus 5, Opus 4.8에서만 지원됩니다. 다른 모델에서 `/fast`를 실행하면 Opus로 전환되며, 지원되지 않는 모델로 전환하면 빠른 모드가 꺼집니다. [빠른 모드가 켜진 상태에서 모델 전환](https://code.claude.com/docs/ko/fast-mode.md#switch-models-while-fast-mode-is-on)을 참조하세요.

450 452 

451* **범위**: [`Any file`](#scopes)453* **범위**: [`Any file`](#scopes)

452* **유형**: Boolean454* **유형**: Boolean


463 465 

464### `fastModePerSessionOptIn`466### `fastModePerSessionOptIn`

465 467 

466일반적으로 `/fast`를 실행하면 [`fastMode`](#fastmode)가 사용자 설정에 저장되므로 이후 모든 세션이 시작될 때 빠른 모드가 켜집니다. 이를 막으려면 이 키를 `true`로 설정합니다. 그러면 저장된 `fastMode: true`가 더 이상 세션 시작 시 빠른 모드를 켜지 않으며, 각 사용자는 빠른 모드를 원하는 세션마다 `/fast`를 실행해야 합니다. Claude Code는 파일의 `fastMode` 키를 그대로 두므로 이 키를 끄면 이전 동작이 복원됩니다.468일반적으로 `/fast`를 실행하면 [`fastMode`](#fastmode)가 사용자 설정에 저장되므로, 지원되는 모델에서 새 세션이 시작될 때 빠른 모드가 켜집니다. 이를 막으려면 이 키를 `true`로 설정합니다. 그러면 저장된 `fastMode: true`가 더 이상 세션 시작 시 빠른 모드를 켜지 않으며, 각 사용자는 빠른 모드를 원하는 세션마다 `/fast`를 실행해야 합니다. Claude Code는 파일의 `fastMode` 키를 그대로 두므로 이 키를 끄면 이전 동작이 복원됩니다.

467 469 

468Team 또는 Enterprise 플랜의 Owner는 [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)을 통해 조직 전체에 배포할 수 있습니다. 관리형 설정에서 이 키를 설정하면 대화형 터미널 세션 외부에서는 `/fast on`이 거부되고 조직에서 빠른 모드를 비활성화했다고 알립니다. 여기에는 [비대화형 모드](https://code.claude.com/docs/ko/headless.md), [VS Code 확장](https://code.claude.com/docs/ko/vs-code.md), [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)이 포함됩니다.470Team 또는 Enterprise 플랜의 Owner는 [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)을 통해 조직 전체에 배포할 수 있습니다. 관리형 설정에서 이 키를 설정하면 대화형 터미널 세션 외부에서는 `/fast on`이 거부되고 조직에서 빠른 모드를 비활성화했다고 알립니다. 여기에는 [비대화형 모드](https://code.claude.com/docs/ko/headless.md), [VS Code 확장](https://code.claude.com/docs/ko/vs-code.md), [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)이 포함됩니다.

469 471 

470* **범위**: [`Any file`](#scopes)472* **범위**: [`Any file`](#scopes)

471* **유형**: Boolean473* **유형**: Boolean

472 * `true`: 저장된 `fastMode: true`가 더 이상 세션 시작 시 빠른 모드를 켜지 않으므로 각 사용자가 원하는 세션마다 `/fast`를 실행합니다. 관리형 설정에서 이 키를 설정하지 않는 한 `--settings`로 전달된 `fastMode: true`는 해당 세션에 여전히 적용됩니다474 * `true`: 저장된 `fastMode: true`가 더 이상 세션 시작 시 빠른 모드를 켜지 않으므로 각 사용자가 원하는 세션마다 `/fast`를 실행합니다. 관리형 설정에서 이 키를 설정하지 않는 한 `--settings`로 전달된 `fastMode: true`는 해당 세션에 여전히 적용됩니다

473 * `false`: 저장된 `fastMode: true`가 이후 모든 세션이 시작될 때 빠른 모드를 켭니다475 * `false`: 저장된 `fastMode: true`가 지원되는 모델에서 각 새 세션이 시작될 때 빠른 모드를 켭니다

474* **기본값**: `false`476* **기본값**: `false`

475 477 

476```json settings.json theme={null}478```json settings.json theme={null}


4827 4829 

4828### `agentPushNotifEnabled`4830### `agentPushNotifEnabled`

4829 4831 

4830긴 작업이 끝났을 때처럼 Claude가 보낼 가치가 있다고 판단하면 휴대폰으로 푸시 알림을 보낼 수 있도록 허용합니다. Claude는 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)이 연결되어 있는 동안 알림을 보낼 수 있습니다. `/config`에는 **Push when Claude decides**로 표시됩니다. 그곳에서 값을 변경하면 Claude Code는 해당 값을 사용자의 계정에도 저장합니다.4832긴 작업이 끝났을 때처럼 Claude가 보낼 가치가 있다고 판단하면 휴대폰으로 푸시 알림을 보낼 수 있도록 허용합니다. 로컬 세션에서는 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)이 연결되어 있는 동안 Claude가 알림을 보낼 수 있습니다. `/config`에는 **Push when Claude decides**로 표시됩니다. 그곳에서 값을 변경하면 Claude Code는 해당 값을 사용자의 계정에도 저장합니다.

4831 4833 

4832* **범위**: [`Any file`](#scopes). Claude Code는 이전 버전이 `~/.claude.json`에 남긴 값도 읽습니다.4834* **범위**: [`Any file`](#scopes). Claude Code는 이전 버전이 `~/.claude.json`에 남긴 값도 읽습니다.

4833* **유형**: Boolean4835* **유형**: Boolean


4964 4966 

4965### `inputNeededNotifEnabled`4967### `inputNeededNotifEnabled`

4966 4968 

4967권한 프롬프트나 질문이 사용자의 입력을 기다리고 있을 때 휴대폰으로 푸시 알림을 받습니다. Claude Code는 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)이 연결되어 있는 동안에만 이 알림을 보냅니다. `/config`에는 **Push when actions required**로 표시됩니다.4969권한 프롬프트나 질문이 사용자의 입력을 기다리고 있을 때 휴대폰으로 푸시 알림을 받습니다. 로컬 세션에서는 Claude Code가 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)이 연결되어 있는 동안에만 이 알림을 보냅니다. `/config`에는 **Push when actions required**로 표시됩니다.

4968 4970 

4969* **범위**: [`Any file`](#scopes). Claude Code는 이전 버전이 `~/.claude.json`에 남긴 값도 읽습니다.4971* **범위**: [`Any file`](#scopes). Claude Code는 이전 버전이 `~/.claude.json`에 남긴 값도 읽습니다.

4970* **유형**: Boolean4972* **유형**: Boolean

4971 * `true`: Remote Control이 연결되어 있는 동안 권한 프롬프트나 질문이 대기 중이면 휴대폰으로 푸시 알림을 받습니다

4972 * `false`: Claude Code가 이러한 알림을 보내지 않습니다

4973* **기본값**: `false`4973* **기본값**: `false`

4974 4974 

4975```json settings.json theme={null}4975```json settings.json theme={null}


4986 4986 

4987* **범위**: [`Any file`](#scopes). Claude Code는 이전 버전이 `~/.claude.json`에 남긴 값도 읽습니다.4987* **범위**: [`Any file`](#scopes). Claude Code는 이전 버전이 `~/.claude.json`에 남긴 값도 읽습니다.

4988* **유형**: 문자열, 다음 중 하나:4988* **유형**: 문자열, 다음 중 하나:

4989 * `"auto"`: Claude Code가 iTerm2, Ghostty, Kitty에서는 데스크톱 알림을 보내고, Terminal.app에서는 가청 벨이 꺼져 있을 때만 벨을 울리며, 그 외에서는 아무것도 하지 않습니다4989 * `"auto"`: Claude Code가 iTerm2, Ghostty, Kitty를 감지하면 데스크톱 알림을 보내고, Terminal.app에서는 가청 벨이 꺼져 있을 때만 벨을 울리며, 그 외에서는 아무것도 하지 않습니다

4990 * `"terminal_bell"`: Claude Code가 모든 터미널에서 벨 문자를 울립니다4990 * `"terminal_bell"`: Claude Code가 모든 터미널에서 벨 문자를 울립니다

4991 * `"iterm2"`: Claude Code가 iTerm2 데스크톱 알림을 보냅니다4991 * `"iterm2"`: Claude Code가 iTerm2 데스크톱 알림을 보냅니다

4992 * `"iterm2_with_bell"`: Claude Code가 iTerm2 데스크톱 알림을 보내고 벨을 울립니다4992 * `"iterm2_with_bell"`: Claude Code가 iTerm2 데스크톱 알림을 보내고 벨을 울립니다


5001}5001}

5002```5002```

5003 5003 

5004`"auto"`를 사용하면 Claude Code는 iTerm2, Ghostty, Kitty에서 데스크톱 알림을 보냅니다. Terminal.app에서는 Terminal의 가청 벨을 꺼 둔 경우에만 벨 문자를 울리며, 다른 터미널에서는 아무것도 하지 않습니다. 모든 터미널에서 벨 문자를 울리려면 `"terminal_bell"`로 설정하십시오. [터미널 벨 또는 알림 받기](https://code.claude.com/docs/ko/terminal-config.md#get-a-terminal-bell-or-notification)를 참조하십시오.5004`"auto"`를 사용하면 Claude Code는 iTerm2, Ghostty, Kitty를 감지했을 때 데스크톱 알림을 보냅니다. Terminal.app에서는 Terminal의 가청 벨을 꺼 둔 경우에만 벨 문자를 울리며, 다른 터미널에서는 아무것도 하지 않습니다. 모든 터미널에서 벨 문자를 울리려면 `"terminal_bell"`로 설정하십시오. [터미널 벨 또는 알림 받기](https://code.claude.com/docs/ko/terminal-config.md#get-a-terminal-bell-or-notification)를 참조하십시오.

5005 5005 

5006### `remote.defaultEnvironmentId`5006### `remote.defaultEnvironmentId`

5007 5007 


5176 5176 

5177* 캐시 수명 후, 기본값은 5분이거나 [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](https://code.claude.com/docs/ko/env-vars)로 설정한 간격입니다.5177* 캐시 수명 후, 기본값은 5분이거나 [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](https://code.claude.com/docs/ko/env-vars)로 설정한 간격입니다.

5178* Anthropic API에 대한 요청이 직접 또는 [LLM 게이트웨이](https://code.claude.com/docs/ko/llm-gateway)를 통해 `401` 또는 `403`으로 실패할 때입니다.5178* Anthropic API에 대한 요청이 직접 또는 [LLM 게이트웨이](https://code.claude.com/docs/ko/llm-gateway)를 통해 `401` 또는 `403`으로 실패할 때입니다.

5179* LLM 게이트웨이를 통한 요청이 `403`이 아닌 `401`로 실패하고, Google Cloud의 Agent Platform에 대해 [`CLAUDE_CODE_SKIP_VERTEX_AUTH`](https://code.claude.com/docs/ko/env-vars)를, AWS의 Claude Platform에 대해 `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH`를, 또는 Amazon Bedrock Mantle에 대해 `CLAUDE_CODE_SKIP_MANTLE_AUTH`를 설정했을 때입니다. Claude Code v2.1.318 이상이 필요합니다.

5179* Anthropic API에 요청을 보내기 전에, 직접 또는 LLM 게이트웨이를 통해, 캐시된 출력이 도우미가 생성한 후 만료된 JWT일 때입니다. Claude Code v2.1.246 이상이 필요합니다.5180* Anthropic API에 요청을 보내기 전에, 직접 또는 LLM 게이트웨이를 통해, 캐시된 출력이 도우미가 생성한 후 만료된 JWT일 때입니다. Claude Code v2.1.246 이상이 필요합니다.

5180 5181 

5181마지막 두 경우는 도우미의 출력이 Claude Code가 보내는 자격 증명이고 `ANTHROPIC_AUTH_TOKEN`이 설정되지 않았을 때만 적용됩니다.5182마지막 세 경우는 도우미의 출력이 Claude Code가 보내는 자격 증명이고 `ANTHROPIC_AUTH_TOKEN`이 설정되지 않았을 때만 적용됩니다.

5182 5183 

5183대화형 세션에서, 명령이 프로젝트 또는 로컬 설정에서 올 때, Claude Code는 워크스페이스 신뢰 프롬프트를 수락할 때까지 실행하지 않습니다. [자격 증명 관리](https://code.claude.com/docs/ko/authentication.md#credential-management)를 참조하세요.5184대화형 세션에서, 명령이 프로젝트 또는 로컬 설정에서 올 때, Claude Code는 워크스페이스 신뢰 프롬프트를 수락할 때까지 실행하지 않습니다. [자격 증명 관리](https://code.claude.com/docs/ko/authentication.md#credential-management)를 참조하세요.

5184 5185 


5261 5262 

5262관리 소스에서, claude.ai 계정 로그인이 단일 UUID로 지정된 하나의 Anthropic 조직에 속하거나 배열로 지정된 여러 조직 중 하나에 속하도록 요구합니다. 모든 설정 파일에서, Claude Code는 또한 단일 UUID를 사용하여 claude.ai 또는 Claude Console 로그인 중에 해당 조직을 미리 선택하고, 배열의 경우 아무것도 미리 선택하지 않습니다. 설정 파일에서 키를 설정하면, Claude Code는 또한 해당 파일이 적용되는 세션에서 [키 없는 Console 로그인](https://code.claude.com/docs/ko/authentication.md#sign-in-without-an-api-key)을 제공하지 않고 대신 API 키를 생성합니다.5263관리 소스에서, claude.ai 계정 로그인이 단일 UUID로 지정된 하나의 Anthropic 조직에 속하거나 배열로 지정된 여러 조직 중 하나에 속하도록 요구합니다. 모든 설정 파일에서, Claude Code는 또한 단일 UUID를 사용하여 claude.ai 또는 Claude Console 로그인 중에 해당 조직을 미리 선택하고, 배열의 경우 아무것도 미리 선택하지 않습니다. 설정 파일에서 키를 설정하면, Claude Code는 또한 해당 파일이 적용되는 세션에서 [키 없는 Console 로그인](https://code.claude.com/docs/ko/authentication.md#sign-in-without-an-api-key)을 제공하지 않고 대신 API 키를 생성합니다.

5263 5264 

5264* **범위**: [`모든 파일`](#scopes). 관리 소스만 제한을 강제합니다. 다른 설정 파일의 단일 UUID는 제한하지 않고 로그인 중에 조직을 미리 선택합니다.5265* **범위**: [`모든 파일`](#scopes). 관리 소스가 아닌 설정 파일에서는 Claude Code가 로그인이 어느 조직에 속하는지 확인하지 않으며, 단일 UUID는 로그인 중에 조직을 미리 선택합니다.

5265* **유형**: 문자열, 하나의 UUID, 또는 문자열 배열, 여러 UUID5266* **유형**: 문자열, 하나의 UUID, 또는 문자열 배열, 여러 UUID

5266* **기본값**: 설정되지 않음, 따라서 모든 조직이 로그인할 수 있습니다.5267* **기본값**: 설정되지 않음, 따라서 모든 조직이 로그인할 수 있습니다.

5267 5268 


5827 5828 

5828### `autoInstallIdeExtension`5829### `autoInstallIdeExtension`

5829 5830 

5830외부 터미널에서 [`/ide`](https://code.claude.com/docs/ko/commands) 명령을 실행할 때 실행 중인 VS Code, Cursor 또는 Devin Desktop에 `/ide`가 Claude Code IDE 확장을 설치하도록 합니다. Claude Code는 시작할 때 확장을 설치하지 않습니다. VS Code 또는 JetBrains 터미널 내부에서 Claude Code를 실행할 때 `/config`에 **IDE 확장 자동 설치**로 표시됩니다.5831외부 터미널에서 [`/ide`](https://code.claude.com/docs/ko/commands) 명령을 실행할 때 실행 중인 VS Code, Cursor 또는 Devin Desktop에 `/ide`가 Claude Code IDE 확장을 설치하도록 합니다. Claude Code는 `claude`를 시작할 때 확장을 설치하거나 업데이트하지 않습니다. v2.1.318 이전에는 해당 편집기 중 하나의 터미널에서 `claude`를 시작하면, 이 키가 `false`가 아닌 한 Claude Code가 확장을 설치하거나 업데이트합니다.

5832 

5833VS Code 또는 JetBrains 터미널 내부에서 Claude Code를 실행할 때 `/config`에 **IDE 확장 자동 설치**로 표시됩니다.

5831 5834 

5832* **범위**: [`전역 설정`](#scopes)5835* **범위**: [`전역 설정`](#scopes)

5833* **유형**: Boolean5836* **유형**: Boolean

setup.md +4 −4

Details

389> gpg --show-keys /etc/apt/keyrings/claude-code.asc389> gpg --show-keys /etc/apt/keyrings/claude-code.asc

390> ```390> ```

391>391>

392> gpg가 인쇄하는 지문은 `31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE`여야 합니다. gpg가 파일을 열 수 없거나 유효한 OpenPGP 데이터가 없다고 보고하면 다운로드가 실패했거나 잘못된 콘텐츠를 반환했습니다. 네트워크가 `downloads.claude.ai`에 도달할 수 있는지 확인한 후 다운로드 명령을 다시 실행하세요.392> gpg가 출력하는 지문은 `31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE` 하나뿐이어야 합니다. gpg가 파일을 열 수 없거나 유효한 OpenPGP 데이터가 없다고 보고하면 다운로드가 실패했거나 잘못된 콘텐츠가 반환된 것입니다. 네트워크에서 `downloads.claude.ai`에 접근할 수 있는지 확인한 다음 다운로드 명령을 다시 실행하십시오.

393>393>

394> `stable` 채널에 저장소를 등록하고 설치합니다:394> `stable` 채널에 저장소를 등록하고 설치합니다:

395>395>


536매니페스트에 대해 분리된 서명을 확인합니다.536매니페스트에 대해 분리된 서명을 확인합니다.

537 537 

538```bash theme={null}538```bash theme={null}

539gpg --verify manifest.json.sig manifest.json539gpg --with-fingerprint --verify manifest.json.sig manifest.json

540```540```

541 541 

542유효한 결과는 `Good signature from "Anthropic Claude Code Release Signing <security@anthropic.com>"`을 보고합니다.542유효한 결과는 `Good signature from "Anthropic Claude Code Release Signing <security@anthropic.com>"`을 보고합니다. 기본 설정에서는 `gpg`가 새로 가져온 키에 대해 `WARNING: This key is not certified with a trusted signature!`도 인쇄합니다. 이는 예상된 것입니다. `Good signature` 줄은 암호화 확인이 통과했음을 확인합니다.

543 543 

544`gpg`는 또한 새로 가져온 키에 대해 `WARNING: This key is not certified with a trusted signature!`을 인쇄합니다. 이는 예상된 것입니다. `Good signature` 줄은 암호화 확인이 통과했음을 확인합니다. 단계 1의 지문 비교는 키 자체가 진정함을 확인합니다.544Anthropic의 키가 매니페스트에 서명했는지 확인하려면 출력 끝의 `Primary key fingerprint` 줄을 이 페이지의 단계 1에 나열된 지문과 비교하세요. 두 지문이 일치하고 출력에 `BAD signature`가 표시되지 않으면 단계 4로 진행하세요. 그렇지 않으면 이 매니페스트를 사용하지 마세요.

545 545 

546**4. 바이너리를 매니페스트와 비교**546**4. 바이너리를 매니페스트와 비교**

547 547 

slack.md +7 −10

Details

20 20 

21## 사용 사례21## 사용 사례

22 22 

23* **버그 조사 및 수정**: Claude에 Slack 채널에서 보고된 버그를 조사하고 수정하도록 요청합니다.23* **버그 조사 및 수정**: 버그를 설명하고 Claude에 조사 및 수정을 요청합니다.

24* **빠른 코드 검토 및 수정**: Claude가 팀 피드백을 기반으로 작은 기능을 구현하거나 코드를 리팩토링하도록 합니다.24* **빠른 코드 리뷰 및 수정**: Claude가 작은 기능을 구현하거나 코드를 리팩토링하도록 합니다.

25* **협업 디버깅**: 팀 토론에서 중요한 컨텍스트(예: 오류 재현 또는 사용자 보고)를 제공할 때, Claude는 이 정보를 사용하여 디버깅 접근 방식을 알릴 수 있습니다.

26* **병렬 작업 실행**: Slack에서 코딩 작업을 시작하면서 다른 작업을 계속하고, 완료되면 알림을 받습니다.25* **병렬 작업 실행**: Slack에서 코딩 작업을 시작하면서 다른 작업을 계속하고, 완료되면 알림을 받습니다.

27 26 

28## 필수 조건27## 필수 조건


91 90 

92### 컨텍스트 수집91### 컨텍스트 수집

93 92 

94**스레드에서**: 스레드에서 @Claude를 언급하면 전체 대화를 이해하기 위해 해당 스레드의 모든 메시지에서 컨텍스트를 수집합니다.93* **스레드에서**: 스레드에서 처음으로 Claude를 @mention하면, Claude는 해당 스레드에서 사용자의 메시지와 자신의 메시지로부터 컨텍스트를 수집합니다.

94* **채널에서**: 채널에서 Claude를 직접 @mention하면, Claude는 해당 채널에서 사용자의 최근 메시지와 자신의 메시지, 그리고 채널의 이름, 주제, 설명을 살펴봅니다.

95 95 

96**채널에서**: 채널에서 직접 언급되면 Claude는 관련 컨텍스트를 위해 최근 채널 메시지를 살펴봅니다.96이 컨텍스트는 Claude가 문제를 이해하고, 적절한 저장소를 선택하고, 작업에 대한 접근 방식을 알리는 데 도움이 됩니다. 오류 보고서처럼 팀원이 작성한 내용을 Claude에 전달하려면 Claude를 @mention하는 메시지에 해당 텍스트를 붙여넣으세요.

97 

98이 컨텍스트는 Claude가 문제를 이해하고, 적절한 저장소를 선택하고, 작업에 대한 접근 방식을 알리는 데 도움이 됩니다.

99 97 

100> [!WARNING]98> [!WARNING]

101>99>


160### 효과적인 요청 작성158### 효과적인 요청 작성

161 159 

162* **구체적으로**: 관련이 있을 때 파일 이름, 함수 이름 또는 오류 메시지를 포함합니다.160* **구체적으로**: 관련이 있을 때 파일 이름, 함수 이름 또는 오류 메시지를 포함합니다.

163* **컨텍스트 제공**: 대화에서 명확하지 않은 경우 저장소 또는 프로젝트를 언급합니다.161* **컨텍스트 제공**: 저장소 또는 프로젝트를 언급합니다.

164* **성공 정의**: "완료"가 무엇인지 설명합니다. Claude가 테스트를 작성해야 합니까? 문서를 업데이트합니까? PR을 생성합니까?162* **성공 정의**: "완료"가 무엇인지 설명합니다. Claude가 테스트를 작성해야 합니까? 문서를 업데이트합니까? PR을 생성합니까?

165* **스레드 사용**: 버그나 기능을 논의할 때 스레드에서 회신하여 Claude가 전체 컨텍스트를 수집할 수 있도록 합니다.

166 163 

167### Slack과 웹 사용 시기164### Slack과 웹 사용 시기

168 165 

169**Slack을 사용할 때**: 컨텍스트가 이미 Slack 토론에 있을 때, 작업을 비동기적으로 시작하려고 할 때, 또는 가시성이 필요한 팀원과 협업할 때입니다.166**Slack을 사용할 때**: 작업을 비동기적으로 시작하려고 할 때, 또는 가시성이 필요한 팀원과 협업할 때입니다.

170 167 

171**웹을 직접 사용할 때**: 파일을 업로드해야 할 때, 개발 중 실시간 상호 작용을 원할 때, 또는 더 길고 복잡한 작업을 수행할 때입니다.168**웹을 직접 사용할 때**: 파일을 업로드해야 할 때, 개발 중 실시간 상호 작용을 원할 때, 또는 더 길고 복잡한 작업을 수행할 때입니다.

172 169 

Details

74 74 

75기본적으로 Claude Code는 일부 터미널에서는 데스크톱 알림을 전송하고, 다른 터미널에서는 벨 문자를 전송하거나 아무것도 전송하지 않습니다:75기본적으로 Claude Code는 일부 터미널에서는 데스크톱 알림을 전송하고, 다른 터미널에서는 벨 문자를 전송하거나 아무것도 전송하지 않습니다:

76 76 

77* **Ghostty, Kitty, iTerm2**: 데스크톱 알림을 전송하며, iTerm2는 알림 설정을 켠 후에만 이를 표시합니다.77* **Claude Code가 감지한 Ghostty, Kitty, iTerm2**: 데스크톱 알림을 전송하며, iTerm2는 알림 설정을 켠 후에만 이를 표시합니다.

78* **Apple Terminal**: 소리가 나지 않습니다. Claude Code가 맨 앞 Terminal 창의 프로필에서 "Audible bell"이 꺼져 있음을 확인하면 무음 벨 문자를 전송하고, 그렇지 않으면 아무것도 전송하지 않습니다. 해당 프로필의 "Visual bell" 또는 Dock 바운스 옵션이 켜져 있으면 이 벨 문자는 창 깜박임으로 표시되거나, Terminal이 백그라운드에 있는 동안에는 Dock 바운스로 표시됩니다.78* **Apple Terminal**: 소리가 나지 않습니다. Claude Code가 맨 앞 Terminal 창의 프로필에서 "Audible bell"이 꺼져 있음을 확인하면 무음 벨 문자를 전송하고, 그렇지 않으면 아무것도 전송하지 않습니다. 해당 프로필의 "Visual bell" 또는 Dock 바운스 옵션이 켜져 있으면 이 벨 문자는 창 깜박임으로 표시되거나, Terminal이 백그라운드에 있는 동안에는 Dock 바운스로 표시됩니다.

79* **기타 터미널**: 아무것도 전송하지 않습니다.79* **기타 터미널**: 아무것도 전송하지 않습니다.

80 80 


86}86}

87```87```

88 88 

89데스크톱 알림은 SSH를 통해 로컬 머신에 도달하므로 원격 세션도 사용자에게 알릴 수 있습니다. Ghostty와 Kitty는 추가 설정 없이 OS 알림 센터로 전달합니다. iTerm2는 전달을 활성화해야 합니다:89tmux 외부에서 실행 중인 터미널에서 SSH로 접속하는 경우, Claude Code를 실행하는 머신에서 [`preferredNotifChannel`](https://code.claude.com/docs/ko/settings-reference#preferrednotifchannel)을 로컬 터미널에 해당하는 값인 `"iterm2"`, `"kitty"` 또는 `"ghostty"`로 설정하세요. 그러면 데스크톱 알림이 로컬 머신에 도달합니다. Ghostty와 Kitty는 추가 설정 없이 OS 알림 센터로 전달합니다. iTerm2는 전달을 활성화해야 합니다:

90 90 

91**1. iTerm2 알림 설정 열기**91**1. iTerm2 알림 설정 열기**

92 92 


131 131 

132## tmux 구성132## tmux 구성

133 133 

134Claude Code가 tmux 내에서 실행될 때, 기본적으로 Shift+Enter가 새 줄을 삽입하는 대신 제출하고, 데스크톱 알림과 [진행률 표시줄](https://code.claude.com/docs/ko/settings-reference.md#terminalprogressbarenabled)이 외부 터미널에 도달하지 않습니다. `~/.tmux.conf`에 다음 줄을 추가한 후 `tmux source-file ~/.tmux.conf`를 실행하여 실행 중인 서버에 적용합니다:134Claude Code가 tmux 내에서 실행될 때, 기본적으로 Shift+Enter가 새 줄을 삽입하는 대신 제출하고, 데스크톱 알림이 외부 터미널에 도달하지 않습니다. `~/.tmux.conf`에 다음 줄을 추가한 후 `tmux source-file ~/.tmux.conf`를 실행하여 실행 중인 서버에 적용합니다:

135 135 

136```bash ~/.tmux.conf theme={null}136```bash ~/.tmux.conf theme={null}

137set -g allow-passthrough on137set -g allow-passthrough on


140set -as terminal-features 'xterm*:extkeys'140set -as terminal-features 'xterm*:extkeys'

141```141```

142 142 

143`allow-passthrough` 줄은 알림과 진행 상황 업데이트가 tmux에 의해 삼켜지는 대신 외부 터미널에 도달하도록 합니다. `extended-keys` 줄은 tmux가 Shift+Enter를 일반 Enter와 구별하여 새 줄 단축키가 작동하도록 합니다.143보이는 창(pane)에서 외부 터미널로 알림을 보내려면 `allow-passthrough` 줄을 유지하고 [`preferredNotifChannel`](https://code.claude.com/docs/ko/settings-reference#preferrednotifchannel)을 `"iterm2"`, `"kitty"` 또는 `"ghostty"`로 설정합니다. 이 샘플에서는 현재 보고 있지 않은 창(window)의 창(pane)은 알림을 보내지 않습니다. `extended-keys` 줄은 tmux가 Shift+Enter를 일반 Enter와 구별하여 새 줄 단축키가 작동하도록 합니다.

144 144 

145[mod의 `Image`](https://code.claude.com/docs/ko/plugins/mods/reference#elements)에는 `allow-passthrough` 및 `focus-events` 줄과 함께 [tmux 내부 그리기를 위한 기타 요구 사항](https://code.claude.com/docs/ko/plugins/mods/gallery.md#draw-an-image-inside-tmux)이 필요합니다. 줄을 추가한 후에는 tmux에서 분리(detach)했다가 다시 연결(attach)하고 Claude Code를 다시 시작해야 합니다.145[mod의 `Image`](https://code.claude.com/docs/ko/plugins/mods/reference#elements)에는 `allow-passthrough` 및 `focus-events` 줄과 함께 [tmux 내부 그리기를 위한 기타 요구 사항](https://code.claude.com/docs/ko/plugins/mods/gallery.md#draw-an-image-inside-tmux)이 필요합니다. 줄을 추가한 후에는 tmux에서 분리(detach)했다가 다시 연결(attach)하고 Claude Code를 다시 시작해야 합니다.

146 146 

Details

39| `Monitor` | 백그라운드에서 명령을 실행하고 각 출력 줄을 Claude에게 다시 피드하므로 로그 항목, 파일 변경 또는 폴링된 상태에 대화 중에 반응할 수 있습니다. WebSocket을 열고 각 수신 메시지를 이벤트로 처리할 수도 있습니다. [Monitor 도구](#monitor-tool)를 참조하세요 | 예 |39| `Monitor` | 백그라운드에서 명령을 실행하고 각 출력 줄을 Claude에게 다시 피드하므로 로그 항목, 파일 변경 또는 폴링된 상태에 대화 중에 반응할 수 있습니다. WebSocket을 열고 각 수신 메시지를 이벤트로 처리할 수도 있습니다. [Monitor 도구](#monitor-tool)를 참조하세요 | 예 |

40| `NotebookEdit` | Jupyter 노트북 셀을 수정합니다. [NotebookEdit 도구 동작](#notebookedit-tool-behavior)을 참조하세요 | 예 |40| `NotebookEdit` | Jupyter 노트북 셀을 수정합니다. [NotebookEdit 도구 동작](#notebookedit-tool-behavior)을 참조하세요 | 예 |

41| `PowerShell` | PowerShell 명령을 기본적으로 실행합니다. 가용성은 [PowerShell 도구](#powershell-tool)를 참조하세요 | 예 |41| `PowerShell` | PowerShell 명령을 기본적으로 실행합니다. 가용성은 [PowerShell 도구](#powershell-tool)를 참조하세요 | 예 |

42| `PushNotification` | 데스크톱 알림을 보내고 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)이 연결되어 있을 때 휴대폰 푸시를 보냅니다. 따라서 장시간 실행되는 작업 또는 [세션 범위 예약 작업](https://code.claude.com/docs/ko/scheduled-tasks.md)이 사용자가 자리를 떠날 때 연락할 수 있습니다. 푸시 배달은 Anthropic 호스팅 인프라를 통해 실행되며, Amazon Bedrock, Claude Platform on AWS, Google Cloud의 Agent Platform 또는 Microsoft Foundry에서는 액세스할 수 없습니다 | 아니오 |42| `PushNotification` | 로컬 세션에서 데스크톱 알림을 보내고, [Remote Control](https://code.claude.com/docs/ko/remote-control.md)을 사용할 때 또는 [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서는 휴대폰 푸시를 보냅니다. 푸시 배달은 Anthropic 호스팅 인프라를 통해 실행되며, Amazon Bedrock, Claude Platform on AWS, Google Cloud의 Agent Platform 또는 Microsoft Foundry에서는 액세스할 수 없습니다 | 아니오 |

43| `Read` | 파일의 내용을 읽습니다. [Read 도구 동작](#read-tool-behavior)을 참조하세요 | 아니오 |43| `Read` | 파일의 내용을 읽습니다. [Read 도구 동작](#read-tool-behavior)을 참조하세요 | 아니오 |

44| `ReadMcpResourceTool` | URI로 특정 MCP 리소스를 읽습니다 | 아니오 |44| `ReadMcpResourceTool` | URI로 특정 MCP 리소스를 읽습니다 | 아니오 |

45| `RemoteTrigger` | claude.ai에서 [클라우드 예약 작업](https://code.claude.com/docs/ko/routines.md)(이전 명칭: 루틴)을 생성, 업데이트, 실행 및 나열합니다. `/schedule` 명령을 지원합니다. [`RemoteTrigger` 입력 참조](https://code.claude.com/docs/ko/agent-sdk/typescript#remotetrigger)는 모든 작업 및 도구를 제거하는 조직 정책을 문서화합니다. 클라우드 예약 작업은 claude.ai에 있으며 Pro, Max, Ultra, Team 또는 Enterprise 플랜이 필요합니다. 따라서 이 도구는 Amazon Bedrock, Claude Platform on AWS, Google Cloud의 Agent Platform 또는 Microsoft Foundry에서 액세스할 수 없습니다 | 아니오 |45| `RemoteTrigger` | claude.ai에서 [클라우드 예약 작업](https://code.claude.com/docs/ko/routines.md)(이전 명칭: 루틴)을 생성, 업데이트, 실행 및 나열합니다. `/schedule` 명령을 지원합니다. [`RemoteTrigger` 입력 참조](https://code.claude.com/docs/ko/agent-sdk/typescript#remotetrigger)는 모든 작업 및 도구를 제거하는 조직 정책을 문서화합니다. 클라우드 예약 작업은 claude.ai에 있으며 Pro, Max, Ultra, Team 또는 Enterprise 플랜이 필요합니다. 따라서 이 도구는 Amazon Bedrock, Claude Platform on AWS, Google Cloud의 Agent Platform 또는 Microsoft Foundry에서 액세스할 수 없습니다 | 아니오 |

vs-code.md +12 −3

Details

818 818 

819### VS Code에서 CLI 실행819### VS Code에서 CLI 실행

820 820 

821VS Code를 벗어나지 않고 CLI를 사용하려면 Windows/Linux에서는 `` Ctrl+` ``, Mac에서는 `` Cmd+` ``를 눌러 통합 터미널을 연 다음 `claude`를 실행합니다. `claude`를 시작해도 확장 프로그램이 설치되지는 않습니다. 확장 프로그램이 없으면 통합 터미널에서 `/ide`를 실행했을 때 "No available IDEs detected"가 표시되고, `/status`에는 IDE가 "Not connected"로 표시됩니다.821VS Code를 벗어나지 않고 CLI를 사용하려면 Windows/Linux에서는 `` Ctrl+` ``, Mac에서는 `` Cmd+` ``를 눌러 통합 터미널을 연 다음 `claude`를 실행합니다.

822 822 

823diff 보기 및 진단 정보 공유와 같은 기능을 사용하려면 통합 터미널 또는 외부 터미널에서 CLI를 확장 프로그램에 연결합니다.823diff 보기 및 진단 정보 공유와 같은 기능을 사용하려면 통합 터미널 또는 외부 터미널에서 CLI를 확장 프로그램에 연결합니다.

824 824 

825* **통합 터미널**: [확장 프로그램을 설치](#install-the-extension)한 다음 `claude`를 시작합니다. CLI가 자동으로 연결됩니다.825* **통합 터미널**: [확장 프로그램을 설치](#install-the-extension)한 다음 `claude`를 시작합니다. CLI가 자동으로 연결됩니다. Claude Code v2.1.318 이상에서는 확장 프로그램이 자동으로 설치되지 않으므로, 설치하기 전까지는 `/ide`에서 "No available IDEs detected"가 표시되고 `/status`에는 IDE가 "Not connected"로 표시됩니다.

826* **외부 터미널**: Claude Code 내에서 `/ide`를 실행하여 VS Code에 연결합니다. 확장 프로그램 없이 VS Code가 실행 중인 경우, [`autoInstallIdeExtension`](https://code.claude.com/docs/ko/settings-reference#autoinstallideextension)을 끄지 않았다면 `/ide`가 확장 프로그램을 설치합니다.826* **외부 터미널**: Claude Code 내에서 `/ide`를 실행하여 VS Code에 연결합니다. 확장 프로그램 없이 VS Code가 실행 중인 경우, [`autoInstallIdeExtension`](https://code.claude.com/docs/ko/settings-reference#autoinstallideextension)을 끄지 않았다면 `/ide`가 확장 프로그램을 설치합니다.

827 827 

828확장 프로그램을 설치해도 `claude`가 셸 PATH에 추가되지는 않습니다. 확장 프로그램은 채팅 패널용으로 CLI의 비공개 사본을 번들로 포함하지만, 터미널에서 `claude`를 입력하려면 [독립 실행형 CLI 설치](https://code.claude.com/docs/ko/setup.md)가 필요합니다. 설치를 한 번 실행하면 `claude mcp add` 및 `claude --resume`을 포함하여 이 페이지의 명령을 모든 터미널에서 사용할 수 있습니다. 설치 후에도 `claude`를 찾을 수 없다면 [PATH를 확인](https://code.claude.com/docs/ko/troubleshoot-install.md#verify-your-path)하세요.828확장 프로그램을 설치해도 `claude`가 셸 PATH에 추가되지는 않습니다. 확장 프로그램은 채팅 패널용으로 CLI의 비공개 사본을 번들로 포함하지만, 터미널에서 `claude`를 입력하려면 [독립 실행형 CLI 설치](https://code.claude.com/docs/ko/setup.md)가 필요합니다. 설치를 한 번 실행하면 `claude mcp add` 및 `claude --resume`을 포함하여 이 페이지의 명령을 모든 터미널에서 사용할 수 있습니다. 설치 후에도 `claude`를 찾을 수 없다면 [PATH를 확인](https://code.claude.com/docs/ko/troubleshoot-install.md#verify-your-path)하세요.


10912. "Claude Code"를 검색합니다10912. "Claude Code"를 검색합니다

10923. **Uninstall**을 클릭합니다10923. **Uninstall**을 클릭합니다

1093 1093 

1094`claude`를 시작해도 확장 프로그램은 제거된 상태로 유지됩니다. VS Code가 실행 중일 때 외부 터미널에서 `/ide`를 실행하면 Claude Code가 확장 프로그램을 다시 설치합니다. 이를 막으려면 `~/.claude.json`에서 [`autoInstallIdeExtension`](https://code.claude.com/docs/ko/settings-reference#autoinstallideextension)을 `false`로 설정하거나, 통합 터미널의 `/config`에서 **Auto-install IDE extension**을 끕니다. [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](https://code.claude.com/docs/ko/env-vars) 환경 변수를 `1`로 설정할 수도 있습니다.1094제거한 후 다음 중 하나를 수행하면 확장 프로그램이 다시 설치됩니다.

1095 

1096* VS Code가 실행 중일 때 외부 터미널에서 `/ide` 실행

1097* v2.1.318 이전 버전의 Claude Code에서 통합 터미널로 `claude` 시작

1098 

1099확장 프로그램이 다시 설치되지 않도록 하려면 다음 중 하나를 수행한 후, 이미 다시 설치된 경우 확장 프로그램을 다시 제거합니다.

1100 

1101* `~/.claude.json`에서 [`autoInstallIdeExtension`](https://code.claude.com/docs/ko/settings-reference#autoinstallideextension)을 `false`로 설정

1102* [설정 파일](https://code.claude.com/docs/ko/env-vars.md#in-settings-files)의 `env` 아래에서 [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](https://code.claude.com/docs/ko/env-vars#variables)을 `1`로 설정

1103* 통합 터미널의 `/config`에서 **Auto-install IDE extension** 끄기

1095 1104 

1096확장 프로그램 데이터도 제거하고 모든 설정을 초기화하려면 플랫폼에 해당하는 확장 프로그램 저장소 디렉터리를 삭제합니다.1105확장 프로그램 데이터도 제거하고 모든 설정을 초기화하려면 플랫폼에 해당하는 확장 프로그램 저장소 디렉터리를 삭제합니다.

1097 1106 

Details

12 12 

13클라우드 세션은 사용자의 머신 대신 기본적으로 Anthropic 관리 클라우드 인프라에서 Claude Code를 실행합니다. 이 빠른 시작은 브라우저에서 [claude.ai/code](https://claude.ai/code)에서 시작합니다. Claude 모바일 앱, Desktop 앱, 또는 터미널에서 `claude --cloud`를 사용하여 시작할 수도 있습니다.13클라우드 세션은 사용자의 머신 대신 기본적으로 Anthropic 관리 클라우드 인프라에서 Claude Code를 실행합니다. 이 빠른 시작은 브라우저에서 [claude.ai/code](https://claude.ai/code)에서 시작합니다. Claude 모바일 앱, Desktop 앱, 또는 터미널에서 `claude --cloud`를 사용하여 시작할 수도 있습니다.

14 14 

15[시작하기](#connect-github)를 위해 GitHub 저장소가 필요합니다. Claude는 이를 격리된 가상 머신으로 복제하고, 변경 사항을 만들고, 검토할 수 있도록 브랜치를 푸시합니다. 세션은 기기 간에 지속되므로, 노트북에서 시작한 작업을 나중에 휴대폰에서 검토할 수 있습니다. 각 세션은 나머지 Claude 및 Claude Code 사용량과 함께 플랜의 사용 한도에 포함되며, 클라우드 VM에 대한 별도 요금은 없습니다.15Claude는 선택한 [GitHub 저장소](#connect-github)를 격리된 가상 머신으로 복제하고, 변경 사항을 만들고, 검토할 수 있도록 브랜치를 푸시합니다. 세션은 기기 간에 지속되므로, 노트북에서 시작한 작업을 나중에 휴대폰에서 검토할 수 있습니다. 각 세션은 나머지 Claude 및 Claude Code 사용량과 함께 플랜의 사용 한도에 포함되며, 클라우드 VM에 대한 별도 요금은 없습니다.

16 16 

17클라우드 세션은 다음에 적합합니다:17클라우드 세션은 다음에 적합합니다:

18 18 


44| **시작 위치** | claude.ai/code, Claude 모바일 앱, **Cloud**가 선택된 Desktop 앱, 또는 `claude --cloud` | 터미널, IDE, 또는 **Local**이 선택된 Desktop 앱 | 터미널, VS Code 확장 프로그램, 또는 Desktop 앱 |44| **시작 위치** | claude.ai/code, Claude 모바일 앱, **Cloud**가 선택된 Desktop 앱, 또는 `claude --cloud` | 터미널, IDE, 또는 **Local**이 선택된 Desktop 앱 | 터미널, VS Code 확장 프로그램, 또는 Desktop 앱 |

45| **채팅 위치** | claude.ai, 모바일 앱, 또는 Desktop 앱 | 시작한 위치 | claude.ai 또는 모바일 앱, 그리고 시작한 위치 |45| **채팅 위치** | claude.ai, 모바일 앱, 또는 Desktop 앱 | 시작한 위치 | claude.ai 또는 모바일 앱, 그리고 시작한 위치 |

46| **로컬 구성 사용** | 아니오, 저장소만 | 예 | 예 |46| **로컬 구성 사용** | 아니오, 저장소만 | 예 | 예 |

47| **GitHub 필요** | 예, 또는 `--cloud`를 통해 [로컬 저장소 번들](https://code.claude.com/docs/ko/claude-code-on-the-web.md#send-local-repositories-without-github) | 아니오 | 아니오 |47| **GitHub 필요** | GitHub 저장소의 경우 예. 단, `--cloud`가 [로컬 저장소를 번들로 묶는](https://code.claude.com/docs/ko/claude-code-on-the-web.md#send-local-repositories-without-github) 경우는 제외 | 아니오 | 아니오 |

48| **연결 해제 시 계속 실행** | 예 | 아니오 | 머신에서 세션이 열려 있는 동안 |48| **연결 해제 시 계속 실행** | 예 | 아니오 | 머신에서 세션이 열려 있는 동안 |

49| **[권한 모드](https://code.claude.com/docs/ko/permission-modes.md)** | 편집 자동 수락, Plan, Auto | 터미널의 모든 모드; IDE 및 Desktop 앱의 경우 [권한 모드 전환](https://code.claude.com/docs/ko/permission-modes.md#switch-permission-modes) 참조 | claude.ai 및 모바일 앱에서 수동, 편집 자동 수락, Plan, 또는 Auto |49| **[권한 모드](https://code.claude.com/docs/ko/permission-modes.md)** | 편집 자동 수락, Plan, Auto | 터미널의 모든 모드; IDE 및 Desktop 앱의 경우 [권한 모드 전환](https://code.claude.com/docs/ko/permission-modes.md#switch-permission-modes) 참조 | claude.ai 및 모바일 앱에서 수동, 편집 자동 수락, Plan, 또는 Auto |

50| **네트워크 접근** | 환경별로 구성 가능 | 머신의 네트워크 | 머신의 네트워크 |50| **네트워크 접근** | 환경별로 구성 가능 | 머신의 네트워크 | 머신의 네트워크 |


138 138 

139[권한 모드 컨트롤](https://code.claude.com/docs/ko/permission-modes.md#switch-permission-modes)은 세션이 실행될 권한 모드를 표시합니다:139[권한 모드 컨트롤](https://code.claude.com/docs/ko/permission-modes.md#switch-permission-modes)은 세션이 실행될 권한 모드를 표시합니다:

140 140 

141* **Auto**: 분류기가 사용자에게 묻는 대신 Claude의 작업을 검토합니다. 조직에서 자동 모드를 허용하고 선택한 모델이 이를 지원할 때 나타납니다141* **Auto**: 분류기가 사용자에게 묻는 대신 Claude의 작업을 검토합니다. 조직에서 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)를 끄지 않는 한 나타납니다. claude.ai/code에서 회색으로 비활성화되어 있으면 자동 모드를 지원하는 모델을 선택합니다

142* **Accept edits**: Claude는 승인을 기다리지 않고 변경 사항을 만들고 브랜치를 푸시합니다142* **Accept edits**: Claude는 승인을 기다리지 않고 변경 사항을 만들고 브랜치를 푸시합니다

143* **Plan**: Claude는 접근 방식을 제안하고 파일을 편집하기 전에 승인을 기다립니다143* **Plan**: Claude는 접근 방식을 제안하고 파일을 편집하기 전에 승인을 기다립니다

144 144 


209 209 

210### 페이지에 GitHub 로그인 버튼만 표시됨210### 페이지에 GitHub 로그인 버튼만 표시됨

211 211 

212클라우드 세션에는 연결된 GitHub 계정이 필요합니다. 위의 브라우저 흐름을 통해 연결하거나, GitHub CLI를 사용하는 경우 터미널에서 `/web-setup`을 실행하세요. GitHub를 연결하지 않으려면 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)을 참조하여 자신의 머신에서 Claude Code를 실행하고 웹에서 모니터링하세요.212클라우드 세션에서 GitHub 저장소로 작업하려면 [GitHub 계정을 연결](#connect-github)하거나, GitHub CLI를 사용하는 경우 터미널에서 `/web-setup`을 실행하세요. GitHub를 전혀 연결하지 않으려면 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)을 참조하여 자신의 머신에서 Claude Code를 실행하고 브라우저나 휴대폰에서 모니터링하세요.

213 213 

214### "Claude Code isn't available on your account"214### "Claude Code isn't available on your account"

215 215 


227 227 

228`/web-setup`은 Claude Code CLI 내에서 실행되며, 셸에서는 실행되지 않습니다. 먼저 `claude`를 시작한 후 프롬프트에서 `/web-setup`을 입력하세요.228`/web-setup`은 Claude Code CLI 내에서 실행되며, 셸에서는 실행되지 않습니다. 먼저 `claude`를 시작한 후 프롬프트에서 `/web-setup`을 입력하세요.

229 229 

230Claude Code 내에서 입력했는데 명령 메뉴에 `"/web-setup"과 일치하는 명령 없음`이 표시되거나 제출하면 `알 수 없는 명령: /web-setup`이 반환되면, 요구 사항이 충족되지 않아 명령이 숨겨져 있습니다. 일반적으로 API 키 또는 타사 제공자로 인증되었으며 claude.ai 구독이 아닌 경우입니다. `/login`을 실행하여 claude.ai 계정으로 로그인하세요.230Claude Code 내에서 입력했는데 명령 메뉴에 `No commands match "/web-setup"`이 표시되거나 제출하면 `Unknown command: /web-setup`이 반환되면, 요구 사항이 충족되지 않아 명령이 숨겨져 있습니다. 일반적으로 API 키 또는 타사 제공자로 인증되었으며 claude.ai 구독이 아닌 경우입니다. `/login`을 실행하여 claude.ai 계정으로 로그인하세요.

231 231 

232Team 및 Enterprise 플랜에서는 명령이 기본적으로 숨겨져 있습니다. [빠른 설정 토글](https://code.claude.com/docs/ko/claude-code-on-the-web.md#quick-setup-for-team-and-enterprise)은 소유자가 켤 때까지 꺼져 있습니다. 꺼져 있는 동안에는 대신 [브라우저에서 GitHub 연결](#connect-github)하세요.232Team 및 Enterprise 플랜에서는 명령이 기본적으로 숨겨져 있습니다. [빠른 설정 토글](https://code.claude.com/docs/ko/claude-code-on-the-web.md#quick-setup-for-team-and-enterprise)은 소유자가 켤 때까지 꺼져 있습니다. 꺼져 있는 동안에는 대신 [브라우저에서 GitHub 연결](#connect-github)하세요.

233 233 

234명령은 다른 두 가지 경우에도 숨겨집니다:234명령은 다른 두 가지 경우에도 숨겨집니다:

235 235 

236* 관리자가 조직에 대해 클라우드 세션을 비활성화했습니다. 이 경우 `/web-setup`을 제출하면 [`클라우드 세션이 조직의 정책에 의해 비활성화됨`](https://code.claude.com/docs/ko/errors#cloud-sessions-are-disabled-by-your-organizations-policy)이 반환됩니다. v2.1.268 이전에는 이 경우도 `알 수 없는 명령: /web-setup`을 반환했습니다.236* 관리자가 조직에 대해 클라우드 세션을 비활성화했습니다. 이 경우 `/web-setup`을 제출하면 [`Cloud sessions are disabled by your organization's policy`](https://code.claude.com/docs/ko/errors#cloud-sessions-are-disabled-by-your-organizations-policy)가 반환됩니다. v2.1.268 이전에는 이 경우도 `Unknown command: /web-setup`을 반환했습니다.

237* Enterprise 조직에 [Zero Data Retention](https://code.claude.com/docs/ko/zero-data-retention.md)이 활성화되어 있거나 [HIPAA 구성](https://code.claude.com/docs/ko/hipaa-setup.md)이 적용되어 있습니다. 둘 중 어느 경우든 클라우드 세션을 사용할 수 없습니다.237* Enterprise 조직에 [Zero Data Retention](https://code.claude.com/docs/ko/zero-data-retention.md)이 활성화되어 있거나 [HIPAA 구성](https://code.claude.com/docs/ko/hipaa-setup.md)이 적용되어 있습니다. 둘 중 어느 경우든 클라우드 세션을 사용할 수 없습니다.

238 238 

239### `--cloud` 사용 시 "클라우드 환경을 만들 수 없음" 또는 "사용 가능한 클라우드 환경 없음"239### `--cloud` 사용 시 "클라우드 환경을 만들 수 없음" 또는 "사용 가능한 클라우드 환경 없음"


242 242 

243### 설정 스크립트 실패243### 설정 스크립트 실패

244 244 

245설정 스크립트가 0이 아닌 상태로 종료되어 세션 시작이 차단되었습니다. 일반적인 원인:245[설정 스크립트](https://code.claude.com/docs/ko/cloud-environments.md#setup-scripts)가 0이 아닌 상태로 종료되어, 세션이 시작되지 못했거나 스크립트가 설치하지 못한 항목 없이 세션이 시작되었습니다. 세션이 시작된 경우에는 해당 세션에서 계속 작업할 수 있습니다.

246 

247일반적인 원인:

246 248 

247* 레지스트리가 [네트워크 액세스 수준](https://code.claude.com/docs/ko/cloud-environments.md#access-levels)에 없어서 패키지 설치가 실패했습니다. `Trusted`는 대부분의 패키지 관리자를 포함합니다. `None`은 모두 차단합니다.249* 레지스트리가 [네트워크 액세스 수준](https://code.claude.com/docs/ko/cloud-environments.md#access-levels)에 없어서 패키지 설치가 실패했습니다. `Trusted`는 대부분의 패키지 관리자를 포함합니다. `None`은 모두 차단합니다.

248* 스크립트가 새로운 복제본에 존재하지 않는 파일 또는 경로를 참조합니다.250* 스크립트가 새로운 복제본에 존재하지 않는 파일 또는 경로를 참조합니다.

249* 로컬에서 작동하는 명령이 Ubuntu에서 다른 호출이 필요합니다.251* 로컬에서 작동하는 명령이 Ubuntu에서 다른 호출이 필요합니다.

250 252 

251디버깅하려면 스크립트 맨 위에 `set -x`를 추가하여 어느 명령이 실패했는지 확인하세요. 중요하지 않은 명령의 경우 `|| true`를 추가하여 세션 시작을 차단하지 않도록 하세요.253디버깅하려면 스크립트 맨 위에 `set -x`를 추가하여 어느 명령이 실패했는지 확인하세요. 중요하지 않은 명령의 경우 `|| true`를 추가하여 스크립트가 실패하지 않도록 하세요. 원인을 수정한 후에는 스크립트가 다시 실행되도록 새 세션을 시작하세요. 시작에 실패한 것이 [클라우드 예약 작업](https://code.claude.com/docs/ko/routines.md)의 실행인 경우, 새 세션을 시작하는 대신 작업의 세부 정보 페이지에서 **지금 실행**을 클릭하세요.

252 254 

253### 새 세션이 설정 중에 중단되거나 시간 초과됨255### 새 세션이 설정 중에 중단되거나 시간 초과됨

254 256