SpyBara
Go Premium

Documentation 2026-10-06 23:59 UTC to 2026-10-07 19:00 UTC

54 files changed +370 −307. View all changes and history on the product overview
2026
Wed 7 20:01 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59

agent-sdk/hooks.md +10 −10

Details

140 ```140 ```

141</CodeGroup>141</CodeGroup>

142 142 

143스크립트를 실행하면 Claude가 `.env` 파일을 생성하려고 시도하고, 훅이 도구 호출을 거부하며, Claude의 최종 응답은 `.env` 파일을 생성할 수 없다고 설명합니다.143두 스크립트 중 어느 것을 실행하든 Claude가 `.env` 파일을 생성하려고 시도하고 훅이 도구 호출을 거부합니다.

144 144 

145<h2 id="available-hooks">145<h2 id="available-hooks">

146 사용 가능한 훅146 사용 가능한 훅


179| `ConfigChange` | 아니오 | 예 | 구성 파일 변경 | 동적으로 설정 다시 로드 |179| `ConfigChange` | 아니오 | 예 | 구성 파일 변경 | 동적으로 설정 다시 로드 |

180| `InstructionsLoaded` | 아니오 | 예 | `CLAUDE.md` 또는 규칙 파일이 컨텍스트에 로드됨 | 어떤 명령 파일이 로드되는지 감사 |180| `InstructionsLoaded` | 아니오 | 예 | `CLAUDE.md` 또는 규칙 파일이 컨텍스트에 로드됨 | 어떤 명령 파일이 로드되는지 감사 |

181| `WorktreeCreate` | 아니오 | 예 | Git worktree 생성 | 격리된 작업 공간 추적 |181| `WorktreeCreate` | 아니오 | 예 | Git worktree 생성 | 격리된 작업 공간 추적 |

182| `WorktreeRemove` | 아니오 | 예 | Git worktree 제거 | 작업 공간 리소스 정리 |182| `WorktreeRemove` | 아니오 | 예 | `WorktreeCreate` 훅으로 생성된 worktree가 제거되는 중 | 워크스페이스 리소스 정리 |

183| `CwdChanged` | 아니오 | 예 | 세션 중 작업 디렉토리가 변경됨 | 디렉토리별 환경 변수 다시 로드 |183| `CwdChanged` | 아니오 | 예 | 세션 중 작업 디렉토리가 변경됨 | 디렉토리별 환경 변수 다시 로드 |

184| `FileChanged` | 아니오 | 예 | 감시 중인 파일이 수정, 생성 또는 삭제됨 | 프로젝트 파일이 변경될 때 구성 다시 로드 |184| `FileChanged` | 아니오 | 예 | 감시 중인 파일이 수정, 생성 또는 삭제됨 | 프로젝트 파일이 변경될 때 구성 다시 로드 |

185| `DirectoryAdded` | 아니오 | 예 | 세션 중 작업 디렉토리가 추가됨 | 세션 중 추가된 저장소에 대한 종속성 설치 |185| `DirectoryAdded` | 아니오 | 예 | 세션 중 작업 디렉토리가 추가됨 | 세션 중 추가된 저장소에 대한 종속성 설치 |


219`hooks` 옵션은 다음과 같은 딕셔너리(Python) 또는 객체(TypeScript)입니다:219`hooks` 옵션은 다음과 같은 딕셔너리(Python) 또는 객체(TypeScript)입니다:

220 220 

221* **키**: [훅 이벤트 이름](#available-hooks)입니다(예: `'PreToolUse'`, `'PostToolUse'`, `'Stop'`).221* **키**: [훅 이벤트 이름](#available-hooks)입니다(예: `'PreToolUse'`, `'PostToolUse'`, `'Stop'`).

222* **값**: [매처](#matchers) 배열이며, 각각 선택적 필터 패턴과 [콜백 함수](#callback-functions)를 포함합니다.222* **값**: [matcher](#matchers) 배열이며, 각각 선택적 필터 패턴과 [콜백 함수](#callback-functions)를 포함합니다.

223 223 

224<h3 id="matchers">224<h3 id="matchers">

225 매처225 Matcher

226</h3>226</h3>

227 227 

228매처를 사용하여 콜백이 발생할 때를 필터링합니다. `matcher` 필드는 훅 이벤트 유형에 따라 다른 값과 일치합니다. 예를 들어 도구 기반 훅은 도구 이름과 일치하고, `Notification` 훅은 알림 유형과 일치합니다.228매처를 사용하여 콜백이 발생할 때를 필터링합니다. `matcher` 필드는 훅 이벤트 유형에 따라 다른 값과 일치합니다. 예를 들어 도구 기반 훅은 도구 이름과 일치하고, `Notification` 훅은 알림 유형과 일치합니다.


259 259 

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

261 261 

262* **최상위 필드**는 모든 이벤트에서 동일하게 작동합니다: `systemMessage`는 사용자에게 메시지를 표시하고, `continue`(Python에서는 `continue_`)는 이 훅 후에 에이전트가 계속 실행되는지 여부를 결정합니다. 일부 이벤트는 이들을 버리거나 다른 곳에 전달합니다. 각 [이벤트의 섹션](/docs/ko/hooks#hook-events)에서 훅 페이지에 이들이 어디에 도착하는지 설명합니다.262* **최상위 필드**는 모든 이벤트에서 허용됩니다: `systemMessage`는 사용자에게 메시지를 표시하고, `continue`(Python에서는 `continue_`)는 이 훅 후에 에이전트가 계속 실행되는지 여부를 결정합니다. 일부 이벤트는 이들을 버리거나 다른 곳에 전달합니다. 훅 페이지의 각 [이벤트 섹션](/docs/ko/hooks#hook-events)에서 이들이 어디로 전달되는지 설명합니다.

263* \*\*`hookSpecificOutput`\*\*은 현재 작업을 제어합니다. 내부의 필드는 훅 이벤트 유형에 따라 다릅니다:263* \*\*`hookSpecificOutput`\*\*은 현재 작업을 제어합니다. 내부의 필드는 훅 이벤트 유형에 따라 다릅니다:

264 * `PreToolUse` 훅의 경우 `permissionDecision`(`"allow"`, `"deny"`, `"ask"`, 또는 `"defer"`), `permissionDecisionReason`, `updatedInput`을 설정하는 곳입니다. `"defer"`를 반환하면 `stop_reason`이 `"tool_deferred"`인 결과 메시지와 함께 턴이 종료되므로 [나중에 호출을 재개](/docs/ko/hooks#defer-a-tool-call-for-later)할 수 있습니다.264 * `PreToolUse` 훅의 경우 `permissionDecision`(`"allow"`, `"deny"`, `"ask"`, 또는 `"defer"`), `permissionDecisionReason`, `updatedInput`을 설정하는 곳입니다. `"defer"`를 반환하면 `stop_reason`이 `"tool_deferred"`인 결과 메시지와 함께 턴이 종료되므로 [나중에 호출을 재개](/docs/ko/hooks#defer-a-tool-call-for-later)할 수 있습니다.

265 * `PostToolUse` 훅의 경우 `additionalContext`를 설정하여 도구 결과에 정보를 추가할 수 있습니다. 도구의 출력을 Claude가 보기 전에 바꾸려면 `updatedToolOutput`을 설정합니다. 이는 두 SDK 모두에서 모든 도구에 대해 작동합니다. 더 오래된 `updatedMCPToolOutput` 필드는 MCP 도구 출력만 바꾸며 deprecated되었습니다.265 * `PostToolUse` 훅의 경우 `additionalContext`를 설정하여 도구 결과에 정보를 추가할 수 있습니다. 도구의 출력을 Claude가 보기 전에 바꾸려면 `updatedToolOutput`을 설정합니다. 이는 두 SDK 모두에서 모든 도구에 대해 작동합니다. 더 오래된 `updatedMCPToolOutput` 필드는 MCP 도구 출력만 바꿉니다.

266 * TypeScript SDK에서 `PostToolUse` 콜백은 또한 `classifierContext`를 반환할 수 있습니다. 이는 [자동 모드](/docs/ko/permission-modes#eliminate-prompts-with-auto-mode) 권한 분류기를 위한 도구 호출 결과에 대한 짧은 메모입니다. 콜백이 애플리케이션의 자체 프로세스에서 실행되므로 분류기는 메모에서 전달하는 사용자 진술을 사용자 의도로 가중치를 둘 수 있습니다. 이 필드는 TypeScript Agent SDK v0.3.236 이상이 필요합니다. [자동 모드 분류기를 위한 결과 주석 달기](/docs/ko/hooks#annotate-a-result-for-the-auto-mode-classifier)에서 길이 제한, 동기 전용 규칙, 메모에 포함하지 말아야 할 내용을 다룹니다.266 * TypeScript SDK에서 `PostToolUse` 콜백은 또한 `classifierContext`를 반환할 수 있습니다. 이는 [자동 모드](/docs/ko/permission-modes#eliminate-prompts-with-auto-mode) 권한 분류기를 위한 도구 호출 결과에 대한 짧은 메모입니다. 콜백이 애플리케이션의 자체 프로세스에서 실행되므로 분류기는 메모에서 전달하는 사용자 진술을 사용자 의도로 가중치를 둘 수 있습니다. 이 필드는 TypeScript Agent SDK v0.3.236 이상이 필요합니다. [자동 모드 분류기를 위한 결과 주석 달기](/docs/ko/hooks#annotate-a-result-for-the-auto-mode-classifier)에서 길이 제한, 동기 전용 규칙, 메모에 포함하지 말아야 할 내용을 다룹니다.

267 267 

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


840* `PreModelSwitch`: Claude Code는 모델 전환을 차단합니다. 응답하지 않는 훅은 전환을 승인하지 않았습니다.840* `PreModelSwitch`: Claude Code는 모델 전환을 차단합니다. 응답하지 않는 훅은 전환을 승인하지 않았습니다.

841* `Notification`, `PreCompact`, `PostModelSwitch` 같은 다른 이벤트: Claude Code는 실패를 기록하고 계속됩니다.841* `Notification`, `PreCompact`, `PostModelSwitch` 같은 다른 이벤트: Claude Code는 실패를 기록하고 계속됩니다.

842 842 

843주 세션에서 `Stop` 또는 `SessionStart` 콜백이 처음 타임아웃되면 Claude Code는 또한 앱이 세션을 구동하는 것이 응답하지 않았다고 말하는 [`SDKInformationalMessage`](/docs/ko/agent-sdk/typescript#sdkinformationalmessage)를 메시지 스트림에 추가합니다. 앱이 응답하지 않은 상태로 유지되는 동안 이후 타임아웃은 해당 메시지를 반복하지 않습니다.843주 세션에서 `Stop` 또는 `SessionStart` 콜백이 처음 타임아웃되면 Claude Code는 또한 세션을 구동하는 앱이 응답하지 않았다는 [`SDKInformationalMessage`](/docs/ko/agent-sdk/typescript#sdkinformationalmessage)를 메시지 스트림에 추가합니다. 앱이 응답하지 않은 상태로 유지되는 동안 이후 타임아웃은 해당 메시지를 반복하지 않습니다.

844 844 

845콜백이 대기 중인 동안 쿼리를 중단하면 Claude Code는 대기 중인 도구 호출을 취소합니다. v2.1.208 이전에는 대기 중인 `PreToolUse` 콜백 중에 중단하면 도구 호출이 진행될 수 있었습니다.845콜백이 대기 중인 동안 쿼리를 중단하면 Claude Code는 대기 중인 도구 호출을 취소합니다. v2.1.208 이전에는 대기 중인 `PreToolUse` 콜백 중에 중단하면 도구 호출이 진행될 수 있었습니다.

846 846 


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

879</h3>879</h3>

880 880 

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

882 882 

883<CodeGroup>883<CodeGroup>

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


915 systemMessage가 출력에 나타나지 않음915 systemMessage가 출력에 나타나지 않음

916</h3>916</h3>

917 917 

918`systemMessage` 필드는 사용자에게 메시지를 표시합니다. Claude Code v2.1.227 이상에서는 훅의 `systemMessage`가 메시지 스트림에 [`SDKInformationalMessage`](/docs/ko/agent-sdk/typescript#sdkinformationalmessage)로 표시될 수 있습니다. 표시 여부는 이벤트에 따라 다릅니다. 훅 페이지의 각 [이벤트 섹션](/docs/ko/hooks#hook-events)에서 출력이 어떻게 표시되는지 설명합니다. 대신 모델에 컨텍스트를 전달하려면 [`additionalContext`](/docs/ko/hooks#add-context-for-claude)를 반환합니다.918`systemMessage` 필드는 모델이 아닌 사용자에게 메시지를 표시합니다. Claude Code v2.1.227 이상에서는 훅의 `systemMessage`가 메시지 스트림에 [`SDKInformationalMessage`](/docs/ko/agent-sdk/typescript#sdkinformationalmessage)로 표시될 수 있습니다. 표시 여부는 이벤트에 따라 다릅니다. 훅 페이지의 각 [이벤트 섹션](/docs/ko/hooks#hook-events)에서 출력이 어떻게 표시되는지 설명합니다. 대신 모델에 컨텍스트를 전달하려면 [`additionalContext`](/docs/ko/hooks#add-context-for-claude)를 반환합니다.

919 919 

920v2.1.227 이전에는 SDK가 메시지 스트림에서 훅 출력을 `SessionStart` 및 `Setup` 훅에만 표시했습니다. 다른 이벤트의 경우 출력은 [`includeHookEvents`](/docs/ko/agent-sdk/typescript#options)(`Python에서는 include_hook_events`)가 추가하는 라이프사이클 이벤트에만 나타났습니다. 해당 옵션의 항목은 각 훅 이벤트가 생성하는 라이프사이클 이벤트를 다룹니다.920v2.1.227 이전에는 SDK가 메시지 스트림에서 훅 출력을 `SessionStart` 및 `Setup` 훅에만 표시했습니다. 다른 이벤트의 경우 출력은 [`includeHookEvents`](/docs/ko/agent-sdk/typescript#options)(Python에서는 `include_hook_events`)가 추가하는 라이프사이클 이벤트에만 나타났습니다. 해당 옵션의 항목은 각 훅 이벤트가 생성하는 라이프사이클 이벤트를 다룹니다.

921 921 

922훅 결정을 애플리케이션에 안정적으로 표시해야 하면 별도로 기록하거나 전용 출력 채널을 사용합니다.922훅 결정을 애플리케이션에 안정적으로 표시해야 하면 별도로 기록하거나 전용 출력 채널을 사용합니다.

923 923 

Details

194 `ToolAnnotations`194 `ToolAnnotations`

195</h4>195</h4>

196 196 

197[`tool()`](#tool)의 `annotations` 인수로 전달되는 도구의 동작 힌트입니다. `ToolAnnotations`는 MCP SDK의 `mcp.types.ToolAnnotations`를 `maxResultSizeChars` 필드로 확장하며, 각 힌트를 camelCase 또는 snake\_case로 작성할 수 있습니다: `ToolAnnotations(readOnlyHint=True)`와 `ToolAnnotations(read_only_hint=True)`는 동등합니다. SDK가 주석을 허용하는 곳에 일반 `mcp.types.ToolAnnotations`를 전달할 수도 있습니다.197[`tool()`](#tool)의 `annotations` 인수로 전달되는 도구의 동작 힌트입니다. `ToolAnnotations`는 MCP SDK의 `mcp.types.ToolAnnotations`를 `maxResultSizeChars` 필드로 확장하며, 각 힌트를 camelCase 또는 snake\_case로 작성할 수 있습니다: `ToolAnnotations(readOnlyHint=True)`와 `ToolAnnotations(read_only_hint=True)`는 동등합니다. 객체에서 힌트를 다시 읽으려면 설치된 `mcp` 패키지가 선언하는 표기를 사용합니다: `mcp` 1.x에서는 `.readOnlyHint`, 2.x에서는 `.read_only_hint`를 사용하며, `.maxResultSizeChars`는 두 버전 모두에서 작동합니다. SDK가 주석을 허용하는 곳에 일반 `mcp.types.ToolAnnotations`를 전달할 수도 있습니다.

198 198 

199snake\_case 이름과 타입이 지정된 `maxResultSizeChars` 필드는 Python Agent SDK 0.2.140 이상이 필요합니다. 버전 0.1.31부터 0.2.139까지는 `mcp.types.ToolAnnotations`를 변경하지 않고 다시 내보냅니다. 버전 0.1.55부터 0.2.139까지는 여전히 `maxResultSizeChars`를 키워드 인수로 전달할 수 있습니다: MCP 클래스는 추가 필드를 허용하고 SDK는 값을 Claude Code로 전달합니다.199snake\_case 이름과 타입이 지정된 `maxResultSizeChars` 필드는 Python Agent SDK 0.2.140 이상이 필요합니다. 버전 0.1.31부터 0.2.139까지는 `mcp.types.ToolAnnotations`를 변경하지 않고 다시 내보냅니다. 버전 0.1.55부터 0.2.139까지는 여전히 `maxResultSizeChars`를 키워드 인수로 전달할 수 있습니다: MCP 클래스는 추가 필드를 허용하고 SDK는 값을 Claude Code로 전달합니다.

200 200 


1465| `enabled` | `type`, `budget_tokens`, `display` | 특정 토큰 예산으로 생각 활성화 |1465| `enabled` | `type`, `budget_tokens`, `display` | 특정 토큰 예산으로 생각 활성화 |

1466| `disabled` | `type` | 생각 비활성화 |1466| `disabled` | `type` | 생각 비활성화 |

1467 1467 

1468선택적 `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` 출력을 반환합니다.1468선택적 `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` 출력을 반환합니다.

1469 1469 

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

1471 1471 


1875| `maxOutputTokens` | `int` | 이 모델의 최대 출력 토큰 제한입니다. |1875| `maxOutputTokens` | `int` | 이 모델의 최대 출력 토큰 제한입니다. |

1876| `canonicalModel` | `str` | 가격 조회에 사용된 정규 모델 ID입니다. 공급자별 ID 또는 별칭과 같은 원본 모델 문자열과 다를 수 있습니다. 항상 존재하지는 않습니다. |1876| `canonicalModel` | `str` | 가격 조회에 사용된 정규 모델 ID입니다. 공급자별 ID 또는 별칭과 같은 원본 모델 문자열과 다를 수 있습니다. 항상 존재하지는 않습니다. |

1877| `provider` | `str` | 이 모델을 제공한 API 공급자입니다 (예: `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` 또는 `gateway`). 항상 존재하지는 않습니다. |1877| `provider` | `str` | 이 모델을 제공한 API 공급자입니다 (예: `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` 또는 `gateway`). 항상 존재하지는 않습니다. |

1878| `costBasis` | `str` | 이 모델의 최신 요청 가격을 책정한 가격표입니다: 정가의 경우 `list`, [`modelPricing`](/docs/ko/settings-reference#modelpricing) 테이블의 경우 `managed`, 둘 다 모델 ID와 일치하지 않는 경우 `unknown`입니다. 항상 존재하지는 않으며, TypedDict에 선언되지 않으므로 `.get()`으로 읽으십시오. Claude Code v2.1.246 이상이 필요합니다. |

1878 1879 

1879<h3 id="streamevent">1880<h3 id="streamevent">

1880 `StreamEvent`1881 `StreamEvent`


2166 """Base error for Claude SDK."""2167 """Base error for Claude SDK."""

2167```2168```

2168 2169 

2169단일 `query()`가 오류 결과로 끝날 때(예: 턴 제한 오류), SDK는 최종 결과 메시지를 생성한 후 [`ResultError`](#resulterror)를 발생시킵니다. Python Agent SDK 0.2.140 이전 버전은 `ClaudeSDKError` 서브클래스가 아닌 일반 `Exception`을 발생시켰습니다.2170단일 `query()`가 오류 결과로 끝나면(예: 턴 제한 오류) SDK는 [`ResultError`](#resulterror)를 발생시킵니다.

2170 2171 

2171<h3 id="clinotfounderror">2172<h3 id="clinotfounderror">

2172 `CLINotFoundError`2173 `CLINotFoundError`


2216 `ResultError`2217 `ResultError`

2217</h3>2218</h3>

2218 2219 

2219Claude Code 프로세스가 턴 제한 오류 또는 API 오류와 같은 오류 결과로 실행이 종료되어 최종 [`ResultMessage`](#resultmessage) 후에 발생합니다. `ResultError`는 `ProcessError`의 서브클래스이므로 기존 `except ProcessError` 핸들러도 이를 포착합니다. 해당 속성은 결과 메시지의 필드를 포함하므로 메시지 텍스트를 구문 분석하지 않고도 실행이 실패한 이유에 따라 분기할 수 있습니다. Python Agent SDK 0.2.140 이상이 필요합니다.2220턴 제한 오류 또는 API 오류와 같은 오류 [결과 메시지](#resultmessage)로 실행이 끝나 Claude Code 프로세스가 종료될 때 발생합니다. `ResultError`는 `ProcessError`의 서브클래스이므로 기존 `except ProcessError` 핸들러도 이를 포착합니다. 해당 속성은 결과 메시지의 필드를 포함하므로 메시지 텍스트를 구문 분석하지 않고도 실행이 실패한 이유에 따라 분기할 수 있습니다. Python Agent SDK 0.2.140 이상이 필요합니다.

2220 2221 

2221```python theme={null}2222```python theme={null}

2222class ResultError(ProcessError):2223class ResultError(ProcessError):


2649 hookEventName: Literal["PostToolUse"]2650 hookEventName: Literal["PostToolUse"]

2650 additionalContext: NotRequired[str]2651 additionalContext: NotRequired[str]

2651 updatedToolOutput: NotRequired[Any]2652 updatedToolOutput: NotRequired[Any]

2652 updatedMCPToolOutput: NotRequired[Any] # Deprecated: use updatedToolOutput, which works for all tools2653 updatedMCPToolOutput: NotRequired[Any] # MCP tools only. Prefer updatedToolOutput, which works for all tools

2653 2654 

2654 2655 

2655class PostToolUseFailureHookSpecificOutput(TypedDict):2656class PostToolUseFailureHookSpecificOutput(TypedDict):


2767 도구 입력/출력 타입2768 도구 입력/출력 타입

2768</h2>2769</h2>

2769 2770 

2770모든 기본 Claude Code 도구의 입력/출력 스키마 문서입니다. Python SDK는 이들을 타입으로 내보내지 않지만, 메시지의 도구 입력 및 출력 구조를 나타냅니다.2771기본 제공 Claude Code 도구의 입력/출력 스키마 문서입니다. Python SDK는 이들을 타입으로 내보내지 않지만, 메시지의 도구 입력 및 출력 구조를 나타냅니다.

2771 2772 

2772각 출력은 해당 도구에 대해 [`UserMessage.tool_use_result`](#usermessage)에서 읽는 값입니다. 키 이름은 Claude Code가 내보내는 그대로 나타납니다. `| None`으로 주석이 달린 키와 "present when" 또는 "optional" 주석이 있는 키는 적용되지 않을 때 생략됩니다.2773각 출력은 해당 도구에 대해 [`UserMessage.tool_use_result`](#usermessage)에서 읽는 값입니다. 키 이름은 Claude Code가 내보내는 그대로 나타납니다. `| None`으로 주석이 달린 키와 "present when" 또는 "optional" 주석이 있는 키는 적용되지 않을 때 생략됩니다.

2773 2774 

Details

60 60 

61구조화된 출력을 사용하려면 원하는 데이터의 형태를 설명하는 [JSON Schema](https://json-schema.org/understanding-json-schema/about)를 정의한 다음, `outputFormat` 옵션(TypeScript) 또는 `output_format` 옵션(Python)을 통해 `query()`에 전달합니다. 에이전트가 완료되면 결과 메시지에 스키마와 일치하는 검증된 데이터가 포함된 `structured_output` 필드가 포함됩니다.61구조화된 출력을 사용하려면 원하는 데이터의 형태를 설명하는 [JSON Schema](https://json-schema.org/understanding-json-schema/about)를 정의한 다음, `outputFormat` 옵션(TypeScript) 또는 `output_format` 옵션(Python)을 통해 `query()`에 전달합니다. 에이전트가 완료되면 결과 메시지에 스키마와 일치하는 검증된 데이터가 포함된 `structured_output` 필드가 포함됩니다.

62 62 

63아래 예제는 에이전트에 Anthropic을 조사하고 회사명, 설립 연도 및 본사를 구조화된 출력으로 반환하도록 요청합니다.63이 페이지의 예제를 실행하기 전에 [빠른 시작](/docs/ko/agent-sdk/quickstart#setup)에 따라 Claude Agent SDK를 설치합니다. 아래 예제는 에이전트에 Anthropic을 조사하고 회사명, 설립 연도 및 본사를 구조화된 출력으로 반환하도록 요청합니다.

64 64 

65<CodeGroup>65<CodeGroup>

66 ```typescript TypeScript theme={null}66 ```typescript TypeScript theme={null}


388 오류 처리388 오류 처리

389</h2>389</h2>

390 390 

391구조화된 출력 생성은 에이전트가 스키마와 일치하는 유효한 JSON을 생성할 수 없을 때 실패할 수 있습니다. 이는 일반적으로 스키마가 작업에 너무 복잡하거나, 작업 자체가 모호하거나, 에이전트가 검증 오류를 수정하려고 시도하는 동안 재시도 제한에 도달할 때 발생합니다. 또한 검증 실패 없이도 발생할 수 있습니다: [모델 폴백](/docs/ko/model-config#automatic-model-fallback)은 이미 완료된 출력을 스트림 중간에 취소할 수 있으며, 재시도가 이를 대체하지 않으면 실행이 동일한 오류로 종료됩니다. 디버깅하기 전에 결과 메시지의 `errors` 목록을 확인하여 두 가지 원인을 구분하십시오.391구조화된 출력 생성은 에이전트가 스키마와 일치하는 유효한 JSON을 생성할 수 없을 때 실패할 수 있습니다. 이는 일반적으로 스키마가 작업에 너무 복잡하거나, 작업 자체가 모호하거나, 에이전트가 검증 오류를 수정하려고 시도하는 동안 재시도 제한에 도달할 때 발생합니다. 또한 검증 실패 없이도 발생할 수 있습니다: [모델 폴백](/docs/ko/model-config#automatic-model-fallback)은 이미 완료된 출력을 스트림 중간에 취소할 수 있으며, 재시도가 이를 대체하지 않으면 실행이 동일한 오류로 종료됩니다. 스키마를 디버깅하기 전에 오류 결과 메시지의 `errors` 목록을 확인하여 두 가지 원인을 구분하십시오.

392 392 

393오류가 발생하면 결과 메시지에 무엇이 잘못되었는지 나타내는 `subtype`이 있습니다:393오류가 발생하면 결과 메시지에 무엇이 잘못되었는지 나타내는 `subtype`이 있습니다:

394 394 

Details

186 console.error("Claim failed:", error.message);186 console.error("Claim failed:", error.message);

187});187});

188 188 

189for await (const message of claimedQuery) {189try {

190 for await (const message of claimedQuery) {

190 console.log(message);191 console.log(message);

192 }

193} catch (error) {

194 // 클레임이 거부된 후, 클레임된 쿼리는 오류 결과를 생성한 뒤 throw합니다

195 console.error(`Session ended with an error: ${error}`);

191}196}

192```197```

193 198 


717| `accountInfo()` | 계정 정보를 반환합니다 |722| `accountInfo()` | 계정 정보를 반환합니다 |

718| `reconnectMcpServer(serverName)` | 이름으로 MCP 서버를 다시 연결합니다. 이름이 `.mcp.json` 또는 `~/.claude.json`과 같은 설정 파일의 항목과도 일치하는 경우, Claude Code는 설정 파일 항목이 아니라 [`mcpServers`](#options) 또는 `setMcpServers()`를 통해 구성한 서버를 다시 연결합니다. 이 확인 순서는 Claude Code v2.1.257 이상이 필요합니다 |723| `reconnectMcpServer(serverName)` | 이름으로 MCP 서버를 다시 연결합니다. 이름이 `.mcp.json` 또는 `~/.claude.json`과 같은 설정 파일의 항목과도 일치하는 경우, Claude Code는 설정 파일 항목이 아니라 [`mcpServers`](#options) 또는 `setMcpServers()`를 통해 구성한 서버를 다시 연결합니다. 이 확인 순서는 Claude Code v2.1.257 이상이 필요합니다 |

719| `toggleMcpServer(serverName, enabled)` | `reconnectMcpServer()`와 동일한 이름 확인 방식으로, 이름으로 MCP 서버를 활성화하거나 비활성화합니다. 서버를 비활성화하면 연결이 끊기고 해당 도구가 제거됩니다. 서버 종류별로 필요한 Claude Code 버전은 [`toggleMcpServer()`](#togglemcpserver)를 참조하세요 |724| `toggleMcpServer(serverName, enabled)` | `reconnectMcpServer()`와 동일한 이름 확인 방식으로, 이름으로 MCP 서버를 활성화하거나 비활성화합니다. 서버를 비활성화하면 연결이 끊기고 해당 도구가 제거됩니다. 서버 종류별로 필요한 Claude Code 버전은 [`toggleMcpServer()`](#togglemcpserver)를 참조하세요 |

720| `setMcpServers(servers)` | 이 세션의 MCP 서버 집합을 동적으로 교체합니다. 추가 및 제거된 서버와 오류를 알려 주는 [`McpSetServersResult`](#mcpsetserversresult)로 resolve됩니다 |725| `setMcpServers(servers)` | 이 메서드가 관리하는 MCP 서버, 즉 이 메서드로 추가한 서버와 [인프로세스 SDK 서버](#createsdkmcpserver)를 교체합니다. 추가 및 제거된 서버와 오류를 명시하는 [`McpSetServersResult`](#mcpsetserversresult)로 resolve됩니다. 연결 상태가 유지되는 다른 서버는 해당 섹션에서 설명합니다 |

721| `readMcpResource(serverName, uri)` | *Alpha.* 애플리케이션이 도구의 위젯을 렌더링할 수 있도록 연결된 MCP 서버에서 MCP Apps `ui://` 리소스 하나를 읽습니다. [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse)로 resolve됩니다. TypeScript Agent SDK v0.3.280 이상이 필요합니다 |726| `readMcpResource(serverName, uri)` | *Alpha.* 애플리케이션이 도구의 위젯을 렌더링할 수 있도록 연결된 MCP 서버에서 MCP Apps `ui://` 리소스 하나를 읽습니다. [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse)로 resolve됩니다. TypeScript Agent SDK v0.3.280 이상이 필요합니다 |

722| `streamInput(stream)` | 멀티턴 대화를 위해 입력 메시지를 쿼리로 스트리밍합니다 |727| `streamInput(stream)` | 멀티턴 대화를 위해 입력 메시지를 쿼리로 스트리밍합니다 |

723| `stopTask(taskId)` | ID로 실행 중인 백그라운드 작업을 중지합니다 |728| `stopTask(taskId)` | ID로 실행 중인 백그라운드 작업을 중지합니다 |


844 849 

845`options.cwd`는 필수입니다. 클레임에서는 `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, `settings`의 플래그 설정 오버레이, `appendSystemPrompt`, `title`, `agents`, `env`의 세션별 토큰도 설정할 수 있습니다.850`options.cwd`는 필수입니다. 클레임에서는 `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, `settings`의 플래그 설정 오버레이, `appendSystemPrompt`, `title`, `agents`, `env`의 세션별 토큰도 설정할 수 있습니다.

846 851 

847Claude Code는 존재하지 않는 폴더나 프로젝트 설정에서 `env`, `agent` 또는 `model`을 설정하는 폴더 등에 대해 클레임을 거부할 수 있습니다. `claimed`가 `option_not_applied`로 시작하는 메시지와 함께 reject되면, 세션은 요청한 `model` 또는 `maxThinkingTokens` 없이 실행 중입니다. 그 외의 거부 이후에는 프롬프트가 실행되지 않았으므로, 대신 `query()`로 세션을 시작하세요.852Claude Code는 존재하지 않는 폴더나 프로젝트 설정이 `env`, `agent` 또는 `model`을 설정하는 폴더 등에 대해 claim을 거부할 수 있습니다. 거부된 후에는 `claim()`이 이미 보낸 프롬프트가 `not_claimed`로 시작하는 텍스트의 오류 결과를 받고, 반환된 쿼리는 예외를 발생시킵니다. 예외 이후에도 계속 진행하려면 쿼리의 루프를 try 블록으로 감싸세요. `claimed`가 `option_not_applied`로 시작하는 메시지와 함께 reject되면, 세션은 요청한 `model` 또는 `maxThinkingTokens` 없이 실행 중입니다. 그 외의 reject 이후에는 프롬프트가 실행되지 않았으므로 대신 `query()`로 세션을 시작하세요.

848 853 

849<h3 id="sdkcontrolinitializeresponse">854<h3 id="sdkcontrolinitializeresponse">

850 `SDKControlInitializeResponse`855 `SDKControlInitializeResponse`


1337| `mcpServer` | `{ name: string; source: string }` | `mcp__*` 도구의 경우, 해당 도구를 제공하는 MCP 서버와 그 서버 정의의 출처로, [`McpServerProvenance`](#mcpserverprovenance)의 필드를 가집니다. 다른 도구에서는 없습니다. Agent SDK v0.3.274 이상이 필요합니다 |1342| `mcpServer` | `{ name: string; source: string }` | `mcp__*` 도구의 경우, 해당 도구를 제공하는 MCP 서버와 그 서버 정의의 출처로, [`McpServerProvenance`](#mcpserverprovenance)의 필드를 가집니다. 다른 도구에서는 없습니다. Agent SDK v0.3.274 이상이 필요합니다 |

1338| `decisionReason` | `string` | 이 권한 요청이 트리거된 이유를 설명 |1343| `decisionReason` | `string` | 이 권한 요청이 트리거된 이유를 설명 |

1339| `defaultToNo` | `boolean` | `true`이면 실수로 누른 키 하나로 이 요청이 승인되어서는 안 됩니다. 프롬프트를 거부 옵션에 포커스된 상태로 열고, 승인을 미리 선택하지 말며, 한 번의 키 입력으로 승인하는 단축키를 제공하지 마세요. Agent SDK v0.3.268 이상이 필요합니다 |1344| `defaultToNo` | `boolean` | `true`이면 실수로 누른 키 하나로 이 요청이 승인되어서는 안 됩니다. 프롬프트를 거부 옵션에 포커스된 상태로 열고, 승인을 미리 선택하지 말며, 한 번의 키 입력으로 승인하는 단축키를 제공하지 마세요. Agent SDK v0.3.268 이상이 필요합니다 |

1340| `suppressAlwaysAllowRule` | `boolean` | `true`이면 이 요청에 대해 영구적인 항상 허용 선택지를 제공하지 마세요. 해당 선택지가 기록할 규칙이 요청 자체의 작업보다 더 많은 권한을 부여하기 때문입니다. Agent SDK v0.3.268 이상이 필요합니다 |1345| `suppressAlwaysAllowRule` | `boolean` | `true`이면 이 요청에 대해 영구적인 항상 허용 선택지를 제공하지 마세요. Agent SDK v0.3.268 이상이 필요합니다 |

1341| `toolUseID` | `string` | 어시스턴트 메시지 내에서 이 특정 도구 호출의 고유 식별자 |1346| `toolUseID` | `string` | 어시스턴트 메시지 내에서 이 특정 도구 호출의 고유 식별자 |

1342| `agentID` | `string` | 서브에이전트 내에서 실행 중인 경우, 서브에이전트의 ID |1347| `agentID` | `string` | 서브에이전트 내에서 실행 중인 경우, 서브에이전트의 ID |

1343| `requestId` | `string` | `control_request` 엔벨로프의 `request_id`. 서명된 HTTP POST처럼 애플리케이션이 SDK 외부에서 보내는 `control_response`는 Claude Code 프로세스가 응답을 요청과 매칭할 수 있도록 이 값을 그대로 포함해야 합니다 |1348| `requestId` | `string` | `control_request` 엔벨로프의 `request_id`. 서명된 HTTP POST처럼 애플리케이션이 SDK 외부에서 보내는 `control_response`는 Claude Code 프로세스가 응답을 요청과 매칭할 수 있도록 이 값을 그대로 포함해야 합니다 |


3786};3791};

3787```3792```

3788 3793 

3789코드 검토 결과를 구조화된 목록으로 보고하여 Claude Code가 텍스트로 인쇄하는 대신 렌더링할 수 있습니다. `level`은 검토가 실행된 노력 수준입니다. 결과는 가장 심각한 것부터 정렬되며 호출당 최대 32개이고, 배열은 생존한 것이 없을 때 비어 있습니다. Claude Code v2.1.196 이상이 필요합니다.3794코드 리뷰 결과를 구조화된 목록으로 보고하여 Claude Code가 텍스트로 인쇄하는 대신 렌더링할 수 있습니다. 결과는 가장 심각한 것부터 정렬되며 호출당 최대 32개이고, 배열은 남은 결과가 없을 때 비어 있습니다. Claude Code v2.1.196 이상이 필요합니다.

3795 

3796`level`은 선택 사항이며 Claude가 리뷰에 대해 보고하는 effort 수준을 담습니다. Claude Code는 이를 리뷰가 실행된 수준과 비교하지 않으므로 두 값이 다를 수 있습니다.

3790 3797 

3791각 결과는 다음 필드를 전달합니다:3798각 결과는 다음 필드를 전달합니다:

3792 3799 


4836};4843};

4837```4844```

4838 4845 

4839보고된 결과의 수, 검토가 실행된 노력 수준, 결과 본문에 대해 에코백된 결과를 반환합니다. Claude Code v2.1.196 이상이 필요합니다. 에코백된 `short_summary` 필드는 Claude Code v2.1.212 이상이 필요합니다.4846보고된 결과의 수, Claude가 전달한 `level` 값, 결과 본문을 위해 에코백된 결과를 반환합니다. Claude Code v2.1.196 이상이 필요합니다. 에코백된 `short_summary` 필드는 Claude Code v2.1.212 이상이 필요합니다.

4840 4847 

4841<h3 id="artifact-2">4848<h3 id="artifact-2">

4842 Artifact4849 Artifact


5457 | { type: "disabled" }; // 확장 사고 없음5464 | { type: "disabled" }; // 확장 사고 없음

5458```5465```

5459 5466 

5460선택적 `display` 필드는 사고 텍스트가 `"summarized"` 또는 `"omitted"`로 반환되는지 제어합니다. Claude Opus 4.7 이상에서 API 기본값은 `"omitted"`이므로, `thinking` 블록에서 사고 콘텐츠를 받으려면 `"summarized"`를 설정하세요. Claude Code는 Amazon Bedrock 또는 Google Cloud의 Agent Platform에 `display`를 전송하지 않으므로, 이러한 제공자에서 Opus 4.7 이상은 `display`를 `"summarized"`로 설정한 경우에도 빈 `thinking` 블록을 반환합니다.5467선택적 `display` 필드는 사고 텍스트가 `"summarized"` 또는 `"omitted"`로 반환되는지 제어합니다. Claude Opus 4.7 이상에서 API 기본값은 `"omitted"`이므로, `thinking` 블록에서 사고 콘텐츠를 받으려면 `"summarized"`를 설정하세요. Claude Code는 Amazon Bedrock 및 Google Cloud의 Agent Platform 같은 일부 제공자에 대한 요청에서 `display`를 생략합니다. 이러한 제공자에서 Opus 4.7 이상은 `display`를 `"summarized"`로 설정한 경우에도 빈 `thinking` 블록을 반환합니다.

5461 5468 

5462<h3 id="spawnedprocess">5469<h3 id="spawnedprocess">

5463 `SpawnedProcess`5470 `SpawnedProcess`


5528 5535 

5529`setMcpServers()`를 호출할 때, Claude Code는 다음 규칙을 적용합니다:5536`setMcpServers()`를 호출할 때, Claude Code는 다음 규칙을 적용합니다:

5530 5537 

5531* **호출이 이름을 지정하지 않는 서버**: Claude Code는 플러그인 제공 서버를 계속 실행합니다. Agent SDK v0.3.210 이상이 필요합니다.5538* **호출이 이름을 지정하지 않는 서버**: [클라우드 세션](/docs/ko/claude-code-on-the-web) 외부에서 Claude Code는 이전 `setMcpServers()` 호출이 추가한 서버와 인프로세스 SDK 서버의 연결을 끊고 이를 `removed`에 나열합니다. 다른 서버는 계속 실행되며 `removed`에 나열되지 않습니다. 여기에는 [`mcpServers`](#options) 옵션의 stdio, HTTP 및 SSE 서버, 설정 파일의 서버, 플러그인 제공 서버가 포함됩니다.

5532* **호출이 이름을 지정하는 서버**: CLI가 시작 시 시작한 기본 제공 서버를 제외하고, Claude Code는 구성이 전달한 것과 다를 때만 실행 중인 서버를 교체합니다.5539* **호출이 이름을 지정하는 서버**: Claude Code는 이전 `setMcpServers()` 호출이 추가한 stdio, HTTP 또는 SSE 서버를 해당 구성이 전달한 것과 다를 때만 교체합니다. 해당 이름으로 이미 등록된 인프로세스 SDK 서버는 그대로 유지되므로, 이를 교체하려면 한 호출에서 제외한 다음 호출에서 추가하세요.

5533* **CLI가 시작 시 시작한 기본 제공 서버**: 호출이 하나를 이름으로 지정하면, Claude Code는 해당 항목을 삭제하고 `errors`에서 보고합니다.5540* **CLI가 시작 시 시작한 기본 제공 서버**: 호출이 하나를 이름으로 지정하면, Claude Code는 해당 항목을 삭제하고 `errors`에서 보고합니다.

5534 5541 

5535프로미스는 새로 추가된 stdio, HTTP 및 SSE 서버가 연결되거나 실패한 후 해결되므로, 연결된 서버의 도구는 다음 턴에서 사용 가능합니다.5542프로미스는 새로 추가된 stdio, HTTP 및 SSE 서버가 연결되거나 실패한 후 해결되므로, 연결된 서버의 도구는 다음 턴에서 사용 가능합니다.

agent-view.md +1 −0

Details

819| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | 푸시되지 않은 커밋으로 인해 삭제가 거부된 세션을 삭제하고, worktree와 해당 브랜치 및 커밋을 함께 삭제합니다. 거부 시 출력된 정확한 값을 전달합니다. [세션 삭제 시 제거되는 항목](#what-deleting-a-session-removes) 참조. v2.1.260 이상 필요 |819| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | 푸시되지 않은 커밋으로 인해 삭제가 거부된 세션을 삭제하고, worktree와 해당 브랜치 및 커밋을 함께 삭제합니다. 거부 시 출력된 정확한 값을 전달합니다. [세션 삭제 시 제거되는 항목](#what-deleting-a-session-removes) 참조. v2.1.260 이상 필요 |

820| `claude rm <id> --force-remove-worktree <worktree-id>` | git 또는 `WorktreeRemove` 훅이 worktree를 제거할 수 없어 삭제가 거부된 세션을 삭제하고, worktree 디렉터리를 어쨌든 삭제하며 해당 브랜치는 저장소에 남겨둡니다. 거부 시 출력된 정확한 값을 전달합니다. [세션 삭제 시 제거되는 항목](#what-deleting-a-session-removes) 참조. v2.1.268 이상 필요 |820| `claude rm <id> --force-remove-worktree <worktree-id>` | git 또는 `WorktreeRemove` 훅이 worktree를 제거할 수 없어 삭제가 거부된 세션을 삭제하고, worktree 디렉터리를 어쨌든 삭제하며 해당 브랜치는 저장소에 남겨둡니다. 거부 시 출력된 정확한 값을 전달합니다. [세션 삭제 시 제거되는 항목](#what-deleting-a-session-removes) 참조. v2.1.268 이상 필요 |

821| `claude daemon status` | [감독자](#the-supervisor-process)의 상태, 버전, 소켓 디렉터리 및 워커 수 인쇄 |821| `claude daemon status` | [감독자](#the-supervisor-process)의 상태, 버전, 소켓 디렉터리 및 워커 수 인쇄 |

822| `claude daemon logs` | 감독자의 로그 파일 [`~/.claude/daemon.log`](#where-state-is-stored)를 팔로우하며, `Ctrl+C`를 누를 때까지 새 줄이 도착하는 대로 인쇄 |

822| `claude daemon stop --any` | 감독자 프로세스와 이를 호스팅하는 백그라운드 세션을 중지합니다. `--keep-workers`를 전달하여 백그라운드 세션을 실행 상태로 유지하면 다음 감독자가 이들에 다시 연결됩니다. 다음 `claude agents` 또는 `claude --bg`는 새로운 감독자를 시작합니다 |823| `claude daemon stop --any` | 감독자 프로세스와 이를 호스팅하는 백그라운드 세션을 중지합니다. `--keep-workers`를 전달하여 백그라운드 세션을 실행 상태로 유지하면 다음 감독자가 이들에 다시 연결됩니다. 다음 `claude agents` 또는 `claude --bg`는 새로운 감독자를 시작합니다 |

823 824 

824`claude attach`와 `claude logs`는 ID 대신 실행 중인 세션 이름의 일부를 받을 수 있습니다(예: `claude logs "auth refactor"`). 이름을 전달하려면 Claude Code v2.1.290 이상이 필요합니다.825`claude attach`와 `claude logs`는 ID 대신 실행 중인 세션 이름의 일부를 받을 수 있습니다(예: `claude logs "auth refactor"`). 이름을 전달하려면 Claude Code v2.1.290 이상이 필요합니다.

agents.md +1 −1

Details

20 20 

21이 작업을 지원하지만 에이전트를 실행하는 방식이 아닌 세 가지 추가 도구가 있습니다:21이 작업을 지원하지만 에이전트를 실행하는 방식이 아닌 세 가지 추가 도구가 있습니다:

22 22 

23* [Worktrees](/docs/ko/worktrees)는 각 세션에 별도의 git 체크아웃을 제공하므로 병렬 세션이 동일한 파일을 편집하지 않습니다. 직접 실행하는 세션에 사용하세요. 에이전트 뷰에서 디스패치된 세션은 [파일을 편집하기 전에 자신의 worktree로 이동](/docs/ko/agent-view#how-file-edits-are-isolated)하고, 생성하는 서브에이전트도 각각 하나씩 얻을 수 있습니다.23* [Worktrees](/docs/ko/worktrees)는 각 세션에 별도의 git 체크아웃을 제공하므로 병렬 세션이 각자 자신의 파일 사본을 편집합니다. 직접 실행하는 세션에 사용하세요. 에이전트 뷰에서 디스패치된 세션은 [파일을 편집하기 전에 자신의 worktree로 이동](/docs/ko/agent-view#how-file-edits-are-isolated)하고, 생성하는 서브에이전트도 각각 하나씩 얻을 수 있습니다.

24* [크로스 세션 메시징](/docs/ko/cross-session-messaging)을 통해 Claude는 이 머신의 다른 Claude Code 세션, 다른 머신의 세션, 또는 [웹의 Claude Code](/docs/ko/claude-code-on-the-web)의 세션을 나열하고 메시지를 보낼 수 있으므로, 직접 실행하는 세션들이 결과와 상태를 서로 전달할 수 있습니다.24* [크로스 세션 메시징](/docs/ko/cross-session-messaging)을 통해 Claude는 이 머신의 다른 Claude Code 세션, 다른 머신의 세션, 또는 [웹의 Claude Code](/docs/ko/claude-code-on-the-web)의 세션을 나열하고 메시지를 보낼 수 있으므로, 직접 실행하는 세션들이 결과와 상태를 서로 전달할 수 있습니다.

25* [`/batch`](/docs/ko/commands)는 Claude가 하나의 큰 변경을 5\~30개의 worktree 격리 서브에이전트로 분할하는 [스킬](/docs/ko/skills)입니다. 이는 서브에이전트와 worktree의 패키지된 사용이지, 별도의 조율 스타일이 아닙니다.25* [`/batch`](/docs/ko/commands)는 Claude가 하나의 큰 변경을 5\~30개의 worktree 격리 서브에이전트로 분할하는 [스킬](/docs/ko/skills)입니다. 이는 서브에이전트와 worktree의 패키지된 사용이지, 별도의 조율 스타일이 아닙니다.

26 26 

Details

682 682 

683Amazon Bedrock은 `InvokeModelWithResponseStream` 응답을 `Content-Type: application/vnd.amazon.eventstream` 헤더가 있는 바이너리 이벤트 스트림 형식으로 스트리밍합니다. Claude Code와 Amazon Bedrock 사이의 게이트웨이 또는 프록시는 응답 본문과 `Content-Type`을 포함한 헤더를 Amazon Bedrock이 보낸 그대로 전달해야 합니다.683Amazon Bedrock은 `InvokeModelWithResponseStream` 응답을 `Content-Type: application/vnd.amazon.eventstream` 헤더가 있는 바이너리 이벤트 스트림 형식으로 스트리밍합니다. Claude Code와 Amazon Bedrock 사이의 게이트웨이 또는 프록시는 응답 본문과 `Content-Type`을 포함한 헤더를 Amazon Bedrock이 보낸 그대로 전달해야 합니다.

684 684 

685게이트웨이가 `Content-Type`을 다른 값으로 다시 쓰면 Claude Code는 `Bedrock streaming response has content-type`으로 시작하는 오류로 응답을 거부하며, 수신한 값을 이름으로 지정합니다. 일반적인 다시 쓰기는 스트림을 서버 전송 이벤트로 다시 내보내는 통합에서 `text/event-stream`입니다.685게이트웨이가 `Content-Type`을 다른 값으로 다시 쓰면 Claude Code는 `Bedrock streaming response has content-type`으로 시작하는 오류로 응답을 거부하며, 수신한 값을 이름으로 지정합니다. 일반적인 다시 쓰기는 스트림을 서버 전송 이벤트로 다시 내보내는 통합에서 `text/event-stream`입니다. 오류 메시지에 언급된 `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` 변수에 대해서는 [Bedrock streaming response has an unexpected content-type](/docs/ko/errors#bedrock-streaming-response-has-an-unexpected-content-type)을 참조하십시오.

686 686 

687게이트웨이가 헤더를 삭제하거나 비우면 Claude Code는 본문이 Amazon Bedrock의 이벤트 스트림이라고 가정하고 디코딩하므로 게이트웨이가 수정되지 않은 상태로 전달한 본문은 계속 스트리밍됩니다.687게이트웨이가 헤더를 삭제하거나 비우면 Claude Code는 본문이 Amazon Bedrock의 이벤트 스트림이라고 가정하고 디코딩하므로 게이트웨이가 수정되지 않은 상태로 전달한 본문은 계속 스트리밍됩니다.

688 688 

Details

12 Claude Code에 로그인12 Claude Code에 로그인

13</h2>13</h2>

14 14 

15[Claude Code를 설치](/docs/ko/setup#install-claude-code)한 후 터미널에서 `claude`를 실행합니다. 처음 실행할 때 Claude Code는 로그인할 수 있도록 브라우저 창을 엽니다. `ANTHROPIC_API_KEY` 환경 변수를 설정한 경우 Claude Code는 로그인 프롬프트를 건너뛰고 대신 키를 승인하도록 요청합니다.15[Claude Code를 설치](/docs/ko/setup#install-claude-code)한 후 터미널에서 `claude`를 실행합니다. 처음 실행할 때 Claude Code는 로그인할 수 있도록 브라우저 창을 엽니다. `ANTHROPIC_API_KEY` 환경 변수를 설정했고 Claude Code가 해당 키를 사용할지 물을 때 키를 승인하면 Claude Code는 로그인 프롬프트를 건너뜁니다.

16 16 

17브라우저가 자동으로 열리지 않으면 `c`를 눌러 로그인 URL을 클립보드에 복사한 후 브라우저에 붙여넣습니다.17브라우저가 자동으로 열리지 않으면 `c`를 눌러 로그인 URL을 클립보드에 복사한 후 브라우저에 붙여넣습니다.

18 18 

Details

351}351}

352```352```

353 353 

354사용자 정의 `allow`, `soft_deny` 및 `hard_deny` 규칙에 대한 AI 피드백을 받습니다:354사용자 정의 `allow`, `soft_deny`, `hard_deny` 및 `environment` 항목에 대한 AI 피드백을 받습니다:

355 355 

356```bash theme={null}356```bash theme={null}

357claude auto-mode critique357claude auto-mode critique

chrome.md +1 −1

Details

343 343 

344| 오류 | 원인 | 해결 방법 |344| 오류 | 원인 | 해결 방법 |

345| - | - | - |345| - | - | - |

346| "브라우저 확장 프로그램이 연결되지 않음" | 네이티브 메시징 호스트가 확장 프로그램에 도달할 수 없거나, 조직의 IP 허용 목록이 `bridge.claudeusercontent.com`에 대한 연결을 거부함 | Chrome과 Claude Code를 다시 시작한 후 `/chrome`을 실행하여 다시 연결합니다. 조직에서 IP 허용 목록을 사용하고 오류가 지속되면 [조직 IP 허용 목록 및 프록시 egress](/docs/ko/network-config#organization-ip-allowlists-and-proxy-egress)를 참조합니다. |346| "브라우저 확장 프로그램이 연결되지 않음" | 네이티브 메시징 호스트가 확장 프로그램에 도달할 수 없거나, 조직의 IP 허용 목록이 `bridge.claudeusercontent.com`에 대한 연결을 거부함 | 확장 프로그램이 Claude Code와 동일한 claude.ai 계정으로 로그인되어 있는지 확인하고, Chrome과 Claude Code를 다시 시작한 후 `/chrome`을 실행하여 다시 연결합니다. 조직에서 IP 허용 목록을 사용하고 오류가 지속되면 [조직 IP 허용 목록 및 프록시 egress](/docs/ko/network-config#organization-ip-allowlists-and-proxy-egress)를 참조합니다. |

347| `/chrome`에서 확장 프로그램이 "감지되지 않음"으로 표시됨 | Chrome 확장 프로그램이 설치되지 않았거나 비활성화됨 | `chrome://extensions`에서 확장 프로그램을 설치하거나 활성화합니다. |347| `/chrome`에서 확장 프로그램이 "감지되지 않음"으로 표시됨 | Chrome 확장 프로그램이 설치되지 않았거나 비활성화됨 | `chrome://extensions`에서 확장 프로그램을 설치하거나 활성화합니다. |

348| "사용 가능한 탭 없음" | Claude가 탭이 준비되기 전에 작동하려고 시도함 | Claude에게 새 탭을 만들고 다시 시도하도록 요청합니다. |348| "사용 가능한 탭 없음" | Claude가 탭이 준비되기 전에 작동하려고 시도함 | Claude에게 새 탭을 만들고 다시 시도하도록 요청합니다. |

349| "수신 끝이 존재하지 않음" | 확장 프로그램 서비스 워커가 유휴 상태가 됨 | `/chrome`을 실행하고 "확장 프로그램 다시 연결"을 선택합니다. |349| "수신 끝이 존재하지 않음" | 확장 프로그램 서비스 워커가 유휴 상태가 됨 | `/chrome`을 실행하고 "확장 프로그램 다시 연결"을 선택합니다. |

Details

75| - | - |75| - | - |

76| Claude Code v2.1.195 이상 | `claude gateway` 서브명령 및 게이트웨이 로그인 흐름은 v2.1.195에서 제공됩니다. 이전 공개 빌드는 이를 포함하지 않습니다. 게이트웨이 서버를 실행하는 머신과 각 개발자의 머신 모두 v2.1.195 이상이어야 합니다; `claude update`를 실행하여 최신 릴리스를 받으세요. [Claude Platform on AWS 업스트림](/docs/ko/claude-apps-gateway-config#claude-platform-on-aws)은 게이트웨이 서버에서 Claude Code v2.1.198 이상이 필요합니다. |76| Claude Code v2.1.195 이상 | `claude gateway` 서브명령 및 게이트웨이 로그인 흐름은 v2.1.195에서 제공됩니다. 이전 공개 빌드는 이를 포함하지 않습니다. 게이트웨이 서버를 실행하는 머신과 각 개발자의 머신 모두 v2.1.195 이상이어야 합니다; `claude update`를 실행하여 최신 릴리스를 받으세요. [Claude Platform on AWS 업스트림](/docs/ko/claude-apps-gateway-config#claude-platform-on-aws)은 게이트웨이 서버에서 Claude Code v2.1.198 이상이 필요합니다. |

77| OpenID Connect (OIDC) ID 제공자 | Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex 또는 PingFederate와 같은 다른 OIDC 호환 IdP. 게이트웨이는 표준 OIDC 검색 및 인증 코드 흐름을 이에 대해 실행합니다. SAML 및 LDAP는 지원되지 않습니다. |77| OpenID Connect (OIDC) ID 제공자 | Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex 또는 PingFederate와 같은 다른 OIDC 호환 IdP. 게이트웨이는 표준 OIDC 검색 및 인증 코드 흐름을 이에 대해 실행합니다. SAML 및 LDAP는 지원되지 않습니다. |

78| PostgreSQL 14 이상 | 브라우저 콜백이 쓰고 폴링 CLI가 읽는 장치 로그인 흐름, 그리고 속도 제한 카운터를 지원합니다. 가장 작은 계층을 포함한 모든 관리 Postgres가 작동합니다. 지출 제한이 구성되지 않으면 게이트웨이는 몇 KB의 단기 인증 상태를 저장합니다; [지출 제한](/docs/ko/claude-apps-gateway-spend-limits)을 사용하면 백업해야 하는 지속적인 지출, 감사 및 ID 테이블도 보유합니다. `?sslmode=require`를 통한 TLS가 권장됩니다. |78| PostgreSQL 11 이상 | 장치 로그인 흐름과 속도 제한 카운터를 지원합니다. 가장 작은 계층을 포함한 관리형 PostgreSQL 서비스가 작동합니다; [지원되는 데이터베이스](/docs/ko/claude-apps-gateway-deploy#postgres)를 참조하세요. [지출 제한](/docs/ko/claude-apps-gateway-spend-limits)을 사용하면 백업해야 하는 지속적인 지출, 감사 및 ID 테이블도 보유합니다. `?sslmode=require`를 통한 TLS가 권장됩니다. PostgreSQL 11, 12, 13은 게이트웨이 서버에서 Claude Code v2.1.290 이상이 필요합니다. PostgreSQL 프로젝트는 더 이상 해당 버전을 유지 관리하지 않으므로 가능하면 더 새로운 버전을 사용하세요. |

79| 모델 업스트림 | Amazon Bedrock 자격증명, Claude Platform on AWS 자격증명, Google Cloud 자격증명, Microsoft Foundry 리소스 또는 Anthropic API 키. 장애 조치를 사용한 여러 업스트림이 지원됩니다. |79| 모델 업스트림 | Amazon Bedrock 자격 증명, Claude Platform on AWS 자격 증명, Google Cloud 자격 증명, Microsoft Foundry 리소스 또는 Anthropic API 키. 장애 조치를 사용한 여러 업스트림이 지원됩니다. |

80| HTTPS | 게이트웨이는 개발자 노트북과 로그인에 사용되는 모든 브라우저에서 `https://`를 통해 도달 가능해야 합니다; 게이트웨이는 동일한 리스너에서 장치 확인 페이지를 제공합니다. `listen.tls`를 통해 TLS 인증서를 제공하거나, TLS 종료 수신 대기 뒤에서 실행하고, 두 경우 모두 `listen.public_url`을 외부 원본으로 설정하세요. 일반 `http://` 원본은 게이트웨이 호스트가 루프백인 경우에만 허용됩니다: `localhost`, `127.0.0.1` 또는 `::1`. |80| HTTPS | 게이트웨이는 개발자 노트북과 로그인에 사용되는 모든 브라우저에서 `https://`를 통해 도달 가능해야 합니다; 게이트웨이는 동일한 리스너에서 장치 확인 페이지를 제공합니다. `listen.tls`를 통해 TLS 인증서를 제공하거나, TLS 종료 수신 대기 뒤에서 실행하고, 두 경우 모두 `listen.public_url`을 외부 원본으로 설정하세요. `/login`에서 Claude Code는 게이트웨이 호스트가 루프백인 경우에만 일반 `http://` 원본을 허용합니다: `localhost`, `127.0.0.1` 또는 `::1`. |

81| 개인 네트워크 주소 | `/login`에서 Claude Code는 게이트웨이의 호스트명 또는 IP 주소가 개인 주소로만 확인되도록 요구합니다: RFC 1918, 링크 로컬, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7` 또는 루프백. 호스팅하는 게이트웨이의 경우 선언한 블록 외의 모든 공개 주소는 거부됩니다; 배포 가이드의 [위협 모델](/docs/ko/claude-apps-gateway-deploy#threat-model-summary)을 참조하세요. 개발자 머신이 HTTPS를 회사 프록시를 통해 라우팅하는 경우, 로그인은 프록시 호스트도 개인 주소로 확인되도록 요구합니다; 그렇지 않으면 게이트웨이 호스트를 `NO_PROXY`에 추가하여 CLI가 직접 연결하도록 하세요. 내부 네트워크가 조직이 소유한 공개 IPv4 공간에서 번호가 지정된 경우 [해당 블록을 선언](#allow-a-gateway-on-public-address-space-you-own)하여 `/login`이 거기서 게이트웨이를 수락하도록 하세요. |81| 개인 네트워크 주소 | `/login`에서 Claude Code는 게이트웨이의 호스트명 또는 IP 주소가 개인 주소로만 확인되도록 요구합니다: RFC 1918, 링크 로컬, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7` 또는 루프백. 호스팅하는 게이트웨이의 경우 선언한 블록 외의 모든 공개 주소는 거부됩니다; 배포 가이드의 [위협 모델](/docs/ko/claude-apps-gateway-deploy#threat-model-summary)을 참조하세요. 개발자 머신이 HTTPS를 회사 프록시를 통해 라우팅하는 경우, 로그인은 프록시 호스트도 개인 주소로 확인되도록 요구합니다; 그렇지 않으면 게이트웨이 호스트를 `NO_PROXY`에 추가하여 CLI가 직접 연결하도록 하세요. 내부 네트워크가 조직이 소유한 공개 IPv4 공간에서 번호가 지정된 경우 [해당 블록을 선언](#allow-a-gateway-on-public-address-space-you-own)하여 `/login`이 거기서 게이트웨이를 수락하도록 하세요. |

82| Linux 런타임 | 게이트웨이 서버는 네이티브 Linux 바이너리에서만 실행됩니다. macOS는 로컬 개발에 작동합니다. Windows는 서버 플랫폼으로 지원되지 않습니다. |82| Linux 런타임 | 게이트웨이 서버는 네이티브 Linux 바이너리에서만 실행됩니다. macOS는 로컬 개발에 작동합니다. Windows는 서버 플랫폼으로 지원되지 않습니다. |

83 83 


91 </Step>91 </Step>

92 92 

93 <Step title="PostgreSQL 데이터베이스 프로비저닝">93 <Step title="PostgreSQL 데이터베이스 프로비저닝">

94 가장 작은 관리 계층을 포함한 모든 Postgres 14 이상이 작동합니다. 게이트웨이는 부팅 시 자체 스키마 마이그레이션을 실행하므로 데이터베이스 역할은 테이블을 생성하고 변경할 권한이 필요합니다; [`store`](/docs/ko/claude-apps-gateway-config#store)를 참조하세요.94 PostgreSQL 11 이상을 사용하세요. 가장 작은 관리형 계층으로 충분합니다. 게이트웨이는 부팅 시 자체 스키마 마이그레이션을 실행하므로 데이터베이스 역할은 테이블을 생성하고 변경할 권한이 필요합니다; [`store`](/docs/ko/claude-apps-gateway-config#store)를 참조하세요.

95 </Step>95 </Step>

96 96 

97 <Step title="gateway.yaml 작성">97 <Step title="gateway.yaml 작성">


117 ttl_hours: 1 # IdP 프로비저닝 해제 시 취소 지연도 제한117 ttl_hours: 1 # IdP 프로비저닝 해제 시 취소 지연도 제한

118 118 

119 store:119 store:

120 postgres_url: ${GATEWAY_POSTGRES_URL} # 관리 Postgres의 경우 ?sslmode=require 추가120 postgres_url: ${GATEWAY_POSTGRES_URL} # 관리형 Postgres의 경우 ?sslmode=require 추가

121 121 

122 upstreams:122 upstreams:

123 - provider: bedrock123 - provider: bedrock

124 region: us-east-1124 region: us-east-1

125 auth: {} # 비어있음: AWS 기본 자격증명 체인125 auth: {} # 비어있음: AWS 기본 자격 증명 체인

126 # (IRSA, EC2/ECS 작업 역할, 환경 변수, ~/.aws)126 # (IRSA, EC2/ECS 작업 역할, 환경 변수, ~/.aws)

127 127 

128 # 모델은 업스트림별로 자동으로 변환됩니다. 기본 제공 카탈로그128 # 모델은 업스트림별로 자동으로 변환됩니다. 기본 제공 카탈로그


132 auto_include_builtin_models: true132 auto_include_builtin_models: true

133 ```133 ```

134 134 

135 이 구성은 기본 Bedrock 모델 카탈로그로 작동하는 로그인 루프에 충분합니다. 실행되면 [`managed.policies`](/docs/ko/claude-apps-gateway-config#managed)를 통해 그룹별 RBAC 및 관리 설정을 추가하고, [`telemetry`](/docs/ko/claude-apps-gateway-config#telemetry)를 통해 텔레메트리 팬아웃을 추가하고, [`models`](/docs/ko/claude-apps-gateway-config#models)를 통해 다중 업스트림 장애 조치, 프로비저닝된 처리량 ARN 또는 미국 이외 지역을 추가하세요.135 이 구성은 기본 Amazon Bedrock 모델 카탈로그로 작동하는 로그인 루프에 충분합니다. 실행되면 [`managed.policies`](/docs/ko/claude-apps-gateway-config#managed)를 통해 그룹별 RBAC 및 관리형 설정을 추가하고, [`telemetry`](/docs/ko/claude-apps-gateway-config#telemetry)를 통해 텔레메트리 팬아웃을 추가하고, [`models`](/docs/ko/claude-apps-gateway-config#models)를 통해 다중 업스트림 장애 조치, 프로비저닝된 처리량 ARN 또는 미국 이외 지역을 추가하세요.

136 136 

137 <Note>137 <Note>

138 Amazon Bedrock 업스트림은 `bedrock:InvokeModel` 및 `bedrock:InvokeModelWithResponseStream`을 `inference-profile/us.anthropic.*` ARN과 기본 `foundation-model/anthropic.*` ARN 모두에 가진 AWS 주체가 필요합니다. 또한 Bedrock 콘솔의 모델 카탈로그에서 계정에 대해 제출된 Anthropic의 일회성 사용 사례 양식이 필요합니다.138 Amazon Bedrock 업스트림은 `bedrock:InvokeModel` 및 `bedrock:InvokeModelWithResponseStream`을 `inference-profile/us.anthropic.*` ARN과 기본 `foundation-model/anthropic.*` ARN 모두에 가진 AWS 주체가 필요합니다. 또한 Bedrock 콘솔의 모델 카탈로그에서 계정에 대해 제출된 Anthropic의 일회성 사용 사례 양식이 필요합니다.

139 139 

140 정적 키보다는 EKS의 IRSA, ECS 작업 역할 또는 EC2 인스턴스 프로필을 사용하여 자격증명을 제공하세요. [`upstreams` 참조](/docs/ko/claude-apps-gateway-config#upstreams)는 전체 IAM 세부사항, 클라우드 간 자격증명 매트릭스, 다른 제공자의 `auth` 블록을 가집니다.140 정적 키보다는 EKS의 IRSA, ECS 작업 역할 또는 EC2 인스턴스 프로필을 사용하여 자격 증명을 제공하세요. [`upstreams` 참조](/docs/ko/claude-apps-gateway-config#upstreams)는 전체 IAM 세부사항, 클라우드 간 자격 증명 매트릭스, 다른 제공자의 `auth` 블록을 가집니다.

141 </Note>141 </Note>

142 </Step>142 </Step>

143 143 


154 OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET}154 OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET}

155 GATEWAY_JWT_SECRET: ${GATEWAY_JWT_SECRET}155 GATEWAY_JWT_SECRET: ${GATEWAY_JWT_SECRET}

156 GATEWAY_POSTGRES_URL: postgres://gw:pw@postgres/gateway156 GATEWAY_POSTGRES_URL: postgres://gw:pw@postgres/gateway

157 # AWS 자격증명: 프로덕션에서는 이를 생략하고 인스턴스157 # AWS 자격 증명: 프로덕션에서는 이를 생략하고 인스턴스

158 # 역할을 사용하세요. 로컬 Compose 테스트의 경우 자신의 것을 전달하세요:158 # 역할을 사용하세요. 로컬 Compose 테스트의 경우 자신의 것을 전달하세요:

159 AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}159 AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}

160 AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}160 AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}


172 volumes: { pgdata: }172 volumes: { pgdata: }

173 ```173 ```

174 174 

175 게이트웨이는 구성을 읽고, Postgres에 연결하고 스키마 마이그레이션을 적용하고, IdP에 대해 OIDC 검색을 실행하고, 업스트림 클라이언트를 빌드하고, 수신 대기를 시작하는 단일 Linux 바이너리입니다. 부팅은 구성, Postgres 연결, OIDC 검색 및 업스트림 클라이언트 구성에 대해 실패 폐쇄됩니다. 이 중 하나가 도달 불가능하거나 잘못 구성된 경우, 게이트웨이는 저하된 상태에서 트래픽을 제공하는 대신 오류로 종료됩니다.175 게이트웨이는 구성을 읽고, Postgres에 연결하고 스키마 마이그레이션을 적용하고, IdP에 대해 OIDC 검색을 실행하고, 업스트림 클라이언트를 빌드하고, 수신 대기를 시작하는 단일 Linux 바이너리입니다.

176 176 

177 성공적인 부팅은 Amazon Bedrock 및 Google Cloud의 Agent Platform 인스턴스 자격증명이 부팅 시가 아닌 첫 요청에서 확인되기 때문에 추론 경로를 검증하지 않습니다.177 부팅은 구성, Postgres 연결, OIDC 검색 및 업스트림 클라이언트 구성에 대해 실패 폐쇄됩니다. 이 중 하나가 도달 불가능하거나 잘못 구성된 경우, 게이트웨이는 저하된 상태에서 트래픽을 제공하는 대신 오류로 종료됩니다.

178 

179 성공적인 부팅은 Amazon Bedrock 및 Google Cloud의 Agent Platform 인스턴스 자격 증명이 부팅 시가 아닌 첫 요청에서 확인되기 때문에 추론 경로를 검증하지 않습니다.

178 180 

179 부팅 시퀀스에 대해 stderr를 감시하세요. 로그 라인은 `[gateway] <timestamp> <level> <message>` 형식을 사용하고, 감사 이벤트는 `evt` 필드가 있는 단일 라인 JSON이며, 시작 배너(아래 생략됨)는 마이그레이션과 수신 대기 라인 사이에 인쇄됩니다. 신규 데이터베이스는 스키마 마이그레이션당 하나의 `migration N applied` 라인을 인쇄합니다; 이미 마이그레이션된 데이터베이스는 없습니다. 순서대로 다음을 볼 수 있습니다:181 부팅 시퀀스에 대해 stderr를 감시하세요. 로그 라인은 `[gateway] <timestamp> <level> <message>` 형식을 사용하고, 감사 이벤트는 `evt` 필드가 있는 단일 라인 JSON이며, 시작 배너(아래 생략됨)는 마이그레이션과 수신 대기 라인 사이에 인쇄됩니다. 신규 데이터베이스는 스키마 마이그레이션당 하나의 `migration N applied` 라인을 인쇄합니다; 이미 마이그레이션된 데이터베이스는 없습니다. 순서대로 다음을 볼 수 있습니다:

180 182 


187 [gateway] 2026-06-10T17:03:21.512Z info claude gateway listening on http://0.0.0.0:8080189 [gateway] 2026-06-10T17:03:21.512Z info claude gateway listening on http://0.0.0.0:8080

188 ```190 ```

189 191 

190 게이트웨이는 또한 `access_control.allow_cidrs`가 비어있다는 경고를 기록합니다. 게이트웨이가 제공하는 클라이언트 주소를 제한하는 것이 없기 때문에 여기서는 예상됩니다. [`access_control` 참조](/docs/ko/claude-apps-gateway-config#http-tuning)는 권장 범위를 가집니다.192 게이트웨이는 또한 `access_control.allow_cidrs`가 비어있다는 경고를 기록합니다. 허용 목록을 설정하기 전까지는 게이트웨이가 제공하는 클라이언트 주소를 제한하는 것이 없기 때문에 여기서는 예상된 동작입니다. [`access_control` 참조](/docs/ko/claude-apps-gateway-config#http-tuning)는 권장 범위를 가집니다.

191 193 

192 부팅이 `claude gateway listening on` 라인 전에 종료되면, stderr의 마지막 라인이 문제를 이름 지정합니다:194 부팅이 `claude gateway listening on` 라인 전에 종료되면, stderr의 마지막 라인이 문제를 이름 지정합니다:

193 195 


253 </Step>255 </Step>

254 256 

255 <Step title="개발자 로그인">257 <Step title="개발자 로그인">

256 이 마지막 단계는 서버가 아닌 개발자 머신에서 발생합니다. 해당 머신의 [관리 설정 파일](/docs/ko/managed-settings#delivery-mechanisms)에서 `forceLoginMethod`를 `"gateway"`로 설정하고 `forceLoginGatewayUrl`을 게이트웨이의 `public_url`로 설정한 다음 `/login`을 실행하고, **Cloud gateway** 화면에서 Enter를 누르고, 브라우저 로그인을 완료하세요. [게이트웨이 URL 설정](#set-the-gateway-url) 아래는 두 키를 모든 개발자 머신에 배포하는 것을 다룹니다.258 이 마지막 단계는 서버가 아닌 개발자 머신에서 발생합니다. 해당 머신의 [관리형 설정 파일](/docs/ko/managed-settings#delivery-mechanisms)에서 `forceLoginMethod`를 `"gateway"`로 설정하고 `forceLoginGatewayUrl`을 게이트웨이의 `public_url`로 설정한 다음 `/login`을 실행하고, **Cloud gateway** 화면에서 Enter를 누르고, 브라우저 로그인을 완료하세요. [게이트웨이 URL 설정](#set-the-gateway-url) 아래는 두 키를 모든 개발자 머신에 배포하는 것을 다룹니다.

257 </Step>259 </Step>

258</Steps>260</Steps>

259 261 

Details

158게이트웨이는 부팅 시 키와 인증서를 한 번 읽으므로 변경된 파일은 재시작 후에만 적용됩니다. IdP에 없는 인증서를 제시하는 토큰 요청이 없도록 다음 순서로 회전합니다:158게이트웨이는 부팅 시 키와 인증서를 한 번 읽으므로 변경된 파일은 재시작 후에만 적용됩니다. IdP에 없는 인증서를 제시하는 토큰 요청이 없도록 다음 순서로 회전합니다:

159 159 

1601. 새 인증서를 이전 인증서와 함께 IdP에 업로드합니다.1601. 새 인증서를 이전 인증서와 함께 IdP에 업로드합니다.

1612. `gateway.yaml`이 로드하는 키와 인증서 파일을 교체한 후 게이트웨이를 재시작합니다.1612. `gateway.yaml`이 로드하는 키와 인증서 파일을 교체한 후 게이트웨이를 재시작합니다. 여러 복제본을 실행하는 경우 이전 인증서를 제거할 때까지 IdP에 두 인증서가 모두 있으므로 [롤링 재시작](/docs/ko/claude-apps-gateway-deploy#upgrades)을 사용할 수 있습니다.

1623. IdP에서 이전 인증서를 제거합니다.1623. 모든 복제본이 재시작된 후 IdP에서 이전 인증서를 제거합니다.

163 163 

164<h4 id="idp-requests-through-a-forward-proxy">164<h4 id="idp-requests-through-a-forward-proxy">

165 전방 프록시를 통한 IdP 요청165 전방 프록시를 통한 IdP 요청


227 227 

228| 필드 | 필수 | 설명 |228| 필드 | 필수 | 설명 |

229| - | - | - |229| - | - | - |

230| `postgres_url` | 예 | `postgres://` 또는 `postgresql://` URL입니다. 필수: 장치 부여 랑데부입니다. 브라우저 콜백이 작성하고 폴링 CLI가 읽으므로 교차 복제본 상태가 필요합니다. 게이트웨이는 부팅 및 업그레이드 시 자체 스키마 마이그레이션을 실행하므로 역할은 대상 스키마에서 테이블을 생성하고 변경할 권리가 필요합니다. [업그레이드](/docs/ko/claude-apps-gateway-deploy#upgrades) 및 [Postgres](/docs/ko/claude-apps-gateway-deploy#postgres)를 참조하세요. |230| `postgres_url` | 예 | 쉼표로 구분된 목록이 아닌 하나의 호스트를 가진 `postgres://` 또는 `postgresql://` URL입니다. 게이트웨이는 부팅 및 업그레이드 시 자체 스키마 마이그레이션을 실행하므로 역할은 대상 스키마에서 테이블을 생성하고 변경할 권리가 필요합니다. [업그레이드](/docs/ko/claude-apps-gateway-deploy#upgrades) 및 [Postgres](/docs/ko/claude-apps-gateway-deploy#postgres)를 참조하세요. |

231| `username` | 아니오 | `postgres_url`의 사용자를 재정의합니다. |231| `username` | 아니오 | `postgres_url`의 사용자를 재정의합니다. |

232| `password` | 아니오 | 데이터베이스 자격 증명입니다. 자격 증명이 URL에서 벗어나도록 `postgres_url`이 아닌 여기에 설정합니다. 모든 문자를 수락하고 URL 자격 증명보다 우선합니다. |232| `password` | 아니오 | 데이터베이스 자격 증명입니다. 자격 증명이 URL에서 벗어나도록 `postgres_url`이 아닌 여기에 설정합니다. 모든 문자를 수락하고 URL 자격 증명보다 우선합니다. |

233| `max_connections` | 아니오 | 복제본당 Postgres 연결 풀 크기입니다. 기본값 `5`로 보수적이고 공유 데이터베이스에 친화적입니다. [지출 제한](#admin)이 활성화되면 핫 경로는 추론 요청당 몇 가지 작업을 수행하므로 로드 아래의 전용 데이터베이스에 대해 이를 높이고 복제본 × 이를 데이터베이스의 `max_connections` 아래로 유지합니다. |233| `max_connections` | 아니오 | 복제본당 Postgres 연결 풀 크기입니다. 기본값 `5`로 보수적이고 공유 데이터베이스에 친화적입니다. [지출 제한](#admin)이 활성화되면 핫 경로는 추론 요청당 몇 가지 작업을 수행하므로 로드 아래의 전용 데이터베이스에 대해 이를 높이고 복제본 × 이를 데이터베이스의 `max_connections` 아래로 유지합니다. |


313 프록시를 실행하는 경우 사용자별 ID 헤더313 프록시를 실행하는 경우 사용자별 ID 헤더

314</h5>314</h5>

315 315 

316`provider: anthropic` 업스트림의 `base_url`을 Anthropic API 대신 실행하는 프록시로 지정할 수 있습니다. 해당 프록시에 각 요청을 보낸 개발자를 알리려면 해당 업스트림에 `forward_user_identity: true`를 설정합니다. 그러면 프록시는 개발자별로 지출을 기인할 수 있습니다. 게이트웨이 v2.1.233 이상을 실행해야 합니다.316`provider: anthropic` 업스트림의 `base_url`을 Anthropic API 대신 실행하는 프록시로 지정할 수 있습니다. 해당 프록시에 각 요청을 보낸 개발자를 알리려면 해당 업스트림에 `forward_user_identity: true`를 설정합니다. 그러면 프록시는 개발자별로 지출을 기인할 수 있습니다. Claude Code v2.1.233 이상을 실행하는 게이트웨이가 필요합니다.

317 317 

318예를 들어 `upstream-gateway.internal.example.com`의 프록시의 경우:318예를 들어 `upstream-gateway.internal.example.com`의 프록시의 경우:

319 319 


413 413 

414Bedrock 업스트림에 `assume_role`을 설정하면 게이트웨이는 자체 AWS 신원을 사용하여 이름을 지정하는 역할에 대해서만 `sts:AssumeRole`을 호출합니다. 이는 게이트웨이와 다른 AWS 계정에 있을 수 있습니다. 해당 업스트림의 모든 Bedrock 요청은 STS가 반환하는 1시간 자격 증명으로 서명되므로 장기 액세스 키가 계정을 교차하지 않습니다.414Bedrock 업스트림에 `assume_role`을 설정하면 게이트웨이는 자체 AWS 신원을 사용하여 이름을 지정하는 역할에 대해서만 `sts:AssumeRole`을 호출합니다. 이는 게이트웨이와 다른 AWS 계정에 있을 수 있습니다. 해당 업스트림의 모든 Bedrock 요청은 STS가 반환하는 1시간 자격 증명으로 서명되므로 장기 액세스 키가 계정을 교차하지 않습니다.

415 415 

416게이트웨이 v2.1.281 이상을 실행해야 합니다. 이전 게이트웨이는 키를 찾으면 시작을 거부합니다.416Claude Code v2.1.281 이상을 실행하는 게이트웨이가 필요합니다. 이전 게이트웨이는 키를 찾으면 시작을 거부합니다.

417 417 

418```yaml theme={null}418```yaml theme={null}

419upstreams:419upstreams:


470 470 

471기본적으로 게이트웨이는 모든 Bedrock 요청을 하나의 자격 증명으로 서명하므로 AWS는 모든 개발자의 요청을 단일 IAM 주체 아래에서 봅니다. [`assume_role`](#bedrock-in-another-aws-account)에 `session_name: email`을 추가하면 게이트웨이는 개발자당 시간당 한 번 `sts:AssumeRole`을 호출하고 세션 이름을 해당 개발자의 이메일로 설정하며 반환된 자격 증명으로 요청에 서명하므로 각 개발자의 요청은 자신의 가정된 역할 세션 아래에서 AWS에 도달합니다. 역할은 게이트웨이의 자체 계정에 있을 수 있습니다.471기본적으로 게이트웨이는 모든 Bedrock 요청을 하나의 자격 증명으로 서명하므로 AWS는 모든 개발자의 요청을 단일 IAM 주체 아래에서 봅니다. [`assume_role`](#bedrock-in-another-aws-account)에 `session_name: email`을 추가하면 게이트웨이는 개발자당 시간당 한 번 `sts:AssumeRole`을 호출하고 세션 이름을 해당 개발자의 이메일로 설정하며 반환된 자격 증명으로 요청에 서명하므로 각 개발자의 요청은 자신의 가정된 역할 세션 아래에서 AWS에 도달합니다. 역할은 게이트웨이의 자체 계정에 있을 수 있습니다.

472 472 

473게이트웨이 v2.1.281 이상을 실행해야 합니다. [AWS의 비용 기인](/docs/ko/claude-apps-gateway-on-aws#cost-attribution)은 IAM 역할과 AWS 청구가 세션을 표시하는 위치를 다룹니다.473Claude Code v2.1.281 이상을 실행하는 게이트웨이가 필요합니다. [AWS의 비용 기인](/docs/ko/claude-apps-gateway-on-aws#cost-attribution)은 IAM 역할과 AWS 청구가 세션을 표시하는 위치를 다룹니다.

474 474 

475```yaml theme={null}475```yaml theme={null}

476upstreams:476upstreams:


586 586 

587빈 `auth` 블록은 Application Default Credentials를 사용합니다: `GOOGLE_APPLICATION_CREDENTIALS`, GCE 메타데이터 또는 GKE Workload Identity. 서비스 계정 JSON 키 파일은 지원되지만 권장되지 않습니다. Workload Identity를 사용하거나 GCE 또는 Cloud Run 인스턴스에 서비스 계정을 연결합니다.587빈 `auth` 블록은 Application Default Credentials를 사용합니다: `GOOGLE_APPLICATION_CREDENTIALS`, GCE 메타데이터 또는 GKE Workload Identity. 서비스 계정 JSON 키 파일은 지원되지만 권장되지 않습니다. Workload Identity를 사용하거나 GCE 또는 Cloud Run 인스턴스에 서비스 계정을 연결합니다.

588 588 

589Google Cloud의 Agent Platform에 대해 [전역 엔드포인트](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations)를 사용하려면 `region: global`을 설정합니다. Google은 각 요청을 사용 가능한 지역으로 라우팅하므로 지역별 모델 가용성을 추적하지 않습니다. 특정 지역을 설정하면 모든 요청이 이에 고정됩니다.589지역 엔드포인트 대신 [Google Cloud의 Agent Platform용 전역 엔드포인트](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations)를 사용하려면 `region: global`을 설정합니다. Google은 각 요청을 사용 가능한 지역으로 라우팅하므로 지역별 모델 가용성을 추적하지 않습니다. 특정 지역을 설정하면 모든 요청이 이에 고정됩니다.

590 590 

591| 설정 | 방법 |591| 설정 | 방법 |

592| - | - |592| - | - |

Details

221* **[지출 제한 적용](/docs/ko/claude-apps-gateway-spend-limits#postgres-availability)**: 중단 중에 기본적으로 열린 상태로 실패하므로 추론이 계속 흐릅니다. 계량되지 않은 상태로 실행하기보다는 차단하려면 닫힌 상태로 전환합니다221* **[지출 제한 적용](/docs/ko/claude-apps-gateway-spend-limits#postgres-availability)**: 중단 중에 기본적으로 열린 상태로 실패하므로 추론이 계속 흐릅니다. 계량되지 않은 상태로 실행하기보다는 차단하려면 닫힌 상태로 전환합니다

222* **준비 상태**: 기본적으로 `/readyz`는 Postgres에 도달할 수 없게 되자마자 준비되지 않음으로 보고하므로, 모든 복제본이 한 번에 준비 상태 확인에 실패합니다. 트래픽이 확인을 통과한 복제본에만 도달하는 경우, 게이트웨이가 여전히 처리할 수 있는 추론을 포함한 모든 트래픽은 Postgres가 복구될 때까지 실패합니다. `/healthz`의 생존성 프로브는 전체 기간 동안 계속 통과합니다.222* **준비 상태**: 기본적으로 `/readyz`는 Postgres에 도달할 수 없게 되자마자 준비되지 않음으로 보고하므로, 모든 복제본이 한 번에 준비 상태 확인에 실패합니다. 트래픽이 확인을 통과한 복제본에만 도달하는 경우, 게이트웨이가 여전히 처리할 수 있는 추론을 포함한 모든 트래픽은 Postgres가 복구될 때까지 실패합니다. `/healthz`의 생존성 프로브는 전체 기간 동안 계속 통과합니다.

223 223 

224Postgres가 다운되는 동안 생존성 프로브는 계속 통과합니다.

225 

226IdP가 다운되면, 기존 세션은 `ttl_hours`까지 작동하고 새로운 로그인은 실패합니다. 세션 새로고침은 다시 시도 답변을 받고 IdP가 돌아오면 성공합니다. IdP에 빈번한 유지 보수 창이 있으면 더 긴 `ttl_hours`를 설정합니다.224IdP가 다운되면, 기존 세션은 `ttl_hours`까지 작동하고 새로운 로그인은 실패합니다. 세션 새로고침은 다시 시도 답변을 받고 IdP가 돌아오면 성공합니다. IdP에 빈번한 유지 보수 창이 있으면 더 긴 `ttl_hours`를 설정합니다.

227 225 

228<h4 id="readiness-grace-period">226<h4 id="readiness-grace-period">


251 Postgres249 Postgres

252</h3>250</h3>

253 251 

252게이트웨이는 상태를 PostgreSQL 데이터베이스에 저장합니다:

253 

254* **데이터베이스**: 자체 호스팅 또는 관리형 PostgreSQL 자체이며, [최소 버전](/docs/ko/claude-apps-gateway#prerequisites) 이상이어야 합니다. 분산 SQL 데이터베이스처럼 Postgres 프로토콜만 구현하는 데이터베이스는 지원되지 않습니다.

255* **주소**: `store.postgres_url`은 하나의 호스트를 받습니다. 데이터베이스에 여러 노드가 있으면, 관리형 서비스의 엔드포인트, 로드 밸런서 또는 가상 IP와 같이 노드 앞에 있는 주소를 사용합니다. 장애 조치가 걸리는 시간보다 긴 [준비 상태 유예 기간](#readiness-grace-period)을 설정합니다.

256 

254게이트웨이는 부팅 시간 마이그레이션으로 생성된 5개의 데이터 테이블과 `_migrations` 테이블을 보유합니다:257게이트웨이는 부팅 시간 마이그레이션으로 생성된 5개의 데이터 테이블과 `_migrations` 테이블을 보유합니다:

255 258 

256| 테이블 | 내용 | 보존 |259| 테이블 | 내용 | 보존 |


398| CLI `/login`: `Could not resolve the configured HTTP proxy` | `HTTPS_PROXY` 또는 `HTTP_PROXY`의 호스트명이 개발자 머신에서 확인되지 않음. 일반적으로 회사 네트워크에 연결되지 않았기 때문 | 개발자가 네트워크 또는 VPN에 연결하고 다시 시도하거나 프록시 URL을 수정하도록 하세요 |401| CLI `/login`: `Could not resolve the configured HTTP proxy` | `HTTPS_PROXY` 또는 `HTTP_PROXY`의 호스트명이 개발자 머신에서 확인되지 않음. 일반적으로 회사 네트워크에 연결되지 않았기 때문 | 개발자가 네트워크 또는 VPN에 연결하고 다시 시도하거나 프록시 URL을 수정하도록 하세요 |

399| CLI `/login`: `Could not resolve gateway host <host>` | 머신이 gateway의 내부 DNS 이름을 확인할 수 없음. 일반적으로 회사 네트워크에 없기 때문 | 개발자가 네트워크 또는 VPN에 연결한 후 `/login`을 다시 시도하도록 하세요 |402| CLI `/login`: `Could not resolve gateway host <host>` | 머신이 gateway의 내부 DNS 이름을 확인할 수 없음. 일반적으로 회사 네트워크에 없기 때문 | 개발자가 네트워크 또는 VPN에 연결한 후 `/login`을 다시 시도하도록 하세요 |

400| 부트가 `store.postgres_url`을 이름으로 지정하는 구성 검증 오류로 종료됨 | Postgres가 구성되지 않음. gateway는 Postgres를 요구함 | `store.postgres_url`을 설정하세요. 로컬 개발의 경우 일회용 컨테이너를 사용하세요: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |403| 부트가 `store.postgres_url`을 이름으로 지정하는 구성 검증 오류로 종료됨 | Postgres가 구성되지 않음. gateway는 Postgres를 요구함 | `store.postgres_url`을 설정하세요. 로컬 개발의 경우 일회용 컨테이너를 사용하세요: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

404| 부트 종료: `store.postgres_url in <path> is not a URL the gateway can read`, 또는 v2.1.290 이전에서는 단순한 `Invalid URL` 또는 `URI error` | URL을 파싱할 수 없음. 예를 들어 둘 이상의 호스트를 나열하거나 비밀번호에 인코딩되지 않은 `/`, `?`, `#`, `%`가 포함된 경우 | [하나의 호스트](#postgres)를 지정하고 비밀번호를 [`store.password`](/docs/ko/claude-apps-gateway-config#store)로 옮기세요 |

401| 부트 종료: `requires the native binary` | Node 대신 네이티브 바이너리에서 실행 중 | [독립 실행형 설치 방법](/docs/ko/setup) 중 하나로 Claude Code를 설치하세요 |405| 부트 종료: `requires the native binary` | Node 대신 네이티브 바이너리에서 실행 중 | [독립 실행형 설치 방법](/docs/ko/setup) 중 하나로 Claude Code를 설치하세요 |

402| 부트가 `config.load` 후 OIDC 검색 오류로 종료됨 | `oidc.issuer`에 도달할 수 없거나 TLS 체인을 신뢰하지 않음 | 발급자가 포드에서 도달 가능하고 `/.well-known/openid-configuration`을 제공하는지 확인하세요. 비공개 PKI의 경우 `ca_cert_pem`을 설정하세요. 포드가 정방향 프록시를 통해서만 IdP에 도달하는 경우 [`oidc.use_proxy: true`](/docs/ko/claude-apps-gateway-config#idp-requests-through-a-forward-proxy)를 설정하세요. v2.1.227 이전 버전에서는 대신 포드에 IdP의 각 엔드포인트에 대한 직접 경로를 제공하세요. 포드가 IdP의 호스트명을 확인할 수 없거나 프록시가 IP 주소에 대한 `CONNECT`를 거부하는 경우 [프록시 전용 송신](/docs/ko/claude-apps-gateway-config#proxy-only-egress)을 참조하세요. v2.1.277 이상이 필요합니다. |406| 부트가 `config.load` 후 OIDC 검색 오류로 종료됨 | `oidc.issuer`에 도달할 수 없거나 TLS 체인을 신뢰하지 않음 | 발급자가 포드에서 도달 가능하고 `/.well-known/openid-configuration`을 제공하는지 확인하세요. 비공개 PKI의 경우 `ca_cert_pem`을 설정하세요. 포드가 정방향 프록시를 통해서만 IdP에 도달하는 경우 [`oidc.use_proxy: true`](/docs/ko/claude-apps-gateway-config#idp-requests-through-a-forward-proxy)를 설정하세요. v2.1.227 이전 버전에서는 대신 포드에 IdP의 각 엔드포인트에 대한 직접 경로를 제공하세요. 포드가 IdP의 호스트명을 확인할 수 없거나 프록시가 IP 주소에 대한 `CONNECT`를 거부하는 경우 [프록시 전용 송신](/docs/ko/claude-apps-gateway-config#proxy-only-egress)을 참조하세요. v2.1.277 이상이 필요합니다. |

403| 부트가 Postgres 권한 오류로 종료됨 | 데이터베이스 역할이 스키마에 대한 DDL 권한이 없음 | 부트 시 테이블을 생성하고 변경할 수 있도록 gateway 스키마에 대해 역할에 `CREATE` 권한을 부여하세요 |407| 부트가 Postgres 권한 오류로 종료됨 | 데이터베이스 역할이 스키마에 대한 DDL 권한이 없음 | 부트 시 테이블을 생성하고 변경할 수 있도록 gateway 스키마에 대해 역할에 `CREATE` 권한을 부여하세요 |

404| 로그: `could not connect to Postgres at boot, attempt 1 of 3` | gateway가 시작될 때 데이터베이스에 도달할 수 없었음. 예를 들어 네트워크가 아직 시작 중인 콜드 인스턴스 | gateway가 부팅을 완료하면 조치가 필요하지 않습니다. 데이터베이스에 도달할 수 없을 때 gateway는 종료되기 전에 2초 간격으로 연결을 3번 시도합니다. `could not connect to Postgres`로 종료되면 `store.postgres_url`과 데이터베이스로의 네트워크 경로를 확인하세요. 시도가 거부되지 않고 시간 초과되면 각 시도에 더 많은 시간을 주기 위해 [`store.connect_timeout_seconds`](/docs/ko/claude-apps-gateway-config#store)를 높이세요. |408| 로그: `could not connect to Postgres at boot, attempt 1 of 3` | gateway가 시작될 때 데이터베이스에 도달할 수 없었음. 예를 들어 네트워크가 아직 시작 중인 콜드 인스턴스 | gateway가 부팅을 완료하면 조치가 필요하지 않습니다. 데이터베이스에 도달할 수 없을 때 gateway는 종료되기 전에 2초 간격으로 연결을 3번 시도합니다. `could not connect to Postgres`로 종료되면 `store.postgres_url`(하나의 호스트를 지정하는지 포함)과 데이터베이스로의 네트워크 경로를 확인하세요. 시도가 거부되지 않고 시간 초과되면 각 시도에 더 많은 시간을 주기 위해 [`store.connect_timeout_seconds`](/docs/ko/claude-apps-gateway-config#store)를 높이세요. |

405| `/oauth/callback`이 "Sign-in could not be completed"를 표시함 | 이메일 도메인이 거부됨, id\_token 검증 실패, 또는 `email_verified`가 명시적으로 `false`이며 gateway는 항상 재정의 없이 거부함 | `allowed_email_domains`을 확인하고 IdP가 확인된 `email` 클레임을 반환하는지 확인하세요. `email_verified: false`의 경우 IdP 측 검증을 수정하세요. IdP가 다른 클레임 이름 아래에서 이메일을 내보내는 경우 `oidc.email_claim`을 설정하세요. |409| `/oauth/callback`이 "Sign-in could not be completed"를 표시함 | 이메일 도메인이 거부됨, id\_token 검증 실패, 또는 `email_verified`가 명시적으로 `false`이며 gateway는 항상 재정의 없이 거부함 | `allowed_email_domains`을 확인하고 IdP가 확인된 `email` 클레임을 반환하는지 확인하세요. `email_verified: false`의 경우 IdP 측 검증을 수정하세요. IdP가 다른 클레임 이름 아래에서 이메일을 내보내는 경우 `oidc.email_claim`을 설정하세요. |

406| 로그: `token exchange failed request_id=<id>: id_token missing email claim` | IdP가 기본적으로 id\_token에 `email`을 포함하지 않음. 이 거부는 `allowed_email_domains`이 설정된 경우에만 발생함. 없으면 누락된 이메일이 이메일 없이 세션을 발행함 | IdP를 구성하여 id\_token에 `email`을 내보내도록 하세요. Okta: 사용자 정의 권한 부여 서버의 ID 토큰 클레임에 `email`을 추가하세요. Entra: 앱 등록에서 `email`을 선택적 클레임으로 추가하세요. PingFederate: `email`을 내보내는 OpenID Connect 정책을 활성화하세요. IdP가 userinfo 엔드포인트에서 `email`을 제공하지만 id\_token에 포함하지 않는 경우(예: Okta org 권한 부여 서버) `oidc.userinfo_fallback: true`를 설정하세요. |410| 로그: `token exchange failed request_id=<id>: id_token missing email claim` | IdP가 기본적으로 id\_token에 `email`을 포함하지 않음. 이 거부는 `allowed_email_domains`이 설정된 경우에만 발생함. 없으면 누락된 이메일이 이메일 없이 세션을 발행함 | IdP를 구성하여 id\_token에 `email`을 내보내도록 하세요. Okta: 사용자 정의 권한 부여 서버의 ID 토큰 클레임에 `email`을 추가하세요. Entra: 앱 등록에서 `email`을 선택적 클레임으로 추가하세요. PingFederate: `email`을 내보내는 OpenID Connect 정책을 활성화하세요. IdP가 userinfo 엔드포인트에서 `email`을 제공하지만 id\_token에 포함하지 않는 경우(예: Okta org 권한 부여 서버) `oidc.userinfo_fallback: true`를 설정하세요. |

407| 로그: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, 개발자가 매 `session.ttl_hours`마다 `Cloud gateway session expired`를 봄 | IdP가 새로 고침 토큰을 수락했지만 함께 id\_token을 반환하지 않았으므로 gateway가 IdP의 userinfo 엔드포인트에 사용자의 클레임을 요청했습니다. IdP가 새로 고쳐진 액세스 토큰을 거기서 거부했습니다. gateway가 `temporarily_unavailable`으로 응답하므로 Claude Code는 새로 고침 토큰을 유지하지만 세션을 갱신할 수 없습니다. v2.1.260 이전의 gateway 버전은 `(at …)` 세부 정보 없이 동일한 줄을 기록합니다. | [`oidc.scope_on_refresh: true`](/docs/ko/claude-apps-gateway-config#oidc)를 설정하세요. gateway v2.1.260 이상에서 사용 가능하므로 새로 고침 요청이 `openid`를 다시 요청합니다. Okta와 같은 일부 IdP는 요청할 때만 새로 고침 시 id\_token을 반환합니다. PingFederate에서는 대신 **Applications > OAuth > OpenID Connect Policy Management** 아래에서 **Return ID Token On Refresh Grant**를 활성화하세요. 키는 PingFederate의 동작을 변경하지 않습니다. 여전히 생략하는 다른 IdP의 경우 userinfo 엔드포인트가 새로 고침으로 발급된 액세스 토큰을 수락하는지 확인하세요. 임시 방편으로 [`session.ttl_hours`](/docs/ko/claude-apps-gateway-config#session)를 높이세요. 프로비저닝 해제 트레이드오프는 [Identity provider setup](#identity-provider-setup)을 참조하세요. |411| 로그: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, 개발자가 매 `session.ttl_hours`마다 `Cloud gateway session expired`를 봄 | IdP가 새로 고침 토큰을 수락했지만 함께 id\_token을 반환하지 않았으므로 gateway가 IdP의 userinfo 엔드포인트에 사용자의 클레임을 요청했습니다. IdP가 새로 고쳐진 액세스 토큰을 거기서 거부했습니다. gateway가 `temporarily_unavailable`으로 응답하므로 Claude Code는 새로 고침 토큰을 유지하지만 세션을 갱신할 수 없습니다. v2.1.260 이전의 gateway 버전은 `(at …)` 세부 정보 없이 동일한 줄을 기록합니다. | [`oidc.scope_on_refresh: true`](/docs/ko/claude-apps-gateway-config#oidc)를 설정하세요. gateway v2.1.260 이상에서 사용 가능하므로 새로 고침 요청이 `openid`를 다시 요청합니다. Okta와 같은 일부 IdP는 요청할 때만 새로 고침 시 id\_token을 반환합니다. PingFederate에서는 대신 **Applications > OAuth > OpenID Connect Policy Management** 아래에서 **Return ID Token On Refresh Grant**를 활성화하세요. 키는 PingFederate의 동작을 변경하지 않습니다. 여전히 생략하는 다른 IdP의 경우 userinfo 엔드포인트가 새로 고침으로 발급된 액세스 토큰을 수락하는지 확인하세요. 임시 방편으로 [`session.ttl_hours`](/docs/ko/claude-apps-gateway-config#session)를 높이세요. 프로비저닝 해제 트레이드오프는 [Identity provider setup](#identity-provider-setup)을 참조하세요. |

Details

169 </Step>169 </Step>

170 170 

171 <Step title="PostgreSQL용 Amazon RDS 프로비저닝">171 <Step title="PostgreSQL용 Amazon RDS 프로비저닝">

172 인스턴스는 공개 주소가 없는 프라이빗 서브넷에서 실행되며 스토리지 암호화가 켜져 있습니다. 엔진 버전은 Postgres 16으로 고정되어 있으며, 이는 게이트웨이의 지원되는 최소값인 PostgreSQL 14를 충족하고 아래 매개변수 그룹 패밀리가 인스턴스가 실행하는 엔진 주 버전과 일치함을 보장합니다.172 인스턴스는 프라이빗 서브넷에서 Postgres 16을 실행하며, 공개 주소가 없고 스토리지 암호화가 켜져 있습니다.

173 173 

174 먼저 프라이빗 서브넷에 데이터베이스를 배치하는 서브넷 그룹과 `rds.force_ssl=1`을 사용하는 매개변수 그룹을 생성하여 서버가 일반 텍스트 연결을 거부하도록 합니다. 엔진 버전은 매개변수 그룹의 패밀리가 인스턴스가 실행하는 엔진 주 버전과 일치해야 하므로 한 번만 고정됩니다:174 먼저 프라이빗 서브넷에 데이터베이스를 배치하는 서브넷 그룹과 `rds.force_ssl=1`을 사용하는 매개변수 그룹을 생성하여 서버가 일반 텍스트 연결을 거부하도록 합니다. 엔진 버전은 매개변수 그룹의 패밀리가 인스턴스가 실행하는 엔진 주 버전과 일치해야 하므로 한 번만 고정됩니다:

175 175 


201 --no-publicly-accessible --storage-encrypted201 --no-publicly-accessible --storage-encrypted

202 ```202 ```

203 203 

204 리터럴 `--master-user-password` 인수는 명령이 실행되는 동안 프로세스 테이블 및 감사/EDR 로그에 표시됩니다. 공유 또는 모니터링되는 호스트에서는 번들의 `setup.sh`가 하는 방식처럼 `0600` 파일에서 `--cli-input-json`을 통해 암호를 전달하십시오.204 리터럴 `--master-user-password` 인수는 명령이 실행되는 동안 프로세스 테이블 및 감사/EDR 로그에 표시되며, 이는 비밀 단계의 참고 사항이 다루는 것과 동일한 노출입니다. 공유 또는 모니터링되는 호스트에서는 번들의 `setup.sh`가 하는 방식처럼 `0600` 파일에서 `--cli-input-json`을 통해 암호를 전달하십시오.

205 205 

206 인스턴스가 시작될 때까지 기다리십시오. 몇 분이 걸릴 수 있습니다. 그런 다음 프라이빗 엔드포인트를 읽고 게이트웨이가 사용할 연결 문자열을 조합하십시오:206 인스턴스가 시작될 때까지 기다리십시오. 몇 분이 걸릴 수 있습니다. 그런 다음 프라이빗 엔드포인트를 읽고 게이트웨이가 사용할 연결 문자열을 조합하십시오:

207 207 


220 <Step title="gateway.yaml 작성">220 <Step title="gateway.yaml 작성">

221 `upstreams` 블록은 `auth: {}`로 Bedrock을 가리키므로 게이트웨이는 ECS의 작업 역할 또는 EKS의 IRSA 역할에서 AWS 기본 자격 증명 체인을 통해 인증합니다. 모든 필드는 [구성 참조](/docs/ko/claude-apps-gateway-config)를 참조하십시오.221 `upstreams` 블록은 `auth: {}`로 Bedrock을 가리키므로 게이트웨이는 ECS의 작업 역할 또는 EKS의 IRSA 역할에서 AWS 기본 자격 증명 체인을 통해 인증합니다. 모든 필드는 [구성 참조](/docs/ko/claude-apps-gateway-config)를 참조하십시오.

222 222 

223 2개의 `listen` 필드는 게이트웨이 앞에 있는 것에 따라 다릅니다:223 2개의 `listen` 필드는 게이트웨이 앞단에 무엇이 있는지를 설명합니다:

224 224 

225 * `public_url`: 외부 `https://` 원점이며, 비루프백 바인드에 필수입니다. [listen 참조](/docs/ko/claude-apps-gateway-config#listen)를 참조하십시오. 게이트웨이는 IdP `redirect_uri`와 검색 문서를 이 값에서만 빌드하며, `X-Forwarded-*` 헤더에서는 빌드하지 않습니다.225 * `public_url`: 외부 `https://` 원점이며, 비루프백 바인드에 필수입니다. [`listen` 참조](/docs/ko/claude-apps-gateway-config#listen)를 참조하십시오. 게이트웨이는 IdP `redirect_uri`와 검색 문서를 이 값에서만 빌드하며, `X-Forwarded-*` 헤더에서는 빌드하지 않습니다.

226 * `trusted_proxies`: 프론트 엔드의 소스 범위입니다. 게이트웨이는 TCP 피어가 이 목록에 있을 때만 `X-Forwarded-For`를 준수하고, 신뢰할 수 있는 홉을 지나 체인을 걷습니다. 따라서 IP별 로그인 속도 제한 및 감사 이벤트는 로드 밸런서의 IP가 아닌 개발자 IP를 기록합니다.226 * `trusted_proxies`: 프론트 엔드의 소스 범위입니다. 게이트웨이는 TCP 피어가 이 목록에 있을 때만 `X-Forwarded-For`를 준수하고, 신뢰할 수 있는 홉을 지나 체인을 걷습니다. 따라서 IP별 로그인 속도 제한 및 감사 이벤트는 로드 밸런서의 IP가 아닌 개발자 IP를 기록합니다.

227 227 

228 두 트랙 모두에서 프론트 엔드는 직접 생성되거나 AWS Load Balancer Controller에 의해 생성되는 내부 ALB이며, ALB의 노드는 연결된 서브넷에서 주소를 가져오므로 `trusted_proxies`를 해당 서브넷의 CIDR로 설정하십시오. 이는 해당 서브넷의 모든 호스트를 프록시로 신뢰합니다. ALB의 수신 소스인 회사 CIDR이 이들과 겹치지 않도록 유지하고, 신뢰할 수 없는 워크로드와 서브넷을 공유하지 마십시오. 이들은 `X-Forwarded-For`를 통해 클라이언트 IP를 스푸핑할 수 있습니다.228 두 트랙 모두에서 프론트 엔드는 직접 생성되거나 AWS Load Balancer Controller에 의해 생성되는 내부 ALB이며, ALB의 노드는 연결된 서브넷에서 주소를 가져오므로 `trusted_proxies`를 해당 서브넷의 CIDR로 설정하십시오. 이는 해당 서브넷의 모든 호스트를 프록시로 신뢰합니다. ALB의 수신 소스인 회사 CIDR이 이들과 겹치지 않도록 유지하고, 신뢰할 수 없는 워크로드와 서브넷을 공유하지 마십시오. 이들은 `X-Forwarded-For`를 통해 클라이언트 IP를 스푸핑할 수 있습니다.


244 # Okta org 인증 서버는 이메일과 그룹을 생략하는 얇은 id_token을 반환합니다.244 # Okta org 인증 서버는 이메일과 그룹을 생략하는 얇은 id_token을 반환합니다.

245 # 게이트웨이는 /userinfo에서 이들을 채웁니다.245 # 게이트웨이는 /userinfo에서 이들을 채웁니다.

246 userinfo_fallback: true246 userinfo_fallback: true

247 # Okta는 `groups` 범위가 요청되고 앱의 그룹 클레임 필터가 이를 허용할 때만 그룹을 내보냅니다.247 # Okta는 `groups` 범위가 요청되고 앱의 그룹 클레임 필터가

248 # 이를 허용할 때만 그룹을 내보냅니다.

248 scopes: [openid, profile, email, offline_access, groups]249 scopes: [openid, profile, email, offline_access, groups]

249 250 

250 session:251 session:

251 jwt_secret: ${GATEWAY_JWT_SECRET} # EKS: ${file:/secrets/jwt-secret}252 jwt_secret: ${GATEWAY_JWT_SECRET} # EKS: ${file:/secrets/jwt-secret}

252 ttl_hours: 8 # 프로비저닝 해제 지연을 제한합니다. 더 엄격한 취소를 위해 1로 낮추십시오.253 ttl_hours: 8 # 프로비저닝 해제 지연을 제한합니다. 더 엄격한 취소를 위해

254 # 1에 가깝게 낮추십시오.

253 255 

254 store:256 store:

255 postgres_url: ${GATEWAY_POSTGRES_URL} # EKS: ${file:/secrets/postgres-url}257 postgres_url: ${GATEWAY_POSTGRES_URL} # EKS: ${file:/secrets/postgres-url}

256 # readiness_grace_seconds: 300 # RDS 장애 조치를 통해 상태 확인을 계속 통과합니다.258 # readiness_grace_seconds: 300 # RDS 장애 조치 중에도

259 # 상태 확인을 계속 통과합니다.

257 260 

258 upstreams:261 upstreams:

259 - provider: bedrock262 - provider: bedrock

260 region: <your-region> # IAM 정책의 ARN이 이를 포함하도록 $AWS_REGION과 일치합니다.263 region: <your-region> # IAM 정책의 ARN이 이를 포함하도록

261 auth: {} # AWS 기본 자격 증명 체인: ECS 작업 역할 또는 EKS의 IRSA264 # $AWS_REGION과 일치시킵니다.

265 auth: {} # AWS 기본 자격 증명 체인:

266 # ECS 작업 역할 또는 EKS의 IRSA

262 ```267 ```

263 268 

264 <Note>269 <Note>


307 ENV NODE_EXTRA_CA_CERTS=/etc/claude/rds-global-bundle.pem312 ENV NODE_EXTRA_CA_CERTS=/etc/claude/rds-global-bundle.pem

308 ```313 ```

309 314 

310 ECR 리포지토리를 생성하고 Docker를 로그인하십시오. 불변 태그는 배포 단계가 고정하는 `<version>` 태그를 나중에 다른 이미지로 자동으로 다시 가리킬 수 없음을 의미합니다:315 ECR 저장소를 생성하고 Docker를 로그인하십시오. 불변 태그는 배포 단계가 고정하는 `<version>` 태그를 나중에 다른 이미지로 자동으로 다시 가리킬 수 없음을 의미합니다:

311 316 

312 ```bash theme={null}317 ```bash theme={null}

313 aws ecr create-repository --repository-name claude-gateway \318 aws ecr create-repository --repository-name claude-gateway \


396 401 

397 HTTPS 리스너를 추가합니다. `--ssl-policy`는 최신 TLS 하한을 고정합니다. 생략하면 여전히 TLS 1.0/1.1을 허용하는 레거시 `ELBSecurityPolicy-2016-08` 기본값으로 돌아갑니다.402 HTTPS 리스너를 추가합니다. `--ssl-policy`는 최신 TLS 하한을 고정합니다. 생략하면 여전히 TLS 1.0/1.1을 허용하는 레거시 `ELBSecurityPolicy-2016-08` 기본값으로 돌아갑니다.

398 403 

399 ALB는 기본적으로 60초 동안 데이터가 없는 연결을 닫습니다. 게이트웨이의 keepalive 핑은 스트림을 해당 기본값 내에 유지하므로 시간 초과를 높이면 핑 주기 위에 여유를 추가합니다. [문제 해결](#troubleshooting) 행에서 끊어진 스트림을 다룹니다. 아래 명령은 리스너를 추가하고 시간 초과를 높입니다:404 ALB는 기본적으로 60초 동안 데이터가 없는 연결을 닫습니다. 게이트웨이의 keepalive 핑은 스트림을 해당 기본값 내에 유지하므로 타임아웃을 높이면 핑 주기 위에 여유를 추가합니다. 끊어진 스트림에 대한 [문제 해결](#troubleshooting) 행에서 그 메커니즘과 이전 게이트웨이에 대해 다룹니다. 아래 명령은 리스너를 추가하고 타임아웃을 높입니다:

400 405 

401 ```bash theme={null}406 ```bash theme={null}

402 aws elbv2 create-listener --load-balancer-arn "$ALB_ARN" \407 aws elbv2 create-listener --load-balancer-arn "$ALB_ARN" \


420 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"425 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"

421 ```426 ```

422 427 

423 60초 유예 기간은 콜드 작업이 이미지를 가져오고, 저장소에 연결하고, 첫 번째 상태 확인에 응답할 시간을 제공합니다. ECS가 배포에 대한 실패를 계산하기 시작하기 전입니다. 대상 그룹의 `GET /readyz`에 대한 상태 확인은 저장소에 도달할 수 있는지 확인하므로 Postgres에 도달할 수 없는 작업은 회전에 들어가지 않습니다. [중단 동작](/docs/ko/claude-apps-gateway-deploy#outage-behavior)에서 트레이드오프와 `/healthz` 대안을 참조하십시오.428 60초 유예 기간은 ECS가 배포에 대한 실패를 계산하기 시작하기 전에 콜드 작업이 이미지를 가져오고, 저장소에 연결하고, 첫 번째 상태 확인에 응답할 시간을 제공합니다.

429 

430 대상 그룹의 `GET /readyz`에 대한 상태 확인은 저장소에 도달할 수 있는지 확인하므로 Postgres에 도달할 수 없는 작업은 회전에 들어가지 않습니다. RDS 장애 조치와 같은 짧은 데이터베이스 중단 동안에도 작업이 상태 확인을 계속 통과하도록 하려면 [중단 동작](/docs/ko/claude-apps-gateway-deploy#outage-behavior)에 설명된 대로 `store.readiness_grace_seconds`를 설정하십시오. 해당 문서에서는 `/healthz` 대안도 다룹니다.

424 431 

425 작업은 공개 IP가 없는 프라이빗 서브넷에서 실행되므로 모든 이그레스(Bedrock, IdP, Secrets Manager, ECR, CloudWatch Logs로)는 NAT 게이트웨이를 통해 이동합니다. Bedrock 트래픽을 공개 경로에서 벗어나게 하려면 `bedrock-runtime` 인터페이스 VPC 엔드포인트를 생성하고 업스트림의 `base_url`을 가리키십시오. [Bedrock 업스트림 참조](/docs/ko/claude-apps-gateway-config#amazon-bedrock)에 표시됩니다. IdP는 여전히 인터넷 이그레스가 필요합니다.432 작업은 공개 IP가 없는 프라이빗 서브넷에서 실행되므로 모든 이그레스(Bedrock, IdP, Secrets Manager, ECR, CloudWatch Logs로)는 NAT 게이트웨이를 통해 이동합니다. Bedrock 트래픽을 공개 경로에서 벗어나게 하려면 `bedrock-runtime` 인터페이스 VPC 엔드포인트를 생성하고 업스트림의 `base_url`을 가리키십시오. [Bedrock 업스트림 참조](/docs/ko/claude-apps-gateway-config#amazon-bedrock)에 표시됩니다. IdP는 여전히 인터넷 이그레스가 필요합니다.

426 433 


471 </Step>478 </Step>

472 479 

473 <Step title="게이트웨이 URL을 개발자 머신에 푸시">480 <Step title="게이트웨이 URL을 개발자 머신에 푸시">

474 게이트웨이가 이제 실행 중이지만 개발자는 게이트웨이 URL이 머신에 있을 때까지 `/login`에서 도달할 수 없습니다. [관리형 설정 파일](/docs/ko/claude-apps-gateway#set-the-gateway-url)에서 `forceLoginMethod` 및 `forceLoginGatewayUrl`을 설정하고 MDM을 통해 각 디바이스에 배포하십시오. 개발자가 수동으로 선택할 수 있는 로그인 선택기의 게이트웨이 옵션이 없습니다.481 게이트웨이가 이제 실행 중이지만 개발자는 게이트웨이 URL이 머신에 있을 때까지 `/login`에서 도달할 수 없습니다. MDM을 통해 각 디바이스에 배포하는 [관리형 설정 파일](/docs/ko/claude-apps-gateway#set-the-gateway-url)에서 `forceLoginMethod` 및 `forceLoginGatewayUrl`을 설정하십시오. 개발자가 수동으로 선택할 수 있는 로그인 선택기의 게이트웨이 옵션이 없습니다.

475 </Step>482 </Step>

476</Steps>483</Steps>

477 484 

Details

416* **격리된 가상 머신**: 각 세션은 격리된 Anthropic 관리 VM에서 실행됩니다. 조직이 [자체 호스팅 환경](/docs/ko/self-hosted-environments)으로 라우팅하는 세션은 자신의 인프라에서 실행되며, 격리는 배포의 책임입니다416* **격리된 가상 머신**: 각 세션은 격리된 Anthropic 관리 VM에서 실행됩니다. 조직이 [자체 호스팅 환경](/docs/ko/self-hosted-environments)으로 라우팅하는 세션은 자신의 인프라에서 실행되며, 격리는 배포의 책임입니다

417* <span id="default-allowed-domains" />**네트워크 액세스 제어**: Anthropic 호스팅 환경에서 네트워크 액세스는 기본적으로 제한되며 비활성화할 수 있습니다. 액세스 수준, [기본 허용 도메인](/docs/ko/cloud-environments#default-allowed-domains), 그리고 허용 목록을 통과하지 않는 트래픽에 대해서는 [네트워크 액세스](/docs/ko/cloud-environments#network-access)를 참조하세요. 자체 호스팅 환경에서는 자신의 네트워크 경계에서 세션 송신을 제한합니다. 네트워크 액세스가 비활성화된 상태에서 실행할 때 Claude Code는 여전히 Anthropic API와 통신할 수 있으며, 이는 VM에서 데이터가 나갈 수 있습니다.417* <span id="default-allowed-domains" />**네트워크 액세스 제어**: Anthropic 호스팅 환경에서 네트워크 액세스는 기본적으로 제한되며 비활성화할 수 있습니다. 액세스 수준, [기본 허용 도메인](/docs/ko/cloud-environments#default-allowed-domains), 그리고 허용 목록을 통과하지 않는 트래픽에 대해서는 [네트워크 액세스](/docs/ko/cloud-environments#network-access)를 참조하세요. 자체 호스팅 환경에서는 자신의 네트워크 경계에서 세션 송신을 제한합니다. 네트워크 액세스가 비활성화된 상태에서 실행할 때 Claude Code는 여전히 Anthropic API와 통신할 수 있으며, 이는 VM에서 데이터가 나갈 수 있습니다.

418* **자격 증명 보호**: Anthropic 호스팅 환경에서 git 자격 증명 및 서명 키는 샌드박스 외부에 유지되며, 프록시는 범위 자격 증명으로 세션을 대신하여 인증합니다. 자체 호스팅 환경에서 배포는 git 자격 증명을 제공합니다. [git 구성](/docs/ko/self-hosted-environments-deploy#configure-git)을 참조하세요418* **자격 증명 보호**: Anthropic 호스팅 환경에서 git 자격 증명 및 서명 키는 샌드박스 외부에 유지되며, 프록시는 범위 자격 증명으로 세션을 대신하여 인증합니다. 자체 호스팅 환경에서 배포는 git 자격 증명을 제공합니다. [git 구성](/docs/ko/self-hosted-environments-deploy#configure-git)을 참조하세요

419* **API 자격 증명**: Anthropic 호스팅 환경의 Pro 및 Max 플랜에서 [클라우드 환경에 추가한](/docs/ko/cloud-environments#add-api-credentials) 키는 샌드박스 외부에 동일한 방식으로 유지되며, 세션을 떠난 후 일치하는 요청에 첨부됩니다. 자체 호스팅 환경에는 API 자격 증명이 없으며 Team 및 Enterprise 플랜에는 아직 없습니다419* **네트워크 시크릿**: Anthropic 호스팅 환경의 Pro 및 Max 플랜에서 [클라우드 환경에 추가한](/docs/ko/cloud-environments#add-api-credentials) 키는 샌드박스 외부에 동일한 방식으로 유지되며, 세션을 떠난 후 일치하는 요청에 첨부됩니다. 자체 호스팅 환경에는 네트워크 시크릿이 없으며 Team 및 Enterprise 플랜에는 아직 없습니다

420* **안전한 분석**: 코드는 PR을 생성하기 전에 세션의 격리된 환경 내에서 분석 및 수정됩니다420* **안전한 분석**: 코드는 PR을 생성하기 전에 세션의 격리된 환경 내에서 분석 및 수정됩니다

421 421 

422<h2 id="troubleshooting">422<h2 id="troubleshooting">


442`claude --cloud` 및 `claude --teleport`는 claude.ai 계정으로 로그인해야 합니다. API 키로 인증하거나 저장된 계정 세부 정보가 오래된 경우 다음 중 하나가 표시됩니다.442`claude --cloud` 및 `claude --teleport`는 claude.ai 계정으로 로그인해야 합니다. API 키로 인증하거나 저장된 계정 세부 정보가 오래된 경우 다음 중 하나가 표시됩니다.

443 443 

444* `Unable to get organization UUID`444* `Unable to get organization UUID`

445* API 키 인증이 충분하지 않다는 메시지445* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

446* 세션 ID 없이 `claude --teleport`를 실행할 때 세션 선택기에 표시되는 `Error loading Claude Code sessions`446* 세션 ID 없이 `claude --teleport`를 실행할 때 세션 선택기에 표시되는 `Error loading Claude Code sessions`

447 447 

448`/login`을 실행하여 claude.ai 계정으로 로그인한 다음 명령을 다시 시도하세요. 오류가 제공자의 이름을 지정하면 [오류 표](#errors-when-sending-to-a-cloud-session)를 참조하세요: 클라우드 세션을 타사 제공자를 통해 사용할 수 없습니다.448셸에서 [`claude auth login`](/docs/ko/cli-reference#cli-commands)을 실행하여 claude.ai 계정으로 로그인한 다음 명령을 다시 시도하세요. 실행 중인 세션 안에서는 `/login`이 같은 역할을 합니다. 오류가 대신 제공자의 이름을 표시하면 [오류 표](#errors-when-sending-to-a-cloud-session)를 참조하세요: 클라우드 세션을 타사 제공자를 통해 사용할 수 없습니다.

449 

450v2.1.274부터 v2.1.289까지는 로그인 메시지가 `Claude Code cloud sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.`로 표시되었습니다.

449 451 

450<h3 id="remote-control-session-expired-or-access-denied">452<h3 id="remote-control-session-expired-or-access-denied">

451 Remote Control 세션 만료 또는 액세스 거부453 Remote Control 세션 만료 또는 액세스 거부

Details

34 oneLiner: 'Project instructions Claude reads every session',34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> on its own or alongside CLAUDE.md</>],37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> in place of a <C>CLAUDE.md</C></>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions39 example: `# Project conventions

40 40 


164 icon: 'folder',164 icon: 'folder',

165 color: '#9B7BC4',165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when Claude reads, writes, or edits a matching file</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads, writes, or edits a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/docs/en/hooks">hooks</A> or <A href="/docs/en/permissions">permissions</A>.</>],168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads, writes, or edits a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/docs/en/hooks">hooks</A> or <A href="/docs/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',170 docsLink: '/en/memory#organize-rules-with-claude/rules/',


176 color: '#9B7BC4',176 color: '#9B7BC4',

177 badge: 'committed',177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,179 when: <>Loaded when Claude reads, writes, or edits a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---181 example: `---

182paths:182paths:


197 color: '#9B7BC4',197 color: '#9B7BC4',

198 badge: 'committed',198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,200 when: <>Loaded when Claude reads, writes, or edits a file matching the <C>paths:</C> glob below</>,

201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is working on API routes.</>,

202 example: `---202 example: `---

203paths:203paths:

204 - "src/api/**/*.ts"204 - "src/api/**/*.ts"


605 icon: 'folder',605 icon: 'folder',

606 color: '#9B7BC4',606 color: '#9B7BC4',

607 oneLiner: 'User-level rules that apply to every project',607 oneLiner: 'User-level rules that apply to every project',

608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when Claude reads, writes, or edits a matching file</>,

609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

610 docsLink: '/en/memory#organize-rules-with-claude/rules/',610 docsLink: '/en/memory#organize-rules-with-claude/rules/',

611 children: []611 children: []


1434 1434 

1435Windows에서 `~/.claude`는 `%USERPROFILE%\.claude`로 확인됩니다. [`CLAUDE_CONFIG_DIR`](/docs/ko/env-vars)을 설정하면, 이 페이지의 모든 `~/.claude` 경로가 대신 해당 디렉토리 아래에 있습니다.1435Windows에서 `~/.claude`는 `%USERPROFILE%\.claude`로 확인됩니다. [`CLAUDE_CONFIG_DIR`](/docs/ko/env-vars)을 설정하면, 이 페이지의 모든 `~/.claude` 경로가 대신 해당 디렉토리 아래에 있습니다.

1436 1436 

1437대부분의 사용자는 `CLAUDE.md`와 `settings.json`만 편집합니다. 리포지토리에 이미 다른 코딩 에이전트용 `AGENTS.md`가 있는 경우, Claude Code는 [자체적으로 또는 `CLAUDE.md`와 함께 읽을 수 있습니다](/docs/ko/memory#agents-md). 디렉토리의 나머지는 선택 사항입니다. 필요에 따라 skills, rules, subagents를 추가합니다.1437대부분의 사용자는 `CLAUDE.md`와 `settings.json`만 편집합니다. 저장소에 이미 다른 코딩 에이전트용 `AGENTS.md`가 있는 경우, Claude Code는 `CLAUDE.md` 대신 [해당 파일을 읽을 수 있습니다](/docs/ko/memory#agents-md). 디렉터리의 나머지는 선택 사항입니다. 필요에 따라 스킬, 규칙, 서브에이전트를 추가합니다.

1438 1438 

1439<h2 id="explore-the-directory">1439<h2 id="explore-the-directory">

1440 디렉토리 탐색1440 디렉토리 탐색


1454| - | - | - |1454| - | - | - |

1455| `managed-settings.json` | 시스템 수준, OS에 따라 다름 | 재정의할 수 없는 엔터프라이즈 강제 설정입니다. [좁은 예외](/docs/ko/settings#security-keys-where-the-stricter-value-applies)를 제외하고는 재정의할 수 없습니다. [파일을 저장할 위치](/docs/ko/managed-settings#deploy-a-managed-settings-file) 및 [Claude Code가 사용하는 관리되는 소스](/docs/ko/managed-settings#precedence-within-the-managed-tier)를 참조하세요. |1455| `managed-settings.json` | 시스템 수준, OS에 따라 다름 | 재정의할 수 없는 엔터프라이즈 강제 설정입니다. [좁은 예외](/docs/ko/settings#security-keys-where-the-stricter-value-applies)를 제외하고는 재정의할 수 없습니다. [파일을 저장할 위치](/docs/ko/managed-settings#deploy-a-managed-settings-file) 및 [Claude Code가 사용하는 관리되는 소스](/docs/ko/managed-settings#precedence-within-the-managed-tier)를 참조하세요. |

1456| `CLAUDE.local.md` | 프로젝트 루트 | 이 프로젝트에 대한 개인 기본 설정으로, CLAUDE.md와 함께 로드됩니다. 수동으로 생성하고 `.gitignore`에 추가합니다. |1456| `CLAUDE.local.md` | 프로젝트 루트 | 이 프로젝트에 대한 개인 기본 설정으로, CLAUDE.md와 함께 로드됩니다. 수동으로 생성하고 `.gitignore`에 추가합니다. |

1457| `AGENTS.md` | 프로젝트 루트, `.claude/`, 또는 모든 디렉터리 | AI 코딩 에이전트를 위해 작성하는 프로젝트 지침입니다. Claude Code는 [이를 로드](/docs/ko/memory#agents-md)할 수 있으며, `CLAUDE.md`와 함께 로드할 수도 있습니다. |1457| `AGENTS.md` | 프로젝트 루트, `.claude/`, 또는 모든 디렉터리 | AI 코딩 에이전트를 위해 작성하는 프로젝트 지침입니다. Claude Code는 `CLAUDE.md` 대신 [이를 로드](/docs/ko/memory#agents-md)할 수 있습니다. |

1458| 설치된 플러그인 | `~/.claude/plugins` | 복제된 마켓플레이스, 설치된 플러그인 버전, `installed_plugins.json` 설치 기록, 플러그인별 데이터로, `claude plugin` 명령으로 관리됩니다. [claude.ai 계정에서 동기화된](/docs/ko/plugins/loading#synced-plugins) 플러그인은 `~/.claude/plugins/synced/`로 다운로드됩니다. 마켓플레이스 [`command` 소스](/docs/ko/plugins/marketplace-reference#command-plugin-source)에서 링크 모드로 설치된 플러그인의 경우, Claude Code는 복사본 대신 여기에 링크를 저장하고, 플러그인의 파일은 명령이 출력하는 디렉터리에 남아 있습니다. `command` 소스는 Claude Code v2.1.229 이상이 필요합니다. 로컬 경로에서 추가한 마켓플레이스에 상대 경로로 나열된 플러그인도 캐시 복사본이 아닌 소스 디렉터리에서 [제자리에 로드](/docs/ko/plugins/loading#find-plugins-on-disk)됩니다. [플러그인 캐싱](/docs/ko/plugins/loading#find-plugins-on-disk)에서 고아 버전이 정리되는 방식을 참조하세요. |1458| 설치된 플러그인 | `~/.claude/plugins` | 복제된 마켓플레이스, 설치된 플러그인 버전, `installed_plugins.json` 설치 기록, 플러그인별 데이터로, `claude plugin` 명령으로 관리됩니다. [claude.ai 계정에서 동기화된](/docs/ko/plugins/loading#synced-plugins) 플러그인은 `~/.claude/plugins/synced/`로 다운로드됩니다. 마켓플레이스 [`command` 소스](/docs/ko/plugins/marketplace-reference#command-plugin-source)에서 링크 모드로 설치된 플러그인의 경우, Claude Code는 복사본 대신 여기에 링크를 저장하고, 플러그인의 파일은 명령이 출력하는 디렉터리에 남아 있습니다. `command` 소스는 Claude Code v2.1.229 이상이 필요합니다. 로컬 경로에서 추가한 마켓플레이스에 상대 경로로 나열된 플러그인도 캐시 복사본이 아닌 소스 디렉터리에서 [제자리에 로드](/docs/ko/plugins/loading#find-plugins-on-disk)됩니다. [플러그인 캐싱](/docs/ko/plugins/loading#find-plugins-on-disk)에서 고아 버전이 정리되는 방식을 참조하세요. |

1459 1459 

1460`~/.claude`는 또한 작업할 때 Claude Code가 작성하는 데이터를 보유합니다. 트랜스크립트, 프롬프트 기록, 파일 스냅샷, 캐시, 로그입니다. 아래의 [애플리케이션 데이터](#application-data)를 참조하세요.1460`~/.claude`는 또한 작업할 때 Claude Code가 작성하는 데이터를 보유합니다. 트랜스크립트, 프롬프트 기록, 파일 스냅샷, 캐시, 로그입니다. 아래의 [애플리케이션 데이터](#application-data)를 참조하세요.

Details

60 * 프로젝트의 저장소와 파일, 그리고 [지침과 메모리](#give-a-project-standing-context)60 * 프로젝트의 저장소와 파일, 그리고 [지침과 메모리](#give-a-project-standing-context)

61 * [프로젝트의 각 저장소](#what-threads-pick-up-from-your-repositories)의 `CLAUDE.md`와 스킬, 그리고 하나의 저장소를 가진 프로젝트에서는 그 저장소의 권한 규칙과 훅도 포함61 * [프로젝트의 각 저장소](#what-threads-pick-up-from-your-repositories)의 `CLAUDE.md`와 스킬, 그리고 하나의 저장소를 가진 프로젝트에서는 그 저장소의 권한 규칙과 훅도 포함

62 * claude.ai 계정의 [커넥터](#get-skills-plugins-connectors-and-tools-into-threads)62 * claude.ai 계정의 [커넥터](#get-skills-plugins-connectors-and-tools-into-threads)

63 * 네트워크 액세스, 환경 변수, API 자격 증명, 설치된 도구를 설정하는 [클라우드 환경](#choose-an-environment-for-threads)63 * 네트워크 액세스, 환경 변수, 네트워크 시크릿, 설치된 도구를 설정하는 [클라우드 환경](#choose-an-environment-for-threads)

64* **개요 창**: [모든 스레드를 한 번에 보고](#see-what-needs-you-in-overview) 어느 것이 사용자를 필요로 하는지 보는 곳입니다. 다른 탭은 추가한 파일과 스레드가 생성한 파일을 위한 **라이브러리**, 스레드가 열은 풀 리퀘스트를 위한 **풀 리퀘스트**, 프로젝트의 예약된 작업을 위한 **루틴**입니다.64* **개요 창**: [모든 스레드를 한 번에 보고](#see-what-needs-you-in-overview) 어느 것이 사용자를 필요로 하는지 보는 곳입니다. 다른 탭은 추가한 파일과 스레드가 생성한 파일을 위한 **라이브러리**, 스레드가 열은 풀 리퀘스트를 위한 **풀 리퀘스트**, 프로젝트의 예약된 작업을 위한 **루틴**입니다.

65 65 

66클라우드 스레드는 자신의 머신에 있는 Claude Code 설정에서 아무것도 선택하지 않습니다. [스레드에 스킬, 플러그인, 커넥터, 도구 가져오기](#get-skills-plugins-connectors-and-tools-into-threads)는 그들이 다른 방법으로 누락될 것들을 어떻게 제공하는지 다룹니다.66클라우드 스레드는 자신의 머신에 있는 Claude Code 설정에서 아무것도 선택하지 않습니다. [스레드에 스킬, 플러그인, 커넥터, 도구 가져오기](#get-skills-plugins-connectors-and-tools-into-threads)는 그들이 다른 방법으로 누락될 것들을 어떻게 제공하는지 다룹니다.


92 92 

93* **플랜**: Pro 또는 Max를 사용 중이며 사이드바에 **프로젝트**가 표시됩니다.93* **플랜**: Pro 또는 Max를 사용 중이며 사이드바에 **프로젝트**가 표시됩니다.

94* **GitHub(프로젝트가 코드에서 작업할 경우)**: 코드가 GitHub Enterprise Server, GitLab 또는 Bitbucket이 아닌 github.com에 있고, 연결된 GitHub 계정이 코드에 대한 푸시 액세스 권한을 가지고 있으며, Claude GitHub App이 설치되어 있습니다. [`/web-setup`](/docs/ko/web-quickstart#connect-from-your-terminal)으로 GitHub를 연결한 경우, 해당 토큰을 사용하면 다른 클라우드 세션이 리포지토리에 도달할 수 있지만 Claude GitHub App이 필요한 프로젝트의 클라우드 스레드에는 충분하지 않습니다. [GitHub 액세스 설정하기](#set-up-github-access)에 단계가 나와 있습니다.94* **GitHub(프로젝트가 코드에서 작업할 경우)**: 코드가 GitHub Enterprise Server, GitLab 또는 Bitbucket이 아닌 github.com에 있고, 연결된 GitHub 계정이 코드에 대한 푸시 액세스 권한을 가지고 있으며, Claude GitHub App이 설치되어 있습니다. [`/web-setup`](/docs/ko/web-quickstart#connect-from-your-terminal)으로 GitHub를 연결한 경우, 해당 토큰을 사용하면 다른 클라우드 세션이 리포지토리에 도달할 수 있지만 Claude GitHub App이 필요한 프로젝트의 클라우드 스레드에는 충분하지 않습니다. [GitHub 액세스 설정하기](#set-up-github-access)에 단계가 나와 있습니다.

95* **네트워크, 자격 증명 및 도구**: 클라우드 스레드의 경우, 이들은 프로젝트의 [클라우드 환경](#choose-an-environment-for-threads)에서 제공됩니다. 기본 환경은 이미 [일반적인 패키지 레지스트리](/docs/ko/cloud-environments#default-allowed-domains)에 도달하므로, 작업이 다른 도메인, 시크릿 또는 사전 설치되지 않은 도구가 필요한 경우에만 확인하세요. 작업이 MCP 서버가 필요한 경우, [claude.ai 커넥터](https://claude.ai/customize/connectors)에서 연결된 것으로 표시되는지 확인하세요.95* **네트워크, 시크릿 및 도구**: 클라우드 스레드의 경우, 이들은 프로젝트의 [클라우드 환경](#choose-an-environment-for-threads)에서 제공됩니다. 기본 환경은 이미 [일반적인 패키지 레지스트리](/docs/ko/cloud-environments#default-allowed-domains)에 도달하므로, 작업이 다른 도메인, 시크릿 또는 사전 설치되지 않은 도구가 필요한 경우에만 확인하세요. 작업이 MCP 서버가 필요한 경우, [claude.ai 커넥터](https://claude.ai/customize/connectors)에서 연결된 것으로 표시되는지 확인하세요.

96 96 

97<h3 id="start-a-new-project-from-scratch">97<h3 id="start-a-new-project-from-scratch">

98 처음부터 새 프로젝트 시작하기98 처음부터 새 프로젝트 시작하기


396 스레드의 환경 선택하기396 스레드의 환경 선택하기

397</h3>397</h3>

398 398 

399모든 새로운 클라우드 스레드는 프로젝트의 [클라우드 환경](/docs/ko/cloud-environments)에서 시작합니다. 환경은 스레드가 도달할 수 있는 도메인, 스레드가 가진 환경 변수, 요청에 추가되는 API 자격증명, 그리고 Claude가 시작하기 전에 설정 스크립트가 설치하는 것을 설정합니다. 클라우드 스레드는 **프로젝트 설정 > 환경**에서 선택할 때까지 기본 Anthropic 호스팅 환경을 사용합니다.399모든 새로운 클라우드 스레드는 프로젝트의 [클라우드 환경](/docs/ko/cloud-environments)에서 시작합니다. 환경은 스레드가 도달할 수 있는 도메인, 스레드가 가진 환경 변수, 요청에 추가되는 네트워크 시크릿, 그리고 Claude가 시작하기 전에 설정 스크립트가 설치하는 것을 설정합니다. 클라우드 스레드는 **프로젝트 설정 > 환경**에서 선택할 때까지 기본 Anthropic 호스팅 환경을 사용합니다.

400 400 

401클라우드 스레드가 내부 API 또는 프라이빗 패키지 레지스트리에 도달해야 하거나 머신이 일반적으로 보유한 토큰이 필요하면, 프로젝트가 아닌 환경을 변경하세요: [네트워크 액세스](/docs/ko/cloud-environments#network-access), [API 자격증명 추가](/docs/ko/cloud-environments#add-api-credentials), [설정 스크립트](/docs/ko/cloud-environments#setup-scripts)를 참조하세요.401클라우드 스레드가 내부 API 또는 프라이빗 패키지 레지스트리에 도달해야 하거나 머신이 일반적으로 보유한 토큰이 필요하면, 프로젝트가 아닌 환경을 변경하세요: [네트워크 액세스](/docs/ko/cloud-environments#network-access), [네트워크 시크릿 추가](/docs/ko/cloud-environments#add-api-credentials), [설정 스크립트](/docs/ko/cloud-environments#setup-scripts)를 참조하세요.

402 402 

403<h3 id="get-skills-plugins-connectors-and-tools-into-threads">403<h3 id="get-skills-plugins-connectors-and-tools-into-threads">

404 스킬, 플러그인, 커넥터, 도구를 스레드에 가져오기404 스킬, 플러그인, 커넥터, 도구를 스레드에 가져오기


590</h2>590</h2>

591 591 

592* [클라우드에서 Claude Code 사용](/docs/ko/claude-code-on-the-web): 각 클라우드 스레드 뒤의 클라우드 세션이 어떻게 작동하는지, GitHub 액세스 옵션 및 풀 요청의 자동 수정 포함592* [클라우드에서 Claude Code 사용](/docs/ko/claude-code-on-the-web): 각 클라우드 스레드 뒤의 클라우드 세션이 어떻게 작동하는지, GitHub 액세스 옵션 및 풀 요청의 자동 수정 포함

593* [클라우드 환경 구성](/docs/ko/cloud-environments): 클라우드 스레드가 네트워크에서 도달할 수 있는 것을 변경하고, 환경 변수 및 API 자격 증명을 제공하고, 설정 스크립트로 도구를 설치합니다593* [클라우드 환경 구성](/docs/ko/cloud-environments): 클라우드 스레드가 네트워크에서 도달할 수 있는 것을 변경하고, 환경 변수 및 네트워크 시크릿을 제공하고, 설정 스크립트로 도구를 설치합니다

594* [루틴으로 작업 자동화](/docs/ko/routines): 일정, 트리거 및 루틴 관리, 프로젝트에서 Claude가 생성하는 것 포함594* [루틴으로 작업 자동화](/docs/ko/routines): 일정, 트리거 및 루틴 관리, 프로젝트에서 Claude가 생성하는 것 포함

595* [에이전트 보기로 여러 에이전트 관리](/docs/ko/agent-view): 작업이 머신만 도달할 수 있는 도구 또는 서비스가 필요할 때 머신에서 여러 세션을 실행하고 추적합니다595* [에이전트 보기로 여러 에이전트 관리](/docs/ko/agent-view): 작업이 머신만 도달할 수 있는 도구 또는 서비스가 필요할 때 머신에서 여러 세션을 실행하고 추적합니다

596* [Projects redesigned: from folder to conversation](https://claude.com/blog/projects-redesigned): 출시 공지, 프로젝트를 Claude와의 대화로 만드는 생각 포함596* [Projects redesigned: from folder to conversation](https://claude.com/blog/projects-redesigned): 출시 공지, 프로젝트를 Claude와의 대화로 만드는 생각 포함

Details

31| `claude attach <id\|name>` | 이 터미널에서 [백그라운드 세션](/docs/ko/agent-view#manage-sessions-from-the-shell)에 연결합니다. ID 대신 실행 중인 세션 이름의 일부를 전달하려면 Claude Code v2.1.290 이상이 필요합니다 | `claude attach 7c5dcf5d` |31| `claude attach <id\|name>` | 이 터미널에서 [백그라운드 세션](/docs/ko/agent-view#manage-sessions-from-the-shell)에 연결합니다. ID 대신 실행 중인 세션 이름의 일부를 전달하려면 Claude Code v2.1.290 이상이 필요합니다 | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | 기본 제공 [자동 모드](/docs/ko/permission-modes#eliminate-prompts-with-auto-mode) 분류기 규칙을 JSON으로 인쇄합니다. `claude auto-mode config`를 사용하여 설정이 적용된 유효한 구성을 확인합니다. `--label <prefix>`는 해당 접두사로 시작하는 레이블이 있는 규칙만 인쇄합니다(대소문자 구분 안 함). Claude Code v2.1.208 이상이 필요합니다 | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | 기본 제공 [자동 모드](/docs/ko/permission-modes#eliminate-prompts-with-auto-mode) 분류기 규칙을 JSON으로 인쇄합니다. `claude auto-mode config`를 사용하여 설정이 적용된 유효한 구성을 확인합니다. `--label <prefix>`는 해당 접두사로 시작하는 레이블이 있는 규칙만 인쇄합니다(대소문자 구분 안 함). Claude Code v2.1.208 이상이 필요합니다 | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | 사용자 설정 파일에서 `autoMode` 섹션을 제거하여 기본 [자동 모드](/docs/ko/permission-modes#eliminate-prompts-with-auto-mode) 구성을 복원합니다. 작성하기 전에 확인을 요청합니다. `-y`/`--yes`를 전달하여 프롬프트를 건너뜁니다. [관리형 설정](/docs/ko/server-managed-settings) 또는 `--settings` 플래그의 규칙은 여전히 적용됩니다. Claude Code v2.1.212 이상이 필요합니다. [기본값 및 유효한 구성 검사](/docs/ko/auto-mode-config#inspect-the-defaults-and-your-effective-config) 참조 | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | 사용자 설정 파일에서 `autoMode` 섹션을 제거하여 기본 [자동 모드](/docs/ko/permission-modes#eliminate-prompts-with-auto-mode) 구성을 복원합니다. 작성하기 전에 확인을 요청합니다. `-y`/`--yes`를 전달하여 프롬프트를 건너뜁니다. [관리형 설정](/docs/ko/server-managed-settings) 또는 `--settings` 플래그의 규칙은 여전히 적용됩니다. Claude Code v2.1.212 이상이 필요합니다. [기본값 및 유효한 구성 검사](/docs/ko/auto-mode-config#inspect-the-defaults-and-your-effective-config) 참조 | `claude auto-mode reset --yes` |

34| `claude daemon logs` | 백그라운드 세션 [감독자](/docs/ko/agent-view#the-supervisor-process)의 로그 파일 `~/.claude/daemon.log`를 팔로우하며, `Ctrl+C`를 누를 때까지 새 줄이 들어오는 대로 인쇄합니다 | `claude daemon logs` |

35| `claude daemon run` | 백그라운드 세션 [감독자](/docs/ko/agent-view#the-supervisor-process)를 이 터미널의 포그라운드에서 실행하고 로그를 인쇄합니다 | `claude daemon run` |

34| `claude daemon status` | 백그라운드 세션 [감독자](/docs/ko/agent-view#the-supervisor-process)의 상태, 버전, 소켓 디렉토리 및 진단을 위한 워커 수를 인쇄합니다. 감독자가 실행 중이 아니면 1로 종료됩니다 | `claude daemon status` |36| `claude daemon status` | 백그라운드 세션 [감독자](/docs/ko/agent-view#the-supervisor-process)의 상태, 버전, 소켓 디렉토리 및 진단을 위한 워커 수를 인쇄합니다. 감독자가 실행 중이 아니면 1로 종료됩니다 | `claude daemon status` |

35| `claude daemon stop --any` | 백그라운드 세션 [감독자](/docs/ko/agent-view#the-supervisor-process)와 이를 호스팅하는 세션을 중지합니다. `--keep-workers`를 전달하여 백그라운드 세션을 실행 중인 상태로 두면 다음 감독자가 이들에 다시 연결됩니다. `--any`는 기본값인 온디맨드 감독자 중지를 확인합니다. 이를 사용하여 [응답하지 않는 감독자](/docs/ko/agent-view#agent-view-says-the-background-service-did-not-respond)에서 복구합니다 | `claude daemon stop --any --keep-workers` |37| `claude daemon stop --any` | 백그라운드 세션 [감독자](/docs/ko/agent-view#the-supervisor-process)와 이를 호스팅하는 세션을 중지합니다. `--keep-workers`를 전달하여 백그라운드 세션을 실행 중인 상태로 두면 다음 감독자가 이들에 다시 연결됩니다. `--any`는 기본값인 온디맨드 감독자 중지를 확인합니다. 이를 사용하여 [응답하지 않는 감독자](/docs/ko/agent-view#agent-view-says-the-background-service-did-not-respond)에서 복구합니다 | `claude daemon stop --any --keep-workers` |

36| `claude doctor` | 세션을 시작하지 않고 터미널에서 읽기 전용 설치 및 설정 진단을 인쇄합니다. 설치 상태, 설정 파일 검증 오류 및 Remote Control 적격성을 포함합니다. 수정을 적용할 수도 있는 세션 내 설정 점검을 위해 [`/doctor`](/docs/ko/commands#all-commands)를 실행합니다 | `claude doctor` |38| `claude doctor` | 세션을 시작하지 않고 터미널에서 읽기 전용 설치 및 설정 진단을 인쇄합니다. 설치 상태, 설정 파일 검증 오류 및 Remote Control 적격성을 포함합니다. 수정을 적용할 수도 있는 세션 내 설정 점검을 위해 [`/doctor`](/docs/ko/commands#all-commands)를 실행합니다 | `claude doctor` |

Details

10 클라우드 환경은 [클라우드 세션](/docs/ko/claude-code-on-the-web)에 적용되며, 이는 Pro, Max, Team 플랜에서 사용 가능하고, [프리미엄 시트 또는 Chat + Claude Code 시트](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan)가 있는 Enterprise 사용자를 위한 것입니다.10 클라우드 환경은 [클라우드 세션](/docs/ko/claude-code-on-the-web)에 적용되며, 이는 Pro, Max, Team 플랜에서 사용 가능하고, [프리미엄 시트 또는 Chat + Claude Code 시트](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan)가 있는 Enterprise 사용자를 위한 것입니다.

11</Note>11</Note>

12 12 

13각 [클라우드 세션](/docs/ko/claude-code-on-the-web)은 클라우드 환경에서 실행됩니다. 환경을 구성하여 [네트워크 액세스](#access-levels)를 허용하거나 거부하고, 세션에 대한 [환경 변수](#set-environment-variables)를 설정하며, Pro 및 Max 플랜에서 세션이 사용하는 [API 자격 증명](#add-api-credentials)을 저장하고, Claude가 작업을 시작하기 전에 [설정 스크립트](#setup-scripts)를 실행할 수 있습니다.13각 [클라우드 세션](/docs/ko/claude-code-on-the-web)은 클라우드 환경에서 실행됩니다. 환경을 구성하여 [네트워크 액세스](#access-levels)를 허용하거나 거부하고, 세션에 대한 [환경 변수](#set-environment-variables)를 설정하며, Pro 및 Max 플랜에서 세션이 값을 직접 보지 않고도 사용할 수 있는 [네트워크 시크릿](#add-api-credentials)을 저장하고, Claude가 작업을 시작하기 전에 [설정 스크립트](#setup-scripts)를 실행할 수 있습니다.

14 14 

15동일한 환경이 클라우드 세션을 시작하는 모든 곳에 적용됩니다: [Desktop 앱](/docs/ko/desktop), [Claude 모바일 앱](/docs/ko/mobile), [claude.ai/code](https://claude.ai/code)의 브라우저, [`claude --cloud`](/docs/ko/claude-code-on-the-web#from-terminal-to-cloud)를 사용한 터미널, [루틴](/docs/ko/routines), 그리고 [Claude Tag](https://claude.com/docs/claude-tag/overview). 이러한 각 표면은 [자체 호스팅 환경](/docs/ko/self-hosted-environments)으로도 라우팅할 수 있습니다. [가용성 및 제한 사항](/docs/ko/self-hosted-environments#availability-and-limitations)은 Claude Tag 세션이 하나에서 실행될 때 Claude가 아직 사용할 수 없는 항목을 다룹니다.15동일한 환경이 클라우드 세션을 시작하는 모든 곳에 적용됩니다: [Desktop 앱](/docs/ko/desktop), [Claude 모바일 앱](/docs/ko/mobile), [claude.ai/code](https://claude.ai/code)의 브라우저, [`claude --cloud`](/docs/ko/claude-code-on-the-web#from-terminal-to-cloud)를 사용한 터미널, [루틴](/docs/ko/routines), 그리고 [Claude Tag](https://claude.com/docs/claude-tag/overview). 이러한 각 표면은 [자체 호스팅 환경](/docs/ko/self-hosted-environments)으로도 라우팅할 수 있습니다. [가용성 및 제한 사항](/docs/ko/self-hosted-environments#availability-and-limitations)은 Claude Tag 세션이 하나에서 실행될 때 Claude가 아직 사용할 수 없는 항목을 다룹니다.

16 16 


58 <Step title="환경 추가 또는 편집">58 <Step title="환경 추가 또는 편집">

59 **Cloud**를 선택하여 환경을 나열합니다. 그런 다음 **Add cloud environment**를 선택하거나, 기존 환경 위에 마우스를 올리고 오른쪽에 나타나는 설정 아이콘을 선택합니다.59 **Cloud**를 선택하여 환경을 나열합니다. 그런 다음 **Add cloud environment**를 선택하거나, 기존 환경 위에 마우스를 올리고 오른쪽에 나타나는 설정 아이콘을 선택합니다.

60 60 

61 대화 상자에는 이름, 네트워크 액세스 수준, 환경 변수 및 설정 스크립트가 포함됩니다. Pro 또는 Max 플랜에서 기존 클라우드 환경을 편집할 때 대화 상자에는 [API 자격 증명](#add-api-credentials)도 포함됩니다.61 대화 상자에는 이름, 네트워크 액세스 수준, 환경 변수 및 설정 스크립트가 포함됩니다. Pro 또는 Max 플랜에서 기존 클라우드 환경을 편집할 때 대화 상자에는 [네트워크 시크릿](#add-api-credentials)도 포함됩니다.

62 62 

63 <Frame>63 <Frame>

64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="New cloud environment 대화 상자입니다. 기본값 자리 표시자가 있는 Name 필드, Trusted로 설정된 Network access 선택기(네트워크 정책 및 액세스 수준에 대한 링크 포함), .env 형식 자리 표시자 텍스트가 있는 Environment variables 상자(환경을 사용하는 모든 사람이 값을 볼 수 있다는 참고 사항 포함), Claude Code가 시작되기 전에 새 세션이 시작될 때 실행되는 Bash 스크립트로 설명된 Setup script 상자, 그리고 Cancel 및 Create environment 버튼이 있습니다." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="New cloud environment 대화 상자입니다. 기본값 자리 표시자가 있는 Name 필드, Trusted로 설정된 Network access 선택기(네트워크 정책 및 액세스 수준에 대한 링크 포함), .env 형식 자리 표시자 텍스트가 있는 Environment variables 상자(환경을 사용하는 모든 사람이 값을 볼 수 있다는 참고 사항 포함), Claude Code가 시작되기 전에 새 세션이 시작될 때 실행되는 Bash 스크립트로 설명된 Setup script 상자, 그리고 Cancel 및 Create environment 버튼이 있습니다." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />


91 91 

92클라우드 세션은 시작할 때 자체적으로 일부 변수도 설정합니다. [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/ko/claude-code-on-the-web#manage-context)의 경우, 세션이 설정하는 값이 여기에 추가한 값을 재정의하므로 여기에 해당 키를 추가해도 효과가 없습니다.92클라우드 세션은 시작할 때 자체적으로 일부 변수도 설정합니다. [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/ko/claude-code-on-the-web#manage-context)의 경우, 세션이 설정하는 값이 여기에 추가한 값을 재정의하므로 여기에 해당 키를 추가해도 효과가 없습니다.

93 93 

94환경을 사용하는 모든 사람이 값을 읽을 수 있습니다. Pro 및 Max 플랜에서는 에이전트 프록시가 요청에 첨부할 수 있는 키에 대해 [API 자격 증명](#add-api-credentials)을 대신 사용합니다. [자격 증명을 받지 않는 요청](#requests-that-never-get-the-credential)이 나열되어 있습니다.94환경을 사용하는 모든 사람이 값을 읽을 수 있습니다. Pro 및 Max 플랜에서는 에이전트 프록시가 요청에 첨부할 수 있는 키에 대해 [네트워크 시크릿](#add-api-credentials)을 대신 사용하십시오. [시크릿을 받지 않는 요청](#requests-that-never-get-the-credential)은 해당 섹션에 나열되어 있습니다.

95 95 

96<h3 id="add-api-credentials">96<h3 id="add-api-credentials">

97 API 자격 증명 추가97 네트워크 시크릿 추가

98</h3>98</h3>

99 99 

100API 자격 증명은 클라우드 환경에 저장하는 API 키 또는 토큰으로, Claude가 키를 보지 않고도 환경의 모든 세션에서 해당 API를 호출할 수 있습니다. Anthropic의 에이전트 프록시는 각 요청이 세션의 VM을 떠난 후 나열한 호스트에 대한 요청에 키를 추가합니다. 키는 Claude, 실행하는 명령 또는 세션의 환경 변수에 도달하지 않습니다.100네트워크 시크릿은 클라우드 환경에 저장하는 API 키 또는 토큰으로, Claude가 키를 보지 않고도 환경의 모든 세션에서 해당 API를 호출할 수 있게 합니다. Anthropic의 에이전트 프록시는 각 요청이 세션의 VM을 떠난 후 나열한 호스트에 대한 요청에 키를 추가합니다. 키는 Claude, 실행하는 명령 또는 세션의 환경 변수에 도달하지 않습니다.

101 101 

102API 자격 증명은 Pro 및 Max 플랜에서 사용 가능합니다. Team 또는 Enterprise 플랜에서는 아직 사용할 수 없으므로 **API credentials** 섹션이 해당 플랜의 환경 대화 상자에 나타나지 않습니다.102네트워크 시크릿은 Pro 및 Max 플랜에서 사용 가능합니다. Team 또는 Enterprise 플랜에서는 아직 사용할 수 없으므로 **Network secrets** 섹션이 해당 플랜의 환경 대화 상자에 나타나지 않습니다.

103 103 

104<h4 id="requirements">104<h4 id="requirements">

105 요구 사항105 요구 사항

106</h4>106</h4>

107 107 

108이 중 두 개는 자격 증명을 추가할 수 있는지 여부를 결정하고, 두 개는 추가된 후 에이전트 프록시가 사용할 수 있는지 여부를 결정합니다.108이 중 두 개는 시크릿을 추가할 수 있는지 여부를 결정하고, 두 개는 추가된 후 에이전트 프록시가 사용할 수 있는지 여부를 결정합니다.

109 109 

110* **Role**: claude.ai 조직의 조직 관리자 역할110* **Role**: claude.ai 조직의 조직 관리자 역할

111 * Team 및 Enterprise에서는 Owner가 보유하고 Admin은 보유하지 않습니다.111 * Team 및 Enterprise에서는 Owner가 보유하고 Admin은 보유하지 않습니다.

112 * Pro 및 Max에서는 자신의 조직에서 보유합니다.112 * Pro 및 Max에서는 자신의 조직에서 보유합니다.

113* **Environment type**: 이미 존재하는 Anthropic 호스팅 클라우드 환경입니다. [자체 호스팅 환경](/docs/ko/self-hosted-environments)에는 API 자격 증명이 없습니다.113* **Environment type**: 이미 존재하는 Anthropic 호스팅 클라우드 환경입니다. [자체 호스팅 환경](/docs/ko/self-hosted-environments)에는 네트워크 시크릿이 없습니다.

114* **API reachability**: API가 인터넷에서의 연결을 수락합니다. 요청이 Anthropic의 네트워크에서 나가기 때문입니다.114* **API reachability**: API가 인터넷에서의 연결을 수락합니다. 요청이 Anthropic의 네트워크에서 나가기 때문입니다.

115* **Encryption keys**: 조직이 고객 관리 암호화 키를 사용하는 경우 자격 증명을 저장할 수 없습니다.115* **Encryption keys**: 조직이 고객 관리 암호화 키를 사용하는 경우 네트워크 시크릿을 저장할 수 없습니다.

116 116 

117<h4 id="add-a-credential">117<h4 id="add-a-credential">

118 자격 증명 추가118 시크릿 추가

119</h4>119</h4>

120 120 

121자격 증명은 한 번에 하나씩 추가하며, 추가한 후에는 편집할 수 없습니다. 자격 증명의 호스트 또는 값을 변경하려면 삭제하고 다시 추가합니다.121시크릿은 한 번에 하나씩 추가하며, 추가한 후에는 편집할 수 없습니다. 시크릿의 호스트 또는 값을 변경하려면 삭제하고 다시 추가합니다.

122 122 

123<Steps>123<Steps>

124 <Step title="환경의 API 자격 증명 열기">124 <Step title="환경의 네트워크 시크릿 열기">

125 [claude.ai/code](https://claude.ai/code)에서 [편집할 환경을 엽니다](#configure-your-environment). **Edit environment** 대화 상자에서 **API credentials** 섹션을 찾습니다. 환경에 이미 있는 자격 증명이 각각 적용되는 호스트와 함께 표시됩니다.125 [claude.ai/code](https://claude.ai/code)에서 [편집할 환경을 엽니다](#configure-your-environment). **Edit environment** 대화 상자에서 **Network secrets** 섹션을 찾습니다. 환경에 이미 있는 시크릿이 각각 적용되는 호스트와 함께 표시됩니다.

126 </Step>126 </Step>

127 127 

128 <Step title="자격 증명 추가">128 <Step title="시크릿 추가">

129 **Add credential**을 선택하고 양식을 작성합니다. 요청 헤더에서 이동하는 API 키에 대해 기본 **Credential type**, **Bearer**를 유지하고 다음 필드를 작성합니다.129 **Add secret**을 선택하고 양식을 작성합니다. 요청 헤더에서 전달되는 API 키에 대해 기본 **Credential type**인 **Bearer**를 유지하고 다음 필드를 작성합니다.

130 130 

131 * **Name**: `Internal billing API`와 같은 자격 증명의 레이블131 * **Name**: `Internal billing API`와 같은 시크릿의 레이블

132 * **Allowed websites**: `api.example.com`과 같은 API의 호스트입니다. 선행 `*.`은 모든 하위 도메인과 일치합니다.132 * **Allowed websites**: `api.example.com`과 같은 API의 호스트입니다. 선행 `*.`은 모든 하위 도메인과 일치합니다.

133 * **Custom headers**: 키를 전달하는 헤더에 대한 한 행입니다. 행은 헤더의 **Name**으로 `Authorization`으로 시작하고 **Prefix**로 `Bearer`로 시작합니다. 키 자체를 **Value**로 붙여넣습니다. `X-Api-Key`와 같이 기본 값을 사용하는 헤더의 경우 이름을 변경하고 접두사를 지웁니다.133 * **Custom headers**: 키를 전달하는 헤더에 대한 한 행입니다. 행은 헤더의 **Name**으로 `Authorization`, **Prefix**로 `Bearer`가 입력된 상태로 시작합니다. 키 자체를 **Value**로 붙여넣습니다. `X-Api-Key`와 같이 접두사 없는 값을 사용하는 헤더의 경우 이름을 변경하고 접두사를 지웁니다.

134 134 

135 다른 방식으로 인증하는 API의 경우 다른 **Credential type**을 선택합니다. 목록은 Team 및 Enterprise 플랜의 Slack 통합인 [Claude Tag](https://claude.com/docs/claude-tag/overview)가 [연결](https://claude.com/docs/claude-tag/admins/add-connections)에 제공하는 것과 동일합니다.135 다른 방식으로 인증하는 API의 경우 다른 **Credential type**을 선택합니다. 목록은 Team 및 Enterprise 플랜의 Slack 통합인 [Claude Tag](https://claude.com/docs/claude-tag/overview)가 [연결](https://claude.com/docs/claude-tag/admins/add-connections)에 제공하는 것과 동일합니다.

136 </Step>136 </Step>

137 137 

138 <Step title="자격 증명 저장">138 <Step title="시크릿 저장">

139 **Connect**를 선택합니다. 자격 증명이 호스트와 함께 목록에 나타나며, 대화 상자의 **Save changes** 버튼 없이 저장됩니다. 저장 후 값을 다시 볼 수 없습니다.139 **Connect**를 선택합니다. 시크릿이 호스트와 함께 목록에 나타나며, 대화 상자의 **Save changes** 버튼 없이 저장됩니다. 저장 후 값을 다시 볼 수 없습니다.

140 </Step>140 </Step>

141</Steps>141</Steps>

142 142 

143자격 증명이 작동하는지 확인하려면 환경에서 세션을 시작하고 Claude에게 `curl`과 같은 API를 호출하도록 요청합니다. API는 키가 요청에 있는 것처럼 응답하며, 키는 세션의 환경 변수나 파일에 나타나지 않습니다. 목록이 자격 증명을 **Not sent**로 표시하는 경우, 아래의 참고 사항에 이유와 수행할 작업이 설명되어 있습니다. 호스트가 정확히 일치하지 않고 겹치는 두 자격 증명은 마커를 받지 않으며, 에이전트 프록시는 그 중 하나만 보냅니다.143시크릿이 작동하는지 확인하려면 환경에서 세션을 시작하고 Claude에게 `curl` 등으로 API를 호출하도록 요청합니다. API는 키가 요청에 있는 것처럼 응답하며, 키는 세션의 환경 변수나 파일에 나타나지 않습니다. 목록이 시크릿을 **Not sent**로 표시하는 경우, 아래의 참고 사항에 이유와 수행할 작업이 설명되어 있습니다. 호스트가 정확히 일치하지 않고 겹치는 두 시크릿은 마커를 받지 않으며, 에이전트 프록시는 그 중 하나만 보냅니다.

144 144 

145<h4 id="which-requests-get-the-credential">145<h4 id="which-requests-get-the-credential">

146 자격 증명을 받는 요청146 시크릿을 받는 요청

147</h4>147</h4>

148 148 

149에이전트 프록시는 요청의 호스트가 해당 자격 증명에 나열한 호스트 중 하나와 일치할 때 자격 증명을 요청에 첨부합니다. 세션은 환경의 [네트워크 액세스 수준](#access-levels)이 그렇지 않으면 허용하지 않을 때에도 해당 호스트에 도달할 수 있습니다. 단, [자격 증명을 받지 않는 호스트](#requests-that-never-get-the-credential)는 제외됩니다. 자격 증명은 삭제할 때까지 환경에서 실행되는 모든 세션에 적용되며, 누가 시작했는지는 상관없습니다.149에이전트 프록시는 요청의 호스트가 해당 시크릿에 나열한 호스트 중 하나와 일치할 때 시크릿을 요청에 첨부합니다. 세션은 환경의 [네트워크 액세스 수준](#access-levels)이 그렇지 않으면 허용하지 않을 때에도 해당 호스트에 도달할 수 있습니다. 단, [시크릿을 받지 않는 호스트](#requests-that-never-get-the-credential)는 제외됩니다. 시크릿은 삭제할 때까지 환경에서 실행되는 모든 세션에 적용되며, 누가 시작했는지는 상관없습니다.

150 150 

151<h4 id="requests-that-never-get-the-credential">151<h4 id="requests-that-never-get-the-credential">

152 자격 증명을 받지 않는 요청152 시크릿을 받지 않는 요청

153</h4>153</h4>

154 154 

155에이전트 프록시는 다음 요청에 추가한 자격 증명을 첨부하지 않습니다.155에이전트 프록시는 다음 요청에 추가한 시크릿을 첨부하지 않습니다.

156 156 

157* **GitHub**: [GitHub 프록시](#github-proxy)가 대신 GitHub에 대한 요청을 인증하므로 GitHub에 대한 API 자격 증명이 필요하지 않습니다.157* **GitHub**: [GitHub 프록시](#github-proxy)가 대신 GitHub에 대한 요청을 인증하므로 GitHub에 대한 네트워크 시크릿이 필요하지 않습니다.

158* **Anthropic API 및 공개 패키지 레지스트리**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io`, 및 `proxy.golang.org`158* **Anthropic API 및 공개 패키지 레지스트리**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io`, 및 `proxy.golang.org`

159* **Setup script 요청**: Claude Code는 [설정 스크립트](#setup-scripts)가 실행된 후 시작할 때 에이전트 프록시에 연결합니다.159* **Setup script 요청**: Claude Code는 [설정 스크립트](#setup-scripts)가 실행된 후 시작할 때 에이전트 프록시에 연결합니다.

160* **Claude Code의 텔레메트리 내보내기**: Claude Code는 자신의 [텔레메트리 내보내기](/docs/ko/monitoring-usage#telemetry-from-cloud-sessions-and-claude-tag)를 실행하는 명령이 아닌 자체적으로 보내며, 해당 요청은 에이전트 프록시를 통과하지 않습니다.160* **Claude Code의 텔레메트리 내보내기**: Claude Code는 자신의 [텔레메트리 내보내기](/docs/ko/monitoring-usage#telemetry-from-cloud-sessions-and-claude-tag)를 실행하는 명령이 아닌 자체적으로 보내며, 해당 요청은 에이전트 프록시를 통과하지 않습니다.


179 179 

180* 환경에서 이미 실행 중인 세션은 계속 작동합니다.180* 환경에서 이미 실행 중인 세션은 계속 작동합니다.

181* 환경이 선택기 및 `/remote-env`에서 사라지므로 새 세션에 대해 선택할 수 없습니다.181* 환경이 선택기 및 `/remote-env`에서 사라지므로 새 세션에 대해 선택할 수 없습니다.

182* 환경의 API 자격 증명은 실행 중인 세션에 첨부된 상태로 유지됩니다. 보관하기 전에 더 이상 원하지 않는 항목을 삭제합니다.182* 환경의 네트워크 시크릿은 실행 중인 세션에 첨부된 상태로 유지됩니다. 보관하기 전에 더 이상 원하지 않는 항목을 삭제합니다.

183* 보관된 환경에서는 어떤 표면에서도 새 세션을 시작할 수 없습니다. 환경이 저장된 [CLI 기본값](#select-an-environment-from-the-cli)이었다면, 목록에 Anthropic 호스팅 환경이 있을 때 Claude Code는 CLI 클라우드 세션을 해당 환경에서 시작하고, 그렇지 않으면 [Remote Control 브리지 환경](#the-default-environment)이 아닌 목록의 첫 번째 환경에서 시작합니다. [루틴](/docs/ko/routines#environments-and-network-access)과 같이 환경으로 명시적으로 구성된 모든 항목은 새 세션을 시작할 수 없습니다. 다른 환경을 가리키도록 합니다.183* 보관된 환경에서는 어떤 표면에서도 새 세션을 시작할 수 없습니다. 환경이 저장된 [CLI 기본값](#select-an-environment-from-the-cli)이었다면, 목록에 Anthropic 호스팅 환경이 있을 때 Claude Code는 CLI 클라우드 세션을 해당 환경에서 시작하고, 그렇지 않으면 [Remote Control 브리지 환경](#the-default-environment)이 아닌 목록의 첫 번째 환경에서 시작합니다. [루틴](/docs/ko/routines#environments-and-network-access)과 같이 환경으로 명시적으로 구성된 모든 항목은 새 세션을 시작할 수 없습니다. 다른 환경을 가리키도록 합니다.

184 184 

185<h3 id="organization-shared-environments">185<h3 id="organization-shared-environments">


197 197 

198Owner는 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)에서 조직의 [기본 환경](#the-default-environment)을 별도로 선택합니다.198Owner는 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)에서 조직의 [기본 환경](#the-default-environment)을 별도로 선택합니다.

199 199 

200모든 구성원의 공유 환경의 세션은 해당 변수를 읽으므로 비밀을 포함하지 마십시오. [자격 증명을 읽을 수 없는 세션을 제공하는 API 자격 증명](#add-api-credentials)은 Team 또는 Enterprise 플랜에서 아직 사용할 수 없습니다.200모든 구성원의 공유 환경 세션은 해당 변수를 읽으므로 비밀 정보를 포함하지 마십시오. 세션에 읽을 수 없는 키를 제공하는 [네트워크 시크릿](#add-api-credentials)은 Team 또는 Enterprise 플랜에서 아직 사용할 수 없습니다.

201 201 

202<h3 id="set-the-environment-a-claude-tag-channel-uses">202<h3 id="set-the-environment-a-claude-tag-channel-uses">

203 Claude Tag 채널이 사용하는 환경 설정203 Claude Tag 채널이 사용하는 환경 설정


239 239 

240* GitHub([별도의 프록시](#github-proxy)를 통해)240* GitHub([별도의 프록시](#github-proxy)를 통해)

241* 활성화한 [MCP 커넥터](#network-access)(트래픽이 Anthropic의 서버를 통해 이동)241* 활성화한 [MCP 커넥터](#network-access)(트래픽이 Anthropic의 서버를 통해 이동)

242* 환경의 [API 자격 증명](#add-api-credentials)에 나열한 호스트([에이전트 프록시가 건너뛰는 호스트](#requests-that-never-get-the-credential) 제외)242* 환경의 [네트워크 시크릿](#add-api-credentials)에 나열한 호스트([시크릿을 받지 않는 호스트](#requests-that-never-get-the-credential) 제외)

243* Anthropic API(Claude Code의 자체 요청의 경우, [보안 및 격리](/docs/ko/claude-code-on-the-web#security-and-isolation) 아래에 언급된 대로 **None**에서도)243* Anthropic API(Claude Code의 자체 요청의 경우, [보안 및 격리](/docs/ko/claude-code-on-the-web#security-and-isolation) 아래에 언급된 대로 **None**에서도)

244 244 

245<h3 id="allow-specific-domains">245<h3 id="allow-specific-domains">


254registry.example.com254registry.example.com

255```255```

256 256 

257이 환경의 세션은 이제 `api.example.com`, `internal.example.com`의 모든 하위 도메인 및 `registry.example.com`에 도달할 수 있으며 세션의 네트워크를 통해 다른 도메인에는 도달할 수 없습니다. [GitHub 트래픽](#github-proxy), [MCP 커넥터 트래픽](#network-access) 및 환경의 [API 자격 증명](#add-api-credentials)의 호스트에 대한 요청([에이전트 프록시가 건너뛰는 호스트](#requests-that-never-get-the-credential) 제외)은 이 허용 목록을 통과하지 않습니다. 선행 `*.`은 모든 하위 도메인과 일치합니다. [Trusted 도메인](#default-allowed-domains)도 유지하려면 **Also include default list of common package managers**를 확인합니다. 나열한 것만 허용하려면 선택 해제합니다.257이 환경의 세션은 이제 `api.example.com`, `internal.example.com`의 모든 하위 도메인 및 `registry.example.com`에 도달할 수 있으며 세션의 네트워크를 통해 다른 도메인에는 도달할 수 없습니다. [GitHub 트래픽](#github-proxy), [MCP 커넥터 트래픽](#network-access) 및 환경의 [네트워크 시크릿](#add-api-credentials)의 호스트에 대한 요청([시크릿을 받지 않는 호스트](#requests-that-never-get-the-credential) 제외)은 이 허용 목록을 통과하지 않습니다. 선행 `*.`은 모든 하위 도메인과 일치합니다. [Trusted 도메인](#default-allowed-domains)도 유지하려면 **Also include default list of common package managers**를 확인합니다. 나열한 것만 허용하려면 선택 해제합니다.

258 258 

259조직이 [아티팩트](/docs/ko/artifacts#availability)를 사용하는 경우 세션이 이를 읽기 위해 목록에 `*.frame.claudeusercontent.com`이 필요하지 않습니다. 목록이 해당 호스트를 생략하면 Claude Code는 세션의 Anthropic 연결을 통해 아티팩트 콘텐츠를 읽습니다. 두 가지 상황에서 호스트를 허용 목록에 유지합니다:259조직이 [아티팩트](/docs/ko/artifacts#availability)를 사용하는 경우 세션이 이를 읽기 위해 목록에 `*.frame.claudeusercontent.com`이 필요하지 않습니다. 목록이 해당 호스트를 생략하면 Claude Code는 세션의 Anthropic 연결을 통해 아티팩트 콘텐츠를 읽습니다. 두 가지 상황에서 호스트를 허용 목록에 유지합니다:

260 260 


292 클라우드 세션에서 사용 가능한 항목292 클라우드 세션에서 사용 가능한 항목

293</h2>293</h2>

294 294 

295Anthropic 호스팅 환경에서 각 세션은 자신의 운영 체제와 CPU 아키텍처에 관계없이 x86\_64에서 Ubuntu 24.04를 실행하는 새로운 가상 머신(VM)을 받으며, 리포지토리가 복제되고 일반적인 도구 체인이 사전 설치됩니다. 종속성이 사전 컴파일된 바이너리를 제공할 때(예: 네이티브 확장이 있는 Ruby gem 또는 사전 빌드된 Python 휠) x86\_64 Linux 빌드를 사용하여 VM과 일치합니다. 이 섹션은 Anthropic 호스팅 기본값, 기본 제공 GitHub 도구, [테스트 및 서비스 실행](#run-tests-start-services-and-add-packages) 방법, [리소스 제한](#resource-limits) 각 VM이 받는 항목, 그리고 [시간 제한](#time-limits) 장기 실행 작업에 대한 항목을 다룹니다.295Anthropic 호스팅 환경에서 각 세션은 자신의 운영 체제와 CPU 아키텍처에 관계없이 x86\_64에서 Ubuntu 24.04를 실행하는 새로운 가상 머신(VM)을 받으며, 저장소가 복제되고 일반적인 도구 체인이 사전 설치됩니다. 의존성이 사전 컴파일된 바이너리를 제공할 때(예: 네이티브 확장이 있는 Ruby gem 또는 사전 빌드된 Python 휠) VM과 일치하도록 x86\_64 Linux 빌드를 사용합니다. 이 섹션에서는 Anthropic 호스팅 기본값, 기본 제공 GitHub 도구, [테스트 및 서비스 실행](#run-tests-start-services-and-add-packages) 방법, 각 VM이 받는 [리소스 제한](#resource-limits), 그리고 장기 실행 작업에 대한 [시간 제한](#time-limits)을 다룹니다.

296 296 

297<Note>297<Note>

298 조직이 [자체 호스팅 환경](/docs/ko/self-hosted-environments)으로 라우팅하는 세션은 자신의 러너에서 실행되며 러너 이미지가 제공하는 도구를 사용합니다.298 조직이 [자체 호스팅 환경](/docs/ko/self-hosted-environments)으로 라우팅하는 세션은 자신의 러너에서 실행되며 러너 이미지가 제공하는 도구를 사용합니다.


302 설정에서 전달되는 항목302 설정에서 전달되는 항목

303</h3>303</h3>

304 304 

305클라우드 세션은 리포지토리의 새로운 복제본에서 시작됩니다. 리포지토리에 커밋한 모든 항목을 사용할 수 있습니다. 자신의 머신에만 설치하거나 구성한 항목은 세션에서 사용할 수 없습니다. 조직의 정책은 [서버 관리 설정](/docs/ko/server-managed-settings)을 통해 별도로 도착합니다.305클라우드 세션은 저장소의 새로운 복제본에서 시작됩니다. 저장소에 커밋한 모든 항목을 사용할 수 있습니다. 자신의 머신에만 설치하거나 구성한 항목은 세션에서 사용할 수 없습니다. 조직의 정책은 [서버 관리형 설정](/docs/ko/server-managed-settings)을 통해 별도로 도착합니다.

306 306 

307| | 클라우드 세션에서 사용 가능 | 이유 |307| | 클라우드 세션에서 사용 가능 | 이유 |

308| :- | :- | :- |308| :- | :- | :- |

309| 리포지토리의 `CLAUDE.md` | 예 | 복제본의 일부 |309| 저장소의 `CLAUDE.md` | 예 | 복제본의 일부 |

310| 리포지토리의 `.claude/settings.json` 훅 및 권한 규칙 | 예, 하나의 리포지토리가 있는 세션에서 | 복제본의 일부입니다. 여러 리포지토리가 있는 세션([프로젝트](/docs/ko/claude-projects#what-threads-pick-up-from-your-repositories) 스레드 포함)은 복제본 위에서 시작되며 이를 읽지 않습니다 |310| 저장소의 `.claude/settings.json` 훅 및 권한 규칙 | 예, 하나의 저장소가 있는 세션에서 | 복제본의 일부입니다. 여러 저장소가 있는 세션([프로젝트](/docs/ko/claude-projects#what-threads-pick-up-from-your-repositories) 스레드 포함)은 복제본 위에서 시작되며 이를 읽지 않습니다 |

311| 리포지토리의 `.mcp.json` MCP 서버 | 예, 하나의 리포지토리가 있는 세션에서 | 복제본의 일부이며 세션의 작업 디렉토리에서 찾습니다 |311| 저장소의 `.mcp.json` MCP 서버 | 예, 하나의 저장소가 있는 세션에서 | 복제본의 일부이며 세션의 작업 디렉터리에서 찾습니다 |

312| 리포지토리의 `.claude/rules/` | 예 | 복제본의 일부 |312| 저장소의 `.claude/rules/` | 예 | 복제본의 일부 |

313| 리포지토리의 `.claude/skills/`, `.claude/agents/`, `.claude/commands/` | 예 | 복제본의 일부 |313| 저장소의 `.claude/skills/`, `.claude/agents/`, `.claude/commands/` | 예 | 복제본의 일부 |

314| 리포지토리의 `.claude/settings.json`에 선언된 플러그인 및 마켓플레이스 | 아니오 | 클라우드 세션은 리포지토리가 [`enabledPlugins`](/docs/ko/settings-reference#enabledplugins) 아래에서 켜는 플러그인을 설치하지 않으며, [`extraKnownMarketplaces`](/docs/ko/settings-reference#extraknownmarketplaces) 아래에 나열하는 마켓플레이스의 플러그인도 포함됩니다 |314| 저장소의 `.claude/settings.json`에 선언된 플러그인 및 마켓플레이스 | 아니오 | 클라우드 세션은 저장소가 [`enabledPlugins`](/docs/ko/settings-reference#enabledplugins) 아래에서 켜는 플러그인을 설치하지 않으며, [`extraKnownMarketplaces`](/docs/ko/settings-reference#extraknownmarketplaces) 아래에 나열하는 마켓플레이스의 플러그인도 포함됩니다 |

315| 조직의 [서버 관리 설정](/docs/ko/server-managed-settings) | 예, [Claude Tag](https://claude.com/docs/claude-tag/overview) 세션 제외 | 세션이 시작될 때 Anthropic의 서버에서 가져옵니다. 클라우드 세션에서 `availableModels`이 적용되는 방식은 [표면 범위](/docs/ko/model-config#surface-coverage)를 참조하세요. MDM 또는 관리 설정 파일을 통해 장치에 배포된 설정은 세션이 Anthropic 관리 VM에서 실행되기 때문에 적용되지 않습니다. [자체 호스팅 환경](/docs/ko/self-hosted-environments)에서 세션은 [Claude Code가 관리 소스를 결합하는 방식](/docs/ko/managed-settings#how-claude-code-combines-managed-sources)에 따라 러너 이미지의 관리 설정 파일도 읽습니다 |315| 조직의 [서버 관리형 설정](/docs/ko/server-managed-settings) | 예, [Claude Tag](https://claude.com/docs/claude-tag/overview) 세션 제외 | 세션이 시작될 때 Anthropic의 서버에서 가져옵니다. 클라우드 세션에서 `availableModels`이 적용되는 방식은 [사용 환경 범위](/docs/ko/model-config#surface-coverage)를 참조하세요. MDM 또는 관리형 설정 파일을 통해 장치에 배포된 설정은 세션이 Anthropic 관리 VM에서 실행되기 때문에 적용되지 않습니다. [자체 호스팅 환경](/docs/ko/self-hosted-environments)에서 세션은 [Claude Code가 관리형 소스를 결합하는 방식](/docs/ko/managed-settings#how-claude-code-combines-managed-sources)에 따라 러너 이미지의 관리형 설정 파일도 읽습니다 |

316| 사용자 `~/.claude/CLAUDE.md` | 아니오 | 리포지토리가 아닌 머신에 있습니다 |316| 사용자 `~/.claude/CLAUDE.md` | 아니오 | 저장소가 아닌 머신에 있습니다. [저장소에 커밋하지 않고 개인 기본 설정 추가](#add-personal-preferences-without-committing-to-the-repo)를 참조하세요 |

317| 사용자 `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | 아니오 | 리포지토리가 아닌 머신에 있습니다. 대신 리포지토리의 `.claude/` 디렉토리에 커밋합니다. 클라우드 세션은 claude.ai에서 활성화한 기술을 자동으로 로드합니다 |317| 사용자 `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | 아니오 | 저장소가 아닌 머신에 있습니다. 대신 저장소의 `.claude/` 디렉터리에 커밋합니다. 클라우드 세션은 claude.ai에서 활성화한 스킬을 자동으로 로드합니다 |

318| 사용자 설정에서만 활성화된 플러그인 | 아니오 | 사용자 범위 `enabledPlugins`은 머신의 `~/.claude/settings.json`에 있습니다 |318| 사용자 설정에서만 활성화된 플러그인 | 아니오 | 사용자 범위 `enabledPlugins`은 머신의 `~/.claude/settings.json`에 있습니다 |

319| `claude mcp add`로 기본 로컬 범위 또는 사용자 범위에서 추가한 MCP 서버 | 아니오 | 이는 리포지토리가 아닌 머신의 `~/.claude.json`에 씁니다. `claude mcp add --scope project`로 서버를 추가합니다. 이는 리포지토리의 [`.mcp.json`](/docs/ko/mcp#project-scope)에 쓰고 해당 파일을 커밋합니다. 하나의 리포지토리가 있는 세션이 이를 로드합니다 |319| `claude mcp add`로 기본 로컬 범위 또는 사용자 범위에서 추가한 MCP 서버 | 아니오 | 이는 저장소가 아닌 머신의 `~/.claude.json`에 씁니다. 저장소의 [`.mcp.json`](/docs/ko/mcp#project-scope)에 쓰는 `claude mcp add --scope project`로 서버를 추가하고 해당 파일을 커밋합니다. 하나의 저장소가 있는 세션이 이를 로드합니다 |

320| 리포지토리의 `.claude/settings.json` `env` 블록의 전송 변수(예: `NODE_EXTRA_CA_CERTS` 및 [mTLS 클라이언트 인증서 변수](/docs/ko/network-config#mtls-authentication)) | 아니오 | 호스팅 환경이 세션의 API 연결을 관리하므로 Claude Code는 이러한 키를 무시하고 각 무시된 키를 세션의 디버그 로그에 기록합니다 |320| 저장소의 `.claude/settings.json` `env` 블록의 전송 변수(예: `NODE_EXTRA_CA_CERTS` 및 [mTLS 클라이언트 인증서 변수](/docs/ko/network-config#mtls-authentication)) | 아니오 | 호스팅 환경이 세션의 API 연결을 관리하므로 Claude Code는 이러한 키를 무시하고 각 무시된 키를 세션의 디버그 로그에 기록합니다 |

321| Claude가 호출하는 서비스의 API 키 및 토큰 | Pro 및 Max 플랜에서 [API 자격 증명](#add-api-credentials)으로 | 환경에 키를 한 번 추가하고 에이전트 프록시가 나열한 호스트에 대한 요청에 첨부합니다. 에이전트 프록시가 [첨부할 수 없는](#requests-that-never-get-the-credential) 키 또는 Team 또는 Enterprise 플랜의 모든 키는 환경 변수에 남아 있습니다 |321| Claude가 호출하는 서비스의 API 키 및 토큰 | Pro 및 Max 플랜에서 [네트워크 시크릿](#add-api-credentials)으로 | 환경에 키를 한 번 추가하면 에이전트 프록시가 나열한 호스트에 대한 요청에 이를 첨부합니다. 에이전트 프록시가 [첨부할 수 없는](#requests-that-never-get-the-credential) 키 또는 Team 또는 Enterprise 플랜의 모든 키는 환경 변수에 남아 있습니다 |

322| AWS SSO와 같은 대화형 인증 | 아니오 | 지원되지 않습니다. SSO는 클라우드 세션에서 실행할 수 없는 브라우저 기반 로그인이 필요합니다 |322| AWS SSO와 같은 대화형 인증 | 아니오 | 지원되지 않습니다. SSO는 클라우드 세션에서 실행할 수 없는 브라우저 기반 로그인이 필요합니다 |

323 323 

324자신의 구성을 클라우드 세션에서 사용 가능하게 하려면 리포지토리에 커밋합니다.324자신의 구성을 클라우드 세션에서 사용 가능하게 하려면 저장소에 커밋합니다.

325 325 

326환경을 사용하는 모든 사람이 환경 변수 및 설정 스크립트를 읽을 수 있습니다. 대화 상자의 **Environment variables** 아래의 참고 사항이 이를 말하고 비밀을 추가하지 않도록 경고합니다. Pro 및 Max 플랜에서 에이전트 프록시가 첨부할 수 있는 키에 대해 [API 자격 증명](#add-api-credentials)을 대신 사용합니다.326환경을 사용하는 모든 사람이 환경 변수 및 설정 스크립트를 읽을 수 있습니다. 대화 상자의 **Environment variables** 아래의 참고 사항이 이를 안내하고 비밀을 추가하지 않도록 경고합니다. Pro 및 Max 플랜에서는 에이전트 프록시가 첨부할 수 있는 키를 대신 [네트워크 시크릿](#add-api-credentials)으로 저장합니다.

327 

328<h4 id="add-personal-preferences-without-committing-to-the-repo">

329 저장소에 커밋하지 않고 개인 기본 설정 추가

330</h4>

331 

332Anthropic 호스팅 환경에서는 공유 저장소에 넣고 싶지 않은 기본 설정을 위해 `~/.claude/CLAUDE.md`를 작성하는 [설정 스크립트](#setup-scripts)를 추가합니다. Claude Code는 세션에서 해당 파일을 [사용자 지침](/docs/ko/memory#choose-where-to-put-claude-md-files)으로 로드합니다. 다음 예시는 커밋 메시지 기본 설정을 지정합니다:

333 

334```bash theme={null}

335#!/bin/bash

336mkdir -p ~/.claude

337cat > ~/.claude/CLAUDE.md <<'EOF'

338Use conventional commit messages.

339EOF

340```

341 

342스크립트는 [공유 환경](#organization-shared-environments)이 아닌 자신의 환경 중 하나에 추가합니다.

343 

344다음 클라우드 세션에서 `/context`를 실행하고 **Memory files** 아래에 `/root/.claude/CLAUDE.md`가 표시되는지 확인합니다.

327 345 

328<h3 id="installed-tools">346<h3 id="installed-tools">

329 설치된 도구347 설치된 도구


347 365 

348¹ Bun이 설치되어 있지만 패키지 페칭에 대해 알려진 [프록시 호환성 문제](#install-dependencies-with-a-sessionstart-hook)가 있습니다.366¹ Bun이 설치되어 있지만 패키지 페칭에 대해 알려진 [프록시 호환성 문제](#install-dependencies-with-a-sessionstart-hook)가 있습니다.

349 367 

350이 표의 대부분의 도구 버전을 얻으려면 Claude에게 클라우드 세션에서 `check-tools`를 실행하도록 요청합니다. 이는 슬래시 명령이 아닌 세션 VM에 설치된 셸 명령입니다. [Claude가 모든 VM 명령을 실행](#run-tests-start-services-and-add-packages)하기 때문에 요청합니다. 이를 보고하지 않는 도구(예: Ruby, PHP, bun, PostgreSQL 또는 Redis)의 경우 Claude에게 도구의 자체 버전 명령을 실행하도록 요청합니다(예: `psql --version`).368이 표의 대부분의 도구 버전을 얻으려면 Claude에게 클라우드 세션에서 `check-tools`를 실행하도록 요청합니다. 이는 `/`로 입력하는 명령이 아니라 세션 VM에 설치된 셸 명령입니다. [Claude가 모든 VM 명령을 실행](#run-tests-start-services-and-add-packages)하기 때문에 Claude에게 요청합니다. 이를 보고하지 않는 도구(예: Ruby, PHP, bun, PostgreSQL 또는 Redis)의 경우 Claude에게 도구의 자체 버전 명령을 실행하도록 요청합니다(예: `psql --version`).

351 369 

352Node.js 버전은 `/opt/node20`, `/opt/node21` 및 `/opt/node22`에 설치되며, 기본적으로 22가 `PATH`에 있습니다. 다른 버전으로 작업하려면 Claude에게 해당 버전의 `bin` 디렉토리(예: `/opt/node20/bin`)를 `PATH`에 앞에 추가하도록 요청합니다.370Node.js 버전은 `/opt/node20`, `/opt/node21` 및 `/opt/node22`에 설치되며, 기본적으로 22가 `PATH`에 있습니다. 다른 버전으로 작업하려면 Claude에게 해당 버전의 `bin` 디렉터리(예: `/opt/node20/bin`)를 `PATH` 앞에 추가하도록 요청합니다.

353 371 

354.NET SDK와 같은 이 목록 외의 도구 체인은 패키지 레지스트리가 [기본 허용 목록](#default-allowed-domains)에 있더라도 사전 설치되지 않습니다. [설정 스크립트](#setup-scripts)로 설치합니다.372.NET SDK와 같은 이 목록 외의 도구 체인은 패키지 레지스트리가 [기본 허용 목록](#default-allowed-domains)에 있더라도 사전 설치되지 않습니다. [설정 스크립트](#setup-scripts)로 설치합니다.

355 373 

356<h3 id="work-with-github-issues-and-pull-requests">374<h3 id="work-with-github-issues-and-pull-requests">

357 GitHub 이슈 및 풀 요청 작업375 GitHub 이슈 및 풀 리퀘스트 작업

358</h3>376</h3>

359 377 

360클라우드 세션에는 Claude가 이슈를 읽고, 풀 요청을 나열하고, 차이를 가져오고, 설정 없이 댓글을 게시할 수 있는 기본 제공 GitHub 도구가 포함됩니다. 이러한 도구는 [GitHub 프록시](#github-proxy)를 통해 인증하며, [GitHub 인증 옵션](/docs/ko/claude-code-on-the-web#github-authentication-options) 아래에서 구성한 방법을 사용하므로 토큰이 컨테이너에 들어가지 않습니다.378클라우드 세션에는 Claude가 별도 설정 없이 이슈를 읽고, 풀 리퀘스트를 나열하고, diff를 가져오고, 댓글을 게시할 수 있는 기본 제공 GitHub 도구가 포함됩니다. 이러한 도구는 [GitHub 프록시](#github-proxy)를 통해 인증하며, [GitHub 인증 옵션](/docs/ko/claude-code-on-the-web#github-authentication-options) 아래에서 구성한 방법을 사용하므로 토큰이 컨테이너에 들어가지 않습니다.

361 379 

362[환경 설정](#set-environment-variables)에서 `GH_TOKEN` 또는 `GITHUB_TOKEN`을 직접 설정하거나 둘 다 설정하지 않고 [GitHub 프록시](#github-proxy)가 인증을 처리하도록 할 수 있습니다:380[환경 설정](#set-environment-variables)에서 `GH_TOKEN` 또는 `GITHUB_TOKEN`을 직접 설정하거나 둘 다 설정하지 않고 [GitHub 프록시](#github-proxy)가 인증을 처리하도록 할 수 있습니다:

363 381 

364* 토큰을 설정하면 컨테이너에 변경되지 않고 전달되므로 스크립트 및 GitHub의 [`gh` CLI](https://cli.github.com)가 직접 사용합니다.382* 토큰을 설정하면 컨테이너에 변경되지 않고 전달되므로 스크립트 및 GitHub의 [`gh` CLI](https://cli.github.com)가 직접 사용합니다.

365* 둘 다 설정하지 않고 [GitHub 프록시](#github-proxy)가 세션에 대한 인증을 처리하는 경우 두 변수 모두 Claude가 실행하는 명령에서 자리 표시자 문자열 `proxy-injected`로 읽으며, 프록시는 아웃바운드 GitHub 요청에서 실제 자격 증명을 대체합니다. `gh`는 자신의 토큰 없이 작동하지만 `GITHUB_TOKEN`을 직접 읽는 스크립트는 사용 가능한 토큰이 아닌 자리 표시자를 받습니다.383* 둘 다 설정하지 않고 [GitHub 프록시](#github-proxy)가 세션에 대한 인증을 처리하는 경우 두 변수 모두 Claude가 실행하는 명령에서 자리 표시자 문자열 `proxy-injected`로 읽히며, 프록시는 아웃바운드 GitHub 요청에서 실제 자격 증명으로 대체합니다. `gh`는 자신의 토큰 없이 작동하지만 `GITHUB_TOKEN`을 직접 읽는 스크립트는 사용 가능한 토큰이 아닌 자리 표시자를 받습니다.

366 384 

367설정한 토큰은 일반 환경 변수이므로 환경을 사용하는 모든 사람이 읽을 수 있습니다. 프록시 경로는 자격 증명을 환경 구성 및 세션 VM 외부에 유지합니다.385설정한 토큰은 일반 환경 변수이므로 환경을 사용하는 모든 사람이 읽을 수 있습니다. 프록시 경로는 자격 증명을 환경 구성 및 세션 VM 외부에 유지합니다.

368 386 


388 테스트 실행, 서비스 시작 및 패키지 추가406 테스트 실행, 서비스 시작 및 패키지 추가

389</h3>407</h3>

390 408 

391세션 VM에 셸이 없습니다. Claude가 모든 명령을 실행하므로 이 섹션의 작업을 프롬프트의 요청으로 표현합니다.409세션 VM에 셸로 접속할 수 없습니다. Claude가 모든 명령을 실행하므로 이 섹션의 작업을 프롬프트의 요청으로 표현합니다.

392 410 

393<h4 id="run-tests">411<h4 id="run-tests">

394 테스트 실행412 테스트 실행

395</h4>413</h4>

396 414 

397Claude는 작업을 수행하는 과정에서 테스트를 실행합니다. 프롬프트에서 "fix the failing tests in `tests/`" 또는 "run pytest after each change"와 같이 요청합니다. pytest 및 cargo test와 같은 [사전 설치된 도구 체인](#installed-tools)과 함께 제공되는 테스트 러너는 추가 설정 없이 작동합니다. jest와 같이 프로젝트가 종속성으로 선언하는 러너는 종속성과 함께 설치됩니다.415Claude는 작업을 수행하는 과정에서 테스트를 실행합니다. 프롬프트에서 "fix the failing tests in `tests/`" 또는 "run pytest after each change"와 같이 요청합니다. pytest 및 cargo test와 같은 [사전 설치된 도구 체인](#installed-tools)과 함께 제공되는 테스트 러너는 추가 설정 없이 작동합니다. jest와 같이 프로젝트가 의존성으로 선언하는 러너는 의존성과 함께 설치됩니다.

398 416 

399<h4 id="start-services">417<h4 id="start-services">

400 서비스 시작418 서비스 시작

401</h4>419</h4>

402 420 

403PostgreSQL 및 Redis는 사전 설치되어 있지만 기본적으로 실행되지 않습니다. 필요한 것을 시작하도록 Claude에게 요청합니다. 실행하는 명령은:421PostgreSQL 및 Redis는 사전 설치되어 있지만 기본적으로 실행되지 않습니다. 필요한 것을 시작하도록 Claude에게 요청합니다. 실행하는 명령은 다음과 같습니다:

404 422 

405```bash theme={null}423```bash theme={null}

406service postgresql start424service postgresql start


430* 16GB의 RAM448* 16GB의 RAM

431* 30GB의 디스크449* 30GB의 디스크

432 450 

433VM은 대규모 빌드 작업 또는 메모리 집약적인 테스트와 같이 훨씬 더 많은 메모리가 필요한 작업을 중지할 수 있습니다. 이러한 제한을 초과하는 워크로드의 경우 [Remote Control](/docs/ko/remote-control)을 사용하여 자신의 하드웨어에서 Claude Code를 실행하거나 조직이 운영하는 컴퓨팅에서 [자체 호스팅 환경](/docs/ko/self-hosted-environments)에서 클라우드 세션을 실행합니다.451VM은 대규모 빌드 작업 또는 메모리 집약적인 테스트와 같이 훨씬 더 많은 메모리가 필요한 작업을 중지할 수 있습니다. 이러한 제한을 초과하는 워크로드의 경우 [Remote Control](/docs/ko/remote-control)을 사용하여 자신의 하드웨어에서 Claude Code를 실행하거나 조직이 운영하는 컴퓨팅의 [자체 호스팅 환경](/docs/ko/self-hosted-environments)에서 클라우드 세션을 실행합니다.

434 452 

435<h3 id="time-limits">453<h3 id="time-limits">

436 시간 제한454 시간 제한


438 456 

439Anthropic 호스팅 환경에서 이러한 시간 제한은 빌드, 설치 또는 테스트 실행과 같은 클라우드 세션의 장기 실행 작업에 적용됩니다. 각 항목은 제한을 정의하는 섹션으로 연결됩니다.457Anthropic 호스팅 환경에서 이러한 시간 제한은 빌드, 설치 또는 테스트 실행과 같은 클라우드 세션의 장기 실행 작업에 적용됩니다. 각 항목은 제한을 정의하는 섹션으로 연결됩니다.

440 458 

441* **Claude가 실행하는 명령**: 클라우드 환경은 자신의 명령 타임아웃을 설정하지 않으므로 Bash 도구의 기본값이 적용됩니다. Claude는 기본적으로 명령을 2분 동안 기다리며 최대 10분까지 요청할 수 있습니다.459* **Claude가 실행하는 명령**: 클라우드 환경은 자체 명령 타임아웃을 설정하지 않으므로 Bash 도구의 기본값이 적용됩니다. Claude는 기본적으로 포그라운드 명령을 2분 동안 기다리며 최대 10분까지 요청할 수 있습니다.

442 460 

443 명령이 [타임아웃](/docs/ko/tools-reference#timeout-and-output-limits)에 도달하면 Claude Code는 명령이 `sleep`으로 시작하지 않는 한 명령을 중지하는 대신 [백그라운드로 이동](/docs/ko/tools-reference#foreground-commands-that-move-to-the-background)합니다. 이런 방식으로 이동된 명령은 Claude Code가 [백그라운드 시간 제한](/docs/ko/tools-reference#time-limit-for-background-commands)에서 중지하기 전에 최대 30분 더 실행될 수 있습니다. `BASH_DEFAULT_TIMEOUT_MS`를 `1800000` 밀리초 이상으로 설정하면 해당 제한과 포그라운드 기본값이 모두 길어집니다.461 명령이 [타임아웃](/docs/ko/tools-reference#timeout-and-output-limits)에 도달하면 Claude Code는 명령이 `sleep`으로 시작하지 않는 한 명령을 중지하는 대신 [백그라운드로 이동](/docs/ko/tools-reference#foreground-commands-that-move-to-the-background)합니다. 이런 방식으로 이동된 명령은 Claude Code가 [백그라운드 시간 제한](/docs/ko/tools-reference#time-limit-for-background-commands)에서 중지하기 전에 최대 30분 더 실행될 수 있습니다. `BASH_DEFAULT_TIMEOUT_MS`를 `1800000` 밀리초 이상으로 설정하면 해당 제한과 포그라운드 기본값이 모두 길어집니다.

444* **SessionStart 훅**: Claude Code는 [`timeout`](/docs/ko/hooks#common-fields)을 초 단위로 설정하지 않으면 600초 후 `command` 훅을 취소합니다. Claude Code는 [`async: true`](/docs/ko/hooks#run-hooks-in-the-background)로 실행하는 훅에 타임아웃을 적용하지 않습니다.462* **SessionStart 훅**: Claude Code는 훅 항목에 [`timeout`](/docs/ko/hooks#common-fields)을 초 단위로 설정하지 않으면 600초 후 `command` 훅을 취소합니다. Claude Code는 [`async: true`](/docs/ko/hooks#run-hooks-in-the-background)로 실행하는 훅에 타임아웃을 적용하지 않습니다.

445* **설정 스크립트**: 대략 5분 이상 걸리는 스크립트는 캐시되지 않습니다. [스크립트 요구 사항](#script-requirements)은 그 이하로 유지하는 방법을 다룹니다.463* **설정 스크립트**: 대략 5분 이상 걸리는 스크립트는 캐시되지 않습니다. [스크립트 요구 사항](#script-requirements)은 그 이하로 유지하는 방법을 다룹니다.

446* **유휴 세션**: 몇 분 동안 활동이 없으면 세션의 VM이 파일이 저장된 상태로 일시 중지되고, 일시 중지된 VM은 나중에 회수될 수 있습니다. [환경 변수 설정](#set-environment-variables)은 각 경우에 세션이 선택하는 항목을 설명하고, [Environment expired](/docs/ko/claude-code-on-the-web#environment-expired)는 VM이 회수된 세션을 다시 여는 방법을 다룹니다.464* **유휴 세션**: 몇 분 동안 활동이 없으면 세션의 VM이 파일이 저장된 상태로 일시 중지되고, 일시 중지된 VM은 나중에 회수될 수 있습니다. [환경 변수 설정](#set-environment-variables)은 각 경우에 세션이 반영하는 항목을 설명하고, [Environment expired](/docs/ko/claude-code-on-the-web#environment-expired)는 VM이 회수된 세션을 다시 여는 방법을 다룹니다.

447 465 

448환경의 세션에 대한 명령 타임아웃을 높이려면 [`BASH_DEFAULT_TIMEOUT_MS` 및 `BASH_MAX_TIMEOUT_MS`](/docs/ko/env-vars#variables)를 [환경 변수](#set-environment-variables)에 추가합니다. 둘 다 밀리초를 사용합니다. 예를 들어 `BASH_DEFAULT_TIMEOUT_MS=600000`은 10분을 기본값으로 만듭니다.466환경의 세션에 대한 명령 타임아웃을 높이려면 [`BASH_DEFAULT_TIMEOUT_MS` 및 `BASH_MAX_TIMEOUT_MS`](/docs/ko/env-vars#variables)를 해당 환경의 [환경 변수](#set-environment-variables)에 추가합니다. 둘 다 밀리초 단위입니다. 예를 들어 `BASH_DEFAULT_TIMEOUT_MS=600000`은 10분을 기본값으로 만듭니다.

449 467 

450<h2 id="setup-scripts">468<h2 id="setup-scripts">

451 설정 스크립트469 설정 스크립트

Details

1586 1586 

1587세션은 대표적인 토큰 수를 포함한 현실적인 흐름을 따릅니다:1587세션은 대표적인 토큰 수를 포함한 현실적인 흐름을 따릅니다:

1588 1588 

1589* **아무것도 입력하기 전**: CLAUDE.md, 자동 메모리, MCP 도구 이름, 그리고 스킬 설명이 모두 컨텍스트에 로드됩니다. [AGENTS.md 파일](/docs/ko/memory#agents-md)도 자신의 것으로 또는 CLAUDE.md와 함께 로드될 수 있습니다. 사용자의 설정에 따라 [출력 스타일](/docs/ko/output-styles) 또는 [`--append-system-prompt`](/docs/ko/cli-reference)의 텍스트와 같이 추가 항목이 있을 수 있습니다.1589* **아무것도 입력하기 전**: CLAUDE.md, 자동 메모리, MCP 도구 이름, 그리고 스킬 설명이 모두 컨텍스트에 로드됩니다. [AGENTS.md 파일](/docs/ko/memory#agents-md)이 CLAUDE.md 대신 로드될 수도 있습니다. 사용자의 설정에 따라 [출력 스타일](/docs/ko/output-styles) 또는 [`--append-system-prompt`](/docs/ko/cli-reference)의 텍스트와 같이 추가 항목이 있을 수 있습니다.

1590* **Claude가 작업할 때**: 각 파일 읽기가 컨텍스트에 추가되고, [경로 범위 규칙](/docs/ko/memory#path-specific-rules)이 일치하는 파일과 함께 자동으로 로드되며, [PostToolUse 훅](/docs/ko/hooks-guide)이 각 편집 후에 실행됩니다.1590* **Claude가 작업할 때**: 각 파일 읽기가 컨텍스트에 추가되고, [경로 범위 규칙](/docs/ko/memory#path-specific-rules)이 일치하는 파일과 함께 자동으로 로드되며, [PostToolUse 훅](/docs/ko/hooks-guide)이 각 편집 후에 실행됩니다.

1591* **후속 프롬프트**: [서브에이전트](/docs/ko/sub-agents)가 자신의 별도 컨텍스트 윈도우에서 연구를 처리하므로 대용량 파일 읽기가 사용자의 윈도우에서 벗어납니다. 요약과 작은 메타데이터 트레일러만 돌아옵니다.1591* **후속 프롬프트**: [서브에이전트](/docs/ko/sub-agents)가 자신의 별도 컨텍스트 윈도우에서 연구를 처리하므로 대용량 파일 읽기가 사용자의 윈도우에서 벗어납니다. 요약과 작은 메타데이터 트레일러만 돌아옵니다.

1592* **끝에서**: `/compact`가 대화를 구조화된 요약으로 바꿉니다. 대부분의 시작 콘텐츠는 자동으로 다시 로드됩니다. 아래 표는 각 메커니즘에 어떤 일이 발생하는지 보여줍니다.1592* **끝에서**: `/compact`가 대화를 구조화된 요약으로 바꿉니다. 대부분의 시작 콘텐츠는 자동으로 다시 로드됩니다. 아래 표는 각 메커니즘에 어떤 일이 발생하는지 보여줍니다.

costs.md +1 −1

Details

394* **복잡한 작업에 plan mode 사용**: Shift+Tab을 눌러 구현 전에 [plan mode](/docs/ko/permission-modes#analyze-before-you-edit-with-plan-mode)에 들어가십시오. Claude는 코드베이스를 탐색하고 승인을 위한 접근 방식을 제안하여, 초기 방향이 잘못되었을 때 비용이 많이 드는 재작업을 방지합니다.394* **복잡한 작업에 plan mode 사용**: Shift+Tab을 눌러 구현 전에 [plan mode](/docs/ko/permission-modes#analyze-before-you-edit-with-plan-mode)에 들어가십시오. Claude는 코드베이스를 탐색하고 승인을 위한 접근 방식을 제안하여, 초기 방향이 잘못되었을 때 비용이 많이 드는 재작업을 방지합니다.

395* **조기에 방향 수정**: Claude가 잘못된 방향으로 가기 시작하면, Escape를 눌러 즉시 중지하십시오. `/rewind`를 사용하거나 Escape를 두 번 눌러 대화 및 코드를 이전 checkpoint로 복원하십시오.395* **조기에 방향 수정**: Claude가 잘못된 방향으로 가기 시작하면, Escape를 눌러 즉시 중지하십시오. `/rewind`를 사용하거나 Escape를 두 번 눌러 대화 및 코드를 이전 checkpoint로 복원하십시오.

396* **검증 대상 제공**: 테스트 케이스를 포함하고, 스크린샷을 붙여넣거나, 프롬프트에서 예상 출력을 정의하십시오. Claude가 자신의 작업을 검증할 수 있으면, 수정을 요청해야 하기 전에 문제를 포착합니다.396* **검증 대상 제공**: 테스트 케이스를 포함하고, 스크린샷을 붙여넣거나, 프롬프트에서 예상 출력을 정의하십시오. Claude가 자신의 작업을 검증할 수 있으면, 수정을 요청해야 하기 전에 문제를 포착합니다.

397* **증분적으로 테스트**: 한 파일을 작성하고, 테스트한 다음, 계속하십시오. 이는 문제가 저렴하게 수정될 수 있을 때 조기에 포착합니다.397* **증분적으로 테스트**: 한 파일을 작성하고, 테스트한 다음, 계속하십시오. 이렇게 하면 문제를 조기에 포착할 수 있습니다.

398 398 

399<h2 id="background-token-usage">399<h2 id="background-token-usage">

400 백그라운드 토큰 사용량400 백그라운드 토큰 사용량

desktop.md +1 −1

Details

1092실행 중인 데스크톱 앱의 버전을 보려면:1092실행 중인 데스크톱 앱의 버전을 보려면:

1093 1093 

1094* **macOS**: 메뉴 모음에서 **Claude**를 클릭한 다음 **About Claude**를 클릭합니다1094* **macOS**: 메뉴 모음에서 **Claude**를 클릭한 다음 **About Claude**를 클릭합니다

1095* **Windows**: **Help**를 클릭한 다음 **About**을 클릭합니다1095* **Windows**: **Help**를 클릭한 다음 **About Claude**를 클릭합니다

1096 1096 

1097버전 번호를 클릭하여 클립보드에 복사합니다.1097버전 번호를 클릭하여 클립보드에 복사합니다.

1098 1098 

Details

92* **Cmd+S**로 스크린샷 또는 **Cmd+R**로 화면 녹화 저장 (창의 캡처 버튼 또는 단축키 사용, 파일은 Desktop에 저장됨)92* **Cmd+S**로 스크린샷 또는 **Cmd+R**로 화면 녹화 저장 (창의 캡처 버튼 또는 단축키 사용, 파일은 Desktop에 저장됨)

93* **Detach simulator**를 클릭하여 기기 스트리밍 중지 (종료하지 않음), 창을 **Attach simulator** 상태로 반환93* **Detach simulator**를 클릭하여 기기 스트리밍 중지 (종료하지 않음), 창을 **Attach simulator** 상태로 반환

94 94 

95시뮬레이터의 비디오 스트림을 조정하려면 창의 **Display** 메뉴를 엽니다. Mac에 부담이 되면 **Frame rate** 또는 **Resolution**을 낮춥니다. 두 설정 모두 창이 기기를 표시하는 방식을 변경하며, 앱 실행 방식은 변경하지 않습니다.95창에 **Display** 메뉴가 표시되면 이 메뉴를 사용하여 시뮬레이터의 비디오 스트림을 조정합니다. Mac에 부담이 되면 **Frame rate** 또는 **Resolution**을 낮춥니다. 두 설정 모두 창이 기기를 표시하는 방식을 변경하며, 앱 실행 방식은 변경하지 않습니다.

96 96 

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

98 98 

env-vars.md +1 −0

Details

354| `CLAUDE_CODE_PERFORCE_MODE` | Perforce 인식 쓰기 보호를 활성화하려면 `1`로 설정합니다. 설정하면 대상 파일에 소유자 쓰기 비트가 없을 경우 Edit, Write, NotebookEdit이 `p4 edit <file>` 힌트와 함께 실패합니다. Perforce는 동기화된 파일이 `p4 edit`으로 열릴 때까지 이 비트를 해제합니다. 이렇게 하면 Claude Code가 Perforce 변경 추적을 우회하지 못합니다 |354| `CLAUDE_CODE_PERFORCE_MODE` | Perforce 인식 쓰기 보호를 활성화하려면 `1`로 설정합니다. 설정하면 대상 파일에 소유자 쓰기 비트가 없을 경우 Edit, Write, NotebookEdit이 `p4 edit <file>` 힌트와 함께 실패합니다. Perforce는 동기화된 파일이 `p4 edit`으로 열릴 때까지 이 비트를 해제합니다. 이렇게 하면 Claude Code가 Perforce 변경 추적을 우회하지 못합니다 |

355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | 플러그인 루트 디렉터리를 재정의합니다. 이름과 달리 캐시 자체가 아니라 상위 디렉터리를 설정합니다. 마켓플레이스와 플러그인 캐시는 이 경로 아래의 하위 디렉터리에 있습니다. 기본값은 `~/.claude/plugins`입니다 |355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | 플러그인 루트 디렉터리를 재정의합니다. 이름과 달리 캐시 자체가 아니라 상위 디렉터리를 설정합니다. 마켓플레이스와 플러그인 캐시는 이 경로 아래의 하위 디렉터리에 있습니다. 기본값은 `~/.claude/plugins`입니다 |

356| `CLAUDE_CODE_PLUGIN_DIRS` | 세션에 로드할 플러그인 디렉터리로, 각각 [`--plugin-dir`](/docs/ko/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) 플래그와 같은 방식으로 로드됩니다. 여러 경로는 Unix에서는 `:`, Windows에서는 `;`로 구분합니다. Claude Code는 상대 경로를 건너뛰므로 각 경로를 절대 경로로 지정하거나 `~`로 시작합니다. Claude Code v2.1.280 이상이 필요합니다. [한 세션에 플러그인 로드](/docs/ko/plugins/create#load-a-directory-or-archive-for-one-session)를 참조하세요 |356| `CLAUDE_CODE_PLUGIN_DIRS` | 세션에 로드할 플러그인 디렉터리로, 각각 [`--plugin-dir`](/docs/ko/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) 플래그와 같은 방식으로 로드됩니다. 여러 경로는 Unix에서는 `:`, Windows에서는 `;`로 구분합니다. Claude Code는 상대 경로를 건너뛰므로 각 경로를 절대 경로로 지정하거나 `~`로 시작합니다. Claude Code v2.1.280 이상이 필요합니다. [한 세션에 플러그인 로드](/docs/ko/plugins/create#load-a-directory-or-archive-for-one-session)를 참조하세요 |

357| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | [mod](/docs/ko/plugins/mods/overview)의 파일이 변경될 때 Claude Code가 mod를 다시 로드할지 여부를 제어합니다. 다시 로드는 `--plugin-dir`로 디렉터리에서 로드한 mod에 적용되며, 대화형 세션에서는 기본적으로 켜져 있습니다. 비대화형 세션에서도 켜려면 `1`로, 모든 세션에서 끄려면 `0`으로 설정합니다. Claude Code v2.1.287 이상이 필요합니다. [mod 설정 및 환경 변수](/docs/ko/plugins/mods/reference#settings-and-environment-variables)를 참조하세요 |

357| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | 플러그인 마켓플레이스를 복제하거나 새로 고치기 위한 타임아웃(밀리초)입니다(기본값: 120000). 큰 저장소나 느린 네트워크 연결의 경우 이 값을 늘립니다. [Git clone timed out](/docs/ko/plugins/troubleshooting#git-clone-timed-out-after-120s)을 참조하세요 |358| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | 플러그인 마켓플레이스를 복제하거나 새로 고치기 위한 타임아웃(밀리초)입니다(기본값: 120000). 큰 저장소나 느린 네트워크 연결의 경우 이 값을 늘립니다. [Git clone timed out](/docs/ko/plugins/troubleshooting#git-clone-timed-out-after-120s)을 참조하세요 |

358| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | 마켓플레이스 새로 고침이 원격에 연결하거나 인증할 수 없을 때 다시 복제를 시도하지 않고 기존 마켓플레이스 체크아웃을 계속 사용하려면 `1`로 설정합니다. 다시 복제해도 같은 방식으로 실패할 오프라인 또는 에어갭 환경에서 유용합니다. [오프라인 환경에서 마켓플레이스 업데이트 실패](/docs/ko/plugins/troubleshooting#marketplace-updates-keep-failing-offline)를 참조하세요 |359| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | 마켓플레이스 새로 고침이 원격에 연결하거나 인증할 수 없을 때 다시 복제를 시도하지 않고 기존 마켓플레이스 체크아웃을 계속 사용하려면 `1`로 설정합니다. 다시 복제해도 같은 방식으로 실패할 오프라인 또는 에어갭 환경에서 유용합니다. [오프라인 환경에서 마켓플레이스 업데이트 실패](/docs/ko/plugins/troubleshooting#marketplace-updates-keep-failing-offline)를 참조하세요 |

359| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | GitHub `owner/repo` 약식 소스를 SSH 대신 HTTPS로 복제하려면 `1`로 설정합니다. 플러그인 설치 및 업데이트와 `/plugin marketplace add` 및 `update`에 적용됩니다. CI 러너, 컨테이너 또는 `github.com`용 SSH 키가 구성되지 않은 모든 환경에서 유용합니다 |360| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | GitHub `owner/repo` 약식 소스를 SSH 대신 HTTPS로 복제하려면 `1`로 설정합니다. 플러그인 설치 및 업데이트와 `/plugin marketplace add` 및 `update`에 적용됩니다. CI 러너, 컨테이너 또는 `github.com`용 SSH 키가 구성되지 않은 모든 환경에서 유용합니다 |

errors.md +3 −4

Details

197| `Cloud sessions cannot be created from a --restricted session` | [명령줄 오류](#cloud-sessions-cannot-be-created-from-a-restricted-session) |197| `Cloud sessions cannot be created from a --restricted session` | [명령줄 오류](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

198| `Cloud sessions are disabled by your organization's policy` | [명령줄 오류](#cloud-sessions-are-disabled-by-your-organizations-policy) |198| `Cloud sessions are disabled by your organization's policy` | [명령줄 오류](#cloud-sessions-are-disabled-by-your-organizations-policy) |

199| `Couldn't verify your organization's policy for cloud sessions` | [명령줄 오류](#cloud-sessions-are-disabled-by-your-organizations-policy) |199| `Couldn't verify your organization's policy for cloud sessions` | [명령줄 오류](#cloud-sessions-are-disabled-by-your-organizations-policy) |

200| `Cloud sessions need a claude.ai sign-in` | [조직 UUID를 가져올 수 없음](/docs/ko/claude-code-on-the-web#unable-to-get-organization-uuid) |

200| `Error: --json-schema is not a valid JSON Schema` | [명령줄 오류](#the-json-schema-value-is-not-a-valid-json-schema) |201| `Error: --json-schema is not a valid JSON Schema` | [명령줄 오류](#the-json-schema-value-is-not-a-valid-json-schema) |

201| `Error: Invalid --agents configuration:` | [명령줄 오류](#invalid-agents-configuration) |202| `Error: Invalid --agents configuration:` | [명령줄 오류](#invalid-agents-configuration) |

202| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [명령줄 오류](#invalid-agents-configuration) |203| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [명령줄 오류](#invalid-agents-configuration) |


387* 요청 중간에 컴퓨터가 절전 모드로 전환되어 끊어졌다고 Claude Code가 감지한 연결. Claude Code는 이를 위의 규칙에 따른 끊어진 연결로 계산합니다. 재시도 레이블이 특정 이유를 명시하면 `Connection lost while your computer was asleep`로 표시되며, Claude가 사고를 마친 후 텍스트나 도구 호출을 시작하기 전에 턴이 종료되면 메시지는 `Your computer went to sleep before a response was produced`로 표시됩니다.388* 요청 중간에 컴퓨터가 절전 모드로 전환되어 끊어졌다고 Claude Code가 감지한 연결. Claude Code는 이를 위의 규칙에 따른 끊어진 연결로 계산합니다. 재시도 레이블이 특정 이유를 명시하면 `Connection lost while your computer was asleep`로 표시되며, Claude가 사고를 마친 후 텍스트나 도구 호출을 시작하기 전에 턴이 종료되면 메시지는 `Your computer went to sleep before a response was produced`로 표시됩니다.

388* 응답 헤더는 도착했지만 Claude의 응답이 도착하지 않았거나, Claude가 사고를 마쳤지만 텍스트나 도구 호출을 시작하지 않은 경우의 정체된 응답 스트림: Claude Code는 정체된 연결을 중단하고 위의 10회 시도 예산 외에 최대 1회까지 요청을 다시 발행합니다. Claude가 사고를 마친 후 텍스트나 도구 호출을 시작하기 전에 응답이 두 번째로 정체되면 Claude Code는 `The response stalled before a response was produced`로 턴을 종료합니다.389* 응답 헤더는 도착했지만 Claude의 응답이 도착하지 않았거나, Claude가 사고를 마쳤지만 텍스트나 도구 호출을 시작하지 않은 경우의 정체된 응답 스트림: Claude Code는 정체된 연결을 중단하고 위의 10회 시도 예산 외에 최대 1회까지 요청을 다시 발행합니다. Claude가 사고를 마친 후 텍스트나 도구 호출을 시작하기 전에 응답이 두 번째로 정체되면 Claude Code는 `The response stalled before a response was produced`로 턴을 종료합니다.

389* API가 [첫 바이트 기한이 실행되는](/docs/ko/network-config#streaming-idle-watchdogs) 연결에서 응답 헤더로 응답하지 않는 스트리밍 요청: Claude Code는 기한에서 중단하고 재시도 예산 내에서 모델 요청당 최대 1회까지 다시 보낸 후, 해당 시도도 응답이 없으면 [No response from API](#no-response-from-api)로 턴을 종료합니다. 다른 연결에서는 요청이 `API_TIMEOUT_MS`를 기다립니다. `CLAUDE_CODE_RETRY_WATCHDOG`를 설정하면 1회 재시도 제한이 적용되지 않습니다.390* API가 [첫 바이트 기한이 실행되는](/docs/ko/network-config#streaming-idle-watchdogs) 연결에서 응답 헤더로 응답하지 않는 스트리밍 요청: Claude Code는 기한에서 중단하고 재시도 예산 내에서 모델 요청당 최대 1회까지 다시 보낸 후, 해당 시도도 응답이 없으면 [No response from API](#no-response-from-api)로 턴을 종료합니다. 다른 연결에서는 요청이 `API_TIMEOUT_MS`를 기다립니다. `CLAUDE_CODE_RETRY_WATCHDOG`를 설정하면 1회 재시도 제한이 적용되지 않습니다.

391* Claude가 사고를 마치거나 텍스트 또는 도구 호출을 시작하기 전에 API의 출력 콘텐츠 필터가 중단한 스트리밍 응답. Claude Code는 재시도 예산 내에서 요청을 한 번 다시 보내고, 필터가 두 번째 응답도 중단하면 [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy)를 표시합니다.

390* 임시 429 스로틀, 하지만 게이트웨이의 지출 한도 `429`는 아닙니다. 이는 스로틀이 아닙니다. [Spend limit reached](#spend-limit-reached)를 참조하세요.392* 임시 429 스로틀, 하지만 게이트웨이의 지출 한도 `429`는 아닙니다. 이는 스로틀이 아닙니다. [Spend limit reached](#spend-limit-reached)를 참조하세요.

391 * claude.ai 구독으로 로그인한 경우, 여기에는 플랜의 할당량 헤더를 전달하지 않는 429 스로틀이 포함됩니다. v2.1.199 이전에는 Claude Code가 API 키 및 Enterprise 로그인에 대해서만 해당 스로틀을 재시도했습니다.393 * claude.ai 구독으로 로그인한 경우, 여기에는 플랜의 할당량 헤더를 전달하지 않는 429 스로틀이 포함됩니다. v2.1.199 이전에는 Claude Code가 API 키 및 Enterprise 로그인에 대해서만 해당 스로틀을 재시도했습니다.

392* 입력 더하기 `max_tokens`이 컨텍스트 한도를 초과하기 때문에 거부된 요청. 변경하지 않고 다시 보내면 같은 방식으로 실패하므로 Claude Code는 감소된 `max_tokens`으로 재시도하고, 두 가지 경우에 재시도를 중지하고 대신 압축합니다:394* 입력 더하기 `max_tokens`이 컨텍스트 한도를 초과하기 때문에 거부된 요청. 변경하지 않고 다시 보내면 같은 방식으로 실패하므로 Claude Code는 감소된 `max_tokens`으로 재시도하고, 두 가지 경우에 재시도를 중지하고 대신 압축합니다:


405* [Amazon Bedrock streaming response with an unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), 게이트웨이 또는 프록시가 응답을 다시 쓰면 재시도도 같은 방식으로 다시 쓸 것이기 때문입니다. Claude Code v2.1.208 이상이 필요합니다.407* [Amazon Bedrock streaming response with an unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), 게이트웨이 또는 프록시가 응답을 다시 쓰면 재시도도 같은 방식으로 다시 쓸 것이기 때문입니다. Claude Code v2.1.208 이상이 필요합니다.

406* 실패한 스트리밍 요청의 비스트리밍 재시도가 성공 상태를 받지만 [no Claude API message in the body](#api-returned-an-empty-or-malformed-response). Claude Code는 해당 오류로 턴을 종료합니다.408* 실패한 스트리밍 요청의 비스트리밍 재시도가 성공 상태를 받지만 [no Claude API message in the body](#api-returned-an-empty-or-malformed-response). Claude Code는 해당 오류로 턴을 종료합니다.

407* 조직의 정책 검사가 거부한 요청, 이는 거부 메시지를 전달하는 `API Error:` 줄로 표시됩니다. 조직의 관리자는 Claude Enterprise 기능인 [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks)로 검사를 설정하고, 메시지는 구성한 지침으로 끝나거나 기본적으로 관리자에게 연락하도록 안내합니다. Claude Code는 거부가 모델이 아닌 요청의 내용에 관한 것이므로 거부된 요청을 동일한 모델이나 [폴백 모델](/docs/ko/model-config#fallback-model-chains)로 다시 보내지 않습니다. v2.1.239 이전에는 Claude Code가 거부를 표시하기 전에 거부된 요청을 스트리밍 없이 또는 구성된 폴백 모델에서 다시 보낼 수 있었습니다.409* 조직의 정책 검사가 거부한 요청, 이는 거부 메시지를 전달하는 `API Error:` 줄로 표시됩니다. 조직의 관리자는 Claude Enterprise 기능인 [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks)로 검사를 설정하고, 메시지는 구성한 지침으로 끝나거나 기본적으로 관리자에게 연락하도록 안내합니다. Claude Code는 거부가 모델이 아닌 요청의 내용에 관한 것이므로 거부된 요청을 동일한 모델이나 [폴백 모델](/docs/ko/model-config#fallback-model-chains)로 다시 보내지 않습니다. v2.1.239 이전에는 Claude Code가 거부를 표시하기 전에 거부된 요청을 스트리밍 없이 또는 구성된 폴백 모델에서 다시 보낼 수 있었습니다.

408* API의 출력 콘텐츠 필터가 차단한 응답. Claude Code는 즉시 [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy)를 표시하며 해당 요청을 재시도하거나 다시 보내지 않습니다.

409 410 

410<h3 id="what-you-see-while-claude-code-retries-or-waits">411<h3 id="what-you-see-while-claude-code-retries-or-waits">

411 Claude Code가 재시도하거나 대기하는 동안 보는 것412 Claude Code가 재시도하거나 대기하는 동안 보는 것


2299 2300 

2300**할 일:**2301**할 일:**

2301 2302 

2302* 붙여넣기 전에 이미지 크기를 조정합니다. API는 단일 이미지의 경우 가장 긴 변 기준 최대 8000픽셀, 많은 이미지가 컨텍스트에 있을 때는 2000픽셀까지의 이미지를 허용합니다.2303* 붙여넣기 전에 이미지 크기를 조정합니다. API는 단일 이미지의 경우 가장 긴 변 기준 최대 8000픽셀, 컨텍스트에 이미지가 20개를 초과할 때는 3000픽셀까지의 이미지를 허용합니다.

2303* 전체 화면 대신 관련 영역만 더 좁게 스크린샷을 찍습니다.2304* 전체 화면 대신 관련 영역만 더 좁게 스크린샷을 찍습니다.

2304 2305 

2305<h3 id="unable-to-resize-image">2306<h3 id="unable-to-resize-image">


2905API Error: Output blocked by content filtering policy2906API Error: Output blocked by content filtering policy

2906```2907```

2907 2908 

2908Claude Code는 차단이 도착하는 즉시 오류를 표시하고 해당 요청을 종료합니다. 요청을 재시도하거나, 스트리밍 없이 다시 보내거나, [폴백 모델](/docs/ko/model-config#fallback-model-chains)로 전환하지 않습니다. v2.1.285 이전에는 Claude Code가 차단된 요청을 다시 보내고 재시도할 수 있었으며, 때로는 몇 분 동안 그렇게 한 후에야 오류를 표시했습니다.

2909 

2910**할 일:**2909**할 일:**

2911 2910 

2912* 마지막 메시지를 다르게 표현하거나 다른 접근 방식을 취합니다.2911* 마지막 메시지를 다르게 표현하거나 다른 접근 방식을 취합니다.

fast-mode.md +1 −1

Details

88 88 

89빠른 모드 가격은 전체 1M 토큰 컨텍스트 윈도우에 걸쳐 고정입니다. 표준 Opus 요금을 비교하려면 [Claude 가격 책정 참고](https://platform.claude.com/docs/ko/about-claude/pricing)를 참조하십시오.89빠른 모드 가격은 전체 1M 토큰 컨텍스트 윈도우에 걸쳐 고정입니다. 표준 Opus 요금을 비교하려면 [Claude 가격 책정 참고](https://platform.claude.com/docs/ko/about-claude/pricing)를 참조하십시오.

90 90 

91대화 중간에 빠른 모드를 처음 활성화하면 전체 대화 컨텍스트에 대해 전체 빠른 모드 캐시되지 않은 입력 토큰 가격을 지불합니다. 대화가 진행될수록 비용이 더 많이 들므로, 처음부터 빠른 모드를 활성화하는 것이 더 저렴합니다. 비용은 대화당 한 번만 적용되므로, 나중에 빠른 모드를 끄고 다시 켜도 반복되지 않습니다. 메커니즘에 대해서는 [빠른 모드가 프롬프트 캐시와 상호작용하는 방식](/docs/ko/prompt-caching#turning-on-fast-mode)을 참조하십시오.91대화에서 빠른 모드를 처음 활성화하면 전체 대화 컨텍스트에 대해 빠른 모드의 캐시되지 않은 입력 토큰 전체 가격을 지불합니다. 대화가 깊어질수록 이 비용이 커지므로, 대화를 시작할 때 빠른 모드를 활성화하면 요금이 가장 적습니다. 비용은 대화당 한 번만 적용되므로, 나중에 빠른 모드를 끄고 다시 켜도 반복되지 않습니다. 메커니즘에 대해서는 [빠른 모드가 프롬프트 캐시와 상호작용하는 방식](/docs/ko/prompt-caching#turning-on-fast-mode)을 참조하십시오.

92 92 

93<h3 id="see-where-fast-mode-spend-appears">93<h3 id="see-where-fast-mode-spend-appears">

94 빠른 모드 지출이 표시되는 위치 확인94 빠른 모드 지출이 표시되는 위치 확인

glossary.md +1 −1

Details

130 130 

131Claude를 위해 작성하는 지속적인 지침의 마크다운 파일이며, 시스템 프롬프트 이후 사용자 메시지로 모든 세션의 시작 시 로드됩니다. 프로젝트 규칙, 아키텍처 노트 및 "항상 X를 수행" 규칙을 여기에 넣습니다. 프로젝트 루트 CLAUDE.md는 [컴팩션](#compaction)을 견디고 이후 디스크에서 새로 다시 읽습니다.131Claude를 위해 작성하는 지속적인 지침의 마크다운 파일이며, 시스템 프롬프트 이후 사용자 메시지로 모든 세션의 시작 시 로드됩니다. 프로젝트 규칙, 아키텍처 노트 및 "항상 X를 수행" 규칙을 여기에 넣습니다. 프로젝트 루트 CLAUDE.md는 [컴팩션](#compaction)을 견디고 이후 디스크에서 새로 다시 읽습니다.

132 132 

133CLAUDE.md를 프로젝트 범위에서 `./CLAUDE.md` 또는 `./.claude/CLAUDE.md`에, 사용자 범위에서 `~/.claude/CLAUDE.md`에, 또는 조직의 [관리 정책](#managed-settings)으로 배치할 수 있습니다. 발견된 모든 파일은 서로를 재정의하지 않고 연결되며, 가장 광범위한 범위에서 가장 구체적인 범위로 정렬됩니다. Claude Code는 또한 프로젝트의 [AGENTS.md](#agents-md) 파일을 자체적으로 또는 CLAUDE.md와 함께 로드할 수 있습니다.133CLAUDE.md를 프로젝트 범위에서 `./CLAUDE.md` 또는 `./.claude/CLAUDE.md`에, 사용자 범위에서 `~/.claude/CLAUDE.md`에, 또는 조직의 [관리형 정책](#managed-settings)으로 배치할 수 있습니다. 발견된 모든 파일은 서로를 재정의하지 않고 컨텍스트에 연결되며, 가장 광범위한 범위에서 가장 구체적인 범위로 정렬됩니다. Claude Code는 또한 CLAUDE.md 대신 프로젝트의 [AGENTS.md](#agents-md) 파일을 로드할 수 있습니다.

134 134 

135자세히 알아보기: [CLAUDE.md 파일](/docs/ko/memory#claude-md-files)135자세히 알아보기: [CLAUDE.md 파일](/docs/ko/memory#claude-md-files)

136 136 

Details

210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

211```211```

212 212 

213대부분의 모델 버전에는 해당하는 `VERTEX_REGION_CLAUDE_*` 변수가 있습니다. 전체 목록은 [환경 변수 참조](/docs/ko/env-vars)를 참조하세요. [Google Cloud의 Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)을 확인하여 어떤 모델이 글로벌 엔드포인트를 지원하는지 또는 지역 전용인지 확인합니다.213대부분의 모델 버전에는 해당하는 `VERTEX_REGION_CLAUDE_*` 변수가 있습니다. 전체 목록은 [환경 변수 참조](/docs/ko/env-vars#variables)를 참조하세요. [Google Cloud의 Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)을 확인하여 어떤 모델이 글로벌 엔드포인트를 지원하는지 또는 지역 전용인지 확인합니다.

214 214 

215지역 값이 지역 또는 위치 이름처럼 보이지 않으면 Claude Code는 이를 설정되지 않은 것으로 취급합니다. 예를 들어 Claude Code는 슬래시, 점 또는 공백을 포함하는 값을 설정되지 않은 것으로 취급합니다. Claude Code는 각 변수에 대해 다른 소스로 폴백합니다:215지역 값이 지역 또는 위치 이름처럼 보이지 않으면 Claude Code는 이를 설정되지 않은 것으로 취급합니다. 예를 들어 Claude Code는 슬래시, 점 또는 공백을 포함하는 값을 설정되지 않은 것으로 취급합니다. Claude Code는 각 변수에 대해 다른 소스로 폴백합니다:

216 216 


366* 지정된 위치에서 모델을 사용할 수 있는지 확인합니다. 일부 모델은 특정 지역이 아닌 `global` 또는 `eu` 및 `us`와 같은 다중 지역 위치에서만 제공됩니다366* 지정된 위치에서 모델을 사용할 수 있는지 확인합니다. 일부 모델은 특정 지역이 아닌 `global` 또는 `eu` 및 `us`와 같은 다중 지역 위치에서만 제공됩니다

367* `CLOUD_ML_REGION=global`을 사용하는 경우 [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)의 "지원되는 기능" 아래에서 모델이 전역 엔드포인트를 지원하는지 확인합니다. 전역 엔드포인트를 지원하지 않는 모델의 경우:367* `CLOUD_ML_REGION=global`을 사용하는 경우 [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)의 "지원되는 기능" 아래에서 모델이 전역 엔드포인트를 지원하는지 확인합니다. 전역 엔드포인트를 지원하지 않는 모델의 경우:

368 * `ANTHROPIC_MODEL` 또는 `ANTHROPIC_DEFAULT_HAIKU_MODEL`을 통해 지원되는 모델을 지정하거나,368 * `ANTHROPIC_MODEL` 또는 `ANTHROPIC_DEFAULT_HAIKU_MODEL`을 통해 지원되는 모델을 지정하거나,

369 * `VERTEX_REGION_<MODEL_NAME>` 환경 변수를 사용하여 지역 또는 다중 지역 위치를 설정합니다369 * [환경 변수 참조](/docs/ko/env-vars#variables)에 나열된 해당 모델의 `VERTEX_REGION_CLAUDE_*` 변수를 사용하여 지역 또는 다중 지역 위치를 설정합니다

370 370 

371429 오류가 발생하는 경우:371429 오류가 발생하는 경우:

372 372 

hooks.md +4 −5

Details

63| `DirectoryAdded` | 작업 디렉토리가 세션 중에 `/add-dir` 또는 SDK `register_repo_root` 제어 요청을 통해 추가될 때 |63| `DirectoryAdded` | 작업 디렉토리가 세션 중에 `/add-dir` 또는 SDK `register_repo_root` 제어 요청을 통해 추가될 때 |

64| `FileChanged` | 감시 중인 파일이 디스크에서 변경될 때. `matcher` 필드는 감시할 파일명을 지정합니다 |64| `FileChanged` | 감시 중인 파일이 디스크에서 변경될 때. `matcher` 필드는 감시할 파일명을 지정합니다 |

65| `WorktreeCreate` | 워크트리가 `--worktree`, `isolation: "worktree"`를 통해 생성되거나 백그라운드 세션을 위해 생성될 때. 기본 git 동작을 대체합니다 |65| `WorktreeCreate` | 워크트리가 `--worktree`, `isolation: "worktree"`를 통해 생성되거나 백그라운드 세션을 위해 생성될 때. 기본 git 동작을 대체합니다 |

66| `WorktreeRemove` | 워크트리가 세션 종료 시, 서브에이전트가 완료될 때, 또는 백그라운드 세션을 삭제할 때 제거될 때 |66| `WorktreeRemove` | `WorktreeCreate` 훅이 생성한 워크트리가 제거될 때 |

67| `PreCompact` | 컨텍스트 압축 전 |67| `PreCompact` | 컨텍스트 압축 전 |

68| `PostCompact` | 컨텍스트 압축이 완료된 후 |68| `PostCompact` | 컨텍스트 압축이 완료된 후 |

69| `PreModelSwitch` | Claude Code가 사용자 또는 클라이언트가 요청한 모델 전환을 적용하기 전. 전환을 차단할 수 있음 |69| `PreModelSwitch` | Claude Code가 사용자 또는 클라이언트가 요청한 모델 전환을 적용하기 전. 전환을 차단할 수 있음 |


3274 WorktreeRemove3274 WorktreeRemove

3275</h3>3275</h3>

3276 3276 

3277worktree가 제거될 때 실행됩니다. [WorktreeCreate](#worktreecreate)에 대응하는 정리용 이벤트입니다. 이 이벤트는 다음 경우에 발생합니다.3277Claude Code가 [`WorktreeCreate`](#worktreecreate) 훅으로 생성된 worktree를 정리할 때 실행됩니다. 이 이벤트는 다음 경우에 발생합니다.

3278 3278 

3279* `--worktree` 세션을 종료하면서 제거를 선택한 경우3279* `--worktree` 세션을 종료하면서 worktree 제거를 선택한 경우

3280* `isolation: "worktree"`가 설정된 서브에이전트가 완료된 경우3280* 해당 worktree에서 실행되는 [백그라운드 세션](/docs/ko/agent-view#what-deleting-a-session-removes)을 삭제한 경우

3281* 훅이 생성한 worktree를 사용하는 [백그라운드 세션](/docs/ko/agent-view#what-deleting-a-session-removes)을 삭제한 경우

3282 3281 

3283git 기반 worktree의 경우 Claude Code가 `git worktree remove`로 정리를 자동으로 처리합니다. WorktreeCreate 훅을 구성했다면 WorktreeRemove 훅과 함께 사용하여 해당 훅이 생성한 워크트리의 정리를 제어하십시오.3282git 기반 worktree의 경우 Claude Code가 `git worktree remove`로 정리를 자동으로 처리합니다. WorktreeCreate 훅을 구성했다면 WorktreeRemove 훅과 함께 사용하여 해당 훅이 생성한 워크트리의 정리를 제어하십시오.

3284 3283 

hooks-guide.md +1 −1

Details

526| `DirectoryAdded` | 작업 디렉토리가 세션 중에 `/add-dir` 또는 SDK `register_repo_root` 제어 요청을 통해 추가될 때 |526| `DirectoryAdded` | 작업 디렉토리가 세션 중에 `/add-dir` 또는 SDK `register_repo_root` 제어 요청을 통해 추가될 때 |

527| `FileChanged` | 감시 중인 파일이 디스크에서 변경될 때. `matcher` 필드는 감시할 파일명을 지정합니다 |527| `FileChanged` | 감시 중인 파일이 디스크에서 변경될 때. `matcher` 필드는 감시할 파일명을 지정합니다 |

528| `WorktreeCreate` | 워크트리가 `--worktree`, `isolation: "worktree"`를 통해 생성되거나 백그라운드 세션을 위해 생성될 때. 기본 git 동작을 대체합니다 |528| `WorktreeCreate` | 워크트리가 `--worktree`, `isolation: "worktree"`를 통해 생성되거나 백그라운드 세션을 위해 생성될 때. 기본 git 동작을 대체합니다 |

529| `WorktreeRemove` | 워크트리가 세션 종료 시, 서브에이전트가 완료될 때, 또는 백그라운드 세션을 삭제할 때 제거될 때 |529| `WorktreeRemove` | `WorktreeCreate` 훅이 생성한 워크트리가 제거될 때 |

530| `PreCompact` | 컨텍스트 압축 전 |530| `PreCompact` | 컨텍스트 압축 전 |

531| `PostCompact` | 컨텍스트 압축이 완료된 후 |531| `PostCompact` | 컨텍스트 압축이 완료된 후 |

532| `PreModelSwitch` | Claude Code가 사용자 또는 클라이언트가 요청한 모델 전환을 적용하기 전. 전환을 차단할 수 있음 |532| `PreModelSwitch` | Claude Code가 사용자 또는 클라이언트가 요청한 모델 전환을 적용하기 전. 전환을 차단할 수 있음 |

Details

76* **프로젝트.** 디렉토리 및 하위 디렉토리의 파일, 그리고 허가를 받은 다른 곳의 파일.76* **프로젝트.** 디렉토리 및 하위 디렉토리의 파일, 그리고 허가를 받은 다른 곳의 파일.

77* **터미널.** 실행할 수 있는 모든 명령: 빌드 도구, git, 패키지 관리자, 시스템 유틸리티, 스크립트. 명령줄에서 할 수 있는 것이면 Claude도 할 수 있습니다.77* **터미널.** 실행할 수 있는 모든 명령: 빌드 도구, git, 패키지 관리자, 시스템 유틸리티, 스크립트. 명령줄에서 할 수 있는 것이면 Claude도 할 수 있습니다.

78* **git 상태.** 현재 브랜치, 커밋되지 않은 변경 사항, 최근 커밋 기록.78* **git 상태.** 현재 브랜치, 커밋되지 않은 변경 사항, 최근 커밋 기록.

79* **[CLAUDE.md](/docs/ko/memory).** 프로젝트별 지침, 규칙, Claude가 매 세션마다 알아야 할 컨텍스트를 저장하는 마크다운 파일. 저장소에 다른 코딩 에이전트를 위한 AGENTS.md가 있으면 Claude는 [자체적으로 또는 CLAUDE.md와 함께](/docs/ko/memory#agents-md) 읽을 수 있습니다.79* **[CLAUDE.md](/docs/ko/memory).** 프로젝트별 지침, 규칙, Claude가 매 세션마다 알아야 할 컨텍스트를 저장하는 마크다운 파일. 저장소에 다른 코딩 에이전트를 위한 AGENTS.md가 있으면 Claude는 CLAUDE.md 대신 [이를 읽을 수 있습니다](/docs/ko/memory#agents-md).

80* **[자동 메모리](/docs/ko/memory#auto-memory).** Claude가 작업하면서 자동으로 저장하는 학습 내용(프로젝트 패턴 및 사용자 선호도 등). MEMORY.md의 처음 200줄 또는 25KB 중 먼저 도달하는 것이 각 세션 시작 시 로드됩니다.80* **[자동 메모리](/docs/ko/memory#auto-memory).** Claude가 작업하면서 자동으로 저장하는 학습 내용(프로젝트 패턴 및 사용자 선호도 등). MEMORY.md의 처음 200줄 또는 25KB 중 먼저 도달하는 것이 각 세션 시작 시 로드됩니다.

81* **구성한 확장.** 외부 서비스를 위한 [MCP servers](/docs/ko/mcp), 워크플로우를 위한 [skills](/docs/ko/skills), 위임된 작업을 위한 [subagents](/docs/ko/sub-agents), 브라우저 상호작용을 위한 [Claude in Chrome](/docs/ko/chrome).81* **구성한 확장.** 외부 서비스를 위한 [MCP servers](/docs/ko/mcp), 워크플로우를 위한 [skills](/docs/ko/skills), 위임된 작업을 위한 [subagents](/docs/ko/sub-agents), 브라우저 상호작용을 위한 [Claude in Chrome](/docs/ko/chrome).

82 82 

keybindings.md +3 −2

Details

299| :- | :- | :- |299| :- | :- | :- |

300| `footer:next` | Right | 다음 바닥글 항목 |300| `footer:next` | Right | 다음 바닥글 항목 |

301| `footer:previous` | Left | 이전 바닥글 항목 |301| `footer:previous` | Left | 이전 바닥글 항목 |

302| `footer:up` | Up | 바닥글에서 위로 탐색 (맨 위에서 선택 해제) |302| `footer:up` | Up, Ctrl+P | 바닥글에서 위로 탐색 (맨 위에서 선택 해제) |

303| `footer:down` | Down | 바닥글에서 아래로 탐색 |303| `footer:down` | Down, Ctrl+N | 바닥글에서 아래로 탐색 |

304| `footer:openSelected` | Enter | 선택한 바닥글 항목 열기 |304| `footer:openSelected` | Enter | 선택한 바닥글 항목 열기 |

305| `footer:clearSelection` | Escape | 바닥글 선택 지우기 |305| `footer:clearSelection` | Escape | 바닥글 선택 지우기 |

306| `footer:close` | x | 선택한 [에이전트](/docs/ko/sub-agents#observe-and-steer-running-forks) 또는 [워크플로](/docs/ko/workflows#manage-runs)를 중지하거나, 더 이상 실행 중이 아니면 해당 행을 닫습니다 |

306| `footer:dismiss` | (바인딩 안 됨) | 이 작업에 키를 바인딩하는 것은 아무 효과가 없으며, 이를 명명하는 `keybindings.json`은 유효합니다. v2.1.281 이전에는 Backspace 및 Delete가 바인딩되어 바닥글에서 선택한 아티팩트 링크를 닫았습니다. |307| `footer:dismiss` | (바인딩 안 됨) | 이 작업에 키를 바인딩하는 것은 아무 효과가 없으며, 이를 명명하는 `keybindings.json`은 유효합니다. v2.1.281 이전에는 Backspace 및 Delete가 바인딩되어 바닥글에서 선택한 아티팩트 링크를 닫았습니다. |

307 308 

308바닥글 항목이 선택되어 있을 때(예: 프롬프트 아래의 에이전트 패널의 행) `Enter`는 `Chat` 컨텍스트에서 `Enter`를 `chat:queueSubmit` 또는 `chat:newline`으로 다시 바인딩한 경우에도 열립니다.309바닥글 항목이 선택되어 있을 때(예: 프롬프트 아래의 에이전트 패널의 행) `Enter`는 `Chat` 컨텍스트에서 `Enter`를 `chat:queueSubmit` 또는 `chat:newline`으로 다시 바인딩한 경우에도 열립니다.

Details

216* **관리자가 배포함**: 조직이 [구성을 배포](/docs/ko/llm-gateway-rollout#distribute-through-managed-settings)한 경우, 데스크톱 앱은 설정 없이 게이트웨이를 통해 라우팅합니다216* **관리자가 배포함**: 조직이 [구성을 배포](/docs/ko/llm-gateway-rollout#distribute-through-managed-settings)한 경우, 데스크톱 앱은 설정 없이 게이트웨이를 통해 라우팅합니다

217* **로컬로 구성됨**: 관리자가 배포한 구성이 없는 기기의 경우, 도움말 → 문제 해결 → 개발자 모드 활성화를 열면 앱이 개발자 메뉴와 함께 다시 시작됩니다. 그런 다음 개발자 → 타사 추론 구성을 열고 게이트웨이 기본 URL을 입력합니다. 관리자가 배포한 구성이 우선하며 이 양식을 읽기 전용으로 만듭니다217* **로컬로 구성됨**: 관리자가 배포한 구성이 없는 기기의 경우, 도움말 → 문제 해결 → 개발자 모드 활성화를 열면 앱이 개발자 메뉴와 함께 다시 시작됩니다. 그런 다음 개발자 → 타사 추론 구성을 열고 게이트웨이 기본 URL을 입력합니다. 관리자가 배포한 구성이 우선하며 이 양식을 읽기 전용으로 만듭니다

218 218 

219게이트웨이 구성이 활성화되면, 데스크톱 앱은 로컬 머신에서만 세션을 실행합니다: 환경 선택기는 SSH 세션이나 Anthropic 호스팅 클라우드 환경을 제공하지 않으며, [Remote Control](/docs/ko/remote-control)은 사용할 수 없습니다. 게이트웨이를 통해 원격 호스트에서 Claude Code를 사용하려면, [`ANTHROPIC_BASE_URL` 및 게이트웨이 자격 증명](#set-the-base-url-and-credential)이 설정된 해당 호스트에서 CLI를 실행합니다.219게이트웨이 구성이 활성화되면 환경 선택기는 Anthropic 호스팅 클라우드 환경을 제공하지 않으며, [Remote Control](/docs/ko/remote-control)은 사용할 수 없습니다.

220 

221게이트웨이 구성에서 SSH 세션은 베타로 제공되며 Claude Desktop v1.40609.0 이상이 필요합니다. 연결하기 전에 허용 목록과 게이트웨이 주소를 확인하세요:

222 

223* **허용된 호스트**: SSH 세션은 기본적으로 꺼져 있습니다. 이를 켜려면 사용자 또는 관리자가 타사 추론 구성의 [`sshHostAllowlist`](https://claude.com/docs/third-party/claude-desktop/configuration#sshhostallowlist) 키에 허용된 호스트를 나열합니다

224* **게이트웨이 주소**: 원격 머신이 게이트웨이에 직접 연결하므로, 사용자 컴퓨터의 `localhost`에 있는 게이트웨이는 SSH 세션에서 작동하지 않습니다

225 

226[3P 환경의 Claude Desktop에서 SSH 원격 세션](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)을 참조하세요. 원격 호스트에 [`ANTHROPIC_BASE_URL` 및 게이트웨이 자격 증명](#set-the-base-url-and-credential)을 설정하고 해당 호스트에서 CLI를 실행할 수도 있습니다.

220 227 

221데스크톱 앱이 `Gateway was unreachable`을 표시하면, 앱이 시작 시 구성된 기본 URL에 도달할 수 없었습니다. 위의 [curl 테스트](#verify-the-connection)로 URL과 네트워크 경로를 확인합니다.228데스크톱 앱이 `Gateway was unreachable`을 표시하면, 앱이 시작 시 구성된 기본 URL에 도달할 수 없었습니다. 위의 [curl 테스트](#verify-the-connection)로 URL과 네트워크 경로를 확인합니다.

222 229 

managed-mcp.md +17 −5

Details

347 `serverUrl` 항목 일치 방식347 `serverUrl` 항목 일치 방식

348</h4>348</h4>

349 349 

350URL은 스키마를 포함하여 패턴의 어디든 `*` 와일드카드를 지원합니다. 호스트명 일치는 대소문자를 구분하지 않으며 후행 FQDN 점을 무시하므로 `https://Mcp.Example.com/*`은 `https://mcp.example.com/api`와 일치합니다. 경로는 대소문자를 구분합니다.350URL은 스킴 전체로 사용하는 `*`를 포함하여 `*` 와일드카드를 지원합니다. 호스트명 일치는 대소문자를 구분하지 않으며 후행 FQDN 점을 무시하므로 `https://Mcp.Example.com/*`은 `https://mcp.example.com/api`와 일치합니다. 경로는 대소문자를 구분합니다. 포트를 지정하지 않으면 호스트명을 작성하는 방식에 따라 패턴이 스킴의 기본 포트에만 일치하는지 모든 포트에 일치하는지가 결정됩니다.

351 

352* **호스트명을 완전히 작성한 경우**: 기본 포트에만 일치하며, `https`는 443, `http`는 80입니다

353* **호스트명에 `*`가 포함된 경우**: 모든 포트에 일치합니다

351 354 

352아래 표는 일반적인 패턴이 허용하는 대상을 보여줍니다.355아래 표는 일반적인 패턴이 허용하는 대상을 보여줍니다.

353 356 

354| 패턴 | 허용 |357| 패턴 | 허용 |

355| :- | :- |358| :- | :- |

356| `https://mcp.example.com/*` | 특정 도메인의 모든 경로 |359| `https://mcp.example.com/*` | 특정 도메인의 모든 경로, 포트 443에서만 |

357| `https://mcp.example.com` | 또한 해당 도메인의 모든 경로. 경로가 없는 패턴은 모든 경로와 일치 |360| `https://mcp.example.com` | 또한 해당 도메인의 모든 경로, 포트 443에서만. 경로가 없는 패턴은 모든 경로와 일치 |

358| `https://*.example.com/*` | `example.com`의 모든 하위 도메인 |361| `https://mcp.example.com:8443/*` | 해당 도메인의 모든 경로, 포트 8443에서만 |

362| `https://mcp.example.com:*/*` | 해당 도메인의 모든 경로, 443을 포함한 모든 포트에서 |

363| `https://*.example.com/*` | `example.com`의 모든 하위 도메인, 모든 포트에서 |

359| `http://localhost:*/*` | localhost의 모든 포트 |364| `http://localhost:*/*` | localhost의 모든 포트 |

360| `*://mcp.example.com/*` | 특정 도메인으로의 모든 스키마 |365| `*://mcp.example.com/*` | 특정 도메인으로의 모든 스킴, 각 스킴의 기본 포트에서만 |

366 

367`deniedMcpServers`의 항목도 같은 방식으로 포트와 일치하므로, 차단해야 하는 포트와 스킴에 따라 `staging.example.com`에 대한 항목을 선택합니다.

368 

369* `https://staging.example.com/*`: 해당 호스트의 포트 443에 있는 `https` 서버만 차단하므로 `https://staging.example.com:8443/api`의 서버는 차단하지 않습니다

370* `https://staging.example.com:*/*`: 해당 호스트의 모든 포트에 있는 `https` 서버를 차단합니다

371* `*://staging.example.com:*/*`: 모든 스킴과 모든 포트에서 해당 호스트를 차단합니다

361 372 

362<h4 id="how-policy-entries-expand">373<h4 id="how-policy-entries-expand">

363 `serverCommand` 및 `serverUrl` 항목의 환경 변수374 `serverCommand` 및 `serverUrl` 항목의 환경 변수


529 | :- | :- |540 | :- | :- |

530 | `https://mcp.example.com/api`의 HTTP 서버 | 허용됨: 허용 목록 URL 패턴과 일치, 거부 목록 일치 없음 |541 | `https://mcp.example.com/api`의 HTTP 서버 | 허용됨: 허용 목록 URL 패턴과 일치, 거부 목록 일치 없음 |

531 | `https://staging.example.com/api`의 HTTP 서버 | 차단됨: 둘 다 일치하지만 거부 목록이 우선 |542 | `https://staging.example.com/api`의 HTTP 서버 | 차단됨: 둘 다 일치하지만 거부 목록이 우선 |

543 | `https://staging.example.com:8443/api`의 HTTP 서버 | 허용됨: 허용 목록 URL 패턴과 일치, [이 포트에서는 거부 목록 일치 없음](#how-serverurl-entries-match) |

532 | `https://other.com/mcp`의 HTTP 서버 | 차단됨: 허용 목록과 일치하지 않음 |544 | `https://other.com/mcp`의 HTTP 서버 | 차단됨: 허용 목록과 일치하지 않음 |

533</Accordion>545</Accordion>

534 546 

memory.md +2 −2

Details

8 8 

9각 Claude Code 세션은 새로운 컨텍스트 윈도우로 시작됩니다. 두 가지 메커니즘이 세션 간에 지식을 전달합니다:9각 Claude Code 세션은 새로운 컨텍스트 윈도우로 시작됩니다. 두 가지 메커니즘이 세션 간에 지식을 전달합니다:

10 10 

11* **CLAUDE.md 파일**: Claude에 지속적인 컨텍스트를 제공하기 위해 작성하는 지침. Claude는 또한 저장소의 [`AGENTS.md` 파일](#agents-md)을 CLAUDE.md와 함께 또는 단독으로 읽을 수 있습니다11* **CLAUDE.md 파일**: Claude에 지속적인 컨텍스트를 제공하기 위해 작성하는 지침. Claude는 또한 CLAUDE.md 대신 저장소의 [`AGENTS.md` 파일](#agents-md)을 읽을 수 있습니다

12* **자동 메모리**: 수정 및 선호도에 따라 Claude가 자신을 위해 작성하는 노트12* **자동 메모리**: 수정 및 선호도에 따라 Claude가 자신을 위해 작성하는 노트

13 13 

14이 페이지에서는 다음을 다룹니다:14이 페이지에서는 다음을 다룹니다:

15 15 

16* [CLAUDE.md 파일 작성 및 구성](#claude-md-files)16* [CLAUDE.md 파일 작성 및 구성](#claude-md-files)

17* [기존 AGENTS.md를 프로젝트 지침으로 사용](#agents-md)하기 (단독으로 또는 CLAUDE.md와 함께)17* [기존 AGENTS.md를 프로젝트 지침으로 사용](#agents-md)하기

18* [`.claude/rules/`를 사용하여 특정 파일 유형에 규칙 범위 지정](#organize-rules-with-claude/rules/)18* [`.claude/rules/`를 사용하여 특정 파일 유형에 규칙 범위 지정](#organize-rules-with-claude/rules/)

19* [자동 메모리 구성](#auto-memory)하여 Claude가 자동으로 노트를 작성하도록 함19* [자동 메모리 구성](#auto-memory)하여 Claude가 자동으로 노트를 작성하도록 함

20* [지침이 따라지지 않을 때 문제 해결](#troubleshoot-memory-issues)20* [지침이 따라지지 않을 때 문제 해결](#troubleshoot-memory-issues)

Details

551* **서버 관리 설정**: 조직의 [서버 관리 설정](/docs/ko/server-managed-settings)의 `env` 블록에 추가합니다. Claude Code는 [서버 관리 설정이 적용되는](/docs/ko/model-config#surface-coverage) 모든 곳(사용자의 머신 및 Claude Tag 채널 세션 이외의 클라우드 세션 포함)에서 시작 시 해당 설정을 가져옵니다. Claude Tag 세션은 서버 관리 설정을 받지 않으므로, 이 방법은 이들을 구성하지 않습니다.551* **서버 관리 설정**: 조직의 [서버 관리 설정](/docs/ko/server-managed-settings)의 `env` 블록에 추가합니다. Claude Code는 [서버 관리 설정이 적용되는](/docs/ko/model-config#surface-coverage) 모든 곳(사용자의 머신 및 Claude Tag 채널 세션 이외의 클라우드 세션 포함)에서 시작 시 해당 설정을 가져옵니다. Claude Tag 세션은 서버 관리 설정을 받지 않으므로, 이 방법은 이들을 구성하지 않습니다.

552* **환경의 변수**: 클라우드 환경의 [환경 변수](/docs/ko/cloud-environments#set-environment-variables)에 추가하여 해당 환경에서 실행되는 세션만 구성합니다. 이것이 Claude Tag 세션에 도달하는 방법입니다.552* **환경의 변수**: 클라우드 환경의 [환경 변수](/docs/ko/cloud-environments#set-environment-variables)에 추가하여 해당 환경에서 실행되는 세션만 구성합니다. 이것이 Claude Tag 세션에 도달하는 방법입니다.

553 553 

554환경을 사용하는 모든 사람이 해당 변수를 읽을 수 있으므로, 수집기 토큰(예: `OTEL_EXPORTER_OTLP_HEADERS`)과 같은 자격 증명을 거기에 넣지 마십시오. 환경의 [API 자격 증명](/docs/ko/cloud-environments#add-api-credentials)도 도움이 되지 않습니다. Claude Code의 자체 텔레메트리 내보내기는 [자격 증명을 받지 않는 요청](/docs/ko/cloud-environments#requests-that-never-get-the-credential) 중 하나이기 때문입니다. 수집기에 자격 증명이 필요한 경우, 서버 관리 설정을 통해 전체 내보내기를 구성하십시오. 자격 증명을 설정하면 [Claude Code는 관리 설정 외부에서 설정된 엔드포인트 변수를 제거합니다](#how-managed-settings-lock-the-otlp-destination).554환경을 사용하는 모든 사람이 해당 변수를 읽을 수 있으므로, 수집기 토큰(예: `OTEL_EXPORTER_OTLP_HEADERS`)과 같은 자격 증명을 거기에 넣지 마십시오. 환경의 [네트워크 시크릿](/docs/ko/cloud-environments#add-api-credentials)도 도움이 되지 않습니다. Claude Code의 자체 텔레메트리 내보내기는 [시크릿을 받지 않는 요청](/docs/ko/cloud-environments#requests-that-never-get-the-credential) 중 하나이기 때문입니다. 수집기에 자격 증명이 필요한 경우, 서버 관리 설정을 통해 전체 내보내기를 구성하십시오. 거기에 자격 증명을 설정하면 [Claude Code는 관리형 설정 외부에서 설정된 엔드포인트 변수를 제거합니다](#how-managed-settings-lock-the-otlp-destination).

555 555 

556클라우드 세션에 대한 텔레메트리를 구성할 때 다음 제약 사항을 염두에 두십시오:556클라우드 세션에 대한 텔레메트리를 구성할 때 다음 제약 사항을 염두에 두십시오:

557 557 

overview.md +8 −6

Details

28 curl -fsSL https://claude.ai/install.sh | bash28 curl -fsSL https://claude.ai/install.sh | bash

29 ```29 ```

30 30 

31 Windows에서 PowerShell에 있을 때는 프롬프트에 `PS C:\`가 표시되고, CMD에 있을 때는 `PS` 없이 `C:\`만 표시됩니다.

32 

31 **Windows PowerShell:**33 **Windows PowerShell:**

32 34 

33 ```powershell theme={null}35 ```powershell theme={null}


42 44 

43 설치 프로그램이 완료되면 새 터미널 창을 열고 `claude --version`을 실행하십시오. 설치가 제대로 되었으면 버전 번호가 출력됩니다. 셸에서 `claude`를 찾을 수 없거나 인식되지 않는다고 표시되면 설치 디렉토리가 아직 PATH에 없는 것입니다. [PATH 수정](/docs/ko/troubleshoot-install#command-not-found-claude-after-installation)을 참조하십시오.45 설치 프로그램이 완료되면 새 터미널 창을 열고 `claude --version`을 실행하십시오. 설치가 제대로 되었으면 버전 번호가 출력됩니다. 셸에서 `claude`를 찾을 수 없거나 인식되지 않는다고 표시되면 설치 디렉토리가 아직 PATH에 없는 것입니다. [PATH 수정](/docs/ko/troubleshoot-install#command-not-found-claude-after-installation)을 참조하십시오.

44 46 

45 `The token '&&' is not a valid statement separator` 오류가 표시되면 CMD가 아닌 PowerShell에 있는 것입니다. `'irm' is not recognized as an internal or external command` 오류가 표시되면 PowerShell이 아닌 CMD에 있는 것입니다. PowerShell에 있을 때는 프롬프트에 `PS C:\`가 표시되고, CMD에 있을 때는 `PS` 없이 `C:\`만 표시됩니다.47 `The token '&&' is not a valid statement separator` 오류가 표시되면 CMD가 아닌 PowerShell에 있는 것입니다. `'irm' is not recognized as an internal or external command` 오류가 표시되면 PowerShell이 아닌 CMD에 있는 것입니다.

46 48 

47 설치 명령이 `syntax error near unexpected token '<'`, `403` 또는 다른 curl 오류로 실패하면 [설치 문제 해결](/docs/ko/troubleshoot-install#find-your-error)을 참조하여 오류를 수정 방법과 일치시키고 대체 설치 방법을 확인하십시오.49 설치 명령이 `syntax error near unexpected token '<'`, `403` 또는 다른 오류로 실패하면 [설치 문제 해결](/docs/ko/troubleshoot-install#find-your-error)을 참조하여 오류를 수정 방법과 일치시키고 대체 설치 방법을 확인하십시오.

48 50 

49 [Git for Windows](https://git-scm.com/downloads/win)는 Claude Code가 Bash 도구를 사용할 수 있도록 기본 Windows에서 권장됩니다. Git for Windows가 설치되지 않은 경우 Claude Code는 대신 PowerShell을 셸 도구로 사용합니다. WSL 설정에는 Git for Windows가 필요하지 않습니다.51 [Git for Windows](https://git-scm.com/downloads/win)는 Claude Code가 Bash 도구를 사용할 수 있도록 기본 Windows에서 권장됩니다. Git for Windows가 설치되지 않은 경우 Claude Code는 대신 PowerShell을 셸 도구로 사용합니다. WSL 설정에는 Git for Windows가 필요하지 않습니다.

50 52 


85 claude87 claude

86 ```88 ```

87 89 

88 처음 사용할 때 로그인하라는 메시지가 표시됩니다. `ANTHROPIC_API_KEY` 환경 변수를 설정한 경우 Claude Code는 로그인 프롬프트를 건너뛰고 대신 키를 승인하도록 요청합니다. 이제 끝입니다! [빠른 시작으로 계속하기 →](/docs/ko/quickstart)90 Claude Code는 처음 사용할 때 로그인을 요청합니다. `ANTHROPIC_API_KEY` 환경 변수를 설정했고 Claude Code가 키 사용 여부를 물을 때 키를 승인하면 Claude Code는 로그인 프롬프트를 건너뜁니다. [빠른 시작으로 계속하기 →](/docs/ko/quickstart)

89 91 

90 <Tip>92 <Tip>

91 [고급 설정](/docs/ko/setup)에서 설치 옵션, 수동 업데이트 또는 제거 지침을 참조하세요. 문제가 발생하면 [설치 문제 해결](/docs/ko/troubleshoot-install)을 방문하세요.93 [고급 설정](/docs/ko/setup)에서 설치 옵션, 수동 업데이트 또는 제거 지침을 참조하세요. 문제가 발생하면 [설치 문제 해결](/docs/ko/troubleshoot-install)을 방문하세요.


163 claude "commit my changes with a descriptive message"165 claude "commit my changes with a descriptive message"

164 ```166 ```

165 167 

166 CI에서 [GitHub Actions](/docs/ko/github-actions) 또는 [GitLab CI/CD](/docs/ko/gitlab-ci-cd)를 사용하여 코드 검토 및 이슈 분류를 자동화할 수 있습니다.168 CI에서 [GitHub Actions](/docs/ko/github-actions) 또는 [GitLab CI/CD](/docs/ko/gitlab-ci-cd)를 사용하여 코드 리뷰 및 이슈 분류를 자동화할 수 있습니다.

167 </Accordion>169 </Accordion>

168 170 

169 <Accordion title="MCP로 도구 연결" icon="plug">171 <Accordion title="MCP로 도구 연결" icon="plug">

170 [Model Context Protocol (MCP)](/docs/ko/mcp)는 AI 도구를 외부 데이터 소스에 연결하기 위한 개방형 표준입니다. MCP를 사용하면 Claude Code는 Google Drive에서 설계 문서를 읽고, Jira에서 티켓을 업데이트하고, Slack에서 데이터를 가져오거나, 자신의 커스텀 도구를 사용할 수 있습니다. [MCP 빠른 시작](/docs/ko/mcp-quickstart)은 첫 번째 서버를 처음부터 끝까지 연결합니다.172 [Model Context Protocol (MCP)](/docs/ko/mcp)는 AI 도구를 외부 데이터 소스에 연결하기 위한 개방형 표준입니다. MCP를 사용하면 Claude Code는 Google Drive에서 설계 문서를 읽고, Jira에서 티켓을 업데이트하고, Slack에서 데이터를 가져오거나, 자신의 커스텀 도구를 사용할 수 있습니다. [MCP 빠른 시작](/docs/ko/mcp-quickstart)은 첫 번째 서버를 처음부터 끝까지 연결합니다.

171 </Accordion>173 </Accordion>

172 174 

173 <Accordion title="지침, skills 및 hooks로 사용자 정의" icon="sliders">175 <Accordion title="지침, 스킬 및 훅으로 사용자 정의" icon="sliders">

174 [`CLAUDE.md`](/docs/ko/memory)는 프로젝트 루트에 추가하는 마크다운 파일로 Claude Code가 모든 세션의 시작 부분에서 읽습니다. 이를 사용하여 코딩 표준, 아키텍처 결정, 선호하는 라이브러리 및 검토 체크리스트를 설정합니다. 리포지토리에 이미 다른 코딩 에이전트용 `AGENTS.md`가 있는 경우 Claude Code는 [자체적으로 읽을 수 있습니다](/docs/ko/memory#agents-md) 또는 `CLAUDE.md`와 함께 읽을 수 있습니다. Claude는 또한 작업할 때 [자동 메모리](/docs/ko/memory#auto-memory)를 구축하여 세션 전체에서 학습 내용을 저장하므로 아무것도 작성할 필요가 없습니다.176 [`CLAUDE.md`](/docs/ko/memory)는 프로젝트 루트에 추가하는 마크다운 파일로 Claude Code가 모든 세션의 시작 부분에서 읽습니다. 이를 사용하여 코딩 표준, 아키텍처 결정, 선호하는 라이브러리 및 검토 체크리스트를 설정합니다. 저장소에 이미 다른 코딩 에이전트용 `AGENTS.md`가 있는 경우 Claude Code는 `CLAUDE.md` 대신 [해당 파일을 읽을 수 있습니다](/docs/ko/memory#agents-md). Claude는 또한 작업할 때 [자동 메모리](/docs/ko/memory#auto-memory)를 구축하여 세션 전체에서 학습 내용을 저장하므로 아무것도 작성할 필요가 없습니다.

175 177 

176 [skills](/docs/ko/skills)를 생성하여 팀이 공유할 수 있는 반복 가능한 워크플로우를 패키징합니다(예: `/review-pr` 또는 `/deploy-staging`).178 [skills](/docs/ko/skills)를 생성하여 팀이 공유할 수 있는 반복 가능한 워크플로우를 패키징합니다(예: `/review-pr` 또는 `/deploy-staging`).

177 179 

plugin-evals.md +7 −3

Details

67 67 

68* Claude Code v2.1.269 이상 및 기타 [요구사항](#requirements)68* Claude Code v2.1.269 이상 및 기타 [요구사항](#requirements)

69* 플러그인의 루트 디렉토리에서 열린 터미널, `plugin.json` 또는 `.claude-plugin/plugin.json`을 포함하는 디렉토리69* 플러그인의 루트 디렉토리에서 열린 터미널, `plugin.json` 또는 `.claude-plugin/plugin.json`을 포함하는 디렉토리

70* 테스트하려는 플러그인의 스킬 하나, 그리고 사용자가 입력할 요청으로 스킬을 트리거해야 합니다.70* 테스트하려는 플러그인의 스킬 하나, 그리고 해당 스킬을 트리거해야 하는, 사용자가 입력할 만한 요청

71 71 

72<Steps>72<Steps>

73 <Step title="케이스 만들기">73 <Step title="케이스 만들기">


77 claude plugin eval init77 claude plugin eval init

78 ```78 ```

79 79 

80 Claude Code가 이 디렉토리를 아직 신뢰하지 않으면 먼저 `Trust this plugin directory?`를 묻습니다. `y`로 답합니다. 그러면 대화형 Claude Code 세션이 열립니다. Claude는 플러그인을 읽고 좋은 결과가 무엇인지 묻고, 플러그인을 트리거해야 하고 트리거하지 않아야 하는 프롬프트를 제안하고, 각각에 대해 채점자를 설계하고, 한 번 시도하여 동작을 확인하고, 프롬프트 이름을 따서 `evals/` 아래에 케이스 디렉토리를 작성합니다. Claude가 모음이 준비되었다고 말하면 `/exit` 또는 Ctrl+D로 해당 세션을 종료하여 셸로 돌아갑니다.80 Claude Code가 이 디렉토리를 아직 신뢰하지 않으면 먼저 `Trust this plugin directory?`를 묻습니다. `y`로 답합니다.

81 

82 그러면 대화형 Claude Code 세션이 열립니다. Claude는 플러그인을 읽고 좋은 결과가 무엇인지 묻고, 플러그인을 트리거해야 하고 트리거하지 않아야 하는 프롬프트를 제안하고, 각각에 대해 채점자를 설계하고, 시험 삼아 한 번 실행하여 동작을 확인한 다음, `evals/` 아래에 프롬프트마다 하나씩 프롬프트 이름을 딴 케이스 디렉토리를 작성합니다.

83 

84 Claude가 모음이 준비되었다고 말하면 `/exit` 또는 Ctrl+D로 해당 세션을 종료하여 셸로 돌아갑니다.

81 85 

82 플러그인 루트에서 이미 Claude Code 세션이 열려 있으면 대신 Claude에게 `claude plugin eval init`을 실행하도록 요청할 수 있습니다. Claude는 명령을 실행한 다음 해당 대화에서 동일한 질문을 합니다.86 플러그인 루트에서 이미 Claude Code 세션이 열려 있으면 대신 Claude에게 `claude plugin eval init`을 실행하도록 요청할 수 있습니다. Claude는 명령을 실행한 다음 해당 대화에서 동일한 질문을 합니다.

83 87 


116 120 

117 가장 일반적인 첫 번째 발견은 `Δ`가 0에 가깝고 케이스의 `tool_used: Skill` 채점자가 실패하는 것입니다. 이는 Claude가 자연스러운 표현에서 스킬을 선택하지 않음을 의미합니다. 스킬의 [`description`](/docs/ko/skills#frontmatter-reference)을 조정하고, `claude plugin eval .`을 다시 실행하고, 비교합니다.121 가장 일반적인 첫 번째 발견은 `Δ`가 0에 가깝고 케이스의 `tool_used: Skill` 채점자가 실패하는 것입니다. 이는 Claude가 자연스러운 표현에서 스킬을 선택하지 않음을 의미합니다. 스킬의 [`description`](/docs/ko/skills#frontmatter-reference)을 조정하고, `claude plugin eval .`을 다시 실행하고, 비교합니다.

118 122 

119 하나의 케이스를 저렴하게 반복하려면 단일 arm을 한 번 실행합니다. 단일 실행은 노이즈가 많으므로 신뢰하기 전에 기본 3번 실행에서 변경을 확인합니다. 하나의 arm으로 표는 `WITH`, `W/OUT`, `Δ` 열 대신 `SCORE`와 `PASS%` 열을 표시합니다.123 더 적은 실행 횟수로 하나의 케이스를 반복하려면 단일 arm을 한 번 실행합니다. 단일 실행은 노이즈가 많으므로 신뢰하기 전에 기본 3번 실행에서 변경을 확인합니다. 하나의 arm으로 표는 `WITH`, `W/OUT`, `Δ` 열 대신 `SCORE`와 `PASS%` 열을 표시합니다.

120 124 

121 ```bash theme={null}125 ```bash theme={null}

122 claude plugin eval . --case <case-name> --runs 1 --ablation none126 claude plugin eval . --case <case-name> --runs 1 --ablation none

Details

733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

734```734```

735 735 

736이 에이전트는 `my-plugin:security-reviewer`로 이름 지정되고, 사용자는 `@agent-my-plugin:security-reviewer`로 [명시적으로 호출](/docs/ko/sub-agents#invoke-subagents-explicitly)할 수 있습니다. 이름 형식은 `<plugin>:<name>`이며, `<name>`은 frontmatter에서 오거나 없을 때 파일 이름에서 옵니다.736이 에이전트는 `my-plugin:security-reviewer`로 이름 지정되고, 사용자는 `@agent-my-plugin:security-reviewer`로 [명시적으로 호출](/docs/ko/sub-agents#invoke-subagents-explicitly)할 수 있습니다. 이름 형식은 `<plugin>:<name>`이며, `<name>`은 frontmatter `name` 필드에서 오거나, 해당 필드가 없을 때 파일 이름에서 옵니다.

737 737 

738`agents` manifest 키는 `agents/` 스캔을 대체합니다.738`agents` manifest 키는 `agents/` 스캔을 대체합니다.

739 739 

Details

428 428 

429| 요소 | 그리는 내용 | 사용 위치 |429| 요소 | 그리는 내용 | 사용 위치 |

430| :- | :- | :- |430| :- | :- | :- |

431| `Box` | flex 컨테이너입니다. `flexDirection`, `columnGap`, `padding`, `borderStyle`, `width` 같은 레이아웃 prop을 받습니다. | 모든 곳 |431| `Box` | flex 컨테이너입니다. `flexDirection`, `columnGap`, `padding`, [`borderStyle`](/docs/ko/plugins/mods/reference#box-border-styles), `width` 같은 레이아웃 prop을 받습니다. | 모든 곳 |

432| `Text` | 스타일이 적용된 텍스트입니다. `color`, `bold`, `dimColor`, `italic`, `wrap`을 받습니다. `color`는 테마 키 또는 `'red'` 같은 색상입니다. `wrap`은 `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'`, `'truncate-end'` 중 하나입니다. | 모든 곳 |432| `Text` | 스타일이 적용된 텍스트입니다. `color`, `bold`, `dimColor`, `italic`, `wrap`을 받습니다. `color`는 테마 키 또는 `'red'` 같은 색상입니다. `wrap`은 `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'`, `'truncate-end'` 중 하나입니다. | 모든 곳 |

433| `Button` | `onPress`를 호출하는 컨트롤 | 모든 곳 |433| `Button` | `onPress`를 호출하는 컨트롤 | 모든 곳 |

434| `Link`, `Code`, `Markdown` | `href`와 선택적 `label`을 갖는 링크, 코드 블록, 그리고 Claude의 응답과 같은 방식으로 서식이 지정된 텍스트입니다. `Markdown`은 내용을 `children`이 아닌 `text` prop으로 받으며, `onLinkPress`를 전달할 때는 `key`가 필요합니다. | 모든 곳 |434| `Link`, `Code`, `Markdown` | `href`와 선택적 `label`을 갖는 링크, 코드 블록, 그리고 Claude의 응답과 같은 방식으로 서식이 지정된 텍스트입니다. `Markdown`은 내용을 `children`이 아닌 `text` prop으로 받으며, `onLinkPress`를 전달할 때는 `key`가 필요합니다. | 모든 곳 |


563많은 창은 텍스트 필드 아래에 목록이 있는 형태입니다. 이 섹션의 예시는 메모 창입니다. 메모를 입력하고 Enter를 눌러 추가하며, 각 메모에는 메모를 삭제하는 `x` 버튼이 있습니다. 메모 두 개를 추가하면 터미널은 창을 다음과 같이 그립니다.563많은 창은 텍스트 필드 아래에 목록이 있는 형태입니다. 이 섹션의 예시는 메모 창입니다. 메모를 입력하고 Enter를 눌러 추가하며, 각 메모에는 메모를 삭제하는 `x` 버튼이 있습니다. 메모 두 개를 추가하면 터미널은 창을 다음과 같이 그립니다.

564 564 

565```text theme={null}565```text theme={null}

566╭──────────────────────────────────────────────────────────╮566╭────────────────────────────────────────────────────────✕─╮

567│ Note: Type a note and press Enter ⏎ add ✕ │567│ Note: Type a note and press Enter ⏎ add │

568│ x buy milk │568│ x buy milk │

569│ x call bob │569│ x call bob │

570╰──────────────────────────────────────────────────────────╯570╰──────────────────────────────────────────────────────────╯

571```571```

572 572 

573위쪽 테두리의 `✕`는 창을 닫기 위한 Claude Code 자체의 표시입니다.

574 

573이 예시는 다음 기법을 사용합니다.575이 예시는 다음 기법을 사용합니다.

574 576 

575* **입력 받기**: `Input`은 사용자가 Enter를 누르면 필드의 텍스트로 `onSubmit(value)`를 호출하고, 변경이 있을 때마다 `onInput(value)`를 호출합니다577* **입력 받기**: `Input`은 사용자가 Enter를 누르면 필드의 텍스트로 `onSubmit(value)`를 호출하고, 변경이 있을 때마다 `onInput(value)`를 호출합니다

Details

242트리를 해당 지점에 맞추려면 훅에서 다음 prop을 읽습니다.242트리를 해당 지점에 맞추려면 훅에서 다음 prop을 읽습니다.

243 243 

244* **`Pane` 또는 밴드의 너비**: `e.props.bodyColumns`에 맞춰 그립니다244* **`Pane` 또는 밴드의 너비**: `e.props.bodyColumns`에 맞춰 그립니다

245* **트랜스크립트 옆에 있는 `Pane`의 높이**: `e.props.placement`가 `'dock'`인 경우 `e.props.scroll.bodyRows`는 창이 가진 행 수입니다245* **트랜스크립트 옆에 있는 `Pane`의 높이**: `e.props.placement`가 `'dock'`인 경우 `e.props.scroll.bodyRows`는 창이 트리에 제공하는 행 수입니다

246* **프롬프트 위에 있는 `Pane`의 높이**: `e.props.placement`가 `'inline'`인 경우 창은 트리에 맞춰 한도까지 커지며, `bodyRows`가 그 한도입니다. [`$.ui.open`의 `rows` 필드](/docs/ko/plugins/mods/interface#open-a-pane-at-the-right-time)로 다른 한도를 요청할 수 있습니다.246* **프롬프트 위에 있는 `Pane`의 높이**: `e.props.placement`가 `'inline'`인 경우 창은 트리에 맞춰 한도까지 커지며, `bodyRows`가 그 한도입니다. [`$.ui.open`의 `rows` 필드](/docs/ko/plugins/mods/interface#open-a-pane-at-the-right-time)로 다른 한도를 요청할 수 있습니다.

247 247 

248창보다 높은 트리는 전체가 하나로 스크롤됩니다.248창보다 높은 트리는 전체가 하나로 스크롤됩니다.


255 255 

256| 요소 | 주요 prop | 터미널 | 데스크톱 |256| 요소 | 주요 prop | 터미널 | 데스크톱 |

257| :- | :- | :-: | :-: |257| :- | :- | :-: | :-: |

258| [`Box`](/docs/ko/plugins/mods/interface#build-a-tree-from-elements) | `key`, flex 레이아웃, `gap`, `padding`, `margin`, `width`, `height`, `borderStyle`, `backgroundColor`, `position`, `hover` | ✓ | ✓ |258| [`Box`](/docs/ko/plugins/mods/interface#build-a-tree-from-elements) | `key`, flex 레이아웃, `gap`, `padding`, `margin`, `width`, `height`, [`borderStyle`](#box-border-styles), `backgroundColor`, `position`, `hover` | ✓ | ✓ |

259| [`Text`](/docs/ko/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |259| [`Text`](/docs/ko/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |

260| [`Button`](/docs/ko/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |260| [`Button`](/docs/ko/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |

261| `Link` | `href`, `label` | ✓ | ✓ |261| `Link` | `href`, `label` | ✓ | ✓ |


270 270 

271`Button`에 대한 추가 규칙: `action`은 Claude Code 자체의 [키보드 단축키 액션](/docs/ko/keybindings) 중 하나를 지정하며, 해당 액션에 대한 사용자의 바인딩이 코드(chord) 또는 수정자 키 조합인 경우 그 바인딩으로 버튼이 눌립니다. 밴드에 있는 버튼의 숫자 `hotkey`는 사용자가 빈 프롬프트에 해당 숫자만 입력하고 잠시 멈출 때도 실행됩니다. 하나의 그리기에서 두 버튼이 동일한 `hotkey`를 지정하면 나중의 버튼이 이를 가져갑니다. `autoFocus`는 모든 컨트롤에서 `true`만 허용하므로, 이를 끄려면 해당 prop을 생략하십시오.271`Button`에 대한 추가 규칙: `action`은 Claude Code 자체의 [키보드 단축키 액션](/docs/ko/keybindings) 중 하나를 지정하며, 해당 액션에 대한 사용자의 바인딩이 코드(chord) 또는 수정자 키 조합인 경우 그 바인딩으로 버튼이 눌립니다. 밴드에 있는 버튼의 숫자 `hotkey`는 사용자가 빈 프롬프트에 해당 숫자만 입력하고 잠시 멈출 때도 실행됩니다. 하나의 그리기에서 두 버튼이 동일한 `hotkey`를 지정하면 나중의 버튼이 이를 가져갑니다. `autoFocus`는 모든 컨트롤에서 `true`만 허용하므로, 이를 끄려면 해당 prop을 생략하십시오.

272 272 

273<h3 id="box-border-styles">

274 `Box` 테두리 스타일

275</h3>

276 

277`Box` 주위에 테두리를 그리려면 `borderStyle: 'round'`처럼 `borderStyle`을 다음 이름 중 하나로 설정하십시오. 각 행은 해당 이름에 대해 터미널이 그리는 내용을 설명하고 테두리의 위쪽 가장자리를 보여 줍니다.

278 

279| `borderStyle` | 터미널이 그리는 내용 | 위쪽 가장자리 |

280| :- | :- | :- |

281| `'single'` | 모서리가 각진 가는 선 | `┌──┐` |

282| `'double'` | 이중선 | `╔══╗` |

283| `'round'` | 모서리가 둥근 가는 선 | `╭──╮` |

284| `'bold'` | 굵은 선 | `┏━━┓` |

285| `'singleDouble'` | 위아래는 가는 선, 양옆은 이중선 | `╓──╖` |

286| `'doubleSingle'` | 위아래는 이중선, 양옆은 가는 선 | `╒══╕` |

287| `'classic'` | ASCII 문자 `+`, `-`, `\|` | `+--+` |

288| `'arrow'` | `Box` 안쪽을 가리키는 화살표 | `↘↓↓↙` |

289| `'dashed'` | 모서리가 비어 있는 점선 | `╌╌` |

290| `'quote'` | 왼쪽에 세로로 이어지는 막대 `▎`와 나머지 세 면의 빈 셀 | 빈칸 |

291 

292`borderStyle`에 `'rounded'`처럼 그 밖의 이름을 지정한 `Box`는 테두리 없이 그려집니다.

293 

273<h2 id="limits">294<h2 id="limits">

274 제한295 제한

275</h2>296</h2>

Details

17 17 

18 * **범위, 캐시 및 우선순위가 작동하는 방식**: [플러그인 로딩 참조](/docs/ko/plugins/loading)를 읽습니다.18 * **범위, 캐시 및 우선순위가 작동하는 방식**: [플러그인 로딩 참조](/docs/ko/plugins/loading)를 읽습니다.

19 * **플래그, 필드 또는 명령 조회**: [플러그인 명령 참조](/docs/ko/plugins/cli-reference), [매니페스트 참조](/docs/ko/plugins/manifest-reference) 또는 [마켓플레이스 참조](/docs/ko/plugins/marketplace-reference)를 사용합니다.19 * **플래그, 필드 또는 명령 조회**: [플러그인 명령 참조](/docs/ko/plugins/cli-reference), [매니페스트 참조](/docs/ko/plugins/manifest-reference) 또는 [마켓플레이스 참조](/docs/ko/plugins/marketplace-reference)를 사용합니다.

20 * **`hooks module not loaded` 또는 `hooks module did not load` 메시지**: 해당 플러그인은 [mod](/docs/ko/plugins/mods/overview)이므로 [mod가 로드되지 않음](/docs/ko/plugins/mods/troubleshoot#the-mod-doesn’t-load)을 읽습니다.

20</Note>21</Note>

21 22 

22본 페이지에서 본 정확한 메시지를 검색합니다. 각 메시지는 이를 생성하는 단계 아래에 나열되며, 이는 항상 실행한 명령이 아닙니다. 예를 들어, 마켓플레이스가 누락되어 설치가 실패할 수 있으므로 해당 메시지는 [마켓플레이스 추가](#add-a-marketplace) 아래에 있습니다.23본 페이지에서 본 정확한 메시지를 검색합니다. 각 메시지는 이를 생성하는 단계 아래에 나열되며, 이는 항상 실행한 명령이 아닙니다. 예를 들어, 마켓플레이스가 누락되어 설치가 실패할 수 있으므로 해당 메시지는 [마켓플레이스 추가](#add-a-marketplace) 아래에 있습니다.

Details

328| 메인 대화 | 1시간 | 5분 |328| 메인 대화 | 1시간 | 5분 |

329| 기타 모든 것 | 5분, 서버 제어 도우미 요청 제외(1시간 받음) | 5분 |329| 기타 모든 것 | 5분, 서버 제어 도우미 요청 제외(1시간 받음) | 5분 |

330 330 

331플랜의 사용량 한도를 초과하고 Claude Code가 [사용 크레딧](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)을 사용하기 시작하면 해당 사용량에 대해 청구되므로 Claude Code는 메인 대화를 더 저렴한 5분 TTL로 낮춥니다. 메인 대화에서 1시간 TTL을 유지하려면 [TTL을 직접 선택하세요](#choose-the-ttl-yourself).331플랜의 사용 한도를 초과하고 Claude Code가 [사용량 크레딧](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)을 사용하기 시작하면 해당 사용량에 대해 청구되므로 Claude Code는 메인 대화를 캐시 쓰기 요금이 더 낮은 5분 TTL로 낮춥니다. 메인 대화에서 1시간 TTL을 유지하려면 [TTL을 직접 선택하세요](#choose-the-ttl-yourself).

332 332 

333<h3 id="choose-the-ttl-yourself">333<h3 id="choose-the-ttl-yourself">

334 TTL을 직접 선택하세요334 TTL을 직접 선택하세요

Details

1342 },1342 },

1343 "review-your-changes-before": {1343 "review-your-changes-before": {

1344 title: "커밋하기 전에 변경 사항 검토",1344 title: "커밋하기 전에 변경 사항 검토",

1345 teaches: "여전히 수정하기 저렴할 때 문제를 포착하십시오. Claude가 diff 줄만이 아닌 변경된 파일 전체를 읽으므로 빠른 자체 검토가 놓칠 문제를 발견합니다.",1345 teaches: "수정하는 데 드는 작업이 적을 때 문제를 포착하십시오. Claude가 diff 줄만이 아닌 변경된 파일 전체를 읽으므로 빠른 자체 검토가 놓칠 문제를 발견합니다.",

1346 next: "한 명령으로 동일한 확인을 위해 `/code-review`를 실행하십시오",1346 next: "한 명령으로 동일한 확인을 위해 `/code-review`를 실행하십시오",

1347 prompt: "커밋하기 전에 커밋되지 않은 변경 사항을 리뷰하고 위험해 보이는 부분을 알려 주세요"1347 prompt: "커밋하기 전에 커밋되지 않은 변경 사항을 리뷰하고 위험해 보이는 부분을 알려 주세요"

1348 },1348 },

quickstart.md +69 −103

Details

4 4 

5# 빠른 시작5# 빠른 시작

6 6 

7> Claude Code에 오신 것을 환영합니다!7> 터미널에 Claude Code를 설치하고 로그인한 후, CLI를 사용하여 코드베이스를 탐색하고 첫 번째 코드 변경을 수행합니다.

8 8 

9이 빠른 시작 가이드를 통해 몇 분 안에 AI 기반 코딩 지원을 사용할 수 있습니다. 이 가이드를 마치면 일반적인 개발 작업에 Claude Code를 사용하는 방법을 이해하게 됩니다.9이 빠른 시작 가이드에서는 터미널에서 Claude Code를 사용하는 방법을 다룹니다. CLI 설치, 첫 세션에서의 로그인, 그리고 자체 프로젝트에서 일반적인 개발 작업에 활용하는 방법을 설명합니다.

10 10 

11<h2 id="before-you-begin">11<h2 id="before-you-begin">

12 시작하기 전에12 시작하기 전에


15다음을 확인하십시오:15다음을 확인하십시오:

16 16 

17* 열려 있는 터미널 또는 명령 프롬프트17* 열려 있는 터미널 또는 명령 프롬프트

18 * 터미널을 처음 사용하는 경우 [터미널 가이드](/docs/ko/terminal-guide)를 확인하십시오

19* 작업할 코드 프로젝트18* 작업할 코드 프로젝트

20* [Claude 구독](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Team 또는 Enterprise), [Claude Console](https://platform.claude.com/) 계정 또는 [지원되는 클라우드 제공자](/docs/ko/third-party-integrations)를 통한 액세스19* [Claude 구독](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Team 또는 Enterprise), [Claude Console](https://platform.claude.com/) 계정 또는 [지원되는 클라우드 제공자](/docs/ko/third-party-integrations)를 통한 액세스

21 20 

22<Note>21<Note>

23 이 가이드는 터미널 CLI를 다룹니다. Claude Code는 [웹](https://claude.ai/code), [데스크톱 앱](/docs/ko/desktop), [VS Code](/docs/ko/vs-code) 및 [JetBrains IDE](/docs/ko/jetbrains), [Slack](/docs/ko/slack), [GitHub Actions](/docs/ko/github-actions) 및 [GitLab](/docs/ko/gitlab-ci-cd)의 CI/CD에서도 사용할 수 있습니다. [모든 인터페이스](/docs/ko/overview#use-claude-code-everywhere)를 참조하십시오.22 다음 경우는 다른 페이지에서 다룹니다:

23 

24 * **터미널을 처음 사용하는 경우**: [터미널 가이드](/docs/ko/terminal-guide)부터 시작하십시오

25 * **터미널이 아닌 다른 곳에서 Claude Code를 사용하려는 경우**: Claude Code는 [웹](https://claude.ai/code), [데스크톱 앱](/docs/ko/desktop), [VS Code](/docs/ko/vs-code) 및 [JetBrains IDE](/docs/ko/jetbrains), [Slack](/docs/ko/slack), [GitHub Actions](/docs/ko/github-actions) 및 [GitLab](/docs/ko/gitlab-ci-cd)의 CI/CD에서도 사용할 수 있습니다. [모든 인터페이스](/docs/ko/overview#use-claude-code-everywhere)를 참조하십시오.

24</Note>26</Note>

25 27 

26<h2 id="step-1-install-claude-code">28<h2 id="step-1-install-claude-code">


33 <Tab title="기본 설치 (권장)">35 <Tab title="기본 설치 (권장)">

34 **macOS, Linux, WSL:**36 **macOS, Linux, WSL:**

35 37 

36 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}38 ```bash theme={null}

37 curl -fsSL https://claude.ai/install.sh | bash39 curl -fsSL https://claude.ai/install.sh | bash

38 ```40 ```

39 41 

42 Windows에서 PowerShell에 있을 때는 프롬프트에 `PS C:\`가 표시되고, CMD에 있을 때는 `PS` 없이 `C:\`만 표시됩니다.

43 

40 **Windows PowerShell:**44 **Windows PowerShell:**

41 45 

42 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}46 ```powershell theme={null}

43 irm https://claude.ai/install.ps1 | iex47 irm https://claude.ai/install.ps1 | iex

44 ```48 ```

45 49 

46 **Windows CMD:**50 **Windows CMD:**

47 51 

48 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}52 ```batch theme={null}

49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd53 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

50 ```54 ```

51 55 

52 설치 프로그램이 완료되면 새 터미널 창을 열고 `claude --version`을 실행하십시오. 설치가 제대로 되었으면 버전 번호가 출력됩니다. 셸에서 `claude`를 찾을 수 없거나 인식되지 않는다고 표시되면 설치 디렉토리가 아직 PATH에 없는 것입니다. [PATH 수정](/docs/ko/troubleshoot-install#command-not-found-claude-after-installation)을 참조하십시오.56 설치 프로그램이 완료되면 새 터미널 창을 열고 `claude --version`을 실행하십시오. 설치가 제대로 되었으면 버전 번호가 출력됩니다. 셸에서 `claude`를 찾을 수 없거나 인식되지 않는다고 표시되면 설치 디렉토리가 아직 PATH에 없는 것입니다. [PATH 수정](/docs/ko/troubleshoot-install#command-not-found-claude-after-installation)을 참조하십시오.

53 57 

54 `The token '&&' is not a valid statement separator` 오류가 표시되면 CMD가 아닌 PowerShell에 있는 것입니다. `'irm' is not recognized as an internal or external command` 오류가 표시되면 PowerShell이 아닌 CMD에 있는 것입니다. PowerShell에 있을 때는 프롬프트에 `PS C:\`가 표시되고, CMD에 있을 때는 `PS` 없이 `C:\`만 표시됩니다.58 `The token '&&' is not a valid statement separator` 오류가 표시되면 CMD가 아닌 PowerShell에 있는 것입니다. `'irm' is not recognized as an internal or external command` 오류가 표시되면 PowerShell이 아닌 CMD에 있는 것입니다.

55 59 

56 설치 명령이 `syntax error near unexpected token '<'`, `403` 또는 다른 curl 오류로 실패하면 [설치 문제 해결](/docs/ko/troubleshoot-install#find-your-error)을 참조하여 오류를 수정 방법과 일치시키고 대체 설치 방법을 확인하십시오.60 설치 명령이 `syntax error near unexpected token '<'`, `403` 또는 다른 오류로 실패하면 [설치 문제 해결](/docs/ko/troubleshoot-install#find-your-error)을 참조하여 오류를 수정 방법과 일치시키고 대체 설치 방법을 확인하십시오.

57 61 

58 [Git for Windows](https://git-scm.com/downloads/win)는 Claude Code가 Bash 도구를 사용할 수 있도록 기본 Windows에서 권장됩니다. Git for Windows가 설치되지 않은 경우 Claude Code는 대신 PowerShell을 셸 도구로 사용합니다. WSL 설정에는 Git for Windows가 필요하지 않습니다.62 [Git for Windows](https://git-scm.com/downloads/win)는 Claude Code가 Bash 도구를 사용할 수 있도록 기본 Windows에서 권장됩니다. Git for Windows가 설치되지 않은 경우 Claude Code는 대신 PowerShell을 셸 도구로 사용합니다. WSL 설정에는 Git for Windows가 필요하지 않습니다.

59 63 


63 </Tab>67 </Tab>

64 68 

65 <Tab title="Homebrew">69 <Tab title="Homebrew">

66 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}70 ```bash theme={null}

67 brew install --cask claude-code71 brew install --cask claude-code

68 ```72 ```

69 73 


75 </Tab>79 </Tab>

76 80 

77 <Tab title="WinGet">81 <Tab title="WinGet">

78 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}82 ```powershell theme={null}

79 winget install Anthropic.ClaudeCode83 winget install Anthropic.ClaudeCode

80 ```84 ```

81 85 


95 99 

96이 명령어는 버전 번호 다음에 `(Claude Code)`를 출력합니다.100이 명령어는 버전 번호 다음에 `(Claude Code)`를 출력합니다.

97 101 

98<h2 id="step-2-log-in-to-your-account">102<h2 id="step-2-start-your-first-session">

99 단계 2: 계정에 로그인103 2단계: 첫 번째 세션 시작하기

100</h2>104</h2>

101 105 

102Claude Code를 사용하려면 계정이 필요합니다. `claude` 명령으로 대화형 세션을 시작하면 처음 사용할 때 로그인하라는 메시지가 표시됩니다:106아무 프로젝트 디렉터리에서 터미널을 열고 Claude Code를 시작합니다:

103 107 

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

109cd /path/to/your/project

105claude110claude

106```111```

107 112 

108Claude 구독 또는 Console 계정의 경우 프롬프트를 따라 브라우저에서 인증을 완료하십시오. `ANTHROPIC_API_KEY` 환경 변수를 설정한 경우 Claude Code는 로그인 프롬프트를 건너뛰고 대신 키를 승인하도록 요청합니다. 나중에 계정을 전환하거나 다시 인증하려면 실행 중인 세션 내에서 `/login`을 입력하십시오:113`/path/to/your/project`를 작업하려는 프로젝트의 경로로 바꿉니다.

109 

110```text wrap theme={null}

111/login

112```

113 114 

114다음 계정 유형 중 하나를 사용하여 로그인할 수 있습니다:115Claude Code는 처음 사용할 때 로그인을 요청합니다. Claude 구독 또는 Console 계정의 경우 안내에 따라 브라우저에서 인증을 완료합니다. `ANTHROPIC_API_KEY` 환경 변수를 설정했고 Claude Code가 해당 키를 사용할지 물을 때 승인하면 Claude Code는 로그인 프롬프트를 건너뜁니다.

115 116 

116* [Claude Pro, Max, Team 또는 Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (권장)117다음 계정 유형 중 하나로 로그인할 수 있습니다:

117* [Claude Console](https://platform.claude.com/) (선불 크레딧이 있는 API 액세스). 처음 로그인할 때 비용 추적을 위해 Console에서 "Claude Code" 워크스페이스가 자동으로 생성됩니다.

118* [Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry](/docs/ko/third-party-integrations) (엔터프라이즈 클라우드 제공자)

119* 조직에서 운영하는 자체 호스팅 [Claude 앱 게이트웨이](/docs/ko/claude-apps-gateway): 관리자가 게이트웨이 URL을 미리 구성하고, `/login`을 입력하면 **Cloud gateway** 화면에서 직접 열려 기업 SSO로 로그인할 수 있습니다.

120 118 

121로그인하면 자격 증명이 저장되고 다시 로그인할 필요가 없습니다. [자격 증명 관리](/docs/ko/authentication#credential-management)에서 자세히 알아보십시오.119* [Claude Pro, Max, Team 또는 Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login)(권장)

122 120* [Claude Console](https://platform.claude.com/)(선불 크레딧을 사용하는 API 액세스). 처음 로그인하면 중앙 집중식 비용 추적을 위해 Console에 "Claude Code" 워크스페이스가 자동으로 생성됩니다.

123<h2 id="step-3-start-your-first-session">121* [Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry](/docs/ko/third-party-integrations)(엔터프라이즈 클라우드 제공업체)

124 단계 3: 첫 번째 세션 시작122* 조직에서 운영하는 경우 자체 호스팅 [Claude apps gateway](/docs/ko/claude-apps-gateway): 관리자가 게이트웨이 URL을 미리 구성하며, `/login`을 실행하면 바로 **Cloud gateway** 화면이 열려 회사 SSO로 로그인할 수 있습니다

125</h2>

126 

127프로젝트 디렉토리에서 터미널을 열고 Claude Code를 시작하십시오:

128 

129```bash theme={null}

130cd /path/to/your/project

131claude

132```

133 123 

134`/path/to/your/project`를 작업하려는 프로젝트의 경로로 바꾸십시오.124로그인하면 자격 증명이 저장되므로 다시 로그인할 필요가 없습니다. 자세한 내용은 [자격 증명 관리](/docs/ko/authentication#credential-management)를 참조하세요.

135 125 

136버전, 현재 모델 및 작업 디렉토리가 표시된 Claude Code 프롬프트가 나타납니다. 사용 가능한 명령을 보려면 `/help`를 입력하거나 이전 대화를 계속하려면 `/resume`을 입력하십시오.126Claude Code 프롬프트가 나타나며, 그 위에 버전, 현재 모델, 작업 디렉터리가 표시됩니다. 사용 가능한 명령을 보려면 `/help`를, 이전 대화를 이어가려면 `/resume`을 입력합니다. 나중에 계정을 전환하거나 다시 인증하려면 실행 중인 세션 안에서 `/login`을 입력합니다.

137 127 

138<h2 id="step-4-ask-your-first-question">128<h2 id="step-3-ask-your-first-question">

139 단계 4: 첫 번째 질문 하기129 3단계: 첫 번째 질문하기

140</h2>130</h2>

141 131 

142코드베이스를 이해하는 것부터 시작하겠습니다. 다음 명령 중 하나를 시도하십시오:132다음 명령 중 하나를 시도해 보세요:

143 133 

144```text wrap theme={null}134```text wrap theme={null}

145what does this project do?135what does this project do?


159explain the folder structure149explain the folder structure

160```150```

161 151 

162Claude의 기능에 대해 물어볼 수도 있습니다:152Claude에게 Claude 자체의 기능에 대해 물어볼 수도 있습니다:

163 153 

164```text wrap theme={null}154```text wrap theme={null}

165what can Claude Code do?155what can Claude Code do?


174```164```

175 165 

176<Note>166<Note>

177 Claude Code는 필요에 따라 프로젝트 파일을 읽습니다. 수동으로 컨텍스트를 추가할 필요가 없습니다.167 Claude Code는 필요에 따라 프로젝트 파일을 읽습니다. 컨텍스트를 수동으로 추가할 필요가 없습니다.

178</Note>168</Note>

179 169 

180<h2 id="step-5-make-your-first-code-change">170<h2 id="step-4-make-your-first-code-change">

181 단계 5: 첫 번째 코드 변경 수행171 4단계: 첫 번째 코드 변경하기

182</h2>172</h2>

183 173 

184이제 Claude Code가 실제 코딩을 하도록 해봅시다. 간단한 작업을 시도하십시오:174간단한 작업을 시도해 보세요:

185 175 

186```text wrap theme={null}176```text wrap theme={null}

187주 파일에 hello world 함수 추가177add a hello world function to the main file

188```178```

189 179 

190Claude Code는 적절한 파일을 찾고 변경 사항을 보여줍니다. 변경하기 전에 묻는 경우 **예**를 선택하여 승인하십시오.180Claude Code가 적절한 파일을 찾아 변경 사항을 보여 줍니다. 변경하기 전에 확인을 요청하면 **Yes**를 선택하여 승인합니다.

191 181 

192Claude Code v2.1.283 이상에서는 자동 모드가 대화형 터미널 세션에 대한 [기본 제공 시작 권한 모드](/docs/ko/permission-modes#eliminate-prompts-with-auto-mode)입니다. 분류기가 사용자 대신 작업을 검토하며, Claude는 대부분의 파일을 편집하고 대부분의 명령을 묻지 않고 실행합니다. 이전 버전에서는 자동 모드가 Pro, Max 및 Team 플랜에서만 기본 제공 시작 권한 모드입니다. 설치 또는 업그레이드 직후에 시작하는 세션의 경우 [설치 또는 업그레이드 후 첫 번째 세션](/docs/ko/env-vars#first-session-after-an-install-or-upgrade)을 참조하십시오.182세션의 [권한 모드](/docs/ko/permission-modes)는 Claude가 먼저 묻지 않고 수행할 수 있는 작업을 결정합니다. 언제든지 `Shift+Tab`을 눌러 현재 세션의 권한 모드를 전환할 수 있습니다.

193 

194<Note>

195 사용자의 설정 또는 조직에서 다른 시작 권한 모드를 설정할 수 있습니다. [세션이 시작되는 권한 모드](/docs/ko/permission-modes#which-mode-a-session-starts-in)에서 어떤 모드인지 확인할 수 있습니다. 언제든지 `Shift+Tab`을 눌러 현재 세션의 권한 모드를 전환할 수 있습니다.

196</Note>

197 183 

198<h2 id="step-6-use-git-with-claude-code">184<h2 id="step-5-use-git-with-claude-code">

199 단계 6: Claude Code와 함께 Git 사용185 5단계: Claude Code로 Git 사용하기

200</h2>186</h2>

201 187 

202Claude Code는 Git 작업을 대화형으로 만듭니다:188Claude Code를 사용하면 대화하듯이 Git 작업을 수행할 수 있습니다:

203 189 

204```text wrap theme={null}190```text wrap theme={null}

205어떤 파일을 변경했나요?191what files have I changed?

206```192```

207 193 

208```text wrap theme={null}194```text wrap theme={null}

209설명적인 메시지로 변경 사항 커밋195commit my changes with a descriptive message

210```196```

211 197 

212더 복잡한 Git 작업을 요청할 수도 있습니다:198더 복잡한 Git 작업을 요청할 수도 있습니다:

213 199 

214```text wrap theme={null}200```text wrap theme={null}

215feature/quickstart라는 새 브랜치 생성201create a new branch called feature/quickstart

216```202```

217 203 

218```text wrap theme={null}204```text wrap theme={null}

219마지막 5개의 커밋 표시205show me the last 5 commits

220```206```

221 207 

222```text wrap theme={null}208```text wrap theme={null}

223병합 충돌을 해결하는 데 도움을 주세요209help me resolve merge conflicts

224```210```

225 211 

226<h2 id="step-7-fix-a-bug-or-add-a-feature">212<h2 id="step-6-fix-a-bug-or-add-a-feature">

227 단계 7: 버그 수정 또는 기능 추가213 6단계: 버그 수정 또는 기능 추가

228</h2>214</h2>

229 215 

230Claude는 디버깅 및 기능 구현에 능숙합니다.216원하는 작업을 자연어로 설명합니다:

231 

232자연어로 원하는 것을 설명하십시오:

233 217 

234```text wrap theme={null}218```text wrap theme={null}

235사용자 등록 양식에 입력 유효성 검사 추가219add input validation to the user registration form

236```220```

237 221 

238또는 기존 문제를 수정하십시오:222또는 기존 문제를 수정합니다:

239 223 

240```text wrap theme={null}224```text wrap theme={null}

241사용자가 빈 양식을 제출할 수 있는 버그가 있습니다 - 수정하세요225there's a bug where users can submit empty forms - fix it

242```226```

243 227 

244Claude Code는 다음을 수행합니다:228<h2 id="step-7-test-out-other-common-workflows">

245 229 7단계: 다른 일반적인 워크플로 테스트하기

246* 관련 코드 찾기

247* 컨텍스트 이해

248* 솔루션 구현

249* 사용 가능한 경우 테스트 실행

250 

251<h2 id="step-8-test-out-other-common-workflows">

252 단계 8: 다른 일반적인 워크플로우 시도

253</h2>230</h2>

254 231 

255Claude와 함께 작업하는 여러 가지 방법이 있습니다:232Claude와 함께 작업하는 방법은 다양합니다.

256 233 

257**코드 리팩토링**234**코드 리팩터링**

258 235 

259```text wrap theme={null}236```text wrap theme={null}

260인증 모듈을 콜백 대신 async/await를 사용하도록 리팩토링237refactor the authentication module to use async/await instead of callbacks

261```238```

262 239 

263**테스트 작성**240**테스트 작성**

264 241 

265```text wrap theme={null}242```text wrap theme={null}

266계산기 함수에 대한 단위 테스트 작성243write unit tests for the calculator functions

267```244```

268 245 

269**문서 업데이트**246**문서 업데이트**

270 247 

271```text wrap theme={null}248```text wrap theme={null}

272설치 지침으로 README 업데이트249update the README with installation instructions

273```250```

274 251 

275**코드 검토**252**코드 리뷰**

276 253 

277```text wrap theme={null}254```text wrap theme={null}

278내 변경 사항을 검토하고 개선 사항을 제안해주세요255review my changes and suggest improvements

279```256```

280 257 

281<Tip>258<Tip>

282 도움이 되는 동료처럼 Claude와 대화하십시오. 달성하고 싶은 것을 설명하면 도움을 드릴 것입니다.259 유능한 동료에게 말하듯이 Claude에게 말해 보세요. 달성하고 싶은 목표를 설명하면 Claude가 그 목표에 도달할 수 있도록 도와줍니다.

283</Tip>260</Tip>

284 261 

285<h2 id="essential-commands">262<h2 id="essential-commands">


357 334 

358이제 기본 사항을 배웠으므로 더 고급 기능을 살펴보십시오:335이제 기본 사항을 배웠으므로 더 고급 기능을 살펴보십시오:

359 336 

360<CardGroup cols={2}>337* [Claude Code 작동 방식](/docs/ko/how-claude-code-works): 에이전틱 루프, 기본 제공 도구 및 Claude Code가 프로젝트와 상호 작용하는 방식 이해

361 <Card title="Claude Code 작동 방식" icon="microchip" href="/docs/ko/how-claude-code-works">338* [모범 사례](/docs/ko/best-practices): 효과적인 프롬프팅 및 프로젝트 설정으로 더 나은 결과 얻기

362 에이전트 루프, 기본 제공 도구 및 Claude Code가 프로젝트와 상호 작용하는 방식 이해339* [일반적인 워크플로](/docs/ko/common-workflows): 일반적인 작업에 대한 단계별 가이드

363 </Card>340* [Claude Code 확장](/docs/ko/features-overview): CLAUDE.md, 스킬, 훅, MCP 등으로 사용자 정의

364 

365 <Card title="모범 사례" icon="star" href="/docs/ko/best-practices">

366 효과적인 프롬프팅 및 프로젝트 설정으로 더 나은 결과 얻기

367 </Card>

368 

369 <Card title="일반적인 워크플로우" icon="graduation-cap" href="/docs/ko/common-workflows">

370 일반적인 작업에 대한 단계별 가이드

371 </Card>

372 341 

373 <Card title="Claude Code 확장" icon="puzzle-piece" href="/docs/ko/features-overview">342설치 옵션, 수동 업데이트 또는 제거 방법은 [고급 설정](/docs/ko/setup)을 참조하십시오.

374 CLAUDE.md, skills, hooks, MCP 등으로 사용자 정의

375 </Card>

376</CardGroup>

377 343 

378<h2 id="getting-help">344<h2 id="getting-help">

379 도움 받기345 도움 받기

380</h2>346</h2>

381 347 

382* **Claude Code에서**: `/help`를 입력하거나 "어떻게..."를 물어보기348* **Claude Code에서**: `/help`를 입력하거나 "어떻게..."를 물어보기

383* **문서**: 여기 있습니다! 다른 가이드 찾아보기349* **문서**: 이 사이트의 다른 가이드 찾아보기

384* **강좌**: [Claude Code 101](https://academy.claude.com/courses/claude-code-101)을 수강하고 [Claude Academy](https://academy.claude.com/)에서 다른 무료 자습형 강좌를 수강하기350* **강좌**: [Claude Code 101](https://academy.claude.com/courses/claude-code-101)을 수강하고 [Claude Academy](https://academy.claude.com/)에서 다른 무료 자습형 강좌를 수강하기

385* **커뮤니티**: 팁과 지원을 위해 [Discord 서버](https://www.anthropic.com/discord)에 참여하기351* **커뮤니티**: 팁과 지원을 위해 [Discord 서버](https://www.anthropic.com/discord)에 참여하기

Details

365</h2>365</h2>

366 366 

367* **대화형 프로세스당 하나의 원격 세션**: 서버 모드 외에는 각 Claude Code 인스턴스가 한 번에 하나의 원격 세션을 지원합니다. [서버 모드](#start-a-remote-control-session)를 사용하여 단일 프로세스에서 여러 개의 동시 세션을 실행하십시오.367* **대화형 프로세스당 하나의 원격 세션**: 서버 모드 외에는 각 Claude Code 인스턴스가 한 번에 하나의 원격 세션을 지원합니다. [서버 모드](#start-a-remote-control-session)를 사용하여 단일 프로세스에서 여러 개의 동시 세션을 실행하십시오.

368* **로컬 프로세스는 계속 실행되어야 함**: Remote Control은 로컬 프로세스로 실행됩니다. 터미널을 닫거나, Desktop 앱 또는 VS Code를 종료하거나, 그 외 다른 방식으로 `claude` 프로세스를 중지하면 [다시 시작](#resume-sessions-after-stopping-the-server)할 때까지 세션이 오프라인 상태가 됩니다. SSH에서 연결을 해제한 후 원격 머신에서 세션을 계속 실행하려면 `tmux` 또는 `screen` 내에서 시작하십시오.368* **로컬 프로세스가 계속 실행되어야 함**: Remote Control은 로컬 프로세스로 실행됩니다. 터미널을 닫거나, Desktop 앱 또는 VS Code를 종료하거나, 그 밖의 방법으로 `claude` 프로세스를 중지하면 [다시 시작](#resume-sessions-after-stopping-the-server)할 때까지 세션이 오프라인 상태가 됩니다. 원격 머신의 터미널에서 `claude`를 실행하는 경우 SSH 연결을 끊은 후에도 세션이 계속 실행되도록 `tmux` 또는 `screen` 안에서 시작합니다.

369* **서버 모드에서 충돌한 세션**: `claude remote-control`로 제공되는 세션이 충돌하면 연결된 디바이스에서 메시지를 보내십시오. Claude Code가 다시 제공합니다. 서버를 다시 시작할 필요가 없습니다. Claude Code v2.1.238 이상이 필요합니다.369* **서버 모드에서 충돌한 세션**: `claude remote-control`로 제공되는 세션이 충돌하면 연결된 디바이스에서 메시지를 보내십시오. Claude Code가 다시 제공합니다. 서버를 다시 시작할 필요가 없습니다. Claude Code v2.1.238 이상이 필요합니다.

370* **연결된 세션에서 HTTP 403 거부**: 대화형 세션이 연결되면 Claude Code는 VPN 또는 네트워크 변경 후 발생할 수 있는 것처럼 머신과 Anthropic의 서버 사이의 무언가가 HTTP 403으로 응답할 때 최대 3분 동안 재시도를 계속합니다. 거부가 더 오래 지속되면 Claude Code는 연결을 해제하고 거부한 대상을 명시합니다: 네트워크 엣지 또는 자신의 네트워크의 프록시, VPN 또는 방화벽.370* **연결된 세션에서 HTTP 403 거부**: 대화형 세션이 연결되면 Claude Code는 VPN 또는 네트워크 변경 후 발생할 수 있는 것처럼 머신과 Anthropic의 서버 사이의 무언가가 HTTP 403으로 응답할 때 최대 3분 동안 재시도를 계속합니다. 거부가 더 오래 지속되면 Claude Code는 연결을 해제하고 거부한 대상을 명시합니다: 네트워크 엣지 또는 자신의 네트워크의 프록시, VPN 또는 방화벽.

371* **확장된 네트워크 중단**: 머신이 켜져 있지만 네트워크에 도달할 수 없는 경우 다음 작업은 모드에 따라 달라집니다:371* **확장된 네트워크 중단**: 머신이 켜져 있지만 네트워크에 도달할 수 없는 경우 다음 작업은 모드에 따라 달라집니다:

routines.md +1 −1

Details

93 루틴에 대해 [클라우드 환경](/docs/ko/cloud-environments)을 선택합니다. 환경은 클라우드 세션이 액세스할 수 있는 것을 제어합니다:93 루틴에 대해 [클라우드 환경](/docs/ko/cloud-environments)을 선택합니다. 환경은 클라우드 세션이 액세스할 수 있는 것을 제어합니다:

94 94 

95 * **Network access**: 각 실행 중에 사용 가능한 인터넷 액세스 수준을 설정합니다95 * **Network access**: 각 실행 중에 사용 가능한 인터넷 액세스 수준을 설정합니다

96 * **Environment variables**: Claude가 각 실행 중에 사용할 수 있는 값을 제공합니다. 이들은 [환경을 사용하는 모든 사람에게 표시](/docs/ko/cloud-environments#what-carries-over-from-your-setup)되므로, Pro 및 Max 플랜에서는 Claude가 실행 중에 호출하는 API의 키를 [API credentials](/docs/ko/cloud-environments#add-api-credentials)로 저장합니다. 해당 섹션에는 자격 증명을 받지 않는 요청도 나열됩니다96 * **Environment variables**: Claude가 각 실행 중에 사용할 수 있는 값을 제공합니다. 이들은 [환경을 사용하는 모든 사람에게 표시](/docs/ko/cloud-environments#what-carries-over-from-your-setup)되므로, Pro 및 Max 플랜에서는 Claude가 실행 중에 호출하는 API의 키를 대신 [네트워크 시크릿](/docs/ko/cloud-environments#add-api-credentials)으로 저장합니다. 해당 섹션에는 시크릿을 받지 않는 요청도 나열됩니다

97 * **Setup script**: 루틴이 필요로 하는 종속성 및 도구를 설치합니다. 결과는 [캐시됩니다](/docs/ko/cloud-environments#environment-caching)이므로 스크립트는 모든 세션에서 다시 실행되지 않습니다97 * **Setup script**: 루틴이 필요로 하는 종속성 및 도구를 설치합니다. 결과는 [캐시됩니다](/docs/ko/cloud-environments#environment-caching)이므로 스크립트는 모든 세션에서 다시 실행되지 않습니다

98 98 

99 **Default** 환경은 **Trusted** 네트워크 액세스와 함께 제공되며, 이는 세션의 네트워크를 통해 [기본 허용 목록](/docs/ko/cloud-environments#default-allowed-domains)의 패키지 레지스트리, 클라우드 제공자 API, 컨테이너 레지스트리 및 일반적인 개발 도메인만 허용합니다. 루틴에 추가하는 커넥터는 Anthropic의 서버를 통해 해당 서비스에 도달하므로 허용 목록 변경이 필요하지 않습니다. 루틴이 자신의 서비스에 직접 도달해야 하거나 해당 목록 외의 도메인에 도달해야 하는 경우, 실행하기 전에 환경의 [network access](/docs/ko/cloud-environments#network-access)를 편집합니다. 별도의 환경을 사용하려면 먼저 [하나를 만듭니다](/docs/ko/cloud-environments#configure-your-environment).99 **Default** 환경은 **Trusted** 네트워크 액세스와 함께 제공되며, 이는 세션의 네트워크를 통해 [기본 허용 목록](/docs/ko/cloud-environments#default-allowed-domains)의 패키지 레지스트리, 클라우드 제공자 API, 컨테이너 레지스트리 및 일반적인 개발 도메인만 허용합니다. 루틴에 추가하는 커넥터는 Anthropic의 서버를 통해 해당 서비스에 도달하므로 허용 목록 변경이 필요하지 않습니다. 루틴이 자신의 서비스에 직접 도달해야 하거나 해당 목록 외의 도메인에 도달해야 하는 경우, 실행하기 전에 환경의 [network access](/docs/ko/cloud-environments#network-access)를 편집합니다. 별도의 환경을 사용하려면 먼저 [하나를 만듭니다](/docs/ko/cloud-environments#configure-your-environment).

Details

104 예제 스크립트104 예제 스크립트

105</h2>105</h2>

106 106 

107아래 스크립트는 `$CLAUDE_TEST_ENVIRONMENT_ID`에 대해 전체 루프를 실행합니다. 이는 테스트 환경의 `ccpool_...` ID이며, 관리 페이지의 환경 상세 대화상자에 표시되거나 [환경 생성 호출](#create-a-dedicated-test-environment)에서 반환됩니다. 각 응답의 센티널 구문을 어설션합니다. 캡처 훅이 설치되고 `E2E_REPLY_DIR`이 내보내진 이 호스트에서 러너를 시작한 후, 작업하려는 저장소의 git 체크아웃에서 실행합니다.107아래 스크립트는 `$CLAUDE_TEST_ENVIRONMENT_ID`에 대해 전체 루프를 실행합니다. 이는 테스트 환경의 `ccpool_...` ID이며, 관리 페이지의 환경 상세 대화상자에 표시되거나 [환경 생성 호출](#create-a-dedicated-test-environment)에서 반환됩니다. 각 응답의 센티널 구문을 어설션합니다. 캡처 훅이 설치되고 `E2E_REPLY_DIR`이 내보내진 이 호스트에서 러너를 시작한 후, 작업하려는 저장소의 git 체크아웃에서 실행합니다. 먼저 [CI에서 인증하기](#authenticate-from-ci)에 설명된 대로 스크립트를 실행하는 머신에서 claude.ai 계정으로 로그인합니다. 로그인하지 않으면 첫 번째 디스패치가 `Unable to get organization UUID for cloud session creation`과 같은 오류와 함께 실패합니다.

108 108 

109```bash theme={null}109```bash theme={null}

110#!/usr/bin/env bash110#!/usr/bin/env bash

Details

43 <Step title="관리 콘솔 열기">43 <Step title="관리 콘솔 열기">

44 claude.ai 콘솔에서 [**조직 설정 > Claude Code > 관리형 설정**](https://claude.ai/admin-settings/claude-code)으로 이동합니다.44 claude.ai 콘솔에서 [**조직 설정 > Claude Code > 관리형 설정**](https://claude.ai/admin-settings/claude-code)으로 이동합니다.

45 45 

46 링크가 Claude Code 페이지 대신 다른 조직 설정 페이지로 리디렉션되면 계정에 필요한 역할이 없습니다. Admin 및 Owner가 아닌 기타 역할은 관리형 설정을 보거나 편집할 수 없으므로 조직의 Owner 또는 Primary Owner에게 변경을 요청하십시오. [액세스 제어](#access-control)를 참조하십시오.46 Team 또는 Enterprise 조직에서 페이지에 액세스 권한이 없다고 표시되면 [Owner 또는 Primary Owner](#access-control)에게 변경을 요청하십시오.

47 </Step>47 </Step>

48 48 

49 <Step title="설정 정의">49 <Step title="설정 정의">

sessions.md +3 −3

Details

83* 터미널: `claude --continue`, `claude --resume <session-id>` 또는 이름이 한 세션과 일치할 때 `-p` 없이 `claude --resume <name>`. Claude Code는 세션이 있던 권한 모드를 복원합니다. 단, 표의 경우는 제외됩니다. `--permission-mode` 또는 `--dangerously-skip-permissions`를 전달하여 복원된 모드를 재정의합니다.83* 터미널: `claude --continue`, `claude --resume <session-id>` 또는 이름이 한 세션과 일치할 때 `-p` 없이 `claude --resume <name>`. Claude Code는 세션이 있던 권한 모드를 복원합니다. 단, 표의 경우는 제외됩니다. `--permission-mode` 또는 `--dangerously-skip-permissions`를 전달하여 복원된 모드를 재정의합니다.

84* 비대화형: `claude -p --resume` 또는 `claude -p --continue`. Claude Code는 새로운 `claude -p` 실행이 시작될 권한 모드로 실행을 시작합니다. 단, 계획 모드에서 종료된 세션은 [아래 조건](#resume-in-plan-mode-with-p)에서 계획 모드로 재개됩니다.84* 비대화형: `claude -p --resume` 또는 `claude -p --continue`. Claude Code는 새로운 `claude -p` 실행이 시작될 권한 모드로 실행을 시작합니다. 단, 계획 모드에서 종료된 세션은 [아래 조건](#resume-in-plan-mode-with-p)에서 계획 모드로 재개됩니다.

85* VS Code: 확장의 대화 패널입니다. 표는 계획 모드에서 종료된 대화만 다룹니다. 나머지는 [과거 대화 재개](/docs/ko/vs-code#resume-past-conversations)를 참조하세요.85* VS Code: 확장의 대화 패널입니다. 표는 계획 모드에서 종료된 대화만 다룹니다. 나머지는 [과거 대화 재개](/docs/ko/vs-code#resume-past-conversations)를 참조하세요.

86* 시작 시 세션 선택기: `claude --resume` 단독, `claude --from-pr` 또는 이름이 여러 세션과 일치할 때 [세션 선택기](#use-the-session-picker)에서 선택한 세션입니다. Claude Code는 저장된 권한 모드를 복원하지 않습니다. 동일한 명령줄에서 새 세션을 시작할 권한 모드로 세션을 시작합니다.86* 시작 시 세션 선택기: `claude --resume` 단독, `claude --from-pr` 또는 여러 세션과 일치하는 이름 중 어느 방법으로 열었든 [세션 선택기](#use-the-session-picker)에서 선택한 세션입니다. Claude Code는 동일한 명령줄에서 새 세션을 시작할 권한 모드로 세션을 시작합니다. 단, 플랜 모드에서 종료된 세션은 `--permission-mode`, `--dangerously-skip-permissions` 또는 `--fork-session`을 전달하지 않는 한 플랜 모드로 재개됩니다. 그 외의 저장된 권한 모드는 복원되지 않습니다.

87* 세션 내 `/resume`(인수 있음 또는 없음): Claude Code는 저장된 권한 모드를 복원하지 않습니다. 전환하는 대화는 현재 세션이 있는 권한 모드에서 계속됩니다.87* 세션 내 `/resume`(인수 있음 또는 없음): 전환하는 대화는 현재 세션이 있는 권한 모드에서 계속됩니다. 단, 플랜 모드에서 종료된 대화는 `--permission-mode` 또는 `--dangerously-skip-permissions`로 Claude Code를 시작했더라도 플랜 모드로 재개됩니다. 해당 대화가 이번 Claude Code 실행에서 이미 열린 적이 있다면(예: 처음 시작한 대화나 `/clear` 또는 `/resume`으로 떠난 대화) 대신 현재 권한 모드에서 계속됩니다.

88 88 

89비대화형 및 VS Code 경로에서 계획 모드 복원은 Claude Code v2.1.246 이상이 필요합니다. 각 행은 세션이 종료된 권한 모드, 재개하는 터미널, 비대화형 및 VS Code 경로 중 어느 것인지, 그리고 Claude Code가 재개된 세션을 시작하는 권한 모드를 나타냅니다.89비대화형 및 VS Code 경로에서 계획 모드 복원은 Claude Code v2.1.246 이상이 필요합니다. 각 행은 세션이 종료된 권한 모드, 재개하는 터미널, 비대화형 및 VS Code 경로 중 어느 것인지, 그리고 Claude Code가 재개된 세션을 시작하는 권한 모드를 나타냅니다.

90 90 

91| 세션이 종료된 모드 | 재개 방식 | 재개 후 권한 모드 |91| 세션이 종료된 모드 | 재개 방식 | 재개 후 권한 모드 |

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

93| `bypassPermissions` | 터미널 | 새 세션이 시작될 권한 모드입니다. [권한을 다시 우회](/docs/ko/permission-modes#skip-all-checks-with-bypasspermissions-mode)하려면 시작 시 해당 플래그 중 하나 또는 [사용자, `--settings` 또는 관리 설정](/docs/ko/settings-reference#permissions-defaultmode)의 `permissions.defaultMode: "bypassPermissions"`로 활성화합니다 |93| `bypassPermissions` | 터미널 | 새 세션이 시작될 권한 모드입니다. [권한을 다시 우회](/docs/ko/permission-modes#skip-all-checks-with-bypasspermissions-mode)하려면 시작 시 해당 플래그 중 하나 또는 [사용자, `--settings` 또는 관리 설정](/docs/ko/settings-reference#permissions-defaultmode)의 `permissions.defaultMode: "bypassPermissions"`로 활성화합니다 |

94| `plan` | 터미널 | 새 세션이 시작될 권한 모드입니다 |94| `plan` | 터미널 | 플랜 모드입니다. `--fork-session`을 사용하면 새 세션이 시작될 권한 모드입니다 |

95| `auto` | 터미널 | `auto`(계정이 여전히 [자동 모드 요구 사항](/docs/ko/permission-modes#eliminate-prompts-with-auto-mode)을 충족하는 경우에만) |95| `auto` | 터미널 | `auto`(계정이 여전히 [자동 모드 요구 사항](/docs/ko/permission-modes#eliminate-prompts-with-auto-mode)을 충족하는 경우에만) |

96| Manual | 터미널 | 새 세션이 [기본 제공 기본값](/docs/ko/permission-modes#which-mode-a-session-starts-in)에서 자동 모드로 시작될 때 수동입니다. 설정 파일의 `defaultMode`가 [적용](/docs/ko/permission-modes#which-mode-a-session-starts-in)되면 Claude Code는 재개된 세션을 해당 모드로 시작합니다 |96| Manual | 터미널 | 새 세션이 [기본 제공 기본값](/docs/ko/permission-modes#which-mode-a-session-starts-in)에서 자동 모드로 시작될 때 수동입니다. 설정 파일의 `defaultMode`가 [적용](/docs/ko/permission-modes#which-mode-a-session-starts-in)되면 Claude Code는 재개된 세션을 해당 모드로 시작합니다 |

97| `plan` | 비대화형([아래 조건](#resume-in-plan-mode-with-p)에서) | 계획 모드 |97| `plan` | 비대화형([아래 조건](#resume-in-plan-mode-with-p)에서) | 계획 모드 |

setup.md +5 −3

Details

49 curl -fsSL https://claude.ai/install.sh | bash49 curl -fsSL https://claude.ai/install.sh | bash

50 ```50 ```

51 51 

52 Windows에서 PowerShell에 있을 때는 프롬프트에 `PS C:\`가 표시되고, CMD에 있을 때는 `PS` 없이 `C:\`만 표시됩니다.

53 

52 **Windows PowerShell:**54 **Windows PowerShell:**

53 55 

54 ```powershell theme={null}56 ```powershell theme={null}


63 65 

64 설치 프로그램이 완료되면 새 터미널 창을 열고 `claude --version`을 실행하십시오. 설치가 제대로 되었으면 버전 번호가 출력됩니다. 셸에서 `claude`를 찾을 수 없거나 인식되지 않는다고 표시되면 설치 디렉토리가 아직 PATH에 없는 것입니다. [PATH 수정](/docs/ko/troubleshoot-install#command-not-found-claude-after-installation)을 참조하십시오.66 설치 프로그램이 완료되면 새 터미널 창을 열고 `claude --version`을 실행하십시오. 설치가 제대로 되었으면 버전 번호가 출력됩니다. 셸에서 `claude`를 찾을 수 없거나 인식되지 않는다고 표시되면 설치 디렉토리가 아직 PATH에 없는 것입니다. [PATH 수정](/docs/ko/troubleshoot-install#command-not-found-claude-after-installation)을 참조하십시오.

65 67 

66 `The token '&&' is not a valid statement separator` 오류가 표시되면 CMD가 아닌 PowerShell에 있는 것입니다. `'irm' is not recognized as an internal or external command` 오류가 표시되면 PowerShell이 아닌 CMD에 있는 것입니다. PowerShell에 있을 때는 프롬프트에 `PS C:\`가 표시되고, CMD에 있을 때는 `PS` 없이 `C:\`만 표시됩니다.68 `The token '&&' is not a valid statement separator` 오류가 표시되면 CMD가 아닌 PowerShell에 있는 것입니다. `'irm' is not recognized as an internal or external command` 오류가 표시되면 PowerShell이 아닌 CMD에 있는 것입니다.

67 69 

68 설치 명령이 `syntax error near unexpected token '<'`, `403` 또는 다른 curl 오류로 실패하면 [설치 문제 해결](/docs/ko/troubleshoot-install#find-your-error)을 참조하여 오류를 수정 방법과 일치시키고 대체 설치 방법을 확인하십시오.70 설치 명령이 `syntax error near unexpected token '<'`, `403` 또는 다른 오류로 실패하면 [설치 문제 해결](/docs/ko/troubleshoot-install#find-your-error)을 참조하여 오류를 수정 방법과 일치시키고 대체 설치 방법을 확인하십시오.

69 71 

70 [Git for Windows](https://git-scm.com/downloads/win)는 Claude Code가 Bash 도구를 사용할 수 있도록 기본 Windows에서 권장됩니다. Git for Windows가 설치되지 않은 경우 Claude Code는 대신 PowerShell을 셸 도구로 사용합니다. WSL 설정에는 Git for Windows가 필요하지 않습니다.72 [Git for Windows](https://git-scm.com/downloads/win)는 Claude Code가 Bash 도구를 사용할 수 있도록 기본 Windows에서 권장됩니다. Git for Windows가 설치되지 않은 경우 Claude Code는 대신 PowerShell을 셸 도구로 사용합니다. WSL 설정에는 Git for Windows가 필요하지 않습니다.

71 73 


204 206 

205Claude Code는 Pro, Max, Team, Enterprise 또는 Console 계정이 필요합니다. 무료 claude.ai 플랜에는 Claude Code 액세스가 포함되지 않습니다. [Amazon Bedrock](/docs/ko/amazon-bedrock), [Google Cloud의 Agent Platform](/docs/ko/google-vertex-ai) 또는 [Microsoft Foundry](/docs/ko/microsoft-foundry)와 같은 타사 API 제공자와 함께 Claude Code를 사용할 수도 있습니다.207Claude Code는 Pro, Max, Team, Enterprise 또는 Console 계정이 필요합니다. 무료 claude.ai 플랜에는 Claude Code 액세스가 포함되지 않습니다. [Amazon Bedrock](/docs/ko/amazon-bedrock), [Google Cloud의 Agent Platform](/docs/ko/google-vertex-ai) 또는 [Microsoft Foundry](/docs/ko/microsoft-foundry)와 같은 타사 API 제공자와 함께 Claude Code를 사용할 수도 있습니다.

206 208 

207설치 후 `claude`를 실행하고 브라우저 프롬프트를 따라 로그인하세요. `ANTHROPIC_API_KEY` 환경 변수가 설정된 경우, Claude Code는 브라우저를 열지 않고 키를 승인하도록 한 번 프롬프트합니다. 모든 계정 유형 및 팀 설정 옵션은 [인증](/docs/ko/authentication)을 참조하세요.209설치 후 `claude`를 실행하고 브라우저 프롬프트를 따라 로그인하세요. `ANTHROPIC_API_KEY` 환경 변수가 설정되어 있고 Claude Code가 해당 키를 사용할지 물을 때 키를 승인하면, Claude Code는 로그인 프롬프트를 건너뜁니다. 모든 계정 유형 및 팀 설정 옵션은 [인증](/docs/ko/authentication)을 참조하세요.

208 210 

209<h2 id="update-claude-code">211<h2 id="update-claude-code">

210 Claude Code 업데이트212 Claude Code 업데이트

sub-agents.md +3 −3

Details

310 310 

311| 필드 | 필수 | 설명 |311| 필드 | 필수 | 설명 |

312| :- | :- | :- |312| :- | :- | :- |

313| `name` | 예 | `code-reviewer` 또는 `reviewer-v2`와 같은 고유 식별자. [Hooks](/docs/ko/hooks#subagentstart)는 이 값을 `agent_type`으로 받습니다. 파일 이름이 일치할 필요는 없습니다. 이름은 `:`를 포함할 수 없습니다. `:`는 `my-plugin:reviewer`와 같은 [플러그인 범위 식별자](/docs/ko/plugins/overview)에 예약되어 있습니다. Claude Code는 이름을 포함하는 파일을 로드하지 않고 디버그 로그에 오류를 기록합니다. v2.1.218 이전에는 이러한 이름이 허용되었습니다 |313| `name` | 예 | `code-reviewer` 또는 `reviewer-v2`와 같은 최대 256자의 고유 식별자. [훅](/docs/ko/hooks#subagentstart)은 이 값을 `agent_type`으로 받습니다. 파일 이름이 일치할 필요는 없습니다. 이름은 `:`를 포함할 수 없습니다. `:`는 `my-plugin:reviewer`와 같은 [플러그인 범위 식별자](/docs/ko/plugins/overview)에 예약되어 있습니다 |

314| `description` | 예 | Claude가 이 서브에이전트에 위임해야 할 때 |314| `description` | 예 | Claude가 이 서브에이전트에 위임해야 할 때 |

315| `tools` | 아니오 | 서브에이전트가 사용할 수 있는 [도구](#available-tools). `Read, Grep, Bash`와 같은 쉼표로 구분된 문자열 또는 YAML 목록입니다. 생략하면 서브에이전트가 사용 가능한 모든 도구를 상속합니다. 목록의 항목이 도구로 확인되지 않으면, 서브에이전트는 일반적으로 항목을 이름 지정하는 오류로 [시작에 실패](/docs/ko/errors#agent-would-be-spawned-with-zero-tools)합니다. 스킬을 컨텍스트에 미리 로드하려면 여기에 `Skill`을 나열하는 대신 `skills` 필드를 사용하세요 |315| `tools` | 아니오 | 서브에이전트가 사용할 수 있는 [도구](#available-tools). `Read, Grep, Bash`와 같은 쉼표로 구분된 문자열 또는 YAML 목록입니다. 생략하면 서브에이전트가 사용 가능한 모든 도구를 상속합니다. 목록의 항목이 도구로 확인되지 않으면, 서브에이전트는 일반적으로 항목을 이름 지정하는 오류로 [시작에 실패](/docs/ko/errors#agent-would-be-spawned-with-zero-tools)합니다. 스킬을 컨텍스트에 미리 로드하려면 여기에 `Skill`을 나열하는 대신 `skills` 필드를 사용하세요 |

316| `disallowedTools` | 아니오 | 거부할 도구. 상속되거나 지정된 목록에서 제거됩니다. `tools`와 동일한 형식입니다. `Bash(git push *)`와 같은 지정자가 있는 항목은 여전히 [전체 도구를 제거합니다](#available-tools) |316| `disallowedTools` | 아니오 | 거부할 도구. 상속되거나 지정된 목록에서 제거됩니다. `tools`와 동일한 형식입니다. `Bash(git push *)`와 같은 지정자가 있는 항목은 여전히 [전체 도구를 제거합니다](#available-tools) |


348 348 

349* **`name` 없음**: Claude Code는 파일을 에이전트 옆에 보관된 문서로 취급합니다.349* **`name` 없음**: Claude Code는 파일을 에이전트 옆에 보관된 문서로 취급합니다.

350* **파일의 첫 번째 줄이 아닌 여는 `---`**: Claude Code는 파일을 프론트매터가 없는 것으로 읽고 문서로 취급합니다.350* **파일의 첫 번째 줄이 아닌 여는 `---`**: Claude Code는 파일을 프론트매터가 없는 것으로 읽고 문서로 취급합니다.

351* **`-`로 시작하거나 `:`를 포함하는 `name`**: Claude Code는 파일을 건너뛰고 디버그 로그에 오류를 씁니다. 위의 `name` 행을 참조하세요.351* **`-`로 시작하거나, `:`를 포함하거나, 256자보다 긴 `name`**: Claude Code는 파일을 건너뛰고 디버그 로그에 오류를 기록합니다.

352* **`name`이지만 `description` 없음**: Claude Code는 파일을 건너뛰고 이유를 디버그 로그에 씁니다.352* **`name`이지만 `description` 없음**: Claude Code는 파일을 건너뛰고 이유를 디버그 로그에 씁니다.

353* **파싱되지 않는 YAML**: Claude Code는 파일에서 필드를 읽지 않고, 건너뛰고, 파싱 오류를 디버그 로그에 씁니다.353* **파싱되지 않는 YAML**: Claude Code는 파일에서 필드를 읽지 않고, 건너뛰고, 파싱 오류를 디버그 로그에 씁니다.

354 354 


1279| 권한 | 프롬프트가 터미널에 표시됨 | [Background에서 실행 중일 때 프롬프트가 주 세션에 표시됨](#run-subagents-in-foreground-or-background) |1279| 권한 | 프롬프트가 터미널에 표시됨 | [Background에서 실행 중일 때 프롬프트가 주 세션에 표시됨](#run-subagents-in-foreground-or-background) |

1280| 프롬프트 캐시 | 주 세션과 공유 | 별도 캐시 |1280| 프롬프트 캐시 | 주 세션과 공유 | 별도 캐시 |

1281 1281 

1282포크의 시스템 프롬프트 및 도구 정의가 부모와 동일하기 때문에 첫 번째 요청은 부모의 [프롬프트 캐시](/docs/ko/prompt-caching#subagents-and-the-cache)를 재사용합니다. 이렇게 하면 동일한 컨텍스트가 필요한 작업에 대해 새로운 subagent를 생성하는 것보다 포크가 더 저렴합니다.1282포크의 시스템 프롬프트 및 도구 정의가 부모와 동일하기 때문에 첫 번째 요청은 부모의 [프롬프트 캐시](/docs/ko/prompt-caching#subagents-and-the-cache)를 재사용합니다. 이렇게 하면 동일한 컨텍스트가 필요한 작업에 대해 새로운 서브에이전트를 생성하는 것보다 포크가 더 저렴합니다.

1283 1283 

1284Claude가 Agent 도구를 통해 포크를 생성할 때 `isolation: "worktree"`를 전달하여 포크의 파일 편집이 체크아웃 대신 별도의 git worktree에 기록되도록 할 수 있습니다. 포크는 추가 포크를 생성할 수 없습니다.1284Claude가 Agent 도구를 통해 포크를 생성할 때 `isolation: "worktree"`를 전달하여 포크의 파일 편집이 체크아웃 대신 별도의 git worktree에 기록되도록 할 수 있습니다. 포크는 추가 포크를 생성할 수 없습니다.

1285 1285 

vs-code.md +1 −1

Details

606| `environmentVariables` | `[]` | Claude 프로세스에 대한 환경 변수를 설정합니다. 공유 구성의 경우 Claude Code 설정을 대신 사용합니다. [`CLAUDE_CONFIG_DIR`](/docs/ko/env-vars) 항목은 값이 절대 경로인 경우에만 적용됩니다. 확장 프로그램은 `~`를 확장하지 않으며 상대 경로 값은 무시합니다. |606| `environmentVariables` | `[]` | Claude 프로세스에 대한 환경 변수를 설정합니다. 공유 구성의 경우 Claude Code 설정을 대신 사용합니다. [`CLAUDE_CONFIG_DIR`](/docs/ko/env-vars) 항목은 값이 절대 경로인 경우에만 적용됩니다. 확장 프로그램은 `~`를 확장하지 않으며 상대 경로 값은 무시합니다. |

607| `disableLoginPrompt` | `false` | 인증 프롬프트 건너뛰기(타사 공급자 설정의 경우) |607| `disableLoginPrompt` | `false` | 인증 프롬프트 건너뛰기(타사 공급자 설정의 경우) |

608| `allowDangerouslySkipPermissions` | `false` | 모드 선택기에 권한 무시를 추가합니다. 인터넷 접근이 없는 샌드박스에서만 사용합니다. |608| `allowDangerouslySkipPermissions` | `false` | 모드 선택기에 권한 무시를 추가합니다. 인터넷 접근이 없는 샌드박스에서만 사용합니다. |

609| `claudeProcessWrapper` | - | Claude 프로세스를 실행하는 데 사용되는 실행 파일입니다. 번들된 바이너리 경로는 존재할 때 인수로 전달됩니다. 확장 프로그램 빌드가 플랫폼에 포함되지 않은 경우 별도로 설치된 `claude` 바이너리로 설정합니다. 래핑된 설정에서는 `initialPermissionMode`를 설정하거나 이전 대화에서 Manual, Edit automatically 또는 Auto를 선택하지 않는 한 대화가 Manual 모드에서 시작됩니다. 확장 프로그램이 설정 및 기본 제공 기본값 단계를 건너뛰기 때문입니다. [권한 모드 전환](/docs/ko/permission-modes#switch-permission-modes)을 참조하세요. 활성화 시 "Unsupported platform" 오류는 플랫폼에 번들된 바이너리가 없음을 의미합니다. [어떤 플랫폼에 미리 빌드된 바이너리가 있는지](/docs/ko/troubleshoot-install#native-binary-not-found-after-npm-install) 참조하세요. |609| `claudeProcessWrapper` | - | Claude 프로세스를 실행하는 데 사용되는 실행 파일입니다. 번들된 바이너리 경로는 존재할 때 인수로 전달됩니다. 확장 프로그램 빌드에 해당 플랫폼용 바이너리가 포함되어 있지 않은 경우 별도로 설치된 `claude` 바이너리로 설정합니다. |

610 610 

611<h2 id="use-a-screen-reader">611<h2 id="use-a-screen-reader">

612 화면 읽기 프로그램 사용612 화면 읽기 프로그램 사용

worktrees.md +3 −1

Details

6 6 

7> git worktree에서 병렬 Claude Code 세션을 격리하여 변경 사항이 충돌하지 않도록 합니다. `--worktree` 플래그, 서브에이전트 격리, `.worktreeinclude`, 정리 및 비git VCS 훅을 다룹니다.7> git worktree에서 병렬 Claude Code 세션을 격리하여 변경 사항이 충돌하지 않도록 합니다. `--worktree` 플래그, 서브에이전트 격리, `.worktreeinclude`, 정리 및 비git VCS 훅을 다룹니다.

8 8 

9[git worktree](https://git-scm.com/docs/git-worktree)는 자체 파일과 브랜치를 가진 별도의 작업 디렉토리이며, 메인 체크아웃과 동일한 저장소 히스토리 및 원격을 공유합니다. 각 Claude Code 세션을 자체 worktree에서 실행하면 한 세션의 편집이 다른 세션의 파일을 건드리지 않으므로, 한 세션이 기능을 구축하는 동안 두 번째 세션이 버그를 수정할 수 있습니다.9[git worktree](https://git-scm.com/docs/git-worktree)는 자체 파일과 브랜치를 가진 별도의 작업 디렉터리이며, 메인 체크아웃과 동일한 저장소 히스토리 및 원격을 공유합니다. 각 Claude Code 세션을 자체 worktree에서 실행하면 세션마다 편집할 파일의 별도 사본이 주어지므로, 한 세션이 기능을 구축하는 동안 두 번째 세션이 버그를 수정할 수 있습니다.

10 10 

11<Note>11<Note>

12 Worktree는 git 저장소가 필요합니다. 다른 버전 관리 시스템의 경우 [훅을 구성하여 git 로직을 대체](#non-git-version-control)합니다. [데스크톱 앱](/docs/ko/desktop#work-in-parallel-with-sessions)에서는 세션을 시작할 때 **worktree** 옵션을 선택하여 자체 worktree를 제공합니다.12 Worktree는 git 저장소가 필요합니다. 다른 버전 관리 시스템의 경우 [훅을 구성하여 git 로직을 대체](#non-git-version-control)합니다. [데스크톱 앱](/docs/ko/desktop#work-in-parallel-with-sessions)에서는 세션을 시작할 때 **worktree** 옵션을 선택하여 자체 worktree를 제공합니다.


104* **Git 리다이렉트**: Claude Code는 git을 메인 체크아웃으로 리다이렉트하는 Bash 또는 Monitor 명령을 차단합니다. 리다이렉트는 `git -C`, `--git-dir`, `GIT_DIR` 또는 `GIT_WORK_TREE` 변수, 또는 git을 실행하기 전에 메인 체크아웃으로 `cd`를 통해 올 수 있습니다.104* **Git 리다이렉트**: Claude Code는 git을 메인 체크아웃으로 리다이렉트하는 Bash 또는 Monitor 명령을 차단합니다. 리다이렉트는 `git -C`, `--git-dir`, `GIT_DIR` 또는 `GIT_WORK_TREE` 변수, 또는 git을 실행하기 전에 메인 체크아웃으로 `cd`를 통해 올 수 있습니다.

105* **명령 형태**: Claude Code는 명령 텍스트에서 명령이 실행하는 모든 git이 worktree 내부에 머물러 있는지 확인할 수 없을 때 Bash 또는 Monitor 명령을 차단합니다. 예를 들어 명령 이름이 런타임에 계산되거나 구문을 파싱할 수 없거나 `${!name}` 또는 `${ command; }`와 같은 확장이 텍스트에서 명시하지 않은 명령을 실행할 수 있을 때 발생합니다. Claude Code는 Claude에게 거부된 명령을 다시 작성하는 방법을 알려줍니다. 예를 들어 이를 일반 별도 명령으로 분할합니다. 이 확인을 끌 수 없습니다.105* **명령 형태**: Claude Code는 명령 텍스트에서 명령이 실행하는 모든 git이 worktree 내부에 머물러 있는지 확인할 수 없을 때 Bash 또는 Monitor 명령을 차단합니다. 예를 들어 명령 이름이 런타임에 계산되거나 구문을 파싱할 수 없거나 `${!name}` 또는 `${ command; }`와 같은 확장이 텍스트에서 명시하지 않은 명령을 실행할 수 있을 때 발생합니다. Claude Code는 Claude에게 거부된 명령을 다시 작성하는 방법을 알려줍니다. 예를 들어 이를 일반 별도 명령으로 분할합니다. 이 확인을 끌 수 없습니다.

106 106 

107이러한 확인은 편집이 대상으로 하는 경로, 명령이 실행되는 디렉터리, 명령의 텍스트를 읽습니다. 어느 확인도 셸 명령이 어떤 파일에 쓰는지는 추적하지 않으므로, `cp`나 셸 리다이렉트처럼 메인 체크아웃에서 git을 실행하지 않고 메인 체크아웃에 쓰는 명령은 이 확인으로 거부되지 않습니다. Claude Code는 이러한 명령을 다른 셸 명령과 동일하게 취급하므로, 명령이 실행되는지 또는 확인을 요청하는지는 [권한 모드](/docs/ko/permission-modes)와 규칙에 따라 달라집니다.

108 

107확인은 Claude Code를 실행한 저장소에 적용됩니다. 또한 연결된 worktree가 연결된 메인 체크아웃도 포함합니다. PowerShell 명령의 경우 Claude Code는 작업 디렉토리 확인만 적용합니다.109확인은 Claude Code를 실행한 저장소에 적용됩니다. 또한 연결된 worktree가 연결된 메인 체크아웃도 포함합니다. PowerShell 명령의 경우 Claude Code는 작업 디렉토리 확인만 적용합니다.

108 110 

109Claude는 각 거부를 worktree의 이름을 지정하고 진행 방법을 설명하는 도구 오류로 봅니다. 거부된 명령의 경우 [거부 메시지의 의미와 이를 해결하는 방법](/docs/ko/errors#command-blocked-by-the-worktree-isolation-checks)을 참조하세요.111Claude는 각 거부를 worktree의 이름을 지정하고 진행 방법을 설명하는 도구 오류로 봅니다. 거부된 명령의 경우 [거부 메시지의 의미와 이를 해결하는 방법](/docs/ko/errors#command-blocked-by-the-worktree-isolation-checks)을 참조하세요.