SpyBara
Go Premium

Documentation 2026-10-27 22:59 UTC to 2026-10-28 23:57 UTC

58 files changed +1,478 −1,223. View all changes and history on the product overview
2026
Fri 30 23:01 Thu 29 23:57 Wed 28 23:57 Tue 27 22:59 Mon 26 22:57 Sun 25 23:58 Sat 24 22:59 Fri 23 22:59 Thu 22 22:58 Wed 21 23:02 Tue 20 23:00 Mon 19 23:58 Sat 17 23:57 Fri 16 22:59 Thu 15 23:58 Wed 14 22:58 Tue 13 23:57 Sun 11 23:57 Sat 10 23:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

211. **프롬프트 수신.** Claude가 프롬프트, 시스템 프롬프트, 도구 정의, 대화 기록과 함께 프롬프트를 받습니다. SDK는 세션 메타데이터를 포함하는 서브타입 `"init"`이 있는 [`SystemMessage`](#message-types)를 생성합니다.211. **프롬프트 수신.** Claude가 프롬프트, 시스템 프롬프트, 도구 정의, 대화 기록과 함께 프롬프트를 받습니다. SDK는 세션 메타데이터를 포함하는 서브타입 `"init"`이 있는 [`SystemMessage`](#message-types)를 생성합니다.

222. **평가 및 응답.** Claude가 현재 상태를 평가하고 진행 방법을 결정합니다. 텍스트로 응답하거나, 하나 이상의 도구 호출을 요청하거나, 둘 다 할 수 있습니다. SDK는 텍스트 블록 또는 도구 호출 요청과 같은 각 콘텐츠 블록에 대해 하나씩 하나 이상의 [`AssistantMessage`](#message-types) 객체를 생성합니다.222. **평가 및 응답.** Claude가 현재 상태를 평가하고 진행 방법을 결정합니다. 텍스트로 응답하거나, 하나 이상의 도구 호출을 요청하거나, 둘 다 할 수 있습니다. SDK는 텍스트 블록 또는 도구 호출 요청과 같은 각 콘텐츠 블록에 대해 하나씩 하나 이상의 [`AssistantMessage`](#message-types) 객체를 생성합니다.

233. **도구 실행.** SDK가 요청된 각 도구를 실행하고 결과를 수집합니다. 각 도구 결과 세트가 다음 결정을 위해 Claude에게 다시 피드백됩니다. [hooks](https://code.claude.com/docs/ko/agent-sdk/hooks.md)를 사용하여 도구 호출을 실행 전에 가로채고, 수정하거나, 차단할 수 있습니다.233. **도구 실행.** SDK가 요청된 각 도구를 실행하고 결과를 수집합니다. 각 도구 결과 세트가 다음 결정을 위해 Claude에게 다시 피드백됩니다. [hooks](https://code.claude.com/docs/ko/agent-sdk/hooks.md)를 사용하여 도구 호출을 실행 전에 가로채고, 수정하거나, 차단할 수 있습니다.

244. **반복.** 2단계와 3단계가 주기로 반복됩니다. 각 전체 주기는 한 턴입니다. Claude는 도구 호출이 없는 응답을 생성할 때까지 도구를 계속 호출하고 결과를 처리합니다.244. **반복.** 2단계와 3단계가 주기로 반복됩니다. Claude는 도구 호출이 없는 응답을 생성할 때까지 도구를 계속 호출하고 결과를 처리합니다.

255. **결과 반환.** SDK는 텍스트 응답(도구 호출 없음)이 있는 최종 [`AssistantMessage`](#message-types)를 생성한 후, 최종 텍스트, 토큰 사용량, 비용, 세션 ID가 있는 [`ResultMessage`](#message-types)를 생성합니다.255. **결과 반환.** SDK는 텍스트 응답(도구 호출 없음)이 있는 최종 [`AssistantMessage`](#message-types)를 생성한 후, 최종 텍스트, 토큰 사용량, 비용, 세션 ID가 있는 [`ResultMessage`](#message-types)를 생성합니다.

26 26 

27간단한 질문("여기 어떤 파일이 있나요?")은 `Glob`을 호출하고 결과로 응답하는 한두 턴이 걸릴 수 있습니다. 복잡한 작업("auth 모듈을 리팩토링하고 테스트를 업데이트하세요")은 많은 턴에 걸쳐 수십 개의 도구 호출을 연결할 수 있으며, 파일을 읽고, 코드를 편집하고, 테스트를 실행하며, Claude가 각 결과에 따라 접근 방식을 조정합니다.27간단한 질문("여기 어떤 파일이 있나요?")은 두세 [턴](#turns-and-messages)이 걸릴 수 있습니다. 한두 턴은 `Glob`을 호출하고, 한 턴은 결과로 응답합니다. 복잡한 작업("auth 모듈을 리팩토링하고 테스트를 업데이트하세요")은 Claude가 각 결과에 따라 조정하면서 많은 턴에 걸쳐 수십 개의 도구 호출을 연결할 수 있습니다.

28 28 

29## 턴과 메시지29## 턴과 메시지

30 30 

31턴은 루프 내의 한 왕복입니다: Claude가 도구 호출을 포함하는 출력을 생성하고, SDK가 해당 도구를 실행하고, 결과가 자동으로 Claude에게 다시 피드백됩니다. 이는 코드에 제어를 반환하지 않고 발생합니다. Claude가 도구 호출이 없는 출력을 생성할 때까지 턴이 계속되며, 이 시점에서 루프가 끝나고 최종 결과가 전달됩니다.31턴은 루프 내의 한 왕복입니다: Claude가 출력을 생성하고, 출력에 도구 호출이 포함되어 있으면 SDK가 이를 실행하며 결과가 자동으로 Claude에게 다시 피드백됩니다. 이는 코드에 제어를 반환하지 않고 발생합니다. Claude가 도구 호출이 없는 출력을 생성할 때까지 턴이 계속되며, 이 시점에서 루프가 끝나고 최종 결과가 전달됩니다.

32 32 

33프롬프트 "Fix the failing tests in auth.ts"에 대한 전체 세션이 어떻게 보일 수 있는지 생각해 봅시다.33프롬프트 "Fix the failing tests in auth.ts"에 대한 전체 세션이 어떻게 보일 수 있는지 생각해 봅시다.

34 34 

Details

1274| `updated_input` | `dict[str, Any] \| None` | `None` | 원본 대신 사용할 수정된 입력 |1274| `updated_input` | `dict[str, Any] \| None` | `None` | 원본 대신 사용할 수정된 입력 |

1275| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | 적용할 권한 업데이트 |1275| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | 적용할 권한 업데이트 |

1276 1276 

1277`updated_permissions`에 4,096개를 초과하는 항목이 포함된 `PermissionResultAllow`를 반환하면 Claude Code는 결과를 유효하지 않은 것으로 처리하고 도구 호출을 거부합니다. 각 [`PermissionUpdate`](#permissionupdate)는 하나의 항목으로 계산되며, 해당 `rules` 또는 `directories` 목록의 각 항목도 마찬가지입니다. 거부 메시지는 `updatedPermissions may hold at most 4096 updates, rules and directories in all.`로 끝납니다. 거부를 피하려면 4,096개 이하의 항목을 반환하십시오.

1278 

1277### `PermissionResultDeny`1279### `PermissionResultDeny`

1278 1280 

1279도구 호출이 거부되어야 함을 나타내는 결과입니다.1281도구 호출이 거부되어야 함을 나타내는 결과입니다.

Details

1405 };1405 };

1406```1406```

1407 1407 

1408`updatedPermissions`에 4,096개를 초과하는 항목과 함께 `allow`를 반환하면 Claude Code는 결과를 유효하지 않은 것으로 처리하고 도구 호출을 거부합니다. 각 업데이트가 항목 하나로 계산되며, 그 `rules` 또는 `directories` 목록의 각 항목도 마찬가지입니다. 거부 메시지는 `updatedPermissions may hold at most 4096 updates, rules and directories in all`로 끝납니다. 호출이 허용되도록 하려면 4,096개 이하의 항목을 반환하십시오.1408`updatedPermissions`에 4,096개를 초과하는 항목과 함께 `allow`를 반환하면 Claude Code는 결과를 유효하지 않은 것으로 처리하고 도구 호출을 거부합니다. 각 업데이트가 하나의 항목으로 계산되며, 해당 `rules` 또는 `directories` 목록의 각 항목도 마찬가지입니다. 거부 메시지는 `updatedPermissions may hold at most 4096 updates, rules and directories in all.`로 끝납니다. 호출이 허용되게 하려면 4,096개 이하의 항목을 반환하십시오.

1409 1409 

1410### `ToolConfig`1410### `ToolConfig`

1411 1411 


4702 humanSchedule: string;4702 humanSchedule: string;

4703 recurring: boolean;4703 recurring: boolean;

4704 durable?: boolean; // true when persisted to .claude/scheduled_tasks.json; false when session-only4704 durable?: boolean; // true when persisted to .claude/scheduled_tasks.json; false when session-only

4705 nextFireAt?: number;

4705};4706};

4706```4707```

4707 4708 

4708작업 ID와 일정에 대한 사람이 읽을 수 있는 설명을 반환합니다.4709작업 ID, 사람이 읽을 수 있는 일정, 다음 실행 시간을 반환합니다. `nextFireAt`은 [지터](https://code.claude.com/docs/ko/scheduled-tasks.md#jitter)가 이미 적용된 epoch 밀리초 단위로 이 시간을 제공하므로, 작업이 실행되도록 설정된 시점을 나타냅니다. 이 필드는 TypeScript Agent SDK v0.3.299 이상 및 Claude Code v2.1.299 이상이 필요합니다.

4709 4710 

4710### CronDelete4711### CronDelete

4711 4712 


4732 prompt: string;4733 prompt: string;

4733 recurring?: boolean;4734 recurring?: boolean;

4734 durable?: boolean;4735 durable?: boolean;

4736 nextFireAt?: number;

4735 }[];4737 }[];

4736};4738};

4737```4739```

4738 4740 

4739예약된 cron 작업을 반환합니다: `.claude/scheduled_tasks.json`의 지속 가능한 작업과 현재 세션의 세션 전용 작업입니다. 세션 전용 작업은 `durable: false`를 전달합니다. 디스크에서 읽은 작업은 필드를 생략합니다.4741예약된 cron 작업을 반환합니다: `.claude/scheduled_tasks.json`의 지속 가능한 작업과 현재 세션의 세션 전용 작업입니다. 세션 전용 작업은 `durable: false`를 전달합니다. 디스크에서 읽은 작업은 필드를 생략합니다.

4740 4742 

4743`nextFireAt`은 [지터](https://code.claude.com/docs/ko/scheduled-tasks.md#jitter)가 포함된, epoch 밀리초 단위의 작업 다음 실행 시간입니다. 어떤 값도 `CronList` 호출 시점보다 이르지 않습니다: [실행되지 않은 채 시간이 지난](https://code.claude.com/docs/ko/scheduled-tasks.md#how-scheduled-tasks-run) 작업은 호출 시간을 전달합니다. 이 필드는 TypeScript Agent SDK v0.3.299 이상 및 Claude Code v2.1.299 이상이 필요합니다.

4744 

4741### ScheduleWakeup4745### ScheduleWakeup

4742 4746 

4743**도구 이름:** `ScheduleWakeup`4747**도구 이름:** `ScheduleWakeup`


5455};5459};

5456```5460```

5457 5461 

5462`setMcpServers()` 프로미스는 새로 추가된 stdio, HTTP, SSE 서버가 연결되거나 실패한 후에 resolve되므로, 연결된 서버의 도구는 다음 턴에서 사용할 수 있습니다.

5463 

5458`setMcpServers()`를 호출하면 Claude Code는 다음 규칙을 적용합니다.5464`setMcpServers()`를 호출하면 Claude Code는 다음 규칙을 적용합니다.

5459 5465 

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


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

5465* **`.mcp.json` 같은 MCP 설치 범위의 서버와 이름이 같은 stdio, HTTP 또는 SSE 서버**: 해당 이름으로 세션은 [설치 범위 서버](https://code.claude.com/docs/ko/mcp.md#mcp-installation-scopes)가 아닌 사용자 서버의 도구를 사용합니다. Claude Code v2.1.305 이전에는 앱이 [플러그인을 다시 로드](#query-object)할 때 Claude Code가 사용자 서버의 연결을 끊고 설치 범위 서버를 연결할 수 있었습니다.5471* **`.mcp.json` 같은 MCP 설치 범위의 서버와 이름이 같은 stdio, HTTP 또는 SSE 서버**: 해당 이름으로 세션은 [설치 범위 서버](https://code.claude.com/docs/ko/mcp.md#mcp-installation-scopes)가 아닌 사용자 서버의 도구를 사용합니다. Claude Code v2.1.305 이전에는 앱이 [플러그인을 다시 로드](#query-object)할 때 Claude Code가 사용자 서버의 연결을 끊고 설치 범위 서버를 연결할 수 있었습니다.

5466 5472 

5467프로미스는 새로 추가된 stdio, HTTP, SSE 서버가 연결되거나 실패한 후에 resolve되므로, 연결된 서버의 도구는 다음 턴에서 사용할 수 있습니다.

5468 

5469`added`는 연결 여부와 관계없이 Claude Code가 추가하거나 대체한 서버를 나열합니다. 연결에 실패한 서버는 `added`와 `errors` 모두에 나타나며, `errors`에는 실패 텍스트가, [`mcpServerStatus()`](#methods)에는 `failed` 항목이 표시됩니다. Claude Code v2.1.257 이전에는 연결 시도에서 예외가 발생한 서버가 `errors`에만 보고되었습니다.5473`added`는 연결 여부와 관계없이 Claude Code가 추가하거나 대체한 서버를 나열합니다. 연결에 실패한 서버는 `added`와 `errors` 모두에 나타나며, `errors`에는 실패 텍스트가, [`mcpServerStatus()`](#methods)에는 `failed` 항목이 표시됩니다. Claude Code v2.1.257 이전에는 연결 시도에서 예외가 발생한 서버가 `errors`에만 보고되었습니다.

5470 5474 

5475`Blocked by enterprise`로 시작하는 `errors` 값은 연결에 실패한 것이 아니라 정책이 서버를 거부했음을 의미합니다.

5476 

5477* `Blocked by enterprise policy (allowedMcpServers/deniedMcpServers)`: 서버가 `added`에 없습니다. [`deniedMcpServers`](https://code.claude.com/docs/ko/managed-mcp#policy-based-control-with-allowlists-and-denylists) 항목이 서버와 일치하거나, `allowedMcpServers` 목록이 설정되어 있고 해당 서버가 빠져 있습니다. 그 목록이 [`settingSources`](#options)로 로드하는 설정 파일에 있다면 파일을 편집합니다. 관리형 설정에 있다면 관리자에게 변경을 요청합니다.

5478* `Blocked by enterprise managed policy`: 서버가 `added`에 있으며, `mcpServerStatus()`에 `failed` 항목이 있습니다. 어떤 정책이 서버를 차단하는지 관리자에게 문의합니다.

5479 

5471### `RewindFilesResult`5480### `RewindFilesResult`

5472 5481 

5473`rewindFiles()` 작업의 결과입니다.5482`rewindFiles()` 작업의 결과입니다.

Details

17 17 

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

19 19 

20브라우저에서 로그인 후 리디렉션 대신 로그인 코드를 표시하면 터미널의 `Paste code here if prompted` 프롬프트에 붙여넣습니다. 이는 브라우저가 Claude Code의 로컬 콜백 서버에 도달할 수 없을 때 발생하며, WSL2, SSH 세션 및 컨테이너에서 일반적입니다.20브라우저에서 로그인 후 리디렉션 대신 로그인 코드를 표시하면 터미널의 `Paste code here if prompted` 프롬프트에 붙여넣습니다.

21 21 

22로그인이 완료되면 터미널에 `Login successful`이 표시되고 `Enter`를 눌러 계속하라는 메시지가 나타납니다.22로그인이 완료되면 터미널에 `Login successful`이 표시되고 `Enter`를 눌러 계속하라는 메시지가 나타납니다.

23 23 


127모든 머신에서 선택지를 얻지는 못합니다. Claude Code는 다음의 경우 묻지 않고 API 키를 생성합니다.127모든 머신에서 선택지를 얻지는 못합니다. Claude Code는 다음의 경우 묻지 않고 API 키를 생성합니다.

128 128 

129* [Amazon Bedrock, Google Cloud's Agent Platform 또는 Microsoft Foundry](https://code.claude.com/docs/ko/third-party-integrations.md) 또는 [Claude Platform on AWS](https://code.claude.com/docs/ko/claude-platform-on-aws.md)와 같은 클라우드 공급자에 대해 실행합니다.129* [Amazon Bedrock, Google Cloud's Agent Platform 또는 Microsoft Foundry](https://code.claude.com/docs/ko/third-party-integrations.md) 또는 [Claude Platform on AWS](https://code.claude.com/docs/ko/claude-platform-on-aws.md)와 같은 클라우드 공급자에 대해 실행합니다.

130* 모든 설정 파일이 [`forceLoginOrgUUID`](#restrict-login-to-your-organization)를 설정하거나 `forceLoginMethod`를 `"claudeai"` 또는 `"console"`로 설정합니다.130* 어떤 설정 파일이든 [`forceLoginOrgUUID`](#restrict-login-to-your-organization)를 설정하거나 `forceLoginMethod`를 `"claudeai"`로 설정합니다.

131* `forceLoginMethod`가 `"console"`이고 어떤 설정 파일도 `forceLoginOrgUUID`를 설정하지 않는 경우이며, 로그인에 실패한 후 오류 화면에서 재시도하기 전까지 적용됩니다.

131* 관리형 설정 파일, MDM 프로필 또는 캐시된 서버 관리 설정과 같은 머신의 관리형 설정 소스가 존재하지만 Claude Code가 [읽을 수 없으며](https://code.claude.com/docs/ko/managed-settings.md#invalid-entries-in-managed-settings) 다른 관리형 소스가 정책을 제공하지 않습니다.132* 관리형 설정 파일, MDM 프로필 또는 캐시된 서버 관리 설정과 같은 머신의 관리형 설정 소스가 존재하지만 Claude Code가 [읽을 수 없으며](https://code.claude.com/docs/ko/managed-settings.md#invalid-entries-in-managed-settings) 다른 관리형 소스가 정책을 제공하지 않습니다.

132 133 

133키 없이 로그인하기 전에 `ANTHROPIC_API_KEY`를 설정 해제하세요.134키 없이 로그인하기 전에 `ANTHROPIC_API_KEY`를 설정 해제하세요.


140 141 

141프로필에 대한 다른 모든 것이 이 로그인에 적용되며, 여기에는 다른 자격 증명에 대한 순위, `/status`에서 얻는 `Profile` 행 및 claude.ai 로그인이 필요한 기능이 포함됩니다. [Anthropic 프로필 및 페더레이션 자격 증명](#anthropic-profiles-and-federation-credentials)을 참조하세요.142프로필에 대한 다른 모든 것이 이 로그인에 적용되며, 여기에는 다른 자격 증명에 대한 순위, `/status`에서 얻는 `Profile` 행 및 claude.ai 로그인이 필요한 기능이 포함됩니다. [Anthropic 프로필 및 페더레이션 자격 증명](#anthropic-profiles-and-federation-credentials)을 참조하세요.

142 143 

144#### 관리형 머신에서 키 없는 로그인 제공 중지

145 

146Claude Code가 [키 없는 로그인](#sign-in-without-an-api-key)을 제공하지 않도록 하려면 장치 관리 도구를 사용하여 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)의 [`forceLoginOrgUUID`](https://code.claude.com/docs/ko/settings-reference#forceloginorguuid)를 각 개발자의 머신에 배포하세요. 이 값을 [Console 조직 ID](https://platform.claude.com/settings/organization)로 설정하세요. 배포하기 전에 각 개발자에게 [API 키를 생성할 수 있는 역할](#claude-console-authentication)이 있는지 확인하세요. 배포한 후에는 해당 역할이 없는 개발자는 `/login`에서 Console에 로그인할 수 없습니다.

147 

148`forceLoginMethod`만 `"console"`로 설정된 경우 개발자는 실패한 로그인을 재시도하여 키 없는 옵션을 선택할 수 있습니다. `forceLoginOrgUUID`가 배포되면 로그인 화면에서 해당 옵션이 제거되지만, 개발자는 이미 보유하고 있거나 [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication)으로 생성하는 [Anthropic 프로필](#anthropic-profiles-and-federation-credentials)을 여전히 사용할 수 있습니다. 배포한 후에는 각 머신에서 다음 자격 증명과 로그인을 처리하세요.

149 

150* **키 없는 로그인**: 개발자를 API 키로 전환하려면 로그아웃한 다음 Console에 다시 로그인하도록 하세요. 이때 키가 생성됩니다. 키 없는 로그인의 경우 셸에서 `claude auth logout`을 실행합니다. `ant auth login` 프로필의 경우 `ant auth logout`을 실행합니다. 프로필과 API 키가 모두 머신에 있으면 Claude Code가 세션을 거부하므로 먼저 로그아웃해야 합니다.

151* **환경 및 헬퍼 자격 증명**: Claude Code는 관리형 설정이 제공하는 경우에도 `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` 또는 `apiKeyHelper`로 인증하는 세션을 거부합니다. 해당 자격 증명을 제거한 다음 개발자가 `/login`을 실행하여 저장된 API 키를 생성하도록 하세요.

152* **claude.ai 로그인**: Claude Code는 머신에서 이미 사용 중인 조직을 포함하여 나열하지 않은 조직에 대한 [로그인을 거부](#restrict-login-to-your-organization)합니다. 해당 조직을 유지하려면 `forceLoginOrgUUID` 배열에 추가하세요.

153 

143### 클라우드 공급자 인증154### 클라우드 공급자 인증

144 155 

145Amazon Bedrock, Google Cloud's Agent Platform 또는 Microsoft Foundry를 사용하는 팀의 경우:156Amazon Bedrock, Google Cloud's Agent Platform 또는 Microsoft Foundry를 사용하는 팀의 경우:


172* **`claude setup-token` 및 `/install-github-app`**: `forceLoginMethod`만 강제하므로 다른 조직에서 토큰을 발급할 수 있습니다.183* **`claude setup-token` 및 `/install-github-app`**: `forceLoginMethod`만 강제하므로 다른 조직에서 토큰을 발급할 수 있습니다.

173* **[게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway) 로그인**: `forceLoginMethod: "gateway"`로 선택되며 제한되지 않으며 Anthropic 조직에 대해 인증하지 않으므로 `forceLoginOrgUUID`가 적용되지 않습니다. 게이트웨이 ID 공급자를 사용하여 액세스를 제한하세요.184* **[게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway) 로그인**: `forceLoginMethod: "gateway"`로 선택되며 제한되지 않으며 Anthropic 조직에 대해 인증하지 않으므로 `forceLoginOrgUUID`가 적용되지 않습니다. 게이트웨이 ID 공급자를 사용하여 액세스를 제한하세요.

174 185 

175장치 관리 도구를 통해 키를 배포하세요. [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md)은 이미 조직에 인증된 계정에만 도달하므로 개발자의 첫 로그인을 리디렉션할 수 없습니다. 조직에서 서버 관리 설정도 배포하는 경우 두 위치 모두에 키를 설정하세요. 관리형 설정 소스는 [병합되지 않으며](https://code.claude.com/docs/ko/server-managed-settings.md#settings-precedence) 캐시된 서버 관리 설정은 몇 가지 [키별 예외](https://code.claude.com/docs/ko/server-managed-settings.md#per-key-exceptions-across-managed-sources)를 제외하고 장치 관리 파일을 바꿉니다. `forceLoginOrgUUID` 및 `forceLoginMethod`의 `"claudeai"` 및 `"console"` 값은 이러한 예외 중 하나가 아니므로 두 위치 모두에 유지하세요.186장치 관리 도구를 통해 `forceLoginMethod` 및 `forceLoginOrgUUID`를 배포하세요. 개발자는 조직에 인증한 후에만 [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md)을 받으므로 해당 설정으로는 첫 로그인을 리디렉션할 수 없습니다. claude.ai에서 서버 관리 설정도 배포하는 경우 모든 클라이언트가 v2.1.299 이상을 실행할 때까지 그곳에도 두 키를 모두 설정하세요. 이후 키를 설정할 위치와 어느 소스의 값이 적용되는지는 [로그인 키를 제공하는 관리형 소스](https://code.claude.com/docs/ko/managed-settings.md#which-managed-source-supplies-login-keys)를 참조하세요.

176 187 

177[게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway) 배포에서는 [게이트웨이가 제공하는 설정](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#managed)에서 `forceLoginMethod` 및 `forceLoginOrgUUID`를 제외하세요.188[게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway) 배포에서는 [게이트웨이가 제공하는 설정](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#managed)에서 `forceLoginMethod` 및 `forceLoginOrgUUID`를 제외하세요.

178 189 

Details

155 155 

156모든 것을 한 번에 채울 필요는 없습니다. 합리적인 롤아웃: 기본값으로 시작하여 소스 제어 조직과 주요 내부 서비스를 추가합니다. 이는 자신의 저장소로 푸시하는 것과 같은 가장 일반적인 거짓 양성을 해결합니다. 다음으로 신뢰할 수 있는 도메인과 클라우드 버킷을 추가합니다. 블록이 발생할 때 나머지를 채웁니다.156모든 것을 한 번에 채울 필요는 없습니다. 합리적인 롤아웃: 기본값으로 시작하여 소스 제어 조직과 주요 내부 서비스를 추가합니다. 이는 자신의 저장소로 푸시하는 것과 같은 가장 일반적인 거짓 양성을 해결합니다. 다음으로 신뢰할 수 있는 도메인과 클라우드 버킷을 추가합니다. 블록이 발생할 때 나머지를 채웁니다.

157 157 

158## `/auto-mode-setup`으로 환경 항목 생성158## `/auto-mode-setup`으로 환경 항목 생성하기

159 159 

160`/auto-mode-setup`을 실행하여 Claude Code가 프로젝트와 최근 세션에서 `autoMode.environment` 항목을 작성하도록 하고, 때로는 [규칙 항목](#override-the-block-and-allow-rules)도 작성하도록 할 수 있습니다. 초안을 수락하면 Claude Code가 이를 `~/.claude/settings.json`에 작성합니다.160`/auto-mode-setup`을 실행하면 Claude Code가 프로젝트와 해당 프로젝트의 최근 세션을 바탕으로 `autoMode.environment` 항목의 초안을 작성하며, 경우에 따라 [규칙 항목](#override-the-block-and-allow-rules)도 함께 작성합니다. 초안을 수락하면 Claude Code가 이를 `~/.claude/settings.json`에 기록합니다.

161 161 

162> [!NOTE]162> [!NOTE]

163>163>

164> `/auto-mode-setup`은 Pro, Max, Team 및 Enterprise 플랜과 Claude Console API 키에서 사용할 수 있습니다. Pro, Max 또는 Team 플랜에서는 v2.1.228 이상이 필요하며, 기본 Windows에서는 v2.1.233 이상이 필요합니다. Enterprise 플랜 또는 Claude Console API 키를 사용하는 경우 v2.1.283 이상이 필요합니다. 세션에 이 명령이 없으면 [`/auto-mode-setup`이 "Unknown command"를 반환하는 경우](#auto-mode-setup-returns-unknown-command)를 참조하세요.164> `/auto-mode-setup`은 Pro, Max, Team, Enterprise 플랜과 Claude Console API 키에서 사용할 수 있습니다. Pro, Max 또는 Team 플랜에서는 v2.1.228 이상이 필요하며, 네이티브 Windows에서는 v2.1.233 이상이 필요합니다. Enterprise 플랜 또는 Claude Console API 키를 사용하는 경우 v2.1.283 이상이 필요합니다. 세션에서 명령이 보이지 않는 경우 [`/auto-mode-setup` returns "Unknown command"](#auto-mode-setup-returns-unknown-command)를 참조하십시오.

165 165 

166### `/auto-mode-setup`이 읽는 항목166### `/auto-mode-setup`이 읽는 항목

167 167 

168`~/.claude/settings.json`에 이미 `autoMode` 항목이 있으면 Claude Code는 먼저 환경 목록에 추가할지 아니면 바꿀지 묻고, 어느 쪽이든 작성한 규칙을 유지합니다. 그 후 Claude Code는 이 프로젝트를 어떻게 사용하는지 묻고 스캔하기 전에 두 가지 선택적 스캔을 제공합니다. 스캔에서 Claude Code는 항상 다음 소스를 읽습니다:168`~/.claude/settings.json`에 이미 `autoMode` 항목이 있는 경우, Claude Code는 먼저 환경 목록에 추가할지 아니면 교체할지 묻고, 어느 쪽이든 사용자가 작성한 규칙은 유지합니다. 그런 다음 Claude Code는 이 프로젝트를 어떻게 사용하는지 묻고, 스캔을 시작하기 전에 두 가지 선택적 스캔을 제안합니다. 스캔 시 Claude Code는 항상 다음 소스를 읽습니다.

169 169 

170* 이 프로젝트의 `CLAUDE.md`, `README.md`, 설정 파일 및 git 원격170* 이 프로젝트의 `CLAUDE.md`, `README.md`, 구성 파일, git 원격

171* `autoMode` 및 `permissions.allow` 설정171* 사용자의 `autoMode` 및 `permissions.allow` 설정

172* 이 프로젝트의 최근 세션에서 Claude가 실행한 명령의 호스트, 버킷 및 명령 이름(메시지는 절대 아님)172* 이 프로젝트의 최근 세션에서 Claude가 실행한 명령의 호스트, 버킷, 명령 이름(사용자의 메시지는 절대 읽지 않음)

173 173 

174두 가지 선택적 스캔은 각각 하나의 소스를 추가합니다:174두 가지 선택적 스캔은 각각 하나의 소스를 추가합니다.

175 175 

176* 셸 히스토리의 각 명령의 첫 번째 단어176* 셸 기록에 있는 각 명령의 첫 단어

177* 홈 디렉토리 아래의 원격 호스트 및 저장소 이름177* 홈 디렉터리 아래에 있는 저장소의 원격 호스트와 이름

178 178 

179### 초안 검토 및 저장179### 초안 검토 및 저장

180 180 

181Claude Code는 백그라운드에서 스캔한 후 초안을 표시합니다. 전체적으로 수락하거나 버릴 수 있으므로 나중에 `~/.claude/settings.json`을 편집하여 개별 항목을 조정합니다. 수락하면 Claude Code는 초안을 작성하고 이미 있는 설정과 조정합니다:181Claude Code는 백그라운드에서 스캔한 다음 초안을 보여줍니다. 초안은 전체 단위로 수락하거나 폐기하므로, 개별 항목을 조정하려면 이후에 `~/.claude/settings.json`을 편집하십시오. 수락하면 Claude Code는 초안을 기록하고 기존 설정과 다음과 같이 조정합니다.

182 182 

183* Claude Code는 초안이 변경하지 않은 기본 제공 항목을 명시하므로 `"$defaults"` 없이 `environment` 목록을 작성합니다183* 초안에 변경되지 않은 기본 제공 항목이 명시적으로 포함되어 있으므로, Claude Code는 `"$defaults"` 없이 `environment` 목록을 기록합니다

184* Claude Code는 초안이 항목을 추가하는 `allow`, `soft_deny` 및 `hard_deny` 목록 각각에 `"$defaults"`를 포함합니다. 단, 이미 `allow` 목록을 `"$defaults"` 없이 작성한 경우는 제외되므로 [기본 제공 규칙](#override-the-block-and-allow-rules)을 바꾸지 않은 경우 계속 적용됩니다184* Claude Code는 초안이 항목을 추가하는 `allow`, `soft_deny`, `hard_deny` 목록 각각에 `"$defaults"`를 포함합니다. 단, 사용자가 이미 `"$defaults"` 없이 `allow` 목록을 작성한 경우는 예외입니다. 이를 통해 교체하지 않은 [기본 제공 규칙](#override-the-block-and-allow-rules)이 계속 적용됩니다

185* 저장 후 Claude Code는 `~/.claude/settings.json`의 `permissions.allow` 규칙 중 자동 모드가 무시하는 규칙(예: `Bash(*)`) 또는 파괴적인 명령을 자동으로 승인하는 규칙을 제거할 것을 제안합니다185* 저장 후 Claude Code는 `~/.claude/settings.json`에서 자동 모드가 무시하는 `permissions.allow` 규칙(예: `Bash(*)`)이나 파괴적인 명령을 자동 승인하는 규칙을 제거하도록 제안합니다

186 186 

187그 후 `claude auto-mode config`를 실행하여 [유효한 결과를 확인](#inspect-the-defaults-and-your-effective-config)합니다.187그런 다음 `claude auto-mode config`를 실행하여 [실제 적용 결과를 확인](#inspect-the-defaults-and-your-effective-config)하십시오.

188 188 

189### `/auto-mode-setup` 비활성화189### `/auto-mode-setup` 끄기

190 190 

191자동 모드가 여러 작업을 차단했는데도 여전히 `autoMode.environment` 항목이 없으면 Claude Code는 턴 끝에 "자동 모드에 환경을 알려주시겠습니까?"라는 제목의 대화 상자를 표시하고 `/auto-mode-setup`을 실행할 것을 제안합니다. 명령은 유지하면서 제안을 중지하려면 해당 대화 상자에서 **다시 표시 안 함**을 선택합니다.191자동 모드가 여러 작업을 차단했는데도 `autoMode.environment` 항목이 아직 없는 경우, Claude Code는 턴이 끝날 때 "Teach auto mode about your environment?"라는 제목의 대화 상자를 표시하고 `/auto-mode-setup`을 대신 실행하도록 제안합니다. 명령은 유지하되 이 제안을 중단하려면 해당 대화 상자에서 **Don't show again**을 선택하십시오.

192 192 

193명령과 제안을 모두 비활성화하려면 이 [`skillOverrides`](https://code.claude.com/docs/ko/skills#override-skill-visibility-from-settings) 항목을 `~/.claude/settings.json`에 추가합니다:193명령과 제안을 모두 끄려면 다음 [`skillOverrides`](https://code.claude.com/docs/ko/skills#override-skill-visibility-from-settings) 항목을 `~/.claude/settings.json`에 추가하십시오.

194 194 

195```json theme={null}195```json theme={null}

196{196{


200}200}

201```201```

202 202 

203`/auto-mode-setup`은 [번들 스킬](https://code.claude.com/docs/ko/skills.md#bundled-skills)이 아닌 기본 제공 명령이므로 이 `skillOverrides` 항목은 여전히 적용되지만 [`disableBundledSkills`](https://code.claude.com/docs/ko/settings-reference#disablebundledskills)는 이를 비활성화하지 않습니다.203`/auto-mode-setup`은 [번들 스킬](https://code.claude.com/docs/ko/skills.md#bundled-skills)이 아닌 기본 제공 명령이므로, 이 `skillOverrides` 항목은 여전히 적용되지만 [`disableBundledSkills`](https://code.claude.com/docs/ko/settings-reference#disablebundledskills)로는 꺼지지 않습니다.

204 204 

205### `/auto-mode-setup`이 "Unknown command"를 반환하는 경우205### `/auto-mode-setup` returns "Unknown command"

206 206 

207Claude Code 프롬프트에 `/auto-mode-setup`을 입력했을 때 `Unknown command: /auto-mode-setup`이 출력되면 다음 원인을 확인합니다:207Claude Code 프롬프트에서 `/auto-mode-setup`을 입력했을 때 `Unknown command: /auto-mode-setup`이 출력되면 다음 원인을 확인하십시오.

208 208 

209* **설치 또는 업그레이드 후 첫 세션**: 새 세션을 시작합니다. 새 세션에서도 명령이 여전히 없으면 [이후 세션도 이 명령 없이 시작되는 설정](https://code.claude.com/docs/ko/env-vars.md#first-session-after-an-install-or-upgrade)을 참조하세요.209* **설치 또는 업그레이드 후 첫 세션**: 새 세션을 시작하십시오. 새 세션에서도 명령이 보이지 않으면 [이후 세션도 명령 없이 시작되는 설정](https://code.claude.com/docs/ko/env-vars.md#first-session-after-an-install-or-upgrade)을 참조하십시오.

210* **오래된 버전**: 셸에서 `claude --version`을 실행합니다. 버전이 [플랜의 최소 버전](#generate-environment-entries)보다 낮으면 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)합니다.210* **오래된 버전**: 셸에서 `claude --version`을 실행하십시오. 버전이 [플랜별 최소 버전](#generate-environment-entries)보다 낮으면 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하십시오.

211* **텔레메트리 꺼짐, 서드파티 제공업체 또는 Claude 앱 게이트웨이**: v2.1.304 이전에는 [기능 플래그 가져오기가 꺼진 세션](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching)에서 이 명령을 사용할 수 없습니다. 세션이 이에 해당하면 [Claude Code를 v2.1.304 이상으로 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)합니다.211* **텔레메트리 꺼짐, 서드파티 제공업체 또는 Claude apps 게이트웨이**: v2.1.304 이전에는 [기능 플래그 가져오기가 꺼진 세션](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching)에서 이 명령을 사용할 수 없습니다. 사용 중인 세션이 이에 해당하면 [Claude Code를 v2.1.304 이상으로 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하십시오.

212 212 

213[클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서는 이 명령이 대신 `/auto-mode-setup isn't available in this environment.`를 출력합니다. 터미널의 대화형 세션에서 실행합니다.213[클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서는 이 명령이 대신 `/auto-mode-setup isn't available in this environment.`를 출력합니다. 터미널의 대화형 세션에서 실행하십시오.

214 214 

215## 차단 및 허용 규칙 재정의215## 차단 및 허용 규칙 재정의

216 216 


355 355 

356## 거부 검토356## 거부 검토

357 357 

358자동 모드 분류기가 거부한 작업을 검토하고 재시도하려면 `/permissions`를 열고 **최근 거부됨** 탭을 선택합니다. 여기서 Claude Code는 각 거부를 기록합니다. 거부된 작업에서 `r`을 누르면 재시도 대상으로 표시됩니다. 대화 상자를 종료하면 Claude Code는 모델에 해당 도구 호출을 재시도할 수 있음을 알리는 메시지를 보내고 대화를 재개합니다.358자동 모드 분류기가 거부한 작업을 검토하고 재시도하려면 `/permissions`를 열고 **Recently denied** 탭을 선택합니다. Claude Code는 이 탭에 각 거부 내역을 기록합니다. 거부된 작업에서 `r`을 누르면 재시도 대상으로 표시됩니다. 대화 상자를 나가면 Claude Code가 해당 도구 호출을 재시도해도 된다고 모델에 알리는 메시지를 보내고 대화를 재개합니다.

359 359 

360분류기가 [작업의 안전성에 대해 판단을 내릴 수 없을 때](https://code.claude.com/docs/ko/errors.md#auto-mode-cannot-determine-the-safety-of-an-action), 자동 모드와 별개의 안전 검사가 분류기의 요청을 거부했거나 응답이 파싱되지 않았기 때문에 Claude Code는 **최근 거부됨** 아래에 기록하지 않고 작업을 거부합니다. 연결된 오류 항목은 Claude에게 전달되는 내용과 필요한 경우 작업을 실행하는 방법을 다룹니다.360자동 모드와 별개인 안전 검사가 분류기 자체의 요청을 거부했거나 분류기의 응답을 파싱할 수 없어서 분류기가 [작업에 대한 판정을 내리지 못한](https://code.claude.com/docs/ko/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) 경우, Claude Code는 해당 작업을 **Recently denied**에 기록하지 않고 거부합니다. 링크된 오류 항목에서 Claude에게 전달되는 내용과 필요할 때 해당 작업을 실행하는 방법을 확인할 수 있습니다.

361 361 

362### 허용 규칙, 환경 항목 또는 재시도로 거부 해결362### 허용 규칙, 환경 항목 또는 재시도로 거부 해결하기

363 363 

364`bash denied by auto mode · [Data Exfiltration] · /permissions`와 같은 알림의 원인이 된 명령 또는 URL을 확인하려면 **최근 거부됨** 탭, 훅 또는 대화를 사용합니다.364`bash denied by auto mode · [Data Exfiltration] · /permissions`와 같은 알림의 원인이 된 명령이나 URL을 확인하려면 **Recently denied** 탭, 훅 또는 대화를 사용합니다.

365 365 

366* **최근 거부됨 탭**: `/permissions` 대화 상자에서 거부된 Bash 또는 PowerShell 작업을 강조 표시하면 목록 아래에서 해당 명령을 확인할 수 있습니다. [화면 판독기 모드](https://code.claude.com/docs/ko/accessibility.md)에서는 대신 모든 명령이 목록 앞에 표시됩니다.366* **Recently denied 탭**: `/permissions` 대화 상자에서 거부된 Bash 또는 PowerShell 작업을 강조 표시하면 목록 아래에서 해당 명령을 확인할 수 있습니다. [스크린 리더 모드](https://code.claude.com/docs/ko/accessibility.md)에서는 모든 명령이 목록 앞에 표시됩니다.

367* **훅**: 거부의 정확한 입력을 프로그래밍 방식으로 캡처하려면 [`PermissionDenied` 훅](https://code.claude.com/docs/ko/hooks#permissiondenied)을 추가합니다. 이 훅은 `tool_input`으로 입력을 받습니다.367* **훅**: 거부된 작업의 정확한 입력을 프로그래밍 방식으로 캡처하려면 [`PermissionDenied` 훅](https://code.claude.com/docs/ko/hooks#permissiondenied)을 추가합니다. 이 훅은 입력을 `tool_input`으로 전달받습니다.

368* **대화**: 도구 호출을 찾습니다. 호출이 단축되거나 `Ran 3 shell commands`와 같은 요약 줄로 접혀 있으면 `Ctrl+O`를 눌러 [트랜스크립트 뷰어](https://code.claude.com/docs/ko/interactive-mode.md#transcript-viewer)를 열어 확장합니다.368* **대화**: 해당 도구 호출을 찾습니다. 호출이 축약되어 표시되거나 `Ran 3 shell commands`와 같은 요약 줄로 접혀 있다면 `Ctrl+O`를 눌러 [트랜스크립트 뷰어](https://code.claude.com/docs/ko/interactive-mode.md#transcript-viewer)를 열면 펼쳐서 볼 수 있습니다.

369 369 

370호출 아래의 텍스트는 수정할 사항이 있는지 알려줍니다. 흐리게 표시된 `Not run · auto mode's check had no usable answer` 행이나 분류기 자체의 문제를 보고하는 텍스트(예: `Auto mode could not evaluate this action`)는 Claude Code가 분류기의 판단 없이 호출을 차단했음을 의미합니다. `Not run` 행의 경우 `Ctrl+O`를 눌러 전체 메시지를 읽은 다음, [자동 모드가 작업의 안전성을 판단할 수 없음](https://code.claude.com/docs/ko/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) 또는 [서버가 안전성 판단을 반환하지 않음](https://code.claude.com/docs/ko/errors.md#the-server-returned-no-safety-verdict)을 참조하여 수행할 작업을 확인합니다.370호출 아래의 텍스트를 보면 해결할 것이 있는지 알 수 있습니다. 흐리게 표시된 `Not run · auto mode's check had no usable answer` 행이나 `Auto mode could not evaluate this action`처럼 분류기 자체의 문제를 알리는 텍스트는 Claude Code가 분류기의 판정 없이 호출을 차단했다는 뜻입니다. `Not run` 행의 경우 `Ctrl+O`를 눌러 전체 메시지를 읽은 다음, 대처 방법은 [Auto mode cannot determine the safety of an action](https://code.claude.com/docs/ko/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) 또는 [The server returned no safety verdict](https://code.claude.com/docs/ko/errors.md#the-server-returned-no-safety-verdict)를 참조하십시오.

371 371 

372그렇지 않으면 `Denied by auto mode classifier`로 읽히는 줄과 `[Production Deploy]` 또는 `Blocked by classifier`와 같은 이유는 분류기가 호출을 안전하지 않다고 판단했음을 의미하므로, 호출이 도달하거나 수행하려던 내용에서 수정 사항을 선택합니다.372그 외에 `[Production Deploy]` 또는 `Blocked by classifier`와 같은 사유와 함께 `Denied by auto mode classifier`라는 줄이 표시되면 분류기가 해당 호출을 안전하지 않다고 판단한 것이므로, 호출이 접근하거나 수행하려던 대상에 따라 해결 방법을 선택합니다.

373 373 

374* Claude가 작업 전체에서 필요로 하는 대상(예: 패키지 레지스트리, 내부 도메인 또는 저장소 호스트): `autoMode.environment`에 추가합니다.374* 패키지 레지스트리, 내부 도메인, 저장소 호스트처럼 Claude가 작업 내내 필요로 하는 대상: `autoMode.environment`에 추가합니다.

375* 앞으로 검토 없이 실행하려는 명령: `allow` 규칙을 추가합니다.375* 앞으로 검토 없이 실행하려는 명령: `allow` 규칙을 추가합니다.

376* 의도한 일회성 작업: 다음 메시지에서 해당 의도를 명시하고 Claude가 재시도하도록 합니다.376* 실제로 의도한 일회성 작업: 다음 메시지에서 그 의도를 밝히고 Claude가 재시도하도록 합니다.

377 377 

378`/permissions` 대화 상자의 [**자동 모드** 탭](#edit-rules-from-permissions)에서 환경 항목 또는 `allow` 규칙을 추가할 수 있습니다.378환경 항목이나 `allow` 규칙은 `/permissions` 대화 상자의 [**Auto mode** 탭](#edit-rules-from-permissions)에서 추가할 수 있습니다.

379 379 

380사각형 괄호 안의 텍스트(예: `[Data Exfiltration]`)는 분류기가 일치시킨 규칙의 이름입니다. 해당 규칙의 전체 내용을 읽으려면 [기본값 및 유효한 구성 검사](#inspect-the-defaults-and-your-effective-config)를 참조합니다.380`[Data Exfiltration]`처럼 대괄호 안의 텍스트는 분류기가 일치시킨 규칙의 이름입니다. 해당 규칙의 전체 문구를 확인하려면 [기본값과 유효 구성 확인하기](#inspect-the-defaults-and-your-effective-config)를 참조하십시오.

381 381 

382### 반복된 거부 해결382### 반복되는 거부 해결하기

383 383 

384동일한 대상에 대한 반복된 거부는 일반적으로 분류기가 컨텍스트를 누락했음을 의미합니다. 해당 대상을 `autoMode.environment`에 추가하거나 [`/auto-mode-setup` 실행](#generate-environment-entries)하여 Claude Code가 항목을 작성하도록 한 다음 `claude auto-mode config`를 실행하여 변경 사항이 적용되었는지 확인합니다.384같은 대상에 대해 거부가 반복된다면 대개 분류기에 컨텍스트가 부족하다는 뜻입니다. 해당 대상을 `autoMode.environment`에 추가하거나 [`/auto-mode-setup`을 실행](#generate-environment-entries)하여 Claude Code가 항목 초안을 작성하도록 한 다음, `claude auto-mode config`를 실행하여 변경 사항이 적용되었는지 확인합니다.

385 385 

386## 참고 항목386## 참고 항목

387 387 

Details

50 50 

51연구 미리보기 중에 사용자 정의 채널은 [승인된 허용 목록](https://code.claude.com/docs/ko/channels.md#supported-channels)에 없습니다. `--dangerously-load-development-channels`를 사용하여 로컬에서 테스트합니다. 자세한 내용은 [연구 미리보기 중 테스트](#test-during-the-research-preview)를 참조하세요.51연구 미리보기 중에 사용자 정의 채널은 [승인된 허용 목록](https://code.claude.com/docs/ko/channels.md#supported-channels)에 없습니다. `--dangerously-load-development-channels`를 사용하여 로컬에서 테스트합니다. 자세한 내용은 [연구 미리보기 중 테스트](#test-during-the-research-preview)를 참조하세요.

52 52 

53## 예: 웹훅 수신기 구축53## 예제: 웹훅 수신기 만들기

54 54 

55이 연습은 HTTP 요청을 수신하고 Claude Code 세션으로 전달하는 단일 파일 서버를 구축합니다. 마지막에는 CI 파이프라인, 모니터링 알림 또는 `curl` 명령과 같이 HTTP POST를 보낼 수 있는 모든 것이 Claude로 이벤트를 푸시할 수 있습니다.55이 안내에서는 HTTP 요청을 수신하고 이를 Claude Code 세션으로 전달하는 단일 파일 서버를 만듭니다. 완료하면 CI 파이프라인, 모니터링 알림, `curl` 명령 등 HTTP POST를 보낼 수 있는 모든 것이 Claude에 이벤트를 푸시할 수 있습니다.

56 56 

57이 예제는 기본 제공 HTTP 서버 및 TypeScript 지원을 위해 [Bun](https://bun.sh)을 런타임으로 사용합니다. 대신 [Node](https://nodejs.org) 또는 [Deno](https://deno.com)를 사용할 수 있습니다. 유일한 요구 사항은 [MCP SDK](https://www.npmjs.com/package/@modelcontextprotocol/sdk)입니다.57이 예제에서는 내장 HTTP 서버와 TypeScript 지원을 위해 [Bun](https://bun.sh)을 런타임으로 사용합니다. 대신 [Node](https://nodejs.org)나 [Deno](https://deno.com)를 사용할 수도 있으며, 유일한 요구 사항은 [MCP SDK](https://www.npmjs.com/package/@modelcontextprotocol/sdk)입니다.

58 58 

59**1. 프로젝트 생성**59**1. 프로젝트 생성**

60 60 

61[권한 릴레이](#relay-permission-prompts) 예제는 `zod`를 직접 가져오므로 MCP SDK와 함께 설치됩니다. 새 디렉토리를 생성하고 둘 다 설치합니다:61[권한 릴레이](#relay-permission-prompts) 예제는 `zod`를 직접 import하므로 MCP SDK와 함께 설치합니다. 새 디렉터리를 만들고 둘 다 설치합니다.

62 62 

63```bash theme={null}63```bash theme={null}

64mkdir webhook-channel && cd webhook-channel64mkdir webhook-channel && cd webhook-channel


67 67 

68**2. 채널 서버 작성**68**2. 채널 서버 작성**

69 69 

70`webhook.ts`라는 파일을 생성합니다. 이것이 전체 채널 서버입니다: stdio를 통해 Claude Code에 연결되고 포트 8788에서 HTTP POST를 수신합니다. 요청이 도착하면 본문을 채널 이벤트로 Claude로 푸시합니다.70`webhook.ts`라는 파일을 만듭니다. 이것이 채널 서버 전체입니다. stdio를 통해 Claude Code에 연결하고, 포트 8788에서 HTTP POST를 수신합니다. 요청이 도착하면 본문을 채널 이벤트로 Claude에 푸시합니다.

71 71 

72```ts title="webhook.ts" theme={null}72```ts title="webhook.ts" theme={null}

73#!/usr/bin/env bun73#!/usr/bin/env bun

74import { Server } from '@modelcontextprotocol/sdk/server/index.js'74import { Server } from '@modelcontextprotocol/sdk/server/index.js'

75import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'75import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

76 76 

77// MCP 서버를 생성하고 채널로 선언합니다77// Create the MCP server and declare it as a channel

78const mcp = new Server(78const mcp = new Server(

79 { name: 'webhook', version: '0.0.1' },79 { name: 'webhook', version: '0.0.1' },

80 {80 {

81 // 이 키가 채널을 만드는 것입니다 — Claude Code가 이에 대한 리스너를 등록합니다81 // this key is what makes it a channel — Claude Code registers a listener for it

82 capabilities: { experimental: { 'claude/channel': {} } },82 capabilities: { experimental: { 'claude/channel': {} } },

83 // Claude Code가 서버를 연결할 때 이를 Claude에 컨텍스트로 전달하므로 이러한 이벤트를 처리하는 방법을 알 수 있습니다83 // Claude Code delivers this to Claude as context when the server connects, so it knows how to handle these events

84 instructions: 'Events from the webhook channel arrive as <channel source="webhook" ...>. They are one-way: read them and act, no reply expected.',84 instructions: 'Events from the webhook channel arrive as <channel source="webhook" ...>. They are one-way: read them and act, no reply expected.',

85 },85 },

86)86)

87 87 

88// stdio를 통해 Claude Code에 연결합니다 (Claude Code가 이 프로세스를 생성합니다)88// Connect to Claude Code over stdio (Claude Code spawns this process)

89await mcp.connect(new StdioServerTransport())89await mcp.connect(new StdioServerTransport())

90 90 

91// 모든 POST를 Claude로 전달하는 HTTP 서버를 시작합니다91// Start an HTTP server that forwards every POST to Claude

92Bun.serve({92Bun.serve({

93 port: 8788, // 열려 있는 모든 포트가 작동합니다93 port: 8788, // any open port works

94 // localhost 전용: 이 머신 외부의 아무것도 POST할 수 없습니다94 // localhost-only: nothing outside this machine can POST

95 hostname: '127.0.0.1',95 hostname: '127.0.0.1',

96 async fetch(req) {96 async fetch(req) {

97 const body = await req.text()97 const body = await req.text()

98 await mcp.notification({98 await mcp.notification({

99 method: 'notifications/claude/channel',99 method: 'notifications/claude/channel',

100 params: {100 params: {

101 content: body, // <channel> 태그의 본문이 됩니다101 content: body, // becomes the body of the <channel> tag

102 // 각 키는 태그 속성이 됩니다. 예: <channel path="/" method="POST">102 // each key becomes a tag attribute, e.g. <channel path="/" method="POST">

103 meta: { path: new URL(req.url).pathname, method: req.method },103 meta: { path: new URL(req.url).pathname, method: req.method },

104 },104 },

105 })105 })


108})108})

109```109```

110 110 

111파일은 순서대로 서버를 구성하고, stdio를 통해 연결하고, HTTP 리스너를 시작합니다:111이 파일은 서버를 구성하고, stdio로 연결한 다음, HTTP 리스너를 시작하는 순서로 동작합니다.

112 112 

113* **서버 구성**: 기능에 `claude/channel`이 있는 MCP 서버를 생성합니다. 이것이 Claude Code에 이것이 채널임을 알려줍니다. Claude Code가 서버를 연결할 때 [`instructions`](#server-options) 문자열을 Claude에 컨텍스트로 전달합니다: Claude에 예상할 이벤트, 회신 여부, 회신해야 하는 경우 회신을 라우팅하는 방법을 알려줍니다.113* **서버 구성**: capabilities에 `claude/channel`이 포함된 MCP 서버를 생성하며, 이것이 Claude Code에 이 서버가 채널임을 알려줍니다. Claude Code는 서버가 연결될 때 [`instructions`](#server-options) 문자열을 컨텍스트로 Claude에 전달합니다. 어떤 이벤트가 올지, 답장해야 하는지, 답장해야 한다면 어떻게 라우팅할지를 Claude에 알려주십시오.

114* **Stdio 연결**: stdin/stdout을 통해 Claude Code에 연결합니다. 이는 모든 [MCP 서버](https://modelcontextprotocol.io/docs/concepts/transports#standard-io)에 표준입니다.114* **Stdio 연결**: stdin/stdout을 통해 Claude Code에 연결합니다. 이는 모든 [MCP 서버](https://modelcontextprotocol.io/docs/concepts/transports#standard-io)의 표준 방식입니다.

115* **HTTP 리스너**: 포트 8788에서 로컬 웹 서버를 시작합니다. 모든 POST 본문은 `mcp.notification()`을 통해 채널 이벤트로 Claude로 전달됩니다. `content`는 이벤트 본문이 되고 각 `meta` 항목은 `<channel>` 태그의 속성이 됩니다. 리스너는 `mcp` 인스턴스에 액세스해야 하므로 동일한 프로세스에서 실행됩니다. 더 큰 프로젝트의 경우 별도의 모듈로 분할할 수 있습니다.115* **HTTP 리스너**: 포트 8788에서 로컬 웹 서버를 시작합니다. 모든 POST 본문은 `mcp.notification()`을 통해 채널 이벤트로 Claude에 전달됩니다. `content`는 이벤트 본문이 되고, 각 `meta` 항목은 `<channel>` 태그의 속성이 됩니다. 리스너는 `mcp` 인스턴스에 접근해야 하므로 같은 프로세스에서 실행됩니다. 규모가 큰 프로젝트에서는 별도의 모듈로 분리할 수도 있습니다.

116 116 

117**3. Claude Code에 서버 등록**117**3. Claude Code에 서버 등록**

118 118 

119Claude Code가 시작하는 방법을 알 수 있도록 MCP 구성에 서버를 추가합니다. 동일한 디렉토리의 프로젝트 수준 `.mcp.json`의 경우 상대 경로를 사용합니다. `~/.claude.json`의 사용자 수준 구성의 경우 모든 프로젝트에서 서버를 찾을 수 있도록 전체 절대 경로를 사용합니다:119Claude Code가 서버를 시작하는 방법을 알 수 있도록 MCP 구성에 서버를 추가합니다. 같은 디렉터리의 프로젝트 수준 `.mcp.json`에서는 상대 경로를 사용합니다. `~/.claude.json`의 사용자 수준 구성에서는 어느 프로젝트에서든 서버를 찾을 수 있도록 전체 절대 경로를 사용합니다.

120 120 

121```json title=".mcp.json" theme={null}121```json title=".mcp.json" theme={null}

122{122{


126}126}

127```127```

128 128 

129Claude Code는 시작 시 MCP 구성을 읽고 각 서버를 서브프로세스로 생성합니다.129Claude Code는 시작할 때 MCP 구성을 읽고 각 서버를 하위 프로세스로 실행합니다.

130 130 

131**4. 테스트**131**4. 테스트**

132 132 

133연구 미리보기 중에 사용자 정의 채널은 허용 목록에 없으므로 개발 플래그로 Claude Code를 시작합니다:133리서치 프리뷰 기간 동안 사용자 지정 채널은 허용 목록에 없으므로 개발 플래그와 함께 Claude Code를 시작합니다.

134 134 

135```bash theme={null}135```bash theme={null}

136claude --dangerously-load-development-channels server:webhook136claude --dangerously-load-development-channels server:webhook

137```137```

138 138 

139Claude Code는 먼저 로드 중인 개발 채널을 나열하는 전체 화면 경고 대화 상자를 표시합니다. **로컬 개발에 사용 중입니다**를 선택하여 계속하거나 **종료**를 선택하여 종료합니다.139Claude Code는 먼저 로드 중인 개발 채널을 나열하는 전체 화면 경고 대화 상자를 표시합니다. 계속하려면 **I am using this for local development**를 선택하고, 종료하려면 **Exit**를 선택합니다.

140 140 

141이 프로젝트에서 처음으로 세션을 시작할 때 Claude Code는 `.mcp.json`의 새 서버를 사용하기 전에 동의를 요청합니다. 대화 상자는 "이 프로젝트에서 새 MCP 서버를 찾음: webhook"을 보고합니다. **이 MCP 서버 사용**을 선택하여 계속합니다.141이 프로젝트에서 처음 세션을 시작할 때 Claude Code는 `.mcp.json`의 새 서버를 사용하기 전에 동의도 요청합니다. 대화 상자에 "New MCP server found in this project: webhook"이 표시됩니다. 계속하려면 **Use this MCP server**를 선택합니다.

142 142 

143동의한 후 Claude Code는 `webhook.ts`를 서브프로세스로 생성하고 구성한 포트(이 예제에서는 8788)에서 HTTP 리스너가 자동으로 시작됩니다. 서버를 직접 실행할 필요가 없습니다.143수락하면 Claude Code가 `webhook.ts`를 하위 프로세스로 실행하고, HTTP 리스너가 구성한 포트(이 예제에서는 8788)에서 자동으로 시작됩니다. 서버를 직접 실행할 필요는 없습니다.

144 144 

145시작 배너 아래의 흐린 공지는 채널이 등록되었음을 확인합니다: `Channels (experimental) messages from server:webhook inject directly in this session · restart without --dangerously-load-development-channels to stop`.145시작 배너 아래의 흐린 알림을 통해 채널이 등록되었음을 확인할 수 있습니다: `Channels (experimental) messages from server:webhook inject directly in this session · restart without --dangerously-load-development-channels to stop`.

146 146 

147"조직 정책에 의해 차단됨"이 표시되면 조직 관리자가 먼저 [채널을 활성화](https://code.claude.com/docs/ko/channels.md#enterprise-controls)해야 합니다.147"blocked by org policy"가 표시되면 조직 관리자가 먼저 [채널을 활성화](https://code.claude.com/docs/ko/channels.md#enterprise-controls)해야 합니다.

148 148 

149별도의 터미널에서 HTTP POST를 메시지와 함께 서버로 보내 웹훅을 시뮬레이션합니다. 이 예제는 CI 실패 알림을 포트 8788로 보냅니다 (또는 구성한 포트):149별도의 터미널에서 메시지가 담긴 HTTP POST를 서버로 보내 웹훅을 시뮬레이션합니다. 이 예제는 포트 8788(또는 구성한 포트)로 CI 실패 알림을 보냅니다.

150 150 

151```bash theme={null}151```bash theme={null}

152curl -X POST localhost:8788 -d "build failed on main: https://ci.example.com/run/1234"152curl -X POST localhost:8788 -d "build failed on main: https://ci.example.com/run/1234"

153```153```

154 154 

155페이로드는 Claude의 컨텍스트에 `<channel>` 태그로 도착합니다:155페이로드는 `<channel>` 태그 형태로 Claude의 컨텍스트에 도착합니다.

156 156 

157```text theme={null}157```text theme={null}

158<channel source="webhook" path="/" method="POST">158<channel source="webhook" path="/" method="POST">


160</channel>160</channel>

161```161```

162 162 

163터미널은 이벤트를 한 줄 요약으로 렌더링합니다: `← webhook: build failed on main: https://ci.example.com/run/1234` (원본 태그가 아님). 그러면 Claude가 응답을 시작하는 것을 볼 수 있습니다: 파일 읽기, 명령 실행 또는 메시지가 요구하는 모든 작업. 이것은 단방향 채널이므로 Claude는 세션에서 작동하지만 웹훅을 통해 아무것도 다시 보내지 않습니다. 회신을 추가하려면 [회신 도구 노출](#expose-a-reply-tool)을 참조하세요.163터미널에는 원시 태그 대신 한 줄 요약인 `← webhook: build failed on main: https://ci.example.com/run/1234`으로 이벤트가 표시됩니다. 그런 다음 Claude가 파일을 읽거나, 명령을 실행하거나, 메시지가 요구하는 작업을 수행하며 응답하기 시작하는 것을 볼 수 있습니다. 이것은 단방향 채널이므로 Claude는 세션에서 작업을 수행하지만 웹훅을 통해 아무것도 돌려보내지 않습니다. 답장 기능을 추가하려면 [답장 도구 노출](#expose-a-reply-tool)을 참조하십시오.

164 164 

165이벤트가 도착하지 않으면 진단은 `curl`이 반환한 것에 따라 달라집니다:165이벤트가 도착하지 않으면 `curl`이 반환한 결과에 따라 진단 방법이 달라집니다.

166 166 

167* **`curl`은 성공하지만 Claude에 도달하지 않음**: 세션에서 `/mcp`를 실행하여 서버의 상태를 확인합니다. `failed` 상태는 일반적으로 서버 파일의 종속성 또는 가져오기 오류를 의미합니다. stderr 추적을 보려면 `claude --debug --dangerously-load-development-channels server:webhook`으로 다시 시작하고 `~/.claude/debug/<session-id>.txt`의 디버그 로그를 확인합니다.167* **`curl`은 성공했지만 Claude에 아무것도 도달하지 않는 경우**: 세션에서 `/mcp`를 실행하여 서버 상태를 확인합니다. `failed` 상태는 대개 서버 파일의 의존성 또는 import 오류를 의미합니다. stderr 트레이스를 보려면 `claude --debug --dangerously-load-development-channels server:webhook`으로 다시 시작하고 `~/.claude/debug/<session-id>.txt`의 디버그 로그를 확인합니다.

168* **`curl`이 "연결 거부"로 실패함**: 포트가 아직 바인딩되지 않았거나 이전 실행의 오래된 프로세스가 포트를 보유하고 있습니다. `lsof -i :<port>`는 수신 중인 것을 표시합니다. 세션을 다시 시작하기 전에 오래된 프로세스를 `kill`합니다.168* **`curl`이 "connection refused"로 실패하는 경우**: 포트가 아직 바인딩되지 않았거나 이전 실행의 오래된 프로세스가 포트를 점유하고 있는 것입니다. `lsof -i :<port>`로 수신 중인 프로세스를 확인할 수 있습니다. 세션을 다시 시작하기 전에 오래된 프로세스를 `kill`하십시오.

169 169 

170[fakechat 서버](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat)는 웹 UI, 파일 첨부 및 양방향 채팅을 위한 회신 도구로 이 패턴을 확장합니다.170[fakechat 서버](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat)는 웹 UI, 파일 첨부, 양방향 채팅을 위한 답장 도구로 이 패턴을 확장합니다.

171 171 

172## 연구 미리보기 중 테스트172## 연구 미리보기 중 테스트

173 173 

checkpointing.md +27 −27

Details

8 8 

9Claude Code는 작업하면서 Claude의 파일 편집을 자동으로 추적하므로 변경 사항을 빠르게 실행 취소하고 문제가 발생한 경우 이전 상태로 되돌릴 수 있습니다.9Claude Code는 작업하면서 Claude의 파일 편집을 자동으로 추적하므로 변경 사항을 빠르게 실행 취소하고 문제가 발생한 경우 이전 상태로 되돌릴 수 있습니다.

10 10 

11## Checkpoint의 작동 방식11## 체크포인트 작동 방식

12 12 

13Claude와 함께 작업할 때 checkpointing은 각 사용자 프롬프트가 시작하는 턴 전에 코드의 상태를 자동으로 캡처합니다.13Claude와 작업하는 동안 체크포인트는 턴을 시작하는 프롬프트를 보낼 때마다 그 직전의 코드 상태를 자동으로 캡처합니다.

14 14 

15### 자동 추적15### 자동 추적

16 16 

17Claude Code는 파일 편집 도구로 수행된 모든 변경 사항을 추적합니다:17Claude Code는 파일 편집 도구로 이루어진 모든 변경 사항을 추적합니다.

18 18 

19* 시작하는 턴마다 보내는 모든 프롬프트는 새로운 checkpoint를 생성합니다19* 턴을 시작하는 프롬프트를 보낼 때마다 새 체크포인트가 생성됩니다

20* Claude Code는 세션의 가장 최근 100개 checkpoint에 대한 파일 스냅샷을 유지합니다. 이전 checkpoint를 삭제하면 남은 checkpoint가 참조하지 않는 스냅샷 파일이 삭제되며, 각 파일의 첫 번째 스냅샷은 예외입니다. 이 스냅샷은 VS Code 확장이 세션 diff의 기준선으로 사용합니다.20* Claude Code는 세션에서 가장 최근 100개 체크포인트의 파일 스냅샷을 보관합니다. 오래된 체크포인트를 폐기하면 남아 있는 어떤 체크포인트도 참조하지 않는 스냅샷 파일이 삭제됩니다. 단, 각 파일의 첫 번째 스냅샷은 VS Code 확장 프로그램이 세션 diff의 기준으로 사용하므로 삭제되지 않습니다.

21* Checkpoint는 세션과 함께 저장되므로 재개된 세션에서도 `/rewind`를 사용할 수 있습니다21* Claude Code는 체크포인트를 대화와 함께 저장하므로 세션을 재개한 후에도 `/rewind`를 실행할 수 있습니다

22* Claude Code는 [retention sweep](https://code.claude.com/docs/ko/claude-directory.md#cleaned-up-automatically)에서 세션의 파일 스냅샷을 삭제합니다. 기본적으로 세션이 마지막으로 저장된 후 약 30일 후입니다. 스냅샷이 없는 checkpoint로 되돌리면 [`No files were restored`](https://code.claude.com/docs/ko/errors#no-files-were-restored) 오류가 발생할 수 있습니다. 스냅샷을 더 오래 유지하려면 [`cleanupPeriodDays`](https://code.claude.com/docs/ko/settings-reference#cleanupperioddays)를 설정하세요.22* Claude Code는 [보존 정리](https://code.claude.com/docs/ko/claude-directory.md#cleaned-up-automatically) 과정에서 세션의 파일 스냅샷을 삭제하며, 기본적으로 세션이 마지막으로 스냅샷을 저장한 후 약 30일이 지나면 삭제됩니다. 스냅샷이 사라진 체크포인트로 되감으면 [`No files were restored`](https://code.claude.com/docs/ko/errors#no-files-were-restored) 오류와 함께 실패할 수 있습니다. 스냅샷을 더 오래 보관하려면 [`cleanupPeriodDays`](https://code.claude.com/docs/ko/settings-reference#cleanupperioddays)를 설정합니다.

23 23 

24### 되돌리기 및 요약24### 되감기 및 요약

25 25 

26`/rewind`를 실행하거나 프롬프트 입력이 비어 있을 때 `Esc`를 두 번 눌러 rewind 메뉴를 엽니다.26`/rewind`를 실행하거나, 프롬프트 입력란이 비어 있을 때 `Esc`를 두 번 눌러 되감기 메뉴를 엽니다.

27 27 

28> [!NOTE]28> [!NOTE]

29>29>

30> 프롬프트 입력에 텍스트가 포함되어 있으면 `Esc`를 두 번 누르면 메뉴를 열지 않고 대신 텍스트를 지웁니다. 지워진 텍스트는 입력 기록에 저장되므로 rewind 메뉴에서 작업을 마친 후 `Up`을 눌러 복구할 수 있습니다.30> 프롬프트 입력란에 텍스트가 있으면 `Esc`를 두 번 눌렀을 때 메뉴가 열리는 대신 텍스트가 지워집니다. 지워진 텍스트는 입력 기록에 저장되므로, 되감기 메뉴에서 작업을 마친 후 `Up`을 눌러 다시 불러올 수 있습니다.

31 31 

32Rewind 메뉴는 세션 중에 보낸 프롬프트를 나열합니다. 작업할 지점을 선택한 다음 작업을 선택합니다:32되감기 메뉴에는 세션 중에 보낸 프롬프트가 나열됩니다. 작업할 지점을 선택한 다음 동작을 선택합니다.

33 33 

34* **코드 및 대화 복원**: 코드와 대화를 해당 지점으로 되돌립니다34* **Restore code and conversation**: 코드와 대화를 모두 해당 지점으로 되돌립니다

35* **대화 복원**: 현재 코드를 유지하면서 해당 메시지로 되돌립니다35* **Restore conversation**: 현재 코드는 유지하면서 해당 메시지로 되감습니다

36* **코드 복원**: 대화를 유지하면서 파일 변경 사항을 되돌립니다36* **Restore code**: 대화는 유지하면서 파일 변경 사항을 되돌립니다

37* **여기서부터 요약**: 이 지점부터 이후의 대화를 요약으로 압축하여 context window 공간을 확보합니다37* **Summarize from here**: 이 지점 이후의 대화를 요약으로 압축하여 컨텍스트 윈도우 공간을 확보합니다

38* **여기까지 요약**: 이 지점 이전의 대화를 요약으로 압축하여 이후 메시지를 그대로 유지합니다38* **Summarize up to here**: 이 지점 이전의 대화를 요약으로 압축하고, 이후 메시지는 그대로 유지합니다

39* **취소**: 변경 사항을 적용하지 않고 메시지 목록으로 돌아갑니다39* **Never mind**: 변경 없이 메시지 목록으로 돌아갑니다

40 40 

41두 코드 복원 옵션은 선택한 checkpoint에 되돌릴 추적된 파일 변경 사항이 있을 때만 나타납니다. 해당 지점 이후에 파일 편집이 캡처되지 않은 경우 메뉴는 **대화 복원**, 요약 옵션 및 **취소**만 제공합니다.41두 가지 코드 복원 옵션은 선택한 체크포인트에 되돌릴 추적된 파일 변경 사항이 있을 때만 표시됩니다. 해당 지점 이후 캡처된 파일 편집이 없으면 메뉴에는 **Restore conversation**, 요약 옵션, **Never mind**만 표시됩니다.

42 42 

43대화를 복원하거나 여기서부터 요약을 선택한 후 선택한 메시지의 원본 프롬프트가 입력 필드에 복원되므로 다시 보내거나 편집할 수 있습니다.43대화를 복원하거나 Summarize from here를 선택하면 선택한 메시지의 원래 프롬프트가 입력란에 복원되므로 다시 보내거나 편집할 수 있습니다.

44 44 

45여기까지 요약을 선택하면 대화의 끝에 남겨지며 입력 필드는 비어 있습니다. 두 요약 옵션 중 하나를 사용하면 압축된 메시지가 있던 대화에 **Summarized conversation** 마커가 나타납니다.45Summarize up to here를 선택하면 대화의 끝에서 빈 입력란 상태로 남게 됩니다. 두 요약 옵션 모두 압축된 메시지가 있던 위치에 **Summarized conversation** 표시가 나타납니다.

46 46 

47#### 다음 프롬프트 전에 종료하면 되돌린 메시지가 다시 나타날 수 있습니다47#### 다음 프롬프트 전에 종료하면 되감은 메시지가 다시 나타날 수 있음

48 48 

49다시 나타난 메시지를 다시 제거하려면 세션에서 `/rewind`를 실행하고 같은 프롬프트를 선택한 다음 **대화 복원**을 선택합니다. Claude Code는 되돌린 대화를 다음 프롬프트와 함께 저장하므로 종료하기 전에 Claude에게 프롬프트를 보내세요. 복원한 파일은 되돌리기로 적용된 상태 그대로 유지됩니다.49다시 나타난 메시지를 다시 제거하려면 세션에서 `/rewind`를 실행하고 같은 프롬프트를 선택한 다음 **Restore conversation**을 선택합니다. Claude Code는 되감은 대화를 다음 프롬프트와 함께 저장하므로, 종료하기 전에 Claude에게 프롬프트를 보내야 합니다. 복원한 파일은 되감기 후의 상태로 유지됩니다.

50 50 

51#### 이전 세션의 지워진 대화로 되돌리기51#### 지워진 대화 이전으로 되감기

52 52 

53동일한 Claude Code 프로세스에서 이전에 `/clear`를 실행한 경우 rewind 메뉴는 목록 맨 위에 `/resume <session-id> (previous session)`이라는 레이블이 지정된 추가 항목을 표시합니다. 이를 선택하여 `/clear`가 실행되기 전에 활성화되었던 대화를 재개합니다. 이 항목은 Claude Code를 종료하거나 다른 세션을 재개할 때까지 사용 가능합니다.53같은 Claude Code 프로세스에서 앞서 `/clear`를 실행했다면, 되감기 메뉴 목록 맨 위에 `/resume <session-id> (previous session)`라는 항목이 추가로 표시됩니다. 이 항목을 선택하면 `/clear` 실행 전에 활성 상태였던 대화를 재개합니다. 이 항목은 Claude Code를 종료하거나 다른 세션을 재개하기 전까지 사용할 수 있습니다.

54 54 

55#### 요약 안내55#### 요약 방향 지정

56 56 

57요약은 디스크의 파일을 변경하지 않으며 원본 메시지는 세션 기록에 남아 있으므로 Claude가 여전히 세부 정보를 참조할 수 있습니다. 요약이 초점을 맞출 내용을 안내하려면 화살표 키로 **Summarize** 옵션을 강조 표시하고 행에 \*\*add context (optional)\*\*이라고 표시된 위치에 지침을 입력한 다음 `Enter`를 누르세요. 숫자 키로 옵션을 선택하면 지침 없이 즉시 요약합니다.57요약은 디스크의 파일을 변경하지 않으며, 원래 메시지는 세션 트랜스크립트에 그대로 남아 있으므로 Claude는 여전히 세부 내용을 참조할 수 있습니다. 요약이 중점을 둘 내용을 지정하려면 화살표 키로 **Summarize** 옵션을 강조 표시하고 \*\*add context (optional)\*\*라고 표시된 행에 지침을 입력한 다음 `Enter`를 누릅니다. 숫자 키로 옵션을 선택하면 지침 없이 즉시 요약됩니다.

58 58 

59> [!NOTE]59> [!NOTE]

60>60>

61> Summarize는 동일한 세션에 유지되고 범위를 좁힌 `/compact`처럼 context를 압축합니다. 원본 세션을 그대로 유지하면서 갈라져 나와 다른 접근 방식을 시도하고 싶다면 대신 [`/branch`](https://code.claude.com/docs/ko/sessions#branch-a-session) 또는 `claude --continue --fork-session`을 사용하세요.61> 요약은 같은 세션을 유지하면서 컨텍스트를 압축하며, 대상을 지정한 `/compact`와 비슷합니다. 원래 세션을 그대로 보존하면서 분기하여 다른 접근 방식을 시도하려면 대신 [`/branch`](https://code.claude.com/docs/ko/sessions#branch-a-session) 또는 `claude --continue --fork-session`을 사용합니다.

62 62 

63## 일반적인 사용 사례63## 일반적인 사용 사례

64 64 

chrome.md +47 −47

Details

123 123 

124`tabs_context_mcp` 호출도 `createIfEmpty`를 설정하면 확인을 요청하며, 이러한 작업 중 하나라도 포함하는 `browser_batch` 호출도 마찬가지입니다.124`tabs_context_mcp` 호출도 `createIfEmpty`를 설정하면 확인을 요청하며, 이러한 작업 중 하나라도 포함하는 `browser_batch` 호출도 마찬가지입니다.

125 125 

126## 예제 워크플로126## 예시 워크플로

127 127 

128이 예제들은 브라우저 작업과 코딩 작업을 결합하는 일반적인 방법을 보여줍니다. `/mcp`를 실행하고 `claude-in-chrome`을 선택한 후 **도구 보기**를 선택하여 사용 가능한 브라우저 도구의 전체 목록을 확인합니다.128다음 예시는 브라우저 작업을 코딩 작업과 결합하는 일반적인 방법을 보여 줍니다. 사용 가능한 브라우저 도구의 전체 목록을 확인하려면 `/mcp`를 실행하고 `claude-in-chrome`을 선택한 다음 **View tools**를 선택합니다.

129 129 

130### 로컬 웹 애플리케이션 테스트130### 로컬 웹 애플리케이션 테스트

131 131 

132웹 앱을 개발할 때 Claude에게 변경 사항이 올바르게 작동하는지 확인하도록 요청합니다.132웹 앱을 개발할 때 변경 사항이 올바르게 작동하는지 확인하도록 Claude에게 요청합니다.

133 133 

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

135방금 로그인 양식 유효성 검사를 업데이트했습니다. localhost:3000을 열고,135I just updated the login form validation. Can you open localhost:3000,

136잘못된 데이터로 양식을 제출해 보고, 오류 메시지가 올바르게136try submitting the form with invalid data, and check if the error

137나타나는지 확인해 주시겠어요?137messages appear correctly?

138```138```

139 139 

140Claude는 로컬 서버로 이동하여 양식과 상호작용하고 관찰한 내용을 보고합니다.140Claude는 로컬 서버로 이동하여 폼과 상호 작용하고 관찰한 내용을 보고합니다.

141 141 

142### 콘솔 로그로 디버깅142### 콘솔 로그로 디버그

143 143 

144Claude는 콘솔 출력을 읽어 문제 진단을 도울 수 있습니다. 로그가 상세할 수 있으므로 모든 콘솔 출력을 요청하는 대신 Claude에게 찾을 패턴을 알려줍니다.144Claude는 콘솔 출력을 읽어 문제 진단을 도울 수 있습니다. 로그는 양이 많을 수 있으므로 전체 콘솔 출력을 요청하기보다는 어떤 패턴을 찾아야 하는지 Claude에게 알려 주는 것이 좋습니다.

145 145 

146```text wrap theme={null}146```text wrap theme={null}

147대시보드 페이지를 열고 페이지가 로드될 때 콘솔에서 오류를147Open the dashboard page and check the console for any errors when

148확인해 주세요.148the page loads.

149```149```

150 150 

151Claude는 콘솔 메시지를 읽고 특정 패턴이나 오류 유형을 필터링할 수 있습니다.151Claude는 콘솔 메시지를 읽고 특정 패턴이나 오류 유형으로 필터링할 수 있습니다.

152 152 

153### 양식 작성 자동화153### 폼 입력 자동화

154 154 

155반복적인 데이터 입력 작업을 가속화합니다.155반복적인 데이터 입력 작업의 속도를 높입니다.

156 156 

157```text wrap theme={null}157```text wrap theme={null}

158contacts.csv에 고객 연락처 스프레드시트가 있습니다. 각 행에 대해158I have a spreadsheet of customer contacts in contacts.csv. For each row,

159crm.example.com의 CRM으로 이동하여 "연락처 추가"를 클릭하고159go to the CRM at crm.example.com, click "Add Contact", and fill in the

160이름, 이메일 및 전화 필드를 작성해 주세요.160name, email, and phone fields.

161```161```

162 162 

163Claude는 로컬 파일을 읽고, 웹 인터페이스를 탐색하며, 각 레코드에 대한 데이터를 입력합니다.163Claude는 로컬 파일을 읽고 웹 인터페이스를 탐색하며 각 레코드의 데이터를 입력합니다.

164 164 

165### 웹 페이지에 파일 업로드165### 웹 페이지에 파일 업로드

166 166 

167Claude는 사용자 컴퓨터의 파일을 페이지의 업로드 필드에 첨부할 수 있습니다. Claude Code가 파일을 읽어 그 내용을 브라우저로 전송하므로, 업로드는 로컬 세션과 원격 세션 모두에서 작동합니다.167Claude는 사용자 컴퓨터의 파일을 페이지의 업로드 필드에 첨부할 수 있습니다. Claude Code가 파일을 읽고 그 내용을 브라우저로 전송하므로 업로드는 로컬 세션과 원격 세션 모두에서 작동합니다.

168 168 

169다음 예제는 로그 파일을 양식에 첨부합니다.169다음 예시는 로그 파일을 폼에 첨부합니다.

170 170 

171```text wrap theme={null}171```text wrap theme={null}

172bugs.example.com의 버그 트래커를 열고, 새 이슈를 만든 다음,172Open the bug tracker at bugs.example.com, create a new issue,

173logs/session.log를 첨부해 주세요173and attach logs/session.log to it

174```174```

175 175 

176Claude가 파일 첨부를 거부하거나 업로드가 실패하면 다음 원인을 확인합니다.176Claude가 파일 첨부를 거부하거나 업로드가 실패하면 다음 원인을 확인합니다.

177 177 

178* **권한**: Claude는 세션에서 읽기가 허용된 파일만 업로드할 수 있으므로, 파일에 대한 `Read` 액세스를 거부하는 [권한 규칙](https://code.claude.com/docs/ko/settings-reference.md#permission-settings)은 해당 파일의 업로드도 차단합니다.178* **권한**: Claude는 세션이 파일을 읽도록 허용된 경우에만 해당 파일을 업로드할 수 있으므로, 파일에 대한 `Read` 접근을 거부하는 [권한 규칙](https://code.claude.com/docs/ko/settings-reference.md#permission-settings)은 해당 파일의 업로드도 차단합니다.

179* **크기**: 한 번의 업로드에 포함할 수 있는 파일은 총 10MB까지입니다.179* **크기**: 한 번의 업로드에 포함할 수 있는 파일은 총 10 MB까지입니다.

180* **하드 링크**: Claude는 하드 링크가 여러 개인 파일을 거부합니다. 이는 `node_modules`와 같은 패키지 관리자 저장소 내부에서 흔히 발생합니다. 파일을 복사한 후 복사본을 업로드합니다.180* **하드 링크**: Claude는 하드 링크가 여러 개인 파일을 거부하며, 이는 `node_modules`와 같은 패키지 매니저 저장소 내부에서 흔히 발생합니다. 파일을 복사한 다음 복사본을 업로드합니다.

181* **자격 증명 이름**: Claude는 `.env`, `.pem` 또는 `.key` 파일, `.ssh` 아래의 모든 항목처럼 자격 증명을 보관하는 데 쓰이는 이름이나 폴더를 가진 파일을 거부합니다. Claude Code v2.1.293 이상이 필요합니다.181* **자격 증명 이름**: Claude는 `.env`, `.pem` 또는 `.key` 파일, `.ssh` 아래의 모든 항목처럼 자격 증명이 보관되는 이름이나 폴더에 해당하는 파일을 거부합니다. Claude Code v2.1.293 이상이 필요합니다.

182 182 

183### Google Docs에서 콘텐츠 작성183### Google Docs에서 콘텐츠 초안 작성

184 184 

185API 설정 없이 Claude를 사용하여 문서에 직접 작성합니다.185API 설정 없이 Claude를 사용하여 문서에 직접 작성합니다.

186 186 

187```text wrap theme={null}187```text wrap theme={null}

188최근 커밋을 기반으로 프로젝트 업데이트를 작성하고188Draft a project update based on the recent commits and add it to my

189docs.google.com/document/d/abc123의 Google Doc에 추가해 주세요.189Google Doc at docs.google.com/document/d/abc123

190```190```

191 191 

192Claude는 문서를 열고, 편집기를 클릭한 후 콘텐츠를 입력합니다. 이는 로그인한 모든 웹 앱에서 작동합니다. Gmail, Notion, Sheets 등입니다.192Claude는 문서를 열고 편집기를 클릭한 다음 콘텐츠를 입력합니다. 이 기능은 Gmail, Notion, Sheets 등 사용자가 로그인한 모든 웹 앱에서 작동합니다.

193 193 

194### 웹 페이지에서 데이터 추출194### 웹 페이지에서 데이터 추출

195 195 

196웹사이트에서 구조화된 정보를 가져옵니다.196웹사이트에서 구조화된 정보를 가져옵니다.

197 197 

198```text wrap theme={null}198```text wrap theme={null}

199제품 목록 페이지로 이동하여 각 항목의 이름, 가격 및 가용성을199Go to the product listings page and extract the name, price, and

200추출합니다. 결과를 CSV 파일로 저장해 주세요.200availability for each item. Save the results as a CSV file.

201```201```

202 202 

203Claude는 페이지로 이동하여 콘텐츠를 읽고 데이터를 구조화된 형식으로 컴파일합니다.203Claude는 페이지로 이동하여 콘텐츠를 읽고 데이터를 구조화된 형식으로 정리합니다.

204 204 

205### 다중 사이트 워크플로 실행205### 여러 사이트에 걸친 워크플로 실행

206 206 

207여러 웹사이트에서 작업을 조정합니다.207여러 웹사이트에 걸쳐 작업을 조율합니다.

208 208 

209```text wrap theme={null}209```text wrap theme={null}

210내 캘린더에서 내일의 회의를 확인한 후, 외부 참석자가 있는 각210Check my calendar for meetings tomorrow, then for each meeting with

211회의에 대해 해당 회사 웹사이트를 찾아보고 그들이 하는 일에 대한211an external attendee, look up their company website and add a note

212메모를 추가해 주세요.212about what they do.

213```213```

214 214 

215Claude는 탭 전체에서 작업하여 정보를 수집하고 워크플로를 완료합니다.215Claude는 여러 탭을 오가며 정보를 수집하고 워크플로를 완료합니다.

216 216 

217### 데모 GIF 기록217### 데모 GIF 녹화

218 218 

219브라우저 상호작용의 공유 가능한 기록을 만듭니다.219브라우저 상호 작용을 공유 가능한 녹화본으로 만듭니다.

220 220 

221```text wrap theme={null}221```text wrap theme={null}

222장바구니에 항목을 추가하는 것부터 확인 페이지까지 체크아웃222Record a GIF showing how to complete the checkout flow, from adding

223흐름을 완료하는 방법을 보여주는 GIF를 기록해 주세요.223an item to the cart through to the confirmation page.

224```224```

225 225 

226Claude는 상호작용 시퀀스를 기록하고 GIF 파일로 저장합니다. 기록에는 로그인된 페이지의 계정 세부 정보를 포함하여 브라우저에 표시되는 모든 내용이 담기므로, 팀 외부에 공유하기 전에 검토합니다.226Claude는 상호 작용 과정을 녹화하여 GIF 파일로 저장합니다. 녹화본에는 로그인된 페이지의 계정 정보를 포함하여 브라우저에 보이는 모든 내용이 담기므로, 팀 외부에 공유하기 전에 검토해야 합니다.

227 227 

228### 스크린샷을 디스크에 저장228### 스크린샷을 디스크에 저장

229 229 

230Claude에게 스크린샷을 파일로 보관하도록 요청합니다.230스크린샷을 파일로 보관하도록 Claude에게 요청합니다.

231 231 

232```text wrap theme={null}232```text wrap theme={null}

233체크아웃 페이지의 스크린샷을 찍어 디스크에 저장해 주세요233Take a screenshot of the checkout page and save it to disk

234```234```

235 235 

236Claude는 이미지를 디스크에 저장하고 파일 경로를 알려줍니다.236Claude는 이미지를 디스크에 저장하고 파일 경로를 알려 줍니다.

237 237 

238## 문제 해결238## 문제 해결

239 239 

Details

446 446 

447다음 부모 제공 설정은 다섯 개의 잠금을 모두 설정해도 필터를 통과합니다.447다음 부모 제공 설정은 다섯 개의 잠금을 모두 설정해도 필터를 통과합니다.

448 448 

449* **`forceLoginOrgUUID`**: 가장 높은 우선순위의 관리자 소스가 조직 UUID를 설정하지 않으면 Claude Code는 부모가 제공한 값을 따릅니다. 게이트웨이 로그인은 이 키를 확인하지 않습니다. 가장 높은 우선순위의 관리자 소스에 있는 조직 UUID는 부모의 값을 차단하며, Claude Code가 적용하는 값이 됩니다.449* **`forceLoginOrgUUID`**: Claude Code가 적용하는 관리형 설정이 조직 UUID를 설정하지 않으면 Claude Code는 부모가 제공한 값을 따릅니다. 게이트웨이 로그인은 이 키를 확인하지 않습니다. Claude Code가 적용하는 관리형 설정에 있는 조직 UUID는 부모의 값을 차단하며, Claude Code가 적용하는 조직 UUID가 됩니다. 플릿에서 Anthropic 조직을 고정한다면 `forceLoginOrgUUID`를 설정할 위치는 [로그인 키를 제공하는 관리형 소스](https://code.claude.com/docs/ko/managed-settings.md#which-managed-source-supplies-login-keys)를 참조하세요.

450* **`allowedMcpServers`**: 유효한 관리자 목록이 없으면 Claude Code는 부모가 제공한 허용 목록을 따릅니다. `allowManagedMcpServersOnly`는 이를 차단하지 않습니다. 이 잠금은 우선하는 목록을 관리형 값으로 적용하며, 관리자 소스가 목록을 제공하지 않으면 부모가 제공한 목록도 여기에 포함되기 때문입니다. 가장 높은 우선순위의 관리자 소스에 있는 목록은 부모의 목록을 차단하며 Claude Code가 적용하는 목록이 되므로, 해당 소스에 잠금과 함께 `allowedMcpServers`를 설정하세요. v2.1.223 이전에는 어느 관리자 소스에든 두 키 중 하나의 값이 있으면 부모의 값이 차단되었습니다.450* **`allowedMcpServers`**: 유효한 관리자 목록이 없으면 Claude Code는 부모가 제공한 허용 목록을 따릅니다. `allowManagedMcpServersOnly`는 이를 차단하지 않습니다. 이 잠금은 우선하는 목록을 관리형 값으로 적용하며, 관리자 소스가 목록을 제공하지 않으면 부모가 제공한 목록도 여기에 포함되기 때문입니다. 가장 높은 우선순위의 관리자 소스에 있는 목록은 부모의 목록을 차단하며 Claude Code가 적용하는 목록이 되므로, 해당 소스에 잠금과 함께 `allowedMcpServers`를 설정하세요. v2.1.223 이전에는 어느 관리자 소스에든 두 키 중 하나의 값이 있으면 부모의 값이 차단되었습니다.

451* **`availableModels`**: 우선하는 관리형 소스가 모델 목록을 설정하지 않으면 Claude Code는 부모가 제공한 모델 목록을 따릅니다. 플릿에서 모델을 제한한다면 우선 소스에 `availableModels`를 설정하세요.451* **`availableModels`**: 우선하는 관리형 소스가 모델 목록을 설정하지 않으면 Claude Code는 부모가 제공한 모델 목록을 따릅니다. 플릿에서 모델을 제한한다면 우선 소스에 `availableModels`를 설정하세요.

452* **`allowedProviders`**: 우선하는 관리형 소스가 API 제공자 허용 목록을 설정하지 않으면 Claude Code는 부모가 제공한 API 제공자 허용 목록을 따릅니다. 플릿에서 개발자가 사용할 수 있는 API 제공자를 제한한다면 우선 소스에 `allowedProviders`를 설정하세요. Claude Code v2.1.285 이상이 필요합니다.452* **`allowedProviders`**: 우선하는 관리형 소스가 API 제공자 허용 목록을 설정하지 않으면 Claude Code는 부모가 제공한 API 제공자 허용 목록을 따릅니다. 플릿에서 개발자가 사용할 수 있는 API 제공자를 제한한다면 우선 소스에 `allowedProviders`를 설정하세요. Claude Code v2.1.285 이상이 필요합니다.


454* **`blockedMarketplaces`**: 부모가 제공한 마켓플레이스 차단 목록은 필터를 통과하며, 관리형 소스가 설정한 차단 목록에 추가됩니다. 차단 목록은 제한을 더할 수만 있기 때문입니다. Claude Code v2.1.282 이상이 필요합니다.454* **`blockedMarketplaces`**: 부모가 제공한 마켓플레이스 차단 목록은 필터를 통과하며, 관리형 소스가 설정한 차단 목록에 추가됩니다. 차단 목록은 제한을 더할 수만 있기 때문입니다. Claude Code v2.1.282 이상이 필요합니다.

455* **`strictPluginOnlyCustomization`**: 이 키는 어떤 잠금과도 관계없이 필터를 통과하며, Claude Code가 보호용 훅을 포함한 개발자 자신의 사용자 정의를 무시하게 합니다. 이를 차단하는 잠금은 없습니다.455* **`strictPluginOnlyCustomization`**: 이 키는 어떤 잠금과도 관계없이 필터를 통과하며, Claude Code가 보호용 훅을 포함한 개발자 자신의 사용자 정의를 무시하게 합니다. 이를 차단하는 잠금은 없습니다.

456 456 

457기본 first-wins 설정에서는 관리자 값이 가장 높은 우선순위의 관리자 소스에 있을 때만 부모의 값을 차단합니다. 단, [MCP 서버 잠금](#lock-behavior-across-sources)이 켜져 있는 동안의 `allowedMcpServers`는 예외입니다. `managedSourcesBehavior` 병합 옵트인에서는 [Claude Code가 관리형 소스를 결합하는 방법](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)에 따라 어느 소스의 값이 적용되는지가 결정됩니다.457`managedSourcesBehavior`를 `"merge"`로 설정한 경우 [각 키 종류에 어떤 소스의 값이 적용되는지](https://code.claude.com/docs/ko/managed-settings.md#compose-every-managed-source) 확인하세요.

458 458 

459#### 부모 설정의 훅 및 스킬 키가 적용되는 방식459#### 부모 설정의 훅 및 스킬 키가 적용되는 방식

460 460 

Details

421 421 

422```yaml theme={null}422```yaml theme={null}

423models:423models:

424 - id: claude-opus-restricted # a custom id, not a built-in model name424 - id: restricted-claude-opus-4-8 # a custom id, not a built-in model name

425 upstream_model:425 upstream_model:

426 bedrock-isolated: us.anthropic.claude-opus-4-8 # the only upstream that serves it426 bedrock-isolated: us.anthropic.claude-opus-4-8 # the only upstream that serves it

427```427```


631 631 

632게이트웨이는 실패한 업스트림을 기록하지 않으므로, 업스트림이 다운된 동안 그 업스트림에 도달하는 모든 요청은 여전히 해당 업스트림을 시도하고 실패할 때까지 기다린 후 다음으로 넘어갑니다.632게이트웨이는 실패한 업스트림을 기록하지 않으므로, 업스트림이 다운된 동안 그 업스트림에 도달하는 모든 요청은 여전히 해당 업스트림을 시도하고 실패할 때까지 기다린 후 다음으로 넘어갑니다.

633 633 

634Anthropic API 업스트림의 경우 [`timeouts.upstream_ttfb_ms`](#http-tuning)가 다운된 업스트림에 대한 대기 시간을 제한합니다. 이 설정은 다른 공급자에는 적용되지 않으며, 그 경우 게이트웨이는 업스트림이 응답을 시작할 때까지 최대 1시간을 기다립니다.634게이트웨이는 응답이 시작될 때까지 다음 시간 동안 기다립니다.

635 

636* **`provider: anthropic` 업스트림**: [`timeouts.upstream_ttfb_ms`](#http-tuning), 기본값 120초

637* **기타 공급자**: 최대 1시간. 스트리밍 요청의 대기 시간을 줄이려면 게이트웨이 v2.1.295 이상에서 `timeouts.upstream_ttfb_ms`를 설정하십시오. 비스트리밍 모델 요청은 어느 경우든 최대 1시간을 기다립니다

635 638 

636`404`는 업스트림별 모델 가용성이므로, 모델을 활성화하지 않은 업스트림이 그 모델을 제공하는 뒤쪽 업스트림을 막지 않습니다. 요청된 모델을 확인할 수 없는 업스트림은 네트워크 왕복 없이 건너뜁니다.639`404`는 업스트림별 모델 가용성이므로, 모델을 활성화하지 않은 업스트림이 그 모델을 제공하는 뒤쪽 업스트림을 막지 않습니다. 요청된 모델을 확인할 수 없는 업스트림은 네트워크 왕복 없이 건너뜁니다.

637 640 


689 692 

690### `admin`693### `admin`

691 694 

692선택 사항입니다. Anthropic의 공개 Admin API를 그대로 반영하는 `/v1/organizations/spend_limits`와 `/v1/messages`에 대한 개발자별 지출 적용을 활성화합니다. 한도를 설정하고 적용하는 방법은 [지출 한도](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md)를 참조하십시오. 이 섹션에서는 이 기능을 켜고 조정하는 `gateway.yaml` 키를 다룹니다.695선택 사항입니다. Anthropic의 공개 Admin API를 그대로 따르는 `/v1/organizations/spend_limits`와 `/v1/messages`에서의 개발자별 지출 한도 적용을 활성화합니다. 한도를 설정하고 적용하는 방법은 [지출 한도](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md)를 참조하십시오. 이 섹션에서는 이 기능을 켜고 조정하는 `gateway.yaml` 키를 다룹니다.

693 696 

694```yaml theme={null}697```yaml theme={null}

695admin:698admin:


707 blocked_message: request an increase at https://go.example.com/claude-limits710 blocked_message: request an increase at https://go.example.com/claude-limits

708```711```

709 712 

710| 필드 | 필수 | 설명 |713| 필드 | 필수 여부 | 설명 |

711| - | - | - |714| - | - | - |

712| `write_keys` | 아니요 | `{id, key}`의 배열입니다. 이 중 하나와 일치하는 `x-api-key`는 지출 한도를 나열, 설정, 삭제할 수 있습니다. 키 값은 최소 32자여야 하며, `id`는 `read_keys`와 `write_keys` 전체에서 고유해야 합니다. |715| `write_keys` | 아니요 | `{id, key}`의 배열입니다. 이 중 하나와 일치하는 `x-api-key`는 지출 한도를 조회, 설정, 삭제할 수 있습니다. 키 값은 32자 이상이어야 하며, `id`는 `read_keys`와 `write_keys` 전체에서 고유해야 합니다. |

713| `read_keys` | 아니요 | `{id, key}`의 배열입니다. 읽기 전용으로, 한도 나열, ID로 한도 하나 가져오기, [`/effective`](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits#%2Feffective) 및 [`/audit`](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits#%2Faudit) 읽기를 포함한 모든 `GET` 엔드포인트에 접근할 수 있습니다. |716| `read_keys` | 아니요 | `{id, key}`의 배열입니다. 읽기 전용이며, 한도 목록 조회, ID로 단일 한도 가져오기, [`/effective`](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits#%2Feffective) 및 [`/audit`](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits#%2Faudit) 읽기를 포함한 모든 `GET` 엔드포인트에 접근할 수 있습니다. |

714| `admin_groups` | 아니요 | IdP 그룹 이름입니다. `groups` 클레임에 이 중 하나가 포함된 게이트웨이 JWT는 읽기와 쓰기를 포함한 전체 관리자 접근 권한을 가지며, `oidc:<sub>`로 감사 기록됩니다. 사람 관리자에게는 이 방식을, 머신에는 API 키를 사용하십시오. 이 목록에 빈 항목이 있으면 게이트웨이가 부팅 시 중지됩니다. [부팅 시 게이트웨이를 중지시키는 matcher 값](#matcher-values-that-stop-the-gateway-at-boot)을 참조하십시오. |717| `admin_groups` | 아니요 | IdP 그룹 이름입니다. `groups` 클레임에 이 중 하나가 포함된 게이트웨이 JWT는 읽기와 쓰기를 포함한 전체 관리자 액세스 권한을 가지며, 감사 로그에 `oidc:<sub>`로 기록됩니다. 사람 관리자에게는 이 방식을, 머신에는 API 키를 사용하십시오. 이 목록에 빈 항목이 있으면 게이트웨이가 부팅 시 중지됩니다. [부팅 시 게이트웨이를 중지시키는 matcher 값](#matcher-values-that-stop-the-gateway-at-boot)을 참조하십시오. |

715| `blocked_message` | 아니요 | 차단된 개발자가 보는 `429 billing_error`에 그대로 덧붙여집니다. URL이나 Slack 채널 등 전체 안내 문구를 작성하십시오. 설정하지 않으면 게이트웨이는 기본 메시지만 보냅니다. [적용 방식](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md#how-enforcement-works)을 참조하십시오. |718| `blocked_message` | 아니요 | 차단된 개발자가 보는 `429 billing_error`에 그대로 덧붙여집니다. URL이나 Slack 채널 등 전체 안내 문구를 작성하십시오. 설정하지 않으면 게이트웨이는 기본 메시지만 보냅니다. [적용 방식](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md#how-enforcement-works)을 참조하십시오. |

716| `audit_retention_days` | 아니요 | 기본값은 `365`입니다. 이보다 오래된 `admin_audit` 행은 정리됩니다. |719| `audit_retention_days` | 아니요 | 기본값은 `365`입니다. 이보다 오래된 `admin_audit` 행은 정리됩니다. |

717| `spend_retention_months` | 아니요 | 기본값은 `13`입니다. 이보다 오래된 `spend` 카운터 행은 정리됩니다. 기본값은 전년 대비 보고를 위해 1년 전체와 진행 중인 현재 월을 보관합니다. |720| `spend_retention_months` | 아니요 | 기본값은 `13`입니다. 이보다 오래된 `spend` 카운터 행은 정리됩니다. 기본값은 전년 대비 보고를 위해 1년 전체와 진행 중인 현재 월을 보관합니다. |

718| `identity_retention_days` | 아니요 | 기본값은 `90`입니다. 각 개발자의 이메일, 표시 이름, 그룹(PII)을 담는 `principal_emails` 행의 마지막 확인 시점 기준 TTL입니다. 프로비저닝이 해제된 ID는 만료되고 익명 지출 카운터는 남도록 의도적으로 지출 보존 기간보다 짧게 설정되어 있습니다. |721| `identity_retention_days` | 아니요 | 기본값은 `90`입니다. 각 개발자의 이메일, 표시 이름, 그룹(PII)을 보관하는 `principal_emails` 행의 마지막 확인 기준 TTL입니다. 프로비저닝 해제된 ID는 만료되고 익명 지출 카운터는 남도록 지출 보관 기간보다 의도적으로 짧게 설정되어 있습니다. |

719| `group_limit_mode` | 아니요 | `min`(기본값) 또는 `max`입니다. 개발자가 한도가 설정된 여러 그룹에 속한 경우 `min`은 가장 제한적인 한도를, `max`는 가장 덜 제한적인 한도를 적용합니다. 적용과 `/effective` 모두에서 사용됩니다. |722| `group_limit_mode` | 아니요 | `min`(기본값) 또는 `max`입니다. 개발자가 한도가 설정된 여러 그룹에 속할 때 `min`은 가장 제한적인 한도를, `max`는 가장 느슨한 한도를 적용합니다. 적용 로직과 `/effective` 모두에서 사용됩니다. |

720 723 

721### `enforcement`724### `enforcement`

722 725 

723`enforcement` 블록은 저장소를 사용할 수 없을 때 지출 한도 검사가 어떻게 동작할지 제어합니다.726`enforcement` 블록은 저장소를 사용할 수 없을 때 지출 한도 검사가 어떻게 동작하는지 제어합니다.

724 727 

725| 필드 | 필수 | 설명 |728| 필드 | 필수 여부 | 설명 |

726| - | - | - |729| - | - | - |

727| `fail_closed_on_error` | 아니요 | 기본값은 `false`입니다. Postgres 장애 시 지출 적용은 fail-open으로 동작하므로 추론은 계속 가능합니다. fail-closed로 동작하게 하려면 `true`로 설정하십시오. 이 경우 한도를 초과한 개발자가 차단되지만, 저장소에 연결할 수 없으면 다른 모든 사용자도 차단됩니다. [`admin:`](#admin) 블록이 필요합니다. 지출 적용은 `admin`이 구성된 경우에만 실행되며, `admin` 블록 없이 이 값을 `true`로 설정하면 게이트웨이가 시작을 거부합니다. |730| `fail_closed_on_error` | 아니요 | 기본값은 `false`입니다. Postgres 장애 시 지출 한도 적용은 fail-open으로 동작하므로 추론이 계속 가능합니다. fail-closed로 동작하게 하려면 `true`로 설정하십시오. 이 경우 한도를 초과한 개발자가 차단되지만, 저장소에 연결할 수 없으면 다른 모든 사용자도 차단됩니다. [`admin:`](#admin) 블록이 필요합니다. 지출 한도 적용은 `admin`이 구성된 경우에만 실행되며, `admin` 블록 없이 이 값을 `true`로 설정하면 게이트웨이가 시작되지 않습니다. |

728 731 

729### `pricing`732### `pricing`

730 733 

731`pricing` 블록은 지출 미터가 USD 정가 대신 어떤 요금을 부과할지 지정하므로, 한도와 [`/effective`](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits#%2Feffective)가 계약 요금을 반영합니다. 금액은 USD로 유지되며 청구서가 아닌 추정치입니다. 사전 요구 사항은 두 가지입니다.734`pricing` 블록은 지출 미터가 USD 정가 대신 어떤 요금을 적용할지 지정하므로, 한도와 [`/effective`](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits#%2Feffective)에 계약 요금이 반영됩니다. 금액은 USD로 유지되며 청구서가 아닌 추정치입니다. 사전 요구 사항은 두 가지입니다.

732 735 

733* 게이트웨이 서버에 Claude Code v2.1.227 이상이 필요합니다. 이전 버전은 부팅 시 알 수 없는 키를 거부합니다.736* 게이트웨이 서버에 Claude Code v2.1.227 이상이 필요합니다. 이전 버전은 부팅 시 알 수 없는 키를 거부합니다.

734* [`admin:`](#admin) 블록 또는 v2.1.268 이상에서는 하나 이상의 정책이 있는 [`managed:`](#managed) 블록이 필요합니다. `pricing`이 설정되어 있는데 두 블록이 모두 없으면, 이를 읽을 대상이 없으므로 게이트웨이가 시작을 거부합니다.737* [`admin:`](#admin) 블록, 또는 v2.1.268 이상에서는 정책이 하나 이상 있는 [`managed:`](#managed) 블록이 필요합니다. `pricing`이 설정되어 있는데 두 블록이 모두 없으면 이를 읽는 곳이 없으므로 게이트웨이가 시작되지 않습니다.

735 738 

736```yaml theme={null}739```yaml theme={null}

737pricing:740pricing:


745 cache_write: 4.125748 cache_write: 4.125

746```749```

747 750 

748| 필드 | 필수 | 설명 |751| 필드 | 필수 여부 | 설명 |

749| - | - | - |752| - | - | - |

750| `multiplier` | 아니요 | 기본값은 `1`입니다. 미터는 정가든 재정의된 요금이든 측정된 모든 금액에 이 값을 곱하므로, `0.85`는 가격의 85%를 청구합니다. 0보다 크고 10 이하여야 하며, 1보다 큰 값은 [마크업](#mark-prices-up)입니다. |753| `multiplier` | 아니요 | 기본값은 `1`입니다. 미터는 정가 기반이든 재정의된 요금이든 모든 측정 금액에 이 값을 곱하므로, `0.85`는 가격의 85%를 청구합니다. 0보다 크고 10 이하여야 하며, 1보다 큰 값은 [할증](#mark-prices-up)입니다. |

751| `overrides` | 아니요 | 백만 토큰당 USD 단위의 `{upstream, model, input, output, cache_read, cache_write}` 행입니다. 네 가지 요금이 모두 필요합니다. 각 요금은 0보다 크고 10000 이하여야 합니다. |754| `overrides` | 아니요 | 백만 토큰당 USD 단위의 `{upstream, model, input, output, cache_read, cache_write}` 행입니다. 네 가지 요금이 모두 필요하며, 각 값은 0보다 크고 10000 이하여야 합니다. |

752 755 

753미터가 재정의 행을 매칭하는 방식:756미터가 재정의 행을 매칭하는 방식은 다음과 같습니다.

754 757 

755* 하나의 행은 [`upstreams[].name`](#upstreams)인 `upstream`이 `model`에 대해 처리하는 요청의 정가를 대체합니다. 여기에는 더 높은 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md#understand-the-cost-tradeoff) 요금도 포함되므로, 빠른 요청과 표준 요청은 동일한 네 가지 요금으로 측정됩니다.758* 행은 [`upstreams[].name`](#upstreams)인 `upstream`이 `model`에 대해 처리하는 요청의 정가를 대체합니다. 여기에는 더 높은 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md#understand-the-cost-tradeoff) 요금도 포함되므로, 빠른 요청과 일반 요청이 동일한 네 가지 요금으로 측정됩니다.

756* `claude-sonnet-4-6` 같은 기본 제공 ID는 [`models[].id`](#models)와 같은 방식으로 매칭되며, 미터가 해당 모델로 가격을 매기는 모든 날짜 포함 형식, 리전별 Amazon Bedrock 형식, Google Cloud의 Agent Platform 형식을 포괄합니다. 별칭이나 추론 프로필 ARN 같은 그 밖의 문자열은 클라이언트가 보낸 ID 또는 업스트림으로 보낸 문자열과 대소문자를 구분하지 않고 매칭됩니다.759* `claude-sonnet-4-6` 같은 기본 제공 ID는 [`models[].id`](#models)와 같은 방식으로 매칭되며, 미터가 해당 모델로 가격을 책정하는 모든 날짜 표기 형식, 리전별 Amazon Bedrock 형식, Google Cloud Agent Platform 형식을 포괄합니다. 별칭이나 추론 프로필 ARN 같은 그 밖의 문자열은 클라이언트가 보낸 ID 또는 업스트림으로 보낸 문자열과 대소문자 구분 없이 매칭됩니다.

757* 행이 겹치는 경우 미터는 첫 번째 행이 아니라 가장 구체적인 행을 선택합니다. 우선 `model`이 업스트림으로 보낸 정확한 모델 문자열인 행, 그다음 클라이언트가 보낸 정확한 ID와 일치하는 행, 그다음 기본 제공 모델을 지정하는 행 순입니다.760* 행이 겹치는 경우 미터는 첫 번째 행이 아니라 가장 구체적인 행을 선택합니다. 즉 `model`이 업스트림으로 보낸 모델 문자열과 정확히 일치하는 행, 그다음 클라이언트가 보낸 ID와 정확히 일치하는 행, 그다음 기본 제공 모델을 지정한 행 순입니다.

758* 알 수 없는 업스트림 이름은 부팅에 실패하며, 하나의 업스트림에 대해 같은 모델을 지정하는 두 행(하나의 기본 제공 모델을 두 가지 표기로 지정하는 경우 포함)도 마찬가지입니다. 요청 가능한 모델이 사용할 수 없는 행에 대해서는 게이트웨이가 부팅 시 경고합니다.761* 알 수 없는 업스트림 이름은 부팅 실패를 일으키며, 하나의 업스트림에 동일한 모델을 지정한 두 행(하나의 기본 제공 모델을 두 가지 표기로 지정한 경우 포함)도 마찬가지입니다. 요청 가능한 모델이 사용할 수 없는 행에 대해서는 게이트웨이가 부팅 시 경고합니다.

759* 웹 검색 요청은 \$0.01 정가로 유지되지만, 배수는 여전히 적용됩니다.762* 웹 검색 요청은 \$0.01 정가를 유지하며, multiplier는 여전히 적용됩니다.

760 763 

761리전별 요금을 적용하려면 각 리전에 고유한 이름의 업스트림을 지정하고 업스트림마다 행 하나를 두십시오.764리전별 요금을 적용하려면 각 리전에 고유한 이름의 업스트림을 지정하고 업스트림마다 행을 하나씩 두십시오.

762 765 

763#### 가격 인상766#### 가격 할증

764 767 

765게이트웨이 서버에 v2.1.271 이상이 있으면 `multiplier`를 1보다 크게(최대 10까지) 설정하여 내부 차지백 요금처럼 공급자가 청구하는 금액보다 더 많이 측정할 수 있습니다. 이 예시는 모든 요청을 가격의 120%로 측정합니다.768게이트웨이 서버에 v2.1.271 이상이 있으면 `multiplier`를 1보다 크게(최대 10) 설정하여 내부 차지백 요금처럼 공급자가 청구하는 금액보다 많이 측정할 수 있습니다. 다음 예시는 모든 요청을 가격의 120%로 측정합니다.

766 769 

767```yaml theme={null}770```yaml theme={null}

768pricing:771pricing:

769 multiplier: 1.2772 multiplier: 1.2

770```773```

771 774 

772[`admin:`](#admin) 블록이 있으면 마크업은 지출 한도에도 적용됩니다. 미터가 가격의 120%를 집계하므로 개발자는 한도에 더 빨리 도달합니다. 게이트웨이는 부팅 시 이 사실을 알리는 경고를 로그에 기록합니다.775[`admin:`](#admin) 블록이 있으면 할증이 지출 한도에도 적용됩니다. 미터가 가격의 120%를 계산하므로 개발자가 한도에 더 빨리 도달합니다. 게이트웨이는 부팅 시 이를 알리는 경고를 로그에 기록합니다.

773 776 

774배수는 업스트림 공급자가 해당 요청에 대해 청구하는 금액을 변경하지 않습니다.777multiplier는 업스트림 공급자가 요청에 대해 청구하는 금액을 변경하지 않습니다.

775 778 

776게이트웨이가 [로그인한 클라이언트에 요금도 전송](#send-the-rates-to-signed-in-clients)하는 경우, 개발자가 마크업을 보려면 Claude Code v2.1.271 이상이 필요합니다. 이전 클라이언트는 1보다 큰 `multiplier`를 무시하고 마크업 없이 비용을 표시합니다.779게이트웨이가 [로그인한 클라이언트에 요금도 전송](#send-the-rates-to-signed-in-clients)하는 경우, 개발자가 할증을 확인하려면 Claude Code v2.1.271 이상이 필요합니다. 이전 클라이언트는 1보다 큰 `multiplier`를 무시하고 할증 없이 비용을 표시합니다.

777 780 

778v2.1.271 이전 게이트웨이 서버는 `multiplier`를 1보다 크게 설정하면 시작을 거부합니다.781v2.1.271 이전 게이트웨이 서버는 `multiplier`를 1보다 크게 설정하면 시작되지 않습니다.

779 782 

780#### 로그인한 클라이언트에 요금 전송783#### 로그인한 클라이언트에 요금 전송

781 784 

782게이트웨이 서버에 v2.1.268 이상이 있으면 게이트웨이는 `pricing`의 요금을 자신이 제공하는 [`managed`](#managed) 정책에 [`modelPricing`](https://code.claude.com/docs/ko/settings-reference#modelpricing) 관리형 설정으로도 넣습니다. 그러면 정책에 매칭된 개발자는 `/usage`, 상태줄, OpenTelemetry에서 각 모델 ID를 처리하는 첫 번째 업스트림의 `pricing` 요금을 보게 됩니다. 어떤 정책에도 매칭되지 않는 개발자는 관리형 설정을 받지 않으므로 수치가 정가로 유지됩니다. 클라이언트는 Claude Code v2.1.242 이상에서 이 설정을 적용합니다.785게이트웨이 서버에 v2.1.268 이상이 있으면 게이트웨이는 `pricing`의 요금을 자신이 제공하는 [`managed`](#managed) 정책에 [`modelPricing`](https://code.claude.com/docs/ko/settings-reference#modelpricing) 관리형 설정으로도 넣습니다. 그러면 정책과 매칭되는 개발자는 `/usage`, 상태줄, OpenTelemetry에서 각 모델 ID를 처리하는 첫 번째 업스트림의 `pricing` 요금을 보게 됩니다. 어떤 정책과도 매칭되지 않는 개발자는 관리형 설정을 받지 않으므로 수치가 정가로 유지됩니다. 클라이언트는 Claude Code v2.1.242 이상에서 이 설정을 적용합니다.

783 786 

784* 게이트웨이가 추가하는 항목: 정책의 `cli` 블록에 이미 `modelPricing`이 설정되어 있지 않으면, 게이트웨이는 `multiplier`와 함께 클라이언트가 요청할 수 있는 모든 모델 ID에 대해 해당 ID를 처리하는 첫 번째 업스트림의 재정의 행을 추가합니다. 장애 조치 업스트림만 청구하는 요금은 게이트웨이에 남습니다.787* 게이트웨이가 추가하는 항목: 정책의 `cli` 블록에 이미 `modelPricing`이 설정되어 있지 않으면, 게이트웨이는 `multiplier`와, 클라이언트가 요청할 수 있는 모든 모델 ID에 대해 해당 ID를 처리하는 첫 번째 업스트림의 재정의 행을 추가합니다. 장애 조치 업스트림만 청구하는 요금은 게이트웨이에만 남습니다.

785* 특정 정책 제외: 해당 정책의 `cli` 블록에서 `modelPricing`을 `{}`로 설정하면 그 정책의 개발자는 정가로 유지됩니다.788* 특정 정책 제외: 해당 정책의 `cli` 블록에서 `modelPricing`을 `{}`로 설정하면 그 정책의 개발자는 정가로 유지됩니다.

786* 정책 자체 요금 유지: `cli` 블록에서 자체 `multiplier` 또는 `overrides`로 `modelPricing`을 설정한 정책은 해당 `modelPricing`을 그대로 유지하며, 게이트웨이는 여기에 자체 요금을 추가하지 않습니다.789* 정책 자체 요금 유지: `cli` 블록에서 자체 `multiplier` 또는 `overrides`로 `modelPricing`을 설정한 정책은 해당 `modelPricing`을 그대로 유지하며, 게이트웨이는 자체 요금을 추가하지 않습니다.

787 790 

788### `models`791### `models`

789 792 

790`models` 블록은 관리자가 큐레이션하는 선택적 모델 목록으로, `/v1/models`에서 제공되며 업스트림별로 모델 ID를 변환하는 데 사용됩니다. 미국 외 Amazon Bedrock 리전, Amazon Bedrock 프로비저닝된 처리량 ARN, Microsoft Foundry 배포 이름에는 필수입니다.793`models` 블록은 관리자가 선별하는 선택적 모델 목록으로, `/v1/models`에서 제공되며 업스트림별로 모델 ID를 변환하는 데 사용됩니다. 미국 외 Amazon Bedrock 리전, Amazon Bedrock 프로비저닝된 처리량 ARN, Microsoft Foundry 배포 이름에는 필수입니다.

791 794 

792```yaml theme={null}795```yaml theme={null}

793auto_include_builtin_models: true # false: expose only the list below796auto_include_builtin_models: true # false: expose only the list below


801 foundry: your-opus-deployment-name804 foundry: your-opus-deployment-name

802```805```

803 806 

804`upstream_model` 아래의 각 키는 구성된 업스트림의 `name`과 일치해야 하며, 이 값의 기본값은 공급자 이름입니다. 어떤 업스트림과도 일치하지 않는 키는 부팅에 실패하므로, 사용하지 않는 공급자의 줄은 생략하십시오.807`upstream_model` 아래의 각 키는 구성된 업스트림의 `name`과 일치해야 하며, 기본값은 공급자 이름입니다. 어떤 업스트림과도 일치하지 않는 키는 부팅 실패를 일으키므로, 사용하지 않는 공급자의 줄은 생략하십시오.

805 808 

806### `managed`809### `managed`

807 810 

808`managed` 블록은 IdP 그룹 또는 이메일 도메인을 키로 하는 역할 기반 접근 정책을 정의합니다. 정책은 순서대로 평가되며, 첫 번째로 매칭된 정책이 선택된 다음 `match: {}` 캐치올 기반 위에 병합됩니다. 정책은 ETag/304 캐싱과 함께 `GET /managed/settings`에서 사용자별로 제공됩니다.811`managed` 블록은 IdP 그룹 또는 이메일 도메인을 기준으로 하는 역할 기반 액세스 정책을 정의합니다. 정책은 순서대로 평가되며, 첫 번째로 매칭되는 정책이 선택된 후 `match: {}` 캐치올 기본 정책 위에 병합됩니다. 정책은 `GET /managed/settings`에서 사용자별로 ETag/304 캐싱과 함께 제공됩니다.

809 812 

810```yaml theme={null}813```yaml theme={null}

811managed:814managed:


824 enforceAvailableModels: true827 enforceAvailableModels: true

825```828```

826 829 

827관례상 마지막에 나열하는 `match: {}` 캐치올은 기본 레이어로 취급됩니다. 다른 모든 정책은 자신이 설정하지 않은 키를 캐치올에서 상속하므로, 역할별 항목에는 조직 기본값과 다른 부분만 나열하면 됩니다. 병합 규칙은 키 유형에 따라 다릅니다.830관례상 마지막에 나열하는 `match: {}` 캐치올은 기본 계층으로 취급됩니다. 다른 모든 정책은 설정하지 않은 키를 캐치올에서 상속하므로, 역할별 항목에는 조직 기본값과 다른 부분만 나열하면 됩니다. 병합 규칙은 키 유형에 따라 다릅니다.

828 831 

829* **허용 목록**: `availableModels` 및 `permissions.allow`. 특정 정책의 목록이 기반의 목록을 완전히 대체합니다.832* **허용 목록**: `availableModels` 및 `permissions.allow`. 특정 정책의 목록이 기본 정책의 목록을 완전히 대체합니다.

830* **거부 목록 및 훅 배열**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces`, `deniedModels`, 그리고 모든 `hooks` 이벤트 유형 배열. 이들은 기반과 정책의 합집합을 취하므로, 조직 전체의 거부 규칙이나 감사 훅이 역할별 재정의로 인해 실수로 누락되지 않습니다.833* **거부 목록 및 훅 배열**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces`, `deniedModels`, 그리고 모든 `hooks` 이벤트 유형 배열. 이들은 기본 정책과 정책의 합집합을 취하므로, 조직 전체의 거부 규칙이나 감사 훅이 역할별 재정의로 인해 실수로 누락되지 않습니다.

831* **레코드 유형 키**: `env`, `modelOverrides`, `skillOverrides`. 이들은 얕은 병합을 수행하므로, 역할별 `env` 블록은 자신이 설정한 키를 재정의하고 나머지는 기반에서 상속합니다.834* **레코드 유형 키**: `env`, `modelOverrides`, `skillOverrides`. 이들은 얕은 병합을 수행하므로, 역할별 `env` 블록은 자신이 설정한 키를 재정의하고 나머지는 기본 정책에서 상속합니다.

832 835 

833`availableModels`는 `/v1/messages`에서 서버 측으로도 적용되므로, 거부된 모델은 클라이언트가 무엇을 보내든 `400`을 반환합니다. 빈 목록은 모든 모델을 거부합니다. 이 검사는 개발자가 모델을 선택하기 전에 세션이 시작되는 모델에도 적용되므로 [정책이 허용하는 모델로 세션을 시작](#start-sessions-on-a-model-the-policy-allows)하도록 설정하십시오.836`availableModels`는 `/v1/messages`에서 서버 측으로도 적용되므로, 거부된 모델은 클라이언트가 무엇을 보내든 `400`을 반환합니다. 빈 목록은 모든 모델을 거부합니다. 이 검사는 개발자가 모델을 선택하기 전 세션이 시작되는 모델에도 적용되므로, [정책이 허용하는 모델로 세션을 시작](#start-sessions-on-a-model-the-policy-allows)하도록 하십시오.

834 837 

835게이트웨이는 요청을 중계하기 전에 `model` 값 자체를 검증하므로, 잘못된 형식의 값은 업스트림에 도달하지 않습니다. 다음 두 경우에 `400`으로 요청을 거부합니다.838게이트웨이는 요청을 중계하기 전에 `model` 값 자체를 검증하므로, 잘못된 형식의 값은 업스트림에 도달하지 않습니다. 다음 두 경우에 요청을 `400`으로 거부합니다.

836 839 

837* 값이 없거나 비어 있으면 게이트웨이는 `model is required` 메시지와 함께 요청을 거부합니다. 이 검사에는 Claude Code v2.1.228 이상을 실행하는 게이트웨이가 필요합니다.840* 값이 없거나 비어 있으면 게이트웨이는 `model is required` 메시지와 함께 요청을 거부합니다. 이 검사에는 Claude Code v2.1.228 이상을 실행하는 게이트웨이가 필요합니다.

838* 값이 있지만 문자열이 아니면 게이트웨이는 `model must be a string` 메시지와 함께 요청을 거부합니다. Claude Code v2.1.221 이상을 실행하는 게이트웨이가 필요합니다.841* 값이 있지만 문자열이 아니면 게이트웨이는 `model must be a string` 메시지와 함께 요청을 거부합니다. Claude Code v2.1.221 이상을 실행하는 게이트웨이가 필요합니다.

839 842 

840| Matcher | 동작 |843| Matcher | 동작 |

841| - | - |844| - | - |

842| `match: {}` | 인증된 모든 사용자와 매칭됩니다. 이것으로 시작하고 나중에 그 위에 그룹 범위 정책을 추가하십시오. |845| `match: {}` | 인증된 모든 사용자와 매칭됩니다. 먼저 이것으로 시작하고 나중에 그 위에 그룹 범위 정책을 추가하십시오. |

843| `match: { groups: [a, b] }` | JWT의 `groups` 클레임에 나열된 그룹 중 하나라도 포함되면 매칭됩니다. 대소문자를 구분하므로 그룹은 IdP의 정확한 대소문자와 일치해야 합니다. |846| `match: { groups: [a, b] }` | JWT의 `groups` 클레임에 나열된 그룹 중 하나라도 포함되어 있으면 매칭됩니다. 대소문자를 구분하므로 그룹은 IdP의 대소문자 표기와 정확히 일치해야 합니다. |

844| `match: { email_domain: example.com }` | JWT의 `email` 클레임에서 마지막 `@` 뒤 부분과 대소문자를 구분하지 않고 매칭됩니다. 정책당 하나의 도메인을 허용합니다. |847| `match: { email_domain: example.com }` | JWT `email` 클레임에서 마지막 `@` 뒤의 부분과 대소문자 구분 없이 매칭됩니다. 정책당 하나의 도메인만 허용합니다. |

845| `match: { groups: [a], email_domain: example.com }` | 두 조건이 모두 일치해야 합니다 |848| `match: { groups: [a], email_domain: example.com }` | 두 조건이 모두 일치해야 합니다 |

846 849 

847어떤 정책에도 매칭되지 않는 인증된 사용자는 게이트웨이의 기본값, 즉 카탈로그의 모든 모델과 관리형 설정 없음을 받습니다. 기본 정책을 보장하려면 마지막에 `match: {}` 캐치올을 추가하십시오.850어떤 정책과도 매칭되지 않는 인증된 사용자는 게이트웨이 기본값을 받으며, 이는 카탈로그의 모든 모델과 관리형 설정 없음을 의미합니다. 기본 정책을 보장하려면 마지막에 `match: {}` 캐치올을 추가하십시오.

848 851 

849> [!NOTE]852> [!NOTE]

850>853>

851> 게이트웨이는 자체 사용자 디렉터리를 보관하지 않습니다. 사용자의 IdP 토큰으로 각 요청을 인가하며, 토큰의 `groups` 클레임에서 그룹 멤버십을 읽고 이를 기준으로 정책을 평가합니다. 열거할 명단도, 미리 생성할 계정도 없으므로 SCIM 엔드포인트도 없습니다. SCIM이 동기화할 대상이 없기 때문입니다.854> 게이트웨이는 자체 사용자 디렉터리를 보관하지 않습니다. 사용자의 IdP 토큰으로 각 요청을 승인하며, 토큰의 `groups` 클레임에서 그룹 멤버십을 읽고 이를 기준으로 정책을 평가합니다. 열거할 명단도, 미리 생성할 계정도 없으므로 SCIM이 동기화할 대상이 없어 SCIM 엔드포인트도 없습니다.

852>855>

853> 사용자 및 그룹 수명 주기 관리는 신뢰할 수 있는 원천, 즉 IdP의 기본 SCIM 프로비저닝이나 전용 ID 거버넌스 플랫폼에서 수행하십시오. 그곳에서 관리되는 멤버십과 프로비저닝 해제는 토큰을 통해 게이트웨이에 자동으로 반영됩니다. Claude 계정 자체의 SCIM 프로비저닝이 필요하다면 이는 [Claude for Enterprise](https://code.claude.com/docs/ko/admin-setup.md) 기능입니다.856> 사용자 및 그룹 수명 주기 관리는 신뢰할 수 있는 원본, 즉 IdP의 기본 SCIM 프로비저닝이나 전용 ID 거버넌스 플랫폼에서 수행하십시오. 그곳에서 관리되는 멤버십과 프로비저닝 해제는 토큰을 통해 게이트웨이에 자동으로 반영됩니다. Claude 계정 자체의 SCIM 프로비저닝이 필요하다면 이는 [Claude for Enterprise](https://code.claude.com/docs/ko/admin-setup.md) 기능입니다.

854>857>

855> 두 가지 전파 주기가 적용됩니다.858> 두 가지 반영 주기가 적용됩니다.

856>859>

857> * **정책 내용**: 정책을 편집하고 재배포하면 연결된 Claude Code 클라이언트의 다음 관리형 설정 폴링 시, 즉 1시간 이내에 반영됩니다. 단, [다음 실행 시에만 적용되는 변경 사항](https://code.claude.com/docs/ko/server-managed-settings.md#fetch-and-caching-behavior)은 예외입니다860> * **정책 내용**: 정책을 편집하고 재배포하면 연결된 Claude Code 클라이언트의 다음 관리형 설정 폴링 시(1시간 이내) 반영됩니다. 단, [다음 실행 시에만 적용되는 변경 사항](https://code.claude.com/docs/ko/server-managed-settings.md#fetch-and-caching-behavior)은 예외입니다

858> * **그룹 멤버십**: 사용자의 그룹 멤버십을 변경하면 해당 사용자에게 매칭되는 정책이 달라집니다. 이는 다음 세션 재발급, 즉 다음 자동 갱신 시 적용되며 `session.ttl_hours`로 제한됩니다.861> * **그룹 멤버십**: 사용자의 그룹 멤버십을 변경하면 매칭되는 정책이 바뀝니다. 이는 다음 세션 재발급, 즉 `session.ttl_hours`로 제한되는 다음 자동 갱신 시 적용됩니다.

859>862>

860> Claude Desktop은 [자체 일정](#when-a-policy-change-reaches-claude-desktop)을 따릅니다.863> Claude Desktop은 [자체 일정](#when-a-policy-change-reaches-claude-desktop)을 따릅니다.

861 864 

862#### 정책이 허용하는 모델로 세션 시작865#### 정책이 허용하는 모델로 세션 시작

863 866 

864`availableModels`에 Claude Code의 기본 모델이 빠져 있으면, 개발자가 `/model` 등으로 목록에 있는 모델을 선택하기 전까지 세션은 `400` 응답을 받습니다. 게이트웨이 세션에서 기본값은 `opus` 별칭이 가리키는 Opus 모델이며, `availableModels`만으로는 이를 변경하지 않습니다.867`availableModels`에 Claude Code의 기본 모델이 빠져 있으면, 개발자가 `/model` 등으로 목록에 있는 모델을 선택할 때까지 세션이 `400` 응답을 받습니다. 게이트웨이 세션에서 기본 모델은 `opus` 별칭이 가리키는 Opus 모델이며, `availableModels`만으로는 이를 바꾸지 않습니다.

865 868 

866이를 해결하려면 같은 `cli` 블록에 [`enforceAvailableModels: true`](https://code.claude.com/docs/ko/model-config#enforce-the-allowlist-for-the-default-model)를 설정한 다음, 목록에 어떤 종류의 항목이 있는지 확인하십시오.869이를 해결하려면 같은 `cli` 블록에 [`enforceAvailableModels: true`](https://code.claude.com/docs/ko/model-config#enforce-the-allowlist-for-the-default-model)를 설정한 다음, 목록에 어떤 종류의 항목이 있는지 확인하십시오.

867 870 

868* **`sonnet` 같은 별칭 또는 `claude-sonnet-4-6` 같은 기본 제공 ID**: 세션이 해당 모델 중 하나로 시작되며, `/model`의 Default 옵션이 해당 모델로 결정됩니다871* **`sonnet` 같은 별칭 또는 `claude-sonnet-4-6` 같은 기본 제공 ID**: 세션이 그중 하나의 모델로 시작되며, `/model`의 Default 옵션이 해당 모델로 결정됩니다

869* **목록에 별칭이나 기본 제공 ID가 없음**: 세션이 계속 기본 제공 기본값으로 시작될 수 있으므로, 해당 정책의 `cli` 블록에서 [`model`](https://code.claude.com/docs/ko/model-config#control-the-model-users-run-on)도 목록에 있는 ID 중 하나로 설정하십시오872* **목록에 별칭이나 기본 제공 ID가 없는 경우**: 세션이 계속 기본 제공 기본 모델로 시작될 수 있으므로, 해당 정책의 `cli` 블록에서 [`model`](https://code.claude.com/docs/ko/model-config#control-the-model-users-run-on)도 목록의 ID 중 하나로 설정하십시오

870 873 

871이 정책은 [`models`](#models)가 정의하는 사용자 지정 ID 하나를 나열하고, 해당 ID로 세션을 시작합니다.874다음 정책은 [`models`](#models)가 정의하는 사용자 지정 ID 하나를 나열하고 해당 ID로 세션을 시작합니다.

872 875 

873```yaml theme={null}876```yaml theme={null}

874managed:877managed:

875 policies:878 policies:

876 - match: { groups: [restricted-projects] }879 - match: { groups: [restricted-projects] }

877 cli:880 cli:

878 availableModels: [claude-opus-restricted]881 availableModels: [restricted-claude-opus-4-8]

879 enforceAvailableModels: true882 enforceAvailableModels: true

880 model: claude-opus-restricted883 model: restricted-claude-opus-4-8

884 env:

885 ANTHROPIC_DEFAULT_OPUS_MODEL: restricted-claude-opus-4-8 # opus and Default resolve to the ID too

881```886```

882 887 

883#### 부팅 시 게이트웨이를 중지시키는 matcher 값888#### 부팅 시 게이트웨이를 중지시키는 matcher 값


887* 빈 `groups` 목록892* 빈 `groups` 목록

888* `groups` 또는 `admin_groups`의 빈 항목893* `groups` 또는 `admin_groups`의 빈 항목

889* 빈 `email_domain`894* 빈 `email_domain`

890* `@`, 공백 또는 쉼표가 포함된 `email_domain`. 게이트웨이는 이 검사 전에 값을 다듬고 선행 `@` 하나를 제거합니다. `example.com`처럼 도메인 하나만 작성하십시오.895* `@`, 공백 또는 쉼표가 포함된 `email_domain`. 게이트웨이는 이 검사 전에 값의 앞뒤 공백을 제거하고 맨 앞의 `@` 하나를 제거합니다. `example.com`처럼 도메인 하나만 작성하십시오.

891 896 

892v2.1.232 이전에는 게이트웨이가 이러한 값이 있어도 시작되었습니다. 각 값의 영향은 다음과 같았습니다.897v2.1.232 이전에는 게이트웨이가 이러한 값으로도 시작되었습니다. 각 값의 영향은 다음과 같았습니다.

893 898 

894* 빈 `email_domain`: 게이트웨이가 도메인 검사를 건너뛰었으므로, `email_domain`이 비어 있고 `groups` 목록이 없는 정책은 인증된 모든 사용자와 매칭되었습니다899* 빈 `email_domain`: 게이트웨이가 도메인 검사를 건너뛰었으므로, 빈 `email_domain`이 있고 `groups` 목록이 없는 정책은 인증된 모든 사용자와 매칭되었습니다

895* 빈 `groups` 목록: 정책이 아무와도 매칭되지 않았습니다900* 빈 `groups` 목록: 정책이 아무와도 매칭되지 않았습니다

896* `@`, 공백 또는 쉼표가 포함된 `email_domain`: 정책이 아무와도 매칭되지 않았습니다901* `@`, 공백 또는 쉼표가 포함된 `email_domain`: 정책이 아무와도 매칭되지 않았습니다

897* `groups` 또는 `admin_groups`의 빈 항목: 해당 사용자의 IdP `groups` 클레임에도 빈 항목이 있는 경우에만 사용자와 매칭되었습니다. `admin_groups`에서는 이 매칭으로 관리자 접근 권한이 부여되었습니다. `admin_groups` 목록에 빈 항목이 한 번도 없었다면 이런 방식으로 관리자 접근 권한을 얻은 사람은 없습니다.902* `groups` 또는 `admin_groups`의 빈 항목: 해당 사용자의 IdP `groups` 클레임에도 빈 항목이 있는 경우에만 사용자와 매칭되었습니다. `admin_groups`에서는 이 매칭이 관리자 액세스 권한을 부여했습니다. `admin_groups` 목록에 빈 항목이 한 번도 없었다면 이런 방식으로 관리자 액세스 권한을 얻은 사람은 없습니다.

898 903 

899#### `cli` 또는 `code` 선택904#### `cli` 또는 `code` 선택

900 905 


902>907>

903> 정책이 `code` 키를 사용할 때 다음 각 항목은 게이트웨이 시작을 막습니다.908> 정책이 `code` 키를 사용할 때 다음 각 항목은 게이트웨이 시작을 막습니다.

904>909>

905> * **게이트웨이 버전**: `code`에는 게이트웨이 서버에 Claude Code v2.1.296 이상이 필요합니다. 이전 게이트웨이는 이 키를 발견하면 시작을 거부합니다. 키를 추가하기 전에 모든 레플리카를 업그레이드하고, 이전 버전으로 롤백하기 전에 `code`를 다시 `cli`로 변경하십시오.910> * **게이트웨이 버전**: `code`에는 게이트웨이 서버에 Claude Code v2.1.296 이상이 필요합니다. 이전 게이트웨이는 이 키를 발견하면 시작되지 않습니다. 키를 추가하기 전에 모든 레플리카를 업그레이드하고, 이전 버전으로 롤백하기 전에는 `code`를 다시 `cli`로 변경하십시오.

906> * **혼합 키**: `code`와 `cli`(또는 이전 표기인 `settings`)를 모두 포함하는 파일은 부팅 시 게이트웨이를 중지시킵니다. 한 번의 편집으로 모든 블록을 하나의 키 아래에 두십시오.911> * **혼합된 키**: `code`와 `cli`(또는 그 이전 표기인 `settings`)가 모두 있는 파일은 부팅 시 게이트웨이를 중지시킵니다. 한 번의 편집으로 모든 블록을 하나의 키 아래에 두십시오.

907 912 

908`.env` 파일 읽기를 거부하는 규칙 같은 정책의 Claude Code 설정은 `cli` 또는 `code` 키 아래의 블록에 들어갑니다. `code`가 권장 키이며 `cli`는 레거시 키입니다. 두 키의 내용은 동일합니다. 키는 설정이 적용되는 위치를 결정합니다.913`.env` 파일 읽기를 거부하는 규칙 같은 정책의 Claude Code 설정은 `cli` 또는 `code` 키 아래의 블록에 들어갑니다. `code`가 권장 키이고 `cli`는 레거시 키입니다. 두 키는 동일한 내용을 받습니다. 키는 설정이 적용되는 위치를 결정합니다.

909 914 

910* **`cli`**: 터미널, VS Code 및 JetBrains 확장 프로그램, Agent SDK. `cli`에서는 Claude Desktop의 Code 탭이 [파생 설정](#claude-desktop-overlay)을 받으므로, `Read(./.env)` 같은 범위 지정 규칙은 그곳에서 사용자를 막지 않습니다.915* **`cli`**: 터미널, VS Code 및 JetBrains 확장 프로그램, Agent SDK. `cli` 아래에서는 Claude Desktop의 Code 탭이 [파생 설정](#claude-desktop-overlay)을 받으므로, `Read(./.env)` 같은 범위 지정 규칙은 그곳에서 사용자를 막지 않습니다.

911* **`code`**: 동일한 위치에 더해 Claude Desktop의 Code 탭도 적용 대상에 포함될 수 있습니다.916* **`code`**: 동일한 위치에 더해 Claude Desktop의 Code 탭까지 적용할 수 있습니다.

912 917 

913`cli`를 사용하는 파일은 기존과 같이 작동하며, [`desktop`](#claude-desktop-overlay) 키가 있는 정책에서 `cli`를 발견한 게이트웨이는 부팅 시 경고하지만 그대로 시작합니다. 설정이 Code 탭에도 적용되도록 하려면 `code`로 전환하십시오.918`cli`를 사용하는 파일은 기존대로 동작하며, [`desktop`](#claude-desktop-overlay) 키가 있는 정책에서 `cli`를 발견한 게이트웨이는 부팅 시 경고하되 그대로 시작됩니다. 설정이 Code 탭에도 적용되도록 하려면 `code`로 전환하십시오.

914 919 

915전환하기 전에 [Code 탭에 `code` 설정 적용](#apply-code-settings-in-the-code-tab)을 읽으십시오. 그곳에 설정이 적용되려면 정책에 `desktop` 키가 있어야 하고 사용자 머신에 사전 설정이 필요하며, Claude Desktop에서는 웹 검색이 꺼집니다.920전환하기 전에 [Code 탭에 `code` 설정 적용](#apply-code-settings-in-the-code-tab)을 읽어 보십시오. 설정이 그곳에 적용되려면 정책에 `desktop` 키가 필요하고 사용자 머신에 설정 작업이 필요하며, Claude Desktop에서 웹 검색이 꺼집니다.

916 921 

917이 정책은 거부 규칙을 `code` 아래에 두고 빈 `desktop` 키를 포함합니다.922다음 정책은 거부 규칙을 `code` 아래에 두고 빈 `desktop` 키를 함께 둡니다.

918 923 

919```yaml theme={null}924```yaml theme={null}

920managed:925managed:


925 desktop: {}930 desktop: {}

926```931```

927 932 

928전환할 때는 블록 이름을 바꾸는 같은 편집에서 `serve_to_desktop` 줄을 모두 삭제하십시오. 안내에서 `cli` 블록을 언급하는 경우 `code` 블록을 사용하십시오.933전환할 때는 블록 이름을 바꾸는 동일한 편집에서 `serve_to_desktop` 줄을 모두 삭제하십시오. 안내에서 `cli` 블록을 언급하는 곳에서는 `code` 블록을 사용하십시오.

929 934 

930`serve_to_desktop: true`는 정책의 `cli` 설정을 Code 탭에 제공하는 레거시 방식입니다. Claude Desktop이 [`bootstrapUrl`](#claude-desktop-overlay)을 통해 연결하는 경우에는 효과가 없습니다. 정책이 `cli`를 사용하는 동안 이 키를 언급하는 부팅 경고가 나타나면 해당 설정이 Code 탭에 도달하지 않고 있다는 뜻입니다.935`serve_to_desktop: true`는 정책의 `cli` 설정을 Code 탭에 제공하는 레거시 방식입니다. Claude Desktop이 [`bootstrapUrl`](#claude-desktop-overlay)을 통해 연결하는 경우에는 효과가 없습니다. 정책이 `cli`를 사용하는 동안 이 키를 언급하는 부팅 경고가 나타나면 해당 설정이 Code 탭에 도달하지 않고 있다는 의미입니다.

931 936 

932* **Code 탭에 적용하려면**: 사용자 머신이 [Code 탭에 `code` 설정 적용](#apply-code-settings-in-the-code-tab)의 조건을 충족하면 `code`로 전환하십시오937* **Code 탭에 적용하려면**: 사용자 머신이 [Code 탭에 `code` 설정 적용](#apply-code-settings-in-the-code-tab)의 조건을 충족하면 `code`로 전환하십시오

933* **`cli`를 유지하려면**: 경고를 표시하지 않도록 정책에서 `cli` 옆에 `serve_to_desktop: false`를 설정하십시오938* **`cli`를 유지하려면**: 경고를 없애기 위해 정책에서 `cli` 옆에 `serve_to_desktop: false`를 설정하십시오

934 939 

935#### `cli`에 들어가는 항목940#### `cli`에 들어가는 내용

936 941 

937각 `code` 또는 `cli` 값은 완전한 Claude Code `managed-settings.json` 문서로, MDM이나 `/etc/claude-code/managed-settings.json`을 통해 배포하는 것과 동일한 스키마를 여기서는 YAML로 표현한 것입니다. CLI는 전달된 문서를 사용자 및 프로젝트 설정보다 상위인 관리형 계층에서 서버 관리형 설정 대신 적용합니다. 따라서 `policyHelper` 및 `wslInheritsWindowsSettings`처럼 [OS 수준 정책 소스로 제한된](https://code.claude.com/docs/ko/server-managed-settings.md#current-limitations) 설정은 무시합니다.942각 `code` 또는 `cli` 값은 완전한 Claude Code `managed-settings.json` 문서로, MDM이나 `/etc/claude-code/managed-settings.json`을 통해 배포하는 것과 동일한 스키마를 여기서는 YAML로 표현한 것입니다. CLI는 전달된 문서를 사용자 및 프로젝트 설정보다 상위인 관리형 계층에서, 서버 관리형 설정 대신 적용합니다. 따라서 `policyHelper` 및 `wslInheritsWindowsSettings`처럼 [OS 수준 정책 소스로 제한된](https://code.claude.com/docs/ko/server-managed-settings.md#current-limitations) 설정은 무시합니다.

938 943 

939게이트웨이는 부팅 시 각 문서를 CLI의 설정 스키마에 대해 검증하므로, 인식할 수 없는 최상위 키는 문제가 되는 모든 키를 명시하는 오류와 함께 부팅에 실패합니다. 스키마에서 의도적으로 열어 둔 부분은 여전히 임의의 값을 허용하는데, 이는 최신 클라이언트가 게이트웨이 스키마에 없는 항목을 인식할 수 있기 때문입니다. 이러한 열린 키에는 `env`, `pluginConfigs`, 그리고 `permissions` 아래에 중첩된 키가 포함됩니다.944게이트웨이는 부팅 시 CLI의 설정 스키마로 각 문서를 검증하므로, 인식되지 않는 최상위 키가 있으면 문제가 되는 모든 키를 명시하는 오류와 함께 부팅이 실패합니다. 스키마에서 의도적으로 열려 있는 부분은 여전히 임의의 값을 허용하는데, 이는 최신 클라이언트가 게이트웨이 스키마에 없는 항목을 인식할 수 있기 때문입니다. 이러한 열린 키에는 `env`, `pluginConfigs`, `permissions` 아래에 중첩된 키가 포함됩니다.

940 945 

941검증에는 게이트웨이에 설치된 버전에 번들된 스키마가 사용되므로, 최신 Claude Code 릴리스에서 도입된 최상위 설정 키를 관리형 구성에 넣으려면 먼저 게이트웨이를 업그레이드해야 합니다. 새 정책을 배포하기 전에 클라이언트 하나에서 스모크 테스트하십시오.946검증에는 게이트웨이에 설치된 버전에 번들된 스키마가 사용되므로, 최신 Claude Code 릴리스에서 도입된 최상위 설정 키를 관리형 구성에 넣으려면 먼저 게이트웨이를 업그레이드해야 합니다. 새 정책을 배포하기 전에 클라이언트 하나에서 스모크 테스트하십시오.

942 947 

943전체 키 레퍼런스는 [Claude Code 설정](https://code.claude.com/docs/ko/settings-reference.md#all-settings)에 있습니다. 운영자가 가장 먼저 찾는 키는 다음과 같습니다.948전체 키 참조는 [Claude Code 설정](https://code.claude.com/docs/ko/settings-reference.md#all-settings)에 있습니다. 운영자가 가장 먼저 사용하는 키는 다음과 같습니다.

944 949 

945```yaml theme={null}950```yaml theme={null}

946managed:951managed:


978| 키 | 적용 주체 | 효과 |983| 키 | 적용 주체 | 효과 |

979| - | - | - |984| - | - | - |

980| `availableModels` | 게이트웨이 + CLI | 모델 허용 목록입니다. `/v1/messages`에서도 검사되므로 패치된 클라이언트가 우회할 수 없습니다. |985| `availableModels` | 게이트웨이 + CLI | 모델 허용 목록입니다. `/v1/messages`에서도 검사되므로 패치된 클라이언트가 우회할 수 없습니다. |

981| [`deniedModels`](https://code.claude.com/docs/ko/settings-reference#deniedmodels), [`availableModelsMatch`](https://code.claude.com/docs/ko/settings-reference#availablemodelsmatch) | 게이트웨이 + CLI | `availableModels`가 달리 허용할 [특정 모델 또는 버전을 차단](https://code.claude.com/docs/ko/model-config.md#block-specific-models-or-versions)합니다. 차단된 모델은 `/v1/messages`에서 `400`으로 거부되고 `/v1/models`에서 제외됩니다. 게이트웨이 자체 검사에는 게이트웨이 서버에 Claude Code v2.1.299 이상이 필요합니다. CLI 검사에는 클라이언트에 v2.1.283 이상이 필요하며, 이전 클라이언트는 두 키를 모두 무시합니다. |986| [`deniedModels`](https://code.claude.com/docs/ko/settings-reference#deniedmodels), [`availableModelsMatch`](https://code.claude.com/docs/ko/settings-reference#availablemodelsmatch) | 게이트웨이 + CLI | `availableModels`가 허용할 [특정 모델 또는 버전을 차단](https://code.claude.com/docs/ko/model-config.md#block-specific-models-or-versions)합니다. 차단된 모델은 `/v1/messages`에서 `400`으로 거부되며 `/v1/models`에서 제외됩니다. 게이트웨이 자체 검사에는 게이트웨이 서버에 Claude Code v2.1.299 이상이 필요합니다. CLI 검사에는 클라이언트에 v2.1.283 이상이 필요하며, 이전 클라이언트는 두 키를 모두 무시합니다. |

982| `permissions.allow` / `.deny` | CLI | 도구 및 명령 규칙입니다. [권한](https://code.claude.com/docs/ko/permissions.md) 및 [Bash 규칙이 매칭하지 않는 항목](https://code.claude.com/docs/ko/permissions.md#bash-rule-limits)을 참조하십시오. |987| `permissions.allow` / `.deny` | CLI | 도구 및 명령 규칙입니다. [권한](https://code.claude.com/docs/ko/permissions.md) 및 [Bash 규칙이 매칭하지 않는 항목](https://code.claude.com/docs/ko/permissions.md#bash-rule-limits)을 참조하십시오. |

983| `permissions.disableBypassPermissionsMode` | CLI | 권한 프롬프트를 건너뛰는 모드인 [`bypassPermissions`](https://code.claude.com/docs/ko/permission-modes#skip-all-checks-with-bypasspermissions-mode)와 `--dangerously-skip-permissions` 플래그를 차단하려면 `disable`로 설정합니다 |988| `permissions.disableBypassPermissionsMode` | CLI | 권한 프롬프트를 건너뛰는 모드인 [`bypassPermissions`](https://code.claude.com/docs/ko/permission-modes#skip-all-checks-with-bypasspermissions-mode)와 `--dangerously-skip-permissions` 플래그를 차단하려면 `disable`로 설정합니다 |

984| `allowManagedPermissionRulesOnly` | CLI | `true`이면 관리형 설정이 권한 규칙의 유일한 설정 소스가 됩니다. [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedpermissionrulesonly) 항목에 이때 Claude Code가 무시하는 모든 소스가 나열되어 있습니다. |989| `allowManagedPermissionRulesOnly` | CLI | `true`이면 관리형 설정이 권한 규칙의 유일한 설정 소스가 됩니다. [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedpermissionrulesonly) 항목에 Claude Code가 이때 무시하는 모든 소스가 나열되어 있습니다. |

985| `env` | CLI | CLI 프로세스에 병합되는 환경 변수입니다. 텔레메트리, 자동 업데이트, 모델 이름 재정의에 사용합니다. |990| `env` | CLI | CLI 프로세스에 병합되는 환경 변수입니다. 텔레메트리, 자동 업데이트, 모델 이름 재정의에 사용합니다. |

986| `hooks` | CLI | 조직 전체 [훅](https://code.claude.com/docs/ko/hooks.md) |991| `hooks` | CLI | 조직 전체 [훅](https://code.claude.com/docs/ko/hooks.md) |

987| `managedMcpServers` | CLI | 개발자가 직접 추가하는 서버와 함께 [매칭되는 모든 개발자에게 제공되는](https://code.claude.com/docs/ko/managed-mcp.md#provide-servers-through-managed-settings) 원격 MCP 서버로, `http`와 `sse`만 지원합니다. [정책의 MCP 서버](#mcp-servers-in-a-policy)를 참조하십시오. 게이트웨이 서버와 클라이언트 모두에 Claude Code v2.1.259 이상이 필요합니다. 이전 클라이언트는 이 키를 무시합니다. |992| `managedMcpServers` | CLI | 개발자가 직접 추가한 서버와 함께 [매칭되는 모든 개발자에게 제공](https://code.claude.com/docs/ko/managed-mcp.md#provide-servers-through-managed-settings)되는 원격 MCP 서버로, `http`와 `sse`만 해당합니다. [정책의 MCP 서버](#mcp-servers-in-a-policy)를 참조하십시오. 게이트웨이 서버와 클라이언트 모두에 Claude Code v2.1.259 이상이 필요합니다. 이전 클라이언트는 이 키를 무시합니다. |

988 993 

989이러한 설정은 네트워크를 통해 전달되므로, CLI는 아래 나열된 설정을 적용하기 전에 각 개발자에게 보안 승인 대화 상자를 표시합니다.994이러한 설정은 네트워크를 통해 전달되므로, CLI는 아래 나열된 설정을 적용하기 전에 각 개발자에게 보안 승인 대화상자를 표시합니다.

990 995 

991* `hooks`996* `hooks`

992* 프록시 및 기본 URL 변수처럼 개발자의 승인이 필요한 `env` 변수997* 프록시 및 기본 URL 변수처럼 개발자의 승인이 필요한 `env` 변수

993* `apiKeyHelper` 및 `statusLine` 같은 셸 실행 설정998* `apiKeyHelper` 및 `statusLine` 같은 셸 실행 설정

994* 샌드박스 바이너리 설정 `sandbox.bwrapPath`, `sandbox.socatPath`, `sandbox.ripgrep`999* 샌드박스 바이너리 설정 `sandbox.bwrapPath`, `sandbox.socatPath`, `sandbox.ripgrep`

995* `sandbox.network.tlsTerminate` 및 프록시 포트 설정처럼 트래픽을 가로채거나, 자격 증명을 주입하거나, 격리를 약화시키는 샌드박스 설정. [보안 승인 대화 상자](https://code.claude.com/docs/ko/server-managed-settings.md#security-approval-dialogs)에 모두 나열되어 있습니다.1000* `sandbox.network.tlsTerminate` 및 프록시 포트 설정처럼 트래픽을 가로채거나, 자격 증명을 주입하거나, 격리를 약화시키는 샌드박스 설정. [보안 승인 대화상자](https://code.claude.com/docs/ko/server-managed-settings.md#security-approval-dialogs)에 모두 나열되어 있습니다.

996 1001 

997승인이 얼마나 유지되고 대화 상자가 언제 다시 나타나는지는 [승인 기억](https://code.claude.com/docs/ko/server-managed-settings.md#approval-memory)에서 다룹니다.1002[승인 기억](https://code.claude.com/docs/ko/server-managed-settings.md#approval-memory)에서 승인이 유지되는 기간과 대화상자가 다시 나타나는 시점을 다룹니다.

998 1003 

999Claude Code는 모델 선택 설정이나 숫자 제한처럼 일부 전달된 `env` 변수를 개발자에게 승인 대화 상자를 표시하지 않고 적용합니다. 다른 전달된 변수는 개발자의 승인이 필요할 수 있으며, 비어 있지 않은 프록시, 기본 URL 또는 `OTEL_EXPORTER_OTLP_ENDPOINT` 값은 항상 승인이 필요합니다. 전달된 변수에 승인이 필요한 경우 대화 상자에 해당 변수가 표시됩니다. 전달된 값에 따라 승인 필요 여부가 결정되는 네 가지 개인정보 보호 토글을 포함한 자세한 내용은 [환경 변수와 승인 대화 상자](https://code.claude.com/docs/ko/server-managed-settings.md#environment-variables-and-the-approval-dialog)에 있습니다.1004Claude Code는 모델 선택 설정 및 숫자 제한처럼 일부 전달된 `env` 변수를 개발자에게 승인 대화상자를 표시하지 않고 적용합니다. 전달된 다른 변수는 개발자의 승인이 필요할 수 있으며, 비어 있지 않은 프록시, 기본 URL 또는 `OTEL_EXPORTER_OTLP_ENDPOINT` 값은 항상 승인이 필요합니다. 전달된 변수에 승인이 필요하면 대화상자에 해당 변수가 표시됩니다. 전달된 값에 따라 승인 필요 여부가 결정되는 네 가지 개인정보 토글을 포함한 세부 사항은 [환경 변수와 승인 대화상자](https://code.claude.com/docs/ko/server-managed-settings.md#environment-variables-and-the-approval-dialog)를 참조하십시오.

1000 1005 

1001게이트웨이의 [텔레메트리](#telemetry) 구성은 `OTEL_EXPORTER_OTLP_ENDPOINT`를 푸시하므로, `telemetry.forward_to`를 설정하면 각 대화형 클라이언트에서 대화 상자가 표시됩니다. 이 대화 상자는 손상되었거나 악의적인 게이트웨이로부터 개발자의 머신을 보호하기 위한 것이지, 개발자로부터 조직을 보호하기 위한 것이 아닙니다.1006게이트웨이의 [텔레메트리](#telemetry) 구성은 `OTEL_EXPORTER_OTLP_ENDPOINT`를 푸시하므로, `telemetry.forward_to`를 설정하면 각 대화형 클라이언트에서 대화상자가 표시됩니다. 이 대화상자는 손상되었거나 악의적인 게이트웨이로부터 개발자의 머신을 보호하기 위한 것이지, 개발자로부터 조직을 보호하기 위한 것이 아닙니다.

1002 1007 

1003`claude -p`, Agent SDK 세션, Claude Desktop의 Code 탭 세션 같은 [비대화형 실행](https://code.claude.com/docs/ko/server-managed-settings.md#security-approval-dialogs)은 대화 상자를 표시할 수 없습니다. 이 경우 해당 실행에 한해서만 푸시된 설정을 적용하고 승인된 것으로 기록하지 않으므로, 개발자의 다음 대화형 세션에서는 여전히 대화 상자가 표시됩니다.1008`claude -p`, Agent SDK 세션, Claude Desktop의 Code 탭 세션 같은 [비대화형 실행](https://code.claude.com/docs/ko/server-managed-settings.md#security-approval-dialogs)은 대화상자를 표시할 수 없습니다. 이 경우 푸시된 설정을 해당 실행에만 적용하고 승인된 것으로 기록하지 않으므로, 개발자의 다음 대화형 세션에서는 여전히 대화상자가 표시됩니다.

1004 1009 

1005개발자가 거절하면 Claude Code는 정책을 적용하는 대신 해당 세션을 종료합니다. 따라서 새 훅이나 대화 상자를 트리거하는 환경 변수를 광범위한 정책에 푸시하면, 매칭되는 모든 개발자가 대화형 세션에서 대화 상자를 보게 됩니다. 실행 중인 대화형 세션은 다음 시간별 폴링 시 이를 표시하며, 그렇지 않으면 개발자의 다음 대화형 시작 시 나타납니다.1010개발자가 거부하면 Claude Code는 정책을 적용하지 않고 해당 세션을 종료합니다. 따라서 광범위한 정책에 새 훅이나 대화상자를 유발하는 env 변수를 푸시하면, 매칭되는 모든 개발자가 대화형 세션에서 대화상자를 보게 됩니다. 실행 중인 대화형 세션에서는 다음 1시간 단위 폴링 시 표시되며, 그렇지 않으면 개발자의 다음 대화형 시작 시 나타납니다.

1006 1011 

1007`cli` 키는 이전 릴리스에서 `settings`라는 이름이었으며, 게이트웨이는 여전히 이 표기를 별칭으로 허용합니다. 새 배포에는 [`code`](#choose-cli-or-code)를 사용하십시오.1012`cli` 키는 이전 릴리스에서 `settings`라는 이름이었으며, 게이트웨이는 여전히 이 표기를 별칭으로 허용합니다. 새 배포에서는 [`code`](#choose-cli-or-code)를 사용하십시오.

1008 1013 

1009#### 배포 전 정책 테스트1014#### 배포 전 정책 테스트

1010 1015 

1011정책 변경을 테스트하려면 일회용 Postgres 데이터베이스를 대상으로 게이트웨이를 시작하십시오. 게이트웨이는 `cli`, `code`, `desktop` 블록의 내용을 검사하기 전에 Postgres에 연결하고 스키마 마이그레이션을 적용합니다. 데이터베이스에 연결할 수 없으면 시작이 `could not connect to Postgres`에서 멈추고 블록 내용에 대해서는 아무것도 보고하지 않습니다.1016정책 변경을 테스트하려면 임시 Postgres 데이터베이스를 대상으로 게이트웨이를 시작하십시오. 게이트웨이는 `cli`, `code`, `desktop` 블록의 내용을 검사하기 전에 Postgres에 연결하고 스키마 마이그레이션을 적용합니다. 데이터베이스에 연결할 수 없으면 시작이 `could not connect to Postgres`에서 멈추고 블록 내용에 대해서는 아무것도 보고하지 않습니다.

1012 1017 

1013#### 터미널 세션의 컨텍스트 윈도우1018#### 터미널 세션의 컨텍스트 윈도우

1014 1019 

1015`/login`으로 로그인한 터미널 세션은 Opus 4.7 이상, Sonnet 5 이상, Fable 모델에 1M 컨텍스트 윈도우를 사용합니다. 모델 ID에 `[1m]` 접미사가 필요하지 않으며, 세션은 약 967K 토큰에서 압축됩니다. 개발자 머신의 Claude Code v2.1.287 이전에는 모델 ID가 `[1m]`으로 끝나지 않는 한 Claude Code가 Opus 및 Fable 모델을 200K 윈도우로 취급했습니다.1020`/login`으로 로그인한 터미널 세션은 Opus 4.7 이상, Sonnet 5 이상, Fable 모델에 1M 컨텍스트 윈도우를 사용합니다. 모델 ID에 `[1m]` 접미사가 필요 없으며, 세션은 약 967K 토큰에서 압축됩니다. 개발자 머신의 Claude Code v2.1.287 이전에는 모델 ID가 `[1m]`으로 끝나지 않는 한 Claude Code가 Opus 및 Fable 모델을 200K 윈도우로 취급했습니다.

1016 1021 

1017터미널 세션이 대신 200K 경계에서 압축되도록 하려면 정책의 `env`에서 [자동 압축 윈도우](https://code.claude.com/docs/ko/model-config.md#set-the-auto-compact-window)를 설정하십시오.1022대신 터미널 세션이 200K 경계에서 압축되도록 하려면 정책의 `env`에서 [자동 압축 윈도우](https://code.claude.com/docs/ko/model-config.md#set-the-auto-compact-window)를 설정하십시오.

1018 1023 

1019```yaml theme={null}1024```yaml theme={null}

1020managed:1025managed:


1025 CLAUDE_CODE_AUTO_COMPACT_WINDOW: "200000"1030 CLAUDE_CODE_AUTO_COMPACT_WINDOW: "200000"

1026```1031```

1027 1032 

1028Claude Code는 개발자에게 승인 대화 상자를 표시하지 않고 이 변수를 적용합니다. 이 변수는 `[1m]`으로 끝나는 모델 ID를 포함한 모든 모델에 적용됩니다.1033Claude Code는 이 변수를 개발자에게 승인 대화상자를 표시하지 않고 적용합니다. 이 변수는 `[1m]`으로 끝나는 모델 ID를 포함한 모든 모델에 적용됩니다.

1029 1034 

1030대신 1M 컨텍스트를 끄려면 같은 `env` 블록에 [`CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"`](https://code.claude.com/docs/ko/model-config#extended-context)을 설정하십시오. 그러면 Claude Code는 모든 모델을 200K 윈도우로 취급합니다. 대화형 세션에서는 이 변수가 적용되기 전에 각 개발자가 [승인 대화 상자](#what-goes-in-cli)에서 이를 승인합니다.1035대신 1M 컨텍스트를 끄려면 같은 `env` 블록에서 [`CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"`](https://code.claude.com/docs/ko/model-config#extended-context)을 설정하십시오. 그러면 Claude Code는 모든 모델을 200K 윈도우로 취급합니다. 대화형 세션에서는 이 변수가 적용되기 전에 각 개발자가 [승인 대화상자](#what-goes-in-cli)에서 승인해야 합니다.

1031 1036 

1032#### 1시간 프롬프트 캐시1037#### 1시간 프롬프트 캐시

1033 1038 

1034기본값인 5분 대신 1시간 [프롬프트 캐시 TTL](https://code.claude.com/docs/ko/prompt-caching.md#cache-lifetime)을 요청하려면 정책의 기존 [`code`, `cli` 또는 `settings` 블록](#choose-cli-or-code)에 다음 키를 추가하고 게이트웨이를 다시 시작하십시오. 이 키에는 게이트웨이 서버와 클라이언트 모두에 Claude Code v2.1.242 이상이 필요합니다.1039기본 5분 대신 1시간 [프롬프트 캐시 TTL](https://code.claude.com/docs/ko/prompt-caching.md#cache-lifetime)을 요청하려면 정책의 기존 [`code`, `cli` 또는 `settings` 블록](#choose-cli-or-code)에 다음 키를 추가하고 게이트웨이를 다시 시작하십시오. 이 키에는 게이트웨이 서버와 클라이언트 모두에 Claude Code v2.1.242 이상이 필요합니다.

1035 1040 

1036`promptCacheTtl`은 메인 대화에 적용됩니다. `subagentPromptCacheTtl`은 선택 사항이며 서브에이전트, 워크플로, 백그라운드 요청에 적용됩니다. 이 예시는 `cli` 키를 사용하는 `match: {}` 정책에 두 키를 모두 추가합니다.1041`promptCacheTtl`은 메인 대화를 다룹니다. `subagentPromptCacheTtl`은 선택 사항이며 서브에이전트, 워크플로, 백그라운드 요청을 다룹니다. 다음 예시는 `cli` 키를 사용하는 `match: {}` 정책에 두 키를 모두 추가합니다.

1037 1042 

1038```yaml theme={null}1043```yaml theme={null}

1039managed:1044managed:


1046 1051 

1047> [!WARNING]1052> [!WARNING]

1048>1053>

1049> 업스트림이 게이트웨이가 제공하는 모든 모델에 대해 1시간 TTL을 제공하는 경우에만 이 키를 설정하십시오. 업스트림이 TTL을 거부하면 요청이 실패하며, 게이트웨이와 Claude Code 모두 5분 TTL로 재시도하지 않습니다. Amazon Bedrock의 경우 [지원되는 모델, 리전 및 한도](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models)를 확인하십시오.1054> 업스트림이 게이트웨이가 제공하는 모든 모델에 대해 1시간 TTL을 지원하는 경우에만 이 키를 설정하십시오. 업스트림이 TTL을 거부하면 요청이 실패하며, 게이트웨이와 Claude Code 모두 5분 TTL로 재시도하지 않습니다. Amazon Bedrock의 경우 [지원되는 모델, 리전 및 제한](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models)을 확인하십시오.

1050 1055 

1051`promptCacheTtl`을 확인하려면 정책에 매칭되는 사용자로 게이트웨이에 로그인하고 [캐시 쓰기에 사용된 TTL을 확인](https://code.claude.com/docs/ko/prompt-caching.md#choose-the-ttl-yourself)하십시오. 게이트웨이가 제공하는 각 모델에 대해 확인을 반복하려면 `--model`을 전달하십시오.1056`promptCacheTtl`을 확인하려면 정책과 매칭되는 사용자로 게이트웨이에 로그인하여 [캐시 쓰기에 사용된 TTL을 확인](https://code.claude.com/docs/ko/prompt-caching.md#choose-the-ttl-yourself)하십시오. 게이트웨이가 제공하는 각 모델에 대해 확인을 반복하려면 `--model`을 전달하십시오.

1052 1057 

10531시간 캐시 쓰기는 5분 쓰기보다 [비용이 더 듭니다](https://code.claude.com/docs/ko/prompt-caching.md#cache-lifetime). [지출 한도](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md#how-requests-are-priced)가 이 더 높은 요금을 집계하려면 게이트웨이 서버에 v2.1.286 이상이 필요합니다.10581시간 캐시 쓰기는 5분 쓰기보다 [비용이 더 높습니다](https://code.claude.com/docs/ko/prompt-caching.md#cache-lifetime). [지출 한도](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md#how-requests-are-priced)가 이 더 높은 요금을 계산하려면 게이트웨이 서버에 v2.1.286 이상이 필요합니다.

1054 1059 

1055#### 정책의 MCP 서버1060#### 정책의 MCP 서버

1056 1061 

1057정책에 매칭되는 Claude Code 클라이언트에 MCP 서버를 제공하려면 해당 정책의 `cli` 블록에 [`managedMcpServers`](https://code.claude.com/docs/ko/managed-mcp#provide-servers-through-managed-settings)를 설정하십시오. 게이트웨이 서버와 클라이언트 모두에 Claude Code v2.1.259 이상이 필요합니다.1062정책과 매칭되는 Claude Code 클라이언트에 MCP 서버를 제공하려면 해당 정책의 `cli` 블록에서 [`managedMcpServers`](https://code.claude.com/docs/ko/managed-mcp#provide-servers-through-managed-settings)를 설정하십시오. 게이트웨이 서버와 클라이언트 모두에 Claude Code v2.1.259 이상이 필요합니다.

1058 1063 

1059게이트웨이는 부팅 시 [Claude Code가 클라이언트에서 적용하는 것과 동일한 규칙](https://code.claude.com/docs/ko/managed-mcp.md#what-an-entry-can-contain)으로 각 항목을 검사하며, 항목이 검사에 실패하면 시작을 거부하고 해당 항목을 명시합니다.1064게이트웨이는 부팅 시 [Claude Code가 클라이언트에서 적용하는 것과 동일한 규칙](https://code.claude.com/docs/ko/managed-mcp.md#what-an-entry-can-contain)으로 각 항목을 검사하며, 항목이 검사에 실패하면 시작을 거부하고 해당 항목을 명시합니다.

1060 1065 

1061`gateway.yaml`에 `${VAR}` 참조를 작성하면, 게이트웨이는 항목 검사를 실행하기 전에 부팅 시 [시크릿 확장](#secret-expansion)을 통해 자신의 환경에서 이를 해석하므로, 매칭되는 모든 클라이언트가 리터럴 값을 받아 읽을 수 있습니다. [제공되는 서버의 헤더 지침](https://code.claude.com/docs/ko/managed-mcp.md#provide-servers-through-managed-settings)은 확장된 값에 적용됩니다.1066`gateway.yaml`에 `${VAR}` 참조를 작성하면, 게이트웨이는 항목 검사를 실행하기 전에 부팅 시 [시크릿 확장](#secret-expansion)을 통해 자신의 환경에서 이를 해석하므로, 매칭되는 모든 클라이언트가 리터럴 값을 받고 읽을 수 있습니다. [제공되는 서버에 대한 헤더 지침](https://code.claude.com/docs/ko/managed-mcp.md#provide-servers-through-managed-settings)은 확장된 값에 적용됩니다.

1062 1067 

1063게이트웨이는 `cli` 블록에서 `.mcp.json` 표기인 `mcpServers`를 거부하며, 부팅 오류에서 사용할 키로 `managedMcpServers`를 안내합니다. v2.1.259 이전에는 게이트웨이가 `cli` 블록의 모든 MCP 서버 정의를 거부했습니다.1068게이트웨이는 `cli` 블록에서 `.mcp.json` 표기인 `mcpServers`를 거부하며, 부팅 오류에서 사용할 키로 `managedMcpServers`를 명시합니다. v2.1.259 이전에는 게이트웨이가 `cli` 블록의 모든 MCP 서버 정의를 거부했습니다.

1064 1069 

1065#### Claude Desktop 오버레이1070#### Claude Desktop 오버레이

1066 1071 

1067조직에서 [Claude Desktop](https://code.claude.com/docs/ko/desktop.md)도 배포하는 경우 동일한 게이트웨이가 두 클라이언트를 모두 제공합니다. Claude Desktop의 [관리형 구성](https://claude.com/docs/third-party/claude-desktop/configuration)에서 `bootstrapUrl`을 `<listen.public_url>/user/bootstrap`으로 지정하십시오. Claude Desktop은 해당 URL에서 OAuth 발급자를 도출하고, 이 게이트웨이를 대상으로 동일한 디바이스 코드 로그인을 실행하며, 응답에서 구성을 가져옵니다.1072조직에서 [Claude Desktop](https://code.claude.com/docs/ko/desktop.md)도 배포하는 경우, 동일한 게이트웨이가 두 클라이언트를 모두 지원합니다. Claude Desktop의 [관리형 구성](https://claude.com/docs/third-party/claude-desktop/configuration)에서 `bootstrapUrl`을 `<listen.public_url>/user/bootstrap`으로 지정하십시오. Claude Desktop은 이 URL에서 OAuth 발급자를 도출하고, 이 게이트웨이를 대상으로 동일한 디바이스 코드 로그인을 실행하며, 응답에서 구성을 가져옵니다.

1068 1073 

1069> [!NOTE]1074> [!NOTE]

1070>1075>

1071> 게이트웨이 서버에 Claude Code v2.1.203 이상이 필요하며, 명시적인 옵트인이 필요합니다. 사용자에게 매칭되는 정책에 `desktop` 키가 없으면 `/user/bootstrap`은 404를 반환합니다. 빈 `desktop: {}`로도 정책을 옵트인할 수 있으며, `match: {}` 기본 레이어의 `desktop` 키는 이를 상속하는 모든 정책을 옵트인합니다. 감사 로그는 각 요청을 `desktop_bootstrap.serve` 또는 `desktop_bootstrap.denied`로 기록합니다.1076> 게이트웨이 서버에 Claude Code v2.1.203 이상과 명시적인 옵트인이 필요합니다. 사용자와 매칭되는 정책에 `desktop` 키가 없으면 `/user/bootstrap`은 404를 반환합니다. 빈 `desktop: {}`로 정책을 옵트인할 수 있으며, `match: {}` 기본 계층의 `desktop` 키는 이를 상속하는 모든 정책을 옵트인합니다. 감사 로그는 각 요청을 `desktop_bootstrap.serve` 또는 `desktop_bootstrap.denied`로 기록합니다.

1072 1077 

1073Claude Desktop을 배포하지 않는 경우 정책에서 `desktop`을 완전히 제외하십시오. 그러면 게이트웨이는 모든 사용자에 대해 `/user/bootstrap`에서 404를 반환합니다.1078Claude Desktop을 배포하지 않는 경우 정책에서 `desktop`을 완전히 제외하십시오. 그러면 게이트웨이는 모든 사용자에 대해 `/user/bootstrap`에서 404를 반환합니다.

1074 1079 


1076 1081 

1077게이트웨이는 부트스트랩 응답의 상당 부분을 매칭된 정책의 `cli` 또는 `code` 블록과 최상위 게이트웨이 구성에서 도출합니다.1082게이트웨이는 부트스트랩 응답의 상당 부분을 매칭된 정책의 `cli` 또는 `code` 블록과 최상위 게이트웨이 구성에서 도출합니다.

1078 1083 

1079* 모델 목록: `availableModels`에서 도출합니다. 이 목록에서는 정책이 [`deniedModels` 또는 `availableModelsMatch: exact`](#what-goes-in-cli)로 차단한 모델이 제외됩니다. 이 필터에는 게이트웨이 서버에 Claude Code v2.1.299 이상이 필요합니다. 각 모델의 1M 컨텍스트 옵션은 [Claude Desktop의 확장 컨텍스트](#extended-context-in-claude-desktop)에서 다룹니다1084* 모델 목록: `availableModels`에서 도출합니다. 목록에서는 정책이 [`deniedModels` 또는 `availableModelsMatch: exact`](#what-goes-in-cli)로 차단하는 모델이 제외됩니다. 이 필터에는 게이트웨이 서버에 Claude Code v2.1.299 이상이 필요합니다. 각 모델의 1M 컨텍스트 옵션은 [Claude Desktop의 확장 컨텍스트](#extended-context-in-claude-desktop)에서 다룹니다

1080* 비활성화된 도구: 도구 이름만 있는 `permissions.deny` 항목에서 도출합니다. 정책의 `desktop` 블록에 `disabledBuiltinTools`를 설정하면 게이트웨이는 해당 값과 도출된 목록의 합집합을 제공하므로, 이 방법으로 더 많은 도구를 비활성화할 수는 있지만 `permissions.deny`로 비활성화한 도구를 다시 활성화할 수는 없습니다1085* 비활성화된 도구: 도구 이름만 있는 `permissions.deny` 항목에서 도출합니다. 정책의 `desktop` 블록에서 `disabledBuiltinTools`를 설정하면 게이트웨이는 설정한 값과 도출된 목록의 합집합을 제공하므로, 이 방식으로 더 많은 도구를 비활성화할 수는 있지만 `permissions.deny`로 비활성화한 도구를 다시 활성화할 수는 없습니다

1081* 이그레스 허용 목록: `sandbox.network.allowedDomains`에서 도출합니다. 정책의 `desktop` 블록에 `coworkEgressAllowedHosts`를 설정하면 게이트웨이는 도출된 목록 대신 해당 값을 사용합니다. 게이트웨이가 제공하는 허용 목록에 `*`가 포함되어 있고 게이트웨이가 Claude Desktop의 [`allowedWorkspaceFolders`](https://claude.com/docs/third-party/claude-desktop/code#applied-as-managed-policy)도 제공하지 않으면, Claude Desktop은 Code 탭에서 [Bash 샌드박스](https://code.claude.com/docs/ko/sandboxing.md)를 켜지 않습니다1086* 이그레스 허용 목록: `sandbox.network.allowedDomains`에서 도출합니다. 정책의 `desktop` 블록에서 `coworkEgressAllowedHosts`를 설정하면 게이트웨이는 도출된 목록 대신 해당 값을 사용합니다. 게이트웨이가 제공하는 허용 목록에 `*`가 포함되어 있고 게이트웨이가 Claude Desktop의 [`allowedWorkspaceFolders`](https://claude.com/docs/third-party/claude-desktop/code#applied-as-managed-policy)도 함께 제공하지 않으면, Claude Desktop은 Code 탭에서 [Bash 샌드박스](https://code.claude.com/docs/ko/sandboxing.md)를 켜지 않습니다

1082* 게이트웨이 자체를 가리키는 OTLP 엔드포인트와 로그인한 사용자의 ID 속성. 게이트웨이는 해당 엔드포인트에서 받은 내보내기 데이터를 `forward_to` 대상으로 중계합니다. [`telemetry.forward_to`](#telemetry)와 `listen.public_url`을 모두 설정한 경우 엔드포인트와 속성이 포함됩니다.1087* 게이트웨이 자신을 가리키는 OTLP 엔드포인트와 로그인한 사용자의 ID 속성. 게이트웨이는 해당 엔드포인트에서 받은 내보내기 데이터를 `forward_to` 대상으로 중계합니다. [`telemetry.forward_to`](#telemetry)와 `listen.public_url`을 모두 설정하면 엔드포인트와 속성이 포함됩니다.

1083 1088 

1084 Claude Desktop은 모든 신호를 하나의 인코딩으로 내보냅니다. 기본은 `http/protobuf`이며, 정책의 `env`에서 `OTEL_EXPORTER_OTLP_PROTOCOL` 또는 신호별 변형 중 하나를 `http/json`으로 설정하면 `http/json`입니다. 게이트웨이 서버의 Claude Code v2.1.261 이전에는 응답이 항상 `http/json`으로 설정되었으므로, protobuf만 허용하는 컬렉터는 Claude Desktop의 내보내기를 거부했습니다1089 Claude Desktop은 모든 신호를 하나의 인코딩으로 내보냅니다. 기본은 `http/protobuf`이며, 정책의 `env`에서 `OTEL_EXPORTER_OTLP_PROTOCOL` 또는 신호별 변형 중 하나를 `http/json`으로 설정하면 `http/json`을 사용합니다. 게이트웨이 서버의 Claude Code v2.1.261 이전에는 응답이 항상 `http/json`을 설정했으므로, protobuf만 받는 수집기는 Claude Desktop의 내보내기를 거부했습니다

1085 1090 

1086정책의 `desktop` 블록에서 `disabledBuiltinTools`, `coworkEgressAllowedHosts` 또는 Claude Desktop 자체의 `managedMcpServers` 설정을 지정하려면 게이트웨이 서버에 Claude Code v2.1.232 이상이 필요합니다. Claude Desktop의 `managedMcpServers`는 객체가 아닌 배열 값을 받습니다.1091정책의 `desktop` 블록에서 `disabledBuiltinTools`, `coworkEgressAllowedHosts` 또는 Claude Desktop 자체의 `managedMcpServers` 설정을 지정하려면 게이트웨이 서버에 Claude Code v2.1.232 이상이 필요합니다. Claude Desktop의 `managedMcpServers`는 객체가 아닌 배열 값을 받습니다.

1087 1092 

1088게이트웨이는 `hooks`나 `Bash(npm *)` 같은 범위 지정 권한 규칙처럼 Claude Desktop에 대응 항목이 없는 키를 부트스트랩 응답에서 생략합니다.1093게이트웨이는 `hooks` 및 `Bash(npm *)` 같은 범위 지정 권한 규칙처럼 Claude Desktop에 대응하는 항목이 없는 키를 부트스트랩 응답에서 생략합니다.

1089 1094 

1090##### Code 탭에 `code` 설정 적용1095##### Code 탭에 `code` 설정 적용

1091 1096 


1094* 정책에 `desktop` 키도 있어야 하며, 빈 `desktop: {}`도 해당됩니다1099* 정책에 `desktop` 키도 있어야 하며, 빈 `desktop: {}`도 해당됩니다

1095* Claude Desktop이 버전 2.9939.2 이상이어야 합니다1100* Claude Desktop이 버전 2.9939.2 이상이어야 합니다

1096* 머신의 Claude Code 관리형 설정이 [이 게이트웨이를 지정](#client-side-managed-settings)해야 합니다1101* 머신의 Claude Code 관리형 설정이 [이 게이트웨이를 지정](#client-side-managed-settings)해야 합니다

1097* 해당 머신이 사설 네트워크에서 HTTPS로 게이트웨이에 접근해야 합니다1102* 해당 머신이 사설 네트워크에서 HTTPS로 게이트웨이에 연결되어야 합니다

1098 1103 

1099마지막 두 조건은 세션에서 Claude Code를 실행하는 머신에 적용됩니다. 로컬 세션의 경우 사용자 본인의 컴퓨터이고, SSH를 통한 Code 탭 세션의 경우 원격 호스트입니다.1104마지막 두 조건은 세션에서 Claude Code를 실행하는 머신에 적용됩니다. 로컬 세션의 경우 사용자 자신의 컴퓨터이고, SSH를 통한 Code 탭 세션의 경우 원격 호스트입니다.

1100 1105 

1101`cli`를 `code`로 이름을 바꾸기 전에 해당 머신에 [클라이언트 측 관리형 설정](#client-side-managed-settings)을 배포하십시오. 처음 두 조건은 충족되지만 마지막 두 조건 중 하나가 충족되지 않으면, 정책에 매칭되는 사용자는 다음 결과 중 하나를 얻습니다.1106`cli`를 `code`로 이름을 바꾸기 전에 해당 머신에 [클라이언트 측 관리형 설정](#client-side-managed-settings)을 배포하십시오. 처음 두 조건이 충족되고 마지막 두 조건 중 하나가 충족되지 않으면, 정책과 매칭되는 사용자는 다음 결과 중 하나를 얻습니다.

1102 1107 

1103* **HTTPS 사용, Claude Desktop에 Claude Code v2.1.296 이상이 번들된 경우**: Code 탭이 시작되지 않으며, 사용자의 프롬프트에 대한 응답에 그 이유가 표시됩니다1108* **HTTPS 연결, Claude Desktop이 Claude Code v2.1.296 이상을 번들하는 경우**: Code 탭이 시작되지 않으며, 사용자의 프롬프트에 대한 응답에서 그 이유를 알려 줍니다

1104* **HTTPS 사용, Claude Desktop에 이전 버전이 번들된 경우**: Code 탭이 `code` 설정 없이 시작되며, 세션에서 이를 알리는 내용은 없습니다1109* **HTTPS 연결, Claude Desktop이 이전 버전을 번들하는 경우**: Code 탭이 `code` 설정 없이 시작되며, 세션에서 이를 알리지 않습니다

1105* **일반 HTTP 사용**: Claude Desktop에 번들된 버전과 관계없이 Code 탭이 `code` 설정 없이 시작됩니다1110* **일반 HTTP 연결**: Claude Desktop이 번들하는 버전과 관계없이 Code 탭이 `code` 설정 없이 시작됩니다

1106 1111 

1107게이트웨이 앞의 프록시가 `/managed/settings`에 자체 404로 응답하는 경우에도, 네 가지 조건을 모두 충족하는 머신을 포함하여 Code 탭이 `code` 설정 없이 시작됩니다.1112게이트웨이 앞단의 프록시가 `/managed/settings`에 자체 404로 응답하는 경우에도, 네 가지 조건을 모두 충족하는 머신을 포함하여 Code 탭이 `code` 설정 없이 시작됩니다.

1108 1113 

1109`desktop` 키가 있는 정책에서 설정이 담긴 `code` 블록은 Cowork, Chat, Code 탭의 WebSearch 도구를 끕니다. MCP 서버에 대해서는 [`managedMcpServers`가 적용되는 위치](https://code.claude.com/docs/ko/managed-mcp#where-managedmcpservers-applies)를 참조하십시오.1114`desktop` 키가 있는 정책에서 설정을 포함하는 `code` 블록은 Cowork, Chat, Code 탭에서 WebSearch 도구를 끕니다. MCP 서버에 대해서는 [`managedMcpServers`가 적용되는 위치](https://code.claude.com/docs/ko/managed-mcp#where-managedmcpservers-applies)를 참조하십시오.

1110 1115 

1111##### Claude Desktop 설정 직접 지정1116##### Claude Desktop 설정 직접 지정

1112 1117 

1113Claude Desktop 설정을 직접 지정하려면 `cli` 옆에 선택적 `desktop` 블록을 추가하십시오. Claude Desktop의 [관리형 구성 레퍼런스](https://claude.com/docs/third-party/claude-desktop/configuration)에 있는 설정을 평면 키 이름으로 작성하십시오. `bootstrapUrl`처럼 Claude Desktop이 MDM이나 로컬 파일에서만 읽는 키는 제외하십시오. 게이트웨이는 부팅 시 이를 거부합니다.1118Claude Desktop 설정을 직접 지정하려면 `cli`와 함께 선택적 `desktop` 블록을 추가하십시오. Claude Desktop의 [관리형 구성 참조](https://claude.com/docs/third-party/claude-desktop/configuration)에 있는 설정을 평면 키 이름으로 작성하십시오. `bootstrapUrl`처럼 Claude Desktop이 MDM이나 로컬 파일에서만 읽는 키는 제외하십시오. 게이트웨이는 부팅 시 이를 거부합니다.

1114 1119 

1115이 예시는 `eng-contractors` 그룹에 대해 `cli` 설정과 함께 세 가지 Claude Desktop 키를 설정합니다.1120다음 예시는 `eng-contractors` 그룹에 대해 `cli` 설정과 함께 세 가지 Claude Desktop 키를 설정합니다.

1116 1121 

1117```yaml theme={null}1122```yaml theme={null}

1118managed:1123managed:


1127 banner: { text: "Contractor build: internal use only" }1132 banner: { text: "Contractor build: internal use only" }

1128```1133```

1129 1134 

1130모든 키는 선택 사항이며, 생략한 키에는 Claude Desktop이 자체 기본값을 적용합니다.1135모든 키는 선택 사항이며, 생략한 키에는 Claude Desktop 자체 기본값이 적용됩니다.

1131 1136 

1132##### 게이트웨이가 부팅 시 거부하는 항목1137##### 게이트웨이가 부팅 시 거부하는 항목

1133 1138 

1134게이트웨이는 부팅 시 각 `desktop` 블록을 Claude Desktop 자체가 사용하는 구성 스키마에 대해 검증하므로, 실수가 연결된 모든 데스크톱에 도달하는 대신 게이트웨이 시작 시 해당 키를 명시하는 오류로 드러납니다. 블록에 다음이 포함되면 게이트웨이는 부팅에 실패합니다.1139게이트웨이는 부팅 시 Claude Desktop 자체가 사용하는 구성 스키마로 각 `desktop` 블록을 검증하므로, 실수가 연결된 모든 데스크톱에 도달하는 대신 게이트웨이 시작 시 해당 키를 명시하는 오류로 드러납니다. 블록에 다음이 포함되면 게이트웨이는 부팅에 실패합니다.

1135 1140 

1136* 알 수 없는 키1141* 알 수 없는 키

1137* 빈 값이나 중첩 항목 내부의 철자가 틀린 하위 키처럼 Claude Desktop이 거부하거나 조용히 삭제할 값을 가진 인식된 키. v2.1.260 이전에는 게이트웨이가 `managedMcpServers` 또는 `orgPluginSettings` 항목의 중첩 객체 내부에 있는 철자가 틀린 필드를 부팅 실패 대신 조용히 삭제했습니다.1142* 빈 값이나 중첩 항목 안의 철자가 틀린 하위 키처럼 Claude Desktop이 거부하거나 조용히 무시할 값을 가진 인식된 키. v2.1.260 이전에는 게이트웨이가 `managedMcpServers` 또는 `orgPluginSettings` 항목의 중첩 객체 안에 있는 철자가 틀린 필드를 부팅 실패 대신 조용히 무시했습니다.

1138* 게이트웨이가 직접 계산하는 키: 추론 연결, 모델 목록, OTLP 릴레이. 이들은 [`upstreams`](#upstreams), [`models`](#models), [`telemetry`](#telemetry) 섹션의 `forward_to`를 통해 구성하십시오.1143* 게이트웨이가 직접 계산하는 키: 추론 연결, 모델 목록, OTLP 중계. 이는 [`upstreams`](#upstreams), [`models`](#models), [`telemetry`](#telemetry) 섹션의 `forward_to`를 통해 구성하십시오.

1139* 현재 키의 레거시 별칭. 부팅 오류에서 게이트웨이는 작성해야 할 정식 키를 안내합니다.1144* 현재 키의 레거시 별칭. 부팅 오류에서 게이트웨이는 작성해야 할 표준 키를 명시합니다.

1140 1145 

1141`transport`가 없는 `managedMcpServers` 항목처럼 deprecated 값이나 항목 형태를 사용하면, 게이트웨이는 시작하되 대체 항목을 안내하는 경고를 로그에 기록합니다.1146`transport`가 없는 `managedMcpServers` 항목처럼 deprecated 값이나 항목 형태를 사용하면, 게이트웨이는 시작되고 대체 항목을 명시하는 경고를 로그에 기록합니다.

1142 1147 

1143v2.1.232 이전에는 게이트웨이가 `chatTabEnabled` 및 `disableAutoUpdates` 같은 11개의 기능 게이트 키로 이루어진 고정 목록만 허용하고 그 밖의 모든 키를 부팅 시 거부했습니다. v2.1.227 이전에는 게이트웨이가 부팅 시 `chatTabEnabled`와 `chatAdvancedFileAnalysisEnabled`도 거부했습니다.1148v2.1.232 이전에는 게이트웨이가 `chatTabEnabled` 및 `disableAutoUpdates` 같은 11개의 고정된 기능 게이트 키 목록만 허용하고 다른 모든 키를 부팅 시 거부했습니다. v2.1.227 이전에는 게이트웨이가 `chatTabEnabled`와 `chatAdvancedFileAnalysisEnabled`도 부팅 시 거부했습니다.

1144 1149 

1145##### 이후 버전의 게이트웨이 또는 Claude Desktop이 필요한 키1150##### 이후 버전의 게이트웨이 또는 Claude Desktop이 필요한 키

1146 1151 

1147게이트웨이는 `cli` 블록과 마찬가지로 `desktop` 블록을 설치된 버전에 번들된 스키마에 대해 검증합니다. 최신 Claude Desktop 릴리스에서 도입된 설정을 전달하려면 먼저 게이트웨이를 업그레이드하십시오. 예를 들어 `userPluginMarketplacesEnabled`와 `userPluginUploadsEnabled`에는 게이트웨이 서버에 Claude Code v2.1.260 이상, 구성원 머신에 Claude Desktop 1.37937.0 이상이 필요합니다.1152게이트웨이는 `cli` 블록과 마찬가지로, 설치된 버전에 번들된 스키마로 `desktop` 블록을 검증합니다. 최신 Claude Desktop 릴리스에서 도입된 설정을 전달하려면 먼저 게이트웨이를 업그레이드하십시오. 예를 들어 `userPluginMarketplacesEnabled`와 `userPluginUploadsEnabled`에는 게이트웨이 서버에 Claude Code v2.1.260 이상, 구성원 머신에 Claude Desktop 1.37937.0 이상이 필요합니다.

1153 

1154`blockReadsOutsideWorkingDirectories`, `disableBypassPermissionsMode`, `configRecheckIntervalMinutes`, `sshClientPath`에는 게이트웨이 서버에 Claude Code v2.1.281 이상이 필요합니다. `microsoftAuthBroker`의 `required` 값과 Microsoft 365 `managedMcpServers` 항목의 `continuousAccessEvaluation` 필드도 마찬가지입니다. `required` 값보다 이전의 Claude Desktop 릴리스는 이를 `disabled`로 읽으므로, 모든 구성원의 Claude Desktop이 이를 지원한 후에만 `required`를 설정하십시오. Claude Desktop의 [관리형 구성 참조](https://claude.com/docs/third-party/claude-desktop/configuration)에 각 키를 처음 읽는 릴리스가 나열되어 있습니다.

1148 1155 

1149`blockReadsOutsideWorkingDirectories`, `disableBypassPermissionsMode`, `configRecheckIntervalMinutes`, `sshClientPath`에는 게이트웨이 서버에 Claude Code v2.1.281 이상이 필요합니다. `microsoftAuthBroker`의 `required` 값과 Microsoft 365 `managedMcpServers` 항목의 `continuousAccessEvaluation` 필드도 마찬가지입니다. `required` 값보다 이전의 Claude Desktop 릴리스는 이를 `disabled`로 읽으므로, 모든 구성원의 Claude Desktop이 이를 지원한 후에만 `required`를 설정하십시오. Claude Desktop의 [관리형 구성 레퍼런스](https://claude.com/docs/third-party/claude-desktop/configuration)에 각 키를 처음 읽는 릴리스가 나열되어 있습니다.1156> [!NOTE]

1157>

1158> [`sshTransport`](https://claude.com/docs/third-party/claude-desktop/configuration#sshtransport)에는 게이트웨이 서버에 Claude Code v2.1.293 이상이 필요합니다.

1150 1159 

1151정책의 `desktop` 블록에 `orgPluginSettings`를 설정하면, 게이트웨이는 Claude Desktop 1.15200.0 이상이 읽는 배열 형식으로 이를 제공합니다. 이전 데스크톱은 배열을 무시하고 플러그인 도구 정책을 적용하지 않으므로, 이에 의존하기 전에 구성원을 1.15200.0 이상으로 업데이트하십시오.1160정책의 `desktop` 블록에서 `orgPluginSettings`를 설정하면, 게이트웨이는 Claude Desktop 1.15200.0 이상이 읽는 배열 형식으로 이를 제공합니다. 이전 데스크톱은 배열을 무시하고 플러그인 도구 정책을 적용하지 않으므로, 이에 의존하기 전에 구성원을 1.15200.0 이상으로 업데이트하십시오.

1152 1161 

1153##### 역할 정책이 기반 `desktop` 블록을 상속하는 방식1162##### 역할 정책이 기본 `desktop` 블록을 상속하는 방식

1154 1163 

1155게이트웨이는 정책의 `cli` 블록을 기반에서 채우는 것과 같은 방식으로, 정책의 `desktop` 블록이 설정하지 않은 키를 `match: {}` 캐치올의 `desktop` 블록에서 채웁니다. 기반과 역할 정책 모두에 `disabledBuiltinTools` 또는 `builtinToolPolicy`를 설정하면, 게이트웨이는 기반의 제한을 유지합니다.1164게이트웨이는 정책의 `cli` 블록을 기본 정책에서 채우는 것과 같은 방식으로, 정책의 `desktop` 블록이 설정하지 않은 키를 `match: {}` 캐치올의 `desktop` 블록에서 채웁니다. 기본 정책과 역할 정책 모두에서 `disabledBuiltinTools` 또는 `builtinToolPolicy`를 설정하면 게이트웨이는 기본 정책의 제한을 유지합니다.

1156 1165 

1157* `disabledBuiltinTools`: 게이트웨이는 기반 목록과 정책 목록의 합집합을 사용합니다1166* `disabledBuiltinTools`: 게이트웨이는 기본 정책의 목록과 정책의 목록의 합집합을 사용합니다

1158* `builtinToolPolicy`: 기반에서 도구를 `allow` 이외의 값으로 설정하면, 역할 정책에서 같은 도구를 `allow`로 설정하더라도 게이트웨이는 해당 값을 유지합니다1167* `builtinToolPolicy`: 기본 정책에서 도구를 `allow` 이외의 값으로 설정하면, 역할 정책에서 같은 도구에 `allow`를 설정하더라도 게이트웨이는 그 값을 유지합니다

1159 1168 

1160그 밖의 모든 키는 역할 정책에서 설정하면 게이트웨이가 역할 정책의 값을 사용합니다. 게이트웨이는 배열이나 `banner` 같은 중첩 객체를 통째로 대체하므로, 역할 정책에서 `banner.text`를 설정하면 게이트웨이는 기반의 `banner.backgroundColor`를 삭제합니다.1169다른 모든 키의 경우, 역할 정책에서 설정하면 게이트웨이는 역할 정책의 값을 사용합니다. 게이트웨이는 배열이나 `banner` 같은 중첩 객체를 통째로 대체하므로, 역할 정책에서 `banner.text`를 설정하면 게이트웨이는 기본 정책의 `banner.backgroundColor`를 제거합니다.

1161 1170 

1162##### 정책 변경이 Claude Desktop에 도달하는 시점1171##### 정책 변경이 Claude Desktop에 반영되는 시점

1163 1172 

1164변경된 정책으로 게이트웨이를 재배포한 후, Claude Desktop은 대부분의 설정을 다음 시작 시에만 적용합니다.1173변경된 정책으로 게이트웨이를 재배포한 후, Claude Desktop은 대부분의 설정을 다음 시작 시에만 적용합니다.

1165 1174 

1166* **닫혀 있는 경우**: Claude Desktop은 시작할 때 부트스트랩 응답을 가져오므로, 변경 사항은 다음 시작부터 적용됩니다1175* **닫혀 있는 경우**: Claude Desktop은 시작할 때 부트스트랩 응답을 가져오므로, 변경 사항은 다음 시작부터 적용됩니다

1167* **열려 있는 경우**: Claude Desktop은 기본적으로 10분마다 변경된 응답을 확인하며, 일부 설정은 재시작 없이 적용합니다. [`skillCreationEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#skillcreationenabled) 같은 나머지 설정의 경우, 사용자는 사이드바에서 **Relaunch Claude Desktop** 카드를 보게 되며 앱을 재시작할 때까지 이전 구성을 유지합니다. 기본적으로 24시간 후 Claude Desktop은 재시작 대화 상자를 표시하고, 2분간 활동이 없으면 자동으로 재시작합니다1176* **열려 있는 경우**: Claude Desktop은 기본적으로 10분마다 응답 변경 여부를 확인하며, 일부 설정은 재시작 없이 적용합니다. [`skillCreationEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#skillcreationenabled) 같은 나머지 설정의 경우, 사용자는 사이드바에서 **Relaunch Claude Desktop** 카드를 보게 되며 앱을 재시작할 때까지 이전 구성을 유지합니다. 기본적으로 24시간이 지나면 Claude Desktop은 재시작 대화상자를 표시하고 2분간 활동이 없으면 자동으로 재시작합니다

1168 1177 

116924시간을 단축하려면 정책의 `desktop` 블록에 [`relaunchEnforcementHours`](https://claude.com/docs/third-party/claude-desktop/configuration#relaunchenforcementhours)를 설정하십시오. 게이트웨이 서버에 Claude Code v2.1.260 이상, 구성원 머신에 Claude Desktop 1.40609.0 이상이 필요합니다. `0`으로 설정하면 Claude Desktop이 변경 사항을 발견하는 즉시 대화 상자가 나타납니다.117824시간을 단축하려면 정책의 `desktop` 블록에서 [`relaunchEnforcementHours`](https://claude.com/docs/third-party/claude-desktop/configuration#relaunchenforcementhours)를 설정하십시오. 게이트웨이 서버에 Claude Code v2.1.260 이상, 구성원 머신에 Claude Desktop 1.40609.0 이상이 필요합니다. `0`으로 설정하면 Claude Desktop이 변경 사항을 발견하는 즉시 대화상자가 나타납니다.

1170 1179 

1171#### Claude Desktop의 확장 컨텍스트1180#### Claude Desktop의 확장 컨텍스트

1172 1181 

1173게이트웨이에서 [Claude Desktop](#claude-desktop-overlay)을 제공하는 경우, 모델 선택기는 1M 컨텍스트 윈도우로 실행할 수 있는 나열된 각 모델에 대해 1M 컨텍스트 옵션을 제공합니다. 여기에는 Claude Opus 4.6 이상, Claude Sonnet 4.6 이상, Fable 모델이 포함됩니다. 이 옵션은 [확장 컨텍스트](https://code.claude.com/docs/ko/model-config.md#extended-context)에서 설명하는 모델의 `[1m]` 변형입니다. 게이트웨이 서버에 Claude Code v2.1.284 이상이 필요합니다.1182게이트웨이에서 [Claude Desktop](#claude-desktop-overlay)을 제공하는 경우, 모델 선택기는 1M 컨텍스트 윈도우로 실행할 수 있는 각 나열 모델에 대해 1M 컨텍스트 옵션을 제공합니다. 여기에는 Claude Opus 4.6 이상, Claude Sonnet 4.6 이상, Fable 모델이 포함됩니다. 이 옵션은 [확장 컨텍스트](https://code.claude.com/docs/ko/model-config.md#extended-context)에서 설명하는 모델의 `[1m]` 변형입니다. 게이트웨이 서버에 Claude Code v2.1.284 이상이 필요합니다.

1174 1183 

1175다음의 경우 [`models`](#models) 항목에는 1M 옵션이 제공되지 않습니다.1184[`models`](#models) 항목은 다음과 같은 경우 1M 옵션을 받지 않습니다.

1176 1185 

1177* 항목을 처리할 수 있는 업스트림이 이를 1M을 지원하지 않는 모델에 매핑하는 경우(게이트웨이가 장애 조치 시에만 접근하는 업스트림 포함)1186* 해당 항목을 처리할 수 있는 업스트림이 1M을 지원하지 않는 모델에 매핑하는 경우. 게이트웨이가 장애 조치 시에만 연결하는 업스트림도 포함됩니다

1178* `id`와 `upstream_model` 값 중 어느 것도 Claude 모델을 지정하지 않는 경우(예: 애플리케이션 추론 프로필 ARN으로 라우팅되는 사용자 지정 별칭)1187* `id`와 `upstream_model` 값 중 어느 것도 Claude 모델을 지정하지 않는 경우. 예를 들어 애플리케이션 추론 프로필 ARN으로 라우팅되는 사용자 지정 별칭이 해당됩니다

1179 1188 

1180선택기에 표시되는 옵션을 변경하려면 다음 중 하나를 사용하십시오.1189선택기가 제공하는 항목을 변경하려면 다음 중 하나를 사용하십시오.

1181 1190 

1182* **사용자를 1M 옵션으로 시작**: 정책의 `desktop` 블록에 `modelPrefer1mContext: true`를 설정하십시오. 아직 모델을 선택하지 않은 사용자는 나열된 첫 번째 모델에 1M 옵션이 있으면 해당 옵션으로 시작합니다. 이미 모델을 선택한 사용자는 선택을 유지합니다.1191* **사용자를 1M 옵션으로 시작**: 정책의 `desktop` 블록에서 `modelPrefer1mContext: true`를 설정하십시오. 아직 모델을 선택하지 않은 사용자는 첫 번째 나열 모델에 1M 옵션이 있을 때 1M 옵션으로 시작합니다. 이미 모델을 선택한 사용자는 선택을 유지합니다.

1183* **수동으로 옵션 제공**: 게이트웨이 서버가 v2.1.284보다 이전 버전을 실행하거나, 항목이 Claude 모델을 지정하지 않는 경우 이 방법을 사용하십시오. `models`에 모델을 두 번 나열하되, 한 번은 일반 ID로, 한 번은 `[1m]`을 덧붙여 나열하고 둘 다 같은 `upstream_model` 맵을 사용하십시오. Claude Desktop은 이 쌍을 1M 옵션이 있는 하나의 모델로 표시합니다. 게이트웨이는 `[1m]` 항목을 검사 없이 제공하므로, 업스트림이 1M으로 제공하는 모델에 대해서만 추가하십시오.1192* **옵션을 수동으로 제공**: 게이트웨이 서버가 v2.1.284보다 오래된 버전을 실행하거나 항목이 Claude 모델을 지정하지 않는 경우 이 방법을 사용하십시오. `models`에 모델을 두 번 나열하되, 한 번은 일반 ID로, 한 번은 `[1m]`을 덧붙여 나열하고 둘 다 동일한 `upstream_model` 맵을 사용하십시오. Claude Desktop은 이 쌍을 1M 옵션이 있는 하나의 모델로 표시합니다. 게이트웨이는 `[1m]` 항목을 검사하지 않고 제공하므로, 업스트림이 1M으로 제공하는 모델에 대해서만 추가하십시오.

1184 1193 

1185이 예시는 애플리케이션 추론 프로필로 라우팅되는 사용자 지정 별칭에 대해 수동으로 옵션을 제공하고, 새 사용자를 해당 옵션으로 시작합니다.1194다음 예시는 애플리케이션 추론 프로필로 라우팅되는 사용자 지정 별칭에 대해 옵션을 수동으로 제공하고 새 사용자를 해당 옵션으로 시작합니다.

1186 1195 

1187```yaml theme={null}1196```yaml theme={null}

1188models:1197models:


1202 1211 

1203##### 1M 옵션 제거1212##### 1M 옵션 제거

1204 1213 

1205선택기에서 옵션을 제거하려면 정책의 `cli` 키 아래 `env` 블록에 `CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"`을 설정하십시오. `id`가 `[1m]`으로 끝나는 항목도 나열했다면 게이트웨이가 여전히 이를 제공하므로, 해당 항목도 삭제하십시오.1214선택기에서 옵션을 제거하려면 정책의 `cli` 키 아래 `env` 블록에서 `CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"`을 설정하십시오. `id`가 `[1m]`으로 끝나는 항목도 나열했다면 게이트웨이가 여전히 이를 제공하므로 해당 항목도 삭제하십시오.

1206 1215 

1207이 변수는 정책에 매칭되는 개발자의 터미널 세션에도 전달됩니다. 그곳에서 변경되는 내용은 [확장 컨텍스트](https://code.claude.com/docs/ko/model-config.md#extended-context)를 참조하십시오.1216이 변수는 정책과 매칭되는 개발자의 터미널 세션에도 적용됩니다. 그곳에서 무엇이 바뀌는지는 [확장 컨텍스트](https://code.claude.com/docs/ko/model-config.md#extended-context)를 참조하십시오.

1208 1217 

1209#### 다른 관리형 소스와의 우선순위1218#### 다른 관리형 소스와의 우선순위

1210 1219 

1211디바이스에 MDM으로 전달된 정책이나 로컬 `managed-settings.json`도 있는 경우, 게이트웨이가 전달한 설정이 가장 높은 순위를 가집니다. 관리형 설정 페이지의 [관리형 계층 내 우선순위](https://code.claude.com/docs/ko/managed-settings.md#precedence-within-the-managed-tier)에서 로컬 소스가 적용되는 시점을 설명하며, 샌드박스 잠금 키, `forceRemoteSettingsRefresh`, 변수별 `env` 병합처럼 어떤 소스를 선택했는지와 관계없이 [Claude Code가 모든 관리자 소스에서 읽는 키](https://code.claude.com/docs/ko/managed-settings.md#keys-read-from-every-admin-source)도 안내합니다. MDM 프로필이나 관리형 설정 파일에 구성된 [`policyHelper`](https://code.claude.com/docs/ko/settings-reference#policyhelper)는 게이트웨이가 설정을 전달하지 않을 때만 실행되며, 해당 항목에서 그 출력이 무엇을 대체하는지 설명합니다.1220디바이스에 MDM으로 전달된 정책이나 로컬 `managed-settings.json`도 있는 경우, 게이트웨이가 전달한 설정이 가장 우선합니다. 관리형 설정 페이지의 [관리형 계층 내 우선순위](https://code.claude.com/docs/ko/managed-settings.md#precedence-within-the-managed-tier)에서 로컬 소스가 적용되는 시점을 설명하며, 샌드박스 잠금 키, `forceRemoteSettingsRefresh`, 변수별 `env` 병합처럼 어떤 소스가 선택되든 관계없이 [Claude Code가 모든 관리자 소스에서 읽는 키](https://code.claude.com/docs/ko/managed-settings.md#keys-read-from-every-admin-source)도 나와 있습니다. MDM 프로필이나 관리형 설정 파일에 구성된 [`policyHelper`](https://code.claude.com/docs/ko/settings-reference#policyhelper)는 게이트웨이가 설정을 전달하지 않을 때만 실행되며, 해당 항목에서 그 출력이 무엇을 대체하는지 설명합니다.

1212 1221 

1213[Claude Desktop](https://code.claude.com/docs/ko/desktop.md) 같은 임베딩 호스트는 SDK `managedSettings` 옵션을 통해 정책을 제공할 수 있습니다. [임베딩 호스트의 상위 설정](https://code.claude.com/docs/ko/managed-settings.md#parent-settings-from-embedding-hosts)에서 Claude Code가 이를 적용하는 시점을 설명하며, [상위 설정 제한](https://code.claude.com/docs/ko/claude-apps-gateway#restrict-parent-settings)에는 `allowManaged*Only` 잠금 없이도 여전히 적용되는 허용 방향 설정이 나열되어 있습니다.1222[Claude Desktop](https://code.claude.com/docs/ko/desktop.md) 같은 임베딩 호스트는 SDK `managedSettings` 옵션을 통해 정책을 제공할 수 있습니다. [임베딩 호스트의 상위 설정](https://code.claude.com/docs/ko/managed-settings.md#parent-settings-from-embedding-hosts)에서 Claude Code가 이를 적용하는 시점을 설명하며, [상위 설정 제한](https://code.claude.com/docs/ko/claude-apps-gateway#restrict-parent-settings)에서 `allowManaged*Only` 잠금 없이도 여전히 적용되는 허용 방향 설정을 나열합니다.

1214 1223 

1215게이트웨이 정책은 비대화형 `claude -p` 실행과 Agent SDK로 생성된 세션을 포함하여 머신의 모든 Claude Code 호출에 적용됩니다. 시작 시 게이트웨이에 연결할 수 없으면, 로그인한 세션은 정책 없이 실행되는 대신 오류와 함께 종료됩니다.1224게이트웨이 정책은 비대화형 `claude -p` 실행과 Agent SDK가 생성한 세션을 포함하여 머신의 모든 Claude Code 호출에 적용됩니다. 시작 시 게이트웨이에 연결할 수 없으면 로그인한 세션은 정책 없이 실행되는 대신 오류와 함께 종료됩니다.

1216 1225 

1217### `telemetry`1226### `telemetry`

1218 1227 

1219CLI는 메트릭, 로그, 그리고 활성화된 경우 트레이스를 게이트웨이로 보내며, 게이트웨이는 이를 구성된 각 대상으로 그대로 중계합니다. 내보내기에는 HTTP 기반 OpenTelemetry Protocol(OTLP)이 사용됩니다. 릴레이를 건너뛰고 세션이 컬렉터로 직접 내보내도록 하려면 [정책에 컬렉터를 지정](#export-directly-to-your-collector)하십시오. CLI가 내보내는 메트릭과 이벤트는 [사용량 모니터링](https://code.claude.com/docs/ko/monitoring-usage.md)을 참조하십시오.1228CLI는 메트릭, 로그, 그리고 활성화된 경우 트레이스를 게이트웨이로 보내며, 게이트웨이는 이를 구성된 각 대상으로 그대로 중계합니다. 내보내기는 HTTP를 통한 OpenTelemetry Protocol(OTLP)을 사용합니다. 중계를 건너뛰고 세션이 수집기로 직접 내보내도록 하려면 [정책에서 수집기를 지정](#export-directly-to-your-collector)하십시오. CLI가 내보내는 메트릭과 이벤트는 [사용량 모니터링](https://code.claude.com/docs/ko/monitoring-usage.md)을 참조하십시오.

1220 1229 

1221`/login`으로 로그인한 세션에서 CLI는 게이트웨이가 발급한 JWT에서 읽은 인증된 사용자의 ID, 즉 `user.id`, `user.email`, `user.groups` 속성을 각 내보내기에 기록합니다. 따라서 개발자 측 구성 없이도 개발자별 비용 및 사용량 귀속이 작동합니다. 개발자가 로그인하기 전에 Claude Code가 기록하는 이벤트에는 [이 ID가 포함되지 않습니다](https://code.claude.com/docs/ko/monitoring-usage.md#standard-attributes). 개발자의 그룹 변경을 어떤 속성이 반영하는지는 [열린 세션 중 그룹 변경](#group-changes-during-an-open-session)을 참조하십시오.1230`/login`으로 로그인한 세션에서 CLI는 게이트웨이가 발급한 JWT에서 읽은 인증된 사용자의 ID, 즉 `user.id`, `user.email`, `user.groups` 속성을 각 내보내기에 기록합니다. 따라서 개발자 측 구성 없이도 개발자별 비용 및 사용량 귀속이 가능합니다. 개발자가 로그인하기 전에 Claude Code가 기록하는 이벤트는 [이 ID를 포함하지 않습니다](https://code.claude.com/docs/ko/monitoring-usage.md#standard-attributes). 개발자 그룹 변경 시 어떤 속성이 이를 따르는지 확인하려면 [열린 세션 중 그룹 변경](#group-changes-during-an-open-session)을 참조하십시오.

1222 1231 

1223게이트웨이를 통해 로그인한 [Claude Desktop](#claude-desktop-overlay) 및 Cowork 세션은 `enduser.id`와 함께 `user.email` 및 `user.groups`를 텔레메트리에 기록하므로, `user.email` 또는 `user.groups`에 대한 하나의 쿼리로 터미널, Desktop, Cowork 사용량을 모두 다룰 수 있습니다. `user.groups`는 쉼표로 구분된 IdP 그룹 목록입니다.1232게이트웨이를 통해 로그인한 [Claude Desktop](#claude-desktop-overlay) 및 Cowork 세션은 `enduser.id`와 함께 `user.email`과 `user.groups`를 텔레메트리에 기록하므로, `user.email` 또는 `user.groups`에 대한 하나의 쿼리로 터미널, Desktop, Cowork 사용량을 모두 다룰 수 있습니다. `user.groups`는 쉼표로 구분된 IdP 그룹 목록입니다.

1224 1233 

1225Desktop 및 Cowork 텔레메트리에는 ID 공급자가 사용자에게 발급하는 `sub` 클레임인 `enduser.sub`도 포함되며, 이 값은 사용자의 이메일이 변경되어도 동일하게 유지됩니다. 터미널 세션은 같은 값을 `user.id`에 기록하므로, `enduser.sub`를 터미널 `user.id`와 매칭하는 쿼리로 한 사용자의 터미널, Desktop, Cowork 사용량을 함께 다룰 수 있습니다. Desktop 및 Cowork 내보내기에서 `user.id`는 주체가 아닌 익명 식별자입니다.1234Desktop 및 Cowork 텔레메트리에는 ID 공급자가 사용자에 대해 발급하는 `sub` 클레임인 `enduser.sub`도 포함되며, 이는 사용자의 이메일이 변경되어도 동일하게 유지됩니다. 터미널 세션은 같은 값을 `user.id`에 기록하므로, `enduser.sub`를 터미널 `user.id`와 매칭하는 쿼리로 한 사용자의 터미널, Desktop, Cowork 사용량을 함께 다룰 수 있습니다. Desktop 및 Cowork 내보내기에서 `user.id`는 주체(subject)가 아닌 익명 식별자입니다.

1226 1235 

1227Claude Code의 모든 OpenTelemetry 데이터와 마찬가지로, 이러한 속성은 조직이 구성한 대상으로만 전송되며 Anthropic으로는 전송되지 않습니다.1236Claude Code의 모든 OpenTelemetry 데이터와 마찬가지로, 이러한 속성은 조직이 구성한 대상으로만 전송되며 Anthropic에는 절대 전송되지 않습니다.

1228 1237 

1229사용자의 그룹 목록이 퍼센트 인코딩 후 255자를 초과하거나 그룹 이름에 쉼표 또는 등호가 포함된 경우, 게이트웨이는 목록을 잘라내는 대신 해당 사용자의 Desktop 및 Cowork 텔레메트리에서 `user.groups`를 제외합니다. 해당 사용자의 터미널 세션에는 여전히 전체 목록이 포함됩니다.1238사용자의 그룹 목록이 퍼센트 인코딩 후 255자를 초과하거나 그룹 이름에 쉼표나 등호가 포함된 경우, 게이트웨이는 잘라내지 않고 해당 사용자의 Desktop 및 Cowork 텔레메트리에서 `user.groups`를 제외합니다. 해당 사용자의 터미널 세션은 여전히 전체 목록을 포함합니다.

1230 1239 

1231주체가 퍼센트 인코딩 후 255자를 초과하거나, 공백, 출력 가능한 ASCII 범위 밖의 문자, 또는 `,` `;` `=` `\` `"` `%` 중 하나를 포함하는 경우 게이트웨이는 `enduser.sub`를 제외합니다. 해당 사용자의 Desktop 및 Cowork 텔레메트리는 다른 속성을 유지합니다.1240게이트웨이는 주체가 퍼센트 인코딩 후 255자를 초과하거나, 공백, 인쇄 가능한 ASCII 범위를 벗어난 문자, 또는 `,` `;` `=` `\` `"` `%` 중 하나를 포함하는 경우 `enduser.sub`를 제외합니다. 해당 사용자의 Desktop 및 Cowork 텔레메트리는 다른 속성을 유지합니다.

1232 1241 

1233Desktop 및 Cowork 텔레메트리의 `user.email`과 `user.groups`에는 게이트웨이 서버에 Claude Code v2.1.265 이상이 필요하며, `user.groups`에는 각 개발자 머신에 Claude Desktop 1.24012 이상이 필요합니다.1242Desktop 및 Cowork 텔레메트리의 `user.email` 및 `user.groups`에는 게이트웨이 서버에 Claude Code v2.1.265 이상이 필요하며, `user.groups`에는 각 개발자 머신에 Claude Desktop 1.24012 이상이 필요합니다.

1234 1243 

1235`enduser.sub`에는 게이트웨이 서버에 Claude Code v2.1.274 이상이 필요합니다.1244`enduser.sub`에는 게이트웨이 서버에 Claude Code v2.1.274 이상이 필요합니다.

1236 1245 


1254> 각 대상은 `metrics`, `logs`, `traces`를 독립적으로 옵트인하며, 기본값은 메트릭만입니다. 신호마다 민감도가 다릅니다.1263> 각 대상은 `metrics`, `logs`, `traces`를 독립적으로 옵트인하며, 기본값은 메트릭만입니다. 신호마다 민감도가 다릅니다.

1255>1264>

1256> * **메트릭**: 토큰 수, 요청 수, 지연 시간 같은 집계 카운터1265> * **메트릭**: 토큰 수, 요청 수, 지연 시간 같은 집계 카운터

1257> * **로그 및 트레이스**: 전체 Bash 명령, 도구 입력, 파일 경로를 포함할 수 있으며, 개발자 머신에서 Claude Code가 수행하는 모든 작업을 포괄합니다1266> * **로그 및 트레이스**: 전체 Bash 명령, 도구 입력, 파일 경로를 포함할 수 있어 Claude Code가 개발자 머신에서 수행하는 모든 작업을 다룹니다

1258>1267>

1259> 로그와 트레이스는 해당 데이터에 걸맞은 접근 제어와 보존 정책을 갖춘 대상에서만 활성화하십시오.1268> 해당 데이터에 걸맞은 액세스 제어와 보존 정책이 있는 대상에서만 로그와 트레이스를 활성화하십시오.

1260 1269 

1261각 `forward_to` URL은 `https://`를 사용해야 하며, 게이트웨이 자체의 루프백 인터페이스에 있는 컬렉터에 대해서만 예외가 있습니다.1270각 `forward_to` URL은 `https://`를 사용해야 하며, 게이트웨이 자체 루프백 인터페이스의 수집기에 대해서만 예외가 있습니다.

1262 1271 

1263* `http://localhost:<port>`는 구성 검증을 통과하지만, 게이트웨이 환경에 `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`을 설정하지 않으면 [SSRF 가드](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#threat-model-summary)가 `ECONNREFUSED_SSRF`로 모든 내보내기를 차단합니다1272* `http://localhost:<port>`는 구성 검증을 통과하지만, 게이트웨이 환경에 `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`을 설정하지 않으면 [SSRF 가드](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#threat-model-summary)가 모든 내보내기를 `ECONNREFUSED_SSRF`로 차단합니다

1264* `http://127.0.0.1:<port>` 또는 `http://[::1]:<port>`는 해당 변수가 설정되지 않으면 부팅에 실패합니다1273* `http://127.0.0.1:<port>` 또는 `http://[::1]:<port>`는 해당 변수를 설정하지 않으면 부팅에 실패합니다

1265 1274 

1266클러스터 내 컬렉터의 경우 자체 내부 주소에서 HTTPS로 노출하거나, 변수를 설정한 사이드카로 실행하십시오.1275클러스터 내 수집기의 경우 자체 내부 주소에서 HTTPS로 노출하거나, 변수를 설정한 사이드카로 실행하십시오.

1267 1276 

1268`HTTPS_PROXY`가 설정되어 있으면 게이트웨이는 해당 프록시를 통해 내보내기를 전송합니다.1277`HTTPS_PROXY`가 설정되어 있으면 게이트웨이는 해당 프록시를 통해 내보내기를 전송합니다.

1269 1278 

1270내부 컬렉터에 직접 접근하려면 호스트 이름이나 `.internal.example.com`처럼 선행 점이 있는 도메인으로 `NO_PROXY`에 추가하십시오. 이를 위해서는 게이트웨이 서버에 Claude Code v2.1.277 이상이 필요합니다. 게이트웨이가 프록시 없이 컬렉터에 접근할 수 있는지 확인하십시오. 선행 점이 없는 항목은 그 아래의 이름이 아닌 정확히 해당 이름만 매칭합니다. CIDR 범위는 매칭되지 않습니다.1279내부 수집기에 직접 연결하려면 호스트 이름이나 `.internal.example.com`처럼 앞에 점이 붙은 도메인으로 `NO_PROXY`에 추가하십시오. 이를 위해서는 게이트웨이 서버에 Claude Code v2.1.277 이상이 필요합니다. 게이트웨이가 프록시 없이 수집기에 연결할 수 있는지 확인하십시오. 앞에 점이 없는 항목은 해당 이름과 정확히 일치하는 경우에만 매칭되며 그 하위 이름과는 매칭되지 않습니다. CIDR 범위는 매칭되지 않습니다.

1271 1280 

1272[프록시 전용 이그레스](#proxy-only-egress)를 켠 경우에는 `NO_PROXY` 항목이 하나라도 있으면 프록시 전용 이그레스가 꺼지므로, 대신 프록시에서 컬렉터를 허용하십시오.1281[프록시 전용 이그레스](#proxy-only-egress)가 켜져 있으면 `NO_PROXY` 항목이 하나라도 있으면 프록시 전용 이그레스가 꺼지므로, 대신 프록시에서 수집기를 허용하십시오.

1273 1282 

1274CLI에서 텔레메트리는 기본적으로 꺼져 있습니다. `telemetry.forward_to`와 `listen.public_url`을 모두 설정하면, 게이트웨이는 `/managed/settings`를 통해 6개의 환경 변수를 푸시하여 연결된 클라이언트에서 이를 켭니다.1283CLI에서 텔레메트리는 기본적으로 꺼져 있습니다. `telemetry.forward_to`와 `listen.public_url`을 모두 설정하면, 게이트웨이는 `/managed/settings`를 통해 여섯 개의 환경 변수를 푸시하여 연결된 클라이언트에서 텔레메트리를 켭니다.

1275 1284 

1276* `CLAUDE_CODE_ENABLE_TELEMETRY=1`1285* `CLAUDE_CODE_ENABLE_TELEMETRY=1`

1277* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_TRACES_EXPORTER`: 하나 이상의 `forward_to` 대상이 해당 신호를 활성화하면 각각 `otlp`로, 그렇지 않으면 `none`으로 설정됩니다1286* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_TRACES_EXPORTER`: 각각 하나 이상의 `forward_to` 대상이 해당 신호를 활성화하면 `otlp`로, 그렇지 않으면 `none`으로 설정됩니다

1278* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`1287* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`

1279* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`1288* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`

1280 1289 

1281[자체 레이블을 추가](#add-your-own-labels)하면 게이트웨이는 `OTEL_RESOURCE_ATTRIBUTES`도 푸시합니다.1290[자체 레이블을 추가](#add-your-own-labels)하면 게이트웨이는 `OTEL_RESOURCE_ATTRIBUTES`도 푸시합니다.

1282 1291 

1283게이트웨이 서버의 Claude Code v2.1.265 이전에는 게이트웨이가 어떤 대상도 옵트인하지 않은 신호를 포함하여 세 가지 익스포터 선택자를 모두 `otlp`로 푸시했습니다.1292게이트웨이 서버의 Claude Code v2.1.265 이전에는 어떤 대상도 옵트인하지 않은 신호를 포함하여 세 가지 내보내기 선택자를 모두 `otlp`로 푸시했습니다.

1284 1293 

1285푸시되는 엔드포인트는 공개 URL로 구성되므로, 메트릭과 로그에는 개발자나 정책의 OTEL 구성이 필요하지 않습니다.1294푸시되는 엔드포인트는 공개 URL로 구성되므로, 메트릭과 로그에는 개발자나 정책의 OTEL 구성이 필요하지 않습니다.

1286 1295 

1287`/login`으로 로그인한 개발자는 자체 OTEL 구성으로 내보내기를 리디렉션할 수 없습니다.1296`/login`으로 로그인한 개발자는 자신의 OTEL 구성으로 내보내기를 리디렉션할 수 없습니다.

1288 1297 

1289* **로컬에서 설정한 변수**: Claude Code는 푸시된 변수를 관리형 계층에서 적용하므로, 각 변수는 개발자가 로컬에서 설정한 값을 재정의합니다.1298* **로컬에서 설정한 변수**: Claude Code는 푸시된 변수를 관리형 계층에서 적용하므로, 각 변수는 개발자가 로컬에서 설정한 값을 재정의합니다.

1290* **로컬에서 구성한 엔드포인트**: OTLP/HTTP 내보내기가 활성화된 경우, 게이트웨이가 텔레메트리 변수를 푸시했는지 여부와 관계없이 CLI는 로컬에서 구성한 엔드포인트를 무시합니다. 정책이 [컬렉터를 엔드포인트로 지정](#export-directly-to-your-collector)하지 않는 한 내보내기는 게이트웨이로 전송됩니다.1299* **로컬에서 구성한 엔드포인트**: OTLP/HTTP 내보내기가 활성화되어 있으면, 게이트웨이가 텔레메트리 변수를 푸시했는지와 관계없이 CLI는 로컬에서 구성한 엔드포인트를 무시합니다. 정책이 [수집기를 엔드포인트로 지정](#export-directly-to-your-collector)하지 않는 한 내보내기는 게이트웨이로 전송됩니다.

1291 1300 

1292신호에 대한 `forward_to` 대상이 없으면 게이트웨이는 해당 신호를 받아서 폐기합니다. 개발자가 이미 Claude Code 텔레메트리를 조직의 컬렉터 중 하나로 내보내고 있다면, 해당 컬렉터를 `forward_to` 대상으로 추가하고(로그나 트레이스를 내보내고 있다면 해당 신호도 활성화) 개발자가 로그인한 후에도 데이터를 계속 받도록 하십시오. 대신 릴레이를 건너뛰려면 [정책에 컬렉터를 지정](#export-directly-to-your-collector)하십시오.1301신호에 대한 `forward_to` 대상이 없으면 게이트웨이는 이를 받아서 폐기합니다. 개발자가 이미 Claude Code 텔레메트리를 조직의 수집기 중 하나로 내보내고 있다면, 로그인 후에도 해당 수집기가 데이터를 계속 받도록 `forward_to` 대상으로 추가하고, 개발자가 로그나 트레이스를 내보내는 경우 이를 활성화하십시오. 대신 중계를 건너뛰려면 [정책에서 수집기를 지정](#export-directly-to-your-collector)하십시오.

1293 1302 

1294[트레이스](https://code.claude.com/docs/ko/monitoring-usage.md#traces-beta)에는 각 클라이언트에 `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`도 필요합니다. 게이트웨이는 이를 푸시하지 않으므로 관리형 정책의 `env` 블록에 설정하십시오. 개발자는 푸시된 엔드포인트가 이미 트리거하는 것과 동일한 [보안 승인 대화 상자](#managed)에서 이를 승인합니다.1303[트레이스](https://code.claude.com/docs/ko/monitoring-usage.md#traces-beta)에는 각 클라이언트에 `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`도 필요합니다. 게이트웨이가 이를 푸시하지 않으므로 관리형 정책의 `env` 블록에서 설정하십시오. 개발자는 푸시된 엔드포인트가 이미 유발하는 동일한 [보안 승인 대화상자](#managed)에서 이를 승인합니다.

1295 1304 

1296트레이스를 수집하려는 그룹의 정책에서만 `1`로 설정하십시오. 이를 설정하지 않은 정책은 [병합 규칙](#managed)에 따라, `match: {}` 캐치올 정책이 값을 설정한 경우 해당 값을 상속합니다. 개발자가 로컬에서 변수를 설정하더라도 특정 그룹의 클라이언트가 트레이스를 보내지 않도록 하려면 해당 그룹의 정책에서 `0`으로 설정하십시오.1305트레이스를 수집하려는 그룹의 정책에서만 `1`로 설정하십시오. 이를 설정하지 않은 정책은 [병합 규칙](#managed)에 따라 `match: {}` 캐치올 정책이 값을 설정한 경우 그 값을 상속합니다. 개발자가 로컬에서 변수를 설정하더라도 특정 그룹의 클라이언트가 트레이스를 보내지 않도록 하려면 해당 그룹의 정책에서 `0`으로 설정하십시오.

1297 1306 

1298protobuf와 JSON OTLP 인코딩 모두 중계되며, OpenTelemetry 호환 백엔드라면 어떤 것이든 대상으로 사용할 수 있습니다.1307protobuf와 JSON OTLP 인코딩이 모두 중계되며, OpenTelemetry와 호환되는 모든 백엔드를 대상으로 사용할 수 있습니다.

1299 1308 

1300#### 누적 메트릭 전송1309#### 누적 메트릭 전송

1301 1310 

1302컬렉터가 누적 메트릭만 허용하는 경우 [`OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE`](https://code.claude.com/docs/ko/monitoring-usage#common-configuration-variables)를 `cumulative`로 설정하십시오. Claude Code는 기본적으로 델타 메트릭을 보내며, 게이트웨이는 이를 변환하지 않고 중계합니다. 세션 유형별로 변수를 읽는 위치에 설정하십시오.1311수집기가 누적 메트릭만 받는 경우 [`OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE`](https://code.claude.com/docs/ko/monitoring-usage#common-configuration-variables)를 `cumulative`로 설정하십시오. Claude Code는 기본적으로 델타 메트릭을 보내며, 게이트웨이는 변환 없이 이를 중계합니다. 각 세션 유형이 변수를 읽는 위치에 설정하십시오.

1303 1312 

1304* **터미널 세션**: 정책의 [`cli` 또는 `code` 키](#choose-cli-or-code) 아래 `env` 블록1313* **터미널 세션**: 정책의 [`cli` 또는 `code` 키](#choose-cli-or-code) 아래 `env` 블록

1305* **[사용자 머신에서 실행되는](https://code.claude.com/docs/ko/managed-settings.md#where-and-when-a-policy-applies) Cowork 세션**: 해당 머신의 [클라이언트 측 관리형 설정](#client-side-managed-settings)의 `env` 블록1314* **[사용자 머신에서 실행되는](https://code.claude.com/docs/ko/managed-settings.md#where-and-when-a-policy-applies) Cowork 세션**: 해당 머신의 [클라이언트 측 관리형 설정](#client-side-managed-settings)의 `env` 블록

1306* **`code` 정책의 Code 탭 세션**: [`code` 설정이 적용되기 위한 조건](#apply-code-settings-in-the-code-tab)을 충족한 후 정책의 `env` 블록1315* **`code` 정책 아래의 Code 탭 세션**: [`code` 설정이 적용되는 조건](#apply-code-settings-in-the-code-tab)을 충족한 후 정책의 `env` 블록

1307* **`cli` 정책의 Code 탭 세션**: 세션을 실행하는 머신의 클라이언트 측 관리형 설정의 `env` 블록. SSH를 통한 경우 원격 호스트입니다.1316* **`cli` 정책 아래의 Code 탭 세션**: 세션을 실행하는 머신의 클라이언트 측 관리형 설정의 `env` 블록. SSH를 통한 경우에는 원격 호스트입니다.

1308 1317 

1309머신의 관리형 설정에 변수를 추가하는 경우, 해당 머신의 최우선 소스에 [`parentSettingsBehavior: "merge"`](https://code.claude.com/docs/ko/claude-apps-gateway#set-the-opt-in)도 설정하십시오. 이 설정이 없으면 Cowork 세션과 `cli` 정책의 Code 탭 세션은 Claude Desktop이 상위 설정으로 전달하는 이그레스 허용 목록 및 기타 정책 없이 실행됩니다.1318머신의 관리형 설정에 변수를 추가하는 경우, 해당 머신에서 우선순위가 가장 높은 소스에 [`parentSettingsBehavior: "merge"`](https://code.claude.com/docs/ko/claude-apps-gateway#set-the-opt-in)도 설정하십시오. 이 설정이 없으면 Cowork 세션과 `cli` 정책 아래의 Code 탭 세션은 Claude Desktop이 상위 설정으로 전달하는 이그레스 허용 목록 및 기타 정책 없이 실행됩니다.

1310 1319 

1311#### 자체 레이블 추가1320#### 자체 레이블 추가

1312 1321 

1313게이트웨이를 통해 로그인한 세션의 텔레메트리에 `service.namespace`나 `deployment.environment.name` 같은 고정 레이블을 붙이려면 `telemetry.resource_attributes`를 설정하십시오. 각 레이블은 OpenTelemetry 리소스 속성이며, 모든 대상이 동일한 레이블을 받습니다.1322게이트웨이를 통해 로그인한 세션의 텔레메트리에 `service.namespace`나 `deployment.environment.name` 같은 고정 레이블을 붙이려면 `telemetry.resource_attributes`를 설정하십시오. 각 레이블은 OpenTelemetry 리소스 속성이며, 모든 대상이 동일한 레이블을 받습니다.

1314 1323 

1315세션은 `telemetry.forward_to`와 `listen.public_url`도 설정한 경우에만 레이블을 받습니다. 이 예시는 두 개의 레이블을 추가합니다.1324세션은 `telemetry.forward_to`와 `listen.public_url`도 함께 설정한 경우에만 레이블을 받습니다. 다음 예시는 두 개의 레이블을 추가합니다.

1316 1325 

1317```yaml theme={null}1326```yaml theme={null}

1318telemetry:1327telemetry:


1323 deployment.environment.name: prod1332 deployment.environment.name: prod

1324```1333```

1325 1334 

1326레이블이 다음 규칙 중 하나를 위반하면 게이트웨이는 시작을 거부하며, 시작 오류에 해당 레이블이 표시됩니다.1335레이블이 다음 규칙 중 하나를 위반하면 게이트웨이는 시작을 거부하며, 시작 오류에서 해당 레이블을 명시합니다.

1327 1336 

1328* 이름에는 문자, 숫자, `.`, `_`, `-`만 사용합니다1337* 이름에는 문자, 숫자, `.`, `_`, `-`만 사용합니다

1329* 이름은 예약되지 않아야 합니다. 대소문자에 관계없이 비교하며, 예약된 이름은 `user.`, `enduser.` 또는 `identity.`로 시작하는 모든 이름과 `service.name`, `service.version`, `claude.deployment_mode`, `host.arch`, `os.type`, `os.version`, `wsl.version`입니다1338* 이름은 예약된 이름이 아니어야 합니다. 대소문자 구분 없이 비교하며, 예약된 이름은 `user.`, `enduser.`, `identity.`로 시작하는 모든 이름과 `service.name`, `service.version`, `claude.deployment_mode`, `host.arch`, `os.type`, `os.version`, `wsl.version`입니다

1330* 값은 비어 있지 않은 출력 가능한 ASCII이며, 공백과 `, ; = \ " %`를 포함하지 않아야 합니다1339* 값은 공백이 없고 `, ; = \ " %` 중 어느 것도 포함하지 않는, 비어 있지 않은 인쇄 가능한 ASCII여야 합니다

1331* 값은 게이트웨이가 퍼센트 인코딩 후 계산하는 기준으로 최대 255자이므로, `/`, `:`, `@`는 각각 3자로 계산됩니다1340* 값은 게이트웨이가 퍼센트 인코딩 후 계산하는 기준으로 최대 255자이므로, `/`, `:`, `@`는 각각 3자로 계산됩니다

1332* 값은 텍스트이므로 숫자, `true`, `false`는 따옴표로 묶으십시오1341* 값은 텍스트이므로 숫자, `true`, `false`는 따옴표로 감싸십시오

1333 1342 

1334`telemetry.resource_attributes`를 설정하려면 게이트웨이 서버에 Claude Code v2.1.281 이상이 필요합니다. 이전 게이트웨이는 이 키를 발견하면 시작을 거부합니다. 키를 추가하기 전에 모든 레플리카를 업그레이드하고, 이전 버전으로 롤백하기 전에 키를 제거하십시오.1343`telemetry.resource_attributes`를 설정하려면 게이트웨이 서버에 Claude Code v2.1.281 이상이 필요합니다. 이전 게이트웨이는 이 키를 발견하면 시작되지 않습니다. 키를 추가하기 전에 모든 레플리카를 업그레이드하고, 이전 버전으로 롤백하기 전에는 키를 제거하십시오.

1335 1344 

1336`/login`으로 로그인한 터미널 세션은 다른 [텔레메트리 변수](#telemetry)와 함께 푸시된 `OTEL_RESOURCE_ATTRIBUTES`로 레이블을 받습니다. 정책의 `env` 블록에 `OTEL_RESOURCE_ATTRIBUTES`를 설정하면, 해당 정책에 매칭되는 터미널 세션은 레이블 대신 그 값을 받습니다. Claude Desktop은 `user.email` 및 기타 ID 속성과 함께 게이트웨이로부터 레이블을 받습니다.1345`/login`으로 로그인한 터미널 세션은 다른 [텔레메트리 변수](#telemetry)와 함께 푸시되는 `OTEL_RESOURCE_ATTRIBUTES`로 레이블을 받습니다. 정책의 `env` 블록에서 `OTEL_RESOURCE_ATTRIBUTES`를 설정하면, 해당 정책과 매칭되는 터미널 세션은 레이블 대신 그 값을 받습니다. Claude Desktop은 `user.email` 및 기타 ID 속성과 함께 게이트웨이로부터 레이블을 받습니다.

1337 1346 

1338Claude Code는 각 레이블을 모든 메트릭 데이터 포인트에도 복사하므로, 리소스 속성을 인덱싱하지 않는 백엔드에서도 레이블로 메트릭을 필터링할 수 있습니다. 이 복사를 끄려면 [메트릭 카디널리티 제어](https://code.claude.com/docs/ko/monitoring-usage.md#metrics-cardinality-control)를 참조하십시오.1347Claude Code는 각 레이블을 모든 메트릭 데이터 포인트에도 복사하므로, 리소스 속성을 인덱싱하지 않는 백엔드에서도 이를 기준으로 메트릭을 필터링할 수 있습니다. 이 복사를 끄려면 [메트릭 카디널리티 제어](https://code.claude.com/docs/ko/monitoring-usage.md#metrics-cardinality-control)를 참조하십시오.

1339 1348 

1340#### 열린 세션 중 그룹 변경1349#### 열린 세션 중 그룹 변경

1341 1350 

1342터미널 세션은 `user.groups`를 OTLP 리소스에 넣고, 각 메트릭 데이터 포인트와 이벤트에도 다시 넣습니다. 세션이 열려 있는 동안 개발자의 그룹이 변경되면, 다음 [자동 갱신](#session) 이후 사용량에 대한 데이터 포인트와 이벤트에는 새 그룹이 포함됩니다. 리소스는 개발자가 Claude Code를 재시작할 때까지 이전 그룹을 유지하므로, 데이터 포인트나 이벤트의 속성을 기준으로 그룹화하십시오.1351터미널 세션은 `user.groups`를 OTLP 리소스에 넣고, 각 메트릭 데이터 포인트와 이벤트에도 다시 넣습니다. 세션이 열려 있는 동안 개발자의 그룹이 변경되면, 다음 [자동 갱신](#session) 이후 사용량에 대한 데이터 포인트와 이벤트는 새 그룹을 포함합니다. 리소스는 개발자가 Claude Code를 재시작할 때까지 이전 그룹을 유지하므로, 데이터 포인트나 이벤트의 속성을 기준으로 그룹화하십시오.

1343 1352 

1344OpenTelemetry Collector의 Prometheus remote write 익스포터에서 `resource_to_telemetry_conversion`을 켜면, 익스포터가 각 데이터 포인트의 `user.groups`를 리소스의 값으로 대체하므로 모든 데이터 포인트에 이전 그룹이 표시됩니다. 데이터 포인트의 값을 유지하려면 해당 익스포터 앞에서 리소스의 `user.groups`를 삭제하십시오.1353OpenTelemetry Collector의 Prometheus remote write 내보내기 도구에서 `resource_to_telemetry_conversion`을 켜면, 내보내기 도구가 각 데이터 포인트의 `user.groups`를 리소스의 값으로 대체하므로 모든 데이터 포인트에 이전 그룹이 표시됩니다. 데이터 포인트의 값을 유지하려면 해당 내보내기 도구보다 앞에서 리소스의 `user.groups`를 삭제하십시오.

1345 1354 

1346이 OpenTelemetry Collector `resource` 프로세서는 이를 나열하는 파이프라인에서 속성을 삭제합니다.1355다음 OpenTelemetry Collector `resource` 프로세서는 이를 나열한 파이프라인에서 속성을 삭제합니다.

1347 1356 

1348```yaml theme={null}1357```yaml theme={null}

1349processors:1358processors:


1353 action: delete1362 action: delete

1354```1363```

1355 1364 

1356메트릭 파이프라인의 `processors`에 `resource/drop-user-groups`를 추가하면, 각 시리즈는 자체 데이터 포인트의 `user_groups` 레이블을 갖게 됩니다.1365메트릭 파이프라인의 `processors`에 `resource/drop-user-groups`를 추가하면, 각 시계열은 자체 데이터 포인트의 `user_groups` 레이블을 포함합니다.

1357 1366 

1358#### 수집기로 직접 내보내기1367#### 수집기로 직접 내보내기

1359 1368 

1360`/login`을 통해 로그인한 세션이 릴레이를 거치지 않고 텔레메트리를 수집기로 직접 보내도록 하려면, [관리형 정책](#managed)의 `env` 블록에서 `OTEL_EXPORTER_OTLP_ENDPOINT`를 수집기의 `https://` 기본 URL로 설정합니다. Claude Code는 `https://otel-collector.example.com:4318`과 같이 설정한 URL에 `/v1/metrics`, `/v1/logs` 또는 `/v1/traces`를 덧붙이고, 각 신호를 OTLP/HTTP를 통해 해당 위치로 내보냅니다. 각 개발자 머신에 Claude Code v2.1.265 이상이 필요합니다. 이전 클라이언트는 릴레이를 통해 내보냅니다.1369`/login`을 통해 로그인한 세션이 릴레이를 거치지 않고 수집기로 텔레메트리를 직접 보내도록 하려면, [관리형 정책](#managed)의 `env` 블록에서 `OTEL_EXPORTER_OTLP_ENDPOINT`를 수집기의 `https://` 기본 URL로 설정합니다. Claude Code는 설정한 URL(예: `https://otel-collector.example.com:4318`)에 `/v1/metrics`, `/v1/logs` 또는 `/v1/traces`를 덧붙이고, 각 신호를 OTLP/HTTP를 통해 해당 위치로 내보냅니다. 각 개발자의 머신에 Claude Code v2.1.265 이상이 필요합니다. 이전 버전의 클라이언트는 릴레이를 통해 내보냅니다.

1361 1370 

1362수집기에 인증하려면 같은 `env` 블록에서 `OTEL_EXPORTER_OTLP_HEADERS`를 설정합니다. 세션은 이런 방식으로 지정된 수집기에 개발자의 게이트웨이 세션 토큰을 절대 보내지 않습니다.1371수집기에 인증하려면 같은 `env` 블록에서 `OTEL_EXPORTER_OTLP_HEADERS`를 설정합니다. 세션은 이런 방식으로 지정된 수집기에 개발자의 게이트웨이 세션 토큰을 절대 보내지 않습니다.

1363 1372 

1364정책에서 이 엔드포인트를 추가하거나 변경하면, Claude Code는 대화형 세션에 적용하기 전에 [보안 승인 대화 상자](#managed)에서 각 개발자에게 승인을 요청합니다.1373정책에서 이 엔드포인트를 추가하거나 변경하면, Claude Code는 대화형 세션에 적용하기 전에 각 개발자에게 [보안 승인 대화 상자](#managed)에서 승인하도록 요청합니다.

1365 1374 

1366Claude Code는 신호를 직접 내보내기 전에 엔드포인트를 확인하며, 확인에 실패하면 해당 신호를 릴레이에 유지합니다. 확인 항목은 다음과 같습니다.1375Claude Code는 신호를 직접 내보내기 전에 엔드포인트를 확인하며, 확인에 실패하면 해당 신호를 릴레이에 유지합니다. 확인 항목은 다음과 같습니다.

1367 1376 

1368* 엔드포인트가 게이트웨이 자체에서 제공됩니다. MDM 프로필이나 로컬 `managed-settings.json`에서 같은 변수를 설정하면 내보내기는 릴레이에 유지됩니다.1377* 엔드포인트가 게이트웨이 자체에서 제공됩니다. 같은 변수를 MDM 프로필이나 로컬 `managed-settings.json`에서 설정하면 내보내기는 릴레이에 유지됩니다.

1369* URL이 `https://`를 사용하거나, 루프백 주소에 대해 `http://`를 사용합니다1378* URL이 `https://`를 사용하거나, 루프백 주소에 대해 `http://`를 사용합니다

1370* URL이 쿼리나 프래그먼트 없이 `/v1/<signal>`로 끝나는 경로로 확인됩니다. Claude Code는 일반 변수로부터 해당 경로를 직접 만듭니다. `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`와 같은 신호별 변수는 작성된 그대로 사용하므로, 그곳에는 전체 경로를 포함해야 합니다.1379* URL이 쿼리나 프래그먼트 없이 `/v1/<signal>`로 끝나는 경로로 확인됩니다. Claude Code는 일반 변수로부터 이 경로를 직접 만듭니다. `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`와 같은 신호별 변수는 작성된 그대로 사용하므로, 여기에는 전체 경로를 포함해야 합니다.

1371* URL이 게이트웨이 자체 호스트가 아닙니다. 게이트웨이를 대상으로 하는 엔드포인트는 릴레이 경로와 해당 세션 토큰을 유지합니다.1380* URL이 게이트웨이 자체의 호스트가 아닙니다. 게이트웨이를 대상으로 하는 엔드포인트는 릴레이 경로와 세션 토큰을 유지합니다.

1372* 사용자와 개발자 모두 어떤 설정 소스에서도 [`otelHeadersHelper`](https://code.claude.com/docs/ko/settings-reference#otelheadershelper)를 구성하지 않았습니다. 헬퍼가 구성되어 있으면 모든 신호가 릴레이에 유지됩니다.1381* 관리자와 개발자 모두 어떤 설정 소스에서도 [`otelHeadersHelper`](https://code.claude.com/docs/ko/settings-reference#otelheadershelper)를 구성하지 않았습니다. 헬퍼가 구성되어 있으면 모든 신호가 릴레이에 유지됩니다.

1373 1382 

1374지정한 엔드포인트는 내보내기 대상만 변경합니다. 어떤 신호를 내보낼지는 여전히 `OTEL_*_EXPORTER` 선택자로 선택합니다.1383지정한 엔드포인트는 내보내기 대상만 변경합니다. 어떤 신호를 내보낼지는 여전히 `OTEL_*_EXPORTER` 선택자로 선택합니다.

1375 1384 

1376엔드포인트만으로는 내보내기가 켜지지 않으므로, 게이트웨이가 이미 푸시하지 않는 한 내보내기를 켜는 변수도 함께 설정합니다.1385엔드포인트만으로는 내보내기가 켜지지 않으므로, 게이트웨이가 이미 푸시하고 있지 않다면 내보내기를 켜는 변수도 함께 설정합니다.

1377 1386 

1378* 게이트웨이가 이미 [텔레메트리 변수를 푸시](#telemetry)하는 경우, 해당 변수가 활성화, 선택자, 프로토콜을 처리하며, 명시적으로 지정한 엔드포인트가 푸시된 `<public_url>` 값을 재정의합니다. 어떤 `forward_to` 대상도 활성화하지 않는 신호에 대해서만 `OTEL_*_EXPORTER` 선택자를 직접 `otlp`로 설정합니다.1387* 게이트웨이가 이미 [텔레메트리 변수를 푸시](#telemetry)하고 있다면, 해당 변수가 활성화, 선택자, 프로토콜을 처리하며 명시적으로 지정한 엔드포인트가 푸시된 `<public_url>` 값을 재정의합니다. 어떤 `forward_to` 대상도 활성화하지 않는 신호에 대해서만 `OTEL_*_EXPORTER` 선택자를 직접 `otlp`로 설정합니다.

1379* 그렇지 않은 경우, `CLAUDE_CODE_ENABLE_TELEMETRY=1`, `OTEL_*_EXPORTER` 선택자, `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`도 설정합니다.1388* 그렇지 않다면 `CLAUDE_CODE_ENABLE_TELEMETRY=1`, `OTEL_*_EXPORTER` 선택자, `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`도 설정합니다.

1380 1389 

1381개발자가 로그아웃하거나 다른 게이트웨이에 로그인하면 수집기로의 내보내기가 중지되며, Claude Code는 남은 각 배치를 전송하지 않고 삭제합니다.1390개발자가 로그아웃하거나 다른 게이트웨이에 로그인하면 수집기로의 내보내기가 중단되고, Claude Code는 남아 있는 각 배치를 전송하지 않고 삭제합니다.

1382 1391 

1383#### 대상이 실패하는 경우1392#### 대상 전송이 실패하는 경우

1384 1393 

1385게이트웨이는 텔레메트리를 버퍼링, 재시도 또는 저장하지 않으므로, 대상에 도달하지 못한 내보내기는 늦게 전달하지 않고 삭제합니다. 각 대상은 개별적으로 성공하거나 실패하며, 내보내는 클라이언트는 어느 경우든 성공 응답을 받으므로 실패한 전달은 게이트웨이의 로그에만 나타납니다.1394게이트웨이는 텔레메트리를 버퍼링하거나 재시도하거나 저장하지 않으므로, 대상에 도달하지 못한 내보내기는 나중에 전달하지 않고 삭제합니다. 각 대상은 개별적으로 성공하거나 실패하며, 내보내는 클라이언트는 어느 경우든 성공 응답을 받으므로 전송 실패는 게이트웨이의 로그에만 나타납니다.

1386 1395 

1387한 대상으로의 전달이 연속 다섯 번 실패하면, 게이트웨이는 전달이 성공할 때까지 30초 단위로 해당 대상으로의 전달을 일시 중지하고 각 일시 중지를 로그에 기록합니다. 모든 오류 응답, 타임아웃 또는 연결 오류는 실패한 전달로 간주되지만, `400`, `413`, `415`, `422`, `431`은 예외입니다. 이 상태 코드들은 수집기가 해당 내보내기의 페이로드를 형식이 잘못되었거나 너무 크다는 이유로 거부했음을 의미합니다.1396한 대상으로의 전송이 연속으로 다섯 번 실패하면, 게이트웨이는 전송이 성공할 때까지 30초 단위로 해당 대상으로의 전달을 일시 중지하며 각 일시 중지를 로그에 기록합니다. 모든 오류 응답, 타임아웃, 연결 오류는 전송 실패로 간주되지만, `400`, `413`, `415`, `422`, `431`은 예외입니다. 이 코드들은 수집기가 해당 내보내기의 페이로드를 형식이 잘못되었거나 너무 크다는 이유로 거부했음을 의미합니다.

1388 1397 

1389거부된 페이로드는 실패 횟수를 늘리거나 초기화하지 않습니다. 게이트웨이는 해당 대상으로 계속 전달하며, 대상의 첫 번째 거부와 이후 100번째 거부마다 대상과 상태를 명시한 경고를 로그에 기록합니다.1398거부된 페이로드는 실패 횟수를 늘리지도 초기화하지도 않습니다. 게이트웨이는 해당 대상으로 계속 전달하며, 대상의 첫 번째 거부와 이후 매 100번째 거부마다 대상과 상태를 명시한 경고를 로그에 기록합니다.

1390 1399 

1391### HTTP 튜닝1400### HTTP 조정

1392 1401 

1393선택 사항인 네 개의 최상위 블록 `access_control`, `limits`, `timeouts`, `rate_limits`로 HTTP 사용 환경을 튜닝합니다. 기본값은 대부분의 배포에 적합합니다.1402선택 사항인 네 가지 최상위 블록 `access_control`, `limits`, `timeouts`, `rate_limits`로 HTTP 사용 환경을 조정합니다. 대부분의 배포에는 기본값이 적합합니다.

1394 1403 

1395| 블록 | 키 | 기본값 | 설명 |1404| 블록 | 키 | 기본값 | 설명 |

1396| - | - | - | - |1405| - | - | - | - |

1397| `access_control` | `allow_cidrs` / `deny_cidrs` | 비어 있음 | `trusted_proxies` 확인 후 클라이언트 주소를 기준으로 인바운드 IP를 허용/거부합니다. `deny_cidrs`가 먼저 확인되며, 여기에 일치하는 클라이언트는 `allow_cidrs`에도 일치하더라도 거부됩니다. `allow_cidrs`가 비어 있지 않으면 게이트웨이는 기본 거부 상태가 됩니다. `/healthz`와 `/readyz`는 `allow_cidrs`에서 제외됩니다. 신뢰할 수 있는 프록시가 IP 주소가 아닌 `X-Forwarded-For` 항목을 보내면 실제 클라이언트를 알 수 없으며, 게이트웨이는 확인할 사항을 명시한 경고를 한 번 로그에 기록합니다. 두 목록 중 하나라도 요청에 적용되는 경우, 게이트웨이는 `403`과 감사 사유 `xff_unparseable`로 요청을 거부합니다. 어느 목록도 적용되지 않는 경우, 요청을 처리하고 IP별 속도 제한과 감사에 프록시 자체의 주소를 클라이언트 IP로 사용합니다. |1406| `access_control` | `allow_cidrs` / `deny_cidrs` | 비어 있음 | `trusted_proxies` 확인 후 클라이언트 주소 기준으로 인바운드 IP를 허용/거부합니다. `deny_cidrs`를 먼저 확인하며, 여기에 일치하는 클라이언트는 `allow_cidrs`에도 일치하더라도 거부됩니다. `allow_cidrs`가 비어 있지 않으면 게이트웨이는 기본적으로 거부합니다. `/healthz`와 `/readyz`는 `allow_cidrs`에서 제외됩니다. 신뢰할 수 있는 프록시가 IP 주소가 아닌 `X-Forwarded-For` 항목을 보내면 실제 클라이언트를 알 수 없으며, 게이트웨이는 확인할 항목을 명시한 경고를 한 번 로그에 기록합니다. 두 목록 중 하나라도 요청에 적용되는 경우 `403`과 감사 사유 `xff_unparseable`로 요청을 거부합니다. 둘 다 적용되지 않는 경우 요청을 처리하며, IP별 속도 제한과 감사에 프록시 자체의 주소를 클라이언트 IP로 사용합니다. |

1398| `limits` | `max_request_bytes` | 32 MiB | 인바운드 요청 본문의 최대 크기입니다. 크기를 초과하는 요청은 본문이 버퍼링되기 전에 `413`을 받습니다. 대용량 파일이나 이미지 요청의 경우 값을 높이십시오. |1407| `limits` | `max_request_bytes` | 32 MiB | 인바운드 요청 본문의 최대 크기입니다. 크기를 초과하는 요청은 본문이 버퍼링되기 전에 `413`을 받습니다. 대용량 파일이나 이미지 요청에는 값을 늘립니다. |

1399| `limits` | `max_request_header_bytes` | 설정 안 됨 | 요청 전체 헤더에 대한 게이트웨이의 256 KiB 제한을 낮춥니다. 제한을 초과하는 요청은 `431`을 반환하며, 256 KiB를 초과하는 값은 효과가 없습니다. 개발자가 로그인 후 `431`을 받는 경우 [Request headers too large after sign-in](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#request-headers-too-large-after-sign-in)을 참조하십시오. |1408| `limits` | `max_request_header_bytes` | 설정 안 됨 | 요청의 전체 헤더에 대한 게이트웨이의 256 KiB 제한을 낮춥니다. 제한을 초과하는 요청은 `431`을 반환하며, 256 KiB보다 큰 값은 효과가 없습니다. 개발자가 로그인 후 `431`을 받는 경우 [로그인 후 요청 헤더가 너무 큼](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#request-headers-too-large-after-sign-in)을 참조하세요. |

1400| `limits` | `max_url_length` | 설정 안 됨 | 설정하면 지나치게 긴 URL은 `414`를 반환합니다 |1409| `limits` | `max_url_length` | 설정 안 됨 | 설정하면 너무 긴 URL은 `414`를 반환합니다 |

1401| `timeouts` | `upstream_ttfb_ms` | 120000 | 업스트림의 응답 헤더를 기다리는 최대 시간(첫 바이트까지의 시간)입니다. 이후 응답 본문은 경과 시간 제한 없이 스트리밍됩니다. 직접 Anthropic 업스트림 경로에 적용되며, 다른 모든 제공자의 경우 게이트웨이는 응답이 시작될 때까지 최대 1시간 기다립니다. |1410| `timeouts` | `upstream_ttfb_ms` | 120000 | 업스트림의 응답 헤더를 기다리는 최대 시간(첫 바이트까지의 시간)입니다. 이후 응답 본문은 실제 경과 시간 제한 없이 스트리밍됩니다. 키가 설정되지 않은 경우 기본값은 `provider: anthropic` 업스트림에 적용되며, 다른 모든 제공자에서는 게이트웨이가 응답이 시작될 때까지 최대 1시간 기다립니다. 이 대기 시간을 줄이려면 [여러 업스트림](#multiple-upstreams)을 참조하세요. |

1402| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | 인증되지 않은 디바이스 인증 엔드포인트에 대한 IP별 속도 제한입니다. 공유 이그레스 IP나 NAT 뒤에 있는 대규모 조직의 경우 값을 높이십시오. [대규모 롤아웃](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#large-rollouts)에서 크기 산정 방법을 보여줍니다. 이 제한은 `/v1/messages` 추론이 아닌 디바이스 그랜트 로그인 흐름에만 적용됩니다. [사용자 코드 무차별 대입 방지](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#user-code-brute-force-resistance)를 참조하십시오. |1411| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | 인증되지 않은 디바이스 인증 엔드포인트에 대한 IP별 속도 제한입니다. 공유 이그레스 IP나 NAT 뒤에 있는 대규모 조직의 경우 값을 늘립니다. [대규모 롤아웃](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#large-rollouts)에서 크기를 정하는 방법을 보여 줍니다. 이 제한은 디바이스 그랜트 로그인 흐름에만 적용되며 `/v1/messages` 추론에는 적용되지 않습니다. [사용자 코드 무차별 대입 방지](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#user-code-brute-force-resistance)를 참조하세요. |

1403| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | `/device`에서의 `user_code` 제출에 대한 IP별 속도 제한입니다. 다른 개발자의 코드를 추측하는 것을 막는 역할을 합니다. [대규모 롤아웃](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#large-rollouts)에서 얼마나 높일지 보여줍니다. |1412| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | `/device`에서의 `user_code` 제출에 대한 IP별 속도 제한입니다. 다른 사람이 다른 개발자의 코드를 추측하지 못하도록 막는 역할을 합니다. [대규모 롤아웃](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#large-rollouts)에서 얼마나 늘려야 하는지 보여 줍니다. |

1404 1413 

1405두 `access_control` 목록을 기본값대로 모두 비워 두면, 게이트웨이는 모든 클라이언트 주소를 처리하므로 네트워크만이 접근할 수 있는 대상을 제한합니다. 게이트웨이는 개발자 머신에서 명령을 실행하는 [관리형 설정](#managed)을 푸시할 수 있으므로 이 점이 중요합니다.1414기본값대로 두 `access_control` 목록을 모두 비워 두면 게이트웨이는 모든 클라이언트 주소에 응답하므로, 게이트웨이에 접근할 수 있는 대상은 네트워크에 의해서만 제한됩니다. 게이트웨이는 개발자 머신에서 명령을 실행하는 [관리형 설정](#managed)을 푸시할 수 있으므로 이 점이 중요합니다.

1406 1415 

1407`allow_cidrs`가 비어 있는 동안 게이트웨이는 요청에 응답하는 방식은 변경하지 않고 두 곳에서 경고합니다.1416`allow_cidrs`가 비어 있는 동안 게이트웨이는 요청에 응답하는 방식은 바꾸지 않고 두 곳에서 경고합니다.

1408 1417 

1409* **부팅 시**: 운영 로그의 경고는 사설 범위 `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128`, `fc00::/7`과 개발자가 연결하는 기타 내부 범위만 허용하도록 권장합니다. 로컬 개발처럼 게이트웨이를 루프백 주소에 바인딩하고 `trusted_proxies`와 `public_url`을 모두 설정하지 않으면 경고가 나타나지 않습니다.1418* **부팅 시**: 운영 로그의 경고가 사설 범위 `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128`, `fc00::/7`과 개발자가 연결하는 기타 내부 범위만 허용하도록 권장합니다. 로컬 개발에서처럼 게이트웨이를 루프백 주소에 바인딩하고 `trusted_proxies`와 `public_url`을 모두 설정하지 않으면 경고가 나타나지 않습니다.

1410* **런타임 시**: 해당 사설 범위 밖의 주소에서 요청이 처음 도착하면, 게이트웨이는 경고를 로그에 기록하고 클라이언트 IP를 포함한 [`access.public_client` 감사 이벤트](https://code.claude.com/docs/ko/claude-apps-gateway-deploy#logs)를 생성합니다. 둘 다 프로세스당 한 번 발생합니다. 링크 로컬 주소 `169.254.0.0/16`과 `fe80::/10`은 공용으로 간주되지 않습니다. 게이트웨이는 이 확인이 실행되기 전에 `/healthz`와 `/readyz`에 응답하므로, 공용 범위에서 오는 헬스 프로브는 이를 트리거하지 않습니다.1419* **런타임 시**: 이러한 사설 범위 밖의 주소에서 처음으로 요청이 도착하면, 게이트웨이는 경고를 로그에 기록하고 클라이언트 IP를 포함한 [`access.public_client` 감사 이벤트](https://code.claude.com/docs/ko/claude-apps-gateway-deploy#logs)를 발생시킵니다. 둘 다 프로세스당 한 번 발생합니다. 링크 로컬 주소인 `169.254.0.0/16`과 `fe80::/10`은 공용으로 간주되지 않습니다. 게이트웨이는 이 확인이 실행되기 전에 `/healthz`와 `/readyz`에 응답하므로, 공용 범위에서 오는 상태 프로브는 이 확인을 트리거하지 않습니다.

1411 1420 

1412두 신호 모두 게이트웨이가 확인한 클라이언트 주소를 사용합니다. 로드 밸런서, 포트 포워드 또는 터널이 트래픽을 중계하면서 `listen.trusted_proxies`에 나열되어 있지 않으면, 게이트웨이는 보통 사설 주소인 중계 장치의 주소를 보게 되므로, 런타임 경고와 사설 허용 목록 모두 해당 장치를 통해 중계된 트래픽을 잡아내지 못합니다.1421두 신호 모두 게이트웨이가 확인한 클라이언트 주소를 사용합니다. 로드 밸런서, 포트 포워드 또는 터널이 트래픽을 중계하면서 `listen.trusted_proxies`에 등록되어 있지 않으면, 게이트웨이는 일반적으로 사설 주소인 중계 장치의 주소를 보게 되므로 런타임 경고와 사설 허용 목록 모두 이를 통해 중계된 트래픽을 잡아내지 못합니다.

1413 1422 

1414이러한 프런트 엔드 뒤에서는 먼저 [`listen.trusted_proxies`](#listen)를 설정하여 게이트웨이가 실제 클라이언트 주소를 보도록 하고, 그와 관계없이 게이트웨이와 그 앞에 있는 모든 것을 공용 인터넷에서 접근할 수 없도록 유지하십시오.1423이러한 프런트 엔드 뒤에서는 게이트웨이가 실제 클라이언트 주소를 볼 수 있도록 먼저 [`listen.trusted_proxies`](#listen)를 설정하고, 어떤 경우에도 게이트웨이와 그 앞에 있는 모든 것이 공용 인터넷에서 접근할 수 없도록 유지합니다.

1415 1424 

1416### `load_test_mode`1425### `load_test_mode`

1417 1426 

1418`load_test_mode` 블록을 사용하면 모델 제공자를 호출하지 않고 게이트웨이를 부하 테스트할 수 있습니다. 이 모드가 켜져 있는 동안 게이트웨이는 평소처럼 각 제공자 요청을 빌드하고 서명한 뒤, 전송하지 않고 폐기하며, 일반 응답 경로를 통해 미리 준비된 응답을 스트리밍합니다. 응답은 미리 준비된 응답임을 알리는 문장으로 시작하는 채움 텍스트입니다.1427`load_test_mode` 블록을 사용하면 모델 제공자를 호출하지 않고 게이트웨이의 부하 테스트를 수행할 수 있습니다. 이 모드가 켜져 있는 동안 게이트웨이는 평소처럼 각 제공자 요청을 빌드하고 서명한 다음, 전송하는 대신 폐기하고 일반 응답 경로를 통해 미리 준비된 응답을 스트리밍합니다. 응답은 미리 준비된 응답임을 알리는 문장으로 시작하는 채우기 텍스트입니다.

1419 1428 

1420게이트웨이 서버에 Claude Code v2.1.282 이상이 필요합니다. 이전 버전의 게이트웨이는 이 키를 발견하면 시작을 거부합니다. 블록을 추가하기 전에 모든 레플리카를 업그레이드하고, 롤백하기 전에 블록을 제거하십시오.1429게이트웨이 서버에 Claude Code v2.1.282 이상이 필요합니다. 이전 버전의 게이트웨이는 이 키를 발견하면 시작을 거부합니다. 블록을 추가하기 전에 모든 복제본을 업그레이드하고, 롤백하기 전에 블록을 제거하세요.

1421 1430 

1422아래 예시는 기본값으로 모드를 켜며, 약 750 토큰 분량의 텍스트 응답을 약 10초에 걸쳐 스트리밍합니다.1431아래 예시는 기본값으로 모드를 켜며, 약 750 토큰 분량의 텍스트 응답을 약 10초에 걸쳐 스트리밍합니다.

1423 1432 


1430 1439 

1431| 필드 | 필수 | 설명 |1440| 필드 | 필수 | 설명 |

1432| - | - | - |1441| - | - | - |

1433| `enabled` | 예 | `true`는 모드를 켭니다. `false`는 모드를 끈 상태로 파일에 수치를 유지합니다. 이 필드 없이 블록이 있으면 게이트웨이는 시작을 거부합니다. |1442| `enabled` | 예 | `true`는 모드를 켭니다. `false`는 모드를 끈 상태로 파일에 값을 유지합니다. 이 필드 없이 블록이 있으면 게이트웨이는 시작을 거부합니다. |

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

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

1436 1445 

1437이 모드의 부하 테스트는 게이트웨이, Postgres, 그리고 게이트웨이 앞에 있는 모든 것을 다룹니다. 제공자의 제한, 속도 또는 네트워크 경로는 다루지 않습니다.1446이 모드의 부하 테스트는 게이트웨이, Postgres, 게이트웨이 앞에 있는 모든 것을 대상으로 합니다. 제공자의 제한, 속도, 네트워크 경로는 대상으로 하지 않습니다.

1438 1447 

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

1440 1449 

1441모드가 켜져 있는 동안 요청은 최대 일곱 자리 정수를 담은 `x-load-test-user` 헤더를 포함할 수 있습니다. 게이트웨이는 각 숫자를 별도의 개발자로 계산하며, 요청과 함께 온 토큰의 개발자 이메일과 그룹을 사용합니다.1450모드가 켜져 있는 동안 요청에 최대 일곱 자리 정수를 담은 `x-load-test-user` 헤더를 포함할 수 있습니다. 게이트웨이는 각 숫자를 별도의 개발자로 간주하며, 요청과 함께 전달된 토큰의 개발자 이메일과 그룹을 사용합니다.

1442 1451 

1443부하 테스트 배포에는 별도의 빈 데이터베이스를 제공하십시오. 게이트웨이는 이미 어떤 개발자라도 사용량이 발생한 데이터베이스에서는 모드가 켜진 상태로 시작하기를 거부하기 때문입니다.1452부하 테스트 배포에는 전용의 빈 데이터베이스를 제공하세요. 이미 어떤 개발자라도 사용량이 발생한 데이터베이스에서는 게이트웨이가 이 모드를 켠 상태로 시작을 거부하기 때문입니다.

1444 1453 

1445> [!WARNING]1454> [!WARNING]

1446>1455>

1447> 개발자가 사용하는 게이트웨이에서는 절대 이 모드를 켜지 마십시오. 모든 요청이 미리 준비된 응답을 받으며 어떤 모델도 호출되지 않습니다. 게이트웨이는 모드가 켜져 있는 동안 부팅 시 `load_test_mode is on` 경고를 로그에 기록하고 각 `inference` [감사 이벤트](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#logs)에 `load_test: true`를 표시합니다.1456> 개발자가 사용하는 게이트웨이에서는 절대 이 모드를 켜지 마세요. 모든 요청이 미리 준비된 응답을 받고 모델은 호출되지 않습니다. 모드가 켜져 있는 동안 게이트웨이는 부팅 시 `load_test_mode is on` 경고를 로그에 기록하고, 각 `inference` [감사 이벤트](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#logs)에 `load_test: true`를 표시합니다.

1448 1457 

1449## 완전한 예제1458## 완전한 예제

1450 1459 

Details

228 228 

229Teleport는 claude.ai 구독 인증이 필요합니다. 해당하는 경우를 찾으십시오:229Teleport는 claude.ai 구독 인증이 필요합니다. 해당하는 경우를 찾으십시오:

230 230 

231* **API 키를 통해 인증된 경우**: `/login`을 실행하여 대신 claude.ai 계정으로 로그인합니다231* **API 키 또는 Console 계정으로 로그인한 경우**: 셸에서 `claude auth login`을 실행한 다음 claude.ai로 로그인합니다

232* **오류가 제공자의 이름을 표시하는 경우**: 클라우드 세션은 타사 제공자를 통해 사용할 수 없습니다. [오류 테이블](#errors-when-sending-to-a-cloud-session)을 참조하십시오232* **오류가 제공자의 이름을 표시하는 경우**: 클라우드 세션은 타사 제공자를 통해 사용할 수 없습니다. [오류 테이블](#errors-when-sending-to-a-cloud-session)을 참조하십시오

233* **이미 claude.ai를 통해 로그인한 경우**: 조직이 클라우드 세션을 비활성화했을 수 있습니다233* **이미 claude.ai를 통해 로그인한 경우**: 조직이 클라우드 세션을 비활성화했을 수 있습니다

234 234 


437 437 

438### Unable to get organization UUID438### Unable to get organization UUID

439 439 

440`claude --cloud` 및 `claude --teleport`를 사용하려면 claude.ai 계정으로 로그인해야 합니다. API 키로 인증하거나 저장된 계정 정보가 오래된 경우 다음 중 하나가 표시됩니다.440`claude --cloud` 및 `claude --teleport`를 사용하려면 claude.ai 계정으로 로그인해야 합니다. 대신 API 키나 Console 로그인으로 인증하거나 저장된 계정 정보가 오래된 경우 다음과 같은 메시지가 표시됩니다.

441 441 

442* `Unable to get organization UUID`442* `Unable to get organization UUID`

443* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``443* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

444* ``Cloud sessions aren't available with this Console sign-in. They need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

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

445 446 

446셸에서 [`claude auth login`](https://code.claude.com/docs/ko/cli-reference#cli-commands)을 실행하여 claude.ai 계정으로 로그인한 다음 명령을 재시도합니다. 실행 중인 세션 안에서는 `/login`이 같은 역할을 합니다. 오류에 공급자 이름이 표시된다면 [오류 표](#errors-when-sending-to-a-cloud-session)를 참고하십시오. 클라우드 세션은 서드파티 공급자를 통해서는 사용할 수 없습니다.447셸에서 [`claude auth login`](https://code.claude.com/docs/ko/cli-reference#cli-commands)을 실행하여 claude.ai 계정으로 로그인한 다음 명령을 재시도합니다. 실행 중인 세션 안에서는 `/login`이 같은 역할을 합니다. 오류에 공급자 이름이 표시된다면 [오류 표](#errors-when-sending-to-a-cloud-session)를 참고하십시오. 클라우드 세션은 서드파티 공급자를 통해서는 사용할 수 없습니다.

Details

132| `tasks/` | 작업 도구로 작성된 작업 목록, 목록당 하나의 디렉토리 |132| `tasks/` | 작업 도구로 작성된 작업 목록, 목록당 하나의 디렉토리 |

133| `shell-snapshots/` | 시작 시 캡처된 별칭, 함수 및 셸 옵션. [Bash tool](https://code.claude.com/docs/ko/tools-reference.md#bash-tool-behavior)에 의해 각 명령에 적용됩니다. 정상 종료 시 제거됩니다. 스윕은 충돌 후 남은 것을 정리합니다. |133| `shell-snapshots/` | 시작 시 캡처된 별칭, 함수 및 셸 옵션. [Bash tool](https://code.claude.com/docs/ko/tools-reference.md#bash-tool-behavior)에 의해 각 명령에 적용됩니다. 정상 종료 시 제거됩니다. 스윕은 충돌 후 남은 것을 정리합니다. |

134| `backups/` | `~/.claude.json`의 이전 버전, Claude Code가 파일을 다시 쓸 때 복사됨. Claude Code는 가장 최신 5개와 구문 분석할 수 없는 모든 버전의 복사본을 유지합니다. |134| `backups/` | `~/.claude.json`의 이전 버전, Claude Code가 파일을 다시 쓸 때 복사됨. Claude Code는 가장 최신 5개와 구문 분석할 수 없는 모든 버전의 복사본을 유지합니다. |

135| `feedback-bundles/` | `/feedback`에 의해 작성된 수정된 트랜스크립트 아카이브. 타사 제공자에게 또는 Anthropic 자격증명이 구성되지 않았을 때 Anthropic 계정 팀에 보내기 위해 |135| `feedback-bundles/` | 타사 제공자에서 또는 Anthropic 자격증명이 구성되지 않았을 때 `/feedback`이 작성한 수정된 트랜스크립트 아카이브. Anthropic 계정 팀에 보내기 위한 것입니다 |

136| `feedback/drafts/` | 대기 중인 [Claude 작성 피드백](https://code.claude.com/docs/ko/tools-reference.md#sendfeedback-tool-behavior). `/feedback`에서 검토 대기 중입니다. `cleanupPeriodDays` 또는 30일 후 스윕됨. 큐가 10개 초안 제한에 도달하면 Claude Code는 가장 오래된 초안을 삭제하여 공간을 확보합니다. |136| `feedback/drafts/` | 대기 중인 [Claude 작성 피드백](https://code.claude.com/docs/ko/tools-reference.md#sendfeedback-tool-behavior). `/feedback`에서 검토 대기 중입니다. `cleanupPeriodDays` 또는 30일 후 스윕됨. 큐가 10개 초안 제한에 도달하면 Claude Code는 가장 오래된 초안을 삭제하여 공간을 확보합니다. |

137| `usage-data/` | `report.html` 및 [`/insights`](https://code.claude.com/docs/ko/costs#analyze-your-usage-patterns)에 의해 작성된 타임스탬프 보고서 복사본, 그리고 이를 구축하는 데 사용되는 캐시된 세션별 분석 데이터 |137| `usage-data/` | `report.html` 및 [`/insights`](https://code.claude.com/docs/ko/costs#analyze-your-usage-patterns)에 의해 작성된 타임스탬프 보고서 복사본, 그리고 이를 구축하는 데 사용되는 캐시된 세션별 분석 데이터 |

138| `skills/.trash/`, `plugins/.trash/` | [Skills](https://code.claude.com/docs/ko/skills.md#how-synced-skills-behave) 및 [plugins](https://code.claude.com/docs/ko/plugins/loading.md#synced-plugins). claude.ai 동기화가 제거한 것. 예를 들어 claude.ai에서 하나를 끄거나 동기화를 중지한 후. 파일은 스윕이 삭제할 때까지 복구할 수 있도록 여기에 남아 있습니다 |138| `skills/.trash/`, `plugins/.trash/` | [Skills](https://code.claude.com/docs/ko/skills.md#how-synced-skills-behave) 및 [plugins](https://code.claude.com/docs/ko/plugins/loading.md#synced-plugins). claude.ai 동기화가 제거한 것. 예를 들어 claude.ai에서 하나를 끄거나 동기화를 중지한 후. 파일은 스윕이 삭제할 때까지 복구할 수 있도록 여기에 남아 있습니다 |

Details

99 99 

100다음 요구 사항에 따라 시크릿을 추가할 수 있는지, 그리고 추가된 후 에이전트 프록시가 이를 사용할 수 있는지가 결정됩니다.100다음 요구 사항에 따라 시크릿을 추가할 수 있는지, 그리고 추가된 후 에이전트 프록시가 이를 사용할 수 있는지가 결정됩니다.

101 101 

102* **역할**: Pro, Max, Team 요금제에서는 역할과 관계없이 본인 환경에 시크릿을 추가하고 삭제할 수 있습니다. Team 및 Enterprise에서는 Owner가 claude.ai 조직에서 조직 관리자 역할을 보유하고 Admin은 보유하지 않으며, 이에 따라 다음 경우에 표시되는 내용이 달라집니다.102* **역할**: 모든 요금제에서 역할과 관계없이 본인 환경에 시크릿을 추가하고 삭제할 수 있습니다. Team 및 Enterprise에서는 Owner가 claude.ai 조직에서 조직 관리자 역할을 보유하고 Admin은 보유하지 않으며, 이에 따라 다음 경우에 표시되는 내용이 달라집니다.

103 * **Enterprise의 본인 환경**: 조직 관리자 역할이 있으면 시크릿을 추가하고 삭제할 수 있습니다. 역할이 없으면 **Network secrets** 행을 선택했을 때 "Only an organization admin can add or delete network secrets"라는 안내와 함께 시크릿 목록이 열리며, **Add secret** 또는 삭제 버튼은 표시되지 않습니다. Owner에게 [공유 환경](#organization-shared-environments)에 시크릿을 추가하도록 요청한 다음 해당 환경에서 세션을 실행하십시오103 * **본인 환경**: 조직 관리자 역할이 없으면 **Add secret**을 선택했을 때 [간소화된 양식](#add-a-secret-without-the-role)이 열립니다

104 * **공유 환경**: Owner가 관리자 설정에서 [시크릿을 추가하고 삭제](#add-a-credential)합니다. 조직 관리자 역할이 없으면 환경의 대화 상자에 **Network secrets** 섹션이 없으므로 Owner에게 시크릿 추가를 요청하십시오104 * **공유 환경**: Owner가 관리자 설정에서 [시크릿을 추가하고 삭제](#add-a-credential)합니다. 조직 관리자 역할이 없으면 환경의 대화 상자에 **Network secrets** 섹션이 없으므로 Owner에게 시크릿 추가를 요청하십시오

105 * **Team의 본인 환경**: 조직 관리자 역할이 없으면 **Add secret**을 선택했을 때 호스트 하나를 입력하는 [간소화된 양식](#add-a-secret-without-the-role)이 열립니다

106* **환경 유형**: 이미 존재하는 Anthropic 호스팅 클라우드 환경이어야 합니다. [자체 호스팅 환경](https://code.claude.com/docs/ko/self-hosted-environments)에는 네트워크 시크릿이 없습니다105* **환경 유형**: 이미 존재하는 Anthropic 호스팅 클라우드 환경이어야 합니다. [자체 호스팅 환경](https://code.claude.com/docs/ko/self-hosted-environments)에는 네트워크 시크릿이 없습니다

107* **API 접근성**: 요청이 Anthropic의 네트워크에서 나가므로 API가 인터넷으로부터의 연결을 허용해야 합니다106* **API 접근성**: 요청이 Anthropic의 네트워크에서 나가므로 API가 인터넷으로부터의 연결을 허용해야 합니다

108* **암호화 키**: 조직에서 고객 관리형 암호화 키를 사용하는 경우 네트워크 시크릿을 저장할 수 없습니다107* **암호화 키**: 조직에서 고객 관리형 암호화 키를 사용하는 경우 네트워크 시크릿을 저장할 수 없습니다


111 110 

112시크릿은 한 번에 하나씩 추가합니다. 시크릿의 호스트나 값을 변경하려면 삭제한 후 다시 추가하십시오.111시크릿은 한 번에 하나씩 추가합니다. 시크릿의 호스트나 값을 변경하려면 삭제한 후 다시 추가하십시오.

113 112 

114[공유 환경](#organization-shared-environments)에 시크릿을 추가하려면 [관리자 설정](https://claude.ai/admin-settings)의 **Cloud environments** 페이지에서 환경을 편집용으로 연 다음 **Network secrets** 섹션에서 2단계부터 이어서 진행하십시오. Team 요금제를 사용 중이며 [조직 관리자 역할](#requirements)이 없다면 본인 환경에서 1단계를 진행한 다음 [간소화된 양식을 작성](#add-a-secret-without-the-role)하십시오.113[공유 환경](#organization-shared-environments)에 시크릿을 추가하려면 [관리자 설정](https://claude.ai/admin-settings)의 **Cloud environments** 페이지에서 환경을 편집용으로 연 다음 **Network secrets** 섹션에서 2단계부터 이어서 진행하십시오. Team 또는 Enterprise 요금제를 사용 중이며 [조직 관리자 역할](#requirements)이 없다면 본인 환경에서 1단계를 진행한 다음 [간소화된 양식을 작성](#add-a-secret-without-the-role)하십시오.

115 114 

116**1. 환경의 네트워크 시크릿 열기**115**1. 환경의 네트워크 시크릿 열기**

117 116 


133 132 

134시크릿이 작동하는지 확인하려면 해당 환경에서 세션을 시작하고 Claude에게 `curl` 등으로 API를 호출하도록 요청하십시오. API는 요청에 키가 포함된 것처럼 응답하며, 키는 세션의 환경 변수나 어떤 파일에도 나타나지 않습니다. 목록에서 시크릿이 **Not sent**로 표시되면 그 아래의 안내에 이유와 조치 방법이 나와 있습니다. 호스트가 정확히 일치하지 않으면서 겹치는 두 시크릿에는 표시가 붙지 않으며, 에이전트 프록시는 그중 하나만 전송합니다.133시크릿이 작동하는지 확인하려면 해당 환경에서 세션을 시작하고 Claude에게 `curl` 등으로 API를 호출하도록 요청하십시오. API는 요청에 키가 포함된 것처럼 응답하며, 키는 세션의 환경 변수나 어떤 파일에도 나타나지 않습니다. 목록에서 시크릿이 **Not sent**로 표시되면 그 아래의 안내에 이유와 조치 방법이 나와 있습니다. 호스트가 정확히 일치하지 않으면서 겹치는 두 시크릿에는 표시가 붙지 않으며, 에이전트 프록시는 그중 하나만 전송합니다.

135 134 

136#### 조직 관리자 역할 없이 Team 요금제에서 시크릿 추가하기135#### 조직 관리자 역할 없이 시크릿 추가하기

137 136 

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

139 138 

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

141* **Name**: 시크릿의 선택적 레이블140* **Name**: 시크릿의 선택적 레이블

computer-use.md +10 −10

Details

68충돌하지 않는지 확인합니다. 발견한 오류 상태를 스크린샷합니다.68충돌하지 않는지 확인합니다. 발견한 오류 상태를 스크린샷합니다.

69```69```

70 70 

71## 세션별 앱 승인71## 세션별로 앱 승인하기

72 72 

73`computer-use` 서버를 활성화해도 Claude에게 컴퓨터의 모든 앱에 대한 액세스 권한이 부여되지는 않습니다. Claude가 세션에서 특정 앱이 필요한 첫 번째 시간에 터미널에 프롬프트가 나타나며 다음을 표시합니다.73`computer-use` 서버를 활성화해도 Claude가 컴퓨터의 모든 앱에 접근할 수 있는 것은 아닙니다. 세션에서 Claude가 특정 앱을 처음 필요로 할 때 터미널에 다음 내용을 보여 주는 프롬프트가 나타납니다.

74 74 

75* Claude가 제어하려는 앱75* Claude가 제어하려는 앱

76* 클립보드 액세스와 같은 요청된 추가 권한76* 클립보드 접근 등 요청된 추가 권한

77* Claude가 작업하는 동안 숨겨질 다른 앱의 수77* Claude가 작업하는 동안 숨겨질 다른 앱의 수

78 78 

79**이 세션에 대해 허용** 또는 **거부**를 선택합니다. 승인은 현재 세션 동안 지속됩니다. Claude가 함께 요청할 때 여러 앱을 한 번에 승인할 수 있습니다.79**Allow for this session** 또는 **Deny**를 선택합니다. 승인은 현재 세션 동안 유지됩니다. Claude가 여러 앱을 함께 요청하면 한 번에 여러 앱을 승인할 수 있습니다.

80 80 

81광범위한 도달 범위를 가진 앱은 프롬프트에 추가 경고를 표시하므로 승인이 부여하는 것을 알 수 있습니다.81접근 범위가 넓은 앱은 프롬프트에 추가 경고가 표시되므로 해당 앱을 승인하면 어떤 권한이 부여되는지 알 수 있습니다.

82 82 

83| 경고 | 적용 대상 |83| 경고 | 적용 대상 |

84| :- | :- |84| :- | :- |

85| 셸 액세스와 동등 | Terminal, iTerm, VS Code, Warp 및 기타 터미널 및 IDE |85| 셸 접근과 동일 | Terminal, iTerm, VS Code, Warp 및 기타 터미널과 IDE |

86| 모든 파일을 읽거나 쓸 수 있음 | Finder |86| 모든 파일을 읽거나 쓸 수 있음 | Finder |

87| 시스템 설정을 변경할 수 있음 | 시스템 설정 |87| 시스템 설정을 변경할 수 있음 | System Settings |

88 88 

89이러한 앱은 차단되지 않습니다. 경고를 통해 작업이 해당 수준의 액세스를 보장하는지 결정할 수 있습니다.89이러한 앱은 차단되지 않습니다. 경고는 작업에 해당 수준의 접근이 필요한지 판단하는 데 도움을 줍니다.

90 90 

91Finder를 승인하면 Claude가 데스크톱, Dock 또는 Finder 윈도우를 클릭할 수 있습니다.91Claude가 데스크톱, Dock 또는 Finder 창을 클릭할 수 있도록 하려면 Finder를 승인합니다.

92 92 

93Claude의 제어 수준은 앱 카테고리에 따라 다릅니다. 브라우저와 거래 플랫폼은 보기 전용이고, 터미널과 IDE는 클릭 전용이며, 다른 모든 것은 전체 제어를 얻습니다. 전체 계층 분석은 [Desktop의 앱 권한](https://code.claude.com/docs/ko/desktop.md#app-permissions)을 참조하세요.93Claude의 제어 수준은 앱 카테고리에 따라서도 달라집니다. 브라우저와 트레이딩 플랫폼은 보기 전용, 터미널과 IDE는 클릭 전용이며, 그 외 모든 앱은 전체 제어가 가능합니다. 전체 등급 구분은 [Desktop의 앱 권한](https://code.claude.com/docs/ko/desktop.md#app-permissions)을 참조하세요.

94 94 

95## Claude가 화면에서 작동하는 방식95## Claude가 화면에서 작동하는 방식

96 96 

Details

45 45 

46## 컨텍스트가 가득 찰 때46## 컨텍스트가 가득 찰 때

47 47 

48Claude Code는 제한에 접근할 때 자동으로 압축하므로 컨텍스트 윈도우가 가득 차도 세션이 끝나지 않습니다. 자동 패스는 타임라인의 `/compact` 단계와 동일한 방식으로 작동합니다. [컨텍스트가 가득 찰 때](https://code.claude.com/docs/ko/how-claude-code-works.md#when-context-fills-up)에서 보존되는 항목을 참조하세요. 유휴 상태로 둔 대화도 Claude Code가 압축하는 경우에 대해서는 [유휴 압축](https://code.claude.com/docs/ko/settings-reference.md#idlecompaction)을 참조하세요.48Claude Code는 한도에 가까워지면 자동으로 압축하므로, 컨텍스트 윈도우가 가득 차도 세션이 끝나지 않습니다. 자동 압축은 타임라인의 `/compact` 단계와 같은 방식으로 작동합니다. 무엇이 보존되는지는 [컨텍스트가 가득 찰 때](https://code.claude.com/docs/ko/how-claude-code-works.md#when-context-fills-up)를 참조하세요. 유휴 상태로 둔 대화를 Claude Code가 압축하는 경우에 대해서는 [유휴 압축](https://code.claude.com/docs/ko/settings-reference.md#idlecompaction)을 참조하세요.

49 49 

50자동 패스가 실행되기 전에 조치를 취할 수도 있습니다:50자동 압축이 실행되기 전에 직접 조치를 취할 수도 있습니다.

51 51 

52* **포커스를 맞춰 압축**: 긴 새 작업을 시작하기 전에 `/compact focus on the auth bug fix`와 같은 지시사항과 함께 `/compact`를 실행하세요. 요약은 자동 패스가 추측하는 중요한 항목 대신 사용자가 선택한 항목을 유지합니다.52* **초점을 지정하여 압축**: 긴 새 작업을 시작하기 전에 `/compact focus on the auth bug fix`처럼 지침과 함께 `/compact`를 실행합니다. 요약에는 자동 압축이 중요하다고 추측한 내용 대신 사용자가 선택한 내용이 유지됩니다.

53* **대화의 일부 압축**: `/rewind`를 실행하고 메시지를 선택한 다음 **여기서부터 요약** 또는 **여기까지 요약**을 선택하세요. [되감기 및 요약](https://code.claude.com/docs/ko/checkpointing.md#rewind-and-summarize)에서 각 옵션이 유지하는 항목과 요약을 안내하는 방법을 참조하세요.53* **대화의 일부를 압축**: `/rewind`를 실행하고 메시지를 선택한 다음 **Summarize from here** 또는 **Summarize up to here**를 선택합니다. 각 옵션이 무엇을 유지하는지와 요약을 안내하는 방법은 [되감기 및 요약](https://code.claude.com/docs/ko/checkpointing.md#rewind-and-summarize)을 참조하세요.

54* **더 일찍 압축**: [`/autocompact`](https://code.claude.com/docs/ko/commands#all-commands)를 토큰 수와 함께 실행하세요(예: `/autocompact 500k`). 자동 패스가 실행되기 전에 컨텍스트 윈도우가 얼마나 가득 차는지 설정합니다. [자동 압축 윈도우 설정](https://code.claude.com/docs/ko/model-config.md#set-the-auto-compact-window)에서 허용되는 값과 재정의를 참조하세요.54* **더 일찍 압축**: `/autocompact 500k`처럼 토큰 수와 함께 [`/autocompact`](https://code.claude.com/docs/ko/commands#all-commands)를 실행하여 자동 압축이 실행되기 전에 컨텍스트 윈도우가 얼마나 찰 수 있는지 설정합니다. 허용되는 값과 재정의 방법은 [자동 압축 윈도우 설정](https://code.claude.com/docs/ko/model-config.md#set-the-auto-compact-window)을 참조하세요.

55* **작업 간 지우기**: 관련 없는 작업으로 전환할 때 `/clear`를 실행하세요. 오래된 대화는 다음에 필요한 파일을 밀어내고 모든 메시지에서 토큰을 소비합니다.55* **작업 사이에 지우기**: 관련 없는 작업으로 전환할 때 `/clear`를 실행합니다. 이전 대화는 다음에 필요한 파일이 들어갈 공간을 차지하고 모든 메시지마다 토큰을 소비합니다.

56* **대용량 읽기 위임**: 연구를 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md)에 보내 파일 콘텐츠가 사용자의 컨텍스트 윈도우가 아닌 서브에이전트의 컨텍스트 윈도우에 유지되도록 하세요.56* **대용량 읽기 위임**: 조사 작업을 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md)에 맡기면 파일 내용이 사용자의 컨텍스트 윈도우가 아닌 서브에이전트의 컨텍스트 윈도우에 남습니다.

57 57 

58더 작은 대화보다 더 큰 윈도우가 필요한 경우 Fable 모델, Sonnet 5 이상, Haiku 5.5, Opus 4.6 이상, Sonnet 4.6은 100만 토큰 컨텍스트 윈도우를 지원합니다. 플랜별 가용성 및 `[1m]` 모델 변형을 선택하는 방법은 [확장 컨텍스트](https://code.claude.com/docs/ko/model-config.md#extended-context)를 참조하세요. 압축은 더 큰 제한에서도 동일한 방식으로 작동합니다.58대화를 줄이는 대신 더 큰 윈도우가 필요하다면, Fable 모델, Sonnet 5 이상, Haiku 5.5, Opus 4.6 이상, Sonnet 4.6은 100만 토큰 컨텍스트 윈도우를 지원합니다. 플랜별 사용 가능 여부와 `[1m]` 모델 변형을 선택하는 방법은 [확장 컨텍스트](https://code.claude.com/docs/ko/model-config.md#extended-context)를 참조하세요. 더 큰 한도에서도 압축은 동일하게 작동합니다.

59 59 

60자동 압축이 실행되는 지점은 모델과 구성에 따라 다릅니다. [기본 자동 압축 임계값](https://code.claude.com/docs/ko/model-config.md#default-auto-compact-thresholds)에서 모델별 경계를 참조하고, Claude Code가 모델 ID(예: [LLM 게이트웨이](https://code.claude.com/docs/ko/llm-gateway) 별칭)에 대해 잘못된 윈도우를 가정하는 경우 [게이트웨이 또는 사용자 정의 모델 ID에 대한 윈도우 수정](https://code.claude.com/docs/ko/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id)을 참조하세요.60자동 압축이 실행되는 시점은 모델과 구성에 따라 다릅니다. 모델별 경계는 [기본 자동 압축 임계값](https://code.claude.com/docs/ko/model-config.md#default-auto-compact-thresholds)을 참조하고, [LLM 게이트웨이](https://code.claude.com/docs/ko/llm-gateway) 별칭처럼 Claude Code가 모델 ID에 대해 잘못된 윈도우를 가정하는 경우에는 [게이트웨이 또는 사용자 지정 모델 ID에 맞게 윈도우 수정](https://code.claude.com/docs/ko/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id)을 참조하세요.

61 61 

62## 자신의 세션 확인62## 자신의 세션 확인

63 63 

Details

36다음 프로세스는 런처를 통해 시작하지 않습니다:36다음 프로세스는 런처를 통해 시작하지 않습니다:

37 37 

38* 터미널에서 직접 시작하는 세션으로, 호출한 방식대로 실행됩니다. 이러한 세션을 포함하려면 `PATH`의 이전 디렉터리에 `claude`라는 이름의 스크립트를 배치하여 실제 바이너리로 런처를 실행하십시오. 관리되는 심볼릭 링크를 교체하지 마십시오. 백그라운드 서비스와 해당 세션은 `PATH` 조회 없이 시작되므로 두 런처는 거기서 스택되지 않습니다.38* 터미널에서 직접 시작하는 세션으로, 호출한 방식대로 실행됩니다. 이러한 세션을 포함하려면 `PATH`의 이전 디렉터리에 `claude`라는 이름의 스크립트를 배치하여 실제 바이너리로 런처를 실행하십시오. 관리되는 심볼릭 링크를 교체하지 마십시오. 백그라운드 서비스와 해당 세션은 `PATH` 조회 없이 시작되므로 두 런처는 거기서 스택되지 않습니다.

39* `claude-cli://` 딥 링크의 첫 번째 프로세스로, 운영 체제의 프로토콜 핸들러가 직접 시작합니다. 해당 세션이 백그라운드에서 시작하는 모든 것은 런처를 통해 실행됩니다. 이 경로를 완전히 닫으려면 `disableDeepLinkRegistration` 설정으로 [핸들러 등록을 방지](https://code.claude.com/docs/ko/deep-links.md#registration-and-supported-platforms)하십시오.39* `claude-cli://` 딥 링크에서 열린 세션으로, 런처 없이 새 터미널에서 시작됩니다. 딥 링크가 새 사용자에 대해 세션을 열지 않도록 하려면 해당 사용자가 Claude Code를 처음 실행하기 전에 [`disableDeepLinkRegistration`](https://code.claude.com/docs/ko/settings-reference#disabledeeplinkregistration)을 `"disable"`로 설정하십시오. 이미 [등록된 핸들러](https://code.claude.com/docs/ko/deep-links.md#registration-and-supported-platforms)가 있는 사용자의 경우, 이 설정은 핸들러를 제거하지 않으므로 딥 링크가 계속 세션을 엽니다.

40* `--worktree`와 `--tmux`를 함께 수행하는 재시작으로, 터미널 멀티플렉서가 해당 창을 시작하며, Claude Code의 바이너리가 아닙니다.40* `--worktree`와 `--tmux`를 함께 수행하는 재시작으로, 터미널 멀티플렉서가 해당 창을 시작하며, Claude Code의 바이너리가 아닙니다.

41* [Chrome의 Claude](https://code.claude.com/docs/ko/chrome.md)가 등록하는 네이티브 메시징 호스트로, 브라우저가 시작하며, Claude Code의 바이너리가 아닙니다.41* [Chrome의 Claude](https://code.claude.com/docs/ko/chrome.md)가 등록하는 네이티브 메시징 호스트로, 브라우저가 시작하며, Claude Code의 바이너리가 아닙니다.

42 42 

data-usage.md +29 −29

Details

10 10 

11### 데이터 학습 정책11### 데이터 학습 정책

12 12 

13**소비자 사용자(Free, Pro, Max 플랜)**:13**개인 사용자(Free, Pro, Max 플랜)**:

14향후 Claude 모델 개선을 위해 데이터 사용을 허용할 수 있는 선택권을 제공합니다. 이 설정이 켜져 있을 때 Free, Pro, Max 계정의 데이터를 사용하여 새로운 모델을 학습합니다(이러한 계정에서 Claude Code를 사용할 때 포함).14사용자는 향후 Claude 모델 개선에 데이터 사용을 허용할지 선택할 수 있습니다. 이 설정이 켜져 있으면 Anthropic은 Free, Pro, Max 계정의 데이터를 사용하여 새 모델을 학습시킵니다(해당 계정에서 Claude Code를 사용하는 경우 포함).

15 15 

16**상업용 사용자**: (Team 및 Enterprise 플랜, API, 타사 플랫폼, Claude Gov)는 기존 정책을 유지합니다: Anthropic은 상업 약관에 따라 Claude Code로 전송된 코드 또는 프롬프트를 사용하여 생성형 모델을 학습하지 않습니다. 단, 고객이 모델 개선을 위해 데이터를 제공하기로 선택한 경우는 예외입니다(예: [Developer Partner Program](https://support.claude.com/ko/articles/11174108-about-the-development-partner-program)).16**상업 사용자**: (Team 및 Enterprise 플랜, API, 서드파티 플랫폼, Claude Gov) 기존 정책이 유지됩니다. 고객이 모델 개선을 위해 데이터를 제공하기로 선택한 경우(예: [Developer Partner Program](https://support.claude.com/en/articles/11174108-about-the-development-partner-program))가 아니라면, Anthropic은 상업 약관에 따라 Claude Code로 전송된 코드나 프롬프트를 사용하여 생성형 모델을 학습시키지 않습니다.

17 17 

18### Development Partner Program18### Development Partner Program

19 19 

20[Development Partner Program](https://support.claude.com/ko/articles/11174108-about-the-development-partner-program)을 통해 학습할 자료를 제공하는 방법에 명시적으로 옵트인하는 경우, 제공된 자료를 사용하여 모델을 학습할 수 있습니다. 조직 관리자는 조직에 대해 Development Partner Program에 명시적으로 옵트인할 수 있습니다. 이 프로그램은 Anthropic 자체 API에만 사용 가능하며 Amazon Bedrock 또는 Google Cloud의 Agent Platform 사용자는 이용할 수 없습니다.20[Development Partner Program](https://support.claude.com/en/articles/11174108-about-the-development-partner-program) 등을 통해 학습용 자료를 제공하는 방식에 명시적으로 옵트인한 경우, Anthropic은 제공된 자료를 모델 학습에 사용할 수 있습니다. 조직 관리자는 조직 단위로 Development Partner Program에 명시적으로 옵트인할 수 있습니다. 이 프로그램은 Anthropic 퍼스트파티 API에서만 제공되며, Amazon Bedrock 또는 Google Cloud의 Agent Platform 사용자에게는 제공되지 않습니다.

21 21 

22### `/feedback` 명령을 사용한 피드백22### `/feedback` 명령을 통한 피드백

23 23 

24`/feedback` 명령을 사용하여 Claude Code에 대한 피드백을 보내기로 선택한 경우, 피드백을 사용하여 제품 및 서비스를 개선할 수 있습니다. `/feedback`, `/bug`, `/share`를 통해 공유된 대화 기록은 동일한 경로를 통해 보고되며 5년 동안 보관됩니다.24`/feedback` 명령을 사용하여 Claude Code에 대한 피드백을 보내는 경우, Anthropic은 해당 피드백을 제품 및 서비스 개선에 사용할 수 있습니다. `/feedback` 또는 동일한 경로로 보고되는 `/bug` 및 `/share`를 통해 공유된 트랜스크립트는 5년간 보관됩니다.

25 25 

26[Claude가 작성한 피드백](https://code.claude.com/docs/ko/tools-reference.md#sendfeedback-tool-behavior)을 사용하면 Claude가 피드백 보고서를 작성하고 검토할 수 있도록 머신에 대기열에 넣을 수 있습니다. Claude Code는 초안을 보내기로 선택할 때까지 아무것도 전송하지 않으며, 전송된 초안은 다른 `/feedback` 보고서와 동일한 제출 경로 및 보관 기간을 거칩니다.26[Claude가 작성하는 피드백](https://code.claude.com/docs/ko/tools-reference.md#sendfeedback-tool-behavior)을 사용하면 Claude가 피드백 보고서 초안을 작성하여 사용자가 검토할 수 있도록 로컬 머신에 대기시켜 둘 수도 있습니다. 사용자가 초안을 보내기로 선택하기 전까지 Claude Code는 아무것도 전송하지 않으며, 전송된 초안은 다른 `/feedback` 보고서와 동일한 제출 경로 및 보관 정책을 따릅니다.

27 27 

28### 세션 품질 설문조사28### 세션 품질 설문

29 29 

30Claude Code에서 "Claude가 이 세션을 어떻게 수행하고 있나요?"라는 메시지가 표시될 때, 이 설문조사에 응답하면("Dismiss" 선택 포함) 숫자 등급만 기록됩니다. 이 설문조사의 일부로 대화 기록, 입력, 출력 또는 기타 세션 데이터를 수집하거나 저장하지 않습니다. 엄지손가락 위/아래 피드백이나 `/feedback` 보고서와 달리, 이 세션 품질 설문조사는 간단한 제품 만족도 지표입니다.30Claude Code에서 "How is Claude doing this session?" 프롬프트가 표시될 때 이 설문에 응답하면("Dismiss" 선택 포함) 평가만 기록됩니다. 평가 프롬프트 자체의 일부로 대화 트랜스크립트, 입력, 출력 또는 기타 세션 데이터는 수집하거나 저장하지 않습니다. 좋아요/싫어요 피드백이나 `/feedback` 보고서와 달리, 이 세션 품질 설문은 단순한 제품 만족도 지표입니다.

31 31 

32등급 메시지 이후에 "Anthropic이 세션 기록을 확인하여 Claude Code를 개선하는 데 도움을 줄 수 있나요?"라는 별도의 후속 질문이 표시될 수 있습니다. 이는 등급과 구별되는 선택적 두 번째 단계입니다:32평가 프롬프트 이후에 "Can Anthropic look at your session transcript to help us improve Claude Code?"라고 묻는 별도의 후속 질문이 표시될 수 있습니다. 이는 평가와 구별되는 선택적 두 번째 단계입니다.

33 33 

34* **예**: 대화 기록, 모든 서브에이전트 기록, 디스크의 원본 세션 로그 파일을 Anthropic에 업로드합니다. 알려진 API 키 및 토큰 패턴은 업로드 전에 제거됩니다. 소스 코드, 파일 내용 및 기타 대화 내용은 그대로 업로드됩니다. 공유된 기록은 최대 6개월 동안 보관됩니다. Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry, 로그인된 [Claude apps gateway](https://code.claude.com/docs/ko/claude-apps-gateway) 세션에서는 Yes가 동일한 페이로드를 `~/.claude/feedback-bundles/` 아래의 로컬 아카이브에 작성합니다. 파일을 전달할 때까지 아무것도 머신을 떠나지 않습니다.34* **Yes**: 대화 트랜스크립트, 모든 서브에이전트 트랜스크립트, 디스크의 원시 세션 로그 파일을 Anthropic에 업로드합니다. 알려진 API 키 및 토큰 패턴은 업로드 전에 마스킹됩니다. 소스 코드, 파일 내용 및 기타 대화 내용은 그대로 업로드됩니다. 공유된 트랜스크립트는 최대 6개월간 보관됩니다. Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry 및 로그인된 [Claude apps gateway](https://code.claude.com/docs/ko/claude-apps-gateway) 세션에서는 Yes를 선택하면 업로드 대신 동일한 페이로드를 `~/.claude/feedback-bundles/` 아래의 로컬 아카이브에 기록하며, 사용자가 해당 파일을 전달하기 전까지는 아무것도 머신 밖으로 전송되지 않습니다.

35* **아니오**: 아무것도 보내지 않고 거절합니다.35* **No**: 아무것도 전송하지 않고 거절합니다

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

37 37 

38**예**를 명시적으로 선택하지 않으면 아무것도 업로드되지 않습니다. [Zero data retention](https://code.claude.com/docs/ko/zero-data-retention.md)이 있는 조직이거나 조직 정책에 의해 제품 피드백이 비활성화된 조직이거나 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`이 설정된 조직은 이 후속 질문을 볼 수 없습니다. 등급 메시지 이후 제출된 세션 기록을 포함한 이 설문조사에 대한 응답은 데이터 학습 선호도에 영향을 주지 않으며 AI 모델을 학습하는 데 사용될 수 없습니다.38명시적으로 **Yes**를 선택하지 않는 한 아무것도 업로드되지 않습니다. [데이터 무보존(zero data retention)](https://code.claude.com/docs/ko/zero-data-retention.md)이 적용된 조직, 조직 정책으로 제품 피드백이 비활성화된 조직, 또는 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`이 설정된 조직에는 이 후속 질문이 표시되지 않습니다. 평가 프롬프트 이후 제출된 세션 트랜스크립트를 포함하여 이 설문에 대한 응답은 데이터 학습 설정에 영향을 주지 않으며, AI 모델 학습에 사용될 수 없습니다.

39 39 

40이러한 설문조사를 비활성화하려면 `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`을 설정합니다. `DISABLE_TELEMETRY`, `DO_NOT_TRACK` 또는 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`이 설정되면 설문조사도 비활성화됩니다. 비필수 트래픽을 차단하지만 자신의 [OpenTelemetry collector](https://code.claude.com/docs/ko/monitoring-usage.md)를 통해 설문조사 응답을 캡처하는 조직은 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1`을 설정하여 설문조사를 다시 활성화할 수 있습니다. 그러면 설문조사는 구성된 수집기에만 등급을 기록합니다. 기록 공유 후속 및 기타 모든 Anthropic 바운드 피드백 트래픽은 비활성화된 상태로 유지됩니다. 빈도를 제어하려면 설정 파일에서 [`feedbackSurveyRate`](https://code.claude.com/docs/ko/settings-reference#feedbacksurveyrate)를 `0`과 `1` 사이의 확률로 설정합니다.40이 설문을 비활성화하려면 `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`을 설정합니다. `DISABLE_TELEMETRY`, `DO_NOT_TRACK` 또는 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`이 설정된 경우에도 설문이 비활성화됩니다. 필수적이지 않은 트래픽을 차단하지만 자체 [OpenTelemetry 수집기](https://code.claude.com/docs/ko/monitoring-usage.md)를 통해 설문 응답을 수집하는 조직은 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1`을 설정하여 설문을 다시 활성화할 수 있습니다. 이 경우 설문은 구성된 수집기에만 평가를 로그로 기록합니다. 트랜스크립트 공유 후속 질문과 Anthropic으로 향하는 기타 모든 피드백 트래픽은 계속 비활성화됩니다. 비활성화하는 대신 빈도를 조절하려면 설정 파일에서 [`feedbackSurveyRate`](https://code.claude.com/docs/ko/settings-reference#feedbacksurveyrate)를 `0`과 `1` 사이의 확률 값으로 설정합니다.

41 41 

42### 데이터 보관42### 데이터 보존

43 43 

44Anthropic은 계정 유형 및 선호도에 따라 Claude Code 데이터를 보관합니다.44Anthropic은 계정 유형과 사용자 설정에 따라 Claude Code 데이터를 보존합니다.

45 45 

46**소비자 사용자(Free, Pro, Max 플랜)**:46**개인 사용자(Free, Pro, Max 플랜)**:

47 47 

48* 모델 개선을 위한 데이터 사용을 허용하는 사용자: 모델 개발 및 안전 개선을 지원하기 위한 5년 보관 기간48* 모델 개선을 위한 데이터 사용을 허용한 사용자: 모델 개발 및 안전성 개선을 지원하기 위해 5년 보존 기간

49* 모델 개선을 위한 데이터 사용을 허용하지 않는 사용자: 30일 보관 기간49* 모델 개선을 위한 데이터 사용을 허용하지 않은 사용자: 30일 보존 기간

50* 개인정보 보호 설정은 [claude.ai/settings/data-privacy-controls](https://claude.ai/settings/data-privacy-controls)에서 언제든지 변경할 수 있습니다.50* 개인정보 설정은 [claude.ai/settings/data-privacy-controls](https://claude.ai/settings/data-privacy-controls)에서 언제든지 변경할 수 있습니다.

51 51 

52**상업용 사용자(Team, Enterprise, API)**:52**상업 사용자(Team, Enterprise, API)**:

53 53 

54* 표준: 30일 보관 기간54* 표준: 30일 보존 기간

55* [Zero data retention](https://code.claude.com/docs/ko/zero-data-retention.md): Claude for Enterprise의 Claude Code에서 사용 가능합니다. ZDR은 표준 Enterprise 플랜에 포함되지 않으며, 적격 여부를 확인한 후 계정 팀에서 조직별로 활성화됩니다.55* [데이터 무보존(Zero data retention)](https://code.claude.com/docs/ko/zero-data-retention.md): Claude for Enterprise의 Claude Code에서 자격을 갖춘 계정에 제공됩니다. ZDR은 표준 Enterprise 플랜에 포함되어 있지 않으며, 자격 확인 후 계정 팀이 조직별로 활성화합니다

56* 로컬 캐싱: Claude Code 클라이언트는 세션 재개를 활성화하기 위해 `~/.claude/projects/` 아래의 일반 텍스트로 세션 기록을 로컬에 저장합니다(기본값 30일). `cleanupPeriodDays`로 기간을 조정합니다. 저장되는 내용 및 삭제 방법은 [application data](https://code.claude.com/docs/ko/claude-directory.md#application-data)를 참조하세요.56* 로컬 캐싱: Claude Code 클라이언트는 세션 재개를 위해 기본적으로 30일 동안 `~/.claude/projects/` 아래에 세션 트랜스크립트를 일반 텍스트로 로컬에 저장합니다. 기간은 `cleanupPeriodDays`로 조정할 수 있습니다. 저장되는 항목과 삭제 방법은 [애플리케이션 데이터](https://code.claude.com/docs/ko/claude-directory.md#application-data)를 참조하세요.

57 57 

58 Claude Desktop 또는 Cowork에서 시작되거나 가장 최근에 계속된 세션의 기록은 [기본적으로 해당 제한에서 제외됩니다](https://code.claude.com/docs/ko/claude-directory.md#cleaned-up-automatically).58 Claude Desktop 또는 Cowork에서 시작되었거나 가장 최근에 이어서 진행된 세션의 트랜스크립트는 [기본적으로 해당 제한에서 제외](https://code.claude.com/docs/ko/claude-directory.md#cleaned-up-automatically)됩니다.

59 59 

60웹에서 개별 Claude Code 세션을 언제든지 삭제할 수 있습니다. 세션을 삭제하면 세션의 이벤트 데이터가 영구적으로 제거됩니다. 세션 삭제 방법에 대한 지침은 [Delete sessions](https://code.claude.com/docs/ko/claude-code-on-the-web.md#delete-sessions)를 참조하세요.60개별 클라우드 세션은 언제든지 삭제할 수 있습니다. 세션을 삭제하면 해당 세션의 이벤트 데이터가 영구적으로 제거됩니다. 세션 삭제 방법은 [세션 삭제](https://code.claude.com/docs/ko/claude-code-on-the-web.md#delete-sessions)를 참조하세요.

61 61 

62[Privacy Center](https://privacy.anthropic.com/)에서 데이터 보관 관행에 대해 자세히 알아보세요.62데이터 보존 관행에 대한 자세한 내용은 [개인정보 센터](https://privacy.anthropic.com/)에서 확인할 수 있습니다.

63 63 

64전체 세부 사항은 [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms)(Team, Enterprise, API 사용자용) 또는 [Consumer Terms](https://www.anthropic.com/legal/consumer-terms)(Free, Pro, Max 사용자용) 및 [Privacy Policy](https://www.anthropic.com/legal/privacy)를 검토하세요.64자세한 내용은 [상업 서비스 약관](https://www.anthropic.com/legal/commercial-terms)(Team, Enterprise, API 사용자) 또는 [소비자 약관](https://www.anthropic.com/legal/consumer-terms)(Free, Pro, Max 사용자) 및 [개인정보 처리방침](https://www.anthropic.com/legal/privacy)을 검토하세요.

65 65 

66## 데이터 액세스66## 데이터 액세스

67 67 

Details

47 47 

48## MCP 서버 확인48## MCP 서버 확인

49 49 

50`/mcp`를 실행하여 모든 구성된 서버, 해당 연결 상태 및 현재 프로젝트에 대해 승인했는지 여부를 확인합니다. 서버가 올바르게 정의되었지만 여전히 몇 가지 일반적인 이유로 도구를 제공하지 않을 수 있습니다:50`/mcp`를 실행하면 구성된 모든 서버와 각 서버의 연결 상태, 그리고 현재 프로젝트에 대해 해당 서버를 승인했는지 여부를 확인할 수 있습니다. 서버가 올바르게 정의되어 있더라도 몇 가지 일반적인 이유로 도구를 제공하지 않을 수 있습니다.

51 51 

52* `.mcp.json`의 프로젝트 범위 서버는 일회성 승인이 필요합니다. 프롬프트가 해제된 경우, 서버는 `/mcp`에서 승인할 때까지 비활성화된 상태로 유지됩니다.52* `.mcp.json`의 프로젝트 범위 서버는 일회성 승인이 필요합니다. 프롬프트를 닫았다면 `/mcp`에서 승인할 때까지 서버는 비활성화된 상태로 유지됩니다.

53* 시작에 실패한 서버는 `/mcp`에서 실패로 표시됩니다. `command` 또는 `args`의 상대 파일 경로는 `.mcp.json`의 위치가 아니라 Claude Code를 시작한 디렉토리에 대해 해석되므로 빈번한 원인입니다.53* 시작에 실패한 서버는 `/mcp`에서 실패로 표시됩니다. `command` 또는 `args`의 상대 파일 경로가 흔한 원인인데, 이러한 경로는 `.mcp.json`의 위치가 아니라 Claude Code를 실행한 디렉터리를 기준으로 해석되기 때문입니다.

54* 연결된 것으로 표시되지만 도구가 0개인 서버는 성공적으로 시작되었지만 도구 목록을 반환하지 않습니다. `/mcp`에서 **다시 연결**을 선택합니다. 개수가 0으로 유지되면 `claude --debug=mcp`를 실행하고 `~/.claude/debug/<session-id>.txt`의 디버그 로그에서 서버의 stderr을 읽습니다.54* 연결됨으로 표시되지만 도구가 0개로 나열되는 서버는 정상적으로 시작되었으나 도구 목록을 반환하지 않는 상태입니다. `/mcp`에서 **Reconnect**를 선택합니다. 도구 수가 계속 0개라면 `claude --debug=mcp`를 실행하고 `~/.claude/debug/<session-id>.txt`의 디버그 로그에서 서버의 stderr를 확인합니다.

55 55 

56구성 위치 및 범위 규칙은 [MCP](https://code.claude.com/docs/ko/mcp.md)를 참조합니다.56구성 위치와 범위 규칙은 [MCP](https://code.claude.com/docs/ko/mcp.md)를 참조하세요.

57 57 

58## 훅 확인58## 훅 확인

59 59 

desktop.md +7 −7

Details

43첫 번째 메시지를 보내기 전에 프롬프트 상자 아래 행에서 환경, 프로젝트 폴더, 권한 모드, 모델을 선택합니다:43첫 번째 메시지를 보내기 전에 프롬프트 상자 아래 행에서 환경, 프로젝트 폴더, 권한 모드, 모델을 선택합니다:

44 44 

45* **환경**: 행의 첫 번째 컨트롤인 환경 선택기를 사용하여 Claude가 실행되는 위치를 선택합니다. [환경 구성](#environment-configuration)을 참조하세요.45* **환경**: 행의 첫 번째 컨트롤인 환경 선택기를 사용하여 Claude가 실행되는 위치를 선택합니다. [환경 구성](#environment-configuration)을 참조하세요.

46 * 새 세션의 프롬프트 상자 아래에 환경 선택기가 없다면 [이전 레이아웃의 단계](#check-which-layout-you-have)를 따르세요.46 * 새 세션의 프롬프트 상자 아래에 환경이 표시되지 않는다면 [이전 레이아웃의 단계](#check-which-layout-you-have)를 따르세요.

47* **프로젝트 폴더**: 환경 선택기 옆에 있는 프로젝트 폴더 컨트롤을 클릭하여 Claude가 작업할 폴더를 선택합니다.47* **프로젝트 폴더**: 환경 선택기 옆에 있는 프로젝트 폴더 컨트롤을 클릭하여 Claude가 작업할 폴더를 선택합니다.

48 * **클라우드 세션**: 폴더 대신 [저장소](#run-long-running-tasks-in-the-cloud)를 선택합니다48 * **클라우드 세션**: 폴더 대신 [저장소](#run-long-running-tasks-in-the-cloud)를 선택합니다

49 * **[저장된 로컬 또는 SSH 환경](#create-a-saved-environment)**: 환경에 이미 폴더가 포함되어 있으므로 행에 프로젝트 폴더 컨트롤이 표시되지 않습니다. 폴더를 변경하려면 [환경을 편집](#use-edit-or-remove-a-saved-environment)합니다.49 * **[저장된 로컬 또는 SSH 환경](#create-a-saved-environment)**: 환경에 이미 폴더가 포함되어 있으므로 행에 프로젝트 폴더 컨트롤이 표시되지 않습니다. 폴더를 변경하려면 [환경을 편집](#use-edit-or-remove-a-saved-environment)합니다.


861 861 

862> [!NOTE]862> [!NOTE]

863>863>

864> 환경 선택기가 프롬프트 상자 위에 있다면 저장된 로컬 환경이 없는 [이전 레이아웃](#check-which-layout-you-have)을 사용하고 있는 것입니다. 대신 [로컬 환경 편집기](#use-the-local-environment-editor)를 사용하십시오.864> 새 세션의 프롬프트 상자 아래에 환경이 표시되지 않는다면 저장된 로컬 환경이 없는 [이전 레이아웃](#check-which-layout-you-have)을 사용 중인 것입니다. 대신 [로컬 환경 편집기](#use-the-local-environment-editor)를 사용하십시오.

865 865 

866**1. 로컬 환경 양식 열기**866**1. 로컬 환경 양식 열기**

867 867 


963>963>

964> Desktop을 [타사 제공업체](https://code.claude.com/docs/ko/third-party-integrations.md)와 함께 사용하는 경우 SSH 세션에는 별도의 설정이 필요합니다. [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)를 참조하세요.964> Desktop을 [타사 제공업체](https://code.claude.com/docs/ko/third-party-integrations.md)와 함께 사용하는 경우 SSH 세션에는 별도의 설정이 필요합니다. [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)를 참조하세요.

965 965 

966[**New environment** 대화 상자](#create-a-saved-environment)에서 SSH 연결을 추가한 다음 해당 연결에서 세션을 시작합니다. 새 세션의 프롬프트 상자 아래에 환경 선택기가 없다면 이전 레이아웃을 사용하고 있는 것입니다. [사용 중인 레이아웃 확인](#check-which-layout-you-have)을 참조하십시오.966[**New environment** 대화 상자](#create-a-saved-environment)에서 SSH 연결을 추가한 다음 해당 연결에서 세션을 시작합니다. 새 세션의 프롬프트 상자 아래에 환경이 표시되지 않는다면 이전 레이아웃을 사용 중인 것입니다. [사용 중인 레이아웃 확인](#check-which-layout-you-have)을 참조하십시오.

967 967 

968**1. New environment 대화 상자 열기**968**1. New environment 대화 상자 열기**

969 969 


1708키를 배포하기 전에 다음 각 사항을 결정하세요.1708키를 배포하기 전에 다음 각 사항을 결정하세요.

1709 1709 

1710* **키를 넣을 위치**: Claude Code용 MDM 정책이 이미 [정책 키](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)를 설정하고 있다면 그곳에 넣습니다. 그렇지 않으면 관리형 설정 파일에 넣습니다. 기본적으로 이러한 정책은 파일보다 우선하며, 이 경우 Desktop은 파일의 항목을 무시합니다. [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)이 적용되는 경우에도 컴퓨터에 설정하세요. Desktop은 서버 관리형 설정과 프로젝트 및 로컬 설정에 있는 이 키를 무시합니다.1710* **키를 넣을 위치**: Claude Code용 MDM 정책이 이미 [정책 키](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)를 설정하고 있다면 그곳에 넣습니다. 그렇지 않으면 관리형 설정 파일에 넣습니다. 기본적으로 이러한 정책은 파일보다 우선하며, 이 경우 Desktop은 파일의 항목을 무시합니다. [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)이 적용되는 경우에도 컴퓨터에 설정하세요. Desktop은 서버 관리형 설정과 프로젝트 및 로컬 설정에 있는 이 키를 무시합니다.

1711* **`id`**: 사용자의 `sshHostCommands` 항목이 관리자의 `id`를 가지고 있으면 관리자의 항목만 작동합니다. 사용자의 `sshConfigs`에 있는 연결처럼 다른 SSH 연결이 이 `id`를 가지고 있으면 관리자의 항목이 회색으로 표시됩니다. 사용자가 선택할 가능성이 낮은 `id`를 고르세요.1711* **`id`**: 사용자의 `sshHostCommands` 항목이 관리자의 `id`를 사용하면 관리자의 항목만 작동합니다. 사용자의 `sshConfigs`에 있는 연결처럼 다른 SSH 연결이 이를 사용하면 관리자의 항목이 회색으로 표시됩니다. 사용자가 선택할 가능성이 낮은 `id`를 고르십시오.

1712* **프로그램**: Desktop은 각 사용자 자신의 `PATH`에서 단순 이름을 찾으므로 전체 경로를 지정합니다. 프로그램은 해당 사용자의 로그인 셸이 내보내는 변수와 함께 해당 사용자로 실행됩니다.1712* **프로그램**: Desktop은 각 사용자 자신의 `PATH`에서 단순 이름을 찾으므로 전체 경로를 지정합니다. 프로그램은 해당 사용자의 로그인 셸이 내보내는 변수와 함께 해당 사용자로 실행됩니다.

1713* **사용자 자신의 항목**: Desktop은 사용자의 항목을 [훅](https://code.claude.com/docs/ko/hooks.md)처럼 취급합니다. 둘 다 컴퓨터에서 프로그램을 실행하기 때문입니다. 관리자의 항목만 허용하려면 [`strictPluginOnlyCustomization`](https://code.claude.com/docs/ko/settings-reference#strictpluginonlycustomization)을 `["hooks"]`로 설정하거나 해당 목록에 `"hooks"`를 추가합니다. 이렇게 하면 사용자, 프로젝트, 로컬 설정의 Claude Code 훅도 중지되며, 이를 유지할 방법은 없습니다. 대신 이 키 또는 [`allowManagedHooksOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedhooksonly)를 `true`로 설정하면 각 키의 항목에 나열된 대로 더 많은 것이 차단됩니다.1713* **사용자 자신의 항목**: Desktop은 사용자의 항목을 [훅](https://code.claude.com/docs/ko/hooks.md)처럼 취급합니다. 둘 다 컴퓨터에서 프로그램을 실행하기 때문입니다. 관리자의 항목만 허용하려면 [`strictPluginOnlyCustomization`](https://code.claude.com/docs/ko/settings-reference#strictpluginonlycustomization)을 `["hooks"]`로 설정하거나 해당 목록에 `"hooks"`를 추가합니다. 이렇게 하면 사용자, 프로젝트, 로컬 설정의 Claude Code 훅도 중지되며, 이를 유지할 방법은 없습니다. 대신 이 키 또는 [`allowManagedHooksOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedhooksonly)를 `true`로 설정하면 각 키의 항목에 나열된 대로 더 많은 것이 차단됩니다.

1714* **모든 항목**: 관리자의 항목도 끄려면 관리형 설정에서 [`disableAllHooks`](https://code.claude.com/docs/ko/settings-reference#disableallhooks)를 설정합니다. [`disableDesktopLocalSessions`](https://code.claude.com/docs/ko/settings-reference#disabledesktoplocalsessions) 또는 어떤 호스트도 허용하지 않는 `sshHostAllowlist`를 설정하면 선택기에 **Create** 또는 **Replace** 항목이 표시되지 않습니다.1714* **모든 항목**: 관리자의 항목도 끄려면 관리형 설정에서 [`disableAllHooks`](https://code.claude.com/docs/ko/settings-reference#disableallhooks)를 설정합니다. [`disableDesktopLocalSessions`](https://code.claude.com/docs/ko/settings-reference#disabledesktoplocalsessions) 또는 어떤 호스트도 허용하지 않는 `sshHostAllowlist`를 설정하면 선택기에 **Create** 또는 **Replace** 항목이 표시되지 않습니다.


2122 2122 

2123### 사용 중인 레이아웃 확인하기2123### 사용 중인 레이아웃 확인하기

2124 2124 

2125새 세션의 프롬프트 상자 아래에 [환경 선택기](#start-a-session)가 없으면 이전 레이아웃을 사용 중인 것입니다:2125새 세션에서 [환경](#start-a-session)이 프롬프트 상자 아래가 아닌 위에 표시되면 이전 레이아웃을 사용 중인 것입니다:

2126 2126 

2127* **[v2.37337.0 이전 데스크톱](#check-your-version)**: 업데이트하여 현재 레이아웃을 사용합니다. macOS에서는 \*\*Claude > Check for Updates…\*\*를, Windows에서는 \*\*Help > Check for Updates…\*\*를 선택합니다.2127* **[v2.37337.0 이전 데스크톱](#check-your-version)**: 업데이트하여 현재 레이아웃을 사용합니다. macOS에서는 \*\*Claude > Check for Updates…\*\*를, Windows에서는 \*\*Help > Check for Updates…\*\*를 선택합니다.

2128* **[타사 제공업체](https://code.claude.com/docs/ko/third-party-integrations.md)를 사용하며 세션이 컴퓨터에서 실행되는 경우**: 현재 레이아웃에는 Claude Desktop v3.1623.0 이상이 필요하므로 [버전을 확인합니다](#check-your-version). 업데이트하려면 macOS에서는 \*\*Claude > Check for Updates…\*\*를, Windows에서는 \*\*Help > Check for Updates…\*\*를 선택합니다. 조직에서 [자동 업데이트를 끈 경우](#device-management-policies) \*\*Check for Updates…\*\*가 숨겨지므로 관리자에게 v3.1623.0 이상을 요청하세요.2128* **[타사 제공업체](https://code.claude.com/docs/ko/third-party-integrations.md)를 사용하며 세션이 컴퓨터에서 실행되는 경우**: 현재 레이아웃에는 Claude Desktop v3.1623.0 이상이 필요하므로 [버전을 확인합니다](#check-your-version). 업데이트하려면 macOS에서는 \*\*Claude > Check for Updates…\*\*를, Windows에서는 \*\*Help > Check for Updates…\*\*를 선택합니다. 조직에서 [자동 업데이트를 끈 경우](#device-management-policies) \*\*Check for Updates…\*\*가 숨겨지므로 관리자에게 v3.1623.0 이상을 요청하세요.

2129* **타사 제공업체를 사용하며 세션이 조직의 인프라에서 실행되는 경우**: 조직이 컴퓨터가 아닌 자체 인프라에서 세션을 실행하면 Desktop은 이전 레이아웃을 유지하며, 업데이트해도 레이아웃은 변경되지 않습니다. 세션이 어디에서 실행되는지 모르는 경우 관리자에게 문의하세요.2129* **타사 제공업체를 사용하며 세션이 조직의 인프라에서 실행되는 경우**: 현재 레이아웃에는 Claude Desktop v4.29.0 이상이 필요하므로 [버전을 확인합니다](#check-your-version). 이전 버전을 사용 중이라면 관리자에게 v4.29.0 이상을 요청하세요. 세션이 어디에서 실행되는지 모르는 경우 관리자에게 문의하세요.

2130 2130 

2131이전 레이아웃에서는 프롬프트 상자 위에서 환경과 프로젝트 폴더를 선택하고, 그 아래 행에서 권한 모드와 모델을 선택합니다. 이전 레이아웃에는 [세션 세부 정보 패널](#see-session-details)과 [저장된 로컬 및 SSH 환경](#create-a-saved-environment)이 없습니다.2131이전 레이아웃에서는 프롬프트 상자 위에서 환경과 프로젝트 폴더 또는 저장소를 선택하고, 그 아래 행에서 권한 모드와 모델을 선택합니다. 이전 레이아웃에는 [세션 세부 정보 패널](#see-session-details)과 [저장된 로컬 및 SSH 환경](#create-a-saved-environment)이 없습니다.

2132 2132 

2133### Code 탭의 403 또는 인증 오류2133### Code 탭의 403 또는 인증 오류

2134 2134 

Details

57 57 

58[프롬프트 상자 아래의 행](https://code.claude.com/docs/ko/desktop.md#start-a-session)에서 첫 번째 컨트롤인 환경 선택기를 클릭하고 **Local** 그룹의 맨 위 항목을 선택합니다. 그런 다음 환경 선택기 옆의 프로젝트 폴더 컨트롤을 클릭하고 \*\*Open folder…\*\*를 선택한 후 프로젝트 디렉토리를 선택합니다.58[프롬프트 상자 아래의 행](https://code.claude.com/docs/ko/desktop.md#start-a-session)에서 첫 번째 컨트롤인 환경 선택기를 클릭하고 **Local** 그룹의 맨 위 항목을 선택합니다. 그런 다음 환경 선택기 옆의 프로젝트 폴더 컨트롤을 클릭하고 \*\*Open folder…\*\*를 선택한 후 프로젝트 디렉토리를 선택합니다.

59 59 

60프롬프트 상자 아래에 환경 선택기가 표시되지 않으면 이전 레이아웃을 사용하고 있는 것입니다. [사용 중인 레이아웃 확인](https://code.claude.com/docs/ko/desktop.md#check-which-layout-you-have)을 참조하십시오.60새 세션에서 프롬프트 상자 아래에 환경이 표시되지 않으면 이전 레이아웃을 사용하고 있는 것입니다. [사용 중인 레이아웃 확인](https://code.claude.com/docs/ko/desktop.md#check-which-layout-you-have)을 참조하십시오.

61 61 

62> [!TIP]62> [!TIP]

63>63>

devcontainer.md +1 −1

Details

79 79 

80> [!NOTE]80> [!NOTE]

81>81>

82> 브라우저 로그인이 완료되었지만 콜백이 컨테이너에 도달하지 않으면 브라우저에 표시된 코드를 복사하여 터미널의 `Paste code here if prompted` 프롬프트에 붙여넣습니다. 이는 편집기의 포트 포워딩이 localhost 콜백을 라우팅하지 않을 때 발생할 수 있습니다.82> Anthropic 로그인의 경우: 브라우저가 열리지 않거나, 로그인은 되었지만 `localhost` 연결 오류가 표시되면 터미널의 붙여넣기 프롬프트 위에 표시된 로그인 URL을 사용합니다. 해당 URL을 브라우저에 복사하여 로그인한 다음, 브라우저에 표시된 코드를 해당 프롬프트에 붙여넣습니다. 붙여넣어도 아무 반응이 없으면 [OAuth login fails in WSL2, SSH, or containers](https://code.claude.com/docs/ko/troubleshoot-install.md#oauth-login-fails-in-wsl2-ssh-or-containers)를 참조하세요.

83 83 

84## 재구축 시 인증 및 설정 유지84## 재구축 시 인증 및 설정 유지

85 85 

env-vars.md +3 −3

Details

233| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | `1`로 설정하면 첨부 파일 처리를 비활성화합니다. `@` 구문을 사용한 파일 멘션이 파일 내용으로 확장되지 않고 일반 텍스트로 전송됩니다. [프로젝트 및 로컬 설정](https://code.claude.com/docs/ko/settings-reference.md#variables-claude-code-ignores-in-env)에서는 무시됩니다 |233| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | `1`로 설정하면 첨부 파일 처리를 비활성화합니다. `@` 구문을 사용한 파일 멘션이 파일 내용으로 확장되지 않고 일반 텍스트로 전송됩니다. [프로젝트 및 로컬 설정](https://code.claude.com/docs/ko/settings-reference.md#variables-claude-code-ignores-in-env)에서는 무시됩니다 |

234| `CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK` | `1`로 설정하면 Claude Code 프로세스가 다른 프로세스가 [`gcpAuthRefresh`](https://code.claude.com/docs/ko/settings-reference#gcpauthrefresh) 또는 [`awsAuthRefresh`](https://code.claude.com/docs/ko/settings-reference#awsauthrefresh) 명령을 실행하는 동안 기다리지 않고 해당 명령을 직접 실행합니다. Claude Code v2.1.286 이상이 필요합니다 |234| `CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK` | `1`로 설정하면 Claude Code 프로세스가 다른 프로세스가 [`gcpAuthRefresh`](https://code.claude.com/docs/ko/settings-reference#gcpauthrefresh) 또는 [`awsAuthRefresh`](https://code.claude.com/docs/ko/settings-reference#awsauthrefresh) 명령을 실행하는 동안 기다리지 않고 해당 명령을 직접 실행합니다. Claude Code v2.1.286 이상이 필요합니다 |

235| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | `1`로 설정하면 [자동 메모리](https://code.claude.com/docs/ko/memory.md#auto-memory)를 비활성화합니다. `0`으로 설정하면 `--bare` 모드나 [`autoMemoryEnabled: false`](https://code.claude.com/docs/ko/settings-reference#automemoryenabled)로 인해 비활성화되는 경우에도 자동 메모리를 강제로 켭니다. 비활성화되면 Claude는 자동 메모리 파일을 생성하거나 로드하지 않습니다 |235| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | `1`로 설정하면 [자동 메모리](https://code.claude.com/docs/ko/memory.md#auto-memory)를 비활성화합니다. `0`으로 설정하면 `--bare` 모드나 [`autoMemoryEnabled: false`](https://code.claude.com/docs/ko/settings-reference#automemoryenabled)로 인해 비활성화되는 경우에도 자동 메모리를 강제로 켭니다. 비활성화되면 Claude는 자동 메모리 파일을 생성하거나 로드하지 않습니다 |

236| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | `1`로 설정하면 Bash, PowerShell, 서브에이전트 도구에서 `run_in_background` 매개변수를 제거하고, Ctrl+B 단축키와 [포크된 스킬](https://code.claude.com/docs/ko/skills.md#run-skills-in-a-subagent)의 백그라운드 실행을 끕니다. 그러면 Claude Code는 서브에이전트, 긴 MCP 도구 호출, 시간 초과된 셸 명령을 자동으로 백그라운드로 이동하는 것도 중지합니다. [MCP 작업](https://code.claude.com/docs/ko/mcp.md#make-claude-wait-for-the-result-of-an-mcp-task)과 [Monitor 도구](https://code.claude.com/docs/ko/tools-reference.md#monitor-tool)는 여전히 백그라운드에서 실행됩니다 |236| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | `1`로 설정하면 Bash, PowerShell, 서브에이전트 도구에서 `run_in_background` 파라미터를 제거하고, Ctrl+B 단축키와 [포크된 스킬](https://code.claude.com/docs/ko/skills.md#run-skills-in-a-subagent)의 백그라운드 실행을 끕니다. 그러면 Claude Code는 서브에이전트, 긴 MCP 도구 호출, 시간 초과된 셸 명령을 백그라운드로 자동 이동하는 것도 중지합니다. [MCP 작업](https://code.claude.com/docs/ko/mcp.md#make-claude-wait-for-the-result-of-an-mcp-task)과 [Monitor 도구](https://code.claude.com/docs/ko/tools-reference.md#monitor-tool)는 여전히 백그라운드에서 실행됩니다. [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md#turn-off-agent-view)도 끄려면 `CLAUDE_CODE_DISABLE_AGENT_VIEW`를 `1`로 설정하세요 |

237| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | `1`로 설정하면 Claude Code가 `Content-Type` 헤더가 없거나 비어 있는 [Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md) 스트리밍 응답을 Amazon Bedrock의 바이너리 이벤트 스트림으로 처리하지 않습니다. 기본적으로 Claude Code는 게이트웨이가 그 외에는 수정되지 않은 응답에서 헤더만 제거했다고 가정하므로, 본문을 디코딩하고 스트리밍이 계속 작동합니다. 스트림을 server-sent events로 다시 내보내기도 하는 게이트웨이에만 이 변수를 설정합니다. 그러면 Claude Code는 헤더가 없는 본문을 server-sent events로 읽습니다. Claude Code v2.1.239 이상이 필요합니다 |237| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | `1`로 설정하면 Claude Code가 `Content-Type` 헤더가 없거나 비어 있는 [Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md) 스트리밍 응답을 Amazon Bedrock의 바이너리 이벤트 스트림으로 처리하지 않습니다. 기본적으로 Claude Code는 게이트웨이가 그 외에는 수정되지 않은 응답에서 헤더만 제거했다고 가정하므로, 본문을 디코딩하고 스트리밍이 계속 작동합니다. 스트림을 server-sent events로 다시 내보내기도 하는 게이트웨이에만 이 변수를 설정합니다. 그러면 Claude Code는 헤더가 없는 본문을 server-sent events로 읽습니다. Claude Code v2.1.239 이상이 필요합니다 |

238| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | `1`로 설정하면 [Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md) 스트리밍 응답이 `application/vnd.amazon.eventstream` content-type을 포함하는지 확인하는 검사를 건너뜁니다. 이 변수가 없으면 응답에 다른 content-type이 있을 때 Claude Code는 해당 유형을 명시한 오류와 함께 요청을 실패 처리하며, 이는 [게이트웨이나 프록시가 응답을 변환하고 있음](https://code.claude.com/docs/ko/amazon-bedrock.md#streaming-errors-behind-a-gateway-or-proxy)을 의미합니다. 이 변수를 설정하는 대신 `Content-Type` 헤더와 본문을 수정 없이 전달하도록 게이트웨이를 구성합니다. Claude Code v2.1.208 이상이 필요합니다 |238| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | `1`로 설정하면 [Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md) 스트리밍 응답이 `application/vnd.amazon.eventstream` content-type을 포함하는지 확인하는 검사를 건너뜁니다. 이 변수가 없으면 응답에 다른 content-type이 있을 때 Claude Code는 해당 유형을 명시한 오류와 함께 요청을 실패 처리하며, 이는 [게이트웨이나 프록시가 응답을 변환하고 있음](https://code.claude.com/docs/ko/amazon-bedrock.md#streaming-errors-behind-a-gateway-or-proxy)을 의미합니다. 이 변수를 설정하는 대신 `Content-Type` 헤더와 본문을 수정 없이 전달하도록 게이트웨이를 구성합니다. Claude Code v2.1.208 이상이 필요합니다 |

239| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | `1`로 설정하면 [슈퍼바이저](https://code.claude.com/docs/ko/agent-view.md#the-supervisor-process)가 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md)의 프로세스를 중지, 재시작 또는 업데이트할 때 진행 중인 작업을 세션의 다음 프로세스로 넘기지 않고 중지합니다. 해당 작업은 세션에서 실행 중인 백그라운드 셸 명령이며, v2.1.198부터는 백그라운드 서브에이전트도 포함됩니다. 이 인계에만 영향을 줍니다. `←` 또는 [`/background`](https://code.claude.com/docs/ko/agent-view#from-inside-a-session)로 세션을 백그라운드로 전환하면 진행 중인 백그라운드 작업이 여전히 이어집니다. Claude Code v2.1.196 이상이 필요합니다 |239| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | `1`로 설정하면 [슈퍼바이저](https://code.claude.com/docs/ko/agent-view.md#the-supervisor-process)가 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md)의 프로세스를 중지, 재시작 또는 업데이트할 때 진행 중인 작업을 세션의 다음 프로세스로 넘기지 않고 중지합니다. 해당 작업은 세션에서 실행 중인 백그라운드 셸 명령이며, v2.1.198부터는 백그라운드 서브에이전트도 포함됩니다. 이 인계에만 영향을 줍니다. `←` 또는 [`/background`](https://code.claude.com/docs/ko/agent-view#from-inside-a-session)로 세션을 백그라운드로 전환하면 진행 중인 백그라운드 작업이 여전히 이어집니다. Claude Code v2.1.196 이상이 필요합니다 |


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

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

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

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

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

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

282| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | [세션 요약](https://code.claude.com/docs/ko/interactive-mode.md#session-recap) 사용 여부를 재정의합니다. `/config` 토글과 관계없이 요약을 강제로 끄려면 `0`으로 설정합니다. [`awaySummaryEnabled`](https://code.claude.com/docs/ko/settings-reference#awaysummaryenabled)가 `false`일 때 요약을 강제로 켜려면 `1`로 설정합니다. 설정과 `/config` 토글보다 우선합니다 |282| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | [세션 요약](https://code.claude.com/docs/ko/interactive-mode.md#session-recap) 사용 여부를 재정의합니다. `/config` 토글과 관계없이 요약을 강제로 끄려면 `0`으로 설정합니다. [`awaySummaryEnabled`](https://code.claude.com/docs/ko/settings-reference#awaysummaryenabled)가 `false`일 때 요약을 강제로 켜려면 `1`로 설정합니다. 설정과 `/config` 토글보다 우선합니다 |


584* Git Bash가 설치된 Windows에서 claude.ai 및 Console 계정에 기본적으로 [PowerShell 도구](https://code.claude.com/docs/ko/tools-reference.md#powershell-tool) 제공받기. `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`을 설정하지 않으면 Claude Code는 셸 명령을 Git Bash를 통해 실행합니다. Git Bash가 없는 Windows에서는 이 도구가 계속 켜져 있습니다584* Git Bash가 설치된 Windows에서 claude.ai 및 Console 계정에 기본적으로 [PowerShell 도구](https://code.claude.com/docs/ko/tools-reference.md#powershell-tool) 제공받기. `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`을 설정하지 않으면 Claude Code는 셸 명령을 Git Bash를 통해 실행합니다. Git Bash가 없는 Windows에서는 이 도구가 계속 켜져 있습니다

585* [Claude가 초안을 작성한 피드백](https://code.claude.com/docs/ko/tools-reference.md#sendfeedback-tool-behavior) 받기. 이 기능은 Claude Code가 가져온 플래그를 통해 켭니다585* [Claude가 초안을 작성한 피드백](https://code.claude.com/docs/ko/tools-reference.md#sendfeedback-tool-behavior) 받기. 이 기능은 Claude Code가 가져온 플래그를 통해 켭니다

586* Claude가 [큰 붙여넣기를 입력한 텍스트가 아닌 붙여넣은 텍스트로 취급](https://code.claude.com/docs/ko/terminal-config.md#how-claude-treats-pasted-text)하도록 하기. `[Pasted text #N]` 플레이스홀더 뒤의 내용은 표시 없이 Claude에 전달됩니다586* Claude가 [큰 붙여넣기를 입력한 텍스트가 아닌 붙여넣은 텍스트로 취급](https://code.claude.com/docs/ko/terminal-config.md#how-claude-treats-pasted-text)하도록 하기. `[Pasted text #N]` 플레이스홀더 뒤의 내용은 표시 없이 Claude에 전달됩니다

587* Claude Code가 [API가 거부할 입력 스키마를 가진 MCP 도구를 제외](https://code.claude.com/docs/ko/mcp.md#tools-with-invalid-input-schemas)하도록 하기. Claude Code는 해당 스키마를 그대로 전송하며, 이를 포함한 요청은 [도구를 위치로 지정하는 400 오류](https://code.claude.com/docs/ko/errors.md#tool-input-schema-is-invalid)와 함께 실패합니다587* Claude Code가 [API가 거부할 입력 스키마를 가진 MCP 도구를 제외](https://code.claude.com/docs/ko/mcp.md#tools-with-invalid-input-schemas)하도록 하기

588* 1시간 프롬프트 캐시가 만료되기 직전에 Claude Code가 [터미널 세션이 유휴 상태인 동안 긴 대화를 압축](https://code.claude.com/docs/ko/settings-reference.md#idlecompaction)하도록 하기588* 1시간 프롬프트 캐시가 만료되기 직전에 Claude Code가 [터미널 세션이 유휴 상태인 동안 긴 대화를 압축](https://code.claude.com/docs/ko/settings-reference.md#idlecompaction)하도록 하기

589 589 

590### 설치 또는 업그레이드 후 첫 세션590### 설치 또는 업그레이드 후 첫 세션

errors.md +47 −13

Details

219| `Cloud sessions use your claude.ai login`, 자격 증명을 명시하는 정책 거부 메시지의 끝에 표시됨 | [명령줄 오류](#cloud-sessions-use-your-claude-ai-login) |219| `Cloud sessions use your claude.ai login`, 자격 증명을 명시하는 정책 거부 메시지의 끝에 표시됨 | [명령줄 오류](#cloud-sessions-use-your-claude-ai-login) |

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

221| `Cloud sessions aren't available:` 뒤에 조직 정책을 불러올 수 없는 이유가 표시됨 | [명령줄 오류](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |221| `Cloud sessions aren't available:` 뒤에 조직 정책을 불러올 수 없는 이유가 표시됨 | [명령줄 오류](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |

222| `Cloud sessions aren't available with this Console sign-in. They need a claude.ai sign-in.` | [조직 UUID를 가져올 수 없음](https://code.claude.com/docs/ko/claude-code-on-the-web.md#unable-to-get-organization-uuid) |

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

223| `Nothing was stashed: "<path>" is now a folder in place of a tracked file or link` / `are now folders in place of tracked files or links` | [명령줄 오류](#nothing-was-stashed-because-a-folder-replaced-a-tracked-file) |224| `Nothing was stashed: "<path>" is now a folder in place of a tracked file or link` / `are now folders in place of tracked files or links` | [명령줄 오류](#nothing-was-stashed-because-a-folder-replaced-a-tracked-file) |

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


325| `File is covered by a Read deny rule in your permission settings` | [도구 오류](#file-is-covered-by-a-read-deny-rule) |326| `File is covered by a Read deny rule in your permission settings` | [도구 오류](#file-is-covered-by-a-read-deny-rule) |

326| `cannot contain null bytes (\0)` | [도구 오류](#path-cannot-contain-null-bytes) |327| `cannot contain null bytes (\0)` | [도구 오류](#path-cannot-contain-null-bytes) |

327| `Path contains null bytes` | [도구 오류](#path-cannot-contain-null-bytes) |328| `Path contains null bytes` | [도구 오류](#path-cannot-contain-null-bytes) |

329| `command contains the invisible character U+FEFF (byte order mark) or U+180E (Mongolian vowel separator), and was not run` | [도구 오류](#command-contains-an-invisible-character) |

328| `File is too large to read as an image (the limit is 128MB)` | [도구 오류](#file-is-too-large-to-read-as-an-image) |330| `File is too large to read as an image (the limit is 128MB)` | [도구 오류](#file-is-too-large-to-read-as-an-image) |

329| `Cannot read this as an image: <path> is a pipe or a device` | [도구 오류](#file-is-too-large-to-read-as-an-image) |331| `Cannot read this as an image: <path> is a pipe or a device` | [도구 오류](#file-is-too-large-to-read-as-an-image) |

330| `subagent_type is required: the general-purpose agent is not available in this session` | [도구 오류](#subagent-type-is-required) |332| `subagent_type is required: the general-purpose agent is not available in this session` | [도구 오류](#subagent-type-is-required) |


397| `Claude Code process exited with code N` | [래퍼 및 IDE 오류](#claude-code-process-exited-with-code-n) |399| `Claude Code process exited with code N` | [래퍼 및 IDE 오류](#claude-code-process-exited-with-code-n) |

398| `The connection to Claude Code ended before this message completed` | [래퍼 및 IDE 오류](#the-connection-to-claude-code-ended-before-this-message-completed) |400| `The connection to Claude Code ended before this message completed` | [래퍼 및 IDE 오류](#the-connection-to-claude-code-ended-before-this-message-completed) |

399| `Could not locate the Claude CLI on PATH` | [래퍼 및 IDE 오류](#could-not-locate-the-claude-cli-on-path) |401| `Could not locate the Claude CLI on PATH` | [래퍼 및 IDE 오류](#could-not-locate-the-claude-cli-on-path) |

402| `The Claude Code program for this computer, the <build> build, could not be found` | [래퍼 및 IDE 오류](#the-claude-code-program-for-this-computer-could-not-be-found) |

400| `Restored the code, but skipped N files` | [되돌리기 경고 및 오류](#restored-the-code-but-skipped-files) |403| `Restored the code, but skipped N files` | [되돌리기 경고 및 오류](#restored-the-code-but-skipped-files) |

401| `No files were restored: N files failed (backup missing, or the file could not be updated)` | [되돌리기 경고 및 오류](#no-files-were-restored) |404| `No files were restored: N files failed (backup missing, or the file could not be updated)` | [되돌리기 경고 및 오류](#no-files-were-restored) |

402| `Transcript writes are failing (...)` | [세션 저장 경고](#transcript-writes-are-failing) |405| `Transcript writes are failing (...)` | [세션 저장 경고](#transcript-writes-are-failing) |


485 488 

486v2.1.198부터는 재시도 중에 일반적인 스피너 팁이 표시되지 않습니다. 오류 이유가 표시된 후 실패가 529 과부하인 경우, 카운트다운 아래 줄에 서비스 상태를 확인할 위치도 표시됩니다. Anthropic API에서는 `status.claude.com`, 다른 구성에서는 메시지에 명시된 공급자 또는 게이트웨이 호스트입니다.489v2.1.198부터는 재시도 중에 일반적인 스피너 팁이 표시되지 않습니다. 오류 이유가 표시된 후 실패가 529 과부하인 경우, 카운트다운 아래 줄에 서비스 상태를 확인할 위치도 표시됩니다. Anthropic API에서는 `status.claude.com`, 다른 구성에서는 메시지에 명시된 공급자 또는 게이트웨이 호스트입니다.

487 490 

488요청이 아직 대기 중인 상태에서 응답 스트림에 20초 동안 데이터가 도착하지 않으면, 재시도가 시작되기 전에 스피너가 `Waiting for API response · will retry in … · check your network`를 표시합니다. 요청이 아직 실패한 것은 아닙니다. 카운트다운은 Claude Code가 멈춘 연결을 중단하는 시점까지 진행됩니다. 중단 후 표시되는 내용은 응답이 어디까지 진행되었는지에 따라 다릅니다.491#### Waiting for API response

492 

493`Waiting for API response · will retry in … · check your network` 배너는 Claude Code가 요청에 대한 데이터를 전혀 받지 못한 채 최소 20초 동안 기다렸음을 의미합니다. 요청이 아직 실패한 것은 아닙니다. 카운트다운은 Claude Code가 멈춘 연결을 중단하는 시점까지 진행됩니다. 중단이 발생하는 시점에 따라 다음과 같이 처리됩니다.

489 494 

490* Claude가 텍스트 블록이나 도구 호출을 완료하기 전, 또는 사고를 마친 후 이를 시작하기 전이라면, Claude Code는 요청을 재시도하거나 오류와 함께 턴을 종료합니다. 어떤 멈춤을 몇 번 재시도하는지는 [자동 재시도](#automatic-retries)에 설명되어 있습니다.495* Claude가 텍스트 블록이나 도구 호출을 완료하기 전, 또는 사고를 마친 후 이를 시작하기 전이라면, Claude Code는 요청을 재시도하거나 오류와 함께 턴을 종료합니다. 어떤 멈춤을 몇 번 재시도하는지는 [자동 재시도](#automatic-retries)에 설명되어 있습니다.

491* Claude가 텍스트 블록이나 도구 호출을 완료한 후, 또는 사고를 마친 후 이를 시작한 후, Claude가 응답을 마치기 전이라면, Claude Code는 Claude가 완료한 내용을 유지하고 Claude가 완료한 도구 호출에서 턴을 계속하며 [The response above may be incomplete](#the-response-above-may-be-incomplete)를 표시합니다. 비대화형 세션에서, 그리고 모든 세션의 서브에이전트 응답에 대해서는 Claude Code가 먼저 Claude에게 응답을 계속하도록 요청할 수 있습니다. 언제 그렇게 하는지와 언제 여전히 해당 알림이 표시되는지는 해당 항목에 설명되어 있습니다.496* Claude가 텍스트 블록이나 도구 호출을 완료한 후, 또는 사고를 마친 후 이를 시작한 후, Claude가 응답을 마치기 전이라면, Claude Code는 Claude가 완료한 내용을 유지하고 Claude가 완료한 도구 호출에서 턴을 계속하며 [The response above may be incomplete](#the-response-above-may-be-incomplete)를 표시합니다. 비대화형 세션에서, 그리고 모든 세션의 서브에이전트 응답에 대해서는 Claude Code가 먼저 Claude에게 응답을 계속하도록 요청할 수 있습니다. 언제 그렇게 하는지와 언제 여전히 해당 알림이 표시되는지는 해당 항목에 설명되어 있습니다.

492* Claude가 응답을 마친 후라면, Claude Code는 턴을 정상적으로 종료합니다.497* Claude가 응답을 마친 후라면, Claude Code는 턴을 정상적으로 종료합니다.

493 498 

494데이터가 다시 수신되거나 재시도가 성공하면 배너는 자동으로 사라집니다. 모든 시도에서 배너가 다시 나타나면 [네트워크 문제](#unable-to-connect-to-api)로 간주하세요. v2.1.185 이전에는 배너가 10초 후에 다른 문구로 표시되었습니다.499데이터가 다시 수신되거나 재시도가 성공하면 배너는 자동으로 사라집니다. 모든 시도에서 배너가 다시 나타나면 [네트워크 문제](#unable-to-connect-to-api)로 간주하세요. 게이트웨이를 통해 연결하는 경우 [게이트웨이 뒤에서 대기 배너가 나타났다 사라지는 경우](#waiting-banner-behind-a-gateway)를 참조하세요. v2.1.185 이전에는 배너가 10초 후에 다른 문구로 표시되었습니다.

495 

496Claude가 [advisor](https://code.claude.com/docs/ko/advisor.md)를 참조하는 동안에는 데이터 없이 20초가 아닌 90초가 지나야 배너가 표시됩니다. 긴 advisor 검토는 20초를 훨씬 넘는 시간 동안 아무것도 보내지 않을 수 있기 때문입니다. v2.1.214 이전에는 advisor 호출 중에도 20초 임계값이 적용되어, 아무 문제가 없는데도 advisor 검토 중에 배너가 표시되었습니다.

497 500 

498#### 게이트웨이 뒤에서 대기 배너가 나타났다 사라지는 경우501#### 게이트웨이 뒤에서 대기 배너가 나타났다 사라지는 경우

499 502 


2495 2498 

2496**해결 방법:**2499**해결 방법:**

2497 2500 

2498* Claude Code 버전이 v2.1.216 이전이면 `claude update`를 실행합니다.2501* Claude Code 버전이 v2.1.300보다 이전이면 셸에서 [`claude update`](https://code.claude.com/docs/ko/setup#update-claude-code)를 실행하세요. v2.1.300 이전에는 Claude Code가 [거부된 도구의 매개변수 없이 요청을 재시도](https://code.claude.com/docs/ko/mcp.md#tools-whose-input-schema-the-api-refuses)하지 않았기 때문에, 해당 도구가 포함된 모든 요청에서 이 오류가 반복되었습니다.

2499* 유효하지 않은 스키마를 선언한 MCP 서버를 제거하거나 [비활성화](https://code.claude.com/docs/ko/mcp.md#disable-a-server-without-removing-it)합니다. 오류는 도구를 위치로만 표시합니다. v2.1.216 이상에서는 각 서버의 로그에서 입력 스키마가 거부될 도구를 명시하는 줄을 확인하십시오. 해당 도구를 명시하는 로그가 없으면 서버를 하나씩 비활성화해 보십시오.2502* 유효하지 않은 스키마를 선언한 MCP 서버를 제거하거나 [비활성화](https://code.claude.com/docs/ko/mcp.md#disable-a-server-without-removing-it)합니다. 오류는 도구를 위치로만 표시합니다. v2.1.216 이상에서는 각 서버의 로그에서 입력 스키마가 거부될 도구를 명시하는 줄을 확인하십시오. 해당 도구를 명시하는 로그가 없으면 서버를 하나씩 비활성화해 보십시오.

2500* 서버를 직접 관리한다면 도구의 `input_schema`를 수정하십시오. 스키마는 유효한 JSON Schema여야 하며, 최상위 속성 이름은 1\~64자 길이에 ASCII 문자와 숫자, `_`, `.`, `-`만 사용해야 합니다. [입력 스키마가 유효하지 않은 도구](https://code.claude.com/docs/ko/mcp.md#tools-with-invalid-input-schemas)를 참조하십시오.2503* 서버를 직접 관리한다면 도구의 `input_schema`를 수정하십시오. 스키마는 유효한 JSON Schema여야 하며, 최상위 속성 이름은 1\~64자 길이에 ASCII 문자와 숫자, `_`, `.`, `-`만 사용해야 합니다. [입력 스키마가 유효하지 않은 도구](https://code.claude.com/docs/ko/mcp.md#tools-with-invalid-input-schemas)를 참조하십시오.

2501 2504 


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

3296* **`No answer in time.` 뒤에 `Error: Workspace not trusted`**: `Trust <folder>? [y/N]` 질문에 5분 동안 답하지 않았습니다. `claude ultrareview`를 다시 실행하고 답합니다.3299* **`No answer in time.` 뒤에 `Error: Workspace not trusted`**: `Trust <folder>? [y/N]` 질문에 5분 동안 답하지 않았습니다. `claude ultrareview`를 다시 실행하고 답합니다.

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

3298* **``Ultrareview did not start: `--trust-workspace` takes no value``**: PR 번호나 `false`처럼 플래그가 아닌 무언가가 `--trust-workspace` 뒤에 옵니다. 폴더를 신뢰하지 않는다면 플래그를 빼세요. 이번 실행에 대해 신뢰하려면 PR 번호나 기준 브랜치를 플래그 앞에 둡니다: `claude ultrareview 1234 --trust-workspace`.3301* **``Ultrareview did not start: `--trust-workspace` takes no value``**: `--trust-workspace` 뒤에 PR 번호나 `false`처럼 플래그가 아닌 값이 왔습니다. 폴더를 신뢰하지 않는다면 플래그를 빼세요. 이번 실행에 대해 신뢰하려면 PR 번호나 기준 브랜치를 플래그 앞에 둡니다: `claude ultrareview 1234 --trust-workspace`.

3299 3302 

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

3301 3304 


3587 3590 

3588관련 메시지는 명령이 실행되기도 전에 발생합니다:3591관련 메시지는 명령이 실행되기도 전에 발생합니다:

3589 3592 

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

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

3592* `No shell command in <name> was run`: 파일의 `!` 명령 중 하나에 탭이나 줄 바꿈 이외의 원시 제어 문자가 포함되어 있어 어떤 명령도 실행되지 않습니다. [해당 문자를 찾아 제거하는 방법](#no-shell-command-was-run)을 참조하십시오

3593 3595 

3594**해결 방법:**3596**해결 방법:**

3595 3597 


3599 3601 

3600### No shell command in a skill or command was run3602### No shell command in a skill or command was run

3601 3603 

3602스킬 또는 사용자 지정 명령 파일의 `` !`<command>` `` [동적 컨텍스트 명령](https://code.claude.com/docs/ko/skills.md#inject-dynamic-context) 중 하나에 탭이나 줄 바꿈 이외의 원시 제어 문자가 포함되어 있습니다. Claude Code는 파일의 명령이 하나라도 실행되기 전에 호출 전체를 거부합니다.3604`No shell command in <name> was run`은 해당 스킬 또는 명령 파일의 `` !`<command>` `` [동적 컨텍스트 명령](https://code.claude.com/docs/ko/skills.md#inject-dynamic-context)에 Bash 또는 PowerShell 도구가 거부하는 문자가 포함되어 있다는 의미입니다:

3605 

3606* **두 도구 모두**: 탭이나 줄 바꿈이 아닌 원시 제어 문자

3607* **PowerShell 도구**: 추가로 U+FEFF 또는 U+180E

3603 3608 

3604메시지에는 명령을 실행했을 셸 도구(Bash 또는 PowerShell)가 표시되고, 거부된 명령으로 끝납니다. 해당 문자는 각각 `�`로 대체되어 위치를 확인할 수 있습니다:3609메시지는 거부된 명령으로 끝나며, 거부된 각 문자는 다음 Bash 도구 예시처럼 `�`로 표시됩니다:

3605 3610 

3606```text theme={null}3611```text theme={null}

3607No shell command in /my-skill was run, because the Bash tool does not accept one of them: command contains control characters that would be hidden in the approval dialog. Unprintable characters are shown as � below: remove them from the skill or command file, or from the arguments or options substituted into it.3612No shell command in /my-skill was run, because the Bash tool does not accept one of them: command contains control characters that would be hidden in the approval dialog. Unprintable characters are shown as � below: remove them from the skill or command file, or from the arguments or options substituted into it.


3610 3615 

3611**해결 방법:**3616**해결 방법:**

3612 3617 

3613* 메시지 끝에 인용된 명령에서 각 `�`를 찾습니다. 해당 문자를 스킬 또는 명령 파일에서, 또는 파일에 대입된 인수나 옵션에서 제거합니다.3618* 메시지 끝에 인용된 명령에서 각 `�`를 찾습니다. 그것이 나타내는 문자를 [스킬 또는 명령 파일](https://code.claude.com/docs/ko/skills.md#where-skills-live)에서, 또는 파일에 대입되는 인수나 [옵션](https://code.claude.com/docs/ko/plugins/manifest-reference.md#user-configuration)에서 제거합니다.

3614 3619 

3615### `--print` 사용 시 입력을 제공해야 함3620### `--print` 사용 시 입력을 제공해야 함

3616 3621 


3739 3744 

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

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

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

3743 3748 

3744**해결 방법:**3749**해결 방법:**

3745 3750 


4568 4573 

4569v2.1.281 이전에는 Read, Write, Edit, NotebookEdit 경로에 null 바이트가 있으면 `Path contains null bytes`를 언급하는 오류와 함께 턴 전체가 종료되었고, 도구는 실행되지 않았습니다.4574v2.1.281 이전에는 Read, Write, Edit, NotebookEdit 경로에 null 바이트가 있으면 `Path contains null bytes`를 언급하는 오류와 함께 턴 전체가 종료되었고, 도구는 실행되지 않았습니다.

4570 4575 

4576### Command contains an invisible character

4577 

4578[PowerShell 도구](https://code.claude.com/docs/ko/tools-reference.md#powershell-tool)가 U+FEFF 또는 U+180E가 포함된 명령의 실행을 거부했습니다.

4579 

4580```text theme={null}

4581Error: command contains the invisible character U+FEFF (byte order mark) or U+180E (Mongolian vowel separator), and was not run. Remove the character, keep the text that needs it in a file that the command reads, or write it as $([char]0xFEFF) or $([char]0x180E) inside a double-quoted string

4582```

4583 

4584**조치 방법:**

4585 

4586* **Claude가 작성한 명령의 경우**: 수정할 것이 없습니다. 메시지가 Claude에게 명령을 다시 작성하는 방법을 알려 줍니다.

4587* **스킬 또는 명령 파일의 경우**: 메시지는 `No shell command in <name> was run` 뒤에 표시됩니다. [문자를 찾아 제거하는 위치](#no-shell-command-was-run)를 참조하세요.

4588 

4571### File is too large to read as an image4589### File is too large to read as an image

4572 4590 

4573Claude가 [Read 도구](https://code.claude.com/docs/ko/tools-reference.md#read-tool-behavior)로 파일을 이미지로 읽으려 했지만, 파일이 Read가 이미지 파일에서 불러올 수 있는 최대 크기인 128MB보다 큽니다. 아무것도 읽히지 않았으며, Claude는 도구 결과로 다음 오류를 받습니다.4591Claude가 [Read 도구](https://code.claude.com/docs/ko/tools-reference.md#read-tool-behavior)로 파일을 이미지로 읽으려 했지만, 파일이 Read가 이미지 파일에서 불러올 수 있는 최대 크기인 128MB보다 큽니다. 아무것도 읽히지 않았으며, Claude는 도구 결과로 다음 오류를 받습니다.


5431* PowerShell 프로필이 아닌 사용자 또는 시스템 환경 변수로 PATH 항목을 설정합니다. 확장 프로그램은 프로필을 실행하지 않으므로 거기에만 있는 PATH 편집은 절대 도달하지 않습니다.5449* PowerShell 프로필이 아닌 사용자 또는 시스템 환경 변수로 PATH 항목을 설정합니다. 확장 프로그램은 프로필을 실행하지 않으므로 거기에만 있는 PATH 편집은 절대 도달하지 않습니다.

5432* PATH를 변경한 후 VS Code를 다시 시작합니다. 확장 프로그램은 VS Code가 시작할 때 캡처한 PATH를 확인하므로 PATH 변경은 다시 시작한 후에만 적용됩니다.5450* PATH를 변경한 후 VS Code를 다시 시작합니다. 확장 프로그램은 VS Code가 시작할 때 캡처한 PATH를 확인하므로 PATH 변경은 다시 시작한 후에만 적용됩니다.

5433 5451 

5452### The Claude Code program for this computer could not be found

5453 

5454[VS Code 확장 프로그램](https://code.claude.com/docs/ko/vs-code.md)이 내부에 번들된 Claude Code 사본을 찾았지만 현재 컴퓨터용으로 빌드된 사본이 없습니다. 메시지에는 컴퓨터에 필요한 빌드가 표시됩니다.

5455 

5456```text theme={null}

5457The Claude Code program for this computer, the Linux (linux-x64) build, could not be found.

5458```

5459 

5460**수행할 작업:**

5461 

5462* 메시지에 확장 프로그램이 포함하고 있는 빌드가 명시되어 있으면 다른 플랫폼용 확장 프로그램 패키지를 설치한 것입니다. 메시지에 표시된 빌드용으로 만들어진 패키지를 설치합니다.

5463* 메시지에 확장 프로그램이 포함하고 있는 빌드가 명시되어 있지 않으면 편집기의 Extensions 뷰에서 Claude Code 확장 프로그램을 다시 설치합니다.

5464* 또는 두 경우 모두 [`claudeCode.claudeProcessWrapper`](https://code.claude.com/docs/ko/vs-code#extension-settings)를 별도로 설치한 `claude` 바이너리로 설정합니다.

5465 

5466v2.1.290 이전에는 이 오류가 `Unsupported platform: <platform>-<arch>. No compatible Claude Code binary found.`로 표시되었습니다.

5467 

5434### Claude Code로의 연결이 이 메시지가 완료되기 전에 종료됨5468### Claude Code로의 연결이 이 메시지가 완료되기 전에 종료됨

5435 5469 

5436[VS Code 확장 프로그램](https://code.claude.com/docs/ko/vs-code.md)이 메시지를 `claude` 프로세스로 보냈고, 프로세스가 이를 인정하거나 완료하기 전에 오류 없이 연결이 종료되었습니다. 확장 프로그램은 메시지가 처리되었는지 여부를 알 수 없으므로 다시 보내도록 요청합니다.5470[VS Code 확장 프로그램](https://code.claude.com/docs/ko/vs-code.md)이 메시지를 `claude` 프로세스로 보냈고, 프로세스가 이를 인정하거나 완료하기 전에 오류 없이 연결이 종료되었습니다. 확장 프로그램은 메시지가 처리되었는지 여부를 알 수 없으므로 다시 보내도록 요청합니다.

fast-mode.md +10 −8

Details

8 8 

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

10>10>

11> 빠른 모드는 [연구 미리보기](#research-preview)입니다. 피드백에 따라 기능, 가격 책정 및 가용성이 변경될 수 있습니다.11> Claude Opus 5.5의 빠른 모드를 사용할 수 있으며, Claude Opus 5 및 Claude Opus 4.8의 빠른 모드는 [리서치 프리뷰](#research-preview) 단계입니다.

12 12 

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

14 14 


20 20 

21* Claude Code CLI에서 `/fast`를 사용하여 빠른 모드를 전환합니다. [VS Code 확장 프로그램](https://code.claude.com/docs/ko/vs-code.md)은 선택한 모델이 빠른 모드를 지원할 때 **빠른 모드 전환** 명령을 제공합니다. Claude Code는 해당 전환을 [`fastMode` 설정](#toggle-fast-mode)에 저장합니다.21* Claude Code CLI에서 `/fast`를 사용하여 빠른 모드를 전환합니다. [VS Code 확장 프로그램](https://code.claude.com/docs/ko/vs-code.md)은 선택한 모델이 빠른 모드를 지원할 때 **빠른 모드 전환** 명령을 제공합니다. Claude Code는 해당 전환을 [`fastMode` 설정](#toggle-fast-mode)에 저장합니다.

22* 빠른 모드 가격은 Opus 5.5에서 MTok 입력/출력당 \$8/\$40이고 Opus 5 및 Opus 4.8에서 \$10/\$50입니다.22* 빠른 모드 가격은 Opus 5.5에서 MTok 입력/출력당 \$8/\$40이고 Opus 5 및 Opus 4.8에서 \$10/\$50입니다.

23* 구독 요금제(Pro/Max/Team/Enterprise)의 Claude Code 사용자 및 Claude Console에서 사용할 수 있습니다. Team 및 Enterprise 조직은 먼저 소유자가 활성화해야 하며, Console 조직은 먼저 액세스를 프로비저닝해야 하며, 둘 다 [요구 사항](#requirements)에 설명되어 있습니다.23* 구독 요금제(Pro/Max/Team/Enterprise)의 Claude Code 사용자 및 Claude Console에서 사용할 수 있습니다. Team 및 Enterprise 조직은 먼저 소유자가 활성화해야 하며, Console 조직은 Opus 5 또는 Opus 4.8에서 사용하려면 먼저 액세스를 프로비저닝해야 합니다. 두 가지 모두 [요구 사항](#requirements)에 설명되어 있습니다.

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

25 25 

26## 빠른 모드 전환26## 빠른 모드 전환


119 119 

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

121 121 

122* **Anthropic API 또는 구독만 해당**: 빠른 모드는 Anthropic Console API 및 사용 크레딧을 사용하는 Claude 구독 요금제를 통해 사용할 수 있습니다. Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry 또는 AWS의 Claude Platform에서는 사용할 수 없습니다. Console 조직은 또한 [빠른 모드 액세스가 프로비저닝](#enable-fast-mode-for-your-organization)되어 있어야 합니다.122* **Anthropic API 또는 구독만 해당**: 빠른 모드는 Anthropic Console API 및 사용량 크레딧을 사용하는 Claude 구독 요금제를 통해 사용할 수 있습니다. Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry 또는 AWS의 Claude Platform에서는 사용할 수 없습니다. Console 조직이 Opus 5 또는 Opus 4.8에서 빠른 모드를 사용하려면 [빠른 모드 액세스가 프로비저닝](#enable-fast-mode-for-your-organization)되어 있어야 합니다.

123* **구독 요금제에 대해 사용량 크레딧 활성화**: Pro, Max, Team 또는 Enterprise 요금제에서 계정에 [사용량 크레딧](https://code.claude.com/docs/ko/costs.md#add-usage-credits-to-your-subscription)이 활성화되어 있어야 하며, 이를 통해 요금제의 포함된 사용량을 초과하여 청구할 수 있습니다. 활성화될 때까지 `/fast`는 "Fast mode requires usage credits"를 표시합니다. 활성화하는 방법은 요금제에 따라 다릅니다:123* **구독 요금제에 대해 사용량 크레딧 활성화**: Pro, Max, Team 또는 Enterprise 요금제에서 계정에 [사용량 크레딧](https://code.claude.com/docs/ko/costs.md#add-usage-credits-to-your-subscription)이 활성화되어 있어야 하며, 이를 통해 요금제의 포함된 사용량을 초과하여 청구할 수 있습니다. 활성화될 때까지 `/fast`는 "Fast mode requires usage credits"를 표시합니다. 활성화하는 방법은 요금제에 따라 다릅니다:

124 * Pro 및 Max에서는 claude.ai의 [**설정 > 사용**](https://claude.ai/settings/usage)의 **사용량 크레딧** 섹션에서 활성화하거나 `/usage-credits`를 실행하여 해당 페이지를 엽니다.124 * Pro 및 Max에서는 claude.ai의 [**설정 > 사용**](https://claude.ai/settings/usage)의 **사용량 크레딧** 섹션에서 활성화하거나 `/usage-credits`를 실행하여 해당 페이지를 엽니다.

125 * Team 및 Enterprise에서는 청구 액세스 권한이 있는 구성원이 [**조직 설정 > 사용**](https://claude.ai/admin-settings/usage)에서 조직에 대해 활성화하고, 액세스 권한이 없는 구성원은 `/usage-credits`를 실행하여 조직의 관리자에게 요청을 보냅니다.125 * Team 및 Enterprise에서는 청구 액세스 권한이 있는 구성원이 [**조직 설정 > 사용**](https://claude.ai/admin-settings/usage)에서 조직에 대해 활성화하고, 액세스 권한이 없는 구성원은 `/usage-credits`를 실행하여 조직의 관리자에게 요청을 보냅니다.


129> 빠른 모드 사용량은 요금제에 남은 사용량이 있더라도 사용 크레딧에서 직접 인출됩니다.129> 빠른 모드 사용량은 요금제에 남은 사용량이 있더라도 사용 크레딧에서 직접 인출됩니다.

130 130 

131* **유료 Console 조직**: Claude Console 계정은 사용 크레딧을 사용하지 않으며, 조직은 나머지 API 사용량과 함께 빠른 모드에 대해 토큰당 비용을 지불합니다. Console의 무료 Evaluation 요금제에서 `/fast`는 "Fast mode unavailable during evaluation. Please purchase credits."을 표시합니다. 이를 해결하려면 [Console 청구 설정](https://platform.claude.com/settings/billing)에서 크레딧을 구매합니다.131* **유료 Console 조직**: Claude Console 계정은 사용 크레딧을 사용하지 않으며, 조직은 나머지 API 사용량과 함께 빠른 모드에 대해 토큰당 비용을 지불합니다. Console의 무료 Evaluation 요금제에서 `/fast`는 "Fast mode unavailable during evaluation. Please purchase credits."을 표시합니다. 이를 해결하려면 [Console 청구 설정](https://platform.claude.com/settings/billing)에서 크레딧을 구매합니다.

132 

133 Opus 5.5에서의 빠른 모드는 조직의 [사용량 티어](https://platform.claude.com/docs/en/api/rate-limits)에도 영향을 받습니다.

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

133 135 

134> [!NOTE]136> [!NOTE]


144 146 

145조직이 사용하는 제품에 따라 빠른 모드를 활성화하는 위치가 달라집니다:147조직이 사용하는 제품에 따라 빠른 모드를 활성화하는 위치가 달라집니다:

146 148 

147* **Console** (API 고객): 관리자가 [Claude Code 기본 설정](https://platform.claude.com/claude-code/preferences)에서 활성화합니다. 빠른 모드는 [연구 미리보기](#research-preview)에 있으므로 조직은 빠른 모드 요청이 성공하기 전에 빠른 모드 액세스가 프로비저닝되어 있어야 합니다. 액세스를 얻으려면 계정 관리자에게 문의하거나 [Claude API의 빠른 모드](https://platform.claude.com/docs/en/build-with-claude/fast-mode)에 설명된 대로 대기 목록에 참여합니다.149* **Console** (API 고객): 관리자가 [Claude Code 기본 설정](https://platform.claude.com/claude-code/preferences)에서 활성화합니다

148 

149 프로비저닝된 액세스가 없으면 API는 각 빠른 모드 요청을 429로 거부하고, Claude Code는 각 거부를 [빠른 모드 속도 제한](#handle-rate-limits)으로 처리합니다. 속도 제한의 쿨다운과 달리 거부는 액세스가 프로비저닝될 때까지 계속됩니다.

150* **Claude AI** (Team 및 Enterprise): Owner가 [**조직 설정 > Claude Code**](https://claude.ai/admin-settings/claude-code)에서 활성화합니다150* **Claude AI** (Team 및 Enterprise): Owner가 [**조직 설정 > Claude Code**](https://claude.ai/admin-settings/claude-code)에서 활성화합니다

151 151 

152Claude Opus 5 또는 Claude Opus 4.8을 사용하는 Console 조직은 [Claude API의 빠른 모드](https://platform.claude.com/docs/en/build-with-claude/fast-mode)에 설명된 대로 프로비저닝된 액세스도 필요합니다. 해당 액세스가 없으면 이러한 모델에 대한 빠른 모드 요청은 [빠른 모드 속도 제한](#handle-rate-limits)에 도달하며, 액세스가 프로비저닝될 때까지 표준 속도로 대체됩니다.

153 

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

153 155 

154### 프록시 및 LLM 게이트웨이 뒤에서 빠른 모드 사용156### 프록시 및 LLM 게이트웨이 뒤에서 빠른 모드 사용


201 203 

202## 속도 제한 처리204## 속도 제한 처리

203 205 

204빠른 모드는 표준 Opus와 별도의 속도 제한을 가집니다. 지원되는 모든 Opus 모델은 하나의 빠른 모드 속도 제한 풀을 공유합니다: 어느 모델에서든 사용량은 동일한 제한에서 차감됩니다. 빠른 모드 속도 제한에 도달하면:206빠른 모드는 표준 Opus와 별도의 속도 제한을 가집니다. Console 조직의 경우 Claude Platform의 [속도 제한](https://platform.claude.com/docs/en/api/rate-limits) 페이지에서 이에 대해 설명합니다. 빠른 모드 속도 제한에 도달하면:

205 207 

2061. 빠른 모드가 자동으로 표준 속도로 폴백됩니다2081. 빠른 모드가 자동으로 표준 속도로 폴백됩니다

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


217 219 

218## 연구 미리보기220## 연구 미리보기

219 221 

220빠른 모드는 연구 미리보기 기능입니다. 이는 다음을 의미합니다:222Claude Opus 5 및 Claude Opus 4.8의 빠른 모드는 리서치 프리뷰 기능입니다. 이는 다음을 의미합니다:

221 223 

222* 기능은 피드백에 따라 변경될 수 있습니다224* 기능은 피드백에 따라 변경될 수 있습니다

223* 가용성 및 가격 책정은 변경될 수 있습니다225* 가용성 및 가격 책정은 변경될 수 있습니다

Details

90 <tr>90 <tr>

91 <td>[빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)</td>91 <td>[빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)</td>

92 <td>✓ (Team 및 Enterprise에서는 [Owner가 활성화](https://code.claude.com/docs/ko/fast-mode.md#enable-fast-mode-for-your-organization))</td>92 <td>✓ (Team 및 Enterprise에서는 [Owner가 활성화](https://code.claude.com/docs/ko/fast-mode.md#enable-fast-mode-for-your-organization))</td>

93 <td>✓ (프로비저닝된 조직)</td>93 <td>✓ (Opus 5 및 4.8은 프로비저닝 필요)</td>

94 <td>✗</td>94 <td>✗</td>

95 <td>✗</td>95 <td>✗</td>

96 <td>✗</td>96 <td>✗</td>


285 285 

286**사용 불가능:** 모든 [Claude 구독이 필요한 기능](#features-that-require-a-claude-subscription).286**사용 불가능:** 모든 [Claude 구독이 필요한 기능](#features-that-require-a-claude-subscription).

287 287 

288[제공자별로 다양한 CLI 기능](#cli-capabilities-that-vary-by-provider)의 모든 기능을 사용할 수 있습니다. 단, [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)는 [프로비저닝된 액세스](https://code.claude.com/docs/ko/fast-mode.md#enable-fast-mode-for-your-organization)가 필요합니다. claude.ai Team 또는 Enterprise 조직에서 구성한 [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md)은 Console API 키로 인증하는 세션에는 적용되지 않습니다. 이러한 세션에도 적용하는 방법은 [플랫폼 가용성](https://code.claude.com/docs/ko/server-managed-settings.md#platform-availability)을 참조하십시오.288[제공자별로 다양한 CLI 기능](#cli-capabilities-that-vary-by-provider)의 모든 기능을 사용할 수 있습니다. 단, Claude Opus 5 또는 Claude Opus 4.8에서 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)를 사용하려면 [프로비저닝된 액세스](https://code.claude.com/docs/ko/fast-mode.md#enable-fast-mode-for-your-organization)가 필요합니다. claude.ai Team 또는 Enterprise 조직에서 구성한 [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md)은 Console API 키로 인증하는 세션에는 적용되지 않습니다. 이러한 세션에도 적용하는 방법은 [플랫폼 가용성](https://code.claude.com/docs/ko/server-managed-settings.md#platform-availability)을 참조하십시오.

289 289 

290**부분 지원:**290**부분 지원:**

291 291 

github-actions.md +52 −52

Details

17 17 

18## 설정18## 설정

19 19 

20Claude Code GitHub Action을 두 가지 방법 중 하나로 설정할 수 있습니다:20Claude Code GitHub Action은 다음 두 가지 방법 중 하나로 설정할 수 있습니다.

21 21 

22* **빠른 설정**: Claude Code에서 `/install-github-app`을 실행합니다. Claude Code가 GitHub App을 설치하고, 인증 시크릿을 추가하고, 워크플로우 풀 리퀘스트를 준비합니다22* **빠른 설정**: Claude Code에서 `/install-github-app`을 실행합니다. Claude Code가 GitHub App을 설치하고, 인증 시크릿을 추가하고, 워크플로 풀 리퀘스트를 준비합니다

23* **수동 설정**: 앱을 설치하고, 시크릿을 추가하고, 워크플로우 파일을 저장소에 직접 복사합니다. 로컬에서 Claude Code를 실행하지 않을 때, 명령이 실패할 때, 또는 워크플로우 파일을 완전히 제어하고 싶을 때 이 경로를 사용합니다.23* **수동 설정**: 앱을 설치하고, 시크릿을 추가하고, 워크플로 파일을 저장소에 직접 복사합니다. 로컬에서 Claude Code를 실행하지 않는 경우, 명령이 실패하는 경우, 또는 워크플로 파일을 완전히 제어하려는 경우에 이 방법을 사용합니다

24 24 

25두 경로 모두 저장소에 대한 관리자 액세스가 필요합니다.25어느 방법이든 저장소에 대한 관리자 액세스 권한이 필요합니다.

26 26 

27### 빠른 설정27### 빠른 설정

28 28 

29`/install-github-app`은 github.com 저장소에서만 작동합니다. 저장소의 git 원격이 gitlab.com이나 bitbucket.org에 있으면 명령이 알림을 출력하고 설정을 시작하지 않고 종료합니다. GitLab 파이프라인에서 Claude Code를 실행하려면 [Claude Code GitLab CI/CD](https://code.claude.com/docs/ko/gitlab-ci-cd.md)를 참조하십시오.29`/install-github-app`은 github.com 저장소에서만 작동합니다. 저장소의 git remote가 gitlab.com 또는 bitbucket.org에 있는 경우, 이 명령은 설정을 시작하는 대신 안내 메시지를 출력하고 종료됩니다. GitLab 파이프라인에서 Claude Code를 실행하려면 [Claude Code GitLab CI/CD](https://code.claude.com/docs/ko/gitlab-ci-cd.md)를 참조하세요.

30 30 

31시작하기 전에 [GitHub CLI](https://cli.github.com)를 설치하고 `gh auth login`으로 인증합니다. Claude Code가 이를 확인하고 누락되면 경고합니다.31시작하기 전에 [GitHub CLI](https://cli.github.com)를 설치하고 `gh auth login`으로 인증합니다. Claude Code는 GitHub CLI가 있는지 확인하고, 없으면 경고를 표시합니다.

32 32 

33연결하려는 저장소에서 `claude`를 열고 `/install-github-app`을 실행한 후 프롬프트를 따릅니다. Claude Code가 Claude GitHub App을 설치한 후 워크플로우에 대한 인증 시크릿을 설정합니다:33연결하려는 저장소에서 `claude`를 열고 `/install-github-app`을 실행한 다음 안내를 따릅니다. Claude Code는 Claude GitHub App을 설치한 다음 워크플로용 인증 시크릿을 설정합니다.

34 34 

35* Claude Code가 이미 API 키를 가지고 있으면 해당 키를 재사용하고, 저장소에 이미 설정된 `ANTHROPIC_API_KEY` 시크릿을 유지할 것을 제안합니다35* Claude Code에 이미 API 키가 있으면 해당 키를 재사용하며, 저장소에 `ANTHROPIC_API_KEY` 시크릿이 이미 설정되어 있으면 이를 유지할지 묻습니다

36* 그렇지 않으면 Claude 구독으로 장기 토큰을 생성하거나 API 키를 붙여넣기 중에서 선택합니다36* 그렇지 않으면 Claude 구독으로 장기 토큰을 생성할지, API 키를 붙여 넣을지 선택합니다

37 37 

38Claude Code가 자격 증명을 저장소 시크릿으로 저장합니다. API 키의 경우 `ANTHROPIC_API_KEY`, 구독 토큰의 경우 `CLAUDE_CODE_OAUTH_TOKEN`이라고 명명됩니다.38Claude Code는 자격 증명을 저장소 시크릿으로 저장하며, API 키의 경우 `ANTHROPIC_API_KEY`, 구독 토큰의 경우 `CLAUDE_CODE_OAUTH_TOKEN`이라는 이름을 사용합니다.

39 39 

40Claude Code가 선택한 워크플로우 파일이 포함된 브랜치를 푸시하고, 이미 해당 시크릿을 사용하도록 설정되어 있으며, 풀 리퀘스트를 생성할 준비가 된 상태로 브라우저에서 GitHub를 엽니다. 해당 풀 리퀘스트를 생성하고 병합하면 저장소에서 `@claude`가 작동합니다.40그런 다음 Claude Code는 선택한 워크플로 파일이 포함된 브랜치를 푸시하고(해당 시크릿을 사용하도록 이미 설정됨), 풀 리퀘스트를 생성할 준비가 된 상태로 브라우저에서 GitHub를 엽니다. 해당 풀 리퀘스트를 생성하고 병합하면 저장소에서 `@claude`가 작동합니다.

41 41 

42설정을 중간에 중단하려면 Esc를 누릅니다. 진행 중인 단계는 완료되고 이후 단계는 시작되지 않습니다. 종료 메시지는 푸시된 브랜치나 저장된 시크릿과 같이 저장소에서 이미 발생한 작업을 나열합니다.42설정 도중에 중단하려면 Esc를 누릅니다. 이미 진행 중인 단계는 완료되고, 이후 단계는 시작되지 않습니다. 종료 메시지에는 푸시된 브랜치나 저장된 시크릿 등 저장소에서 이미 수행된 작업이 나열됩니다.

43 43 

44리뷰 워크플로우를 선택하면 Claude가 각 리뷰를 풀 리퀘스트 자체에 게시합니다. 발견한 각 이슈에 대한 인라인 댓글로 또는 발견하지 못한 경우 하나의 요약 댓글로 게시합니다. Claude는 초안과 같은 일부 풀 리퀘스트를 건너뜁니다. [리뷰 워크플로우 예제](#run-a-skill)는 동일한 스킬을 사용하고 이를 나열합니다. v2.1.229 이전에는 Claude가 리뷰를 워크플로우 실행 로그에만 작성했습니다.44리뷰 워크플로를 선택하면 Claude는 각 리뷰를 풀 리퀘스트 자체에 게시합니다. 발견한 각 이슈에 대해 인라인 코멘트로 게시하거나, 아무것도 발견하지 못한 경우 하나의 요약 코멘트로 게시합니다. Claude는 초안 등 일부 풀 리퀘스트를 건너뜁니다. [리뷰 워크플로 예제](#run-a-skill)는 동일한 스킬을 사용하며 해당 풀 리퀘스트 유형을 나열합니다. v2.1.229 이전에는 Claude가 리뷰를 워크플로 실행 로그에만 기록했습니다.

45 45 

46이전 버전이 생성한 리뷰 워크플로우를 업데이트하려면 다음 중 하나를 수행합니다:46이전 버전에서 생성된 리뷰 워크플로를 업데이트하려면 다음 중 하나를 수행합니다.

47 47 

48* `/install-github-app`을 다시 실행합니다. 저장소에 이미 `claude.yml`이 있으면 **최신 버전으로 워크플로우 파일 업데이트**를 선택합니다. Claude Code가 새 브랜치에 워크플로우 파일의 새 복사본을 푸시하고 첫 설치와 동일하게 풀 리퀘스트를 엽니다.48* `/install-github-app`을 다시 실행합니다. 저장소에 이미 `claude.yml`이 있으면 **Update workflow file with latest version**을 선택합니다. Claude Code는 최초 설치와 마찬가지로 워크플로 파일의 새 사본을 새 브랜치에 푸시하고 풀 리퀘스트를 엽니다.

49* [리뷰 워크플로우 예제](#run-a-skill)에서 `--comment` 인수와 `claude_args` 줄을 직접 체크인된 파일에 추가합니다. 이렇게 하면 파일에 대해 수행한 다른 편집 사항이 유지됩니다.49* [리뷰 워크플로 예제](#run-a-skill)의 `--comment` 인수와 `claude_args` 줄을 체크인된 파일에 직접 추가합니다. 이 방법을 사용하면 파일에 적용한 다른 수정 사항이 유지됩니다.

50 50 

51GitHub App을 설치한 후 Claude Code가 GitHub Actions 설정을 계속할지 여부를 묻습니다. **지금 건너뛰기**를 선택하여 GitHub App만 설치된 상태로 중지합니다. 나중에 `/install-github-app`을 다시 실행하여 워크플로우 및 시크릿 단계를 완료합니다.51GitHub App을 설치한 후 Claude Code는 GitHub Actions 설정을 계속할지 묻습니다. GitHub App만 설치된 상태로 중단하려면 **Skip for now**를 선택합니다. 나중에 `/install-github-app`을 다시 실행하여 워크플로 및 시크릿 단계를 완료할 수 있습니다.

52 52 

53> [!NOTE]53> [!NOTE]

54>54>

55> * GitHub App을 설치하면 여러 권한을 부여합니다. 전체 집합은 [GitHub App 권한](#github-app-permissions)을 참조하십시오55> * GitHub App을 설치하면 여러 권한을 부여하게 됩니다. 전체 권한 목록은 [GitHub App 권한](#github-app-permissions)을 참조하세요

56> * 빠른 설정은 Claude API 및 Claude 구독과 함께 작동합니다. Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry를 사용하는 경우 [클라우드 공급자와 함께 Claude Code GitHub Actions 사용](https://code.claude.com/docs/ko/github-actions-cloud-providers.md)을 참조하십시오56> * 빠른 설정은 Claude API 및 Claude 구독과 함께 작동합니다. Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry를 사용하는 경우 [클라우드 제공업체와 함께 Claude Code GitHub Actions 사용하기](https://code.claude.com/docs/ko/github-actions-cloud-providers.md)를 참조하세요

57 57 

58### 수동 설정58### 수동 설정

59 59 

60`/install-github-app`을 실행하지 않고 Claude Code GitHub Action을 구성하려면 앱을 설치하고, 시크릿을 추가하고, 워크플로우 파일을 직접 복사합니다:60`/install-github-app`을 실행하지 않고 Claude Code GitHub Action을 구성하려면 앱을 설치하고, 시크릿을 추가하고, 워크플로 파일을 직접 복사합니다.

61 61 

62**1. Claude GitHub App 설치**62**1. Claude GitHub App 설치**

63 63 

64[Claude GitHub App](https://github.com/apps/claude)을 저장소에 설치합니다. Claude Code GitHub Action은 앱의 세 가지 권한에 의존합니다:64저장소에 [Claude GitHub App](https://github.com/apps/claude)을 설치합니다. Claude Code GitHub Action은 앱의 다음 세 가지 권한을 사용합니다.

65 65 

66* **Contents**: 읽기 및 쓰기. Claude가 저장소 파일을 수정할 수 있습니다66* **Contents**: 읽기 및 쓰기. Claude가 저장소 파일을 수정할 수 있습니다

67* **Issues**: 읽기 및 쓰기. Claude가 이슈에 응답할 수 있습니다67* **Issues**: 읽기 및 쓰기. Claude가 이슈에 응답할 수 있습니다

68* **Pull requests**: 읽기 및 쓰기. Claude가 PR을 생성하고 변경 사항을 푸시할 수 있습니다68* **Pull requests**: 읽기 및 쓰기. Claude가 PR을 생성하고 변경 사항을 푸시할 수 있습니다

69 69 

70설치 중에 다른 Claude 기능이 사용하는 권한도 부여합니다. 전체 집합은 [GitHub App 권한](#github-app-permissions)을 참조하십시오.70설치 중에는 다른 Claude 기능에서 사용하는 권한도 부여하게 됩니다. 전체 권한 목록은 [GitHub App 권한](#github-app-permissions)을 참조하세요.

71 71 

72**2. 인증 시크릿 추가**72**2. 인증 시크릿 추가**

73 73 

74인증 방식에 따라 저장소에 다음 시크릿 중 하나를 추가합니다. GitHub의 [GitHub Actions에서 시크릿 사용](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions) 가이드를 참조하십시오.74인증 방식에 따라 다음 시크릿 중 하나를 저장소에 추가합니다. GitHub의 [GitHub Actions에서 시크릿 사용하기](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions) 가이드를 참조하세요.

75 75 

76* `ANTHROPIC_API_KEY`: [Claude Console](https://platform.claude.com)의 Claude API 키76* `ANTHROPIC_API_KEY`: [Claude Console](https://platform.claude.com)에서 발급한 Claude API 키

77* `CLAUDE_CODE_OAUTH_TOKEN`: Claude 구독으로 인증하는 OAuth 토큰. Pro, Max, Team 및 Enterprise 플랜에서 사용 가능합니다. 로컬에서 `claude setup-token`을 실행하여 생성합니다. [장기 토큰 생성](https://code.claude.com/docs/ko/authentication.md#generate-a-long-lived-token)을 참조하십시오77* `CLAUDE_CODE_OAUTH_TOKEN`: Claude 구독으로 인증하는 OAuth 토큰으로, Pro, Max, Team, Enterprise 플랜에서 사용할 수 있습니다. 로컬에서 `claude setup-token`을 실행하여 생성합니다. [장기 토큰 생성하기](https://code.claude.com/docs/ko/authentication.md#generate-a-long-lived-token)를 참조하세요

78 78 

79워크플로우 파일에서 시크릿을 일치하는 입력으로 전달합니다: API 키의 경우 `anthropic_api_key`, OAuth 토큰의 경우 `claude_code_oauth_token`.79워크플로 파일에서는 시크릿을 해당 입력에 전달합니다. API 키는 `anthropic_api_key`에, OAuth 토큰은 `claude_code_oauth_token`에 전달합니다.

80 80 

81**3. 워크플로우 파일 복사**81**3. 워크플로 파일 복사**

82 82 

83[examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml)을 저장소의 `.github/workflows/` 디렉토리에 복사합니다. 파일은 예제가 아닌 작동하는 워크플로우입니다. 커밋된 상태로 Claude는 누군가 이슈나 풀 리퀘스트에서 `@claude`를 멘션할 때마다 응답합니다. `ANTHROPIC_API_KEY` 시크릿으로 인증합니다. 대신 `CLAUDE_CODE_OAUTH_TOKEN`을 추가한 경우 워크플로우의 `anthropic_api_key` 줄을 `claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}`으로 변경합니다.83[examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml)을 저장소의 `.github/workflows/` 디렉터리에 복사합니다. 이 파일은 단순한 예제가 아니라 실제로 작동하는 워크플로입니다. 커밋된 그대로 사용하면, 누군가 이슈나 풀 리퀘스트에서 `@claude`를 멘션할 때마다 Claude가 `ANTHROPIC_API_KEY` 시크릿으로 인증하여 응답합니다. 대신 `CLAUDE_CODE_OAUTH_TOKEN`을 추가했다면 워크플로의 `anthropic_api_key` 줄을 `claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}`으로 변경합니다.

84 84 

85> [!TIP]85> [!TIP]

86>86>

87> 설정 후 이슈나 PR 댓글에서 `@claude`를 태그하여 Claude Code GitHub Action을 테스트합니다.87> 설정 후 이슈 또는 PR 코멘트에서 `@claude`를 태그하여 Claude Code GitHub Action을 테스트합니다.

88 88 

89### 조직을 위한 설정89### 조직 단위로 설정하기

90 90 

91빠른 설정이나 수동 설정으로 한 번에 하나의 저장소를 구성합니다. Claude Code GitHub Action을 조직 전체에 배포하려면:91빠른 설정이나 수동 설정에서는 한 번에 하나의 저장소를 구성합니다. 조직 전체에 Claude Code GitHub Action을 배포하려면 다음을 수행합니다.

92 92 

93* [Claude GitHub App](https://github.com/apps/claude)을 조직 수준에서 한 번 설치합니다. 모든 저장소 또는 선택된 목록을 선택합니다93* 조직 수준에서 [Claude GitHub App](https://github.com/apps/claude)을 한 번 설치하고, 모든 저장소 또는 선택한 저장소 목록을 지정합니다

94* 인증 시크릿을 조직 수준 Actions 시크릿으로 저장합니다. 각 저장소가 자신의 복사본을 가질 필요가 없습니다94* 각 저장소에 별도의 사본이 필요하지 않도록 인증 시크릿을 조직 수준 Actions 시크릿으로 저장합니다

95* Claude Code GitHub Action을 실행해야 하는 각 저장소에 워크플로우 파일을 추가하거나, 각 저장소가 호출하는 [재사용 가능한 워크플로우](https://docs.github.com/en/actions/using-workflows/reusing-workflows)로 작업을 한 번 정의합니다95* Claude Code GitHub Action을 실행할 각 저장소에 워크플로 파일을 추가하거나, 각 저장소가 호출하는 [재사용 가능한 워크플로](https://docs.github.com/en/actions/using-workflows/reusing-workflows)로 작업을 한 번 정의합니다

96 96 

97저장소 간에 공유되는 시크릿의 경우 OAuth 토큰은 `claude setup-token`을 실행한 사람의 구독에 연결되어 있으므로 [Claude Console](https://platform.claude.com)의 API 키로 인증합니다.97여러 저장소에서 공유하는 시크릿에는 OAuth 토큰 대신 [Claude Console](https://platform.claude.com)의 API 키로 인증합니다. OAuth 토큰은 `claude setup-token`을 실행한 사람의 구독에 연결되기 때문입니다.

98 98 

99장기 시크릿을 저장하지 않으려면 워크로드 ID 페더레이션을 통해 인증합니다. Claude Code GitHub Action이 워크플로우의 GitHub OpenID Connect (OIDC) 토큰을 Claude Console 서비스 계정을 통해 Claude API 액세스로 교환합니다. 이러한 입력을 설정합니다:99장기 시크릿을 아예 저장하지 않으려면 워크로드 ID 페더레이션을 통해 인증합니다. 이 방식에서는 Claude Code GitHub Action이 워크플로의 GitHub OpenID Connect(OIDC) 토큰을 Claude Console 서비스 계정을 통해 Claude API 액세스로 교환합니다. 다음 입력을 설정합니다.

100 100 

101* `anthropic_federation_rule_id`: 페더레이션 규칙 ID, `fdrl_...`101* `anthropic_federation_rule_id`: 페더레이션 규칙 ID, `fdrl_...`

102* `anthropic_organization_id`: Anthropic 조직 ID102* `anthropic_organization_id`: Anthropic 조직 ID

103* `anthropic_service_account_id`: 서비스 계정 ID, `svac_...`. 선택 사항입니다. Console에서 생성한 페더레이션 규칙이 이미 서비스 계정을 대상으로 하기 때문입니다103* `anthropic_service_account_id`: 서비스 계정 ID, `svac_...`. Console에서 생성하는 페더레이션 규칙이 이미 서비스 계정을 대상으로 하므로 선택 사항입니다

104* `anthropic_workspace_id`: 워크스페이스 ID, `wrkspc_...`. 페더레이션 규칙이 단일 워크스페이스를 대상으로 할 때 선택 사항입니다104* `anthropic_workspace_id`: 워크스페이스 ID, `wrkspc_...`. 페더레이션 규칙이 단일 워크스페이스를 대상으로 하는 경우 선택 사항입니다

105 105 

106워크플로우에 `id-token: write` 권한을 부여합니다. Claude Code GitHub Action이 자신의 `github_token`을 전달할 때도 페더레이션 교환에 필요합니다. [Claude Code GitHub Action의 설정 가이드](https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md)에서 Console 측 구성을 참조하십시오.106워크플로에 `id-token: write` 권한을 부여합니다. 자체 `github_token`을 전달하는 경우에도 Claude Code GitHub Action은 페더레이션 교환에 이 권한이 필요합니다. Console 측 구성은 [Claude Code GitHub Action 설정 가이드](https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md)를 참조하세요.

107 107 

108보안 검토에서 데이터 처리 및 보존 질문의 경우 [데이터 사용](https://code.claude.com/docs/ko/data-usage.md) 및 [보안](https://code.claude.com/docs/ko/security.md)을 참조하십시오.108보안 검토에서 데이터 처리 및 보존에 관한 질문은 [데이터 사용](https://code.claude.com/docs/ko/data-usage.md) 및 [보안](https://code.claude.com/docs/ko/security.md)을 참조하세요.

109 109 

110### 제거110### 제거

111 111 

112Claude Code GitHub Action을 제거하려면 설치에 적용되는 각 설정 부분을 취소합니다:112Claude Code GitHub Action을 제거하려면 설치 환경에 해당하는 각 설정 요소를 되돌립니다.

113 113 

114* **워크플로우 파일**: `.github/workflows/`에서 `anthropics/claude-code-action`을 사용하는 워크플로우를 삭제합니다. 빠른 설정을 사용한 경우 `claude.yml`을 찾고, 리뷰 워크플로우를 선택한 경우 `claude-code-review.yml`을 찾습니다. 워크플로우가 삭제되면 Claude Code GitHub Action이 더 이상 실행되지 않습니다114* **워크플로 파일**: `.github/workflows/`에서 `anthropics/claude-code-action`을 사용하는 워크플로를 삭제합니다. 빠른 설정을 사용했다면 `claude.yml`을 찾고, 리뷰 워크플로를 선택했다면 `claude-code-review.yml`도 찾습니다. 워크플로를 삭제하면 Claude Code GitHub Action이 더 이상 실행되지 않습니다

115* **시크릿**: 저장소에서 `ANTHROPIC_API_KEY` 또는 `CLAUDE_CODE_OAUTH_TOKEN` 시크릿을 삭제합니다. [저장소 간에 공유](#set-up-for-an-organization)한 경우 조직 수준 Actions 시크릿에서도 삭제합니다. 시크릿을 삭제하면 보유한 자격 증명이 유효한 상태로 유지됩니다. API 키를 완전히 폐기하려면 [Claude Console](https://platform.claude.com)에서도 키를 삭제합니다115* **시크릿**: 저장소에서 `ANTHROPIC_API_KEY` 또는 `CLAUDE_CODE_OAUTH_TOKEN` 시크릿을 삭제하고, [여러 저장소에서 공유](#set-up-for-an-organization)한 경우 조직 수준 Actions 시크릿에서도 삭제합니다. 시크릿을 삭제해도 그 안에 있던 자격 증명은 유효한 상태로 남습니다. API 키를 완전히 폐기하려면 [Claude Console](https://platform.claude.com)에서도 키를 삭제합니다

116* **GitHub App**: 저장소 또는 조직 설정의 GitHub Apps에서 Claude GitHub App을 제거합니다. Code Review나 웹 자동 수정과 같은 다른 Claude 기능에 사용하지 않는 경우에만 제거합니다116* **GitHub App**: 저장소 또는 조직 설정의 GitHub Apps에서 Claude GitHub App을 제거합니다. 단, Code Review나 웹 자동 수정 등 다른 Claude 기능에 사용하지 않는 경우에만 제거합니다

117 117 

118[클라우드 공급자](https://code.claude.com/docs/ko/github-actions-cloud-providers.md)를 구성한 경우 `AWS_ROLE_TO_ASSUME`, `GCP_*` 시크릿 또는 `AZURE_*` 시크릿과 같은 공급자 시크릿도 삭제합니다. `APP_ID` 및 `APP_PRIVATE_KEY` 시크릿과 함께 사용자 정의 GitHub App을 제거합니다.118[클라우드 제공업체](https://code.claude.com/docs/ko/github-actions-cloud-providers.md)를 구성한 경우 `AWS_ROLE_TO_ASSUME`, `GCP_*` 시크릿, `AZURE_*` 시크릿 등 제공업체 시크릿도 삭제하고, 커스텀 GitHub App과 함께 해당 `APP_ID` 및 `APP_PRIVATE_KEY` 시크릿도 제거합니다.

119 119 

120### GitHub App 권한120### GitHub App 권한

121 121 

122[Claude GitHub App](https://github.com/apps/claude)은 Claude Code GitHub Action, [Code Review](https://code.claude.com/docs/ko/code-review.md) 및 클라우드 세션의 [풀 리퀘스트 자동 수정](https://code.claude.com/docs/ko/claude-code-on-the-web.md#auto-fix-pull-requests)을 포함하여 GitHub와 통합되는 모든 Claude 기능에서 공유됩니다. GitHub App은 모든 기능을 포함하는 단일 권한 집합을 가지므로 집합에는 Claude Code GitHub Action이 사용하지 않는 일부 권한이 포함됩니다.122[Claude GitHub App](https://github.com/apps/claude)은 Claude Code GitHub Action, [Code Review](https://code.claude.com/docs/ko/code-review.md), 클라우드 세션의 [풀 리퀘스트 자동 수정](https://code.claude.com/docs/ko/claude-code-on-the-web.md#auto-fix-pull-requests) 등 GitHub와 통합되는 모든 Claude 기능에서 공유됩니다. GitHub App에는 모든 기능을 포괄하는 단일 권한 세트가 있으므로, 이 세트에는 Claude Code GitHub Action이 사용하지 않는 일부 권한도 포함됩니다.

123 123 

124앱을 설치하면 다음 권한을 부여합니다:124앱을 설치하면 다음 권한을 부여하게 됩니다.

125 125 

126| 권한 | 액세스 |126| 권한 | 액세스 |

127| - | - |127| - | - |


139| Statuses | 읽기 |139| Statuses | 읽기 |

140| Workflows | 읽기 및 쓰기 |140| Workflows | 읽기 및 쓰기 |

141 141 

142권한 집합은 이를 사용하는 기능보다 먼저 변경될 수 있습니다. 앱이 이전에 없던 권한을 요청하면 GitHub가 계정 소유자에게 승인을 요청합니다. 조직 설치의 경우 조직 소유자에게 요청합니다. 설치는 승인할 때까지 이전 권한을 유지합니다. 예를 들어 Actions 액세스가 읽기에서 쓰기로 변경되면 앱이 워크플로우를 다시 실행할 수 있으므로 GitHub가 소유자에게 변경을 승인하도록 요청합니다.142권한 세트는 이를 사용하는 기능보다 먼저 변경될 수도 있습니다. 앱이 이전에 없던 권한을 요청하면 GitHub는 계정 소유자(조직 설치의 경우 조직 소유자)에게 승인을 요청하며, 승인될 때까지 설치는 기존 권한을 유지합니다. 예를 들어 Actions 액세스가 읽기에서 쓰기로 변경되면 앱은 실행과 로그를 보는 것뿐만 아니라 워크플로를 다시 실행할 수 있게 되므로, GitHub는 소유자에게 변경 승인을 요청합니다.

143 143 

144앱을 설치하면 전체 권한 집합을 수락합니다. GitHub는 부분 집합을 수락하도록 허용하지 않습니다. 조직이 Claude Code GitHub Action이 사용하는 권한만 필요로 하는 경우 [Claude Code GitHub Action의 설정 가이드](https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md)에 따라 Contents, Issues 및 Pull requests만 포함하는 사용자 정의 GitHub App을 생성합니다. 사용자 정의 앱은 Claude Code GitHub Action만 포함합니다. Code Review 및 웹 자동 수정에는 여전히 공식 앱이 필요합니다.144앱을 설치하면 전체 권한 세트를 수락하게 됩니다. GitHub에서는 일부만 수락할 수 없습니다. 조직에서 Claude Code GitHub Action이 사용하는 권한만 허용해야 하는 경우, [Claude Code GitHub Action 설정 가이드](https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md)에 따라 Contents, Issues, Pull requests 권한만 가진 커스텀 GitHub App을 대신 생성합니다. 커스텀 앱은 Claude Code GitHub Action만 지원합니다. Code Review와 웹 자동 수정에는 여전히 공식 앱이 필요합니다.

145 145 

146Claude Code GitHub Action이 이러한 권한으로 Claude가 할 수 있는 작업을 제한하는 방법에 대한 자세한 내용은 [보안 설명서](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md)를 참조하십시오.146Claude Code GitHub Action이 이러한 권한으로 Claude가 수행할 수 있는 작업을 어떻게 제한하는지에 대한 자세한 내용은 [보안 문서](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md)를 참조하세요.

147 147 

148## 대화형 및 자동화 모드148## 대화형 및 자동화 모드

149 149 


241 - uses: anthropics/claude-code-action@v1241 - uses: anthropics/claude-code-action@v1

242 with:242 with:

243 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}243 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

244 plugin_marketplaces: "https://github.com/anthropics/claude-code.git"244 plugin_marketplaces: "https://github.com/anthropics/claude-plugins-official.git"

245 plugins: "code-review@claude-code-plugins"245 plugins: "code-review@claude-plugins-official"

246 prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"246 prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"

247 claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'247 claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'

248```248```

Details

221 221 

222리뷰 또는 Anthropic 호스팅 클라우드 세션이 시간 초과되면 GHES 인스턴스가 Anthropic 인프라에서 도달 가능하지 않을 수 있습니다. 방화벽이 Anthropic의 [아웃바운드 IP 주소](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses)에서 인바운드 연결을 허용하는지 확인합니다. [자체 호스팅 환경](https://code.claude.com/docs/ko/self-hosted-environments)의 세션은 네트워크 내부에서 GHES에 도달하므로 이들 중 하나가 복제할 수 없을 때 실행기의 자체 네트워크 경로를 대신 확인합니다. 저장소 선택기 및 기타 호스팅된 사전 세션 흐름의 경우 [네트워크 요구 사항](#network-requirements)을 참조합니다.222리뷰 또는 Anthropic 호스팅 클라우드 세션이 시간 초과되면 GHES 인스턴스가 Anthropic 인프라에서 도달 가능하지 않을 수 있습니다. 방화벽이 Anthropic의 [아웃바운드 IP 주소](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses)에서 인바운드 연결을 허용하는지 확인합니다. [자체 호스팅 환경](https://code.claude.com/docs/ko/self-hosted-environments)의 세션은 네트워크 내부에서 GHES에 도달하므로 이들 중 하나가 복제할 수 없을 때 실행기의 자체 네트워크 경로를 대신 확인합니다. 저장소 선택기 및 기타 호스팅된 사전 세션 흐름의 경우 [네트워크 요구 사항](#network-requirements)을 참조합니다.

223 223 

224### 연결 테스트는 통과하지만 두 번째 테스트가 실패함

225 

226두 번째 테스트는 Anthropic 호스팅 클라우드 세션과 동일한 방식으로 GHES 인스턴스에 연결합니다. 표시된 메시지를 찾아 방화벽을 확인해야 하는지 또는 다시 시도해야 하는지 확인합니다.

227 

228* **`Connection test passed, but a second test failed.`**: 인스턴스가 방화벽 뒤에 있는 경우 Anthropic의 모든 [아웃바운드 IP 주소](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses)를 허용합니다. 방화벽이 일부 주소를 차단하더라도 연결 테스트는 통과할 수 있기 때문입니다. 몇 분 후에 다시 시도할 수도 있습니다.

229* **`Connection test passed, but a second test could not run.`**: 몇 분 후에 다시 시도합니다.

230 

231다시 테스트하려면 [**Organization settings > Git providers**](https://claude.ai/admin-settings/source-control#github-enterprise)에서 해당 연결의 **More options** 메뉴를 열고 **Test connection**을 선택합니다.

232 

224### 세션 시작이 `Unable to get organization UUID`로 실패함233### 세션 시작이 `Unable to get organization UUID`로 실패함

225 234 

226Claude Code가 자신의 자격 증명에서 claude.ai 조직을 읽을 수 없습니다. GitHub Enterprise Server 지원이 해당 플랜으로 제한되므로 Team 또는 Enterprise 조직의 계정을 사용하여 `/login`으로 로그인합니다. 원인 및 이 상태가 생성하는 다른 메시지에 대해서는 [Unable to get organization UUID](https://code.claude.com/docs/ko/claude-code-on-the-web.md#unable-to-get-organization-uuid)를 참조합니다.235Claude Code가 자신의 자격 증명에서 claude.ai 조직을 읽을 수 없습니다. GitHub Enterprise Server 지원이 해당 플랜으로 제한되므로 Team 또는 Enterprise 조직의 계정을 사용하여 `/login`으로 로그인합니다. 원인 및 이 상태가 생성하는 다른 메시지에 대해서는 [Unable to get organization UUID](https://code.claude.com/docs/ko/claude-code-on-the-web.md#unable-to-get-organization-uuid)를 참조합니다.

hooks-guide.md +77 −77

Details

73 73 

74`Esc`를 눌러 CLI로 돌아갑니다. 상태 표시줄에 `⏸ manual mode on`이 표시될 때까지 `Shift+Tab`을 누른 다음, Claude에게 권한이 필요한 작업을 요청하고 터미널에서 다른 곳으로 전환합니다. 데스크톱 알림이 표시되어야 합니다.74`Esc`를 눌러 CLI로 돌아갑니다. 상태 표시줄에 `⏸ manual mode on`이 표시될 때까지 `Shift+Tab`을 누른 다음, Claude에게 권한이 필요한 작업을 요청하고 터미널에서 다른 곳으로 전환합니다. 데스크톱 알림이 표시되어야 합니다.

75 75 

76## 자동화할 수 있는 것76## 자동화할 수 있는 작업

77 77 

78Hooks를 사용하면 Claude Code의 라이프사이클의 주요 지점에서 코드를 실행할 수 있습니다: 편집 후 파일 형식 지정, 실행 전 명령 차단, Claude가 입력이 필요할 때 알림 전송, 세션 시작 시 컨텍스트 주입 등. 전체 hook 이벤트 목록은 [Hooks 참조](https://code.claude.com/docs/ko/hooks.md#hook-lifecycle)를 참조하세요.78훅을 사용하면 Claude Code 수명 주기의 주요 시점에 코드를 실행할 수 있습니다. 편집 후 파일 포맷팅, 실행 전 명령 차단, Claude가 입력을 필요로 할 때 알림 전송, 세션 시작 시 컨텍스트 주입 등이 가능합니다. 전체 훅 이벤트 목록은 [훅 레퍼런스](https://code.claude.com/docs/ko/hooks.md#hook-lifecycle)를 참조하십시오.

79 79 

80각 예제에는 [설정 파일](#configure-hook-location)에 추가하는 즉시 사용 가능한 구성 블록이 포함되어 있습니다.80각 예시에는 [설정 파일](#configure-hook-location)에 추가하여 바로 사용할 수 있는 구성 블록이 포함되어 있습니다.

81 81 

82별도의 모델 검토를 실행하고 결과를 세션에 다시 피드백하는 hooks의 프로덕션 예제는 [`security-guidance` 플러그인이 Claude Code와 통합되는 방식](https://code.claude.com/docs/ko/security-guidance#how-the-plugin-integrates-with-claude-code)을 참조하세요.82별도의 모델 검토를 실행하고 그 결과를 세션에 다시 전달하는 훅의 프로덕션 예시는 [`security-guidance` 플러그인이 Claude Code와 통합되는 방식](https://code.claude.com/docs/ko/security-guidance#how-the-plugin-integrates-with-claude-code)을 참조하십시오.

83 83 

84### Claude가 입력이 필요할 때 알림 받기84### Claude가 입력을 필요로 할 때 알림 받기

85 85 

86Claude가 작업을 완료하고 입력이 필요할 때마다 데스크톱 알림을 받으므로 터미널을 확인하지 않고 다른 작업으로 전환할 수 있습니다.86Claude가 작업을 마치고 입력을 필요로 할 때마다 데스크톱 알림을 받으면, 터미널을 확인하지 않고도 다른 작업으로 전환할 수 있습니다.

87 87 

88이 훅은 Claude가 입력 또는 권한을 기다릴 때 Claude Code가 발생시키는 `Notification` 이벤트를 사용합니다. 정확한 시점은 [각 알림 유형이 발생하는 시점](https://code.claude.com/docs/ko/hooks.md#notification)을 참조하세요.88이 훅은 `Notification` 이벤트를 사용하며, Claude Code는 Claude가 입력이나 권한을 기다릴 때 이 이벤트를 발생시킵니다. 정확한 시점은 [각 알림 유형이 발생하는 시점](https://code.claude.com/docs/ko/hooks.md#notification)을 참조하십시오.

89 89 

90아래의 각 탭은 플랫폼의 기본 알림 명령을 사용합니다. `~/.claude/settings.json`에 추가합니다:90아래 각 탭은 플랫폼의 기본 알림 명령을 사용합니다. 다음을 `~/.claude/settings.json`에 추가하십시오.

91 91 

92**macOS**92**macOS**

93 93 


109}109}

110```110```

111 111 

112> **알림이 나타나지 않으면**112> **알림이 표시되지 않는 경우**

113>113>

114> `osascript`는 기본 제공 Script Editor 앱을 통해 알림을 라우팅합니다. Script Editor에 알림 권한이 없으면 명령이 아무 표시 없이 실패하고 macOS는 권한을 부여하라고 확인을 요청하지 않습니다.114> `osascript`는 기본 제공 Script Editor 앱을 통해 알림을 전달합니다. Script Editor에 알림 권한이 없으면 명령이 아무 메시지 없이 실패하며, macOS는 권한 부여를 요청하지 않습니다.

115>115>

116> Terminal에서 이를 한 번 실행하여 Script Editor가 알림 설정에 나타나도록 합니다:116> Script Editor가 알림 설정에 나타나도록 Terminal에서 다음을 한 번 실행하십시오.

117>117>

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

119> osascript -e 'display notification "test"'119> osascript -e 'display notification "test"'

120> ```120> ```

121>121>

122> 아직 아무것도 나타나지 않습니다. **시스템 설정 > 알림**을 열고 목록에서 **Script Editor**를 찾은 다음 **알림 허용**을 켭니다. 명령을 다시 실행하여 테스트 알림이 나타나는지 확인합니다.122> 아직은 아무것도 표시되지 않습니다. **System Settings > Notifications**를 열고 목록에서 **Script Editor**를 찾아 **Allow Notifications**를 켜십시오. 명령을 다시 실행하여 테스트 알림이 표시되는지 확인하십시오.

123 123 

124**Linux**124**Linux**

125 125 


141}141}

142```142```

143 143 

144> **알림이 나타나지 않으면**144> **알림이 표시되지 않는 경우**

145>145>

146> `notify-send`는 데스크톱 알림 데몬이 필요하며, 헤드리스 서버, SSH 세션 및 대부분의 컨테이너에는 이것이 없습니다. 먼저 명령을 직접 테스트합니다:146> `notify-send`에는 데스크톱 알림 데몬이 필요하지만, 헤드리스 서버, SSH 세션 및 대부분의 컨테이너에는 이 데몬이 없습니다. 먼저 명령을 직접 테스트하십시오.

147>147>

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

149> notify-send 'Claude Code' 'test'149> notify-send 'Claude Code' 'test'

150> ```150> ```

151>151>

152> 명령을 찾을 수 없으면 Debian 및 Ubuntu에서 `libnotify-bin` 패키지를 설치하거나 배포판의 동등한 패키지를 설치합니다.152> 명령을 찾을 수 없다면 Debian 및 Ubuntu에서는 `libnotify-bin` 패키지를 설치하고, 다른 배포판에서는 그에 해당하는 패키지를 설치하십시오.

153 153 

154**Windows (PowerShell)**154**Windows (PowerShell)**

155 155 


171}171}

172```172```

173 173 

174> **대화 상자가 나타나지 않으면**174> **대화 상자가 표시되지 않는 경우**

175>175>

176> 이 명령은 화면 모서리의 알림이 아닌 대화 상자를 열므로 대화 상자가 터미널 창 뒤에서 열릴 수 있습니다. 먼저 PowerShell에서 명령을 직접 테스트합니다.176> 이 명령은 화면 모서리의 알림이 아닌 대화 상자를 열기 때문에, 대화 상자가 터미널 창 뒤에 열릴 수 있습니다. 먼저 PowerShell에서 명령을 직접 테스트하십시오.

177>177>

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

179 179 

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

181 181 

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

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

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

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

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

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

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

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

190| `elicitation_response` | MCP 유도 응답이 서버로 다시 전송될 때 |190| `elicitation_response` | MCP elicitation 응답이 서버로 다시 전송된 경우 |

191| `agent_needs_input` | 백그라운드 세션이 입력을 기다리기 시작하고 [agent view](https://code.claude.com/docs/ko/agent-view.md)가 열려 있을 때, 또는 현재 세션이 [agent team 팀원의 터미널 설정 질문](https://code.claude.com/docs/ko/agent-teams.md#choose-a-display-mode)을 물어보거나 [분류기 요청 요금](https://code.claude.com/docs/ko/auto-mode-classifier-billing.md)에 대한 자동 모드의 공지를 표시하고 약 6초 동안 입력하지 않았을 때 |191| `agent_needs_input` | [에이전트 뷰](https://code.claude.com/docs/ko/agent-view.md)가 열려 있는 동안 백그라운드 세션이 사용자의 입력을 기다리기 시작한 경우. 터미널 세션에 [에이전트 팀 팀원의 터미널 설정 질문](https://code.claude.com/docs/ko/agent-teams.md#choose-a-display-mode) 또는 [분류기 요청 요금](https://code.claude.com/docs/ko/auto-mode-classifier-billing.md)에 대한 자동 모드의 안내가 표시되고 사용자가 약 6초 동안 입력하지 않은 경우에도 발생합니다 |

192| `agent_completed` | 백그라운드 세션이 완료되거나 실패합니다. [agent view](https://code.claude.com/docs/ko/agent-view.md)가 열려 있을 때만 발생합니다 |192| `agent_completed` | 백그라운드 세션이 완료되거나 실패한 경우. [에이전트 뷰](https://code.claude.com/docs/ko/agent-view.md)가 열려 있는 동안에만 발생합니다 |

193| `quota_auto_resume_fired` | Claude Code가 claude.ai 사용 제한으로 일시 중지된 작업을 계속합니다: 재설정 시 또는 Claude Code 중에 수행하는 작업(예: 사용 크레딧 추가, 플랜 업그레이드 또는 모델 전환)으로 인해 사용 가능한 사용량이 더 빨리 제공될 때, [모델 설정 예외](https://code.claude.com/docs/ko/interactive-mode.md#wait-for-a-usage-limit-to-reset) 포함 |193| `quota_auto_resume_fired` | claude.ai 사용 한도로 일시 중지된 작업을 Claude Code가 계속하는 경우: 한도가 재설정될 때, 또는 대기 중에 사용량 크레딧 추가, 플랜 업그레이드, 모델 전환 등 Claude Code에서 수행한 작업으로 사용량이 다시 확보되어 더 빨리 계속되는 경우이며, [모델 설정 예외](https://code.claude.com/docs/ko/interactive-mode.md#wait-for-a-usage-limit-to-reset)가 적용됩니다 |

194| `quota_auto_resume_stale` | claude.ai 사용 제한이 컴퓨터가 약 30분 이상 절전 상태였을 때 재설정됩니다. Claude Code는 계속하지 않고 `Enter`를 누르기를 기다립니다. 더 짧은 절전 후에는 계속하고 대신 `quota_auto_resume_fired`를 발생시킵니다 |194| `quota_auto_resume_stale` | 컴퓨터가 약 30분 이상 절전 상태인 동안 claude.ai 사용 한도가 재설정된 경우. Claude Code는 계속하지 않고 사용자가 `Enter`를 누를 때까지 기다립니다. 절전 시간이 더 짧으면 계속 진행하며 대신 `quota_auto_resume_fired`를 발생시킵니다 |

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

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

197 197 

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

199 199 

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

201 201 

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

203 203 

204팀원의 터미널 설정 질문에 대한 `agent_needs_input`은 Claude Code v2.1.248 이상이 필요합니다.204팀원의 터미널 설정 질문에 대한 `agent_needs_input`을 사용하려면 Claude Code v2.1.248 이상이 필요합니다.

205 205 

206Claude Code 프롬프트에서 `/hooks`를 입력하고 `Notification` 아래에 훅이 표시되는지 확인합니다.206Claude Code 프롬프트에 `/hooks`를 입력하고 훅이 `Notification` 아래에 표시되는지 확인하십시오.

207 207 

208### 편집 후 코드 자동 형식 지정208### 편집 후 코드 자동 포맷팅

209 209 

210Claude가 편집하는 모든 파일에서 [Prettier](https://prettier.io/)를 자동으로 실행하여 수동 개입 없이 형식이 일관되게 유지되도록 합니다.210Claude가 편집하는 모든 파일에 [Prettier](https://prettier.io/)를 자동으로 실행하여, 수동 개입 없이 포맷팅을 일관되게 유지합니다.

211 211 

212이 hook은 `PostToolUse` 이벤트를 `Edit|Write` matcher와 함께 사용하므로 파일 편집 도구 후에만 실행됩니다. 명령은 [`jq`](https://jqlang.org/)를 사용하여 편집된 파일 경로를 추출하고 Prettier에 전달합니다. 프로젝트 루트의 `.claude/settings.json`에 추가합니다:212이 훅은 `Edit|Write` matcher와 함께 `PostToolUse` 이벤트를 사용하므로, 파일 편집 도구 이후에만 실행됩니다. 이 명령은 [`jq`](https://jqlang.org/)로 편집된 파일 경로를 추출하여 Prettier에 전달합니다. 프로젝트 루트의 `.claude/settings.json`에 다음을 추가하십시오.

213 213 

214```json theme={null}214```json theme={null}

215{215{


229}229}

230```230```

231 231 

232hook을 테스트하려면 Claude에게 JavaScript 파일에 단일 따옴표 문자열이 있는 줄을 추가하도록 요청한 다음 파일을 엽니다: Prettier의 기본 설정을 사용하면 hook이 이를 이중 따옴표로 다시 작성합니다.232훅을 테스트하려면 Claude에게 작은따옴표 문자열이 포함된 줄을 JavaScript 파일에 추가하도록 요청한 다음 파일을 여십시오. Prettier의 기본 설정에서는 훅이 이를 큰따옴표로 다시 작성합니다.

233 233 

234훅이 성공하면 Claude Code는 대화에서 아무것도 표시하지 않습니다. 훅이 실행되었는지 확인하려면 편집된 파일이 다시 형식화되었는지 확인하거나 [훅이 수행한 작업 확인](#check-what-a-hook-did)을 참조하세요.234훅이 성공하면 Claude Code는 대화에 아무것도 표시하지 않습니다. 훅이 실행되었는지 확인하려면 편집된 파일이 다시 포맷되었는지 확인하거나 [훅이 수행한 작업 확인](#check-what-a-hook-did)을 참조하십시오.

235 235 

236`Bash` 명령이 파일을 다시 작성할 때를 포함하여 파일이 어떻게 변경되든 특정 파일을 다시 형식화하려면 대신 [FileChanged](https://code.claude.com/docs/ko/hooks.md#filechanged) hook을 사용합니다.236`Bash` 명령이 파일을 다시 작성하는 경우를 포함하여, 특정 파일이 어떤 방식으로 변경되든 다시 포맷하려면 대신 [FileChanged](https://code.claude.com/docs/ko/hooks.md#filechanged) 훅을 사용하십시오.

237 237 

238> [!NOTE]238> [!NOTE]

239>239>

240> 이 페이지의 Bash 예제는 JSON 구문 분석을 위해 `jq`를 사용합니다. macOS에서 `brew install jq`로, Debian 및 Ubuntu에서 `apt-get install jq`로 설치하거나 [`jq` 다운로드](https://jqlang.org/download/)를 참조하세요.240> 이 페이지의 Bash 예시는 JSON 파싱에 `jq`를 사용합니다. macOS에서는 `brew install jq`, Debian 및 Ubuntu에서는 `apt-get install jq`로 설치하거나 [`jq` 다운로드](https://jqlang.org/download/)를 참조하십시오.

241 241 

242### 보호된 파일에 대한 편집 차단242### 보호된 파일에 대한 편집 차단

243 243 

244Claude가 `.env`, `package-lock.json` 또는 `.git/`의 모든 항목과 같은 민감한 파일을 수정하지 못하도록 방지합니다. Claude는 편집이 차단된 이유를 설명하는 피드백을 받으므로 접근 방식을 조정할 수 있습니다.244Claude가 `.env`, `package-lock.json` 또는 `.git/` 내의 모든 항목과 같은 민감한 파일을 수정하지 못하도록 방지합니다. Claude는 편집이 차단된 이유를 설명하는 피드백을 받으므로 접근 방식을 조정할 수 있습니다.

245 245 

246이 예제는 hook이 호출하는 별도의 스크립트 파일을 사용합니다. 스크립트는 대상 파일 경로를 보호된 패턴 목록과 비교하고 종료 코드 2로 종료하여 편집을 차단합니다.246이 예시는 훅이 호출하는 별도의 스크립트 파일을 사용합니다. 스크립트는 대상 파일 경로를 보호된 패턴 목록과 비교하고, 종료 코드 2로 종료하여 편집을 차단합니다.

247 247 

248**1. hook 스크립트 만들기**248**1. 훅 스크립트 생성**

249 249 

250이를 `.claude/hooks/protect-files.sh`에 저장합니다:250다음을 `.claude/hooks/protect-files.sh`에 저장하십시오.

251 251 

252```bash theme={null}252```bash theme={null}

253#!/bin/bash253#!/bin/bash


256INPUT=$(cat)256INPUT=$(cat)

257FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')257FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

258 258 

259# Windows 백슬래시 구분자를 정규화하여 아래 패턴이 일치하도록 합니다259# Normalize Windows backslash separators so the patterns below match

260FILE_PATH="${FILE_PATH//\\//}"260FILE_PATH="${FILE_PATH//\\//}"

261 261 

262PROTECTED_PATTERNS=(".env" "package-lock.json" ".git/")262PROTECTED_PATTERNS=(".env" "package-lock.json" ".git/")


273 273 

274**2. macOS 및 Linux에서 스크립트를 실행 가능하게 만들기**274**2. macOS 및 Linux에서 스크립트를 실행 가능하게 만들기**

275 275 

276Hook 스크립트는 Claude Code가 실행하려면 실행 가능해야 합니다:276Claude Code가 훅 스크립트를 실행하려면 스크립트가 실행 가능해야 합니다.

277 277 

278```bash theme={null}278```bash theme={null}

279chmod +x .claude/hooks/protect-files.sh279chmod +x .claude/hooks/protect-files.sh

280```280```

281 281 

282**3. hook 등록**282**3. 훅 등록**

283 283 

284모든 `Edit` 또는 `Write` 도구 호출 전에 스크립트를 실행하는 `PreToolUse` hook을 `.claude/settings.json`에 추가합니다:284`Edit` 또는 `Write` 도구 호출 전에 스크립트를 실행하는 `PreToolUse` 훅을 `.claude/settings.json`에 추가하십시오.

285 285 

286```json theme={null}286```json theme={null}

287{287{


301}301}

302```302```

303 303 

304**4. hook 테스트**304**4. 훅 테스트**

305 305 

306Claude에게 `.env` 파일에 주석을 추가하도록 요청합니다. Claude Code는 실행 전에 편집을 차단하고 스크립트의 `Blocked:` 메시지를 Claude에게 피드백으로 전달합니다.306Claude에게 `.env` 파일에 주석을 추가하도록 요청하십시오. Claude Code는 편집이 실행되기 전에 이를 차단하고 스크립트의 `Blocked:` 메시지를 피드백으로 Claude에 전달합니다.

307 307 

308### 압축 후 컨텍스트 다시 주입308### 컨텍스트 압축 후 컨텍스트 재주입

309 309 

310Claude의 컨텍스트 윈도우가 가득 차면 압축은 대화를 요약하여 공간을 확보합니다. 이는 중요한 세부 정보를 잃을 수 있습니다. `compact` matcher와 함께 `SessionStart` hook을 사용하여 모든 압축 후 중요한 컨텍스트를 다시 주입합니다.310Claude의 컨텍스트 윈도우가 가득 차면 압축이 대화를 요약하여 공간을 확보합니다. 이 과정에서 중요한 세부 정보가 손실될 수 있습니다. `compact` matcher와 함께 `SessionStart` 훅을 사용하여 압축이 일어날 때마다 중요한 컨텍스트를 다시 주입하십시오.

311 311 

312Claude Code는 명령이 stdout에 쓰는 일반 텍스트를 Claude의 컨텍스트에 추가합니다. 이 예제는 Claude에게 프로젝트 규칙과 최근 작업을 상기시킵니다. 프로젝트 루트의 `.claude/settings.json`에 추가합니다:312Claude Code는 명령이 stdout에 출력하는 일반 텍스트를 Claude의 컨텍스트에 추가합니다. 이 예시는 Claude에게 프로젝트 규칙과 최근 작업을 상기시킵니다. 프로젝트 루트의 `.claude/settings.json`에 다음을 추가하십시오.

313 313 

314```json theme={null}314```json theme={null}

315{315{


329}329}

330```330```

331 331 

332`echo`를 `git log --oneline -5`와 같이 동적 출력을 생성하는 모든 명령으로 바꿀 수 있습니다. 모든 세션 시작 시 컨텍스트를 주입하려면 [CLAUDE.md](https://code.claude.com/docs/ko/memory.md) 사용을 고려하세요. 환경 변수는 [`CLAUDE_ENV_FILE`](https://code.claude.com/docs/ko/hooks#persist-environment-variables)을 참조하세요.332`echo`를 최근 커밋을 표시하는 `git log --oneline -5`처럼 동적 출력을 생성하는 어떤 명령으로든 대체할 수 있습니다. 모든 세션 시작 시 컨텍스트를 주입하려면 대신 [CLAUDE.md](https://code.claude.com/docs/ko/memory.md)를 사용하는 것을 고려하십시오. 환경 변수에 대해서는 레퍼런스의 [`CLAUDE_ENV_FILE`](https://code.claude.com/docs/ko/hooks#persist-environment-variables)을 참조하십시오.

333 333 

334### 구성 변경 감사334### 구성 변경 감사

335 335 

336세션 중에 설정 또는 skills 파일이 변경될 때를 추적합니다. `ConfigChange` 이벤트는 외부 프로세스 또는 편집기가 구성 파일을 수정할 때 발생하므로 규정 준수를 위해 변경 사항을 기록하거나 무단 수정을 차단할 수 있습니다.336세션 중에 설정 파일이나 스킬 파일이 변경되는 시점을 추적합니다. `ConfigChange` 이벤트는 외부 프로세스나 편집기가 설정 파일을 수정할 때 발생하므로, 규정 준수를 위해 변경 사항을 로그에 기록하거나 승인되지 않은 수정을 차단할 수 있습니다.

337 337 

338이 예제는 각 변경을 감사 로그에 추가합니다. `~/.claude/settings.json`에 추가합니다:338이 예시는 각 변경 사항을 감사 로그에 추가합니다. 다음을 `~/.claude/settings.json`에 추가하십시오.

339 339 

340```json theme={null}340```json theme={null}

341{341{


355}355}

356```356```

357 357 

358Matcher는 구성 유형으로 필터링합니다: `user_settings`, `project_settings`, `local_settings`, `policy_settings` 또는 `skills`. 변경이 적용되지 않도록 차단하려면 종료 코드 2로 종료하거나 `{"decision": "block"}`을 반환합니다. 전체 입력 스키마는 [ConfigChange 참조](https://code.claude.com/docs/ko/hooks.md#configchange)를 참조하세요.358matcher는 구성 유형별로 필터링합니다: `user_settings`, `project_settings`, `local_settings`, `policy_settings` 또는 `skills`. 변경 사항이 적용되지 않도록 차단하려면 종료 코드 2로 종료하거나 `{"decision": "block"}`을 반환하십시오. 전체 입력 스키마는 [ConfigChange 레퍼런스](https://code.claude.com/docs/ko/hooks.md#configchange)를 참조하십시오.

359 359 

360hook이 변경 사항을 기록하는지 확인하려면 세션이 실행 중인 동안 다른 편집기에서 설정 파일을 편집한 다음 `~/claude-config-audit.log`를 엽니다: hook은 타임스탬프, 소스 및 파일 경로가 있는 변경당 하나의 JSON 줄을 추가합니다.360훅이 변경 사항을 기록하는지 확인하려면 세션이 실행 중인 동안 다른 편집기에서 설정 파일을 편집한 다음 `~/claude-config-audit.log`를 여십시오. 훅은 변경 사항마다 타임스탬프, 소스 및 파일 경로가 포함된 JSON 한 줄을 추가합니다.

361 361 

362### 디렉토리 또는 파일이 변경될 때 환경 다시 로드362### 디렉터리 또는 파일 변경 시 환경 다시 로드

363 363 

364일부 프로젝트는 어느 디렉토리에 있는지에 따라 다른 환경 변수를 설정합니다. [direnv](https://direnv.net/)와 같은 도구는 셸에서 자동으로 이를 수행하지만 Claude의 Bash 도구는 자체적으로 해당 변경 사항을 선택하지 않습니다.364일부 프로젝트는 현재 위치한 디렉터리에 따라 서로 다른 환경 변수를 설정합니다. [direnv](https://direnv.net/) 같은 도구는 셸에서 이를 자동으로 처리하지만, Claude의 Bash 도구는 이러한 변경 사항을 스스로 반영하지 않습니다.

365 365 

366`SessionStart` hook을 `CwdChanged` hook과 쌍으로 사용하면 이를 해결합니다. `SessionStart`는 시작한 디렉토리에 대한 변수를 로드하고 `CwdChanged`는 Claude가 디렉토리를 변경할 때마다 이를 다시 로드합니다. 둘 다 `CLAUDE_ENV_FILE`에 쓰며, Claude Code는 각 Bash 명령 전에 이를 스크립트 프리앰블로 실행합니다. `~/.claude/settings.json`에 추가합니다:366`SessionStart` 훅과 `CwdChanged` 훅을 함께 사용하면 이 문제가 해결됩니다. `SessionStart`는 실행을 시작한 디렉터리의 변수를 로드하고, `CwdChanged`는 Claude가 디렉터리를 변경할 때마다 변수를 다시 로드합니다. 두 훅 모두 `CLAUDE_ENV_FILE`에 기록하며, Claude Code는 각 Bash 명령 전에 이를 스크립트 프리앰블로 실행합니다. 다음을 `~/.claude/settings.json`에 추가하십시오.

367 367 

368```json theme={null}368```json theme={null}

369{369{


392}392}

393```393```

394 394 

395`direnv allow`를 `.envrc`가 있는 각 디렉토리에서 한 번 실행하여 direnv가 이를 로드할 수 있도록 허용합니다. direnv 대신 devbox 또는 nix를 사용하는 경우 `direnv export bash` 대신 `devbox shellenv` 또는 `devbox global shellenv`를 사용하면 동일한 패턴이 작동합니다.395direnv가 `.envrc`를 로드할 수 있도록, `.envrc`가 있는 각 디렉터리에서 `direnv allow`를 한 번 실행하십시오. direnv 대신 devbox나 nix를 사용하는 경우, `direnv export bash` 대신 `devbox shellenv` 또는 `devbox global shellenv`를 사용하면 동일한 패턴이 작동합니다.

396 396 

397모든 디렉터리 변경이 아닌 특정 파일에 반응하려면 감시할 파일 이름을 `|`로 구분하여 나열한 `matcher`와 함께 `FileChanged`를 사용합니다. 감시 목록을 구성할 때 Claude Code는 이 값을 정규식으로 평가하지 않고 리터럴 파일 이름으로 분할합니다. 동일한 값이 파일 변경 시 실행되는 hook 그룹을 필터링하는 방식은 [FileChanged](https://code.claude.com/docs/ko/hooks.md#filechanged)를 참조하세요. 이 예제는 작업 디렉터리에서 `.envrc` 및 `.env`를 감시합니다:397모든 디렉터리 변경이 아닌 특정 파일에 반응하려면, 감시할 파일 이름을 `|`로 구분하여 나열한 `matcher`와 함께 `FileChanged`를 사용하십시오. 감시 목록을 구성할 때 Claude Code는 이 값을 정규식으로 평가하지 않고 리터럴 파일 이름으로 분할합니다. 파일이 변경될 때 동일한 값이 어떤 훅 그룹을 실행할지도 필터링하는 방식은 [FileChanged](https://code.claude.com/docs/ko/hooks.md#filechanged)를 참조하십시오. 이 예시는 작업 디렉터리의 `.envrc`와 `.env`를 감시합니다.

398 398 

399```json theme={null}399```json theme={null}

400{400{


414}414}

415```415```

416 416 

417입력 스키마, `watchPaths` 출력 및 `CLAUDE_ENV_FILE` 세부 정보는 [CwdChanged](https://code.claude.com/docs/ko/hooks.md#cwdchanged) 및 [FileChanged](https://code.claude.com/docs/ko/hooks.md#filechanged) 참조 항목을 참조하세요.417입력 스키마, `watchPaths` 출력 및 `CLAUDE_ENV_FILE` 세부 정보는 [CwdChanged](https://code.claude.com/docs/ko/hooks.md#cwdchanged) 및 [FileChanged](https://code.claude.com/docs/ko/hooks.md#filechanged) 레퍼런스 항목을 참조하십시오.

418 418 

419### 특정 권한 프롬프트 자동 승인419### 특정 권한 프롬프트 자동 승인

420 420 

421항상 허용하는 도구 호출에 대한 승인 대화를 건너뜁니다. 이 예제는 `ExitPlanMode`를 자동 승인합니다. 이는 Claude가 계획 제시를 완료하고 진행을 요청할 때 호출하는 도구이므로 계획이 준비될 때마다 프롬프트가 표시되지 않습니다.421항상 허용하는 도구 호출에 대해서는 승인 대화 상자를 건너뜁니다. 이 예시는 Claude가 플랜 제시를 마치고 진행을 요청할 때 호출하는 도구인 `ExitPlanMode`를 자동 승인하므로, 플랜이 준비될 때마다 확인을 요청받지 않습니다.

422 422 

423위의 종료 코드 예제와 달리 자동 승인을 위해서는 hook이 JSON 결정을 stdout에 작성해야 합니다. Claude Code는 권한을 요청하려고 할 때 `PermissionRequest` hook을 실행하며, hook이 `"behavior": "allow"`를 반환하면 Claude Code는 사용자 대신 요청에 응답합니다.423위의 종료 코드 예시와 달리, 자동 승인을 하려면 훅이 JSON 결정을 stdout에 출력해야 합니다. Claude Code는 사용자에게 권한을 요청하려고 할 때 `PermissionRequest` 훅을 실행하며, 훅이 `"behavior": "allow"`를 반환하면 Claude Code가 사용자를 대신하여 요청에 응답합니다.

424 424 

425Matcher는 hook을 `ExitPlanMode`로만 범위를 지정하므로 다른 프롬프트는 영향을 받지 않습니다. `~/.claude/settings.json`에 추가합니다:425matcher는 훅의 범위를 `ExitPlanMode`로만 한정하므로 다른 프롬프트에는 영향을 주지 않습니다. 다음을 `~/.claude/settings.json`에 추가하십시오.

426 426 

427```json theme={null}427```json theme={null}

428{428{


442}442}

443```443```

444 444 

445Hook이 승인하면 Claude Code는 계획 모드를 종료하고 계획 모드에 들어가기 전에 활성화되었던 권한 모드를 복원합니다. 트랜스크립트는 대화가 나타났을 위치에 "Allowed by PermissionRequest hook"을 표시합니다. Hook 경로는 항상 현재 대화를 유지합니다: 대화가 할 수 있는 방식으로 컨텍스트를 지우고 새로운 구현 세션을 시작할 수 없습니다.445훅이 승인하면 Claude Code는 플랜 모드를 종료하고 플랜 모드에 들어가기 전에 활성화되어 있던 권한 모드를 복원합니다. 트랜스크립트에는 대화 상자가 나타났을 위치에 "Allowed by PermissionRequest hook"이 표시됩니다. 훅 경로는 항상 현재 대화를 유지합니다. 대화 상자와 달리 컨텍스트를 지우고 새로운 구현 세션을 시작할 수는 없습니다.

446 446 

447대신 특정 권한 모드를 설정하려면 hook의 출력에 `setMode` 항목이 있는 `updatedPermissions` 배열이 포함될 수 있습니다. `mode` 값은 `default`, `acceptEdits` 또는 `bypassPermissions`과 같은 모든 권한 모드이며 `destination: "session"`은 현재 세션에만 적용합니다.447대신 특정 권한 모드를 설정하려면, 훅의 출력에 `setMode` 항목이 포함된 `updatedPermissions` 배열을 넣을 수 있습니다. `mode` 값은 `default`, `acceptEdits`, `bypassPermissions` 같은 권한 모드이며, `destination: "session"`은 현재 세션에만 적용합니다.

448 448 

449> [!NOTE]449> [!NOTE]

450>450>

451> `bypassPermissions`은 bypass 모드를 이미 사용할 수 있는 상태로 세션을 시작한 경우에만 적용됩니다: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` 또는 [사용자, `--settings` 또는 관리 설정](https://code.claude.com/docs/ko/settings-reference#permissions-defaultmode)의 `permissions.defaultMode: "bypassPermissions"`. bypass 모드가 [`permissions.disableBypassPermissionsMode`](https://code.claude.com/docs/ko/permissions#managed-settings)로 비활성화되었거나 [제한된 모드](https://code.claude.com/docs/ko/cli-reference.md#cli-flags)에서 세션을 시작한 경우에는 적용되지 않습니다.451> `bypassPermissions`는 우회 모드를 이미 사용할 수 있는 상태로 세션을 시작한 경우에만 적용됩니다: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, 또는 [사용자 설정, `--settings` 또는 관리형 설정](https://code.claude.com/docs/ko/settings-reference#permissions-defaultmode)의 `permissions.defaultMode: "bypassPermissions"`. [`permissions.disableBypassPermissionsMode`](https://code.claude.com/docs/ko/permissions#managed-settings)로 우회 모드가 비활성화된 경우나 [제한 모드](https://code.claude.com/docs/ko/cli-reference.md#cli-flags)로 세션을 시작한 경우에는 적용되지 않습니다.

452>452>

453> Claude Code는 절대 이를 `defaultMode`로 저장하지 않습니다.453> Claude Code는 이를 `defaultMode`로 저장하지 않습니다.

454 454 

455세션을 `acceptEdits`로 전환하려면 hook이 이 JSON을 stdout에 작성합니다:455세션을 `acceptEdits`로 전환하려면 훅이 다음 JSON을 stdout에 출력합니다.

456 456 

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

458{458{


468}468}

469```469```

470 470 

471Matcher를 가능한 한 좁게 유지합니다. `.*`와 일치하거나 matcher를 비워두면 파일 쓰기 및 셸 명령을 포함한 모든 권한 프롬프트를 자동 승인합니다. 전체 결정 필드 집합은 [PermissionRequest 참조](https://code.claude.com/docs/ko/hooks.md#permissionrequest-decision-control)를 참조하세요.471matcher는 가능한 한 좁게 유지하십시오. `.*`로 매칭하거나 matcher를 비워 두면 파일 쓰기와 셸 명령을 포함한 모든 도구 권한 프롬프트가 자동 승인됩니다. 전체 결정 필드는 [PermissionRequest 레퍼런스](https://code.claude.com/docs/ko/hooks.md#permissionrequest-decision-control)를 참조하십시오.

472 472 

473## Hooks 작동 방식473## Hooks 작동 방식

474 474 

Details

332* 터미널, 데스크톱 앱 또는 VS Code 확장에서 작업하는 로컬 세션의 백그라운드 명령에는 시간 제한이 없습니다. `-p` 실행이나 클라우드 세션처럼 무인으로 실행되는 세션에서는 Claude Code가 백그라운드 명령을 [시간 제한](https://code.claude.com/docs/ko/tools-reference.md#time-limit-for-background-commands)에 도달했을 때 중지합니다.332* 터미널, 데스크톱 앱 또는 VS Code 확장에서 작업하는 로컬 세션의 백그라운드 명령에는 시간 제한이 없습니다. `-p` 실행이나 클라우드 세션처럼 무인으로 실행되는 세션에서는 Claude Code가 백그라운드 명령을 [시간 제한](https://code.claude.com/docs/ko/tools-reference.md#time-limit-for-background-commands)에 도달했을 때 중지합니다.

333* 포그라운드 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#run-subagents-in-foreground-or-background)가 시작한 백그라운드 명령어는 해당 서브에이전트의 실행이 끝날 때 종료됩니다. 완료, 실패 또는 중단 여부와 관계없이 종료됩니다. 도구 참조의 [백그라운드 명령어가 중지될 때](https://code.claude.com/docs/ko/tools-reference.md#when-a-background-command-stops)를 참조하세요.333* 포그라운드 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#run-subagents-in-foreground-or-background)가 시작한 백그라운드 명령어는 해당 서브에이전트의 실행이 끝날 때 종료됩니다. 완료, 실패 또는 중단 여부와 관계없이 종료됩니다. 도구 참조의 [백그라운드 명령어가 중지될 때](https://code.claude.com/docs/ko/tools-reference.md#when-a-background-command-stops)를 참조하세요.

334 334 

335백그라운드 명령을 끄려면 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/ko/env-vars#variables) 환경 변수를 `1`로 설정합니다. 이 변수를 설정하면 백그라운드 서브에이전트, 백그라운드 포크 스킬, `Ctrl+B`도 사용할 수 없게 됩니다. [bare 모드](https://code.claude.com/docs/ko/headless.md#start-faster-with-bare-mode)로 시작해도 같은 효과가 있습니다.335백그라운드 명령을 끄려면 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/ko/env-vars#variables) 환경 변수를 `1`로 설정합니다. 이 변수를 설정하면 `Ctrl+B` 단축키와 [스킬을 백그라운드에서 실행](https://code.claude.com/docs/ko/skills.md#run-skills-in-a-subagent)하는 것과 같은 [기타 백그라운드 기능](https://code.claude.com/docs/ko/env-vars.md#variables)도 사용할 수 없게 됩니다. [bare 모드](https://code.claude.com/docs/ko/headless.md#start-faster-with-bare-mode)로 시작해도 같은 효과가 있습니다.

336 336 

337**일반적인 백그라운드 명령어:**337**일반적인 백그라운드 명령어:**

338 338 


738 738 

739```text theme={null}739```text theme={null}

740Usage limit reached · limit resets 3:45pm740Usage limit reached · limit resets 3:45pm

741Continuing automatically at 3:45pm · esc to cancel741Continuing automatically at 3:45pm · Esc to cancel

742```742```

743 743 

744두 줄 모두 이 문구 뒤에 내용이 더 붙을 수 있습니다. 예를 들어 첫 번째 줄에는 도움말 링크가, 두 번째 줄에는 `/usage-credits to continue now`가 붙을 수 있습니다. 대기가 자동으로 시작되면 대화에도 `Usage limit reached · continuing automatically at 3:45pm · esc to cancel`이라는 줄이 기록됩니다.744두 줄 모두 이 문구 뒤에 내용이 더 붙을 수 있습니다. 예를 들어 첫 번째 줄에는 도움말 링크가, 두 번째 줄에는 `/usage-credits to continue now`가 붙을 수 있습니다. 대기가 자동으로 시작되면 대화에도 `Usage limit reached · continuing automatically at 3:45pm · esc to cancel`이라는 줄이 기록됩니다.

745 745 

746세션을 열린 상태로 유지하십시오. 다음에 일어나는 일은 대기가 어떻게 끝나는지에 따라 달라집니다:746세션을 열린 상태로 유지하십시오. 다음에 일어나는 일은 대기가 어떻게 끝나는지에 따라 달라집니다:

747 747 

748* **재설정 시**: 두 번째 줄이 `Continuing shortly · esc to cancel`로 바뀝니다. 그런 다음 대화에 `Usage limit reset · continuing automatically`가 표시되고, Claude Code는 Claude에게 중단된 지점부터 작업을 이어 가도록 요청합니다. 마지막 메시지를 다시 보내지는 않습니다.748* **재설정 시**: 두 번째 줄이 `Continuing shortly · Esc to cancel`로 바뀝니다. 그런 다음 대화에 `Usage limit reset · Continuing automatically`가 표시되고, Claude Code는 Claude에게 중단된 지점부터 작업을 이어 가도록 요청합니다. 마지막 메시지를 다시 보내지는 않습니다.

749* **컴퓨터가 절전 모드로 전환된 후**: 약 30분 이상 절전 모드였고 절전 중에 한도가 재설정된 경우, 첫 번째 줄에 `Your usage limit has reset`, 두 번째 줄에 `Press enter to continue`가 표시됩니다. `Enter`를 눌러 계속하십시오. 절전 시간이 더 짧았거나 재설정 전에 절전이 끝난 경우에는 Claude Code가 자동으로 계속합니다.749* **컴퓨터가 절전 모드로 전환된 후**: 약 30분 이상 절전 모드였고 절전 중에 한도가 재설정된 경우, 첫 번째 줄에 `Your usage limit has reset`, 두 번째 줄에 `Press enter to continue`가 표시됩니다. `Enter`를 눌러 계속하십시오. 절전 시간이 더 짧았거나 재설정 전에 절전이 끝난 경우에는 Claude Code가 자동으로 계속합니다.

750* **조기**: `/usage-credits`로 [사용량 크레딧](https://code.claude.com/docs/ko/costs.md#add-usage-credits-to-your-subscription)을 추가하거나, `/upgrade` 후 다시 로그인하거나, 대기 중에 `/model`로 모델을 전환할 때, Claude Code는 사용량을 다시 사용할 수 있는지 확인하고 가능하면 즉시 계속합니다. 브라우저에서 직접 수행하는 업그레이드 또는 구매 후에는 확인하지 않습니다. [`opusplan`](https://code.claude.com/docs/ko/model-config#opusplan-model-setting) 및 다른 모델에서 플랜 모드를 다른 모델에서 실행하는 기타 모델 설정에서는 Claude Code가 재설정을 대기합니다.750* **조기**: `/usage-credits`로 [사용량 크레딧](https://code.claude.com/docs/ko/costs.md#add-usage-credits-to-your-subscription)을 추가하거나, `/upgrade` 후 다시 로그인하거나, 대기 중에 `/model`로 모델을 전환할 때, Claude Code는 사용량을 다시 사용할 수 있는지 확인하고 가능하면 즉시 계속합니다. 브라우저에서 직접 수행하는 업그레이드 또는 구매 후에는 확인하지 않습니다. [`opusplan`](https://code.claude.com/docs/ko/model-config#opusplan-model-setting) 및 다른 모델에서 플랜 모드를 다른 모델에서 실행하는 기타 모델 설정에서는 Claude Code가 재설정을 대기합니다.

751 751 

managed-mcp.md +13 −13

Details

510 510 

511`allowManagedMcpServersOnly`가 `true`이면 사용자, 프로젝트, 로컬 설정의 허용 목록은 무시됩니다. 거부 목록은 여전히 모든 설정 범위에서 병합되므로, 사용자는 언제든지 스스로 서버를 차단할 수 있습니다.511`allowManagedMcpServersOnly`가 `true`이면 사용자, 프로젝트, 로컬 설정의 허용 목록은 무시됩니다. 거부 목록은 여전히 모든 설정 범위에서 병합되므로, 사용자는 언제든지 스스로 서버를 차단할 수 있습니다.

512 512 

513## 제한 사항이 사용자에게 표시되는 방식513## 사용자에게 제한이 표시되는 방식

514 514 

515`managed-mcp.json`이 배포되고 세션에 `--mcp-config` 서버도 있을 때 시작 시 사용자가 보는 내용은 [managed-mcp.json을 사용한 독점 제어](#exclusive-control-with-managed-mcp-json)를 참조하십시오. 이 표를 사용하여 다른 보고서를 인식하고 변경 사항을 배포하기 전에 사용자에게 예상되는 사항을 알려주십시오:515`managed-mcp.json`이 배포되어 있고 세션에 `--mcp-config` 서버도 있을 때 시작 시 사용자에게 표시되는 내용은 [managed-mcp.json을 통한 독점 제어](#exclusive-control-with-managed-mcp-json)를 참조하십시오. 다른 보고 내용을 파악하고, 변경 사항을 배포하기 전에 사용자에게 어떤 상황이 예상되는지 안내하려면 다음 표를 활용하십시오.

516 516 

517| 제한 사항 | 사용자가 보는 내용 |517| 제한 | 사용자에게 표시되는 내용 |

518| :- | :- |518| :- | :- |

519| `managed-mcp.json`이 있고 사용자가 `claude mcp add`를 실행함 | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |519| `managed-mcp.json`이 있고 사용자가 `claude mcp add`를 실행하는 경우 | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |

520| `managed-mcp.json`이 있고 다른 방법으로는 Chrome에서 Claude를 실행할 수 있는 사용자가 `claude --chrome`을 실행함 | Claude Code가 `Claude in Chrome is blocked by your organization's managed MCP configuration (managed-mcp.json). An administrator can allow it with allowClaudeInChromeWithManagedMcp in device policy.` 메시지와 함께 시작 시 종료됨 |520| `managed-mcp.json`이 있고, 다른 조건에서는 Claude in Chrome을 실행할 수 있는 사용자가 `claude --chrome`을 실행하는 경우 | Claude Code가 시작 시 `Claude in Chrome is blocked by your organization's managed MCP configuration (managed-mcp.json). An administrator can allow it with allowClaudeInChromeWithManagedMcp in device policy.` 메시지와 함께 종료됩니다 |

521| 서버가 거부 목록에 있고 사용자가 `claude mcp add`를 실행함 | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |521| 서버가 거부 목록에 있고 사용자가 `claude mcp add`를 실행하는 경우 | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |

522| 서버가 허용 목록에 없고 사용자가 `claude mcp add`를 실행함 | `Cannot add MCP server "<name>": not allowed by enterprise policy` |522| 서버가 허용 목록에 없고 사용자가 `claude mcp add`를 실행하는 경우 | `Cannot add MCP server "<name>": not allowed by enterprise policy` |

523| [`strictPluginOnlyCustomization`](https://code.claude.com/docs/ko/settings-reference#strictpluginonlycustomization)이 `true`이거나 `mcp`를 포함하고, 사용자가 `claude mcp add`를 실행함 | [`Cannot add MCP server: your organization's managed settings allow only MCP servers that plugins provide`](https://code.claude.com/docs/ko/errors#cannot-add-mcp-server-when-managed-settings-allow-only-plugin-servers) |523| [`strictPluginOnlyCustomization`](https://code.claude.com/docs/ko/settings-reference#strictpluginonlycustomization)이 `true`이거나 `mcp`를 포함하고, 사용자가 `claude mcp add`를 실행하는 경우 | [`Cannot add MCP server: your organization's managed settings allow only MCP servers that plugins provide`](https://code.claude.com/docs/ko/errors#cannot-add-mcp-server-when-managed-settings-allow-only-plugin-servers) |

524| 사용자가 `managedMcpServers`의 서버에서 `claude mcp remove`를 실행함 | `MCP server "<name>" is provided by your organization (managed settings) and cannot be removed locally.` |524| 사용자가 `managedMcpServers`의 서버에 대해 `claude mcp remove`를 실행하는 경우 | `MCP server "<name>" is provided by your organization (managed settings) and cannot be removed locally.` |

525| 이전에 구성된 서버가 이제 정책에 의해 차단됨 | 서버가 `/mcp` 및 `claude mcp list`에서 사라짐 |525| 이전에 구성된 서버가 이제 정책에 의해 차단된 경우 | 해당 서버가 `/mcp` 및 `claude mcp list`에서 사라집니다 |

526| 세션이 실행 중인 동안 서버가 차단되고 사용자가 **다시 연결**을 선택하거나 `/mcp`에서 다시 켜짐 | [`MCP server <name> is blocked by enterprise managed policy`](https://code.claude.com/docs/ko/errors#mcp-server-is-blocked-by-enterprise-managed-policy) |526| 세션이 실행 중일 때 서버가 차단되고, 사용자가 `/mcp`에서 **Reconnect**를 선택하거나 서버를 다시 켜는 경우 | [`MCP server <name> is blocked by enterprise managed policy`](https://code.claude.com/docs/ko/errors#mcp-server-is-blocked-by-enterprise-managed-policy) |

527 527 

528서버가 조용히 사라질 때 사용자는 정책이 이유라는 신호를 받지 못하므로 새로운 제한 사항을 배포할 때 영향을 받는 사용자에게 어떤 서버가 차단되었는지 알려주십시오.528서버가 아무런 알림 없이 사라지면 사용자는 그 원인이 정책이라는 신호를 전혀 받지 못합니다. 따라서 새로운 제한을 배포할 때는 영향을 받는 사용자에게 어떤 서버가 차단되는지 알려 주십시오.

529 529 

530## MCP 사용 모니터링530## MCP 사용 모니터링

531 531 

Details

120* **[`extraKnownMarketplaces`](https://code.claude.com/docs/ko/settings-reference#extraknownmarketplaces) 및 [`managedMcpServers`](https://code.claude.com/docs/ko/settings-reference#managedmcpservers)**: 동일한 이름의 나중 항목이 이전 항목을 전체적으로 대체합니다120* **[`extraKnownMarketplaces`](https://code.claude.com/docs/ko/settings-reference#extraknownmarketplaces) 및 [`managedMcpServers`](https://code.claude.com/docs/ko/settings-reference#managedmcpservers)**: 동일한 이름의 나중 항목이 이전 항목을 전체적으로 대체합니다

121* **[`modelPicker`](https://code.claude.com/docs/ko/settings-reference#modelpicker)**: 나중 라인업이 이전 라인업을 전체적으로 대체합니다121* **[`modelPicker`](https://code.claude.com/docs/ko/settings-reference#modelpicker)**: 나중 라인업이 이전 라인업을 전체적으로 대체합니다

122 122 

123## Claude Code가 관리되는 소스를 결합하는 방식123## Claude Code가 관리형 소스를 결합하는 방식

124 124 

125조직에서 동일한 머신에 관리되는 소스를 두 개 이상 제공할 때, [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior) 키는 Claude Code가 다른 소스로 무엇을 할지 결정합니다:125조직이 동일한 머신에 둘 이상의 관리형 소스를 제공하는 경우, [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior) 키가 Claude Code가 나머지 소스를 어떻게 처리할지 결정합니다.

126 126 

127* **`"first-wins"`, 기본값**: Claude Code는 최소 하나의 정책 키를 제공하는 가장 높은 순위의 소스를 사용하고 [모든 관리 소스에서 읽은 키](#keys-read-from-every-admin-source)의 키를 제외하고 나머지는 병합하지 않고 무시합니다. Claude Code는 건너뛴 소스에 대해 경고를 표시하지 않습니다. `/status`는 [사용한 소스와 건너뛴 소스의 이름을 표시합니다](#read-the-source-in-/status).127* **`"first-wins"`(기본값)**: Claude Code는 정책 키를 하나 이상 제공하는 가장 높은 순위의 소스를 사용하고, [모든 관리자 소스에서 읽는 키](#keys-read-from-every-admin-source)에 있는 키를 제외하면 나머지 소스를 병합하지 않고 무시합니다. Claude Code는 건너뛴 소스에 대해 경고를 표시하지 않으며, `/status`가 [사용한 소스와 건너뛴 소스를 표시](#read-the-source-in-/status)합니다.

128* **`"merge"`**: Claude Code는 정책 키를 제공하는 모든 관리 소스를 적용하고 키의 종류별로 결합합니다: 대부분의 키에서는 더 높은 순위의 소스의 값이 적용되고, 목록은 합집합이며, 잠금은 가장 엄격한 값을 취합니다. [모든 관리되는 소스 구성](#compose-every-managed-source)에서 키를 설정할 위치와 각 종류의 키가 결합되는 방식을 설명합니다. Claude Code v2.1.242 이상이 필요합니다.128* **`"merge"`**: Claude Code는 정책 키를 제공하는 모든 관리자 소스를 적용하고 키의 종류에 따라 결합합니다. 대부분의 키에서는 더 높은 순위 소스의 값이 적용되고, 목록은 합집합이 되며, 잠금은 가장 엄격한 값을 따릅니다. 키를 설정할 위치와 각 종류의 키가 결합되는 방식은 [모든 관리형 소스 구성하기](#compose-every-managed-source)에서 설명합니다. Claude Code v2.1.242 이상이 필요합니다.

129 129 

130두 설정 모두 동일한 방식으로 소스의 순위를 지정합니다. 이 섹션에서 반복되는 용어는 다음과 같습니다:130두 설정 모두 소스의 순위를 동일한 방식으로 매깁니다. 이 섹션에서는 다음 용어가 반복해서 사용됩니다.

131 131 

132* **정책 키**: 두 개의 제어 키인 [`wslInheritsWindowsSettings`](https://code.claude.com/docs/ko/settings-reference#wslinheritswindowssettings)와 [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior)를 제외한 모든 설정 키입니다. 이 두 키만 포함하는 관리형 설정 파일이나 MDM 정책은 계산되지 않으며, Claude Code는 다음 소스로 이동합니다.132* **정책 키**: 두 제어 키인 [`wslInheritsWindowsSettings`](https://code.claude.com/docs/ko/settings-reference#wslinheritswindowssettings)와 [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior)를 제외한 모든 설정 키입니다. 이 두 키만 포함된 관리형 설정 파일이나 MDM 정책은 포함되지 않으며, Claude Code는 다음 소스로 넘어갑니다.

133* **관리 소스**: 아래의 처음 세 소스 중 하나입니다. HKCU 레지스트리는 사용자가 쓸 수 있으므로 관리 소스가 아닙니다.133* **관리자 소스**: 아래의 처음 세 소스 중 하나입니다. HKCU 레지스트리는 사용자가 쓸 수 있으므로 관리자 소스가 아닙니다.

134 134 

135Claude Code는 다음 순서대로 소스를 확인합니다(우선순위가 높은 순서대로):135Claude Code는 다음 순서로 소스를 확인하며, 우선순위가 가장 높은 것이 먼저입니다.

136 136 

1371. 원격 설정, claude.ai에서 [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md)으로 또는 [Claude 앱 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway)로 제공됩니다. Claude Code는 세션이 [적격 자격 증명](https://code.claude.com/docs/ko/server-managed-settings.md#platform-availability)으로 Anthropic의 API에 직접 인증하거나, `/login`으로 게이트웨이에 로그인하거나, [해당 세션에 설정을 제공하는](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#apply-code-settings-in-the-code-tab) 게이트웨이 뒤에서 Claude Desktop의 Code 탭에서 실행될 때만 이 소스를 가져옵니다. 다른 공급자에서 또는 `ANTHROPIC_BASE_URL`이 Anthropic의 API 이외의 다른 곳을 가리킬 때는 다음 소스에서 시작합니다.1371. 원격 설정: claude.ai에서 [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)으로 제공되거나 [Claude apps gateway](https://code.claude.com/docs/ko/claude-apps-gateway)를 통해 제공됩니다. Claude Code는 세션이 [적격한 자격 증명](https://code.claude.com/docs/ko/server-managed-settings.md#platform-availability)으로 Anthropic API에 직접 인증하거나, `/login`으로 게이트웨이에 로그인하거나, [해당 세션에 설정을 제공하는](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#apply-code-settings-in-the-code-tab) 게이트웨이 뒤에서 Claude Desktop의 Code 탭에서 실행될 때만 이 소스를 가져옵니다. 다른 제공자를 사용하거나 `ANTHROPIC_BASE_URL`이 Anthropic API가 아닌 다른 곳을 가리키는 경우에는 다음 소스부터 시작합니다

1382. MDM 또는 OS 수준 정책: macOS plist 또는 HKLM 레지스트리 키1382. MDM 또는 OS 수준 정책: macOS plist 또는 HKLM 레지스트리 키

1393. 관리형 설정 파일, `managed-settings.d/*.json` 및 `managed-settings.json`이 함께 병합됨1393. 관리형 설정 파일: `managed-settings.d/*.json`과 `managed-settings.json`을 함께 병합한 것

1404. Windows의 HKCU 레지스트리, WSL에서는 HKLM 레지스트리 또는 Windows 관리형 설정 파일이 [`wslInheritsWindowsSettings`](https://code.claude.com/docs/ko/settings-reference#wslinheritswindowssettings)를 켜고 HKCU 값도 이를 설정할 때. Claude Code는 [위에 존재하는 관리 문서가 없을 때](#present-admin-documents)와 [호스트 제공 부모 설정](#let-an-embedding-host-add-policy)이 제한적인 키를 제공하지 않을 때만 읽습니다.1404. HKCU 레지스트리: Windows에서, 그리고 WSL에서는 HKLM 레지스트리나 Windows 관리형 설정 파일이 [`wslInheritsWindowsSettings`](https://code.claude.com/docs/ko/settings-reference#wslinheritswindowssettings)를 켜고 HKCU 값도 이를 설정한 경우에 해당합니다. Claude Code는 [그 위에 존재하는 관리자 문서가 없고](#present-admin-documents) [호스트가 제공하는 상위 설정](#let-an-embedding-host-add-policy)이 제한적인 키를 제공하지 않을 때만 이를 읽습니다

141 141 

142이 다이어그램은 순위를 보여주며, Claude Code가 두 설정 중 하나에서 처음 세 소스에서 읽는 교차 소스 키의 예를 포함합니다:142다음 다이어그램은 순위와 함께, 두 설정 모두에서 Claude Code가 처음 세 소스에서 읽는 교차 소스 키의 예를 보여 줍니다.

143 143 

144![원격 설정에서 상단부터 MDM, 관리형 설정 파일, HKCU 레지스트리까지 순위가 지정된 네 개의 관리형 설정 소스를 보여주는 다이어그램입니다. 기본적으로 정책 키를 가진 첫 번째 소스가 정책을 제공하고 나머지는 건너뜁니다. managedSourcesBehavior가 merge로 설정되면 정책 키를 가진 모든 관리 소스가 기여하고 키의 종류별로 결합되며 HKCU 레지스트리는 제외됩니다. 측면 패널은 샌드박스 잠금, forceRemoteSettingsRefresh, 변수별 env 병합과 같은 교차 소스 키가 HKCU 레지스트리를 제외하는 모든 관리 소스에서 읽혀짐을 보여줍니다.](https://mintcdn.com/claude-code/zuWID2B-Rxm8DEC8/images/managed-source-precedence.svg?fit=max\&auto=format\&n=zuWID2B-Rxm8DEC8\&q=85\&s=53f6be49f06eff48e01422c8ae1bc2e6)144![맨 위의 원격 설정부터 MDM, 관리형 설정 파일을 거쳐 맨 아래의 HKCU 레지스트리까지 순위가 매겨진 네 가지 관리형 설정 소스를 보여 주는 다이어그램입니다. 기본적으로 정책 키가 있는 첫 번째 소스가 정책을 제공하고 나머지는 건너뜁니다. managedSourcesBehavior를 merge로 설정하면 정책 키가 있는 모든 관리자 소스가 기여하고 키의 종류에 따라 결합되며, HKCU 레지스트리는 제외됩니다. 옆 패널은 샌드박스 잠금, forceRemoteSettingsRefresh, 변수별 env 병합과 같은 교차 소스 키를 HKCU 레지스트리를 제외한 모든 관리자 소스에서 읽는다는 것을 보여 줍니다.](https://mintcdn.com/claude-code/zuWID2B-Rxm8DEC8/images/managed-source-precedence.svg?fit=max\&auto=format\&n=zuWID2B-Rxm8DEC8\&q=85\&s=53f6be49f06eff48e01422c8ae1bc2e6)

145 145 

146### 관리 문서가 존재하는 것으로 간주되는 경우146### 관리자 문서가 존재하는 것으로 간주되는 경우

147 147 

148[관리되는 소스의 순위](#how-claude-code-combines-managed-sources)에서 Claude Code는 존재하는 관리 문서 아래의 사용자 쓰기 가능한 HKCU 레지스트리를 절대 적용하지 않습니다. 문서는 다음의 경우 존재하는 것으로 간주됩니다:148[관리형 소스의 순위](#how-claude-code-combines-managed-sources)에서 Claude Code는 존재하는 관리자 문서 아래에 있는, 사용자가 쓸 수 있는 HKCU 레지스트리를 절대 적용하지 않습니다. 문서는 다음 경우에 존재하는 것으로 간주됩니다.

149 149 

150* 정책 키를 `null` 이외의 값으로 설정하는 경우(Claude Code가 읽을 수 없는 값이더라도)150* 정책 키를 `null`이 아닌 값으로 설정하는 경우(Claude Code가 읽을 수 없는 값이라도 해당)

151* 존재하지만 읽을 수 없는 HKLM 값, 관리형 설정 파일 또는 `managed-settings.d` 디렉터리인 경우151* 존재하지만 읽을 수 없는 HKLM 값, 관리형 설정 파일 또는 `managed-settings.d` 디렉터리인 경우

152 152 

153WSL에서는 `/etc/claude-code`도 사용자가 쓸 수 있으며, [`wslInheritsWindowsSettings`](https://code.claude.com/docs/ko/settings-reference#wslinheritswindowssettings) 항목은 Windows 문서가 그 위에 있는 경우를 설명합니다.153WSL에서는 `/etc/claude-code`도 사용자가 쓸 수 있으며, Windows 문서가 언제 그 위에 위치하는지는 [`wslInheritsWindowsSettings`](https://code.claude.com/docs/ko/settings-reference#wslinheritswindowssettings) 항목에서 설명합니다.

154 154 

155### 모든 관리 소스에서 읽은 키155### 모든 관리자 소스에서 읽는 키

156 156 

157기본 `"first-wins"` 설정에서 Claude Code는 대부분의 키를 [선택한 소스](#how-claude-code-combines-managed-sources)에서만 읽고, 선택한 소스가 해당 키를 설정하지 않은 경우에도 더 낮은 순위의 소스의 값을 무시합니다.157기본 `"first-wins"` 설정에서 Claude Code는 대부분의 키를 [선택한 소스](#how-claude-code-combines-managed-sources)에서만 읽으며, 선택한 소스가 해당 키를 설정하지 않은 경우에도 더 낮은 순위 소스의 값은 무시합니다.

158 158 

159몇 가지 키는 다르게 작동합니다. Claude Code는 모든 관리 소스에서 이들을 읽으므로, 선택한 소스가 설정하지 않을 때 더 낮은 순위의 MDM 정책이나 관리형 설정 파일이 여전히 이들을 설정할 수 있습니다. Claude Code는 사용자 쓰기 가능한 HKCU 레지스트리를 해당 스캔에서 제외합니다. HKCU가 유일한 소스이고 호스트가 부모 설정을 제공하지 않을 때, HKCU는 선택된 소스처럼 적용됩니다.159일부 키는 다르게 동작합니다. Claude Code는 이러한 키를 모든 관리자 소스에서 읽으므로, 선택한 소스가 설정하지 않은 경우 더 낮은 순위의 MDM 정책이나 관리형 설정 파일이 여전히 이를 설정할 수 있습니다. Claude Code는 사용자가 쓸 수 있는 HKCU 레지스트리를 이 검사에서 제외합니다. HKCU가 유일한 소스이고 호스트가 상위 설정을 제공하지 않는 경우, HKCU는 선택된 다른 소스와 마찬가지로 적용됩니다.

160 160 

161교차 소스 키는 다음을 포함합니다:161교차 소스 키는 다음과 같습니다.

162 162 

163* `sandbox.network.allowManagedDomainsOnly` 및 `sandbox.filesystem.allowManagedReadPathsOnly`: 모든 관리 소스의 `true`가 잠금을 켭니다. 잠금이 켜져 있는 동안 Claude Code는 이를 잠그는 허용 목록인 `sandbox.network.allowedDomains`를 `WebFetch(domain:...)` 허용 규칙 또는 `sandbox.filesystem.allowRead`와 함께 모든 관리 소스에서 합집합합니다. 잠금이 없으면 Claude Code는 허용 목록을 다른 키처럼 취급하므로 `"first-wins"` 아래에서 선택되지 않은 관리 소스의 허용 목록은 무시됩니다.163* `sandbox.network.allowManagedDomainsOnly` 및 `sandbox.filesystem.allowManagedReadPathsOnly`: 어떤 관리자 소스에서든 `true`이면 잠금이 켜집니다. 잠금이 켜져 있는 동안 Claude Code는 해당 잠금이 적용되는 허용 목록, 즉 네트워크 잠금의 경우 `sandbox.network.allowedDomains`와 `WebFetch(domain:...)` 허용 규칙을 함께 묶은 목록을, 파일 시스템 잠금의 경우 `sandbox.filesystem.allowRead`를 모든 관리자 소스에 걸쳐 합집합으로 결합합니다. 잠금이 없으면 Claude Code는 허용 목록을 다른 키와 동일하게 취급하므로, `"first-wins"`에서는 선택되지 않은 관리자 소스의 허용 목록이 무시됩니다

164* `allowAllClaudeAiMcps`164* `allowAllClaudeAiMcps`

165* `allowManagedMcpServersOnly`: 모든 관리 소스의 `true`가 MCP 허용 목록 잠금을 켭니다. 잠금이 켜져 있는 동안 관리되는 `allowedMcpServers` 목록은 하나를 설정하는 가장 높은 순위의 관리 소스에서 옵니다. 서버 관리 목록은 더 낮은 소스의 목록과 결합하지 않고 대체합니다.165* `allowManagedMcpServersOnly`: 어떤 관리자 소스에서든 `true`이면 MCP 허용 목록 잠금이 켜집니다. 잠금이 켜져 있는 동안 관리형 `allowedMcpServers` 목록은 이를 설정하는 가장 높은 순위의 관리자 소스에서 가져옵니다. 서버 관리형 목록은 더 낮은 소스의 목록과 결합되지 않고 이를 대체합니다.

166 166 

167 관리 소스가 목록을 설정하지 않으면 [부모 설정](#let-an-embedding-host-add-policy)이 목록을 제공하지 않는 한 거부 목록을 통과하는 모든 서버가 로드됩니다.167 어떤 관리자 소스도 목록을 설정하지 않으면 [상위 설정](#let-an-embedding-host-add-policy)이 목록을 제공하지 않는 한 거부 목록을 통과하는 모든 서버가 로드됩니다.

168 168 

169 잠금이 없으면 Claude Code는 적용하는 관리 소스에서 `allowedMcpServers`를 읽으므로 `"first-wins"` 아래에서 선택되지 않은 관리 소스의 목록은 무시됩니다. Claude Code v2.1.273 이상이 필요합니다.169 잠금이 없으면 Claude Code는 적용하는 관리형 소스에서 `allowedMcpServers`를 읽으므로, `"first-wins"`에서는 선택되지 않은 관리자 소스의 목록이 무시됩니다. Claude Code v2.1.273 이상이 필요합니다

170* `deniedMcpServers` 및 [`disableClaudeAiConnectors`](https://code.claude.com/docs/ko/settings-reference#disableclaudeaiconnectors): 모든 관리 소스의 항목 또는 `true`가 적용됩니다. Claude Code v2.1.273 이상이 필요합니다.170* `deniedMcpServers` 및 [`disableClaudeAiConnectors`](https://code.claude.com/docs/ko/settings-reference#disableclaudeaiconnectors): 어떤 관리자 소스에든 있는 항목이나 `true`가 적용됩니다. Claude Code v2.1.273 이상이 필요합니다

171* 샌드박스 바이너리 경로 `sandbox.bwrapPath` 및 `sandbox.socatPath`171* 샌드박스 바이너리 경로 `sandbox.bwrapPath` 및 `sandbox.socatPath`

172* 샌드박스 `ripgrep` 바이너리, [`sandbox.ripgrep`](https://code.claude.com/docs/ko/settings-reference#sandbox-ripgrep)172* 샌드박스 `ripgrep` 바이너리, [`sandbox.ripgrep`](https://code.claude.com/docs/ko/settings-reference#sandbox-ripgrep)

173* `sandbox.filesystem.disabled` 및 `sandbox.network.strictAllowlist`173* `sandbox.filesystem.disabled` 및 `sandbox.network.strictAllowlist`

174* [`useAutoModeDuringPlan`](https://code.claude.com/docs/ko/settings-reference#useautomodeduringplan), [`syncClaudeAiSkills`](https://code.claude.com/docs/ko/settings-reference#syncclaudeaiskills), 및 [`syncClaudeAiPlugins`](https://code.claude.com/docs/ko/settings-reference#syncclaudeaiplugins), 여기서 모든 관리 소스의 `false`가 동작을 끕니다. 개발자의 사용자 또는 로컬 설정의 `false`도 이를 끕니다. 각 키는 거부만 할 수 있습니다.174* [`useAutoModeDuringPlan`](https://code.claude.com/docs/ko/settings-reference#useautomodeduringplan), [`syncClaudeAiSkills`](https://code.claude.com/docs/ko/settings-reference#syncclaudeaiskills), [`syncClaudeAiPlugins`](https://code.claude.com/docs/ko/settings-reference#syncclaudeaiplugins): 어떤 관리자 소스에서든 `false`이면 해당 동작이 꺼집니다. 개발자의 사용자 설정이나 로컬 설정에 있는 `false`도 이를 끕니다. 각 키는 거부만 할 수 있습니다

175* [`enableArtifact`](https://code.claude.com/docs/ko/settings-reference#enableartifact), 여기서 모든 관리 소스의 `false`가 [Artifact 도구](https://code.claude.com/docs/ko/artifacts.md)를 끕니다. 개발자의 사용자, 프로젝트 또는 로컬 설정의 `false`도 이를 끕니다. 어떤 소스도 이를 다시 켤 수 없습니다. [어떤 하위 수준 값이 여전히 계산되는지](https://code.claude.com/docs/ko/settings.md#exceptions-to-managed-settings-precedence) 참조하세요. Claude Code v2.1.242 이상이 필요합니다.175* [`enableArtifact`](https://code.claude.com/docs/ko/settings-reference#enableartifact): 어떤 관리자 소스에서든 `false`이면 [Artifact 도구](https://code.claude.com/docs/ko/artifacts.md)가 꺼집니다. 개발자의 사용자, 프로젝트 또는 로컬 설정에 있는 `false`도 이를 끄며, 어떤 소스도 이를 다시 켤 수 없습니다. [여전히 반영되는 하위 수준 값](https://code.claude.com/docs/ko/settings.md#exceptions-to-managed-settings-precedence)을 참조하세요. Claude Code v2.1.242 이상이 필요합니다

176* [`maxEffortLevel`](https://code.claude.com/docs/ko/settings-reference#maxeffortlevel), 여기서 모든 관리 소스의 가장 낮은 상한이 적용됩니다. 개발자가 자신의 설정이나 `--settings`에서 더 낮은 상한을 설정하면 Claude Code가 그것을 적용합니다. 어떤 소스도 상한을 올릴 수 없습니다. Claude Code v2.1.267 이상이 필요합니다.176* [`maxEffortLevel`](https://code.claude.com/docs/ko/settings-reference#maxeffortlevel): 모든 관리자 소스 중 가장 낮은 상한이 적용됩니다. 개발자가 자신의 설정이나 `--settings`로 더 낮은 상한을 설정하면 Claude Code는 그 값을 적용합니다. 어떤 소스도 상한을 높일 수 없습니다. Claude Code v2.1.267 이상이 필요합니다

177* `attribution`의 커밋 트레일러 옵트아웃, 또는 deprecated된 `includeCoAuthoredBy`의 옵트아웃(모든 계층에서)177* 모든 계층에서 `attribution` 또는 deprecated된 `includeCoAuthoredBy`에 있는 커밋 트레일러 옵트아웃

178* [`forceRemoteSettingsRefresh`](https://code.claude.com/docs/ko/server-managed-settings)178* [`forceRemoteSettingsRefresh`](https://code.claude.com/docs/ko/server-managed-settings)

179* 관리 소스 전체에서 변수별로 병합된 `env`: 각 변수는 이를 정의하는 가장 높은 우선순위 소스에서 옵니다. 따라서 더 낮은 소스는 더 높은 소스가 설정하지 않은 변수를 채웁니다. 몇 가지 변수는 자신의 규칙을 따릅니다. [관리되는 소스 전체의 키별 예외](https://code.claude.com/docs/ko/server-managed-settings.md#per-key-exceptions-across-managed-sources)에서 각각을 나열합니다. Claude Code v2.1.223 이상이 필요합니다. v2.1.223 이전에는 Claude Code가 선택한 소스의 전체 `env` 블록만 적용했습니다.179* `env`: 관리자 소스 전반에 걸쳐 변수별로 병합됩니다. 각 변수는 이를 정의하는 우선순위가 가장 높은 소스에서 가져오므로, 더 낮은 소스가 더 높은 소스에서 설정하지 않은 변수를 채웁니다. 일부 변수는 자체 규칙을 따르며, [관리형 소스 전반의 키별 예외](https://code.claude.com/docs/ko/server-managed-settings.md#per-key-exceptions-across-managed-sources)에서 각각을 설명합니다. Claude Code v2.1.223 이상이 필요합니다. v2.1.223 이전에는 Claude Code가 선택한 소스의 `env` 블록 전체만 적용했습니다

180 180 

181[게이트웨이 로그인 키](#choose-a-delivery-mechanism)는 별도의 규칙을 따릅니다. Claude Code는 서버 관리 설정에서 이들을 절대 읽지 않으므로, 서버 관리 설정이 선택된 소스인 동안 정책 키를 가진 머신의 가장 높은 순위의 관리 소스가 여전히 이들을 제공합니다. 그 아래에 순위가 지정된 관리 소스의 값이나 HKCU 레지스트리의 값은 무시됩니다.181[`allowedProviders`](https://code.claude.com/docs/ko/settings-reference#allowedproviders)에는 자체 규칙이 있습니다. 머신에 설정된 목록이 서버 관리형 목록과 어떻게 결합되는지는 해당 항목의 범위 참고에서 설명합니다. Claude Code v2.1.285 이상이 필요합니다.

182 182 

183[`allowedProviders`](https://code.claude.com/docs/ko/settings-reference#allowedproviders)는 자신의 규칙을 가집니다: 해당 항목의 Scope 노트는 머신에 설정된 목록이 서버 관리 목록과 어떻게 결합되는지 설명합니다. Claude Code v2.1.285 이상이 필요합니다.183관리자 소스가 `allowManagedMcpServersOnly` 또는 `allowedMcpServers` 목록을 설정했지만 그 값이 실제로 적용되는 값이 아닌 경우, `/status`와 `claude doctor`가 해당 소스와 키를 표시합니다.

184 184 

185관리 소스가 `allowManagedMcpServersOnly`를 설정하거나 `allowedMcpServers` 목록을 설정하고 그 값이 적용 중인 값이 아닐 때, `/status` 및 `claude doctor`가 해당 소스와 키의 이름을 지정합니다.185#### 로그인 키를 제공하는 관리형 소스

186 186 

187### 모든 관리되는 소스 구성187MDM 정책이나 관리형 설정 파일이 있는 머신에서 Claude Code는 [원격 설정](#how-claude-code-combines-managed-sources)도 설정한 키라도 해당 정책이나 파일에서 로그인 키를 가져옵니다. claude.ai 관리 콘솔의 설정은 원격 설정이므로, [`forceLoginOrgUUID`](https://code.claude.com/docs/ko/settings-reference#forceloginorguuid)와 같은 로그인 키는 MDM 정책이나 파일에서 설정하세요.

188 188 

189조직이 제공하는 모든 관리 소스를 Claude Code가 적용하도록 하려면 배포하는 가장 높은 순위의 소스에서 [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior)를 `"merge"`로 설정합니다. Claude Code는 키 또는 정책 키를 가진 가장 높은 순위의 소스에서만 키를 읽으므로, 더 낮은 소스가 위의 소스와 병합하도록 자신을 선택할 수 없으며, 서버 관리 설정을 받지 않는 머신도 MDM 프로필에 키가 필요합니다. 사용자 쓰기 가능한 HKCU 레지스트리는 다른 소스와 병합되지 않습니다. Claude Code v2.1.242 이상이 필요합니다.189머신에 MDM 정책과 관리형 설정 파일이 모두 있는 경우 MDM 정책을 사용하세요. 해당 정책이 [정책 키](#how-claude-code-combines-managed-sources)를 하나라도 설정하면, Claude Code는 [`managedSourcesBehavior: "merge"`에서도](#compose-every-managed-source) 파일의 로그인 키를 무시합니다.

190 190 

191`"merge"` 아래에서 Claude Code는 더 낮은 소스의 목록 항목(예: `permissions.allow` 규칙 및 hooks)을 정책에 추가하므로, 가장 높은 순위 아래의 모든 소스가 관리자의 제어 아래에 있을 때만 켭니다.191로그인 키는 다음과 같습니다.

192 192 

193이 표는 `"merge"` 아래에서 Claude Code가 각 종류의 키를 결합하는 방식을 보여줍니다. [`managedSourcesBehavior` 항목](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior)은 세 행의 모든 키를 나열합니다: 제한 허용 목록, 전체로 취한 값, 가장 높은 순위의 소스에서만 읽은 키.193* `forceLoginOrgUUID` 및 `"claudeai"` 또는 `"console"`로 설정된 `forceLoginMethod`: 정책이나 파일에서 둘 중 하나의 키가 빠져 있으면 원격 설정의 값이 적용됩니다. 모든 클라이언트가 v2.1.299 이상을 실행할 때까지는 claude.ai의 [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)에도 이 키를 설정하세요

194* [게이트웨이 로그인 키](#choose-a-delivery-mechanism): Claude Code는 게이트웨이 로그인에 원격 설정의 값을 사용하지 않습니다

194 195 

195| 키의 종류 | Claude Code가 결합하는 방식 | 예 |196### 모든 관리형 소스 구성하기

197 

198조직이 제공하는 모든 관리자 소스를 Claude Code가 적용하도록 하려면, 배포하는 가장 높은 순위의 소스에서 [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior)를 `"merge"`로 설정하세요. Claude Code는 이 키 또는 정책 키를 포함하는 가장 높은 순위의 소스에서만 이 키를 읽으므로, 더 낮은 소스가 스스로 그 위의 소스와 병합하도록 설정할 수 없으며, 서버 관리형 설정을 받지 않는 머신에서는 MDM 프로필에도 이 키가 필요합니다. 사용자가 쓸 수 있는 HKCU 레지스트리는 다른 소스와 병합되지 않습니다. Claude Code v2.1.242 이상이 필요합니다.

199 

200`"merge"`에서 Claude Code는 `permissions.allow` 규칙과 훅 같은 더 낮은 소스의 목록 항목을 정책에 추가하므로, 가장 높은 소스 아래에 있는 모든 소스가 관리자의 통제하에 있을 때만 이를 켜세요.

201 

202다음 표는 `"merge"`에서 Claude Code가 각 종류의 키를 결합하는 방식을 보여 줍니다. [`managedSourcesBehavior` 항목](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior)에서 제한 허용 목록, 통째로 가져오는 값, 가장 높은 순위 소스에서만 읽는 키의 세 행에 해당하는 모든 키를 확인할 수 있습니다.

203 

204| 키 종류 | Claude Code의 결합 방식 | 예시 |

196| :- | :- | :- |205| :- | :- | :- |

197| 목록 | 모든 소스의 항목을 결합합니다 | `permissions.allow`, `hooks`, `sandbox.network.allowedDomains`, `deniedMcpServers`, `deniedModels` |206| 목록 | 모든 소스의 항목을 결합합니다 | `permissions.allow`, `hooks`, `sandbox.network.allowedDomains`, `deniedMcpServers`, `deniedModels` |

198| 잠금 | 모든 소스가 설정하는 가장 엄격한 값을 적용합니다. 더 느슨한 값은 가장 높은 순위의 소스에서만 적용됩니다 | `allowManagedHooksOnly`, `permissions.disableBypassPermissionsMode`, `crossSessionInbound`, `availableModelsMatch` |207| 잠금 | 어떤 소스에서든 설정된 가장 엄격한 값을 적용합니다. 더 느슨한 값은 가장 높은 순위의 소스에서만 적용됩니다 | `allowManagedHooksOnly`, `permissions.disableBypassPermissionsMode`, `crossSessionInbound`, `availableModelsMatch` |

199| 제한 허용 목록 | 더 낮은 소스의 항목을 추가하지 않고 이를 설정하는 가장 높은 순위의 소스에서 전체 목록을 취합니다 | `availableModels`, `allowedMcpServers`, `strictKnownMarketplaces`, `allowedChannelPlugins`, 및 `fallbackModel` 체인 |208| 제한 허용 목록 | 이를 설정하는 가장 높은 순위의 소스에서 목록을 통째로 가져오며, 더 낮은 소스의 항목은 추가하지 않습니다 | `availableModels`, `allowedMcpServers`, `strictKnownMarketplaces`, `allowedChannelPlugins`, `fallbackModel` 체인 |

200| 전체로 취한 값 | 더 낮은 소스의 항목이나 필드를 결합하지 않고 이를 설정하는 가장 높은 순위의 소스에서 전체 값을 취합니다 | `sandbox.credentials.awsPairs`, `sandbox.ripgrep` |209| 통째로 가져오는 값 | 이를 설정하는 가장 높은 순위의 소스에서 값을 통째로 가져오며, 더 낮은 소스의 항목이나 필드는 결합하지 않습니다 | `sandbox.credentials.awsPairs`, `sandbox.ripgrep` |

201| 제공된 MCP 서버 | 모든 소스의 서버 이름을 결합합니다. 두 소스가 동일한 이름을 설정할 때 더 높은 순위의 소스의 전체 항목을 적용합니다 | `managedMcpServers` |210| 제공되는 MCP 서버 | 모든 소스의 서버 이름을 결합합니다. 두 소스가 같은 이름을 설정하면 더 높은 순위 소스의 항목 전체를 적용합니다 | `managedMcpServers` |

202| 가장 높은 순위의 소스에서만 읽은 키 | 가장 높은 순위의 소스가 이를 설정하지 않은 경우에도 모든 더 낮은 소스의 키를 무시합니다 | `apiKeyHelper`와 같은 자격 증명 도우미, `forceLoginOrgUUID`와 같은 로그인 핀, `modelPicker`, `permissions.defaultMode` |211| 가장 높은 순위의 소스에서만 읽는 키 | 가장 높은 순위의 소스가 설정하지 않은 경우에도 더 낮은 모든 소스의 키를 무시합니다 | `modelPicker`, `permissions.defaultMode`, `apiKeyHelper`와 같은 자격 증명 헬퍼 |

203| `env` | [모든 관리 소스에서 읽은 키](#keys-read-from-every-admin-source)에서 설명하는 대로 두 설정 아래에서 변수별로 병합합니다 | |212| `env` | [모든 관리자 소스에서 읽는 키](#keys-read-from-every-admin-source)에서 설명한 대로, 두 설정 모두에서 관리자 소스 전반에 걸쳐 변수별로 병합합니다 | |

204| 다른 모든 키 | 이를 설정하는 가장 높은 순위의 소스에서 값을 취합니다 | `model`, `cleanupPeriodDays` |213| 로그인 키 | 두 설정 모두에서 MDM 정책 또는 관리형 설정 파일 중 [정책 키](#how-claude-code-combines-managed-sources)를 포함하는 더 높은 순위의 것에서 가져오며, [원격 설정보다 우선합니다](#which-managed-source-supplies-login-keys) | `forceLoginOrgUUID`, `forceLoginMethod`, [게이트웨이 로그인 키](#choose-a-delivery-mechanism) |

214| 그 밖의 모든 키 | 이를 설정하는 가장 높은 순위의 소스에서 값을 가져옵니다 | `model`, `cleanupPeriodDays` |

205 215 

206머신에서 어떤 소스가 결합되었는지 확인하려면 `/status`의 `Setting sources` 줄을 [읽으세요](#read-the-source-in-/status). 해당 섹션에서 각 레이블의 의미를 설명합니다.216머신에서 어떤 소스가 결합되었는지 확인하려면 [`/status`의 `Setting sources` 줄을 확인하세요](#read-the-source-in-/status). 해당 섹션에서 각 레이블의 의미를 설명합니다.

207 217 

208### 도우미 프로그램으로 정책 계산218### 헬퍼 프로그램으로 정책 계산하기

209 219 

210[`policyHelper`](https://code.claude.com/docs/ko/settings-reference#policyhelper)는 MDM 정책이나 관리형 설정 파일이 이름을 지정하는 실행 파일이며, Claude Code는 이를 실행하여 시작 시 관리형 설정을 계산합니다. 선택한 소스가 하나를 구성하고 도우미가 `managedSettings` 객체를 내보낼 때, 해당 출력은 Claude Code가 읽는 것을 변경합니다:220[`policyHelper`](https://code.claude.com/docs/ko/settings-reference#policyhelper)는 MDM 정책이나 관리형 설정 파일에서 지정하는 실행 파일이며, Claude Code는 시작 시 이를 실행하여 관리형 설정을 계산합니다. 선택된 소스가 헬퍼를 구성하고 헬퍼가 `managedSettings` 객체를 출력하면, 그 출력에 따라 Claude Code가 읽는 내용이 달라집니다.

211 221 

212* **내보낸 `managedSettings` 객체는 세션의 유일한 관리형 설정입니다**, [그렇지 않으면 모든 관리 소스에서 읽은 키](#keys-read-from-every-admin-source)를 포함하여, [`forceRemoteSettingsRefresh` 제외(자신의 시작 규칙이 있음)](https://code.claude.com/docs/ko/settings-reference#forceremotesettingsrefresh)222* **출력된 `managedSettings` 객체가 해당 세션의 유일한 관리형 설정이 됩니다.** 여기에는 [평소에 모든 관리자 소스에서 읽는 키](#keys-read-from-every-admin-source)도 포함되며, [자체 시작 규칙이 있는 `forceRemoteSettingsRefresh`](https://code.claude.com/docs/ko/settings-reference#forceremotesettingsrefresh)는 예외입니다

213 223 

214도우미 실행이 실패하는 경우와 실패할 때 Claude Code가 수행하는 작업은 [도우미 실패](https://code.claude.com/docs/ko/settings-reference.md#helper-failures)를 참조하세요.224어떤 헬퍼 실행이 실패로 간주되는지, 그리고 실패 시 Claude Code가 어떻게 동작하는지는 [헬퍼 실패](https://code.claude.com/docs/ko/settings-reference.md#helper-failures)를 참조하세요.

215 225 

216### 임베딩 호스트가 정책을 추가하도록 허용226### 임베딩 호스트가 정책을 추가하도록 허용하기

217 227 

218다른 애플리케이션(예: Claude Desktop, IDE 확장 또는 Agent SDK 앱)이 Claude Code를 시작할 때, 해당 호스트는 SDK `managedSettings` 옵션을 통해 자신의 관리형 설정을 전달할 수 있습니다. Claude Code는 이를 부모 설정이라고 부릅니다.228Claude Desktop, IDE 확장 프로그램 또는 Agent SDK 앱과 같은 다른 애플리케이션이 Claude Code를 실행하는 경우, 해당 호스트는 SDK `managedSettings` 옵션을 통해 자체 관리형 설정을 전달할 수 있습니다. Claude Code는 이를 상위 설정이라고 부릅니다.

219 229 

220기본적으로 Claude Code는 관리 소스가 존재할 때마다 부모 설정을 무시합니다: 서버 관리 설정, MDM 또는 OS 수준 정책, 또는 관리형 설정 파일.230기본적으로 Claude Code는 서버 관리형 설정, MDM 또는 OS 수준 정책, 관리형 설정 파일 등 관리자 소스가 존재하면 상위 설정을 무시합니다.

221 231 

222부모 설정을 관리 소스와 함께 병합하도록 Claude Code를 하려면 가장 높은 우선순위의 관리 소스에서 [`parentSettingsBehavior`](https://code.claude.com/docs/ko/settings-reference#parentsettingsbehavior)를 `"merge"`로 설정합니다. Claude Code는 해당 소스에서만 키를 읽습니다.232Claude Code가 관리자 소스와 함께 상위 설정을 병합하도록 하려면, 우선순위가 가장 높은 관리형 소스에서 [`parentSettingsBehavior`](https://code.claude.com/docs/ko/settings-reference#parentsettingsbehavior)를 `"merge"`로 설정하세요. Claude Code는 해당 소스에서만 이 키를 읽습니다.

223 233 

224Claude Code는 그 후 Claude가 수행할 수 있는 것을 제한하는 호스트의 값만 유지합니다. 알아야 할 한 가지 간격이 있습니다: `allowManaged*Only` 잠금도 설정하지 않으면 호스트의 권한 허용 규칙과 샌드박스 허용 목록이 여전히 적용됩니다. [부모 설정 제한](https://code.claude.com/docs/ko/claude-apps-gateway#restrict-parent-settings)에서 잠금을 참조하세요.234그러면 Claude Code는 호스트의 값 중 Claude가 할 수 있는 일을 제한하는 값만 유지합니다. 다만 알아 두어야 할 빈틈이 하나 있습니다. `allowManaged*Only` 잠금도 함께 설정하지 않으면 호스트의 권한 허용 규칙과 샌드박스 허용 목록은 여전히 적용됩니다. 잠금에 대해서는 [상위 설정 제한하기](https://code.claude.com/docs/ko/claude-apps-gateway#restrict-parent-settings)를 참조하세요.

225 235 

226[`policyHelper`](https://code.claude.com/docs/ko/settings-reference#policyhelper)는 이 키와 관계없이 부모 병합을 끌 수 있습니다. 해당 항목은 언제인지 설명합니다.236[`policyHelper`](https://code.claude.com/docs/ko/settings-reference#policyhelper)는 이 키와 관계없이 상위 설정 병합을 끌 수 있으며, 그 조건은 해당 항목에서 설명합니다.

227 237 

228Claude Code는 또한 부모 제공 값 자체에 이러한 확인을 적용합니다:238Claude Code는 상위 설정에서 제공된 값 자체에도 다음 검사를 적용합니다.

229 239 

230* 모든 관리 소스가 `allowManagedPermissionRulesOnly`를 설정할 때, Claude Code는 더 높은 우선순위 소스가 키를 설정하지 않은 경우에도 읽을 때 [부모 제공](https://code.claude.com/docs/ko/claude-apps-gateway#restrict-parent-settings) 권한 허용 규칙과 `additionalDirectories`를 삭제합니다. 사용자 자신의 권한 규칙에 대한 키의 효과는 Claude Code가 적용하는 관리형 설정이나 병합하도록 선택한 부모 설정에서 나옵니다.240* 어떤 관리자 소스든 `allowManagedPermissionRulesOnly`를 설정하면, 더 높은 우선순위의 소스가 이 키를 설정하지 않은 경우에도 Claude Code는 [상위 설정에서 제공된](https://code.claude.com/docs/ko/claude-apps-gateway#restrict-parent-settings) 권한 허용 규칙과 `additionalDirectories`를 읽는 시점에 제거합니다. 이 키가 사용자 자신의 권한 규칙에 미치는 영향은 Claude Code가 적용하는 관리형 설정이나 병합하도록 선택한 상위 설정에서 비롯됩니다

231* Claude Code는 적용하는 관리형 설정의 `forceLoginOrgUUID` 또는 `allowedMcpServers` 값을 적용하고 부모 제공 값을 차단합니다. MCP 허용 목록 잠금 외부에서 Claude Code가 적용하지 않는 더 낮은 관리 소스의 값은 적용되지도 않고 부모의 값을 차단하지도 않습니다.241* Claude Code는 적용하는 관리형 설정의 `forceLoginOrgUUID` 또는 `allowedMcpServers` 값을 강제하고 상위 설정에서 제공된 값을 차단합니다. 둘 이상의 관리형 소스를 제공하는 경우 [`forceLoginOrgUUID`를 제공하는 소스](#which-managed-source-supplies-login-keys)를 참조하세요.

232 242 

233 Claude Code v2.1.273 이상에서 `allowManagedMcpServersOnly`가 켜져 있는 동안 하나를 설정하는 가장 높은 순위의 관리 소스의 `allowedMcpServers` 목록이 적용되고 부모의 것을 차단합니다([교차 소스 키](#keys-read-from-every-admin-source)로). 부모의 목록은 관리 소스가 하나를 설정하지 않을 때만 적용됩니다. [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior) 항목은 `"merge"` 아래에서 어떤 소스가 각 키를 제공하는지 설명합니다. v2.1.223 이전에는 모든 관리 소스의 값이 부모의 것을 차단했습니다.243 Claude Code v2.1.273 이상에서는 `allowManagedMcpServersOnly`가 켜져 있는 동안 [교차 소스 키](#keys-read-from-every-admin-source)로서, 이를 설정하는 가장 높은 순위의 관리자 소스의 `allowedMcpServers` 목록이 적용되고 상위 설정의 목록을 차단합니다. 상위 설정의 목록은 어떤 관리자 소스도 목록을 설정하지 않을 때만 적용됩니다. `"merge"`에서 각 키를 어떤 소스가 제공하는지는 [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior) 항목에서 설명합니다. v2.1.223 이전에는 어떤 관리자 소스에든 값이 있으면 상위 설정의 값이 차단되었습니다

234* `availableModels`의 경우 Claude Code는 적용하는 관리형 설정의 값을 적용하고 부모 제공 목록을 차단합니다.244* `availableModels`의 경우 Claude Code는 적용하는 관리형 설정의 값을 강제하고 상위 설정에서 제공된 목록을 차단합니다

235* `strictKnownMarketplaces`의 경우 Claude Code는 마찬가지로 적용하는 관리형 설정의 목록을 적용하고 부모 제공 목록을 차단합니다. 부모의 목록은 적용된 관리 소스가 하나를 설정하지 않을 때만 적용됩니다. Claude Code v2.1.282 이상이 필요합니다.245* `strictKnownMarketplaces`의 경우에도 Claude Code는 마찬가지로 적용하는 관리형 설정의 목록을 강제하고 상위 설정에서 제공된 목록을 차단합니다. 상위 설정의 목록은 적용된 관리형 소스가 목록을 설정하지 않을 때만 적용됩니다. Claude Code v2.1.282 이상이 필요합니다

236* `allowedProviders`의 경우 [선택된 관리 소스](#which-managed-source-claude-code-uses)의 목록이 부모 제공 목록을 차단하며, [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior) `"merge"` 옵트인에서는 모든 관리 소스의 목록이 이를 차단합니다. Claude Code v2.1.285 이상이 필요합니다.246* `allowedProviders`의 경우 [선택된 관리형 소스](#which-managed-source-claude-code-uses)의 목록이 상위 설정에서 제공된 목록을 차단하며, [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior) `"merge"` 옵트인에서는 어떤 관리자 소스의 목록이든 이를 차단합니다. Claude Code v2.1.285 이상이 필요합니다

237* 부모 제공 `blockedMarketplaces`는 관리 소스가 설정하는 모든 거부 목록에 추가로 적용됩니다. Claude Code v2.1.282 이상이 필요합니다.247* 상위 설정에서 제공된 `blockedMarketplaces`는 관리형 소스가 설정하는 차단 목록에 더해 적용됩니다. Claude Code v2.1.282 이상이 필요합니다

238 248 

239#### 관리되는 규칙만 적용될 때 Cowork 폴더 액세스 유지249#### 관리형 규칙만 적용될 때 Cowork 폴더 액세스 유지하기

240 250 

241Claude Desktop 앱의 [Cowork](https://claude.com/docs/cowork/overview)는 Claude Code에서 세션을 실행하고 각 세션에 세션을 시작할 때 제공하는 허용 규칙을 통해 사용자가 연결하는 폴더와 같은 작업 폴더에 대한 액세스 권한을 부여합니다. 관리 정책이 [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedpermissionrulesonly)를 설정할 때, Claude Code는 관리 정책의 허용 규칙만 유지합니다: 호스트가 부모 설정으로, `--allowedTools`로, 또는 설정 파일에서 제공하는 허용 규칙을 삭제하므로 해당 폴더에 대한 쓰기는 사전 승인을 잃습니다. 편집 전에 묻는 Cowork 세션에서 Cowork는 프롬프트를 표시할 수 없으며, Claude는 경로가 보호된 위치 또는 연결된 폴더 외부의 경로로 확인되기 때문에 각 쓰기를 차단된 것으로 보고합니다.251Claude Desktop 앱의 [Cowork](https://claude.com/docs/cowork/overview)는 Claude Code에서 세션을 실행하며, 세션을 시작할 때 제공하는 허용 규칙을 통해 사용자가 연결한 폴더와 같은 작업 폴더에 대한 액세스 권한을 각 세션에 부여합니다. 관리형 정책이 [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedpermissionrulesonly)를 설정하면 Claude Code는 관리형 정책의 허용 규칙만 유지합니다. 즉, 호스트가 상위 설정, `--allowedTools` 또는 설정 파일로 제공하는 허용 규칙을 제거하므로 해당 폴더에 대한 쓰기 작업은 사전 승인을 잃게 됩니다. 편집 전에 확인을 요청하는 Cowork 세션에서 Cowork는 프롬프트를 표시할 수 없으며, Claude는 경로가 보호된 위치나 연결된 폴더 밖의 경로로 확인되기 때문에 각 쓰기 작업이 차단되었다고 보고합니다.

242 252 

243쓰기를 복원하려면 Claude Code가 해당 머신에서 [선택](#precedence-within-the-managed-tier)하는 관리 소스에 해당 폴더에 대한 허용 규칙을 추가합니다: MDM 관리 플릿에서 이는 별도의 관리형 설정 파일이 아닌 MDM 정책입니다. 이 예는 파일 형식을 사용하며 MDM 정책은 동일한 키를 취합니다. `allowManagedPermissionRulesOnly`를 설정한 상태로 유지하고 각 사용자의 홈 디렉터리에서 `CoworkProjects` 폴더 아래의 편집을 허용합니다. 사용자가 연결하는 폴더로 경로를 바꾸세요:253쓰기 작업을 복원하려면 해당 머신에서 Claude Code가 [선택하는](#precedence-within-the-managed-tier) 관리형 소스에 해당 폴더에 대한 허용 규칙을 추가하세요. MDM으로 관리되는 장치군에서는 별도의 관리형 설정 파일이 아닌 MDM 정책이 이에 해당합니다. 이 예시는 파일 형식을 사용하며, MDM 정책도 동일한 키를 사용합니다. 이 예시는 `allowManagedPermissionRulesOnly`를 설정된 상태로 유지하면서 각 사용자의 홈 디렉터리에 있는 `CoworkProjects` 폴더 아래의 편집을 허용합니다. 경로는 사용자가 연결하는 폴더로 바꾸세요.

244 254 

245```json managed-settings.json theme={null}255```json managed-settings.json theme={null}

246{256{


253}263}

254```264```

255 265 

256정책을 배포한 후 Claude는 새 Cowork 세션에서 해당 폴더 아래에 파일을 저장할 수 있습니다. [읽기 및 편집 규칙](https://code.claude.com/docs/ko/permissions.md#read-and-edit)은 경로 구문(절대 경로의 `//` 형식 포함)을 다룹니다.266정책을 배포한 후 새 Cowork 세션에서 Claude는 해당 폴더 아래에 파일을 저장할 수 있습니다. 절대 경로를 위한 `//` 형식을 포함한 경로 구문은 [Read 및 Edit 규칙](https://code.claude.com/docs/ko/permissions.md#read-and-edit)에서 다룹니다.

257 267 

258### 개발자가 변경할 수 있는 것268### 개발자가 변경할 수 있는 항목

259 269 

260개발자의 자신의 설정 파일, `--settings` 값, 프로젝트 파일은 관리 값을 절대 재정의하지 않습니다. [예외](https://code.claude.com/docs/ko/settings.md#exceptions-to-managed-settings-precedence)는 더 엄격한 하위 수준 값만 계산되도록 합니다. 이 경우는 해당 규칙 외부에 있습니다:270개발자 자신의 설정 파일, `--settings` 값, 프로젝트 파일은 관리형 값을 절대 재정의하지 않습니다. [예외](https://code.claude.com/docs/ko/settings.md#exceptions-to-managed-settings-precedence)는 더 엄격한 하위 수준 값이 반영되도록 할 뿐입니다. 다음 경우는 이 규칙의 적용 범위 밖에 있습니다.

261 271 

262* **세션의 모델**: 관리 `model`은 잠금이 아닌 기본값입니다. `--model` 및 `ANTHROPIC_MODEL`은 여전히 해당 세션의 모델을 선택하므로 [`availableModels`](https://code.claude.com/docs/ko/settings-reference#availablemodels)를 배포하여 선택을 제한합니다.272* **세션의 모델**: 관리형 `model`은 잠금이 아니라 기본값입니다. `--model`과 `ANTHROPIC_MODEL`은 여전히 해당 세션의 모델을 선택하므로, 선택을 제한하려면 [`availableModels`](https://code.claude.com/docs/ko/settings-reference#availablemodels)를 배포하세요.

263* **세션의 자동 압축 윈도우**: 관리 [`autoCompactWindow`](https://code.claude.com/docs/ko/settings-reference#autocompactwindow)도 기본값입니다. `--autocompact` 플래그와 `CLAUDE_CODE_AUTO_COMPACT_WINDOW` 변수는 여전히 해당 세션의 [자동 압축 윈도우](https://code.claude.com/docs/ko/model-config.md#set-the-auto-compact-window)를 설정합니다.273* **세션의 자동 압축 창**: 관리형 [`autoCompactWindow`](https://code.claude.com/docs/ko/settings-reference#autocompactwindow)도 기본값입니다. `--autocompact` 플래그와 `CLAUDE_CODE_AUTO_COMPACT_WINDOW` 변수는 여전히 해당 세션의 [자동 압축 창](https://code.claude.com/docs/ko/model-config.md#set-the-auto-compact-window)을 설정합니다.

264* **로컬 관리자 권한**: 머신의 관리자인 개발자는 관리 소스 자체를 편집할 수 있으므로 MDM 도구는 프로필이나 파일을 일정에 따라 다시 배포할 수 있으며 HKLM 레지스트리와 macOS 관리 기본 설정 도메인이 존재합니다.274* **로컬 관리자 권한**: 머신의 관리자인 개발자는 관리형 소스 자체를 편집할 수 있습니다. 이 때문에 MDM 도구는 일정에 따라 프로필이나 파일을 다시 배포할 수 있으며, HKLM 레지스트리와 macOS 관리형 환경설정 도메인이 존재합니다.

265* **서버 관리 캐시**: 서버 관리 설정은 Anthropic의 서버에서 오며, 로컬 캐시에 대한 편집은 [다음 성공적인 가져오기까지만 지속됩니다](https://code.claude.com/docs/ko/server-managed-settings.md#security-considerations).275* **서버 관리형 캐시**: 서버 관리형 설정은 Anthropic의 서버에서 제공되며, 로컬 캐시를 편집해도 [다음에 가져오기에 성공할 때까지만 유지됩니다](https://code.claude.com/docs/ko/server-managed-settings.md#security-considerations).

266* **다른 도구**: 관리형 설정은 Claude Code만 바인딩합니다. 다른 도구에서 API를 호출하는 개발자는 이들 아래에 있지 않습니다.276* **다른 도구**: 관리형 설정은 Claude Code에만 적용됩니다. 다른 도구에서 API를 호출하는 개발자는 관리형 설정의 적용을 받지 않습니다.

267 277 

268## 정책이 적용 중인지 확인278## 정책이 적용 중인지 확인

269 279 

mcp.md +46 −19

Details

242/mcp242/mcp

243```243```

244 244 

245원격 서버를 제거하면 Claude Code는 해당 서버에 대해 저장한 OAuth 토큰 및 클라이언트 등록도 삭제합니다.245원격 서버를 제거하면 Claude Code는 해당 서버에 대해 저장한 OAuth 토큰과 클라이언트 등록 정보도 삭제합니다. Claude Code는 토큰을 발급한 인가 서버에서 토큰을 폐기하지는 않습니다. 인가 서버가 폐기를 지원하는 경우 토큰을 폐기하려면 `claude mcp remove <name>` 전에 셸에서 [`claude mcp logout <name>`](#authenticate-from-the-command-line)을 실행하십시오.

246 246 

247#### 서버 상태247#### 서버 상태

248 248 


252 252 

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

254 254 

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

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

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

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

258 259 

259#### 프로젝트 서버 승인 및 워크스페이스 신뢰260#### 프로젝트 서버 승인 및 워크스페이스 신뢰

260 261 


471자동 백그라운드 전환을 변경하거나 끄려면 다음을 수행합니다.472자동 백그라운드 전환을 변경하거나 끄려면 다음을 수행합니다.

472 473 

473* 임계값을 변경하려면 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/ko/env-vars) 환경 변수를 밀리초 단위로 설정하고, 자동 백그라운드 전환을 끄려면 `0`으로 설정합니다. `0`으로 설정하면 대화형 세션에서 Claude가 [MCP 작업을 기다립니다](#make-claude-wait-for-the-result-of-an-mcp-task)474* 임계값을 변경하려면 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/ko/env-vars) 환경 변수를 밀리초 단위로 설정하고, 자동 백그라운드 전환을 끄려면 `0`으로 설정합니다. `0`으로 설정하면 대화형 세션에서 Claude가 [MCP 작업을 기다립니다](#make-claude-wait-for-the-result-of-an-mcp-task)

474* [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/ko/env-vars)를 `1`로 설정합니다. 이렇게 하면 백그라운드 명령 및 백그라운드 서브에이전트와 함께 자동 백그라운드 전환도 꺼집니다475* [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/ko/env-vars)를 `1`로 설정하여 자동 백그라운드 전환과 [백그라운드 명령](https://code.claude.com/docs/ko/tools-reference.md#background-commands)을 끕니다

475 476 

476일부 호출은 백그라운드로 이동하지 않습니다:477일부 호출은 백그라운드로 이동하지 않습니다:

477 478 


828 829 

829Claude Code는 `.mcp.json` 파일에서 환경 변수 확장을 지원하므로, 팀은 구성을 공유하면서도 머신별 경로와 API 키 같은 민감한 값에 대해 유연성을 유지할 수 있습니다.830Claude Code는 `.mcp.json` 파일에서 환경 변수 확장을 지원하므로, 팀은 구성을 공유하면서도 머신별 경로와 API 키 같은 민감한 값에 대해 유연성을 유지할 수 있습니다.

830 831 

831#### 지원되는 구문832서버의 `command`, `args`, `env`, `url` 또는 `headers` 값에서 다음 두 가지 형식 중 하나로 환경 변수를 참조할 수 있습니다.

832 833 

833* `${VAR}`: 환경 변수 `VAR`의 값으로 확장됩니다834* `${VAR}`: 환경 변수 `VAR`의 값으로 확장됩니다

834* `${VAR:-default}`: `VAR`이 설정되어 있으면 그 값으로 확장되고, 그렇지 않으면 `default`를 사용합니다835* `${VAR:-default}`: `VAR`이 설정되어 있으면 `VAR`의 값으로 확장되고, 설정되어 있지 않으면 `default`로 확장됩니다

835 

836#### 확장 위치

837 

838환경 변수는 다음 위치에서 확장할 수 있습니다.

839 

840* `command`: 서버 실행 파일 경로

841* `args`: 명령줄 인수

842* `env`: 서버에 전달되는 환경 변수

843* `url`: HTTP 서버 유형의 경우

844* `headers`: HTTP 서버 인증의 경우

845 836 

846#### 변수 확장 예시837#### 변수 확장 예시

847 838 

839이 서버 항목에서 URL은 `API_BASE_URL`의 값 뒤에 `/mcp`가 붙은 형태이고 기본값은 `https://api.example.com`이며, API 키는 `API_KEY`에서 가져옵니다.

840 

848```json theme={null}841```json theme={null}

849{842{

850 "mcpServers": {843 "mcpServers": {


863 856 

864참조된 환경 변수가 설정되어 있지 않고 기본값도 없는 경우에도 구성은 로드됩니다. Claude Code는 `claude mcp list` 출력에서 해당 서버에 대한 변수 누락 경고를 보고하고, 확장되지 않은 `${VAR}` 텍스트를 그대로 사용합니다. 서버가 의도한 값으로 시작되도록 변수를 설정하거나 `:-default` 폴백을 추가합니다. 원격 서버의 `url`과 `headers`에서는 일부 자격 증명 변수가 경고 없이 [빈 값으로 읽힙니다](#credential-variables-that-read-as-empty).857참조된 환경 변수가 설정되어 있지 않고 기본값도 없는 경우에도 구성은 로드됩니다. Claude Code는 `claude mcp list` 출력에서 해당 서버에 대한 변수 누락 경고를 보고하고, 확장되지 않은 `${VAR}` 텍스트를 그대로 사용합니다. 서버가 의도한 값으로 시작되도록 변수를 설정하거나 `:-default` 폴백을 추가합니다. 원격 서버의 `url`과 `headers`에서는 일부 자격 증명 변수가 경고 없이 [빈 값으로 읽힙니다](#credential-variables-that-read-as-empty).

865 858 

859#### 빈 문자열로 설정된 변수

860 

861변수를 빈 문자열로 설정하면 설정된 것으로 간주되므로, `${VAR:-default}` 참조는 `default`가 아니라 빈 문자열로 확장됩니다. [예시 서버](#example-with-variable-expansion)에서 `API_BASE_URL`을 빈 문자열로 설정하면 `url`은 `/mcp`가 되고 `claude mcp list`는 `'url' is not a valid URL`을 보고합니다. 기본값을 사용하려면 변수를 빈 문자열로 설정하지 말고 설정을 해제합니다.

862 

866#### 빈 값으로 읽히는 자격 증명 변수863#### 빈 값으로 읽히는 자격 증명 변수

867 864 

868원격 서버의 `url`과 `headers`에서 Claude Code는 환경의 자격 증명 변수를 확장하지 않고 빈 값으로 읽습니다. 이렇게 하면 프로젝트의 `.mcp.json`이나 플러그인이 사용자의 Claude Code 또는 클라우드 제공업체 자격 증명을 그 안에 명시된 서버로 보내는 것을 방지할 수 있습니다. `Bearer ${ANTHROPIC_AUTH_TOKEN}`이라고 작성하면 서버는 자격 증명 없이 `Bearer `만 받게 되어 요청을 거부하며, 일반적으로 `401`을 반환합니다. Claude Code는 이를 연결 실패로 보고합니다.865원격 서버의 `url`과 `headers`에서 Claude Code는 환경의 자격 증명 변수를 확장하지 않고 빈 값으로 읽습니다. 이렇게 하면 프로젝트의 `.mcp.json`이나 플러그인이 사용자의 Claude Code 또는 클라우드 제공업체 자격 증명을 그 안에 명시된 서버로 보내는 것을 방지할 수 있습니다. `Bearer ${ANTHROPIC_AUTH_TOKEN}`이라고 작성하면 서버는 자격 증명 없이 `Bearer `만 받게 되어 요청을 거부하며, 일반적으로 `401`을 반환합니다. Claude Code는 이를 연결 실패로 보고합니다.


1146 1143 

1147해당 범위가 고정된 `oauth.scopes`에 없으면 추가한 다음 `/mcp`를 실행하고 서버를 다시 인증하세요. Claude Code는 서버가 명명한 범위가 아닌 고정된 범위를 요청하므로, 추가하지 않고 다시 인증하면 얻은 토큰에 여전히 해당 범위가 없습니다.1144해당 범위가 고정된 `oauth.scopes`에 없으면 추가한 다음 `/mcp`를 실행하고 서버를 다시 인증하세요. Claude Code는 서버가 명명한 범위가 아닌 고정된 범위를 요청하므로, 추가하지 않고 다시 인증하면 얻은 토큰에 여전히 해당 범위가 없습니다.

1148 1145 

1146### 인증 프록시 뒤의 서버에서 OAuth 사용

1147 

1148MCP 서버가 자체 헤더를 확인하는 프록시나 게이트웨이 뒤에서 OAuth를 사용하는 경우, OAuth 요청이 해당 헤더 없이 도착하면 로그인이 실패합니다. 프록시를 통해 로그인하려면 Claude Code v2.1.299 이상이 필요하며, 헤더와 로그인을 모두 구성해야 합니다.

1149 

1150* **프록시의 헤더**: 프록시가 읽는 이름으로 [`--header`](#option-1-add-a-remote-http-server), `headers` 필드 또는 [`headersHelper`](#use-dynamic-headers-for-custom-authentication)를 통해 전달하세요

1151* **OAuth 로그인**: 구성된 헤더에서 `Authorization`을 제외한 다음 셸에서 `claude mcp login <name>`으로 로그인하세요. `Authorization` 헤더를 구성하면 Claude Code는 이를 서버의 자격 증명으로 사용하며 해당 서버에 대해 OAuth로 폴백하지 않습니다.

1152 

1149### 사용자 정의 인증을 위해 동적 헤더 사용1153### 사용자 정의 인증을 위해 동적 헤더 사용

1150 1154 

1151MCP 서버가 Kerberos, 단기 토큰 또는 내부 SSO와 같은 OAuth 이외의 인증 체계를 사용하면, `headersHelper`를 사용하여 연결 시점에 요청 헤더를 생성하세요. Claude Code는 명령을 실행하고 출력을 연결 헤더에 병합합니다.1155Kerberos, 단기 토큰 또는 내부 SSO와 같은 인증에 연결 시점에 생성되는 헤더가 필요한 경우, 서버의 `headersHelper`를 명령으로 설정하세요. Claude Code는 연결할 때 이 명령을 실행하고 출력을 전송하는 헤더에 병합합니다. 이 예시에서는 스크립트를 사용합니다.

1152 1156 

1153```json theme={null}1157```json theme={null}

1154{1158{


1552 1556 

1553## 유효하지 않은 입력 스키마를 가진 도구1557## 유효하지 않은 입력 스키마를 가진 도구

1554 1558 

1555Claude API는 요청의 모든 도구의 입력 스키마를 확인하고 하나의 스키마라도 실패하면 전체 요청을 거부하므로, 형식이 잘못된 스키마를 가진 단일 MCP 도구가 있으면 이를 포함하는 모든 요청이 400 오류로 실패합니다. Claude Code는 서버의 도구를 로드할 때 API의 확인 중 두 가지를 직접 실행하고 이를 실패할 각 도구를 제외하므로, 서버의 다른 도구는 계속 작동합니다:1559> [!NOTE]

1560>

1561> 세션이 도구를 위치로 지칭하는 400 오류로 실패하는 경우, [Tool input schema is invalid](https://code.claude.com/docs/ko/errors.md#tool-input-schema-is-invalid)의 단계를 따르십시오.

1562 

1563MCP 서버의 도구 중 하나가 API에서 적용하는 두 가지 규칙 중 하나를 위반하는 입력 스키마를 가지고 있으면, Claude Code는 해당 도구를 제외합니다. 서버의 다른 도구는 영향을 받지 않습니다. Claude Code는 서버의 도구를 로드할 때 두 규칙을 모두 확인합니다:

1556 1564 

1557* 최상위 속성 이름은 1\~64자 길이여야 하며 ASCII 문자와 숫자, `_`, `.`, `-`만 사용해야 합니다1565* 최상위 속성 이름은 1\~64자 길이여야 하며 ASCII 문자와 숫자, `_`, `.`, `-`만 사용해야 합니다

1558* 스키마는 JSON Schema draft 2020-12 메타스키마에 대해 유효해야 합니다. Claude Code는 `$schema`를 선언하지 않는 스키마와 draft 2020-12를 선언하는 스키마에 이 확인을 적용합니다. 다른 방언을 선언하는 스키마는 이 확인을 건너뛰지만, 위의 속성 이름 확인은 여전히 적용됩니다1566* 스키마는 JSON Schema draft 2020-12 메타스키마에 대해 유효해야 합니다. Claude Code는 `$schema`를 선언하지 않는 스키마와 draft 2020-12를 선언하는 스키마에 이 확인을 적용합니다. 다른 방언을 선언하는 스키마는 이 확인을 건너뛰지만, 위의 속성 이름 확인은 여전히 적용됩니다

1559 1567 

1560Claude Code가 도구를 제외할 때, 서버의 로그에 이유를 기록하고 제외된 도구와 그 이유를 Claude에 알리므로, Claude에 도구가 누락된 이유를 물어볼 수 있습니다. 서버에서 스키마를 수정하면, Claude Code가 다음에 서버의 도구를 로드할 때 도구가 다시 나타납니다.1568Claude Code가 도구를 제외할 때, 서버의 로그에 이유를 기록하고 제외된 도구와 그 이유를 Claude에 알리므로, Claude에 도구가 누락된 이유를 물어볼 수 있습니다. 서버에서 스키마를 수정하면, Claude Code가 다음에 서버의 도구를 로드할 때 도구가 다시 나타납니다.

1561 1569 

1562Claude Code는 Anthropic에서 가져오는 기능 플래그를 통해 제외를 켭니다. [플래그 가져오기가 꺼진 배포](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching)에서 또는 에어갭 머신과 같이 플래그가 도착한 적이 없는 머신에서, Claude Code는 여전히 확인을 실행하고 서버의 로그에 어떤 도구가 거부될 것인지 기록하지만, 도구의 스키마를 API로 어쨌든 전송합니다. API는 [도구를 위치로 이름 지은 400 오류](https://code.claude.com/docs/ko/errors.md#tool-input-schema-is-invalid)로 해당 스키마를 포함하는 요청을 거부합니다. v2.1.216 이전에는 배포가 이러한 확인을 실행하지 않았습니다.1570[기능 플래그 가져오기](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching)가 꺼져 있거나 에어갭 머신처럼 플래그가 도착한 적이 없는 경우, 규칙을 위반하는 도구는 제외되지 않습니다:

1571 

1572* Claude는 도구를 변경 없이 받으며, 서버의 로그에는 해당 도구에 대해 `input schema would be rejected by the Anthropic API`가 기록됩니다

1573* 이후 API가 스키마를 거부하는 경우, [API가 입력 스키마를 거부하는 도구](#tools-whose-input-schema-the-api-refuses)를 참조하십시오

1574 

1575v2.1.216 이전에는 어떤 배포도 이러한 확인을 실행하지 않았습니다.

1563 1576 

1564[루트 수준 결합자 처리](#tool-input-schemas-with-a-root-level-combinator)는 별개이며 플래그 가져오기가 꺼져 있거나 플래그가 도착한 적이 없을 때 자체 동작을 유지합니다.1577[루트 수준 결합자 처리](#tool-input-schemas-with-a-root-level-combinator)는 별개이며 플래그 가져오기가 꺼져 있거나 플래그가 도착한 적이 없을 때 자체 동작을 유지합니다.

1565 1578 

1579### API가 입력 스키마를 거부하는 도구

1580 

1581디버그 로그의 한 줄에 `the API refused this tool's input schema`가 포함되어 있다면, 이는 요청에서 API가 스키마를 거부한 도구를 지칭합니다. Claude Code는 해당 도구를 매개변수 없이 선언하여 그 요청을 다시 전송합니다.

1582 

1583* **세션이 도구를 위치로 지칭하는 400 오류로 실패하는 경우**: [Tool input schema is invalid](https://code.claude.com/docs/ko/errors.md#tool-input-schema-is-invalid)의 단계를 따르십시오

1584* **서버를 사용하는 경우**: 별도로 조치할 필요가 없습니다. Claude는 여전히 도구를 호출할 수 있지만, 도구의 매개변수를 볼 수 없습니다

1585* **서버를 관리하는 경우**: 서버에서 도구의 입력 스키마를 수정하십시오. 로그 줄은 `The API said:`와 API가 스키마를 거부한 이유로 끝납니다. Claude는 매개변수를 보지 않고 도구를 호출하므로, 서버가 받는 인수를 검증하십시오

1586 

1587v2.1.300 이전에는 거부된 스키마를 포함한 모든 턴이 [도구를 위치로 지칭하는 400 오류](https://code.claude.com/docs/ko/errors.md#tool-input-schema-is-invalid)로 실패했습니다.

1588 

1566## 이름이 128자보다 긴 도구1589## 이름이 128자보다 긴 도구

1567 1590 

1568`/mcp`에 Claude가 호출할 수 없는 도구가 표시되면 해당 도구의 전체 이름이 128자보다 긴지 확인합니다. 세션에서 `/mcp`를 실행하고 도구를 선택하면 `mcp__<server>__<tool>`과 같은 전체 이름을 확인할 수 있습니다. Claude Code는 전체 이름이 128자를 초과하는 MCP 도구를 Claude에 보내는 도구 목록에서 제외합니다. Claude API는 이러한 도구가 포함된 요청을 거부하므로, 해당 도구를 제외하면 서버의 다른 도구는 계속 작동합니다.1591`/mcp`에 Claude가 호출할 수 없는 도구가 표시되면 해당 도구의 전체 이름이 128자보다 긴지 확인합니다. 세션에서 `/mcp`를 실행하고 도구를 선택하면 `mcp__<server>__<tool>`과 같은 전체 이름을 확인할 수 있습니다. Claude Code는 전체 이름이 128자를 초과하는 MCP 도구를 Claude에 보내는 도구 목록에서 제외합니다. Claude API는 이러한 도구가 포함된 요청을 거부하므로, 해당 도구를 제외하면 서버의 다른 도구는 계속 작동합니다.


1709 1732 

1710v2.1.296 이전에는 더 짧은 제한이 2,048자였으며, v2.1.295 이전에는 도구 검색을 통해 로드되는 설명을 포함한 모든 도구 설명에 이 제한이 적용되었습니다.1733v2.1.296 이전에는 더 짧은 제한이 2,048자였으며, v2.1.295 이전에는 도구 검색을 통해 로드되는 설명을 포함한 모든 도구 설명에 이 제한이 적용되었습니다.

1711 1734 

1712Anthropic이 `api.anthropic.com`에서 호스팅하는 일부 MCP 서버의 설명과 지침은 잘리지 않고 전체가 Claude에 전달됩니다. 세션의 다른 MCP 서버에 대한 제한을 변경하려면 [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](https://code.claude.com/docs/ko/env-vars#variables)를 문자 수로 설정하세요. 설정한 숫자는 두 제한을 모두 대체합니다. 예를 들어 `8192`는 더 짧은 제한을 높이고 더 긴 제한을 낮춥니다. 이 변수는 Claude Code v2.1.280 이상이 필요합니다.1735#### 설명 길이 제한 변경

1736 

1737세션의 MCP 서버에 대한 4,096자 및 16,384자의 [기본 제한](#for-mcp-server-authors)을 변경하려면 [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](https://code.claude.com/docs/ko/env-vars#variables)를 문자 수로 설정하세요. Claude Code는 이 숫자를 두 제한 모두에 사용합니다. 예를 들어 `8192`로 설정하면 서버 지침과 미리 로드되는 도구 설명에 대한 4,096자 제한은 높아지고, 도구 검색을 통해 로드되는 도구 설명에 대한 16,384자 제한은 낮아집니다. 이 변수는 Claude Code v2.1.280 이상이 필요합니다.

1738 

1739Anthropic이 `api.anthropic.com`에서 호스팅하는 일부 MCP 서버의 설명과 지침은 전체가 Claude에 전달되며, 이 변수를 설정해도 잘리지 않습니다.

1713 1740 

1714#### 도구를 미리 로드하거나 연기된 상태로 유지하도록 표시1741#### 도구를 미리 로드하거나 연기된 상태로 유지하도록 표시

1715 1742 

Details

65| `✘ Connection error` | 연결 시도에서 오류가 발생했습니다. [문제 해결](#troubleshooting)을 참조하세요 |65| `✘ Connection error` | 연결 시도에서 오류가 발생했습니다. [문제 해결](#troubleshooting)을 참조하세요 |

66| ``⏸ Pending approval (run `claude` to approve)`` | 아직 승인하지 않은 프로젝트 범위 서버입니다. [.mcp.json 직접 편집하기](#edit-mcp-json-directly)를 참조하세요 |66| ``⏸ Pending approval (run `claude` to approve)`` | 아직 승인하지 않은 프로젝트 범위 서버입니다. [.mcp.json 직접 편집하기](#edit-mcp-json-directly)를 참조하세요 |

67| `⊘ Disabled for this project (re-enable via /mcp)` | 프로젝트의 `disabledMcpServers` 목록에 의해 이 프로젝트에 대해 꺼진 서버입니다. [서버 제거 없이 비활성화하기](https://code.claude.com/docs/ko/mcp.md#disable-a-server-without-removing-it)를 참조하세요 |67| `⊘ Disabled for this project (re-enable via /mcp)` | 프로젝트의 `disabledMcpServers` 목록에 의해 이 프로젝트에 대해 꺼진 서버입니다. [서버 제거 없이 비활성화하기](https://code.claude.com/docs/ko/mcp.md#disable-a-server-without-removing-it)를 참조하세요 |

68| `✘ Blocked by enterprise managed policy` | 조직의 정책 중 하나가 이 서버를 차단하므로 Claude Code가 연결하지 않습니다. 어떤 정책인지 관리자에게 문의하세요. [서버 상태](https://code.claude.com/docs/ko/mcp.md#server-status)를 참조하세요 |

68 69 

69Windows 10의 기본 콘솔과 같은 일부 레거시 Windows 콘솔은 이러한 Unicode 문자를 지원하지 않으며 `✔` 및 `✘` 대신 `√` 및 `×`를 표시합니다.70Windows 10의 기본 콘솔과 같은 일부 레거시 Windows 콘솔은 이러한 Unicode 문자를 지원하지 않으며 `✔` 및 `✘` 대신 `√` 및 `×`를 표시합니다.

70 71 

model-config.md +19 −2

Details

679터미널 프롬프트에 입력하면, 이 단어는 해당 턴을 `xhigh` effort로 높일 수도 있습니다. 높일 수 있는 경우 단어가 무지개 색으로 표시됩니다. Claude Code v2.1.311 이상이 필요합니다. 새 턴을 시작할 때 단어가 무지개 색으로 표시되지 않으면 다음 중 하나를 시도하세요:679터미널 프롬프트에 입력하면, 이 단어는 해당 턴을 `xhigh` effort로 높일 수도 있습니다. 높일 수 있는 경우 단어가 무지개 색으로 표시됩니다. Claude Code v2.1.311 이상이 필요합니다. 새 턴을 시작할 때 단어가 무지개 색으로 표시되지 않으면 다음 중 하나를 시도하세요:

680 680 

681* 따옴표, 괄호, 경로 또는 명령과 같은 것의 바깥에서, `/`로 시작하지 않는 프롬프트에 다시 입력합니다681* 따옴표, 괄호, 경로 또는 명령과 같은 것의 바깥에서, `/`로 시작하지 않는 프롬프트에 다시 입력합니다

682* `CLAUDE_CODE_EFFORT_LEVEL`이 `xhigh` 미만으로 설정되어 있으면 설정을 해제하거나, 자신의 [`maxEffortLevel`](https://code.claude.com/docs/ko/settings-reference#maxeffortlevel)을 `xhigh` 이상으로 높이거나, 조직 관리자에게 [조직의 제한](#organization-effort-limits)을 높여 달라고 요청합니다682* `CLAUDE_CODE_EFFORT_LEVEL`이 `xhigh` 미만으로 설정되어 있으면 설정을 해제합니다. 또는 자신의 [`maxEffortLevel`](https://code.claude.com/docs/ko/settings-reference#maxeffortlevel)을 `xhigh` 이상으로 높이거나, 조직 관리자에게 [조직의 제한](#organization-effort-limits)을 높여 달라고 요청합니다

683* 세션에서 `/model`을 실행하여 Opus 5.5, Sonnet 5.5, Haiku 5.5 또는 Fable 5.1 모델로 전환합니다. Amazon Bedrock처럼 이 단어가 턴을 높일 수 없는 경우에는 대신 [effort 수준을 설정](#set-the-effort-level)합니다683* 세션에서 `/model`을 실행하여 Opus 5.5, Sonnet 5.5, Haiku 5.5 또는 Fable 5.1 모델로 전환합니다. Amazon Bedrock처럼 이 단어가 턴을 높일 수 없는 경우에는 대신 [effort 수준을 설정](#set-the-effort-level)합니다

684 684 

685#### effort 수준 설정685#### effort 수준 설정


689* **`/effort`**: 대화형 슬라이더를 열려면 인수 없이 `/effort`를 실행하고, 직접 설정하려면 `/effort` 뒤에 수준 이름을 붙여 실행하거나, 활성 모델에 대해 저장된 수준을 지우려면 `/effort auto`를 실행합니다689* **`/effort`**: 대화형 슬라이더를 열려면 인수 없이 `/effort`를 실행하고, 직접 설정하려면 `/effort` 뒤에 수준 이름을 붙여 실행하거나, 활성 모델에 대해 저장된 수준을 지우려면 `/effort auto`를 실행합니다

690* **`/model`에서**: 모델을 선택할 때 왼쪽/오른쪽 화살표 키를 사용하여 effort 슬라이더를 조정합니다690* **`/model`에서**: 모델을 선택할 때 왼쪽/오른쪽 화살표 키를 사용하여 effort 슬라이더를 조정합니다

691* **`--effort` 플래그**: Claude Code를 시작할 때 단일 세션에 대해 설정하려면 수준 이름을 전달합니다691* **`--effort` 플래그**: Claude Code를 시작할 때 단일 세션에 대해 설정하려면 수준 이름을 전달합니다

692* **환경 변수**: `CLAUDE_CODE_EFFORT_LEVEL`을 수준 이름 또는 `auto`로 설정합니다692* **환경 변수**: `CLAUDE_CODE_EFFORT_LEVEL`을 수준 이름으로 설정합니다. Claude Code가 [effort 수준을 보내지 않도록](#send-no-effort-level) 하려면 대신 `auto` 또는 `unset`으로 설정합니다

693* **설정**: [`modelSettings`](https://code.claude.com/docs/ko/settings-reference#modelsettings)에서 모델별 수준을 설정하거나, [`effortLevel`](https://code.claude.com/docs/ko/settings-reference#effortlevel)을 `low`, `medium`, `high` 또는 `xhigh`로 설정하여 수준이 없는 모델의 기본값으로 설정합니다. `max`는 두 키에서 수준으로 허용되지 않으며, `ultracode`는 자체 [`ultracode`](https://code.claude.com/docs/ko/settings-reference#ultracode) 키를 가집니다693* **설정**: [`modelSettings`](https://code.claude.com/docs/ko/settings-reference#modelsettings)에서 모델별 수준을 설정하거나, [`effortLevel`](https://code.claude.com/docs/ko/settings-reference#effortlevel)을 `low`, `medium`, `high` 또는 `xhigh`로 설정하여 수준이 없는 모델의 기본값으로 설정합니다. `max`는 두 키에서 수준으로 허용되지 않으며, `ultracode`는 자체 [`ultracode`](https://code.claude.com/docs/ko/settings-reference#ultracode) 키를 가집니다

694* **연결된 장치에서**: [Remote Control](https://code.claude.com/docs/ko/remote-control.md#what-connected-devices-see) 세션에서, 휴대폰 또는 브라우저의 effort 제어에서 수준을 선택합니다. 수준은 현재 세션에만 적용됩니다. Claude Code v2.1.234 이상이 필요합니다694* **연결된 장치에서**: [Remote Control](https://code.claude.com/docs/ko/remote-control.md#what-connected-devices-see) 세션에서, 휴대폰 또는 브라우저의 effort 제어에서 수준을 선택합니다. 수준은 현재 세션에만 적용됩니다. Claude Code v2.1.234 이상이 필요합니다

695* **스킬 및 서브에이전트 frontmatter**: [스킬](https://code.claude.com/docs/ko/skills.md#frontmatter-reference) 또는 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#supported-frontmatter-fields) markdown 파일에서 `effort`를 설정하여 해당 스킬 또는 서브에이전트가 실행될 때 effort 수준을 재정의합니다695* **스킬 및 서브에이전트 frontmatter**: [스킬](https://code.claude.com/docs/ko/skills.md#frontmatter-reference) 또는 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#supported-frontmatter-fields) markdown 파일에서 `effort`를 설정하여 해당 스킬 또는 서브에이전트가 실행될 때 effort 수준을 재정의합니다


711 711 

712v2.1.242 이전에는 Claude Code가 턴이 끝날 때까지 `/effort` 자체를 대기열에 넣을 수 있었으며, [서드파티 제공자](https://code.claude.com/docs/ko/third-party-integrations.md)에서처럼 [기능 플래그를 가져오지](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching) 않는 세션에서는 항상 그렇게 했습니다.712v2.1.242 이전에는 Claude Code가 턴이 끝날 때까지 `/effort` 자체를 대기열에 넣을 수 있었으며, [서드파티 제공자](https://code.claude.com/docs/ko/third-party-integrations.md)에서처럼 [기능 플래그를 가져오지](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching) 않는 세션에서는 항상 그렇게 했습니다.

713 713 

714#### effort 수준 보내지 않기

715 

716Claude Code가 [지원되는 모델](#adjust-effort-level)에 effort 수준을 보내지 않으면, Claude Code의 기본값 대신 [API의 기본값](https://platform.claude.com/docs/en/build-with-claude/effort)이 적용됩니다. Claude Code가 effort 수준을 보내지 않게 하려면, `CLAUDE_CODE_EFFORT_LEVEL`을 `auto` 또는 `unset` 값으로 export하는 셸에서 `claude`를 시작하세요. 두 값은 동일하게 동작합니다:

717 

718```bash theme={null}

719export CLAUDE_CODE_EFFORT_LEVEL=auto

720```

721 

722수준이 전송되지 않는 동안 세션 헤더와 바닥글에는 effort 수준이 표시되지 않습니다. 수준이 전송되지 않는지 확인하려면 Claude Code 프롬프트에서 `/effort status`를 실행하세요:

723 

724* **`Effort level: auto`**: effort 수준이 전송되지 않습니다.

725* **`Effort level: auto (currently <level>)`**: 수준이 여전히 전송됩니다. 활성 모델에 `max` 미만의 [`maxEffortLevel`](https://code.claude.com/docs/ko/settings-reference#maxeffortlevel) 설정이 적용되면, Claude Code는 해당 모델에 대한 자체 기본값을 그 제한까지 낮춰 보냅니다. 해당 설정을 제거하거나 `max`로 설정하세요.

726 

727> [!NOTE]

728>

729> v2.1.304 이전에는 수준이 전송되지 않는 동안에도 `/effort status`가 `Effort level: auto (currently high)`를 출력했습니다.

730 

714#### 적응형 추론 및 고정 사고 예산731#### 적응형 추론 및 고정 사고 예산

715 732 

716적응형 추론은 각 단계에서 사고를 선택 사항으로 만들므로, Claude는 일상적인 프롬프트에 더 빠르게 응답하고 이점을 얻는 단계를 위해 더 깊은 사고를 남겨 둘 수 있습니다. 현재 수준이 생성하는 것보다 Claude가 더 자주 또는 덜 자주 사고하기를 원하면, 프롬프트 또는 `CLAUDE.md`에서 직접 말할 수 있습니다. 모델은 effort 설정 내에서 해당 지침에 응답합니다.733적응형 추론은 각 단계에서 사고를 선택 사항으로 만들므로, Claude는 일상적인 프롬프트에 더 빠르게 응답하고 이점을 얻는 단계를 위해 더 깊은 사고를 남겨 둘 수 있습니다. 현재 수준이 생성하는 것보다 Claude가 더 자주 또는 덜 자주 사고하기를 원하면, 프롬프트 또는 `CLAUDE.md`에서 직접 말할 수 있습니다. 모델은 effort 설정 내에서 해당 지침에 응답합니다.

Details

861* `output_tokens`: 출력 토큰 수861* `output_tokens`: 출력 토큰 수

862* `cache_read_tokens`: 캐시에서 읽은 토큰 수862* `cache_read_tokens`: 캐시에서 읽은 토큰 수

863* `cache_creation_tokens`: 캐시 생성에 사용된 토큰 수863* `cache_creation_tokens`: 캐시 생성에 사용된 토큰 수

864* `cache_creation_5m_tokens`, `cache_creation_1h_tokens`: API 응답이 5분 [캐시 수명](https://code.claude.com/docs/ko/prompt-caching.md#cache-lifetime)으로 캐시에 쓴 것으로 보고한 토큰 수와 1시간 수명으로 쓴 토큰 수입니다. API 응답이 이를 보고하지 않으면 `cache_creation_tokens`가 0보다 크더라도 둘 다 `0`입니다. Claude Code v2.1.300 이상이 필요합니다

864* `request_id`: API 요청 ID로, 예를 들면 `"req_011..."`이며 [이벤트 상관 속성](#event-correlation-attributes)에 설명되어 있습니다.865* `request_id`: API 요청 ID로, 예를 들면 `"req_011..."`이며 [이벤트 상관 속성](#event-correlation-attributes)에 설명되어 있습니다.

865* `client_request_id`: `x-client-request-id` 요청 헤더로 전송되는 클라이언트 생성 UUID입니다. 포함되는 경우는 [이벤트 상관 속성](#event-correlation-attributes) 표를 참조하세요866* `client_request_id`: `x-client-request-id` 요청 헤더로 전송되는 클라이언트 생성 UUID입니다. 포함되는 경우는 [이벤트 상관 속성](#event-correlation-attributes) 표를 참조하세요

866* `speed`: 빠른 모드가 활성화되었는지 여부를 나타내는 `"fast"` 또는 `"normal"`867* `speed`: 빠른 모드가 활성화되었는지 여부를 나타내는 `"fast"` 또는 `"normal"`

permission-modes.md +196 −196

Details

287claude --permission-mode acceptEdits287claude --permission-mode acceptEdits

288```288```

289 289 

290## 편집하기 전에 계획 모드로 분석하기290## 플랜 모드로 편집 전에 분석하기

291 291 

292계획 모드는 Claude가 변경 사항을 연구하고 제안하도록 하되 실제로 적용하지 않습니다. Claude는 파일을 읽고 셸 명령을 실행하여 탐색한 후 계획을 작성하지만 소스를 편집하지 않습니다. [bypassPermissions 모드로 모든 검사 건너뛰기](#skip-all-checks-with-bypasspermissions-mode)가 가능한 대화형 터미널 세션을 제외하고, 편집은 계획을 승인할 때까지 차단됩니다.292플랜 모드는 Claude가 변경 사항을 직접 적용하지 않고 조사하여 제안하도록 합니다. Claude는 파일을 읽고, 탐색을 위해 셸 명령을 실행하고, 플랜을 작성하지만 소스는 편집하지 않습니다. [bypass permissions를 사용할 수 있는](#skip-all-checks-with-bypasspermissions-mode) 대화형 터미널 세션을 제외하면, 플랜을 승인할 때까지 편집은 차단된 상태로 유지됩니다.

293 293 

294계획 중에 셸 명령이 어떻게 처리되는지는 세션에 따라 다르며, 다음 중 일치하는 첫 번째 경우가 적용됩니다:294플래닝 중 셸 명령이 어떻게 처리되는지는 세션에 따라 다르며, 다음 경우 중 처음으로 일치하는 항목이 적용됩니다.

295 295 

296* **bypassPermissions를 사용할 수 있는 대화형 터미널 세션**: 분류기나 프롬프트가 계획 명령에 적용되지 않습니다. [bypassPermissions 모드로 모든 검사 건너뛰기](#skip-all-checks-with-bypasspermissions-mode)는 여전히 프롬프트가 표시되는 몇 가지 항목을 다룹니다.296* **bypass permissions를 사용할 수 있는 대화형 터미널 세션**: 플래닝 명령에는 분류기도 프롬프트도 적용되지 않습니다. 이 경우에도 여전히 확인을 요청하는 몇 가지 항목은 [bypassPermissions 모드로 모든 검사 건너뛰기](#skip-all-checks-with-bypasspermissions-mode)에서 설명합니다.

297* **[자동 모드](https://code.claude.com/docs/ko/auto-mode-config.md)를 사용할 수 있고 기본적으로 켜져 있는 `useAutoModeDuringPlan` 설정이 활성화됨**: 분류기는 [중요 경로 제거](#critical-paths)를 제외한 셸 명령을 검토하며 사용자에게 프롬프트를 표시하지 않습니다. 승인된 명령은 실행되고 거부된 명령은 차단됩니다.297* **[자동 모드](https://code.claude.com/docs/ko/auto-mode-config.md)를 사용할 수 있고 `useAutoModeDuringPlan` 설정이 켜져 있는 경우**(기본값): 분류기가 [중요 경로 삭제](#critical-paths)를 제외한 셸 명령을 검토하며, 사용자에게 확인을 요청하지 않습니다. 승인된 명령은 실행되고 거부된 명령은 차단됩니다.

298* **자동 모드를 사용할 수 없거나 `useAutoModeDuringPlan`이 꺼짐**: [기본 제공 읽기 전용 집합](https://code.claude.com/docs/ko/permissions.md#read-only-commands) 외의 명령은 승인을 요청하며, 샌드박스의 [자동 허용 모드](https://code.claude.com/docs/ko/sandboxing.md#sandbox-modes)가 활성화된 경우에도 마찬가지입니다.298* **자동 모드를 사용할 수 없거나 `useAutoModeDuringPlan`이 꺼져 있는 경우**: [기본 제공 읽기 전용 명령 집합](https://code.claude.com/docs/ko/permissions.md#read-only-commands)에 속하지 않는 명령은 승인을 요청합니다. 샌드박스의 [auto-allow 모드](https://code.claude.com/docs/ko/sandboxing.md#sandbox-modes)가 활성화되어 있는 경우에도 마찬가지입니다.

299 299 

300계획 모드에 들어가려면 `Shift+Tab`을 누르거나 단일 프롬프트 앞에 `/plan`을 붙입니다. CLI에서 계획 모드로 시작할 수도 있습니다:300`Shift+Tab`을 누르거나 단일 프롬프트 앞에 `/plan`을 붙여 플랜 모드로 들어갑니다. CLI에서 플랜 모드로 시작할 수도 있습니다.

301 301 

302```bash theme={null}302```bash theme={null}

303claude --permission-mode plan303claude --permission-mode plan

304```304```

305 305 

306계획을 승인하지 않고 계획 모드를 종료하려면 `Shift+Tab`을 다시 누릅니다.306플랜을 승인하지 않고 플랜 모드를 종료하려면 `Shift+Tab`을 다시 누릅니다.

307 307 

308### 계획 검토 및 승인308### 플랜 검토 및 승인

309 309 

310계획이 준비되면 Claude가 계획을 제시하고 어떻게 진행할지 묻습니다. 해당 프롬프트에서 다음을 선택할 수 있습니다:310플랜이 준비되면 Claude가 플랜을 제시하고 진행 방법을 묻습니다. 해당 프롬프트에서 다음 중 하나를 선택할 수 있습니다.

311 311 

312* **예, 자동 모드 사용**: 승인하고 [자동 모드](#eliminate-prompts-with-auto-mode)로 시작합니다. 자동 모드를 조직에서 비활성화한 경우 등 [세션에서 사용할 수 없으면](#eliminate-prompts-with-auto-mode), 이 옵션은 **예, 편집 자동 수락**으로 표시됩니다. bypassPermissions가 활성화된 상태로 세션을 시작한 경우, 옵션은 **예, 이 세션에 대해 BYPASS PERMISSIONS(추가 프롬프트 없음)로 전환**으로 표시됩니다.312* **Yes, and use auto mode**: 승인하고 [자동 모드](#eliminate-prompts-with-auto-mode)로 시작합니다. 조직에서 자동 모드를 끈 경우처럼 자동 모드를 [세션에서 사용할 수 없는](#eliminate-prompts-with-auto-mode) 경우, 이 옵션은 **Yes, auto-accept edits**로 표시됩니다. bypass permissions를 활성화한 상태로 세션을 시작한 경우에는 대신 **Yes, and switch to BYPASS PERMISSIONS (no further prompts) for this session**으로 표시됩니다.

313* **예, 편집 수동 승인**: 승인하고 각 편집을 개별적으로 검토합니다.313* **Yes, manually approve edits**: 승인하고 각 편집을 개별적으로 검토합니다.

314* **아니요, 계획 계속**: 계획 모드에 머물러 있고 Claude에게 변경할 사항을 알립니다.314* **No, keep planning**: 플랜 모드에 머물며 Claude에게 변경할 내용을 알려 줍니다.

315 315 

316계획을 승인하면 계획 모드가 종료되고 세션이 각 승인 옵션이 설명하는 권한 모드로 전환되므로 Claude가 편집을 시작합니다. 다시 계획하려면 `Shift+Tab`으로 계획 모드로 돌아가거나 다음 프롬프트 앞에 `/plan`을 붙입니다.316플랜을 승인하면 플랜 모드가 종료되고 세션이 각 승인 옵션에 설명된 권한 모드로 전환되므로 Claude가 편집을 시작합니다. 다시 플래닝하려면 `Shift+Tab`으로 플랜 모드로 돌아가거나, 다음 프롬프트 앞에 `/plan`을 붙이면 됩니다.

317 317 

318`Ctrl+G`를 눌러 제안된 계획을 기본 텍스트 편집기에서 열고 Claude가 진행하기 전에 직접 편집합니다. [`showClearContextOnPlanAccept`](https://code.claude.com/docs/ko/settings-reference#showclearcontextonplanaccept)가 활성화되면 목록에 계획을 승인하고 계획 컨텍스트를 지우는 첫 번째 옵션이 추가됩니다.318Claude가 진행하기 전에 제안된 플랜을 기본 텍스트 편집기에서 열어 직접 편집하려면 `Ctrl+G`를 누릅니다. [`showClearContextOnPlanAccept`](https://code.claude.com/docs/ko/settings-reference#showclearcontextonplanaccept)가 활성화되어 있으면, 플랜을 승인하고 플래닝 컨텍스트를 지우는 옵션이 목록의 첫 번째 항목으로 추가됩니다.

319 319 

320계획을 수락하면 세션에 계획을 기반으로 한 [생성된 제목](https://code.claude.com/docs/ko/sessions.md#name-your-sessions)이 지정되며, 이미 세션의 이름을 지정하지 않은 경우입니다.320플랜을 수락하면 세션 이름을 이미 지정하지 않은 경우 플랜을 기반으로 [생성된 제목](https://code.claude.com/docs/ko/sessions.md#name-your-sessions)도 세션에 부여됩니다.

321 321 

322### 계획 모드를 기본값으로 설정322### 플랜 모드를 기본값으로 설정

323 323 

324프로젝트의 터미널 세션에 대해 계획 모드를 기본값으로 설정하려면 `.claude/settings.json`에서 `defaultMode`를 `plan`으로 설정합니다. 이는 [다른 권한 모드에서 시작](#start-in-a-different-mode)의 예시에 표시된 대로 배치됩니다. [VS Code 확장](https://code.claude.com/docs/ko/vs-code.md)이 시작하는 대화는 시작 권한 모드에 대한 프로젝트 설정을 읽지 않습니다. 대신 VS Code 사용자 설정에서 `claudeCode.initialPermissionMode`를 `plan`으로 설정합니다.324프로젝트의 터미널 세션에서 플랜 모드를 기본값으로 사용하려면, [다른 권한 모드로 시작하기](#start-in-a-different-mode)의 예시와 같은 위치에 배치하여 `.claude/settings.json`에서 `defaultMode`를 `plan`으로 설정합니다. [VS Code 확장](https://code.claude.com/docs/ko/vs-code.md)이 시작하는 대화는 시작 권한 모드에 대해 프로젝트 설정을 읽지 않습니다. 이 경우에는 대신 VS Code 사용자 설정에서 `claudeCode.initialPermissionMode`를 `plan`으로 설정합니다.

325 325 

326## 자동 모드로 권한 프롬프트 제거326## 자동 모드로 권한 프롬프트 없애기

327 327 

328자동 모드를 사용하면 Claude가 일상적인 권한 프롬프트 없이 실행될 수 있습니다. 별도의 분류기 모델이 실행 전에 작업을 검토하여 요청을 초과하는 모든 것, 인식되지 않은 인프라를 대상으로 하는 것, 또는 Claude가 읽은 악의적인 콘텐츠로 인해 발생한 것으로 보이는 것을 차단합니다. 명시적 [요청 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)은 여전히 프롬프트를 강제합니다.328자동 모드를 사용하면 Claude가 일상적인 권한 프롬프트 없이 작업을 실행합니다. 별도의 분류기 모델이 작업 실행 전에 이를 검토하여, 사용자의 요청 범위를 넘어서는 작업, 인식되지 않은 인프라를 대상으로 하는 작업, 또는 Claude가 읽은 악의적인 콘텐츠에 의해 유도된 것으로 보이는 작업을 차단합니다. 명시적인 [ask 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)은 여전히 프롬프트를 강제합니다.

329 329 

330Claude Code v2.1.283 이상에서는 자동 모드가 모든 플랜 및 제공자의 대화형 터미널 및 VS Code 세션에 대한 [기본 제공 시작 권한 모드](#which-mode-a-session-starts-in)입니다. 이전 버전에서는 Pro, Max 및 Team 플랜에서만 기본 제공 시작 권한 모드입니다.330Claude Code v2.1.283 이상에서는 모든 플랜과 제공업체에서 대화형 터미널 및 VS Code 세션의 [기본 제공 시작 권한 모드](#which-mode-a-session-starts-in)가 자동 모드입니다. 이전 버전에서는 Pro, Max, Team 플랜에서만 기본 제공 시작 권한 모드입니다.

331 331 

332분류기는 또한 자동 모드와 [분류기가 명령을 검토하는 동안 플랜 모드](#analyze-before-you-edit-with-plan-mode)에서 Claude Code가 전달하기 전에 [`SendMessage`](https://code.claude.com/docs/ko/tools-reference)를 사용하여 다른 에이전트에 보내는 각 메시지(일반 텍스트 또는 구조화된 [에이전트 팀](https://code.claude.com/docs/ko/agent-teams.md) 메시지)를 검토합니다. 전송 검토에는 Claude Code v2.1.222 이상이 필요합니다.332분류기는 Claude가 [`SendMessage`](https://code.claude.com/docs/ko/tools-reference)로 다른 에이전트에 보내는 각 메시지도, 일반 텍스트이든 구조화된 [에이전트 팀](https://code.claude.com/docs/ko/agent-teams.md) 메시지이든, Claude Code가 전달하기 전에 검토합니다. 이는 자동 모드와 [분류기가 명령을 검토하는 동안의 플랜 모드](#analyze-before-you-edit-with-plan-mode) 모두에서 적용되며, 전송 검토에는 Claude Code v2.1.222 이상이 필요합니다.

333 333 

334기본적으로 분류기는 `rm -rf /` 또는 `rm -rf ~`와 같이 중요 경로를 대상으로 하는 것으로 인식된 `rm` 및 `rmdir` 제거를 검토하지 않습니다. [중요 경로](#critical-paths)는 각 권한 모드에서 이들에게 어떤 일이 발생하는지 다룹니다.334기본적으로 분류기는 `rm -rf /` 또는 `rm -rf ~`와 같이 인식된 `rm` 및 `rmdir` 중요 경로 삭제를 검토하지 않습니다. 각 권한 모드에서 이러한 삭제가 어떻게 처리되는지는 [중요 경로](#critical-paths)에서 다룹니다.

335 335 

336자동 모드는 또한 Claude가 명확히 하는 질문을 위해 멈추지 않고 계속 작업하도록 Claude를 유도하지만, Claude는 여전히 프롬프트나 스킬이 명시적으로 이를 요구할 때 질문합니다. 여전히 프롬프트를 표시하는 모드에서 더 강력한 자율 동작을 원하면 [적극적 출력 스타일](https://code.claude.com/docs/ko/output-styles.md)을 대신 설정하세요.336자동 모드는 또한 Claude가 명확히 하기 위한 질문으로 멈추지 않고 작업을 계속하도록 유도하지만, 사용자의 프롬프트나 스킬이 명시적으로 질문에 의존하는 경우에는 여전히 질문합니다. 여전히 확인을 요청하는 모드에서 더 강한 자율적 동작을 원한다면 대신 [Proactive 출력 스타일](https://code.claude.com/docs/ko/output-styles.md)을 설정하십시오.

337 337 

338> [!WARNING]338> [!WARNING]

339>339>

340> 자동 모드는 권한 프롬프트를 줄이지만 안전을 보장하지 않습니다. 일반적인 방향을 신뢰하는 작업에 사용하고, 민감한 작업에 대한 검토 대체로 사용하지 마세요.340> 자동 모드는 권한 프롬프트를 줄여 주지만 안전을 보장하지는 않습니다. 전반적인 방향을 신뢰할 수 있는 작업에 사용하고, 민감한 작업에 대한 검토를 대체하는 용도로 사용하지 마십시오.

341 341 

342자동 모드는 계정이 다음 요구 사항을 모두 충족할 때만 사용 가능합니다:342자동 모드는 계정이 다음 요구 사항을 모두 충족하는 경우에만 사용할 수 있습니다.

343 343 

344* **플랜**: 모든 플랜.344* **플랜**: 모든 플랜.

345* **조직**: Team 및 Enterprise에서는 자동 모드를 기본적으로 사용할 수 있습니다. 관리자는 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)에서 `permissions.disableAutoMode`를 `"disable"`로 설정하여 조직에 대해 이를 끌 수 있습니다.345* **조직**: Team 및 Enterprise에서는 자동 모드를 기본적으로 사용할 수 있습니다. 관리자는 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)에서 `permissions.disableAutoMode`를 `"disable"`로 설정하여 조직 전체에서 이 기능을 끌 수 있습니다.

346* **모델**: Anthropic API 및 [AWS의 Claude Platform](https://code.claude.com/docs/ko/claude-platform-on-aws.md)에서는 Claude Opus 4.6 이상, Sonnet 4.6 이상, Haiku 5.5 또는 [Fable 모델](https://code.claude.com/docs/ko/model-config.md#work-with-fable). Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry 및 로그인한 [Claude 앱 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway) 세션에서는 Claude Sonnet 5 이상, Opus 4.7 이상, Haiku 5.5 및 Fable 모델만 해당합니다. Sonnet 4.5, Opus 4.5, Haiku 4.5 및 claude-3 모델을 포함한 이전 모델은 어떤 제공자에서도 지원되지 않습니다.346* **모델**: Anthropic API와 [Claude Platform on AWS](https://code.claude.com/docs/ko/claude-platform-on-aws.md)에서는 Claude Opus 4.6 이상, Sonnet 4.6 이상, Haiku 5.5 또는 [Fable 모델](https://code.claude.com/docs/ko/model-config.md#work-with-fable). Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry 및 로그인된 [Claude apps gateway](https://code.claude.com/docs/ko/claude-apps-gateway) 세션에서는 Claude Sonnet 5 이상, Opus 4.7 이상, Haiku 5.5 및 Fable 모델만 지원됩니다. Sonnet 4.5, Opus 4.5, Haiku 4.5 및 claude-3 모델을 포함한 이전 모델은 어떤 제공업체에서도 지원되지 않습니다.

347* **제공자**: Anthropic API, AWS의 Claude Platform, Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry 및 로그인한 Claude 앱 게이트웨이 세션에서 기본적으로 사용 가능합니다.347* **제공업체**: Anthropic API, Claude Platform on AWS, Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry 및 로그인된 Claude apps gateway 세션에서 기본적으로 사용할 수 있습니다.

348 348 

349Claude Code가 자동 모드를 사용할 수 없다고 보고하면 먼저 이러한 요구 사항과 설정 파일이 [`disableAutoMode`](https://code.claude.com/docs/ko/settings-reference#disableautomode)를 설정하는지 확인하세요. Anthropic은 또한 서버 측에서 자동 모드를 끄거나 서버가 계정에 대해 자동 모드를 거부했을 수 있습니다. 어느 한 답변을 받은 세션은 세션이 끝날 때까지 자동 모드를 끈 상태로 유지하므로 나중에 새 세션을 시작하세요.349Claude Code에서 자동 모드를 사용할 수 없다고 보고하면, 먼저 이러한 요구 사항과 설정 파일에서 [`disableAutoMode`](https://code.claude.com/docs/ko/settings-reference#disableautomode)를 설정하고 있는지 확인하십시오. Anthropic이 서버 측에서 자동 모드를 꺼 두었거나, 서버가 해당 계정에 대해 자동 모드를 거부했을 수도 있습니다. 이러한 응답 중 하나를 받은 세션은 세션이 끝날 때까지 자동 모드가 꺼진 상태로 유지되므로, 나중에 새 세션을 시작하십시오.

350 350 

351모델을 이름 지정하고 자동 모드가 작업의 안전성을 "결정할 수 없다"고 말하는 별도의 메시지는 분류기 요청이 실패했음을 의미합니다. 이 실패는 일반적으로 일시적이지만 Amazon Bedrock에서는 계정이 명명된 모델을 호출할 수 있을 때까지 반복될 수 있습니다. 원인 및 수행할 작업은 [오류 참조](https://code.claude.com/docs/ko/errors.md#auto-mode-cannot-determine-the-safety-of-an-action)를 참조하세요.351모델 이름을 언급하며 자동 모드가 작업의 "안전성을 판단할 수 없다"고 알리는 별도의 메시지는 분류기 요청이 실패했음을 의미합니다. 이러한 실패는 대개 일시적이지만, Amazon Bedrock에서는 계정이 해당 모델을 호출할 수 있을 때까지 반복될 수 있습니다. 원인과 해결 방법은 [오류 참조](https://code.claude.com/docs/ko/errors.md#auto-mode-cannot-determine-the-safety-of-an-action)를 참조하십시오.

352 352 

353[설정](https://code.claude.com/docs/ko/settings-reference.md#all-settings)에서 `defaultMode: "auto"`를 설정했는데 터미널 세션이 오류 없이 Manual 모드로 시작되면 설정이 `.claude/settings.json` 또는 `.claude/settings.local.json`에 있을 가능성이 높습니다. `auto`는 이러한 파일에서 적용되지 않습니다. `~/.claude/settings.json`으로 이동하세요. VS Code 확장이 시작한 대화의 경우 [권한 모드 전환](#switch-permission-modes) 대신 확장의 자체 목록을 확인하세요.353[설정](https://code.claude.com/docs/ko/settings-reference.md#all-settings)에서 `defaultMode: "auto"`를 설정했는데 터미널 세션이 오류 없이 Manual 모드로 시작된다면, 해당 설정이 `.claude/settings.json` 또는 `.claude/settings.local.json`에 있을 가능성이 높습니다. `auto`는 이러한 파일에서는 적용되지 않습니다. `~/.claude/settings.json`으로 옮기십시오. VS Code 확장 프로그램이 시작한 대화의 경우에는 대신 [권한 모드 전환](#switch-permission-modes)에 있는 확장 프로그램 자체 목록을 확인하십시오.

354 354 

355### Bedrock, Agent Platform 또는 Foundry의 자동 모드355### Bedrock, Agent Platform 또는 Foundry에서의 자동 모드

356 356 

357[Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md), [Google Cloud의 Agent Platform](https://code.claude.com/docs/ko/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/ko/microsoft-foundry.md) 및 로그인한 [Claude 앱 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway) 세션에서는 자동 모드를 기본적으로 사용할 수 있습니다. 여기서 권한 모드를 설정하지 않으면 대화형 세션은 자동 모드로 시작하고, `claude -p` 또는 Agent SDK 실행은 구성 값이 `default`인 Manual 모드로 시작합니다:357[Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md), [Google Cloud의 Agent Platform](https://code.claude.com/docs/ko/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/ko/microsoft-foundry.md) 및 로그인된 [Claude apps gateway](https://code.claude.com/docs/ko/claude-apps-gateway) 세션에서는 자동 모드를 기본적으로 사용할 수 있습니다. 이러한 환경에서 권한 모드를 설정하지 않으면 대화형 세션은 자동 모드로 시작되고, `claude -p` 또는 Agent SDK 실행은 구성 값이 `default`인 Manual 모드로 시작됩니다.

358 358 

359* **대화형 터미널 및 VS Code 세션**: 자동 이외의 권한 모드로 시작하려면 [다른 권한 모드에서 시작](#start-in-a-different-mode)이 설명하는 대로 `permissions.defaultMode`를 설정하거나 VS Code 확장의 [모드 표시기](#switch-permission-modes)에서 하나를 선택하세요. [세션이 시작되는 모드](#which-mode-a-session-starts-in)에는 이러한 세션을 자동 모드로 시작하는 Claude Code 버전이 나열되어 있습니다.359* **대화형 터미널 및 VS Code 세션**: 자동 이외의 권한 모드로 시작하려면 [다른 권한 모드로 시작하기](#start-in-a-different-mode)에 설명된 대로 `permissions.defaultMode`를 설정하거나, VS Code 확장 프로그램의 [모드 표시기](#switch-permission-modes)에서 모드를 선택하십시오. 이러한 세션을 자동 모드로 시작하는 Claude Code 버전은 [세션이 시작되는 모드](#which-mode-a-session-starts-in)에 나와 있습니다.

360* **`claude -p` 및 Agent SDK 실행**: 자동 모드로 시작하려면 `claude -p`에 `--permission-mode auto`를 전달하거나, TypeScript에서는 `permissionMode: "auto"`, Python에서는 `permission_mode="auto"`를 전달하세요. 권한 모드를 전달하지 않는 경우 [`claude -p` 및 Agent SDK 실행에서 거부되는 도구 호출](#which-mode-a-non-interactive-run-starts-in)을 참조하세요. 이 섹션은 이전 Claude Code 버전도 다룹니다.360* **`claude -p` 및 Agent SDK 실행**: 자동 모드로 시작하려면 `claude -p`에 `--permission-mode auto`를 전달하거나, TypeScript에서는 `permissionMode: "auto"`를, Python에서는 `permission_mode="auto"`를 전달하십시오. 권한 모드를 전달하지 않는 경우에는 [`claude -p` 및 Agent SDK 실행에서 거부되는 도구 호출](#which-mode-a-non-interactive-run-starts-in)을 참조하십시오. 이 섹션은 이전 Claude Code 버전도 다룹니다.

361 361 

362이러한 제공자에서는 Claude Sonnet 5 이상, Opus 4.7 이상, Haiku 5.5 및 Fable 모델만 지원됩니다. 다른 모델에서는 세션이 Manual로 시작됩니다. 이러한 제공자에서 Haiku 5.5로 자동 모드를 사용하려면 Claude Code v2.1.293 이상이 필요합니다.362이러한 제공업체에서는 Claude Sonnet 5 이상, Opus 4.7 이상, Haiku 5.5 및 Fable 모델만 지원됩니다. 다른 모델에서는 세션이 대신 Manual로 시작됩니다. 이러한 제공업체에서 Haiku 5.5로 자동 모드를 사용하려면 Claude Code v2.1.293 이상이 필요합니다.

363 363 

364개발자가 자동 모드를 사용하지 못하도록 하려면 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)에서 `disableAutoMode`를 `"disable"`로 설정하세요. 이렇게 하면 `Shift+Tab` 사이클에서 `auto`가 제거되고, `--permission-mode auto`로 시작된 세션은 Manual로 시작됩니다. 이미 자동 모드로 실행 중인 세션은 설정이 [관리자 배포 소스](https://code.claude.com/docs/ko/managed-settings.md#which-managed-source-claude-code-uses)에서 해당 세션에 도달할 때 이를 떠나고 `auto mode disabled by settings`를 표시합니다. v2.1.251 이전에는 실행 중인 세션이 끝날 때까지 자동 모드를 유지했습니다.364개발자가 자동 모드를 사용하지 못하도록 하려면 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)에서 `disableAutoMode`를 `"disable"`로 설정하십시오. 이렇게 하면 `Shift+Tab` 순환에서 `auto`가 제거되고, `--permission-mode auto`로 시작한 세션은 대신 Manual로 시작됩니다. 이미 자동 모드로 실행 중인 세션은 이 설정이 [관리자가 배포한 소스](https://code.claude.com/docs/ko/managed-settings.md#which-managed-source-claude-code-uses)에서 해당 세션에 도달하면 자동 모드를 벗어나고 `auto mode disabled by settings`를 표시합니다. v2.1.251 이전에는 실행 중인 세션이 종료될 때까지 자동 모드를 유지했습니다.

365 365 

366### 서버 측 분류기 검토366### 서버 측 분류기 검토

367 367 

368자동 모드에서 Claude Code는 서버에 [결정 순서](#how-the-classifier-evaluates-actions)가 검토를 위해 보내는 작업을 확인하도록 요청할 수 있으며, 이는 자체 분류기 요청을 보내는 대신 세션의 모델 요청의 일부로 수행됩니다. 이러한 세션은 다음을 요청합니다:368자동 모드에서 Claude Code는 자체 분류기 요청을 보내는 대신, 세션의 모델 요청의 일부로 [결정 순서](#how-the-classifier-evaluates-actions)가 검토 대상으로 보내는 작업을 확인하도록 서버에 요청할 수 있습니다. 다음 세션이 서버에 요청합니다.

369 369 

370* **Anthropic API에 대한 직접 연결**: 대화형 터미널 세션과 `-p`, Agent SDK, [VS Code 확장](https://code.claude.com/docs/ko/vs-code.md) 및 [데스크톱 앱](https://code.claude.com/docs/ko/desktop.md) 세션에서, 플랜이나 계정 유형에 관계없이 Anthropic이 롤아웃할 때. 대화형 터미널 세션에서는 Pro, Max 및 Team 플랜에서 Claude Code v2.1.271 이상이 필요하고, Enterprise 플랜 및 Claude API 계정에서는 v2.1.278 이상이 필요합니다. `-p`, Agent SDK, VS Code 확장 및 데스크톱 앱 세션에서는 Claude Code v2.1.281 이상이 필요합니다. v2.1.282부터는 [기능 플래그를 가져오지 않는](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching) 세션(예: 텔레메트리를 끈 경우)은 모든 종류의 세션에서 기본적으로 서버에 요청합니다.370* **Anthropic API에 대한 직접 연결**: 플랜이나 계정 유형에 관계없이 대화형 터미널 세션과 `-p`, Agent SDK, [VS Code 확장 프로그램](https://code.claude.com/docs/ko/vs-code.md), [데스크톱 앱](https://code.claude.com/docs/ko/desktop.md) 세션에서, Anthropic이 순차적으로 배포함에 따라 적용됩니다. 대화형 터미널 세션에서는 Pro, Max, Team 플랜의 경우 Claude Code v2.1.271 이상, Enterprise 플랜과 Claude API 계정의 경우 v2.1.278 이상이 필요합니다. `-p`, Agent SDK, VS Code 확장 프로그램 및 데스크톱 앱 세션에서는 Claude Code v2.1.281 이상이 필요합니다. v2.1.282부터는 예를 들어 텔레메트리를 꺼서 [기능 플래그를 가져오지 않는](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching) 세션은 어떤 종류의 세션에서든 기본적으로 서버에 요청합니다.

371* **클라우드 제공자, LLM 게이트웨이 또는 프록시**: [AWS의 Claude Platform](https://code.claude.com/docs/ko/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud의 Agent Platform 및 Microsoft Foundry에서, 그리고 `ANTHROPIC_BASE_URL`을 [LLM 게이트웨이 또는 프록시](https://code.claude.com/docs/ko/llm-gateway)로 가리킬 때마다 플랜에 관계없이. 기본적으로 요청하려면 Claude Code v2.1.278 이상이 필요합니다.371* **클라우드 제공업체 또는 LLM 게이트웨이나 프록시**: [Claude Platform on AWS](https://code.claude.com/docs/ko/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry에서, 그리고 `ANTHROPIC_BASE_URL`을 [LLM 게이트웨이 또는 프록시](https://code.claude.com/docs/ko/llm-gateway)로 지정할 때마다, 플랜에 관계없이 적용됩니다. 기본적으로 요청하려면 Claude Code v2.1.278 이상이 필요합니다.

372* **로그인한 [Claude 앱 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway) 세션**: Claude Code v2.1.280 이상이 필요합니다372* **로그인된 [Claude apps gateway](https://code.claude.com/docs/ko/claude-apps-gateway) 세션**: Claude Code v2.1.280 이상이 필요합니다

373* **Anthropic 호스팅 환경의 [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)**: 플랜에 관계없이, 웹, 모바일 앱 또는 **Cloud**를 선택한 데스크톱 앱에서 시작할 때. [클라우드 예약 작업](https://code.claude.com/docs/ko/routines.md)으로 시작된 세션은 Anthropic이 롤아웃할 때 서버에 요청합니다.373* **Anthropic 호스팅 환경의 [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)**: 플랜에 관계없이, 웹, 모바일 앱 또는 **Cloud**를 선택한 데스크톱 앱에서 시작할 때 적용됩니다. [클라우드 예약 작업](https://code.claude.com/docs/ko/routines.md)으로 시작된 세션은 Anthropic이 순차적으로 배포함에 따라 서버에 요청합니다.

374 374 

375서버가 작업을 검토하는 경우 해당 판정이 이를 결정합니다. 다른 두 가지 결과가 가능합니다:375서버가 작업을 검토하는 경우 서버의 판정이 작업을 결정합니다. 그 밖에 두 가지 결과가 가능합니다.

376 376 

377* **서버가 세션을 검토하지 않음**: 응답이 검토 결과 없이 완료되거나 서버가 이 세션을 검토하지 않는다고 답합니다. 가장 일반적인 원인은 검토 요청이나 결과를 삭제하는 LLM 게이트웨이 또는 프록시이며, 아직 서버 측 검사가 없는 플랫폼, 지역 또는 자격 증명입니다. Claude Code는 자체 분류기 요청으로 폴백합니다. 이 폴백이 세션의 나머지 부분에 대해 유지되면 [분류기 요청 요금에 대한 공지](https://code.claude.com/docs/ko/auto-mode-classifier-billing.md)를 이러한 요청이 청구되는 계정에 표시합니다.377* **서버가 세션을 검토하지 않는 경우**: 응답이 검토 결과 없이 완료되거나, 서버가 이 세션을 검토하지 않는다고 응답합니다. 가장 흔한 원인은 검토 요청이나 결과를 누락시키는 LLM 게이트웨이나 프록시, 그리고 아직 서버 측 확인을 지원하지 않는 플랫폼, 리전 또는 자격 증명입니다. Claude Code는 자체 분류기 요청으로 폴백합니다. 이 폴백이 세션의 나머지 기간 동안 유지되면, 해당 요청이 과금되는 계정에서는 [분류기 요청 요금에 대한 알림](https://code.claude.com/docs/ko/auto-mode-classifier-billing.md)을 표시합니다.

378* **서버가 작업에 대한 판정을 제공하지 않음**: Claude Code는 검토되지 않은 상태로 실행하는 대신 작업을 거부합니다. 모든 연결에서 이는 응답이 검토 결과가 도착하기 전에 끝나거나 결과가 Claude Code가 읽을 수 없는 형식으로 도착할 때 발생합니다. 응답을 단축하거나 결과를 다시 작성하는 LLM 게이트웨이 또는 프록시가 둘 다 발생할 수 있습니다. Anthropic API에 대한 직접 연결에서는 서버의 검사가 작업에 대해 실패할 때도 발생합니다(예: 시간 초과). [서버가 안전 판정을 반환하지 않음](https://code.claude.com/docs/ko/errors.md#the-server-returned-no-safety-verdict)은 거부 메시지, 거부가 반복될 때 발생하는 일 및 수행할 작업을 다룹니다.378* **서버가 작업에 대한 판정을 내리지 않는 경우**: Claude Code는 검토되지 않은 작업을 실행하지 않고 거부합니다. 어떤 연결에서든 검토 결과가 도착하기 전에 응답이 끝나거나, Claude Code가 읽을 수 없는 형식으로 결과가 도착하면 이런 일이 발생합니다. 응답을 중간에 잘라내거나 결과를 다시 쓰는 LLM 게이트웨이나 프록시가 둘 다의 원인이 될 수 있습니다. Anthropic API에 직접 연결된 경우, 예를 들어 시간 초과로 인해 서버의 확인이 해당 작업에 대해 실패할 때도 이런 일이 발생합니다. 거부 메시지, 거부가 반복될 때 일어나는 일, 해결 방법은 [The server returned no safety verdict](https://code.claude.com/docs/ko/errors.md#the-server-returned-no-safety-verdict)에서 다룹니다.

379 379 

380서버에 요청하는 것을 건너뛰고 항상 Claude Code의 자체 분류기 요청을 사용하려면 [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](https://code.claude.com/docs/ko/env-vars)을 설정하세요. Anthropic API에 대한 직접 연결에서 변수에는 Claude Code v2.1.281 이상이 필요합니다. 거기서 `1`로 설정하면 아직 서버 검토가 없는 세션에서 서버 검토를 켭니다. 단, `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`도 설정한 경우는 제외합니다. `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`을 설정하고 `CLAUDE_CODE_AUTO_MODE_SERVER`를 설정하지 않으면 Claude Code도 서버에 요청하는 것을 중지합니다. [사전 릴리스 기능 비활성화](https://code.claude.com/docs/ko/llm-gateway-protocol.md#disable-pre-release-capabilities)가 설명하는 경우는 제외합니다.380서버에 요청하지 않고 항상 Claude Code의 자체 분류기 요청을 사용하려면 [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](https://code.claude.com/docs/ko/env-vars)을 설정하십시오. Anthropic API에 직접 연결된 경우 이 변수에는 Claude Code v2.1.281 이상이 필요합니다. 여기서 이 변수를 `1`로 설정하면, `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`도 함께 설정하지 않은 한, 아직 서버 검토가 적용되지 않은 세션에서 서버 검토가 켜집니다. `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`을 설정하고 `CLAUDE_CODE_AUTO_MODE_SERVER`를 설정하지 않으면, [사전 출시 기능 비활성화](https://code.claude.com/docs/ko/llm-gateway-protocol.md#disable-pre-release-capabilities)에 설명된 경우를 제외하고 Claude Code는 서버에 요청하는 것도 중단합니다.

381 381 

382### 기본 분류기 모델382### 기본 분류기 모델

383 383 

384기본적으로 분류기 요청은 Claude Sonnet 5로 전송됩니다. `/status`에 `Auto mode server`가 `Enabled`로 표시되면 [서버 검토](#server-side-classifier-review) 범위 밖의 호출에 대해서만 전송됩니다.384기본적으로 분류기 요청은 Claude Sonnet 5로 전송됩니다. `/status`에 `Auto mode server`가 `Enabled`로 표시되면, 분류기 요청은 [서버의 검토](#server-side-classifier-review) 대상이 아닌 호출에 대해서만 전송됩니다.

385 385 

386이 표에서 세션과 일치하는 첫 번째 행을 찾으세요. Sonnet 5 대신 해당 행의 모델이 사용됩니다.386이 표에서 세션과 일치하는 첫 번째 행을 찾으십시오. Sonnet 5 대신 해당 행의 모델이 사용됩니다.

387 387 

388| 세션 | 분류기 모델 |388| 세션 | 분류기 모델 |

389| - | - |389| - | - |

390| Anthropic이 구성한 분류기 모델이 있음 | 구성된 모델. 어떤 모델인지 [디버그 로그를 확인](#classifier-model-check)하세요 |390| Anthropic이 구성한 분류기 모델이 있음 | 구성된 모델. 어떤 모델인지는 [디버그 로그를 확인](#classifier-model-check)하십시오 |

391| Claude Sonnet 4.6에서 실행됨 | Sonnet 4.6 |391| Claude Sonnet 4.6에서 실행됨 | Sonnet 4.6 |

392| [`ANTHROPIC_DEFAULT_SONNET_MODEL`](https://code.claude.com/docs/ko/model-config#environment-variables)이 설정됨 | 해당 값, 또는 값이 Claude Sonnet 5.5 또는 Claude Opus 5.5이면 Sonnet 5 |392| [`ANTHROPIC_DEFAULT_SONNET_MODEL`](https://code.claude.com/docs/ko/model-config#environment-variables)이 설정됨 | 해당 값. 값이 Claude Sonnet 5.5 또는 Claude Opus 5.5이면 Sonnet 5 |

393 393 

394Sonnet 5 또는 `ANTHROPIC_DEFAULT_SONNET_MODEL`의 모델을 제공자에서 사용할 수 없거나 조직의 [모델 정책](https://code.claude.com/docs/ko/model-config.md#restrict-model-selection)에서 제외한 경우 Claude Code는 대체 모델을 사용합니다. 이는 세션의 모델이며, [Fable 세션](https://code.claude.com/docs/ko/model-config.md#work-with-fable)에서는 Opus 모델입니다.394Sonnet 5 또는 `ANTHROPIC_DEFAULT_SONNET_MODEL`의 모델을 제공업체에서 사용할 수 없거나 조직의 [모델 정책](https://code.claude.com/docs/ko/model-config.md#restrict-model-selection)에서 제외한 경우, Claude Code는 대체 모델을 사용합니다. 이는 세션의 모델이며, [Fable 세션](https://code.claude.com/docs/ko/model-config.md#work-with-fable)에서는 Opus 모델입니다.

395 395 

396### 분류기 모델 선택396### 분류기 모델 선택

397 397 

398Claude Code v2.1.302 이상에서는 [`CLAUDE_CODE_AUTO_MODE_MODEL`](https://code.claude.com/docs/ko/env-vars)을 전체 모델 ID로 설정하여 [기본값](#default-classifier-model) 이외의 모델에서 분류기를 실행할 수 있습니다. 클라우드 제공자 자체의 전체 모델 ID도 작동합니다. 다음 `~/.claude/settings.json` 예제는 Claude Sonnet 4.6을 설정합니다:398Claude Code v2.1.302 이상에서는 [`CLAUDE_CODE_AUTO_MODE_MODEL`](https://code.claude.com/docs/ko/env-vars)을 전체 모델 ID로 설정하여 [기본값](#default-classifier-model)이 아닌 모델에서 분류기를 실행할 수 있습니다. 클라우드 제공업체 자체의 전체 모델 ID도 사용할 수 있습니다. 다음 `~/.claude/settings.json` 예시는 Claude Sonnet 4.6을 설정합니다.

399 399 

400```json theme={null}400```json theme={null}

401{401{


405}405}

406```406```

407 407 

408#### 지정한 모델이 검토하지 않는 경우408#### 설정한 모델이 검토하지 않는 경우

409 409 

410| 상황 | 발생하는 일 | 수행할 작업 |410| 상황 | 결과 | 조치 |

411| - | - | - |411| - | - | - |

412| [디버그 로그](#classifier-model-check)에 Anthropic이 구성한 분류기 모델이 보고됨 | 해당 모델이 검토합니다 | 필요 없음 |412| [디버그 로그](#classifier-model-check)에 Anthropic이 구성한 분류기 모델이 보고됨 | 해당 모델이 검토함 | 조치 필요 없음 |

413| Claude Opus 5, Sonnet 5.5, Opus 5.5 또는 조직의 [모델 정책](https://code.claude.com/docs/ko/model-config.md#restrict-model-selection)에서 제외하는 모델을 설정함 | [기본 분류기 모델](#default-classifier-model)이 검토합니다 | 다른 모델을 설정하세요 |413| Claude Opus 5, Sonnet 5.5, Opus 5.5 또는 조직의 [모델 정책](https://code.claude.com/docs/ko/model-config.md#restrict-model-selection)에서 제외한 모델을 설정함 | [기본 분류기 모델](#default-classifier-model)이 검토함 | 다른 모델 설정 |

414| 제공자가 해당 모델을 제공할 수 없음 | 분류기 검사가 실패하므로 Claude Code가 [검사하는 각 작업을 거부합니다](https://code.claude.com/docs/ko/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) | 제공자가 제공하는 모델을 설정하거나 변수를 제거하세요 |414| 제공업체가 해당 모델을 제공할 수 없음 | 분류기 확인이 실패하므로 Claude Code가 [확인하는 각 작업을 거부함](https://code.claude.com/docs/ko/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) | 제공업체가 제공하는 모델을 설정하거나 변수 제거 |

415| 세션에서 `/status`에 [`Auto mode server`](#server-side-classifier-review)가 `Enabled`로 표시됨 | 지정한 모델 없이 서버가 검토합니다 | 필요 없음 |415| 세션에서 `/status`에 [`Auto mode server`](#server-side-classifier-review)가 `Enabled`로 표시됨 | 설정한 모델 없이 서버가 검토함 | 조치 필요 없음 |

416 416 

417여러 상황이 해당하면 먼저 나열된 상황을 따르세요.417여러 상황이 해당하면 목록에서 먼저 나오는 상황을 따릅니다.

418 418 

419#### 분류기가 사용한 모델 확인419#### 분류기가 사용한 모델 확인

420 420 

421셸에서 [`--debug-file`](https://code.claude.com/docs/ko/cli-reference#cli-flags)을 사용하여 자동 모드 세션을 시작하세요:421셸에서 [`--debug-file`](https://code.claude.com/docs/ko/cli-reference#cli-flags)을 사용하여 자동 모드 세션을 시작합니다.

422 422 

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

424claude --permission-mode auto --debug-file classifier-debug.log424claude --permission-mode auto --debug-file classifier-debug.log

425```425```

426 426 

427Claude에게 읽기 전용이 아닌 셸 명령을 실행하게 한 다음 로그에서 `classifier_request_started`를 검색하세요:427Claude가 읽기 전용이 아닌 셸 명령을 실행하도록 한 다음, 로그에서 `classifier_request_started`를 검색합니다.

428 428 

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

430* **`model=` 뒤에 다른 모델이 있음**: 로그에서 `ignoring CLAUDE_CODE_AUTO_MODE_MODEL`을 검색하세요. 그 이유와 수행할 단계가 있는 경우 이를 알려 줍니다430* **`model=` 뒤에 다른 모델이 있음**: 로그에서 `ignoring CLAUDE_CODE_AUTO_MODE_MODEL`을 검색하십시오. 이 줄에 이유와 필요한 조치가 나와 있습니다

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

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

433 * **`Disabled`**: [권한 모드](#switch-permission-modes)가 auto인지 확인한 다음 Claude에게 읽기 전용이 아닌 다른 명령을 실행하게 하세요.433 * **`Disabled`**: [권한 모드](#switch-permission-modes)가 auto인지 확인한 다음, Claude가 읽기 전용이 아닌 다른 명령을 실행하도록 하십시오.

434 434 

435### 분류기가 기본적으로 차단하는 것435### 분류기가 기본적으로 차단하는 항목

436 436 

437분류기는 작업 디렉터리와 세션이 시작될 때 이에 대해 구성된 원격을 신뢰합니다. 세션 중에 `git remote add` 또는 `git remote set-url`로 추가되거나 다시 가리킨 원격은 신뢰되지 않으며, [신뢰할 수 있는 인프라를 구성](https://code.claude.com/docs/ko/auto-mode-config.md)할 때까지 다른 모든 것은 외부로 취급됩니다.437분류기는 작업 디렉터리와 세션 시작 시점에 해당 디렉터리에 구성되어 있던 원격 저장소를 신뢰합니다. 세션 중에 `git remote add` 또는 `git remote set-url`로 추가되거나 대상이 변경된 원격 저장소는 신뢰되지 않으며, [신뢰할 수 있는 인프라를 구성](https://code.claude.com/docs/ko/auto-mode-config.md)하기 전까지 그 밖의 모든 것은 외부로 취급됩니다.

438 438 

439**기본적으로 차단됨**:439**기본적으로 차단됨**:

440 440 

441* `curl | bash`와 같은 코드 다운로드 및 실행441* `curl | bash`처럼 코드를 다운로드하여 실행하는 작업

442* 외부 엔드포인트로 민감한 데이터 전송442* 민감한 데이터를 외부 엔드포인트로 전송하는 작업

443* 프로덕션 배포 및 마이그레이션443* 프로덕션 배포 및 마이그레이션

444* 클라우드 스토리지의 대량 삭제444* 클라우드 스토리지의 대량 삭제

445* IAM 또는 저장소 권한 부여445* IAM 또는 저장소 권한 부여

446* 공유 인프라 수정446* 공유 인프라 수정

447* 세션 전에 존재했던 파일을 돌이킬 수 없게 파괴447* 세션 이전부터 존재하던 파일을 되돌릴 수 없게 삭제하는 작업

448* 강제 푸시448* 강제 푸시

449* 실행될 때 비밀이나 민감한 데이터를 저장소 외부로 보내거나 배포가 노출하는 것을 확대할 변경 사항을 커밋하거나 푸시합니다. 이는 비밀을 아직 받지 않는 대상으로 전달하는 CI 워크플로 또는 배포 구성, 비밀 스토어를 읽고 데이터를 보내는 스크립트 또는 설정 단계, 그리고 배포가 게시하는 것을 확대하는 구성 변경(예: 레지스트리, 가시성, 아티팩트 또는 소스맵 설정)을 다룹니다. 검사는 모든 브랜치에 적용되고, 저장소가 공개인 경우에도 적용되며, 해당 커밋이나 푸시가 파이프라인을 트리거하는지 여부에 관계없이 커밋되거나 푸시될 때 발생합니다. 이를 지우려면 커밋이나 푸시만이 아니라 실행 효과를 이름 지정해야 합니다449* 실행 시 시크릿이나 민감한 데이터를 저장소 외부로 보내거나, 배포가 노출하는 범위를 넓히는 변경을 커밋하거나 푸시하는 작업. 여기에는 시크릿을 아직 받지 않는 대상으로 전달하는 CI 워크플로나 배포 구성, 시크릿 저장소를 읽어 데이터를 외부로 보내는 스크립트나 설정 단계, 레지스트리, 공개 범위, 아티팩트 또는 소스맵 설정처럼 배포가 게시하는 범위를 넓히는 구성 변경이 포함됩니다. 이 확인은 모든 브랜치에 적용되고, 저장소가 공개 저장소인 경우에도 적용되며, 해당 커밋이나 푸시가 파이프라인을 트리거하는지 여부와 관계없이 변경이 커밋되거나 푸시될 때 발동합니다. 이를 해제하려면 커밋이나 푸시만이 아니라 실행 효과를 명시해야 합니다

450* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop` 또는 `git stash clear`는 분류기가 커밋되지 않은 변경 사항을 삭제할 것으로 가정합니다450* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop` 또는 `git stash clear`. 분류기는 이러한 명령이 커밋되지 않은 변경 사항을 버린다고 가정합니다

451* HEAD의 커밋이 이 세션에서 생성되지 않았을 때 `git commit --amend`451* HEAD의 커밋이 이 세션에서 생성되지 않은 경우의 `git commit --amend`

452* v2.1.198부터 HEAD의 커밋이 이미 푸시되었을 때 `git commit --amend`. 메시지 전용 단어 변경은 차단되지 않습니다: Claude가 이 세션 중에 생성한 커밋에서 새로 스테이징된 것이 없는 `--amend -m`452* v2.1.198부터, HEAD의 커밋이 이미 푸시된 경우의 `git commit --amend`. 메시지만 바꾸는 경우는 차단되지 않습니다. 즉, 이 세션에서 Claude가 만든 커밋에 대해 새로 스테이징된 항목 없이 `--amend -m`을 사용하는 경우입니다

453* `terraform destroy`, `pulumi destroy`, `cdk destroy` 또는 `terragrunt destroy`, 그리고 리소스를 파괴하는 계획 적용453* `terraform destroy`, `pulumi destroy`, `cdk destroy` 또는 `terragrunt destroy`, 그리고 리소스를 삭제하는 플랜 적용

454* 비밀 관리자에 쓰기, 또는 DNS 레코드 또는 TLS 인증서 변경454* 시크릿 매니저에 쓰기, 또는 DNS 레코드나 TLS 인증서 변경

455* 인간이 승인하지 않은 풀 리퀘스트 병합, Claude의 자체 풀 리퀘스트 승인 또는 CI 검사 비활성화455* 사람이 승인하지 않은 풀 리퀘스트 병합, Claude 자신의 풀 리퀘스트 승인, 또는 CI 검사 비활성화

456* `atlantis apply` 또는 봇의 `/deploy` 또는 `/merge`와 같은 자동화에 대한 명령 자체인 댓글 게시456* `atlantis apply`나 봇의 `/deploy` 또는 `/merge`처럼 그 자체가 자동화에 대한 명령인 댓글 게시

457* 프로덕션 기능 플래그 토글, 램핑 또는 삭제457* 프로덕션 기능 플래그의 전환, 점진적 확대 또는 삭제

458* 보호된 IaC 범위에 인프라 변경 사항 적용, 또는 클러스터 노드 드레이닝 및 제거458* 보호된 IaC 범위에 인프라 변경 적용, 또는 클러스터 노드 드레인 및 제거

459* 레이블 선택기 또는 `--all`과 같이 다른 사용자의 작업을 포착하는 명명된 리소스를 초과하는 공유 컴퓨팅 클러스터에 쓰기459* 레이블 선택기나 다른 사용자의 작업까지 포함하는 `--all`처럼, 지정한 리소스를 넘어서는 공유 컴퓨팅 클러스터에 대한 쓰기

460* 모든 노드에서 실행되거나 클러스터 트래픽을 가로채는 Kubernetes 리소스 생성(예: DaemonSets 및 승인 웹훅)460* DaemonSet 및 admission webhook처럼 모든 노드에서 실행되거나 클러스터 트래픽을 가로채는 Kubernetes 리소스 생성

461* 민감한 원격 대상으로의 대화형 셸 또는 포트 포워드461* 민감한 원격 대상에 대한 대화형 셸 또는 포트 포워딩

462* 로컬 서비스를 공개 인터넷에서 도달 가능하게 하는 터널 또는 역셸 열기462* 로컬 서비스를 공용 인터넷에서 접근 가능하게 만드는 터널 또는 리버스 셸 열기

463* 라이브 자격 증명 또는 토큰을 트랜스크립트 또는 파일에 인쇄463* 실제 자격 증명이나 토큰을 트랜스크립트나 파일에 출력하는 작업

464* [환경](https://code.claude.com/docs/ko/auto-mode-config.md#define-trusted-infrastructure)에서 민감한 데이터 위치로 나열된 위치에 액세스, 해당 위치에서 데이터 복사, 또는 항목이 제외하는 대상으로 해당 위치의 데이터 전송464* [환경](https://code.claude.com/docs/ko/auto-mode-config.md#define-trusted-infrastructure)에 민감한 데이터 위치로 나열된 위치에 접근하거나, 그곳에서 데이터를 복사하거나, 해당 항목이 제외하는 대상에게 그곳의 데이터를 보내는 작업

465* 내부 패키지 레지스트리를 우회하여 공개 레지스트리로 패키지 설치 라우팅. 이는 내부 레지스트리 또는 미러가 환경에 나열되어 있거나, 대화에서 Claude에 그러한 레지스트리가 존재한다고 말했을 때 적용됩니다465* 패키지 설치를 내부 패키지 레지스트리를 우회하여 공개 레지스트리로 라우팅하는 작업. 이는 내부 레지스트리나 미러가 환경에 나열되어 있거나 대화에서 Claude에게 내부 레지스트리가 있다고 알린 경우에 적용됩니다

466* `--insecure`와 같은 안전 가드를 해제하는 플래그로 명령 실행466* `--insecure`처럼 안전 장치를 해제하는 플래그를 사용하여 명령을 실행하는 작업

467* `--dangerously-skip-permissions` 또는 `--no-sandbox`로 시작된 것과 같이 인간 승인이나 샌드박스 없이 실행되는 자율 에이전트 루프 시작. 여기에는 `--yes-always`로 시작된 러너와 같이 격리 및 작업별 승인이 비활성화된 상태로 제3자 에이전트 또는 평가 하네스를 실행하는 것도 포함됩니다467* `--dangerously-skip-permissions` 또는 `--no-sandbox`로 시작한 것처럼, 사람의 승인이나 샌드박스 없이 실행되는 자율 에이전트 루프 실행. 여기에는 `--yes-always`로 시작한 실행기처럼 격리와 작업별 승인이 비활성화된 서드파티 에이전트나 평가 하네스 실행도 포함됩니다

468* [Chrome의 Claude](https://code.claude.com/docs/ko/chrome.md) 브라우저 작업으로 페이지 콘텐츠, 쿠키 또는 자격 증명을 원본 외부로 보낼 수 있음468* 페이지 콘텐츠, 쿠키 또는 자격 증명을 다른 출처로 보낼 수 있는 [Claude in Chrome](https://code.claude.com/docs/ko/chrome.md) 브라우저 작업

469* 특정 명명된 경로가 아닌 와일드카드, 글로브 또는 나이 필터로 `/tmp`, `$TMPDIR` 또는 다른 공유 스크래치 또는 캐시 디렉터리의 파일 삭제469* 특정 이름의 경로가 아닌 와일드카드, glob 또는 기간 필터로 `/tmp`, `$TMPDIR` 또는 기타 공유 임시 디렉터리나 캐시 디렉터리의 파일을 삭제하는 작업

470* 자신의 메시지가 해당 수신자에게 이러한 세부 정보를 승인하지 않았을 때 전송, 업로드, 게시 또는 다른 사람이나 공유 시스템에 작성된 콘텐츠에 민감한 세부 정보 포함. PR 및 이슈 본문, 커밋 메시지 및 댓글은 저장소가 신뢰 경계 외부이거나 공개일 때 이러한 종류의 아웃바운드 콘텐츠로 계산되며, 조직의 자체 공개 저장소도 포함됩니다. 내부 파일 경로, 코드명, 이메일 또는 계정 식별자와 같은 라이브 API 응답 데이터 및 인프라 식별자는 민감한 세부 정보로 계산됩니다. PR 또는 이슈 본문의 API 응답의 라이브 개인 데이터(예: 이메일 주소, 계정 또는 조직 식별자 또는 사용 메트릭)에는 저장소의 가시성이나 신뢰 경계에 관계없이 이러한 세부 정보와 수신자를 이름 지정해야 합니다470* 사용자 본인의 메시지가 해당 수신자에게 허용하지 않은 민감한 세부 정보를, 다른 사람이나 공유 시스템으로 전송, 업로드, 게시 또는 작성되는 콘텐츠에 포함하는 작업. 저장소가 신뢰 경계 밖에 있거나 공개 저장소인 경우(조직 자체의 공개 저장소 포함) PR 및 이슈 본문, 커밋 메시지, 댓글이 이러한 외부 전송 콘텐츠에 해당합니다. 내부 파일 경로, 코드 이름, 이메일이나 계정 식별자 같은 실시간 API 응답 데이터, 인프라 식별자가 민감한 세부 정보에 해당합니다. PR 또는 이슈 본문에 이메일 주소, 계정이나 조직 식별자, 사용량 지표 같은 API 응답의 실시간 개인 데이터를 포함하려면, 저장소의 공개 범위나 신뢰 경계와 관계없이 해당 세부 정보와 수신자를 사용자가 직접 명시해야 합니다

471* Claude Code의 자체 tmux 창으로 키스트로크를 보내 자체 인터페이스를 구동하는 것으로, 분류기는 Claude가 자체 권한이나 감시를 변경하는 것으로 취급합니다471* Claude Code 자체의 tmux 창에 키 입력을 보내 자신의 인터페이스를 조작하는 작업. 분류기는 이를 Claude가 자신의 권한이나 감독을 변경하는 것으로 취급합니다

472* 인증, 액세스 제어, 입력 검증 또는 샌드박싱과 같은 보안 동작을 보호하는 테스트 또는 어설션을 주석 처리, 삭제 또는 강제 통과472* 인증, 접근 제어, 입력 검증 또는 샌드박싱 같은 보안 동작을 보호하는 테스트나 어설션을 주석 처리, 삭제 또는 강제 통과시키는 작업

473* Claude가 세션에서 생성하지 않은 상태 저장 리소스 삭제 또는 해체(더 구체적인 삭제 규칙이 적용되지 않고 해당 리소스를 이름 지정하지 않은 경우)473* 더 구체적인 삭제 규칙이 적용되지 않고 사용자가 해당 리소스를 지정하지 않은 경우, Claude가 세션에서 생성하지 않은 상태 저장 리소스를 삭제하거나 해체하는 작업

474* API 기본 URL, 프록시 엔드포인트, 웹훅 수신자 또는 레지스트리 미러를 작업에 맞지 않는 제3자 호스트로 다시 가리키기(`.env.example`과 같은 예제 파일 포함)474* API 기본 URL, 프록시 엔드포인트, 웹훅 수신기 또는 레지스트리 미러를 작업에 맞지 않는 서드파티 호스트로 변경하는 작업. `.env.example` 같은 예시 파일에서의 변경도 포함됩니다

475* `git remote set-url` 또는 `git remote add`로 푸시가 가는 위치 변경(새 원격을 이름 지정하지 않은 경우)475* 새 원격 저장소를 사용자가 지정하지 않은 경우, `git remote set-url` 또는 `git remote add`로 푸시 대상을 변경하는 작업

476* 공개로 알려진 저장소로 비밀이나 개인 또는 위탁된 데이터 푸시, 또는 해당 저장소의 자체 작업의 일부가 아닌 기밀 자료를 거기로 푸시. dotfiles 저장소의 자체 주제는 개인 또는 위탁된 데이터의 유일한 예외이며, 비공개 저장소의 콘텐츠가 공개 위치에 도달하는 것도 동일한 방식으로 차단됩니다. 저장소의 가시성이 확립되지 않으면 분류기는 그것만으로 차단하지 않습니다. 대신 다른 규칙에 대해 콘텐츠를 판단합니다476* 공개된 것으로 알려진 저장소에 시크릿이나 개인 데이터 또는 위탁받은 데이터를 푸시하거나, 해당 저장소 자체의 작업에 속하지 않는 기밀 자료를 푸시하는 작업. 개인 데이터나 위탁받은 데이터의 경우 dotfiles 저장소 자체의 주제가 유일한 예외이며, 비공개 저장소의 콘텐츠가 공개된 곳에 도달하는 것도 같은 방식으로 차단됩니다. 저장소의 공개 범위가 확인되지 않은 경우 분류기는 그것만으로 차단하지 않고, 대신 다른 규칙에 따라 콘텐츠를 판단합니다

477* 다른 저장소 또는 조직에 대한 풀 리퀘스트 열기, `gh repo fork`로 포킹 또는 제3자 저장소로 푸시(해당 외부 대상을 이름 지정하지 않은 경우)477* 외부 대상을 사용자가 지정하지 않은 경우, 다른 저장소나 조직을 대상으로 풀 리퀘스트를 열거나, `gh repo fork`로 포크하거나, 서드파티 저장소에 푸시하는 작업

478* 민감한 로컬 스토어의 콘텐츠 또는 이름, 경로 또는 유형이 민감한 것으로 표시하는 파일의 콘텐츠가 커밋, 푸시, PR 또는 이슈 텍스트, gist 또는 붙여넣기 또는 패키지 게시에 들어가는 것(소스와 대상을 모두 이름 지정하지 않은 경우). 세션 트랜스크립트 및 대화 로그, SSH 키, 클라우드 자격 증명, 브라우저 프로필 및 셸 기록과 같은 자격 증명 및 구성 점 폴더, 그리고 사용자 데이터 내보내기는 모두 계산되며, 저장소가 비공개라는 것이 이를 지우지 않습니다478* 출처와 대상을 모두 사용자가 지정하지 않은 경우, 민감한 로컬 저장 위치의 콘텐츠 또는 이름, 경로나 유형으로 민감함이 드러나는 파일의 콘텐츠가 커밋, 푸시, PR 또는 이슈 텍스트, gist나 paste, 패키지 게시에 포함되는 작업. 세션 트랜스크립트와 대화 로그, SSH 키, 클라우드 자격 증명, 브라우저 프로필, 셸 기록 같은 자격 증명 및 구성 점 폴더, 사용자 데이터 내보내기가 모두 해당하며, 저장소가 비공개라고 해서 허용되지 않습니다

479* Claude Code 세션 트랜스크립트, 즉 `~/.claude/projects/` 또는 구성한 설정 디렉터리 아래의 `.jsonl` 기록 파일에 쓰기(직접 또는 셸 명령을 통해). 규칙은 또한 Claude Code가 자체 검사를 위해 각 트랜스크립트 항목에 추가하는 메타데이터 줄을 다룹니다. 트랜스크립트 읽기는 차단되지 않습니다479* 직접 또는 셸 명령을 통해 Claude Code 세션 트랜스크립트, 즉 `~/.claude/projects/` 또는 구성된 설정 디렉터리 아래의 `.jsonl` 기록 파일에 쓰는 작업. 이 규칙은 Claude Code가 자체 확인을 위해 각 트랜스크립트 항목에 덧붙이는 메타데이터 줄도 다룹니다. 트랜스크립트를 읽는 것은 차단되지 않습니다

480* 대상이 분류기가 보는 대화 어디에도 할당되지 않은 셸 변수이거나 그러한 변수를 루트로 하는 글로브인 `rm -rf "$VAR"` 또는 `Remove-Item -Recurse -Force $dir`과 같은 재귀적 강제 삭제. 값은 분류기가 절대 받지 않는 이전 명령 출력에서만 나왔으므로 분류기는 삭제 대상을 다른 삭제 규칙에 대해 확인할 수 없습니다. 삭제되는 정확한 경로를 이름 지정하거나 Claude가 해결된 리터럴 경로가 명령에 작성된 상태로 삭제를 다시 실행할 때 블록이 지워집니다. 분류기가 대상을 해결할 수 있는 삭제는 영향을 받지 않습니다.480* 대상이 분류기가 보는 대화 어디에서도 할당되지 않은 셸 변수이거나 그러한 변수를 기준으로 하는 glob인 `rm -rf "$VAR"` 또는 `Remove-Item -Recurse -Force $dir` 같은 재귀적 강제 삭제. 해당 값은 분류기가 받지 못하는 이전 명령 출력에서만 나왔으므로, 분류기는 삭제 대상을 다른 삭제 규칙에 비추어 확인할 수 없습니다. 삭제되는 정확한 경로를 사용자가 지정하거나, Claude가 확인된 리터럴 경로를 명령에 직접 써서 삭제를 다시 실행하면 차단이 해제됩니다. 분류기가 대상을 확인할 수 있는 삭제는 영향을 받지 않습니다.

481 481 

482 `rm -rf "$VAR"/*`처럼 변수 바로 아래의 글로브는 대신 [중요 경로](#critical-paths)에 해당합니다. 맨 `*`이거나 `/*` 또는 `\*`로 끝나는 `Remove-Item` 대상은 분류기에 도달하지 않습니다: Claude Code가 [이를 즉시 거부합니다](#remove-item-in-powershell).482 `rm -rf "$VAR"/*`처럼 변수 바로 아래의 glob은 대신 [중요 경로](#critical-paths)에 해당합니다. 대상이 단독 `*`이거나 `/*` 또는 `\*`로 끝나는 `Remove-Item`은 분류기에 도달하지 않습니다. Claude Code가 [즉시 거부합니다](#remove-item-in-powershell).

483 483 

484이러한 범주 중 여러 개는 민감한 원격 대상 및 보호된 IaC 범위와 같이 구체적인 이름으로 좁힐 수 있는 [환경](https://code.claude.com/docs/ko/auto-mode-config.md#define-trusted-infrastructure) 항목에 따라 달라집니다.484이러한 범주 중 일부는 민감한 원격 대상이나 보호된 IaC 범위처럼 구체적인 이름으로 좁힐 수 있는 [환경](https://code.claude.com/docs/ko/auto-mode-config.md#define-trusted-infrastructure) 항목에 따라 달라집니다.

485 485 

486Claude Code v2.1.257 이상도 기본적으로 다음을 차단합니다:486Claude Code v2.1.257 이상에서는 다음 항목도 기본적으로 차단합니다.

487 487 

488* `169.254.169.254`와 같은 클라우드 인스턴스 메타데이터 엔드포인트에서 자격 증명 요청 또는 머신의 자체 서비스 계정 또는 노드 ID로 클라우드, 클러스터 또는 레지스트리 호출을 명시적으로 인증488* `169.254.169.254` 같은 클라우드 인스턴스 메타데이터 엔드포인트에 자격 증명을 요청하거나, 머신 자체의 서비스 계정 또는 노드 ID로 클라우드, 클러스터 또는 레지스트리 호출을 명시적으로 인증하는 작업

489* 직접 요청이 아닌 다른 경로로 공개 호스트에 도달(예: 터널, 역셸 또는 외부를 가리키도록 다시 작성된 리졸버 또는 프록시 구성)489* 터널, 리버스 셸, 또는 외부를 가리키도록 다시 작성된 리졸버나 프록시 구성처럼 직접 요청이 아닌 경로로 공개 호스트에 접근하는 작업

490* 작업이 아닌 호스트에 속하는 자격 증명 읽기(예: 노드 인증서 또는 노드의 컨테이너 레지스트리 인증)490* 노드 인증서나 노드의 컨테이너 레지스트리 인증 정보처럼 작업이 아닌 호스트에 속한 자격 증명을 읽는 작업

491* Claude가 시작하지 않은 형제 컨테이너, 포드 또는 VM 또는 컨테이너 아래의 노드에 연결 또는 스캔491* Claude가 시작하지 않은 형제 컨테이너, 파드 또는 VM이나 컨테이너 아래의 노드에 연결하거나 스캔하는 작업

492 492 

493Claude Code가 이 중 하나를 허용하도록 의도된 곳에서 실행되면 `autoMode.environment`의 [호스트 격리 항목](https://code.claude.com/docs/ko/auto-mode-config.md#define-trusted-infrastructure)에서 해당 설정을 설명하세요.493Claude Code가 이 중 하나를 허용하도록 의도된 환경에서 실행되는 경우, `autoMode.environment`의 [Host containment 항목](https://code.claude.com/docs/ko/auto-mode-config.md#define-trusted-infrastructure)에 해당 구성을 설명하십시오.

494 494 

495Claude Code v2.1.261 이상도 기본적으로 다음을 차단합니다:495Claude Code v2.1.261 이상에서는 다음 항목도 기본적으로 차단합니다.

496 496 

497* 메시지, PR 또는 이슈 텍스트, 문서 또는 링크가 열리거나 가져와질 다른 곳에서 공개 붙여넣기, 다이어그램 또는 데이터 공유 서비스에 대한 링크 게시 또는 작성(URL 자체가 공유되는 콘텐츠를 전달할 때, 해당 서비스를 이름 지정하지 않은 경우)497* URL 자체에 공유되는 콘텐츠가 담겨 있는 경우, 메시지, PR 또는 이슈 텍스트, 문서 또는 링크가 열리거나 가져와지는 기타 위치에 공개 paste, 다이어그램 또는 데이터 공유 서비스 링크를 게시하거나 작성하는 작업. 사용자가 해당 서비스를 지정한 경우는 예외입니다

498 498 

499**기본적으로 허용됨**:499**기본적으로 허용됨**:

500 500 

501* 작업 디렉터리의 로컬 파일 작업501* 작업 디렉터리 내의 로컬 파일 작업

502* 잠금 파일 또는 매니페스트에 선언된 의존성 설치502* 잠금 파일이나 매니페스트에 선언된 의존성 설치

503* `.env` 읽기 및 자격 증명을 일치하는 API로 전송503* `.env`를 읽고 자격 증명을 해당 API로 전송하는 작업

504* 읽기 전용 HTTP 요청504* 읽기 전용 HTTP 요청

505* 기본 브랜치를 포함하여 작업 중인 저장소의 모든 브랜치로 푸시. 이름이 배포 또는 게시 대상임을 나타내는 비기본 브랜치(예: `production` 또는 `gh-pages`)는 포함되지 않습니다: 분류기는 거기로의 푸시를 자체 조건에 따라 판단합니다.505* 기본 브랜치를 포함하여 작업 중인 저장소의 모든 브랜치로 푸시하는 작업. `production`이나 `gh-pages`처럼 이름으로 배포 또는 게시 대상임을 나타내는 기본이 아닌 브랜치는 여기에 포함되지 않으며, 분류기는 해당 브랜치로의 푸시를 별도로 판단합니다.

506 506 

507 푸시의 콘텐츠는 여전히 분류기의 다른 규칙에 대해 검사되고, [`permissions.deny` 규칙](https://code.claude.com/docs/ko/permissions#manage-permissions)은 여전히 모든 모드에서 [작성된 대로](https://code.claude.com/docs/ko/permissions.md#bash-rule-limits) 푸시 명령을 차단할 수 있습니다. 원격의 자체 브랜치 보호는 여전히 적용됩니다.507 푸시의 콘텐츠는 여전히 분류기의 다른 규칙에 따라 확인되며, [`permissions.deny` 규칙](https://code.claude.com/docs/ko/permissions#manage-permissions)은 모든 모드에서 푸시 명령을 [작성된 그대로](https://code.claude.com/docs/ko/permissions.md#bash-rule-limits) 여전히 차단할 수 있습니다. 원격 저장소 자체의 브랜치 보호도 여전히 적용됩니다.

508* 같은 세션에서 Claude가 생성한 정확한 작업 삭제508* 같은 세션에서 Claude가 앞서 생성한 바로 그 작업 삭제

509* 작업의 일부로 보안 관련 코드, 구성 및 위협 모델 읽기, 검토 또는 작성509* 작업의 일부로 보안 관련 코드, 구성 및 위협 모델을 읽고, 검토하고, 작성하는 작업

510* 같은 다중 에이전트 세션에서 함께 작업하는 에이전트 간의 메시지510* 같은 멀티 에이전트 세션에서 함께 작업하는 에이전트 간의 메시지

511* [`environment`](https://code.claude.com/docs/ko/auto-mode-config#define-trusted-infrastructure)에 나열한 신뢰할 수 있는 도메인, 버킷 및 서비스로 데이터 전송. 이는 동일한 인프라에 대한 파괴적이거나 자격 증명 작업이 아닌 데이터 흐름만 다룹니다511* [`environment`](https://code.claude.com/docs/ko/auto-mode-config#define-trusted-infrastructure)에 나열한 신뢰할 수 있는 도메인, 버킷 및 서비스로 데이터를 보내는 작업. 이는 데이터 흐름만 다루며, 같은 인프라에 대한 파괴적 작업이나 자격 증명 작업은 포함하지 않습니다

512* [Chrome의 Claude](https://code.claude.com/docs/ko/chrome.md) 신뢰할 수 있는 내부 도메인, localhost 또는 이름 지정한 URL로의 탐색512* 신뢰할 수 있는 내부 도메인, localhost 또는 사용자가 지정한 URL로의 [Claude in Chrome](https://code.claude.com/docs/ko/chrome.md) 탐색

513 513 

514샌드박스된 명령은 기본적으로 네트워크 액세스를 받지 않습니다. Claude는 명령이 필요한 호스트를 명령 자체에 이름 지정하고, 분류기는 명령과 함께 이를 검토하며, 승인된 목록은 해당 명령만을 위해 이러한 호스트를 엽니다. [명령별 허용 도메인](https://code.claude.com/docs/ko/sandboxing.md#per-command-allowed-domains-in-auto-mode)은 목록이 열 수 있는 것과 열 수 없는 것, 그리고 명령이 나열되지 않은 호스트에 도달할 때 발생하는 일을 다룹니다.514샌드박스 처리된 명령은 기본적으로 네트워크 접근 권한을 받지 않습니다. Claude는 명령에 필요한 호스트를 명령 자체에 명시하고, 분류기는 명령과 함께 이를 검토하며, 승인된 목록은 해당 명령 하나에 대해서만 그 호스트를 엽니다. 목록으로 열 수 있는 것과 열 수 없는 것, 그리고 명령이 목록에 없는 호스트에 접근하려 할 때 일어나는 일은 [명령별 허용 도메인](https://code.claude.com/docs/ko/sandboxing.md#per-command-allowed-domains-in-auto-mode)에서 다룹니다.

515 515 

516`claude auto-mode defaults`를 실행하여 전체 규칙 목록을 JSON으로 인쇄하세요. 일상적인 작업이 차단되면 관리자는 `autoMode.environment` 설정을 통해 신뢰할 수 있는 저장소, 버킷 및 서비스를 추가할 수 있습니다: [자동 모드 구성](https://code.claude.com/docs/ko/auto-mode-config.md)을 참조하세요.516`claude auto-mode defaults`를 실행하면 전체 규칙 목록을 JSON으로 출력합니다. 일상적인 작업이 차단되는 경우 관리자는 `autoMode.environment` 설정을 통해 신뢰할 수 있는 저장소, 버킷 및 서비스를 추가할 수 있습니다. [자동 모드 구성](https://code.claude.com/docs/ko/auto-mode-config.md)을 참조하십시오.

517 517 

518작업 중인 저장소의 모든 브랜치로 푸시하고 요청과 일치하는 풀 리퀘스트를 생성하는 것은 프롬프트 없이 실행됩니다. 푸시 또는 풀 리퀘스트가 [차단 목록](#what-the-classifier-blocks-by-default)에 해당하지 않는 한(예: 비밀이나 민감한 데이터가 저장소를 떠나거나 다른 저장소 또는 조직을 대상으로 하는 풀 리퀘스트). 자동 모드에 머물면서 이러한 명령 전에 인간 체크포인트를 요구하려면 `permissions.ask` 규칙을 추가하세요. 이는 명령과 [작성된 대로](https://code.claude.com/docs/ko/permissions.md#bash-rule-limits) 일치합니다: [일반적인 경계](https://code.claude.com/docs/ko/auto-mode-config.md#common-boundaries)를 참조하세요.518작업 중인 저장소의 모든 브랜치로 푸시하는 작업과 요청에 부합하는 풀 리퀘스트를 생성하는 작업은, 시크릿이나 민감한 데이터가 저장소 밖으로 나가거나 풀 리퀘스트가 다른 저장소나 조직을 대상으로 하는 경우처럼 푸시나 풀 리퀘스트가 [차단 목록](#what-the-classifier-blocks-by-default)에 해당하지 않는 한 프롬프트 없이 실행됩니다. 자동 모드를 유지하면서 이러한 명령 전에 사람의 확인 단계를 요구하려면, 명령을 [작성된 그대로](https://code.claude.com/docs/ko/permissions.md#bash-rule-limits) 매칭하는 `permissions.ask` 규칙을 추가하십시오. [일반적인 경계](https://code.claude.com/docs/ko/auto-mode-config.md#common-boundaries)를 참조하십시오.

519 519 

520### 작업 디렉터리 외부의 첫 번째 읽기520### 작업 디렉터리 밖의 첫 번째 읽기

521 521 

522[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ko/settings-reference#permissions-blockreadsoutsideworkingdirectories)가 꺼져 있는 동안 [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)를 제외한 파일 읽기는 자동 모드에서 프롬프트 없이 실행되며, [작업 디렉터리](https://code.claude.com/docs/ko/permissions.md#working-directories) 외부의 읽기를 포함합니다. Claude가 처음으로 Read, Grep 또는 Glob 도구를 이들 외부의 경로에 사용할 때 Claude Code는 해당 읽기를 허용할지 묻습니다.522[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ko/settings-reference#permissions-blockreadsoutsideworkingdirectories)가 꺼져 있는 동안, 자동 모드에서는 [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)를 제외한 파일 읽기가 [작업 디렉터리](https://code.claude.com/docs/ko/permissions.md#working-directories) 밖의 읽기를 포함하여 프롬프트 없이 실행됩니다. Claude가 작업 디렉터리 밖의 경로에 처음으로 Read, Grep 또는 Glob 도구를 사용하면, Claude Code는 해당 읽기를 허용할지 묻습니다.

523 523 

524프롬프트는 비대화형 `-p` 실행이나 백그라운드 세션에 나타나지 않습니다. 거기서의 읽기는 이전과 같이 실행됩니다.524이 프롬프트는 비대화형 `-p` 실행이나 백그라운드 세션에서는 나타나지 않으며, 그곳에서는 읽기가 이전과 같이 실행됩니다.

525 525 

526답변이 무엇이든 Claude는 계속 작업합니다:526어떻게 답하든 Claude는 작업을 계속합니다.

527 527 

528* **예, 작업 디렉터리 외부의 모든 읽기를 계속 허용**: 읽기가 실행되고, 나중의 작업 디렉터리 외부의 읽기는 이전과 같이 실행되며, Claude Code는 프롬프트가 다시 나타나지 않도록 답변을 기록합니다528* **Yes, and keep allowing any reads outside the working directories**: 읽기가 실행되고, 이후 작업 디렉터리 밖의 읽기도 이전과 같이 실행되며, Claude Code는 프롬프트가 다시 나타나지 않도록 답변을 기록합니다

529* **아니요, 지금부터 작업 디렉터리 외부의 읽기 차단**: 읽기가 거부되고, Claude Code는 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ko/settings-reference#permissions-blockreadsoutsideworkingdirectories)를 사용자 설정에서 `true`로 설정하여 파일 도구가 모든 나중의 세션과 모든 권한 모드에서 이러한 읽기를 거부하도록 합니다. 나중에 Claude가 이러한 경로를 읽도록 하려면 `/add-dir`로 디렉터리를 추가하거나 설정을 제거하세요.529* **No, and block reads outside the working directories from now on**: 읽기가 거부되고, Claude Code는 사용자 설정에서 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ko/settings-reference#permissions-blockreadsoutsideworkingdirectories)를 `true`로 설정합니다. 이렇게 하면 이후의 모든 세션과 모든 권한 모드에서 파일 도구가 이러한 읽기를 거부합니다. 나중에 Claude가 그러한 경로를 읽을 수 있게 하려면 `/add-dir`로 해당 디렉터리를 추가하거나 설정을 제거하십시오.

530* **아니요, 다음에 다시 묻기**: 읽기가 거부되고, 작업 디렉터리 외부의 다음 읽기는 다시 확인을 요청합니다530* **No, and ask again next time**: 읽기가 거부되고, 다음에 작업 디렉터리 밖을 읽을 때 다시 프롬프트가 표시됩니다

531* **예, 하지만 다음에 다시 묻기**: 읽기가 실행되고, 아무것도 저장되지 않으며, 작업 디렉터리 외부의 다음 읽기는 다시 확인을 요청합니다531* **Yes, but ask again next time**: 읽기가 실행되고, 아무것도 저장되지 않으며, 다음에 작업 디렉터리 밖을 읽을 때 다시 프롬프트가 표시됩니다

532 532 

533### 대화에서 명시한 경계533### 대화에서 명시한 경계

534 534 

535분류기는 대화에서 명시한 경계를 차단 신호로 취급합니다. "푸시하지 마" 또는 "배포하기 전에 검토할 때까지 기다려"라고 Claude에 말하면 분류기는 기본 규칙이 허용하더라도 일치하는 작업을 차단합니다. 경계는 나중의 메시지에서 이를 해제할 때까지 유효합니다. 조건이 충족되었다는 Claude의 자체 판단으로는 이를 해제할 수 없습니다.535분류기는 대화에서 사용자가 명시한 경계를 차단 신호로 취급합니다. Claude에게 "푸시하지 마" 또는 "배포 전에 내가 검토할 때까지 기다려"라고 말하면, 기본 규칙이 허용하는 경우에도 분류기는 해당하는 작업을 차단합니다. 경계는 이후 메시지에서 사용자가 해제할 때까지 유효합니다. 조건이 충족되었다는 Claude 자신의 판단으로는 해제되지 않습니다.

536 536 

537경계는 규칙으로 저장되지 않습니다. 분류기는 각 검사에서 트랜스크립트에서 이를 다시 읽으므로 [컨텍스트 압축](https://code.claude.com/docs/ko/costs.md#reduce-token-usage)이 경계를 명시한 메시지를 제거하면 경계가 손실될 수 있습니다. 하드 보장을 위해 [거부 규칙](https://code.claude.com/docs/ko/permissions.md#permission-rule-syntax)을 대신 추가하세요.537경계는 규칙으로 저장되지 않습니다. 분류기는 확인할 때마다 트랜스크립트에서 경계를 다시 읽으므로, [컨텍스트 압축](https://code.claude.com/docs/ko/costs.md#reduce-token-usage)으로 경계를 명시한 메시지가 제거되면 경계가 사라질 수 있습니다. 확실한 보장이 필요하다면 대신 [deny 규칙](https://code.claude.com/docs/ko/permissions.md#permission-rule-syntax)을 추가하십시오.

538 538 

539### 대화에서 명시한 승인539### 대화에서 명시한 승인

540 540 

541차단된 작업이 허용된다고 Claude에 말하면 분류기는 이를 승인으로 읽고 블록을 지울 수 있습니다. 이를 표현한 방식이 작업이 실행되는지, 그리고 승인이 얼마나 멀리 도달하는지를 결정합니다:541차단된 작업이 허용된다고 Claude에게 말하면, 분류기는 이를 사용자의 승인으로 읽고 차단을 해제할 수 있습니다. 어떻게 표현했는지에 따라 작업의 실행 여부와 승인의 적용 범위가 결정됩니다.

542 542 

543* **작업과 그 세부 정보를 이름 지정**: 메시지는 작업과 이를 위험하게 만드는 구체적인 것(예: 강제 푸시의 브랜치)을 이름 지정해야 합니다. 동사만 이름 지정하는 것은 아무것도 지우지 않으므로 "강제 푸시할 수 있습니다"는 블록을 그대로 둡니다.543* **작업과 그 세부 사항을 명시하십시오**: 메시지에서 작업과 그 작업을 위험하게 만드는 구체적인 대상, 예를 들어 강제 푸시의 브랜치를 명시해야 합니다. 동사만 언급해서는 아무것도 해제되지 않으므로, "강제 푸시해도 돼"라고 하면 차단이 그대로 유지됩니다.

544* **한 작업을 다루도록 예상**: 승인은 이름 지정한 파괴적 작업을 다루므로, 승인을 지속적인 것으로 부여하지 않았다면 나중의 작업은 다시 차단됩니다. 일상적인 패턴을 한 번에 하나씩 승인하는 것을 중지하려면 [`autoMode.allow`](https://code.claude.com/docs/ko/auto-mode-config#override-the-block-and-allow-rules)에 추가하세요.544* **하나의 작업에만 적용된다고 생각하십시오**: 승인은 사용자가 명시한 파괴적 작업에만 적용되므로, 승인을 지속적인 것으로 부여하지 않은 한 이후 작업은 다시 차단됩니다. 일상적인 패턴을 작업마다 하나씩 승인하지 않으려면 [`autoMode.allow`](https://code.claude.com/docs/ko/auto-mode-config#override-the-block-and-allow-rules)에 추가하십시오.

545* **일부 블록은 그대로 남음**: [분류기의 우선순위 순서](https://code.claude.com/docs/ko/auto-mode-config.md#override-the-block-and-allow-rules)는 승인이 도달할 수 있는 블록을 설정합니다. 이를 지우지 않을 단계를 실행하려면 [자동 모드를 떠나](#switch-permission-modes) 권한 프롬프트에 답하세요.545* **일부 차단은 유지됩니다**: 승인으로 해제할 수 있는 차단은 [분류기의 우선순위](https://code.claude.com/docs/ko/auto-mode-config.md#override-the-block-and-allow-rules)에 정해져 있습니다. 승인으로 해제되지 않는 단계를 실행하려면 [자동 모드를 벗어나](#switch-permission-modes) 권한 프롬프트에 답하십시오.

546 546 

547### 자동 모드가 폴백할 때547### 자동 모드가 폴백하는 경우

548 548 

549자동 모드가 세션의 작업을 승인할 수 없을 때 발생하는 일은 경우에 따라 다릅니다:549자동 모드가 세션의 작업을 승인할 수 없을 때 일어나는 일은 경우에 따라 다릅니다.

550 550 

551* **차단된 작업**: Claude Code는 알림을 표시하고 `/permissions` 아래의 **최근 거부됨** 탭에 작업을 나열하며, 여기서 `r`을 눌러 수동 승인으로 다시 시도할 수 있습니다.551* **차단된 작업**: Claude Code는 알림을 표시하고 `/permissions`의 **Recently denied** 탭에 해당 작업을 나열합니다. 여기서 `r`을 눌러 수동 승인으로 재시도할 수 있습니다.

552* **반복된 블록**: 분류기가 작업을 연속 3회 또는 총 20회 차단하면 자동 모드가 일시 중지되고 Claude Code는 프롬프트를 다시 시작합니다. 프롬프트된 작업을 승인하면 자동 모드가 재개됩니다. [반복된 블록 임계값](#repeated-block-thresholds)을 참조하여 블록이 어떻게 계산되는지 확인하세요.552* **반복된 차단**: 분류기가 작업을 연속 3회 또는 총 20회 차단하면 자동 모드가 일시 중지되고 Claude Code가 다시 확인을 요청합니다. 확인 요청된 작업을 승인하면 자동 모드가 재개됩니다. 차단 횟수를 세는 방법은 [반복 차단 임계값](#repeated-block-thresholds)을 참조하십시오.

553* **분류기의 판정 없음**: 자동 모드와 별개인 안전 검사가 분류기의 자체 요청을 거부하거나 분류기의 응답이 구문 분석되지 않을 때 Claude Code는 알림이나 **최근 거부됨** 항목 없이 작업을 거부합니다. [자동 모드가 작업의 안전성을 결정할 수 없음](https://code.claude.com/docs/ko/errors.md#auto-mode-cannot-determine-the-safety-of-an-action)을 참조하여 각 경우가 표시하는 메시지와 수행할 작업을 확인하세요.553* **분류기의 판정 없음**: 자동 모드와는 별개인 안전 확인이 분류기 자체의 요청을 거부하거나 분류기의 응답을 파싱할 수 없으면, Claude Code는 알림이나 **Recently denied** 항목 없이 작업을 거부합니다. 각 경우에 표시되는 메시지와 해결 방법은 [Auto mode cannot determine the safety of an action](https://code.claude.com/docs/ko/errors.md#auto-mode-cannot-determine-the-safety-of-an-action)을 참조하십시오.

554* **서버의 판정 없음**: [서버 측 분류기 검토](#server-side-classifier-review)에서 Claude Code는 서버가 판정을 제공하지 않는 작업을 거부하고, 연속 10개 응답 후 판정이 없으면 턴을 중지합니다. [서버가 안전 판정을 반환하지 않음](https://code.claude.com/docs/ko/errors.md#the-server-returned-no-safety-verdict)을 참조하세요.554* **서버의 판정 없음**: [서버 측 분류기 검토](#server-side-classifier-review)에서 Claude Code는 서버가 판정을 내리지 않은 작업을 거부하고, 판정 없는 응답이 연속 10회 이어지면 턴을 중단합니다. [The server returned no safety verdict](https://code.claude.com/docs/ko/errors.md#the-server-returned-no-safety-verdict)를 참조하십시오.

555* **검사 중 모드 전환**: 분류기 검사가 보류 중일 때 권한 모드를 전환하면 Claude Code는 새 모드가 요청하지 않을 판정을 삭제합니다. 대신 승인을 위해 프롬프트되거나 [`dontAsk` 모드](#allow-only-pre-approved-tools-with-dontask-mode)에서 작업이 자동 거부됩니다.555* **확인 중 모드 전환**: 분류기 확인이 대기 중일 때 권한 모드를 전환하면, Claude Code는 새 모드에서는 요청하지 않았을 판정을 폐기합니다. 대신 승인 요청을 받거나, [`dontAsk` 모드](#allow-only-pre-approved-tools-with-dontask-mode)에서는 작업이 자동으로 거부됩니다.

556 556 

557#### 반복된 블록 임계값557#### 반복 차단 임계값

558 558 

559연속 3개 블록 및 총 20개 블록의 임계값은 구성할 수 없습니다. 총 카운터는 세션에 대해 유지되고 자체 한계가 폴백을 트리거할 때만 재설정됩니다. Claude Code는 자동 모드와 별개인 안전 검사가 분류기의 자체 요청을 거부할 때 거부를 어느 임계값에도 계산하지 않습니다.559연속 3회 차단과 총 20회 차단이라는 임계값은 구성할 수 없습니다. 총 카운터는 세션 동안 유지되며, 자체 한도로 인해 폴백이 발생할 때만 초기화됩니다. 자동 모드와는 별개인 안전 확인이 분류기 자체의 요청을 거부한 경우, Claude Code는 해당 거부를 어느 임계값에도 포함하지 않습니다.

560 560 

561[비대화형](https://code.claude.com/docs/ko/headless.md) `-p` 실행이 [`--permission-prompt-tool`](https://code.claude.com/docs/ko/cli-reference#cli-flags)이 없으면 폴백할 프롬프트가 없습니다. 반복된 블록이 임계값에 도달하면 작업이 실행되지 않고 Claude는 계속 작업합니다. Claude Code는 실행을 중지하지 않습니다.561[`--permission-prompt-tool`](https://code.claude.com/docs/ko/cli-reference#cli-flags) 없는 [비대화형](https://code.claude.com/docs/ko/headless.md) `-p` 실행에는 폴백할 프롬프트가 없습니다. 반복된 차단이 임계값에 도달하면 해당 작업은 실행되지 않고 Claude는 작업을 계속합니다. Claude Code는 실행을 중단하지 않습니다.

562 562 

563반복된 블록은 일반적으로 분류기가 인프라에 대한 컨텍스트를 놓치고 있음을 의미합니다. `/feedback`을 사용하여 거짓 양성을 보고하거나 관리자가 [신뢰할 수 있는 인프라를 구성](https://code.claude.com/docs/ko/auto-mode-config.md)하도록 하세요.563반복된 차단은 대개 분류기에 인프라에 대한 컨텍스트가 부족하다는 의미입니다. `/feedback`을 사용하여 오탐을 보고하거나, 관리자에게 [신뢰할 수 있는 인프라를 구성](https://code.claude.com/docs/ko/auto-mode-config.md)하도록 요청하십시오.

564 564 

565### 자동 모드가 작업을 평가하는 방법565### 자동 모드가 작업을 평가하는 방식

566 566 

567다음 섹션은 Claude Code가 작업을 평가하는 순서, 분류기가 서브에이전트 작업을 검토하는 방법, 그리고 분류기 호출이 비용 및 지연 시간에 추가하는 것을 다룹니다.567다음 섹션에서는 Claude Code가 작업을 평가하는 순서, 분류기가 서브에이전트 작업을 검토하는 방식, 분류기 호출로 추가되는 비용과 지연 시간을 다룹니다.

568 568 

569> **분류기가 작업을 평가하는 방법**569> **분류기가 작업을 평가하는 방식**

570>570>

571> 각 작업은 고정된 결정 순서를 거칩니다. 첫 번째 일치하는 단계가 승리합니다:571> 각 작업은 고정된 결정 순서를 거칩니다. 처음으로 일치하는 단계가 적용됩니다.

572>572>

573> 1. [allow, ask 또는 deny 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)과 일치하는 작업은 즉시 처리되며, 다음은 예외입니다:573> 1. [allow, ask 또는 deny 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)과 일치하는 작업은 즉시 처리되며, 다음과 같은 예외가 있습니다.

574> * [보호된 경로](#protected-paths)에 대한 쓰기는 allow 규칙이 일치하더라도 분류기로 전달됩니다. 보호된 경로가 심볼릭 링크된 설정 파일이 가리키는 파일인 경우, [보호된 경로](#protected-paths) 목록에서 설명하는 대로 쓰기가 대신 확인을 요청할 수 있습니다574> * [보호된 경로](#protected-paths)에 대한 쓰기는 allow 규칙과 일치하더라도 분류기로 전달됩니다. 보호된 경로가 심볼릭 링크된 설정 파일이 가리키는 파일인 경우, [보호된 경로](#protected-paths) 목록에 설명된 대로 대신 확인을 요청할 수 있습니다

575> * 어떤 allow 규칙도 [중요 경로](#critical-paths)를 대상으로 하는 것으로 인식된 `rm` 및 `rmdir` 제거를 승인하지 않습니다575> * 어떤 allow 규칙도 인식된 `rm` 및 `rmdir` [중요 경로 삭제](#critical-paths)를 승인하지 않습니다

576> * [`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구는 allow 규칙이 일치하더라도 직접 확인을 요청하며, 해당 설정이 Claude Code에 도달하는 세션에서는 [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구도 마찬가지입니다576> * [`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구는 allow 규칙과 일치하더라도 직접 확인을 요청하며, 해당 설정이 Claude Code에 적용되는 세션에서 [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구도 마찬가지입니다

577> * [명령별 허용 도메인](https://code.claude.com/docs/ko/sandboxing.md#per-command-allowed-domains-in-auto-mode)을 포함하는 셸 명령도 allow 규칙이 일치하더라도 분류기로 전달됩니다. 규칙은 명령을 승인할 뿐 호스트를 승인하지 않기 때문입니다577> * [명령별 허용 도메인](https://code.claude.com/docs/ko/sandboxing.md#per-command-allowed-domains-in-auto-mode)을 포함하는 셸 명령도 allow 규칙과 일치하더라도 분류기로 전달됩니다. 규칙은 명령을 승인할 뿐 그 호스트를 승인하지 않기 때문입니다

578> * `Bash(git push *)`처럼 명령 내용과 일치하는 ask 규칙은 권한 프롬프트로 폴백합니다578> * `Bash(git push *)`처럼 명령의 내용과 매칭되는 ask 규칙은 권한 프롬프트로 폴백합니다

579> * [심볼릭 링크 검사](https://code.claude.com/docs/ko/permissions.md#symlinks)로 보호된 경로로 확인되는 쓰기는, Claude가 요청한 경로 자체가 보호되지 않은 경우 확인을 요청합니다579> * [심볼릭 링크 확인](https://code.claude.com/docs/ko/permissions.md#symlinks)에서 보호된 경로로 확인되는 쓰기는, Claude가 요청한 경로 자체가 보호되지 않은 경우 확인을 요청합니다

580> * [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기는 allow 규칙이 일치하더라도 확인을 요청합니다580> * [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기는 allow 규칙과 일치하더라도 확인을 요청합니다

581> 2. 읽기 전용 작업과 작업 디렉터리의 파일 편집은 자동 승인됩니다. 단, [보호된 경로](#protected-paths)에 대한 쓰기와 확인을 요청하는 [작업 디렉터리 외부의 첫 번째 읽기](#first-read-outside-the-working-directories)는 예외입니다581> 2. 작업 디렉터리 내의 읽기 전용 작업과 파일 편집은 자동 승인됩니다. 단, [보호된 경로](#protected-paths)에 대한 쓰기와 확인을 요청하는 [작업 디렉터리 밖의 첫 번째 읽기](#first-read-outside-the-working-directories)는 예외입니다

582> * [서버 측 분류기 검토](#server-side-classifier-review)가 적용되는 세션에서는 읽기 전용 및 [샌드박스된](https://code.claude.com/docs/ko/sandboxing.md#sandbox-modes) 셸 명령이 해당 검토를 기다리며, 검토에서 문제가 지적되면 차단됩니다582> * [서버 측 분류기 검토](#server-side-classifier-review)가 적용되는 세션에서는 읽기 전용 셸 명령과 [샌드박스 처리된](https://code.claude.com/docs/ko/sandboxing.md#sandbox-modes) 셸 명령이 해당 검토를 기다리며, 검토에서 문제가 지적되면 차단됩니다

583> * 작업 디렉터리 내부의 쓰기가 [심볼릭 링크 검사](https://code.claude.com/docs/ko/permissions.md#symlinks)로 외부 위치로 확인되면 확인을 요청합니다583> * [심볼릭 링크 확인](https://code.claude.com/docs/ko/permissions.md#symlinks)에서 작업 디렉터리 밖의 위치로 확인되는 작업 디렉터리 내 쓰기는 확인을 요청합니다

584> * Claude가 [다른 사람이 만든 아티팩트](https://code.claude.com/docs/ko/artifacts.md#read-an-artifact-shared-with-you)를 읽을 때는 해당 섹션에 나열된 승인 사례가 적용됩니다584> * Claude가 [다른 사람이 만든 아티팩트](https://code.claude.com/docs/ko/artifacts.md#read-an-artifact-shared-with-you)를 읽는 경우, 해당 섹션에 나열된 승인 사례가 적용됩니다

585> * [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기는 확인을 요청합니다585> * [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기는 확인을 요청합니다

586> 3. 기본 처리 방식이 적용되는 [중요 경로 제거](#critical-paths)를 제외한 그 밖의 모든 것은 분류기로 전달됩니다. 1단계에서 직접 확인을 요청하는 커넥터 도구와 `requiresUserInteraction` MCP 도구도 분류기에 도달하지 않으므로, 조직이 요구하는 승인이나 동의 단계는 자동 승인되지 않습니다586> 3. 기본 처리 방식이 적용되는 [중요 경로 삭제](#critical-paths)를 제외한 나머지는 모두 분류기로 전달됩니다. 1단계에서 직접 확인을 요청하는 커넥터 도구와 `requiresUserInteraction` MCP 도구도 분류기에 도달하지 않으므로, 조직이 요구한 승인이나 동의 단계는 자동 승인되지 않습니다

587> 4. 분류기가 차단하면 Claude는 그 이유를 받습니다. 대부분의 세션에서 이유는 서술형 설명이 아니라 `[Data Exfiltration]`처럼 분류기가 일치시킨 규칙의 이름으로 제공됩니다. [거부 검토](https://code.claude.com/docs/ko/auto-mode-config.md#review-denials)를 참조하세요587> 4. 분류기가 차단하면 Claude는 그 이유를 받습니다. 대부분의 세션에서 이유는 서술된 설명 대신 `[Data Exfiltration]`처럼 분류기가 매칭한 규칙의 이름입니다. [거부 검토](https://code.claude.com/docs/ko/auto-mode-config.md#review-denials)를 참조하십시오

588>588>

589> `tool.check`를 처리하는 설치된 [mod](https://code.claude.com/docs/ko/plugins/mods/overview.md)도 작업을 승인할 수 있습니다. mod의 승인이 규칙과 훅을 통과하지 못하는 경우는 [훅으로 권한 확장](https://code.claude.com/docs/ko/permissions.md#precedence-among-rules-hooks-and-mods)을 참조하세요.589> `tool.check`를 처리하는 설치된 [mod](https://code.claude.com/docs/ko/plugins/mods/overview.md)도 작업을 승인할 수 있습니다. 해당 승인이 규칙과 훅을 통과하지 못하는 경우는 [훅으로 권한 확장](https://code.claude.com/docs/ko/permissions.md#precedence-among-rules-hooks-and-mods)을 참조하십시오.

590>590>

591> VS Code 확장에서 [Chrome의 Claude](https://code.claude.com/docs/ko/chrome.md) 브라우저 작업이 승인되는 방식은 [VS Code 세션의 권한 프롬프트](https://code.claude.com/docs/ko/chrome.md#permission-prompts-in-vs-code-sessions)를 참조하세요.591> VS Code 확장 프로그램에서 [Claude in Chrome](https://code.claude.com/docs/ko/chrome.md) 브라우저 작업이 승인되는 방식은 [VS Code 세션의 권한 프롬프트](https://code.claude.com/docs/ko/chrome.md#permission-prompts-in-vs-code-sessions)를 참조하십시오.

592>592>

593> 자동 모드에 들어가면 임의의 코드 실행을 부여하는 광범위한 허용 규칙이 삭제됩니다:593> 자동 모드에 진입하면 임의의 코드 실행을 허용하는 광범위한 allow 규칙이 제외됩니다.

594>594>

595> * 무조건 `Bash(*)` 또는 `PowerShell(*)`595> * 전면적인 `Bash(*)` 또는 `PowerShell(*)`

596> * `Bash(python*)`과 같은 와일드카드 인터프리터596> * `Bash(python*)` 같은 와일드카드 인터프리터

597> * 패키지 관리자 실행 명령597> * 패키지 매니저 실행 명령

598> * `Agent` 허용 규칙598> * `Agent` allow 규칙

599> * [`Monitor`](https://code.claude.com/docs/ko/tools-reference#monitor-tool) 허용 규칙(Claude Code는 Monitor 명령을 셸을 통해 실행하기 때문)599> * [`Monitor`](https://code.claude.com/docs/ko/tools-reference#monitor-tool) allow 규칙. Claude Code는 Monitor 명령을 셸을 통해 실행하기 때문입니다

600>600>

601> `Bash(npm test)`와 같은 좁은 규칙은 유효합니다. Claude Code는 자동 모드를 떠날 때 삭제된 규칙을 복원합니다. v2.1.236 이전에는 Claude Code가 자동 모드에서 `Monitor` 허용 규칙을 유효하게 두었으므로 전체 도구와 일치하는 규칙이 분류기 검토 없이 Monitor 명령을 승인했습니다.601> `Bash(npm test)` 같은 좁은 규칙은 그대로 유효합니다. 자동 모드를 벗어나면 Claude Code가 제외된 규칙을 복원합니다. v2.1.236 이전에는 Claude Code가 자동 모드에서 `Monitor` allow 규칙을 유효하게 유지했으므로, 도구 전체와 일치하는 규칙이 분류기 검토 없이 Monitor 명령을 승인했습니다.

602>602>

603> Claude Code는 또한 `git reset --hard` 또는 `rm -rf`와 같이 커밋되지 않은 작업을 삭제할 명령 전에 `git status`를 자체적으로 실행하고 분류기에 스테이징, 수정 또는 추적되지 않은 작업이 있는지 표시합니다. Claude Code는 저장소의 git 구성이 `status.showUntrackedFiles=no`를 설정할 때도 해당 검사에서 추적되지 않은 파일을 보고합니다.603> Claude Code는 또한 `git reset --hard`나 `rm -rf`처럼 커밋되지 않은 작업을 버릴 수 있는 명령 전에 직접 `git status`를 실행하여, 스테이징된 작업, 수정된 작업 또는 추적되지 않은 작업이 있는지를 분류기에 보여 줍니다. Claude Code는 저장소의 git 구성에서 `status.showUntrackedFiles=no`를 설정한 경우에도 해당 확인에서 추적되지 않은 파일을 보고합니다.

604>604>

605> Claude Code 자체가 보낸 분류기 요청에서 분류기는 사용자 메시지, 파일 읽기 및 검색과 같은 읽기 전용 조회 이외의 도구 호출, 그리고 CLAUDE.md 콘텐츠를 봅니다. 도구 결과는 이러한 요청에서 제거되므로 파일이나 웹 페이지의 악의적인 콘텐츠는 분류기를 직접 조작할 수 없습니다.605> Claude Code 자체가 보내는 분류기 요청에서 분류기는 사용자 메시지, 파일 읽기 및 검색 같은 읽기 전용 조회를 제외한 도구 호출, 그리고 CLAUDE.md 내용을 봅니다. 이러한 요청에서는 도구 결과가 제거되므로, 파일이나 웹 페이지의 악의적인 콘텐츠가 분류기를 직접 조작할 수 없습니다.

606>606>

607> [PostToolUse 훅의 `classifierContext` 필드](https://code.claude.com/docs/ko/hooks#annotate-a-result-for-the-auto-mode-classifier)로 호출의 결과에 주석을 달 수 있으며, 분류기는 이를 애플리케이션 제공 컨텍스트로 읽습니다. 필드에는 Claude Code v2.1.236 이상이 필요합니다.607> [PostToolUse 훅의 `classifierContext` 필드](https://code.claude.com/docs/ko/hooks#annotate-a-result-for-the-auto-mode-classifier)로 호출 결과에 주석을 달 수 있으며, 분류기는 이를 애플리케이션이 제공한 컨텍스트로 읽습니다. 이 필드에는 Claude Code v2.1.236 이상이 필요합니다.

608>608>

609> 별도의 서버 측 프로브는 들어오는 도구 결과를 스캔하고 Claude가 읽기 전에 의심스러운 콘텐츠에 플래그를 지정합니다. 이러한 계층이 함께 작동하는 방식에 대한 자세한 내용은 [자동 모드 공지](https://claude.com/blog/auto-mode) 및 [엔지니어링 심층 분석](https://www.anthropic.com/engineering/claude-code-auto-mode)을 참조하세요.609> 별도의 서버 측 프로브가 들어오는 도구 결과를 검사하여 Claude가 읽기 전에 의심스러운 콘텐츠를 표시합니다. 이러한 계층이 함께 작동하는 방식에 대한 자세한 내용은 [자동 모드 발표](https://claude.com/blog/auto-mode)와 [엔지니어링 심층 분석](https://www.anthropic.com/engineering/claude-code-auto-mode)을 참조하십시오.

610 610 

611> **자동 모드가 서브에이전트를 처리하는 방법**611> **자동 모드가 서브에이전트를 처리하는 방식**

612>612>

613> 분류기는 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md) 작업을 세 지점에서 검사합니다:613> 분류기는 세 시점에서 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md) 작업을 확인합니다.

614>614>

615> 1. 서브에이전트가 시작되기 전에 위임된 작업 설명이 평가되므로, 위험해 보이는 작업은 생성 시점에 차단됩니다.615> 1. 서브에이전트가 시작되기 전에 위임된 작업 설명이 평가되므로, 위험해 보이는 작업은 생성 시점에 차단됩니다.

616> 2. 서브에이전트가 실행되는 동안 각 작업은 상위 세션과 동일한 차단 및 허용 규칙으로 동일한 [결정 순서](#how-the-classifier-evaluates-actions)를 거칩니다. 서브에이전트 frontmatter의 `permissionMode`는 무시됩니다.616> 2. 서브에이전트가 실행되는 동안 각 작업은 부모 세션과 동일한 [결정 순서](#how-the-classifier-evaluates-actions)를 동일한 차단 및 허용 규칙으로 거칩니다. 서브에이전트의 frontmatter에 있는 `permissionMode`는 무시됩니다.

617> 3. 서브에이전트가 완료되면 분류기는 상위 세션이 보고서를 읽기 전에 서브에이전트의 작업과 최종 보고서를 검토합니다. 분류기가 서브에이전트의 작업이나 보고서에 문제를 지적하거나 별도의 API 안전 검사가 검토를 거부하는 경우에도 보고서는 전달되며, 앞에 보안 경고가 추가됩니다. 검토 시 분류기를 사용할 수 없으면, 보고서에는 조치하기 전에 서브에이전트의 작업을 확인하라는 메모가 함께 전달됩니다.617> 3. 서브에이전트가 완료되면, 부모가 보고서를 읽기 전에 분류기가 서브에이전트의 작업과 최종 보고서를 검토합니다. 분류기가 서브에이전트의 작업이나 보고서에서 문제를 지적하거나 별도의 API 안전 확인이 검토를 거부하는 경우에도 보고서는 전달되지만, 앞부분에 보안 경고가 추가됩니다. 검토에 분류기를 사용할 수 없는 경우, 보고서에는 이를 바탕으로 조치하기 전에 서브에이전트의 작업을 확인하라는 메모가 함께 전달됩니다.

618 618 

619> **비용 및 지연 시간**619> **비용 및 지연 시간**

620>620>

621> Claude Code의 분류기 요청은 `/model` 선택과 다른 모델에서 실행될 수 있습니다. [어떤 모델에서 실행되는지](#default-classifier-model) 참조하세요.621> Claude Code의 분류기 요청은 `/model`에서 선택한 모델이 아닌 다른 모델에서 실행될 수 있습니다. [어떤 모델에서 실행되는지](#default-classifier-model)를 참조하십시오.

622>622>

623> Enterprise 플랜 및 Claude API를 사용하는 계정, [AWS의 Claude Platform](https://code.claude.com/docs/ko/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry에서 분류기 호출은 토큰 사용량에 계산됩니다. 각 검사는 트랜스크립트의 일부와 보류 중인 작업을 보내며 실행 전에 왕복을 추가합니다. 읽기 및 보호된 경로 외부의 작업 디렉터리 편집은 분류기를 건너뛰므로 오버헤드는 주로 셸 명령 및 네트워크 작업에서 나옵니다. 서버가 세션의 모델 요청의 일부로 작업을 검토하는 경우 계산할 별도의 분류기 호출이 없습니다. [서버 측 분류기 검토](#server-side-classifier-review)를 참조하세요.623> Enterprise 플랜과 Claude API, [Claude Platform on AWS](https://code.claude.com/docs/ko/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry를 사용하는 계정에서는 분류기 호출이 토큰 사용량에 포함됩니다. 각 확인은 트랜스크립트의 일부와 대기 중인 작업을 전송하므로 실행 전에 왕복 과정이 추가됩니다. 보호된 경로 밖의 읽기와 작업 디렉터리 편집은 분류기를 건너뛰므로, 오버헤드는 주로 셸 명령과 네트워크 작업에서 발생합니다. 서버가 세션의 모델 요청의 일부로 작업을 검토하는 경우에는 집계할 별도의 분류기 호출이 없습니다. [서버 측 분류기 검토](#server-side-classifier-review)를 참조하십시오.

624>624>

625> 샌드박스된 네트워크 액세스는 연결별 분류기 요청을 추가하지 않습니다. 분류기는 [명령이 이름 지정하는 호스트](https://code.claude.com/docs/ko/sandboxing.md#per-command-allowed-domains-in-auto-mode)를 한 번의 검토에서 명령과 함께 판단하고, Claude Code는 분류기를 다시 호출하지 않고 승인된 목록에 대해 각 연결을 검사합니다.625> 샌드박스 처리된 네트워크 접근은 연결마다 분류기 요청을 추가하지 않습니다. 분류기는 [명령이 명시한 호스트](https://code.claude.com/docs/ko/sandboxing.md#per-command-allowed-domains-in-auto-mode)를 명령과 함께 한 번의 검토로 판단하며, Claude Code는 분류기를 다시 호출하지 않고 승인된 목록에 따라 각 연결을 확인합니다.

626 626 

627## dontAsk 모드로 사전 승인된 도구만 허용627## dontAsk 모드로 사전 승인된 도구만 허용

628 628 

Details

4 4 

5# Anthropic의 마켓플레이스5# Anthropic의 마켓플레이스

6 6 

7> Claude Code를 위한 Anthropic의 공식, 커뮤니티, 데모 플러그인 마켓플레이스: 이름, 저장소, 각각을 추가하는 방법, 플러그인을 찾아보는 위치.7> Claude Code를 위한 Anthropic의 공식 및 커뮤니티 플러그인 마켓플레이스: 이름, 저장소, 각각을 추가하는 방법, 플러그인을 찾아보는 위치.

8 8 

9Anthropic은 Claude Code를 위한 세 가지 범용 플러그인 마켓플레이스를 발행합니다: [공식](https://github.com/anthropics/claude-plugins-official), [커뮤니티](https://github.com/anthropics/claude-plugins-community), [데모](https://github.com/anthropics/claude-code). 각각은 자신의 GitHub 저장소에 있는 플러그인 카탈로그입니다. Claude Code 세션에서 이 중 하나에서 플러그인을 설치할 때, `/plugin install commit-commands@claude-plugins-official`처럼 `@` 뒤에 마켓플레이스 이름을 입력합니다.9Anthropic은 Claude Code를 위한 두 가지 범용 플러그인 마켓플레이스를 발행합니다: [공식](https://github.com/anthropics/claude-plugins-official), [커뮤니티](https://github.com/anthropics/claude-plugins-community). 각각은 자신의 GitHub 저장소에 있는 플러그인 카탈로그입니다. Claude Code 세션에서 이 중 하나에서 플러그인을 설치할 때, `/plugin install commit-commands@claude-plugins-official`처럼 `@` 뒤에 마켓플레이스 이름을 입력합니다.

10 10 

11이 페이지를 사용하여 세 가지 마켓플레이스를 구분하고 공식 마켓플레이스에 특정 플러그인이 있는지 확인할 수 있는 위치를 찾습니다.11이 페이지를 사용하여 두 가지 마켓플레이스를 구분하고 공식 마켓플레이스에 특정 플러그인이 있는지 확인할 수 있는 위치를 찾습니다.

12 12 

13> [!NOTE]13> [!NOTE]

14>14>


19 19 

20필요한 페이지 부분으로 이동합니다:20필요한 페이지 부분으로 이동합니다:

21 21 

22* 저장소, 마켓플레이스 이름, 각각을 얻는 방법으로 세 가지 마켓플레이스를 구분하려면 [Anthropic의 마켓플레이스](#anthropic%E2%80%99s-marketplaces)를 참조합니다.22* 저장소, 마켓플레이스 이름, 각각을 얻는 방법으로 두 가지 마켓플레이스를 구분하려면 [Anthropic의 마켓플레이스](#anthropic’s-marketplaces)를 참조합니다.

23* 공식 마켓플레이스에서 플러그인을 찾으려면 [공식 마켓플레이스에서 플러그인 찾기](#find-plugins-in-the-official-marketplace)를 참조합니다.23* 공식 마켓플레이스에서 플러그인을 찾으려면 [공식 마켓플레이스에서 플러그인 찾기](#find-plugins-in-the-official-marketplace)를 참조합니다.

24 24 

25## Anthropic의 마켓플레이스25## Anthropic의 마켓플레이스

26 26 

27마켓플레이스는 저장소가 `.claude-plugin/marketplace.json` 파일에 정의하는 플러그인 카탈로그입니다. 공식, 커뮤니티, 데모 마켓플레이스는 각각 자신의 GitHub 저장소에서 제공됩니다. Anthropic은 또한 `anthropics/skills` 및 `anthropics/knowledge-work-plugins`와 같은 주제별 마켓플레이스를 발행하며, Claude Code 세션에서 `/plugin marketplace add <owner>/<repo>`로 추가합니다.27마켓플레이스는 저장소가 `.claude-plugin/marketplace.json` 파일에 정의하는 플러그인 카탈로그입니다. 공식 마켓플레이스와 커뮤니티 마켓플레이스는 각각 별도의 GitHub 저장소에서 제공됩니다. Anthropic은 `anthropics/skills` 및 `anthropics/knowledge-work-plugins`와 같은 주제별 마켓플레이스도 게시하며, 이러한 마켓플레이스는 Claude Code 세션에서 `/plugin marketplace add <owner>/<repo>`로 추가합니다.

28 28 

29이 표는 각 마켓플레이스의 저장소와 마켓플레이스 이름을 제공하며, 이는 해당 마켓플레이스에서 플러그인을 설치할 때 `@` 뒤에 입력하는 것입니다. 커뮤니티 마켓플레이스의 이름은 저장소 이름이 아닌 `claude-community`입니다.29다음 표는 각 마켓플레이스의 저장소와 마켓플레이스 이름을 보여 줍니다. 마켓플레이스 이름은 해당 마켓플레이스에서 플러그인을 설치할 때 `@` 뒤에 입력하는 값입니다. 커뮤니티 마켓플레이스의 이름은 저장소 이름이 아니라 `claude-community`입니다.

30 30 

31| | 공식 | 커뮤니티 | 데모 |31| | 공식 | 커뮤니티 |

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

33| 저장소 | [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official) | [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) | [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/plugins) |33| 저장소 | [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official) | [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) |

34| 마켓플레이스 이름 | `claude-plugins-official` | `claude-community` | `claude-code-plugins` |34| 마켓플레이스 이름 | `claude-plugins-official` | `claude-community` |

35| 포함 내용 | Anthropic이 유지 관리하는 플러그인, 파트너 및 기타 작성자의 플러그인 | 작성자가 Anthropic에 제출한 타사 플러그인 | 플러그인이 포함할 수 있는 것을 보여주는 작은 예제 플러그인 세트 |35| 포함된 내용 | Anthropic이 관리하는 플러그인과 파트너 및 기타 작성자의 플러그인 | 작성자가 Anthropic에 제출한 서드파티 플러그인 |

36| 얻는 방법 | Claude Code는 [관리 정책](https://code.claude.com/docs/ko/plugins/org.md#allow-the-official-marketplace-and-your-own)이나 `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`이 차단하지 않는 한 대화형 터미널 세션을 처음 시작할 때 추가합니다. 누락된 경우 [마켓플레이스 `claude-plugins-official` 찾을 수 없음](https://code.claude.com/docs/ko/plugins/troubleshooting#marketplace-claude-plugins-official-not-found) 참조 | Claude Code 세션에서 `/plugin marketplace add anthropics/claude-plugins-community`로 추가합니다 | Claude Code 세션에서 `/plugin marketplace add anthropics/claude-code`로 추가합니다 |36| 추가 방법 | [관리형 정책](https://code.claude.com/docs/ko/plugins/org.md#allow-the-official-marketplace-and-your-own) 또는 `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`이 차단하지 않는 한, 대화형 터미널 세션을 처음 시작할 때 Claude Code가 자동으로 추가합니다. 누락된 경우 [Marketplace `claude-plugins-official` not found](https://code.claude.com/docs/ko/plugins/troubleshooting#marketplace-claude-plugins-official-not-found)를 참조하십시오 | Claude Code 세션에서 `/plugin marketplace add anthropics/claude-plugins-community`로 추가합니다 |

37 37 

38플러그인을 작성했고 다른 사람들이 설치하도록 하려면 [플러그인 발행](https://code.claude.com/docs/ko/plugins/publish.md)을 참조하십시오. 이는 자신의 마켓플레이스와 Anthropic의 디렉토리에 제출하는 것을 다룹니다.38플러그인을 작성했고 다른 사람들이 설치할 수 있도록 하려면 자체 마켓플레이스 운영과 Anthropic 디렉터리 제출 방법을 다루는 [플러그인 게시](https://code.claude.com/docs/ko/plugins/publish.md)를 참조하십시오.

39 39 

40### `anthropics/claude-code`의 데모 마켓플레이스40### deprecated된 `claude-code-plugins` 마켓플레이스

41 41 

42튜토리얼이나 이전 지침 세트에서 `/plugin marketplace add anthropics/claude-code`를 실행하도록 말하면, 이는 `claude-code-plugins`라는 데모 마켓플레이스를 추가합니다. 이는 공식 마켓플레이스가 아닙니다.42> [!WARNING]

43>

44> `anthropics/claude-code`의 `claude-code-plugins` 마켓플레이스는 deprecated되었습니다. 플러그인을 추가하려면 셸에서 `claude plugin install <plugin>@claude-plugins-official`을 실행하고, `/plugin marketplace add anthropics/claude-code`를 실행하는 튜토리얼 단계는 건너뛰십시오.

45 

46아래 두 플러그인 중 하나를 사용하고 있는 경우가 아니라면, 기존 `claude-code-plugins` 플러그인과 마켓플레이스는 그대로 두어도 됩니다. 이들은 `claude-plugins-official` 저장소에서 업데이트됩니다.

43 47 

44데모 마켓플레이스의 플러그인 대부분은 같은 이름으로 공식 마켓플레이스에도 있습니다. 예를 들어, `code-review`, `feature-dev`, `commit-commands`는 둘 다에 있습니다. 두 개의 복사본이 설치되지 않도록 `claude-plugins-official`에서 이들을 설치합니다.48* **`ralph-wiggum`**: 이 플러그인은 이제 `ralph-loop`이며, 명령은 `/ralph-loop:`로 시작합니다. 해당 명령을 사용할 수 없다면 셸에서 `claude plugin install ralph-loop@claude-plugins-official`을 실행하십시오.

49* **`claude-opus-4-5-migration`**: 이 플러그인은 지원이 종료되었으므로 셸에서 `claude plugin uninstall claude-opus-4-5-migration@claude-code-plugins`를 실행하여 제거하십시오.

50 

51다른 플러그인이 작동하지 않는다면 [Plugin installed but not working](https://code.claude.com/docs/ko/plugins/troubleshooting.md#plugin-installed-but-not-working)을 참조하십시오.

45 52 

46## 공식 마켓플레이스에서 플러그인 찾기53## 공식 마켓플레이스에서 플러그인 찾기

47 54 


62 69 

63데스크톱 앱에서 또는 스크립트에서 설치하거나 클라우드 세션이 로드하는 것을 보려면 [플러그인 설치](https://code.claude.com/docs/ko/plugins/install.md)를 참조합니다.70데스크톱 앱에서 또는 스크립트에서 설치하거나 클라우드 세션이 로드하는 것을 보려면 [플러그인 설치](https://code.claude.com/docs/ko/plugins/install.md)를 참조합니다.

64 71 

65### 커뮤니티 또는 데모 마켓플레이스 추가72### 커뮤니티 마켓플레이스 추가

66 

67커뮤니티 및 데모 마켓플레이스는 Claude Code 세션에서 추가할 때까지 등록되지 않습니다:

68 73 

69* **커뮤니티**: `/plugin marketplace add anthropics/claude-plugins-community`를 실행한 다음 `@claude-community` 접미사로 설치합니다.74커뮤니티 마켓플레이스는 추가할 때까지 등록되지 않습니다. Claude Code 세션에서 `/plugin marketplace add anthropics/claude-plugins-community`를 실행한 다음 `@claude-community` 접미사로 설치합니다.

70* **데모**: `/plugin marketplace add anthropics/claude-code`를 실행한 다음 `@claude-code-plugins` 접미사로 설치합니다.

71 75 

72`claude-plugins-official`이 `/plugin`의 **마켓플레이스** 탭에 없으면 `/plugin marketplace add anthropics/claude-plugins-official`로 같은 방식으로 추가합니다.76`claude-plugins-official`이 `/plugin`의 **마켓플레이스** 탭에 없으면 `/plugin marketplace add anthropics/claude-plugins-official`로 같은 방식으로 추가합니다.

73 77 

Details

638| 종료 코드 | 판정 줄 | 의미 |638| 종료 코드 | 판정 줄 | 의미 |

639| :- | :- | :- |639| :- | :- | :- |

640| `0` | `Validation passed` 또는 `Validation passed with warnings` | 매니페스트가 로드됩니다. `--strict`를 사용하면 경고도 없습니다 |640| `0` | `Validation passed` 또는 `Validation passed with warnings` | 매니페스트가 로드됩니다. `--strict`를 사용하면 경고도 없습니다 |

641| `1` | `Validation failed` 또는 `Validation failed (--strict treats warnings as errors)` | 오류 또는 `--strict` 아래의 경고 |641| `1` | `Validation failed` 또는 `Validation failed (--strict treats warnings as errors)` | 오류 또는 `--strict` 아래의 경고. [조언](#advice-on-the-readme)은 `--strict` 사용 여부와 관계없이 포함되지 않습니다 |

642| `2` | `Unexpected error during validation: <reason>` | 검증자 자체가 실패했습니다(예: 읽을 수 없는 경로) |642| `2` | `Unexpected error during validation: <reason>` | 검증자 자체가 실패했습니다(예: 읽을 수 없는 경로) |

643 643 

644`--json`을 사용하면 Claude Code는 보고서를 stdout에 다음 최상위 필드를 포함하는 하나의 JSON 객체로 씁니다:644`--json`을 사용하면 Claude Code는 보고서를 stdout에 다음 최상위 필드를 포함하는 하나의 JSON 객체로 씁니다:


647* `strict`: 실행이 경고를 오류로 취급했는지 여부647* `strict`: 실행이 경고를 오류로 취급했는지 여부

648* `target`: Claude Code가 검증한 해결된 경로648* `target`: Claude Code가 검증한 해결된 경로

649* `manifest`: 매니페스트의 자체 결과 또는 매니페스트 없는 실행의 경우 `null`649* `manifest`: 매니페스트의 자체 결과 또는 매니페스트 없는 실행의 경우 `null`

650* `contents`: 파일별 결과로, 각각 `file`의 이름을 지정하고 `errors`, `warnings`, `notes` 배열을 포함합니다650* `contents`: 파일별 결과로, 각각 `file`의 이름을 지정하고 `errors`, `warnings`, `notes` 배열을 포함합니다. 오류, 경고, 메모가 없는 파일은 항목이 없으므로 보고할 것이 없으면 `contents`는 비어 있습니다. [`marketplace.json`과 `plugin.json`이 있는 디렉토리](#validate-a-directory)의 경우 `manifest`는 `marketplace.json` 결과이고 `plugin.json` 결과는 `contents`에 들어갑니다

651 * `gatingHooks`: 작업을 거부할 수 있는 각 [mod](https://code.claude.com/docs/ko/plugins/mods/overview.md) 훅(예: `tool.call` 훅)에 [`.catch` 핸들러](https://code.claude.com/docs/ko/plugins/mods/events#handle-a-hook-that-fails)가 있는지 여부. 각 항목은 `module`, `pattern`, `hook`, `hasCatch`를 제공합니다. Claude Code v2.1.290 이상 필요651 * `gatingHooks`: 작업을 거부할 수 있는 각 [mod](https://code.claude.com/docs/ko/plugins/mods/overview.md) 훅(예: `tool.call` 훅)에 [`.catch` 핸들러](https://code.claude.com/docs/ko/plugins/mods/events#handle-a-hook-that-fails)가 있는지 여부. 각 항목은 `module`, `pattern`, `hook`, `hasCatch`를 제공합니다. Claude Code v2.1.290 이상 필요

652* `advice`: 실행의 [조언](#advice-on-the-readme)으로, 각 항목은 README를 `file`로 지정하고 `message`와 붙여 넣을 `installLine`을 포함합니다. 조언이 없으면 비어 있습니다. Claude Code v2.1.295 이상 필요

652 653 

653종료 `2`에서 명령은 stdout에 아무것도 쓰지 않습니다. 오류 메시지는 stderr로 이동합니다.654종료 `2`에서 명령은 stdout에 아무것도 쓰지 않습니다. 오류 메시지는 stderr로 이동합니다.

654 655 

656#### README에 대한 조언

657 

658`claude plugin validate` 출력의 `Advice` 블록은 플러그인의 README에 마켓플레이스에서 플러그인을 설치하는 줄이 없다는 의미이며, 추가할 줄을 제공합니다. 조언은 오류나 경고가 아닙니다. `--strict` 사용 여부와 관계없이 판정 줄이나 종료 코드를 바꾸지 않습니다. Claude Code v2.1.295 이상이 필요합니다.

659 

660예를 들어 `acme-tools` 마켓플레이스의 디렉토리를 검증하면 `deploy-helper` 플러그인에 대해 다음 조언이 출력됩니다:

661 

662```text theme={null}

663Validating marketplace manifest: /path/to/acme-tools/.claude-plugin/marketplace.json

664 

665ℹ Advice (does not change the verdict):

666 

667 ❯ /path/to/acme-tools/plugins/deploy-helper/README.md: This README has no line that installs "deploy-helper" from a marketplace. Add the install line, which works in one step on Claude Code 2.1.275 or later.

668 /plugin install deploy-helper --marketplace acme/tools

669 

670✔ Validation passed

671```

672 

673조언을 해소하려면 제안된 줄을 조언이 지정한 README에 붙여 넣은 다음, 셸에서 `claude plugin validate`를 다시 실행하세요. `Advice` 블록이 사라집니다.

674 

675제안된 줄에 자리 표시자 `<owner>/<repo>`가 있으면 그대로 붙여 넣어도 조언이 해소되지 않습니다. 먼저 실제 소스를 확인하세요:

676 

677* **플러그인 자체 디렉토리를 검증한 경우**: 마켓플레이스가 자체 디렉토리 안의 디렉토리에서 플러그인을 나열하면 대신 그 마켓플레이스 디렉토리를 검증하세요. GitHub 저장소처럼 다른 곳에서 플러그인을 나열하면 `<owner>/<repo>`를 직접 채우세요

678* **마켓플레이스 디렉토리를 검증한 경우**: Claude Code는 해당 디렉토리 최상위에 있는 `.git` 디렉토리의 `origin` 원격에서 소스를 채웁니다. 원격이 없는 경우처럼 그 원격을 사용할 수 없으면 `<owner>/<repo>`를 마켓플레이스의 소스로 직접 바꾸세요

679 

680이미 작성한 설치 줄은 같은 줄에서 `plugin install` 또는 그 짧은 형식인 `plugin i` 뒤에 다음 중 하나가 오면 인정됩니다. `/plugin` 표기와 `claude plugin` 표기 모두 인정됩니다:

681 

682* `<plugin>@<marketplace>`(예: `/plugin install deploy-helper@acme-tools`)

683* 플러그인 이름과 `--marketplace <source>`(예: `/plugin install deploy-helper --marketplace acme/tools`)

684 

655## claude plugin marketplace 명령685## claude plugin marketplace 명령

656 686 

657셸에서 `claude plugin marketplace <subcommand>`를 실행하여 플러그인을 설치하는 마켓플레이스를 추가, 나열, 새로고침 및 제거합니다.687셸에서 `claude plugin marketplace <subcommand>`를 실행하여 플러그인을 설치하는 마켓플레이스를 추가, 나열, 새로고침 및 제거합니다.

Details

376* [플러그인 구조 및 테스트](https://claude.com/docs/plugins/build): 동일한 플러그인 폴더가 claude.ai 및 Cowork에 설치됩니다. 일부 구성 요소는 Claude Code 전용이며, [구성 요소 지원 표](https://claude.com/docs/plugins/platform-support#compare-component-support-by-app)에서 각 표면에 로드되는 항목을 나열합니다376* [플러그인 구조 및 테스트](https://claude.com/docs/plugins/build): 동일한 플러그인 폴더가 claude.ai 및 Cowork에 설치됩니다. 일부 구성 요소는 Claude Code 전용이며, [구성 요소 지원 표](https://claude.com/docs/plugins/platform-support#compare-component-support-by-app)에서 각 표면에 로드되는 항목을 나열합니다

377* [플러그인 매니페스트 참조](https://code.claude.com/docs/ko/plugins/manifest-reference.md): 모든 `plugin.json` 필드, 경로 규칙 및 디렉토리377* [플러그인 매니페스트 참조](https://code.claude.com/docs/ko/plugins/manifest-reference.md): 모든 `plugin.json` 필드, 경로 규칙 및 디렉토리

378* [스킬](https://code.claude.com/docs/ko/skills.md): 플러그인이 제공하는 스킬을 작성합니다378* [스킬](https://code.claude.com/docs/ko/skills.md): 플러그인이 제공하는 스킬을 작성합니다

379* [Anthropic의 claude-code 저장소의 플러그인](https://github.com/anthropics/claude-code/tree/main/plugins): `feature-dev` 및 `code-review`와 같은 이 페이지의 레이아웃의 완전한 작업 예제379* [Anthropic의 claude-plugins-official 저장소의 플러그인](https://github.com/anthropics/claude-plugins-official/tree/main/plugins): `feature-dev` 및 `code-review`와 같은 이 페이지의 레이아웃의 완전한 작업 예제

Details

220 220 

221## 마켓플레이스 호스팅221## 마켓플레이스 호스팅

222 222 

223[마켓플레이스 만들기](#create-a-marketplace)에서처럼 자신의 머신에서 마켓플레이스에서 플러그인을 설치할 수 있으면 마켓플레이스 디렉터리를 git 호스트에 푸시합니다.223[마켓플레이스 만들기](#create-a-marketplace)에서처럼 자신의 머신에서 마켓플레이스에서 플러그인을 설치할 수 있으면 마켓플레이스 디렉터리를 git 호스트에 푸시합니다. 푸시하기 전에 다른 작성자가 선택할 가능성이 낮은 최상위 `name`을 마켓플레이스에 지정하세요. 사용자는 [같은 이름의 마켓플레이스를 두 개 가질 수 없기](https://code.claude.com/docs/ko/plugins/marketplace-reference.md#marketplace-file) 때문입니다.

224 224 

225팀원들은 GitHub 저장소의 경우 셸에서 `claude plugin marketplace add <owner>/<repo>`를 실행하거나 저장소 URL과 함께 동일한 명령을 실행합니다. 그런 다음 [연습](#create-a-marketplace)에서처럼 이름으로 플러그인을 설치합니다.225팀원들은 GitHub 저장소의 경우 셸에서 `claude plugin marketplace add <owner>/<repo>`를 실행하거나 저장소 URL과 함께 동일한 명령을 실행합니다. 그런 다음 [연습](#create-a-marketplace)에서처럼 이름으로 플러그인을 설치합니다.

226 226 

Details

193 193 

194| 소스 | 입력할 내용 | 예시 |194| 소스 | 입력할 내용 | 예시 |

195| :- | :- | :- |195| :- | :- | :- |

196| GitHub 저장소 | `owner/repo`. 분기 또는 태그를 고정하려면 `#ref`를 추가합니다. | `/plugin marketplace add anthropics/claude-code`, 또는 `v1.2.0` 태그를 고정하려면 `/plugin marketplace add your-org/plugins#v1.2.0` |196| GitHub 저장소 | `owner/repo`. 브랜치 또는 태그를 고정하려면 `#ref`를 추가합니다. | `/plugin marketplace add anthropics/claude-plugins-official`, 또는 `v1.2.0` 태그를 고정하려면 `/plugin marketplace add your-org/plugins#v1.2.0` |

197| 모든 호스트의 Git 저장소 | 전체 클론 URL. 분기 또는 태그를 고정하려면 `#ref`를 추가합니다. | `/plugin marketplace add https://gitlab.example.com/your-group/your-marketplace.git#v1.0.0` |197| 모든 호스트의 Git 저장소 | 전체 클론 URL. 분기 또는 태그를 고정하려면 `#ref`를 추가합니다. | `/plugin marketplace add https://gitlab.example.com/your-group/your-marketplace.git#v1.0.0` |

198| 로컬 디렉토리 또는 파일 | `.claude-plugin/marketplace.json`을 보유한 디렉토리 또는 JSON 파일 자체에 대한 상대 또는 절대 경로. 상대 경로를 `./` 또는 `../`로 시작합니다. Claude Code는 bare `name/name`을 GitHub 저장소로 읽기 때문입니다. | `/plugin marketplace add ./my-marketplace` |198| 로컬 디렉토리 또는 파일 | `.claude-plugin/marketplace.json`을 보유한 디렉토리 또는 JSON 파일 자체에 대한 상대 또는 절대 경로. 상대 경로를 `./` 또는 `../`로 시작합니다. Claude Code는 bare `name/name`을 GitHub 저장소로 읽기 때문입니다. | `/plugin marketplace add ./my-marketplace` |

199| 호스팅된 `marketplace.json` | 해당 `https://` URL | `/plugin marketplace add https://example.com/marketplace.json` |199| 호스팅된 `marketplace.json` | 해당 `https://` URL | `/plugin marketplace add https://example.com/marketplace.json` |


383 383 

384## 다음 단계384## 다음 단계

385 385 

386* [Anthropic의 마켓플레이스](https://code.claude.com/docs/ko/plugins/anthropic-marketplaces.md): 공식, 커뮤니티 및 데모 마켓플레이스가 어떻게 다르고 각각을 어디서 검색할 수 있는지386* [Anthropic의 마켓플레이스](https://code.claude.com/docs/ko/plugins/anthropic-marketplaces.md): 공식 및 커뮤니티 마켓플레이스가 어떻게 다르고 각각을 어디서 검색할 수 있는지

387* [플러그인 로딩 참조](https://code.claude.com/docs/ko/plugins/loading.md): 플러그인이 로드되었거나, 로드되지 않았거나, 업데이트 후 변경되지 않은 이유387* [플러그인 로딩 참조](https://code.claude.com/docs/ko/plugins/loading.md): 플러그인이 로드되었거나, 로드되지 않았거나, 업데이트 후 변경되지 않은 이유

388* [플러그인 보안 및 신뢰](https://code.claude.com/docs/ko/plugins/security.md): 알 수 없는 마켓플레이스에서 플러그인을 설치하기 전에 검토할 사항388* [플러그인 보안 및 신뢰](https://code.claude.com/docs/ko/plugins/security.md): 알 수 없는 마켓플레이스에서 플러그인을 설치하기 전에 검토할 사항

389* [플러그인 문제 해결](https://code.claude.com/docs/ko/plugins/troubleshooting.md): 설치 및 마켓플레이스 오류 메시지 및 해결 방법389* [플러그인 문제 해결](https://code.claude.com/docs/ko/plugins/troubleshooting.md): 설치 및 마켓플레이스 오류 메시지 및 해결 방법

Details

66>66>

67> 플러그인 마켓플레이스는 [Claude Marketplace](https://claude.com/marketplace)가 아닙니다. Claude Marketplace는 claude.com/marketplace의 웹사이트로, 플러그인, 커넥터, 파트너 제품 및 서비스 파트너를 검색할 수 있습니다. `/plugin marketplace add`로 추가하는 마켓플레이스가 아닙니다.67> 플러그인 마켓플레이스는 [Claude Marketplace](https://claude.com/marketplace)가 아닙니다. Claude Marketplace는 claude.com/marketplace의 웹사이트로, 플러그인, 커넥터, 파트너 제품 및 서비스 파트너를 검색할 수 있습니다. `/plugin marketplace add`로 추가하는 마켓플레이스가 아닙니다.

68 68 

69Claude Code는 [관리 정책](https://code.claude.com/docs/ko/plugins/org.md#allow-the-official-marketplace-and-your-own)이 차단하지 않는 한 대화형 터미널 세션을 처음 시작할 때 Anthropic의 공식 마켓플레이스를 추가합니다. Claude Code는 Anthropic의 커뮤니티 및 데모 마켓플레이스를 자체적으로 추가하지 않습니다. 세 가지 Anthropic 마켓플레이스를 구분하려면 [Anthropic의 마켓플레이스](https://code.claude.com/docs/ko/plugins/anthropic-marketplaces.md)를 읽으세요. 공식 마켓플레이스가 나열하는 것을 보려면 세션에서 `/plugin`의 **Discover** 탭을 열거나 [Claude Marketplace](https://claude.com/marketplace/plugins)를 검색하세요.69Claude Code는 [관리 정책](https://code.claude.com/docs/ko/plugins/org.md#allow-the-official-marketplace-and-your-own)이 차단하지 않는 한 대화형 터미널 세션을 처음 시작할 때 Anthropic의 공식 마켓플레이스를 추가합니다. Claude Code는 Anthropic의 커뮤니티 마켓플레이스를 자체적으로 추가하지 않습니다. Anthropic의 마켓플레이스를 구분하려면 [Anthropic의 마켓플레이스](https://code.claude.com/docs/ko/plugins/anthropic-marketplaces.md)를 읽으세요. 공식 마켓플레이스가 나열하는 것을 보려면 세션에서 `/plugin`의 **Discover** 탭을 열거나 [Claude Marketplace](https://claude.com/marketplace/plugins)를 검색하세요.

70 70 

71이 다이어그램은 마켓플레이스에서 세션까지의 경로를 보여줍니다. 마켓플레이스는 플러그인을 나열하고, 플러그인을 설치하면 Claude Code가 구성 요소를 로드합니다.71이 다이어그램은 마켓플레이스에서 세션까지의 경로를 보여줍니다. 마켓플레이스는 플러그인을 나열하고, 플러그인을 설치하면 Claude Code가 구성 요소를 로드합니다.

72 72 


88 88 

89마켓플레이스의 이름은 세 가지 계층 중 하나에 배치합니다. Claude Code는 `github.com/anthropics/` 저장소에서 소싱된 공식 및 커뮤니티 이름만 마켓플레이스에 대해 허용합니다:89마켓플레이스의 이름은 세 가지 계층 중 하나에 배치합니다. Claude Code는 `github.com/anthropics/` 저장소에서 소싱된 공식 및 커뮤니티 이름만 마켓플레이스에 대해 허용합니다:

90 90 

91* **공식**: `claude-plugins-official` 및 데모 마켓플레이스 `claude-code-plugins`를 포함하여 Anthropic의 [공식 마켓플레이스 이름](https://code.claude.com/docs/ko/plugins/security.md#official-marketplace-names) 중 하나를 가진 마켓플레이스입니다.91* **공식**: `claude-plugins-official` 및 `claude-code-plugins`를 포함하여 Anthropic의 [공식 마켓플레이스 이름](https://code.claude.com/docs/ko/plugins/security.md#official-marketplace-names) 중 하나를 가진 마켓플레이스입니다.

92* **커뮤니티**: `claude-community`와 같은 Anthropic의 커뮤니티 이름을 가진 마켓플레이스입니다. [Anthropic의 마켓플레이스를 이름으로 식별](https://code.claude.com/docs/ko/plugins/security.md#marketplace-tiers)하면 이들을 나열합니다.92* **커뮤니티**: `claude-community`와 같은 Anthropic의 커뮤니티 이름을 가진 마켓플레이스입니다. [Anthropic의 마켓플레이스를 이름으로 식별](https://code.claude.com/docs/ko/plugins/security.md#marketplace-tiers)하면 이들을 나열합니다.

93* **타사**: 다른 모든 마켓플레이스입니다. 동료나 조직이 게시하는 마켓플레이스는 타사입니다.93* **타사**: 다른 모든 마켓플레이스입니다. 동료나 조직이 게시하는 마켓플레이스는 타사입니다.

94 94 

Details

96}96}

97```97```

98 98 

99푸시하기 전에 셸에서 저장소의 `claude plugin validate .`을 실행하세요. 실행 시 확인하는 항목은 [디렉터리 검증](https://code.claude.com/docs/ko/plugins/cli-reference.md#validate-a-directory)을 참조하세요.99사용자는 [같은 이름의 마켓플레이스를 두 개 가질 수 없으므로](https://code.claude.com/docs/ko/plugins/marketplace-reference.md#marketplace-file) `your-marketplace`를 다른 작성자가 선택할 가능성이 낮은 이름으로 바꾸세요. 푸시하기 전에 셸에서 저장소의 `claude plugin validate .`을 실행하세요. 실행 시 확인하는 항목은 [디렉터리 검증](https://code.claude.com/docs/ko/plugins/cli-reference.md#validate-a-directory)을 참조하세요.

100 100 

101[마켓플레이스 만들기](https://code.claude.com/docs/ko/plugins/create-marketplace.md)는 한 저장소에 여러 플러그인이 있는 레이아웃을 다룹니다.101[마켓플레이스 만들기](https://code.claude.com/docs/ko/plugins/create-marketplace.md)는 한 저장소에 여러 플러그인이 있는 레이아웃을 다룹니다.

102 102 

Details

76* `first-party-plugins`76* `first-party-plugins`

77* `claude-tag-plugins`77* `claude-tag-plugins`

78 78 

79공식, 커뮤니티 및 데모 마켓플레이스가 어떻게 다르고 각각 어디에서 나열된 내용을 찾아볼 수 있는지는 [Anthropic의 마켓플레이스](https://code.claude.com/docs/ko/plugins/anthropic-marketplaces.md)를 참조하세요.79공식 및 커뮤니티 마켓플레이스가 어떻게 다르고 각각 어디에서 나열된 내용을 찾아볼 수 있는지는 [Anthropic의 마켓플레이스](https://code.claude.com/docs/ko/plugins/anthropic-marketplaces.md)를 참조하세요.

80 80 

81## 설치하기 전에 플러그인 검토하기81## 설치하기 전에 플러그인 검토하기

82 82 

Details

18 18 

19각 세션이 러너가 자체적으로 수행할 수 없는 설정이 필요할 때 래퍼 스크립트를 사용합니다. 세션 작성자로 범위가 지정된 단기 자격 증명 프로비저닝, 환경별 비밀 내보내기, 언어 도구 체인 준비, 또는 자식 프로세스 주변의 리소스 제한 적용입니다. 러너는 세션당 한 번 Claude Code 바이너리 대신 래퍼를 시작합니다. `$CLAUDE_RUNNER_CLAUDE_BIN`(러너 자체의 바이너리)으로 `exec`하여 래퍼를 종료하면 신호와 종료 코드가 올바르게 전파됩니다.19각 세션이 러너가 자체적으로 수행할 수 없는 설정이 필요할 때 래퍼 스크립트를 사용합니다. 세션 작성자로 범위가 지정된 단기 자격 증명 프로비저닝, 환경별 비밀 내보내기, 언어 도구 체인 준비, 또는 자식 프로세스 주변의 리소스 제한 적용입니다. 러너는 세션당 한 번 Claude Code 바이너리 대신 래퍼를 시작합니다. `$CLAUDE_RUNNER_CLAUDE_BIN`(러너 자체의 바이너리)으로 `exec`하여 래퍼를 종료하면 신호와 종료 코드가 올바르게 전파됩니다.

20 20 

21러너를 시작할 때 `--exec-path` 또는 `SELF_HOSTED_RUNNER_EXEC_PATH`를 래퍼로 지정합니다:21러너를 시작할 때 `--exec-path` 또는 `SELF_HOSTED_RUNNER_EXEC_PATH`를 래퍼로 지정하고, [빠른 시작](https://code.claude.com/docs/ko/self-hosted-environments-quickstart.md#set-up-manually)에서 설명한 대로 `<writable-dir>`을 바꿉니다:

22 22 

23```bash theme={null}23```bash theme={null}

24claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret --exec-path /etc/claude/session-wrapper.sh24claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret --base-dir '<writable-dir>' --exec-path /etc/claude/session-wrapper.sh

25```25```

26 26 

27러너는 래퍼의 환경에 다음을 설정합니다:27러너는 래퍼의 환경에 다음을 설정합니다:


457 457 

458trap이 작동하는지 확인하려면 `trap` 줄 바로 아래에 `no-such-command`처럼 존재하지 않는 명령을 호출하는 줄을 추가하십시오. 셸에서 훅 파일을 실행하고 `echo $?`가 `1`을 출력하는지 확인한 다음 해당 줄을 제거하십시오.458trap이 작동하는지 확인하려면 `trap` 줄 바로 아래에 `no-such-command`처럼 존재하지 않는 명령을 호출하는 줄을 추가하십시오. 셸에서 훅 파일을 실행하고 `echo $?`가 `1`을 출력하는지 확인한 다음 해당 줄을 제거하십시오.

459 459 

460### 오케스트레이터 중지 또는 재시작하기

461 

462실행 중인 `spawn-runner` 훅을 중단시키지 않고 오케스트레이터를 중지하거나 재시작하려면 [`--shutdown-drain-sec`](https://code.claude.com/docs/ko/self-hosted-environments-reference#orchestrator-cli-flags)를 사용하여 시작하십시오. 그러면 `SIGTERM`을 받았을 때 실행 중인 훅이 완료될 수 있도록 설정한 초만큼의 시간을 부여합니다. 값을 선택하고 그에 맞게 프로세스 감독자를 설정하는 방법은 [`--shutdown-drain-sec`와 오케스트레이터의 중지 타임아웃 크기 정하기](#size-shutdown-drain-sec-and-the-supervisors-stop-timeout-for-the-orchestrator)를 참조하십시오.

463 

464다음 시작 명령은 70초를 허용합니다:

465 

466```bash theme={null}

467claude self-hosted-runner orchestrator \

468 --environment-secret-file /etc/claude/environment-secret \

469 --hooks-dir /etc/claude/hooks \

470 --shutdown-drain-sec 70

471```

472 

473오케스트레이터는 이미 보낸 폴과 모든 훅이 완료되면 종료합니다. `--shutdown-drain-sec`에 지정한 시간이 지나면 아직 실행 중인 훅은 `SIGTERM`을 받고 오케스트레이터는 종료합니다. 두 번째 `SIGTERM` 또는 모든 `SIGINT`는 기다리지 않고 동일하게 동작합니다. `[runner:orchestrator] stop summary:`를 포함하는 로그 줄은 훅과 스폰 요청을 각각이 어떻게 끝났는지에 따라 집계합니다.

474 

475`--shutdown-drain-sec`가 없으면 오케스트레이터는 `SIGTERM` 또는 `SIGINT`를 받는 즉시 중지됩니다. 실행 중인 각 훅은 `SIGTERM`을 받으며, Anthropic에는 아무것도 알리지 않습니다. 그러면 러너가 시작되지 않은 세션은 Anthropic이 [재요청](#the-spawn-runner-hook)할 때까지 대기열에 머무를 수 있으며, 재요청은 `--expected-spawn-seconds`(기본값 120초)가 지난 후에 이루어집니다.

476 

477> [!NOTE]

478>

479> `--shutdown-drain-sec`에는 Claude Code v2.1.299 이상이 필요합니다. 이전 버전은 시작 시 `error: unknown flag --shutdown-drain-sec`와 함께 종료됩니다.

480 

481#### `--shutdown-drain-sec`와 오케스트레이터의 중지 타임아웃 크기 정하기

482 

483기본 설정에서는 [`--shutdown-drain-sec 70`](https://code.claude.com/docs/ko/self-hosted-environments-reference#orchestrator-cli-flags)과 85초의 중지 타임아웃을 사용하십시오. 이는 Kubernetes에서는 `terminationGracePeriodSeconds: 85`, systemd에서는 `TimeoutStopSec=85`를 의미합니다. `--hook-timeout`을 변경했다면 두 값을 모두 조정하십시오:

484 

485* **`--shutdown-drain-sec`**: 최소 `--hook-timeout`에 10초를 더한 값으로, `SIGTERM` 직전에 시작된 훅도 완료될 수 있도록 합니다

486* **중지 타임아웃**: 최소 `--shutdown-drain-sec`에 15초를 더한 값입니다. 오케스트레이터는 시작 시 이 수치를 로그에 기록합니다: `shutdown drain:`을 포함하는 줄을 찾으십시오.

487 

488두 번째 `SIGTERM`은 `--shutdown-drain-sec` 대기를 단축시키므로, 프로세스 감독자가 오케스트레이터 프로세스에만 `SIGTERM`을 한 번 보내도록 하십시오. systemd의 기본 [`KillMode=control-group`](https://code.claude.com/docs/ko/self-hosted-environments-deploy#what-reaches-a-running-post-session-hook)을 그대로 두면 훅도 `SIGTERM`을 받으며, 훅이 워크로드를 제출하기 전에 종료될 수 있습니다. `KillMode`를 변경하기 전에 `spawn-runner` 훅이 러너를 시작하는 방식을 확인하십시오:

489 

490* **훅이 워크로드를 플랫폼에 제출하고 종료하는 경우**: 오케스트레이터를 유닛의 메인 프로세스로 실행하고 `KillMode=mixed`를 설정하십시오. 이 설정은 해당 프로세스에만 `SIGTERM`을 보냅니다.

491* **훅이 오케스트레이터 자체 유닛 안의 프로세스로 러너를 시작하는 경우**: `KillMode=mixed`는 해당 러너에 `SIGTERM`을 보내지 않습니다. 대신 systemd가 나중에 `SIGKILL`을 보내므로, 러너는 세션을 드레인하거나 `post-session` 훅을 실행하지 않고 종료됩니다.

492 

460## Bedrock 또는 Agent Platform으로 모델 요청 보내기493## Bedrock 또는 Agent Platform으로 모델 요청 보내기

461 494 

462조직의 모델 요청이 자체 AWS 또는 Google Cloud 계정을 거쳐야 하는 경우, 러너를 [Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md) 또는 [Google Cloud의 Agent Platform(이전 명칭 Vertex AI)](https://code.claude.com/docs/ko/google-vertex-ai.md)용으로 구성합니다. 그러면 해당 러너가 시작하는 모든 세션은 사용자의 클라우드 자격 증명을 사용하여 사용자의 클라우드 계정에서 모델을 호출합니다. 이 구성이 없으면 세션은 모델 요청을 Anthropic API로 보냅니다.495조직의 모델 요청이 자체 AWS 또는 Google Cloud 계정을 거쳐야 하는 경우, 러너를 [Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md) 또는 [Google Cloud의 Agent Platform(이전 명칭 Vertex AI)](https://code.claude.com/docs/ko/google-vertex-ai.md)용으로 구성합니다. 그러면 해당 러너가 시작하는 모든 세션은 사용자의 클라우드 자격 증명을 사용하여 사용자의 클라우드 계정에서 모델을 호출합니다. 이 구성이 없으면 세션은 모델 요청을 Anthropic API로 보냅니다.

Details

583 583 

584## 종료 타이밍584## 종료 타이밍

585 585 

586`SIGTERM` 이후 러너는 오케스트레이터가 러너를 종료하기 전에 세션을 깔끔하게 종료할 시간이 필요합니다. 러너는 필요한 시간을 시작 시 로그에 기록하며, 기본 설정에서는 그 줄에 `This runner needs up to 80s`가 포함됩니다. 오케스트레이터의 중지 타임아웃을 최소한 그 초 수 이상으로 설정하세요. Kubernetes에서는 `terminationGracePeriodSeconds`, Docker Compose에서는 `stop_grace_period`, 또는 사용하는 플랫폼의 동등한 설정입니다. Kubernetes 기본값은 30초이므로 이 설정이 없으면 러너가 완료되기 전에 pod를 중지할 수 있습니다.586> [!NOTE]

587>

588> 이 타이밍은 러너에 적용됩니다. `claude self-hosted-runner orchestrator` 프로세스에는 별도의 타이밍이 있습니다. [`--shutdown-drain-sec` 및 오케스트레이터의 중지 타임아웃 크기 조정](https://code.claude.com/docs/ko/self-hosted-environments-configuration#size-shutdown-drain-sec-and-the-supervisors-stop-timeout-for-the-orchestrator)을 참조하세요.

589 

590시작 시 각 러너는 `SIGTERM` 이후 세션을 깔끔하게 종료하는 데 필요할 수 있는 시간을 로그에 기록하며, 기본 설정에서는 `This runner needs up to 80s`와 같이 기록됩니다. 중지 타임아웃은 프로세스 슈퍼바이저가 `SIGTERM` 이후 러너를 종료하기 전까지 대기하는 시간입니다. 이 값을 최소한 로그에 기록된 시간 이상으로 설정하세요:

591 

592* **Kubernetes**: `terminationGracePeriodSeconds`. Kubernetes 기본값은 30초이므로 이 설정이 없으면 러너가 완료되기 전에 pod를 중지할 수 있습니다.

593* **Docker Compose**: `stop_grace_period`

587 594 

588`SIGTERM`을 받으면 러너는 새 세션을 받지 않습니다. 그런 다음 [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal)을 설정하여 지연하지 않는 한, 드레인이라고 하는 정상 종료를 시작합니다. 드레인은 세 단계로 이루어집니다:595`SIGTERM`을 받으면 러너는 새 세션을 받지 않습니다. 그런 다음 [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal)을 설정하여 지연하지 않는 한, 드레인이라고 하는 정상 종료를 시작합니다. 드레인은 세 단계로 이루어집니다:

589 596 


706* **세션이 다른 바이너리를 시작하는 경우**: [`--exec-path`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags) 또는 [`command` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#command)을 사용하여 러너 자신의 바이너리가 아닌 다른 Claude Code 바이너리를 시작하는 경우, 세션은 해당 바이너리의 버전을 실행합니다. 러너를 업데이트할 때 해당 바이너리도 함께 업데이트하세요.713* **세션이 다른 바이너리를 시작하는 경우**: [`--exec-path`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags) 또는 [`command` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#command)을 사용하여 러너 자신의 바이너리가 아닌 다른 Claude Code 바이너리를 시작하는 경우, 세션은 해당 바이너리의 버전을 실행합니다. 러너를 업데이트할 때 해당 바이너리도 함께 업데이트하세요.

707* **플러그인**: 플러그인 마켓플레이스도 자동 업데이트되지 않습니다. 바이너리가 고정된 상태로 유지되는 동안 플러그인이 자동 업데이트되도록 하려면 러너의 환경에서 `FORCE_AUTOUPDATE_PLUGINS=1`을 설정하세요.714* **플러그인**: 플러그인 마켓플레이스도 자동 업데이트되지 않습니다. 바이너리가 고정된 상태로 유지되는 동안 플러그인이 자동 업데이트되도록 하려면 러너의 환경에서 `FORCE_AUTOUPDATE_PLUGINS=1`을 설정하세요.

708 715 

709## 플릿 확장716## 플릿 확장하기

710 717 

711오케스트레이터는 러너를 추가하거나 제거할 시기를 결정합니다. [소유자별 러너 잠금](https://code.claude.com/docs/ko/self-hosted-environments#runner-lifecycle) 때문에 최소 복제본 수는 동시에 활성화될 것으로 예상되는 사용자 및 Claude Tag 에이전트의 수입니다. `--capacity`는 소유자 간이 아닌 한 소유자의 세션 내에서 병렬 처리를 제어합니다.718오케스트레이터가 러너를 추가하거나 제거할 시점을 결정합니다. [러너당 하나의 소유자 잠금](https://code.claude.com/docs/ko/self-hosted-environments#runner-lifecycle) 때문에 최소 레플리카 수는 동시에 활성 상태일 것으로 예상되는 사용자 및 Claude Tag 에이전트의 수와 같습니다. `--capacity`는 한 소유자의 세션 내 병렬 처리를 제어하며, 여러 소유자에 걸친 병렬 처리는 제어하지 않습니다.

712 719 

713두 가지 확장 접근 방식을 사용할 수 있습니다:720두 가지 확장 방식을 사용할 수 있습니다.

714 721 

715* **고정 플릿**: 정적 러너 복제본 세트를 실행하고 각 러너가 제공하는 [Prometheus 메트릭](https://code.claude.com/docs/ko/self-hosted-environments-reference.md#prometheus-metrics)에서 확장하세요.722* **고정 플릿**: 정적인 러너 레플리카 집합을 실행하고 각 러너가 제공하는 [Prometheus 메트릭](https://code.claude.com/docs/ko/self-hosted-environments-reference.md#prometheus-metrics)을 기준으로 확장합니다

716* **온디맨드 러너**: `claude self-hosted-runner orchestrator` 서브명령을 실행하세요. 이는 Anthropic에서 사용 가능한 러너 없이 대기 중인 세션을 폴링하고 `spawn-runner` 훅을 호출하여 세션당 하나를 부팅합니다. [온디맨드 러너](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#on-demand-runners)를 참조하세요.723* **온디맨드 러너**: `claude self-hosted-runner orchestrator` 하위 명령을 실행합니다. 이 명령은 사용 가능한 러너 없이 대기열에 있는 세션을 Anthropic에 폴링하고, `spawn-runner` 훅을 호출하여 세션마다 러너를 하나씩 부팅합니다. [온디맨드 러너](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#on-demand-runners)를 참조하세요.

717 724 

718### 고정 플릿에서 유휴 세션 해제725### 고정 플릿에서 유휴 세션 해제하기

719 726 

720모든 러너가 온라인 상태인데도 고정 플릿에서 세션이 계속 대기 중이라면 유휴 세션이 원인일 수 있습니다. 기본적으로 세션은 턴이 끝난 후에도 슬롯을 유지하며, 해당 러너는 그 세션의 [소유자](https://code.claude.com/docs/ko/self-hosted-environments#key-concepts)에게 잠긴 상태로 남습니다. 다른 소유자의 세션은 해당 러너의 빈 슬롯을 사용할 수 없습니다. 팀의 [클라우드 예약 작업](https://code.claude.com/docs/ko/routines.md)이 실행할 때마다 새 세션을 시작한다면, 그 유휴 세션들이 모든 슬롯을 채울 수 있습니다.727모든 러너가 온라인 상태인데도 고정 플릿에서 세션이 계속 대기열에 머문다면 유휴 세션이 원인일 수 있습니다. 기본적으로 세션은 턴이 끝난 후에도 슬롯을 유지하며, 해당 러너는 그 세션의 [소유자](https://code.claude.com/docs/ko/self-hosted-environments#key-concepts)에게 잠긴 상태로 유지됩니다. 다른 소유자의 세션은 그 러너의 빈 슬롯을 사용할 수 없습니다. 팀의 [클라우드 예약 작업](https://code.claude.com/docs/ko/routines.md)이 실행될 때마다 새 세션을 시작한다면, 그 유휴 세션들이 모든 슬롯을 채울 수 있습니다.

721 728 

722확인하려면 각 러너의 [Prometheus 메트릭](https://code.claude.com/docs/ko/self-hosted-environments-reference.md#prometheus-metrics)에서 `claude_code_self_hosted_runner_session_idle_seconds`를 읽으세요. 러너가 보유한 각 세션에는 고유한 시리즈가 있습니다. 세션이 사용 중일 때는 `0`이고, 그렇지 않으면 유휴 상태가 된 이후 경과한 초입니다. 허용할 유휴 시간을 정하세요. 작업 도중 사람들이 잠시 멈추는 시간보다 길고, 예약 작업의 다음 실행이 시작되기 전에 각 실행이 해제될 만큼 짧아야 합니다. 시리즈를 이 시간과 비교하세요.729확인하려면 각 러너의 [Prometheus 메트릭](https://code.claude.com/docs/ko/self-hosted-environments-reference.md#prometheus-metrics)에서 `claude_code_self_hosted_runner_session_idle_seconds`를 읽으세요. 러너가 보유한 각 세션마다 고유한 시계열이 있으며, 세션이 작업 중일 때는 `0`이고, 그렇지 않으면 유휴 상태가 된 이후 경과한 초 수입니다. 허용할 유휴 시간을 정하세요. 사람들이 작업 도중 쉬는 시간보다 길고, 예약 작업의 다음 실행이 시작되기 전에 각 실행이 해제될 만큼 짧아야 합니다. 그런 다음 시계열을 이 시간과 비교하세요.

723 730 

724* **해당 시간을 초과하는 시리즈(예: 30분의 경우 `1800`)**: 유휴 세션이 해당 슬롯을 점유하고 있으므로 `--release-idle-session-min`을 설정하세요.731* **해당 시간을 초과하는 시계열(예: 30분의 경우 `1800`)**: 유휴 세션이 해당 슬롯을 점유하고 있으므로 `--release-idle-session-min`을 설정합니다

725* **모든 시리즈가 해당 시간 미만**: 그만큼 오래 유휴 상태인 세션이 없습니다. 러너를 추가하거나, [유휴 상태가 되지 않는 세션](#some-sessions-don’t-count-as-idle)에 대해 [`--kill-session-after-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)을 설정하세요.732* **모든 시계열이 해당 시간 미만**: 그만큼 오래 유휴 상태였던 세션이 없습니다. 러너를 추가하거나, [유휴 상태가 되지 않는 세션](#some-sessions-don’t-count-as-idle)에 대해 [`--kill-session-after-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)을 설정하세요.

726* **시리즈가 없는 러너**: 해당 러너를 점유한 세션이 없습니다. [문제 해결](#troubleshooting)의 **세션이 계속 대기 중인 경우**를 참조하세요.733* **시계열이 없는 러너**: 해당 러너를 점유한 세션이 없습니다. [문제 해결](#troubleshooting)의 **세션이 대기열에 머무름**을 참조하세요.

727* **메트릭이 응답하지 않는 러너**: 프로세스가 종료되었을 수 있습니다. [러너가 종료될 때](#when-the-runner-exits)의 **정상으로 보이는 환경**을 참조하세요.734* **메트릭이 응답하지 않는 러너**: 프로세스가 종료되었을 수 있습니다. [러너가 종료될 때](#when-the-runner-exits)의 **정상으로 보이는 환경**을 참조하세요.

728 735 

729유휴 세션을 해제하려면 모든 러너를 [`--release-idle-session-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)과 해당 시간(분 단위)으로 시작하세요(예: `--release-idle-session-min 30`). 그러면 러너는 예약 작업이 시작했든 사람이 시작했든 관계없이 그만큼 오래 유휴 상태로 남은 세션을 모두 해제합니다. 단, [세션이 남겨 둔 프로세스를 위해 세션을 유지](#keep-an-idle-session-while-its-processes-run)하는 경우는 예외입니다.736유휴 세션을 해제하려면 모든 러너를 [`--release-idle-session-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)과 해당 시간(분 단위)으로 시작하세요(예: `--release-idle-session-min 30`). 그러면 러너는 그만큼 오래 유휴 상태로 머무는 세션을, 예약 작업이 시작했든 사람이 시작했든 관계없이 해제합니다. 단, [세션이 남겨 둔 프로세스를 위해 세션을 유지](#keep-an-idle-session-while-its-processes-run)하는 경우는 예외입니다.

730 737 

731* **푸시되지 않은 작업**: 해제된 세션은 다음 메시지에서 재개되지만, 푸시하지 않은 작업은 포함되지 않습니다. 커밋을 유지하려면 [재개된 세션에서 푸시되지 않은 작업 손실](#additional-limitations)을 참조하세요.738* **푸시되지 않은 작업**: 해제된 세션은 다음 메시지에서 재개되지만, 푸시하지 않은 작업은 포함되지 않습니다. 커밋을 보존하려면 [재개된 세션은 푸시되지 않은 작업을 잃음](#additional-limitations)을 참조하세요.

732* **러너 종료**: 마지막 세션을 해제한 러너는 [정상 종료](#when-the-runner-exits)를 시작합니다. [배포 강화](#harden-your-deployment)에 설명된 대로 수퍼바이저가 새 파일 시스템에서 러너를 다시 시작하도록 하세요.739* **러너 종료**: 마지막 세션을 해제한 러너는 [정상 종료](#when-the-runner-exits)를 시작합니다. [배포 강화하기](#harden-your-deployment)에서 설명한 대로 슈퍼바이저가 새 파일 시스템에서 러너를 다시 시작하도록 하세요.

733* **유휴 상태가 되지 않는 세션**: [일부 세션은 유휴 상태로 간주되지 않으므로](#some-sessions-don’t-count-as-idle) [`--kill-session-after-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)도 설정하세요.740* **유휴 상태가 되지 않는 세션**: [일부 세션은 유휴 상태로 간주되지 않으므로](#some-sessions-don’t-count-as-idle) [`--kill-session-after-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)도 설정하세요

734 741 

735### 프로세스가 실행되는 동안 유휴 세션 유지742### 프로세스가 실행되는 동안 유휴 세션 유지하기

736 743 

737세션이 호스트에 남겨 둔 프로세스(예: `nohup` 작업)가 끝날 때까지 유휴 세션을 유지하려면 [`--hold-idle-file`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)로 러너를 시작하고 호스트에서 해당 파일을 계속 touch하세요. Claude Code v2.1.311 이상이 필요합니다.744`nohup` 작업처럼 세션이 호스트에 남겨 둔 프로세스가 끝날 때까지 유휴 세션을 유지하려면, [`--hold-idle-file`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)로 러너를 시작하고 호스트에서 해당 파일을 계속 touch하세요. Claude Code v2.1.311 이상이 필요합니다.

738 745 

739이 단계는 호스트에서 root가 아닌 사용자로 실행되는 러너를 전제로 합니다. 러너가 `root`로 실행되면 세션이 직접 파일을 touch할 수 있으므로, 먼저 전용 사용자로 실행하세요.746이 단계는 호스트에서 root가 아닌 사용자로 실행되는 러너를 가정합니다. 러너가 `root`로 실행되면 세션이 직접 파일을 touch할 수 있으므로, 먼저 전용 사용자로 실행하세요.

740 747 

741**1. 파일 경로 선택**748**1. 파일 경로 선택하기**

742 749 

743세션이 파일에 쓸 수 없도록, 상위 디렉터리를 포함해 세션이 쓸 수 없는 디렉터리에 있는 로컬 일반 파일(예: `/var/lib/claude-hold/hold-idle`)을 선택하세요. 러너와 세션은 하나의 OS 사용자를 공유하므로, 먼저 `root` 같은 다른 사용자가 소유하고 모드가 `755`인 디렉터리를 생성하세요.750`/var/lib/claude-hold/hold-idle`처럼 세션이 쓸 수 없는 디렉터리(상위 디렉터리 포함)에 있는 로컬 일반 파일을 선택하여 세션이 해당 파일에 쓸 수 없도록 합니다. 러너와 세션은 하나의 OS 사용자를 공유하므로, 먼저 `root` 같은 다른 사용자가 소유하고 모드가 `755`인 디렉터리를 만드세요.

744 751 

745**2. 러너 시작**752**2. 러너 시작하기**

746 753 

747셸에서 `--hold-idle-file`, `--release-idle-session-min`, 그리고 세션이 유휴 상태가 된 시점부터 계산되는 유지 상한인 [`--max-hold-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)을 사용하여 러너를 시작하세요. 이 플래그가 없으면 상한은 하루입니다. `--release-idle-session-min`보다 큰 값으로 설정해야 하며, 그렇지 않으면 아무것도 유지되지 않습니다. 다음 예시는 30분 후 유휴 세션을 해제하고, 유지된 세션은 유휴 상태가 된 후 최대 4시간 뒤에 해제합니다:754셸에서 `--hold-idle-file`, `--release-idle-session-min`, [`--max-hold-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)으로 러너를 시작합니다. `--max-hold-min`은 세션이 유휴 상태가 된 시점부터 계산되는 유지 상한입니다. 이 값이 없으면 상한은 하루입니다. `--release-idle-session-min`보다 크게 설정해야 하며, 그렇지 않으면 아무것도 유지되지 않습니다. `<writable-dir>`은 [빠른 시작](https://code.claude.com/docs/ko/self-hosted-environments-quickstart.md#set-up-manually)에서 설명한 대로 바꾸세요. 이 예시는 30분 후에 유휴 세션을 해제하고, 유지된 세션은 유휴 상태가 된 후 최대 4시간 뒤에 해제합니다.

748 755 

749```bash theme={null}756```bash theme={null}

750claude self-hosted-runner \757claude self-hosted-runner \

751 --environment-secret-file /etc/claude/environment-secret \758 --environment-secret-file /etc/claude/environment-secret \

759 --base-dir '<writable-dir>' \

752 --release-idle-session-min 30 \760 --release-idle-session-min 30 \

753 --hold-idle-file /var/lib/claude-hold/hold-idle \761 --hold-idle-file /var/lib/claude-hold/hold-idle \

754 --max-hold-min 240762 --max-hold-min 240

755```763```

756 764 

757**3. 프로세스가 실행되는 동안 파일 touch**765**3. 프로세스가 실행되는 동안 파일 touch하기**

758 766 

759프로세스가 실행되는 동안 디렉터리 소유자로 호스트에서 3분보다 짧은 간격으로 파일을 `touch`하세요. 첫 번째 `touch`가 파일을 생성합니다. 예를 들어 `root`의 crontab에 다음 줄을 추가하세요:767프로세스가 실행되는 동안 디렉터리 소유자로서 호스트에서 3분보다 짧은 간격으로 파일을 `touch`합니다. 첫 번째 `touch`가 파일을 생성합니다. 예를 들어 `root`의 crontab에 다음 줄을 추가합니다.

760 768 

761```text theme={null}769```text theme={null}

762* * * * * pgrep -x nightly-build > /dev/null && touch /var/lib/claude-hold/hold-idle770* * * * * pgrep -x nightly-build > /dev/null && touch /var/lib/claude-hold/hold-idle

763```771```

764 772 

765이 줄은 1분마다 실행되며 `nightly-build`라는 이름의 프로세스가 실행 중일 때 파일을 touch하므로, 해당 프로세스를 시작한 세션은 상한까지 유지됩니다. `pgrep` 검사는 호스트에서 세션이 남겨 둔 프로세스를 찾는 방식으로 바꾸세요.773이 줄은 1분마다 실행되며 `nightly-build`라는 이름의 프로세스가 실행 중인 동안 파일을 touch하므로, 이 프로세스를 시작한 세션은 상한까지 유지됩니다. `pgrep` 검사를 호스트에서 세션이 남겨 둔 프로세스를 찾는 방식으로 바꾸세요.

766 774 

767검사는 해당 프로세스가 끝나면 더 이상 일치하지 않아야 합니다. 그렇지 않으면 해당 러너의 모든 유휴 세션이 상한까지 유지됩니다.775프로세스가 끝나면 검사가 더 이상 일치하지 않아야 합니다. 그렇지 않으면 해당 러너의 모든 유휴 세션이 상한까지 유지됩니다.

768 776 

769**4. 유지 확인**777**4. 유지 확인하기**

770 778 

771프로세스가 실행되는 동안 파일의 수정 시간이 3분 이내로 유지되는지 확인하세요. 세션의 유휴 시간이 만료되면 러너 로그에서 `idle release held`를 찾으세요. 해당 줄이 나타나지 않으면 러너가 시작 시 로그에 기록하는 `watchdog config` 줄의 `leftover-hold=`를 확인하세요. 여기에는 파일과 상한, 또는 아무것도 유지되지 않는 이유가 표시됩니다.779프로세스가 실행되는 동안 파일의 수정 시간이 3분 이내로 유지되는지 확인합니다. 세션의 유휴 시간이 다 되면 러너 로그에서 `idle release held`를 찾으세요. 해당 줄이 나타나지 않으면 러너가 시작 시 로그에 기록하는 `watchdog config` 줄에서 `leftover-hold=`를 읽으세요. 여기에는 파일과 상한, 또는 아무것도 유지되지 않는 이유가 표시됩니다.

772 780 

773마지막 `touch` 후 3분이 지나면 유지가 종료됩니다. 그 후 약 1분 이내에 로그에 `idle release no longer held`가 표시되고 러너가 세션을 해제합니다.781마지막 `touch` 후 3분이 지나면 유지가 끝납니다. 그 후 약 1분 이내에 로그에 `idle release no longer held`가 표시되고 러너가 세션을 해제합니다.

774 782 

775파일이 계속 변경되더라도 다음과 같은 경우에는 유지가 종료될 수 있습니다:783파일이 계속 변경되는 동안에도 다음과 같은 경우 유지가 끝날 수 있습니다.

776 784 

777* **상한 초과**: `--max-hold-min`이 만료된 경우입니다. 더 오래 유지하려면 값을 늘리세요.785* **상한 초과**: `--max-hold-min`이 다 되었습니다. 더 오래 유지하려면 값을 높이세요

778* **강제 해제**: [`--retire-at`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags), [`--defer-shutdown-max-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags) 또는 [`--kill-session-after-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)을 설정했고 해당 한도에 도달한 경우입니다. 더 오래 유지하려면 더 늦은 한도를 설정하세요.786* **강제 해제**: [`--retire-at`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags), [`--defer-shutdown-max-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags) 또는 [`--kill-session-after-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)을 설정했고 해당 한도에 도달했습니다. 더 오래 유지하려면 더 늦은 한도를 설정하세요

779 787 

780## 알려진 문제 및 제한 사항788## 알려진 문제 및 제한 사항

781 789 


816 * **커밋되지 않은 변경 사항은 여전히 손실됨**: Claude가 응답을 마쳤을 때 커밋하고 푸시하도록 요청하려면 [세션이 작업을 푸시하도록 프롬프트 지정](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)을 참조합니다.824 * **커밋되지 않은 변경 사항은 여전히 손실됨**: Claude가 응답을 마쳤을 때 커밋하고 푸시하도록 요청하려면 [세션이 작업을 푸시하도록 프롬프트 지정](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)을 참조합니다.

817* **러너 손실로 중단된 명령이 다시 실행될 수 있음**: 세션이 다른 러너에서 재개되면, Claude에게는 중단된 도구 호출이 그 결과를 알 수 없다는 내용의 결과와 함께 표시됩니다.825* **러너 손실로 중단된 명령이 다시 실행될 수 있음**: 세션이 다른 러너에서 재개되면, Claude에게는 중단된 도구 호출이 그 결과를 알 수 없다는 내용의 결과와 함께 표시됩니다.

818* **세션 중간에 추가한 저장소는 클론에 실패할 수 있음**: Claude는 HTTPS를 통해 `git clone`으로 저장소를 클론합니다. [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy)가 없는 러너에서는 호스트에서 해당 저장소를 읽을 수 있는 수단이 없으면 git 인증 오류로 클론이 실패합니다. 가능하면 세션을 만들 때 세션에 필요한 모든 저장소를 선택합니다.826* **세션 중간에 추가한 저장소는 클론에 실패할 수 있음**: Claude는 HTTPS를 통해 `git clone`으로 저장소를 클론합니다. [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy)가 없는 러너에서는 호스트에서 해당 저장소를 읽을 수 있는 수단이 없으면 git 인증 오류로 클론이 실패합니다. 가능하면 세션을 만들 때 세션에 필요한 모든 저장소를 선택합니다.

827 * **세션이 재개될 때**: 추가된 저장소에 대해서도 [`checkout` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#checkout)이 실행되며, 이때 [`CLAUDE_RUNNER_REPO_REF`](https://code.claude.com/docs/ko/self-hosted-environments-configuration#checkout)는 비어 있으므로 훅이 이를 처리하도록 작성합니다.

819* **일부 커넥터는 자체 호스팅 세션에 나타나지 않음**: claude.ai 설정에서 아직 연결하지 않은 커넥터는 자체 호스팅 세션에 나열되지 않으며, 세션은 연결하라는 메시지를 표시하지 않습니다. 먼저 설정에서 연결한 후 새로운 세션을 시작합니다. 이미 실행 중인 세션에 커넥터를 추가해도 Claude에서 해당 도구를 사용할 수 없습니다. 새로 추가된 커넥터를 선택하려면 새로운 세션을 시작합니다.828* **일부 커넥터는 자체 호스팅 세션에 나타나지 않음**: claude.ai 설정에서 아직 연결하지 않은 커넥터는 자체 호스팅 세션에 나열되지 않으며, 세션은 연결하라는 메시지를 표시하지 않습니다. 먼저 설정에서 연결한 후 새로운 세션을 시작합니다. 이미 실행 중인 세션에 커넥터를 추가해도 Claude에서 해당 도구를 사용할 수 없습니다. 새로 추가된 커넥터를 선택하려면 새로운 세션을 시작합니다.

820* **누군가 세션을 보관 또는 삭제하거나, 세션 메뉴에서 러너를 해제하는 경우**: [`--push-outcome-on-release`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags) 푸시에 의존할 수 없습니다. 이러한 경우 커밋을 저장하려면 [`post-session` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#post-session)에서 `HEAD`를 복구 브랜치로 푸시합니다. 해당 문서의 예제에서 시작하는 경우, 예제는 스냅샷 커밋 후에만 푸시하므로 커밋되지 않은 항목이 없을 때도 푸시하도록 수정합니다.829* **누군가 세션을 보관 또는 삭제하거나, 세션 메뉴에서 러너를 해제하는 경우**: [`--push-outcome-on-release`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags) 푸시에 의존할 수 없습니다. 이러한 경우 커밋을 저장하려면 [`post-session` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#post-session)에서 `HEAD`를 복구 브랜치로 푸시합니다. 해당 문서의 예제에서 시작하는 경우, 예제는 스냅샷 커밋 후에만 푸시하므로 커밋되지 않은 항목이 없을 때도 푸시하도록 수정합니다.

821 830 


833 842 

834일반적인 문제:843일반적인 문제:

835 844 

836* **러너가 환경에 나타나지 않음**: 호스트가 HTTPS를 통해 `api.anthropic.com`에 연결할 수 있는지, 환경 시크릿이 최신인지, 호스트 시계가 실제 시간과 5분 이내로 차이 나는지 확인합니다. 차이가 더 크면 인증이 실패합니다. 인증이 실패하면 러너는 거부 사유와 함께 `[runner:fatal]`을 로그에 기록합니다.845* **러너가 환경에 나타나지 않음**: 호스트가 HTTPS를 통해 `api.anthropic.com`에 연결할 수 있는지, 환경 시크릿이 최신인지 확인합니다. 인증이 실패하면 러너는 거부 사유와 함께 `[runner:fatal]`을 로그에 기록합니다.

837* **러너가 시작 시 `cannot create or write to base directory`와 함께 종료됨**: 러너가 `--base-dir`(기본값은 `/workspace`)을 생성하거나 쓸 수 없습니다. [러너 간에 기본 디렉터리와 용량을 동일하게 유지하기](#keep-the-base-directory-and-capacity-identical-across-runners)에 설명된 대로 디렉터리의 소유권을 수정하거나 `--base-dir`이 쓰기 가능한 경로를 가리키도록 합니다. 러너가 대신 기본 디렉터리 확인이 시간 초과되었다는 `[runner:fatal]`을 로그에 기록한다면 디렉터리가 응답하지 않는 NFS 또는 CSI 마운트에 있는 것입니다. 권한보다는 마운트 상태를 확인합니다. 러너는 `--log-file`을 열기 전에 이 두 가지 시작 실패를 모두 stderr에 출력하므로, 로그 파일이 아니라 터미널이나 플랫폼의 컨테이너 로그에서 찾아야 합니다. v2.1.225 이전에는 러너가 시작 시 기본 디렉터리를 확인하지 않았으며, 이 잘못된 구성으로 인해 대신 세션을 가져온 후 세션이 실패했습니다.846* **러너가 시작 시 `cannot create or write to base directory`와 함께 종료됨**: 러너가 `--base-dir`(기본값은 `/workspace`)을 생성하거나 쓸 수 없습니다. [러너 간에 기본 디렉터리와 용량을 동일하게 유지하기](#keep-the-base-directory-and-capacity-identical-across-runners)에 설명된 대로 디렉터리의 소유권을 수정하거나 `--base-dir`이 쓰기 가능한 경로를 가리키도록 합니다. 러너가 대신 기본 디렉터리 확인이 시간 초과되었다는 `[runner:fatal]`을 로그에 기록한다면 디렉터리가 응답하지 않는 NFS 또는 CSI 마운트에 있는 것입니다. 권한보다는 마운트 상태를 확인합니다. 러너는 `--log-file`을 열기 전에 이 두 가지 시작 실패를 모두 stderr에 출력하므로, 로그 파일이 아니라 터미널이나 플랫폼의 컨테이너 로그에서 찾아야 합니다. v2.1.225 이전에는 러너가 시작 시 기본 디렉터리를 확인하지 않았으며, 이 잘못된 구성으로 인해 대신 세션을 가져온 후 세션이 실패했습니다.

838* **러너가 시작 시 `RegisterRunner failed:`와 TLS 인증서 오류와 함께 종료됨**: 오류는 예를 들어 `self signed certificate in certificate chain`일 수 있습니다. TLS 검사 프록시 뒤에 있는 경우처럼, 러너가 수신한 인증서의 인증 기관(CA)을 신뢰하지 않습니다. 러너의 환경에서 [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/ko/network-config#custom-ca-certificates)를 프록시의 루트 CA가 포함된 PEM 파일로 설정합니다.847* **러너가 시작 시 `RegisterRunner failed:`와 TLS 인증서 오류와 함께 종료됨**: 오류는 예를 들어 `self signed certificate in certificate chain`일 수 있습니다. TLS 검사 프록시 뒤에 있는 경우처럼, 러너가 수신한 인증서의 인증 기관(CA)을 신뢰하지 않습니다. 러너의 환경에서 [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/ko/network-config#custom-ca-certificates)를 프록시의 루트 CA가 포함된 PEM 파일로 설정합니다.

839 848 

840 세션은 이 값을 상속하므로 세션에 다시 설정할 필요는 없습니다. Git은 이 값을 읽지 않습니다. 해당 프록시를 통한 클론의 경우 [`GIT_SSL_CAINFO`](#trust-a-private-certificate-authority-with-anthropic-managed-git)도 설정합니다.849 세션은 이 값을 상속하므로 세션에 다시 설정할 필요는 없습니다. Git은 이 값을 읽지 않습니다. 해당 프록시를 통한 클론의 경우 [`GIT_SSL_CAINFO`](#trust-a-private-certificate-authority-with-anthropic-managed-git)도 설정합니다.

841* **시작 스크립트가 `Resource temporarily unavailable`을 포함하는 쓰기 오류를 출력하고 종료됨**: 스크립트가 자신이 시작하는 `claude self-hosted-runner` 또는 [오케스트레이터](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#on-demand-runners) 프로세스와 stdout 또는 stderr를 공유하고 있으며, 해당 프로세스가 그 공유 파이프나 소켓을 논블로킹 모드로 전환했습니다. 파이프가 가득 차면 스크립트의 쓰기가 대기하는 대신 이 운영 체제 오류와 함께 실패하며, `set -e`에서는 스크립트가 종료됩니다.850* **시작 스크립트가 `Resource temporarily unavailable`을 포함하는 쓰기 오류를 출력하고 종료됨**: 스크립트가 자신이 시작하는 `claude self-hosted-runner` 또는 [오케스트레이터](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#on-demand-runners) 프로세스와 stdout 또는 stderr를 공유하고 있으며, 해당 프로세스가 그 공유 파이프나 소켓을 논블로킹 모드로 전환했습니다. 파이프가 가득 차면 스크립트의 쓰기가 대기하는 대신 이 운영 체제 오류와 함께 실패하며, `set -e`에서는 스크립트가 종료됩니다.

842 851 

843 오류를 없애려면 러너 또는 오케스트레이터의 출력을 스크립트의 사용자가 생성할 수 있는 파일로 보냅니다. 이를 시작하는 명령에 `>> "$HOME/claude-runner.log" 2>&1`을 추가하되, 백그라운드로 보내는 `&`가 있다면 그 앞에 둡니다:852 오류를 없애려면 러너 또는 오케스트레이터의 출력을 스크립트의 사용자가 생성할 수 있는 파일로 보냅니다. 이를 시작하는 명령에 `>> "$HOME/claude-runner.log" 2>&1`을 추가하되, 백그라운드로 보내는 `&`가 있다면 그 앞에 두고, [빠른 시작](https://code.claude.com/docs/ko/self-hosted-environments-quickstart.md#set-up-manually)에서 설명하는 대로 `<writable-dir>`을 바꿉니다:

844 853 

845 ```bash theme={null}854 ```bash theme={null}

846 claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret >> "$HOME/claude-runner.log" 2>&1855 claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret --base-dir '<writable-dir>' >> "$HOME/claude-runner.log" 2>&1

847 ```856 ```

848 857 

849 스크립트 자체의 출력은 이전과 같은 곳으로 가고, 러너가 stdout과 stderr에 쓰는 내용은 시작 오류를 포함하여 해당 파일로 갑니다. 러너가 stdout과 stderr에 계속 쓰는 동안 로그를 파일에 미러링하기만 하는 [`--log-file`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)만 사용하지 말고 이 셸 리디렉션을 사용합니다. 이미 `--log-file`을 전달하고 있다면 리디렉션이 해당 파일이 받는 내용을 바꾸지 않으므로 그대로 유지합니다.858 스크립트 자체의 출력은 이전과 같은 곳으로 가고, 러너가 stdout과 stderr에 쓰는 내용은 시작 오류를 포함하여 해당 파일로 갑니다. 러너가 stdout과 stderr에 계속 쓰는 동안 로그를 파일에 미러링하기만 하는 [`--log-file`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)만 사용하지 말고 이 셸 리디렉션을 사용합니다. 이미 `--log-file`을 전달하고 있다면 리디렉션이 해당 파일이 받는 내용을 바꾸지 않으므로 그대로 유지합니다.


901 v2.1.274 이전에는 러너가 실패한 가져오기를 몇 번 시도한 후 재시도를 중단하고 다음 예정된 가져오기를 기다렸습니다. 실패한 턴은 가져오기를 트리거하지 않았으므로, 다음 예정된 가져오기까지 모든 턴이 401로 실패했습니다.910 v2.1.274 이전에는 러너가 실패한 가져오기를 몇 번 시도한 후 재시도를 중단하고 다음 예정된 가져오기를 기다렸습니다. 실패한 턴은 가져오기를 트리거하지 않았으므로, 다음 예정된 가져오기까지 모든 턴이 401로 실패했습니다.

902* **claude.ai/code에서 턴이 `This model needs a newer version of Claude Code`와 함께 실패함**: 러너가 세션을 시작할 때 사용하는 Claude Code 버전이 세션의 모델이 요구하는 버전보다 오래되어 API가 [요청을 거부](https://code.claude.com/docs/ko/errors.md#claude-code-does-not-support-this-model)합니다. [버전 고정하기](#pin-the-version)에 설명된 대로 러너를 메시지에서 요구하는 버전 이상으로 업그레이드합니다. 그때까지는 세션에서 다른 모델을 선택할 수 있습니다.911* **claude.ai/code에서 턴이 `This model needs a newer version of Claude Code`와 함께 실패함**: 러너가 세션을 시작할 때 사용하는 Claude Code 버전이 세션의 모델이 요구하는 버전보다 오래되어 API가 [요청을 거부](https://code.claude.com/docs/ko/errors.md#claude-code-does-not-support-this-model)합니다. [버전 고정하기](#pin-the-version)에 설명된 대로 러너를 메시지에서 요구하는 버전 이상으로 업그레이드합니다. 그때까지는 세션에서 다른 모델을 선택할 수 있습니다.

903* **드레인 도중 파드가 종료됨**: `terminationGracePeriodSeconds`를 러너가 시작 시 로그에 기록하는 값 이상으로 늘립니다. [종료 타이밍](#shutdown-timing)을 참조하십시오.912* **드레인 도중 파드가 종료됨**: `terminationGracePeriodSeconds`를 러너가 시작 시 로그에 기록하는 값 이상으로 늘립니다. [종료 타이밍](#shutdown-timing)을 참조하십시오.

913* **러너가 `was paused or too slow`로 끝나는 `[runner:log]` 줄을 로그에 기록함**: 러너는 계속 실행되었으며 다시 시작할 필요가 없습니다. 해당 줄에 명시된 stdout 또는 stderr 스트림이 다시 읽힐 때까지, 러너는 그 스트림의 가장 최근 256 KiB 분량의 줄을 제외한 모든 줄을 버렸습니다. [`--log-file`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)을 전달했다면 버려진 줄을 그 파일에서 찾습니다.

914* **러너가 `Nobody can read this process's stdout anymore`를 로그에 기록함**: 러너의 stdout을 읽던 대상이 사라졌으므로, 러너는 남은 실행 기간 동안 stdout에 쓰기를 중단하고 계속 실행됩니다. stderr가 아직 열려 있는 동안에는 이 줄과 이후 러너의 상태 줄(`[runner:fatal]` 줄 포함)이 stderr로 가므로, stderr에서 읽습니다.

904 915 

905로깅이 초기화되면 러너는 `[runner:fatal]` 줄을 포함한 수명 주기 로그를 stdout에, 디버그 출력을 stderr에 기록하며, 모두 JSON이 아닌 일반 텍스트 줄입니다. 위의 문제 해결 항목에 설명된 기본 디렉터리 실패는 그 이전에 stderr에 출력됩니다. `--log-file`(이를 통해 `self-hosted-runner doctor`가 두 스트림을 추적할 수도 있음) 또는 플랫폼의 로그 수집 기능으로 두 스트림을 모두 캡처합니다.916로깅이 초기화되면 러너는 `[runner:fatal]` 줄을 포함한 수명 주기 로그를 stdout에, 디버그 출력을 stderr에 기록하며, 모두 JSON이 아닌 일반 텍스트 줄입니다. 위의 문제 해결 항목에 설명된 기본 디렉터리 실패는 그 이전에 stderr에 출력됩니다. `--log-file`(이를 통해 `self-hosted-runner doctor`가 두 스트림을 추적할 수도 있음) 또는 플랫폼의 로그 수집 기능으로 두 스트림을 모두 캡처합니다.

906 917 

Details

29 29 

30* `api.anthropic.com`, `claude.ai` 및 아래 설치 단계를 위해 리디렉션되는 다운로드 호스트, 그리고 클론을 위해 git 호스트로의 아웃바운드 HTTPS를 사용하는 Linux 또는 macOS 호스트 또는 컨테이너입니다. [네트워크 요구 사항 표](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#network-requirements)에 전체 목록이 있습니다. Windows는 러너 호스트로 지원되지 않습니다. 대신 Linux 컨테이너에서 러너를 실행하세요. 개발자 워크스테이션은 영향을 받지 않습니다. 세션은 브라우저의 claude.ai에서 시작되기 때문입니다.30* `api.anthropic.com`, `claude.ai` 및 아래 설치 단계를 위해 리디렉션되는 다운로드 호스트, 그리고 클론을 위해 git 호스트로의 아웃바운드 HTTPS를 사용하는 Linux 또는 macOS 호스트 또는 컨테이너입니다. [네트워크 요구 사항 표](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#network-requirements)에 전체 목록이 있습니다. Windows는 러너 호스트로 지원되지 않습니다. 대신 Linux 컨테이너에서 러너를 실행하세요. 개발자 워크스테이션은 영향을 받지 않습니다. 세션은 브라우저의 claude.ai에서 시작되기 때문입니다.

31* 테스트 세션용 저장소입니다. 공개 저장소이거나, 이 호스트가 자격 증명을 요청받지 않고 HTTPS URL로 이미 클론할 수 있는 저장소여야 합니다. 러너는 저장소의 `https://` URL을 클론하므로 SSH 키만으로는 충분하지 않습니다. 대신 SSH로 클론하려면 [프라이빗 네트워크용 git URL 재작성](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#rewrite-git-urls-for-private-networks)을 참조하세요.31* 테스트 세션용 저장소입니다. 공개 저장소이거나, 이 호스트가 자격 증명을 요청받지 않고 HTTPS URL로 이미 클론할 수 있는 저장소여야 합니다. 러너는 저장소의 `https://` URL을 클론하므로 SSH 키만으로는 충분하지 않습니다. 대신 SSH로 클론하려면 [프라이빗 네트워크용 git URL 재작성](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#rewrite-git-urls-for-private-networks)을 참조하세요.

32* NTP와 같은 실시간으로 동기화된 시계입니다. 시계가 5분 이상 차이나면 인증이 실패합니다. [문제 해결](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#troubleshooting)을 참조하세요.32* NTP 등을 사용하여 실제 시간과 동기화된 시계입니다.

33 33 

34### 러너 호스트의 소프트웨어34### 러너 호스트의 소프트웨어

35 35 

Details

48| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | 러너 종료를 포함한 모든 세션 종료 시 [`post-session` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#post-session)에 주어지는 시간입니다 |48| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | 러너 종료를 포함한 모든 세션 종료 시 [`post-session` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#post-session)에 주어지는 시간입니다 |

49| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | 설정 안 됨 | 러너가 이그레스 프록시에 연결할 때마다 실행하는 셸 명령으로, 앞뒤 공백을 제거한 stdout을 `Proxy-Authorization` 헤더 값으로 사용합니다. `HTTPS_PROXY` 또는 `HTTP_PROXY`가 필요하며, `--proxy-authorization-file`과 함께 사용할 수 없습니다. [이그레스 프록시에 인증하기](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)를 참조하십시오. Claude Code v2.1.238 이상이 필요합니다. |49| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | 설정 안 됨 | 러너가 이그레스 프록시에 연결할 때마다 실행하는 셸 명령으로, 앞뒤 공백을 제거한 stdout을 `Proxy-Authorization` 헤더 값으로 사용합니다. `HTTPS_PROXY` 또는 `HTTP_PROXY`가 필요하며, `--proxy-authorization-file`과 함께 사용할 수 없습니다. [이그레스 프록시에 인증하기](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)를 참조하십시오. Claude Code v2.1.238 이상이 필요합니다. |

50| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | 설정 안 됨 | 러너가 이그레스 프록시에 연결할 때마다 읽는 파일로, 앞뒤 공백을 제거한 내용을 `Proxy-Authorization` 헤더 값으로 사용합니다. 다른 프로세스가 제자리에서 교체하는 토큰에 이 플래그를 사용하십시오. `--proxy-authorization-command`와 동일한 요구 사항이 적용되며, 함께 사용할 수 없습니다. [이그레스 프록시에 인증하기](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)를 참조하십시오. Claude Code v2.1.238 이상이 필요합니다. |50| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | 설정 안 됨 | 러너가 이그레스 프록시에 연결할 때마다 읽는 파일로, 앞뒤 공백을 제거한 내용을 `Proxy-Authorization` 헤더 값으로 사용합니다. 다른 프로세스가 제자리에서 교체하는 토큰에 이 플래그를 사용하십시오. `--proxy-authorization-command`와 동일한 요구 사항이 적용되며, 함께 사용할 수 없습니다. [이그레스 프록시에 인증하기](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)를 참조하십시오. Claude Code v2.1.238 이상이 필요합니다. |

51| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | 꺼짐 | 드레인이나 유휴 해제와 같이 러너가 시작한 세션 종료 시, 워크스페이스를 삭제하기 전에 추적 중인 결과 브랜치를 `origin`에 push하여 진행 중인 커밋이 재시작 후에도 유지되도록 합니다. 최선의 노력으로 수행되며, 종료 시간에 30초가 추가되고, push된 브랜치에서 재개하려면 git 2.29 이상이 필요합니다. 활성화하기 전에 push 접근을 `claude/*` 참조로 제한하십시오. [재개된 세션은 push되지 않은 작업을 잃음](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#additional-limitations)을 참조하십시오. `checkout` 라이프사이클 훅으로 체크아웃한 저장소는 push되지 않으므로, 대신 [`post-session` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#post-session)에서 스냅샷을 만드십시오. |51| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | 꺼짐 | 드레인이나 유휴 해제처럼 러너 측에서 세션을 종료할 때, 워크스페이스를 삭제하기 전에 추적 중인 결과 브랜치를 `origin`에 push하여 진행 중인 커밋이 재시작 후에도 유지되도록 합니다. 최선의 노력으로 수행되며, 종료 시간에 30초가 추가되고, push된 브랜치에서 재개하려면 git 2.29 이상이 필요합니다. 활성화하기 전에 push 접근을 `claude/*` 참조로 제한하십시오. [재개된 세션은 push되지 않은 작업을 잃음](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#additional-limitations)을 참조하십시오. `checkout` 라이프사이클 훅으로 체크아웃한 저장소는 push되지 않으므로, 대신 [`post-session` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#post-session)에서 스냅샷을 만드십시오. |

52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | 턴이 끝나거나 세션이 사용자의 조치를 기다리는 상태에서 N분 동안 활동이 없으면 세션 슬롯을 해제합니다. [일부 세션은 유휴 상태로 간주되지 않으므로](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle) `--kill-session-after-min`과 함께 사용하십시오. 끝난 백그라운드 작업은 최대 [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings) 기간 동안 세션을 사용 중 상태로 유지합니다. 해제를 지연하려면 [`--hold-idle-file`](https://code.claude.com/docs/ko/self-hosted-environments-deploy#keep-an-idle-session-while-its-processes-run)을 설정하십시오. `0`은 비활성화합니다. |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | 턴이 끝나거나 세션이 사용자의 조치를 기다리는 상태에서 N분 동안 활동이 없으면 세션 슬롯을 해제합니다. [일부 세션은 유휴 상태로 간주되지 않으므로](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle) `--kill-session-after-min`과 함께 사용하십시오. 끝난 백그라운드 작업은 최대 [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings) 기간 동안 세션을 사용 중 상태로 유지합니다. 해제를 지연하려면 [`--hold-idle-file`](https://code.claude.com/docs/ko/self-hosted-environments-deploy#keep-an-idle-session-while-its-processes-run)을 설정하십시오. `0`은 비활성화합니다. |

53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | 꺼짐 | 세션이 이 러너에서 종료되면 결과와 관계없이 `<base-dir>/_sessions/` 아래의 세션별 디렉터리를 제거합니다. 이러한 디렉터리에 무엇이 담기며 남아 있을 때 누가 읽을 수 있는지는 [미리 준비된 체크아웃 재사용하기](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout)에 설명되어 있습니다. 제거는 최선의 노력으로 수행됩니다. 정리가 실행되기 전에 러너가 강제 종료되거나 드레인 기한에 도달하면 세션별 디렉터리가 그대로 남습니다. 플래그를 켜면 실패하거나 중단된 세션의 디버그 로그가 디스크에 보관되지 않습니다. Claude Code v2.1.268 이상이 필요합니다. |53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | 꺼짐 | 세션이 이 러너에서 종료되면 결과와 관계없이 `<base-dir>/_sessions/` 아래의 세션별 디렉터리를 제거합니다. 이러한 디렉터리에 무엇이 담기며 남아 있을 때 누가 읽을 수 있는지는 [미리 준비된 체크아웃 재사용하기](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout)에 설명되어 있습니다. 제거는 최선의 노력으로 수행됩니다. 정리가 실행되기 전에 러너가 강제 종료되거나 드레인 기한에 도달하면 세션별 디렉터리가 그대로 남습니다. 플래그를 켜면 실패하거나 중단된 세션의 디버그 로그가 디스크에 보관되지 않습니다. Claude Code v2.1.268 이상이 필요합니다. |

54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | 설정 안 됨 | 알려진 시간에 러너를 종료하는 인프라를 위해, 초 단위의 절대 Unix 타임스탬프에 러너를 은퇴시킵니다. 해제 순서와 여유 시간 설정 방법은 [러너 라이프사이클](https://code.claude.com/docs/ko/self-hosted-environments#runner-lifecycle)에 설명되어 있습니다. 2001년 이전 또는 5138년 이후의 값은 플래그에서는 거부되고 환경 변수에서는 무시됩니다. |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | 설정 안 됨 | 알려진 시간에 러너를 종료하는 인프라를 위해, 초 단위의 절대 Unix 타임스탬프에 러너를 은퇴시킵니다. 해제 순서와 여유 시간 설정 방법은 [러너 라이프사이클](https://code.claude.com/docs/ko/self-hosted-environments#runner-lifecycle)에 설명되어 있습니다. 2001년 이전 또는 5138년 이후의 값은 플래그에서는 거부되고 환경 변수에서는 무시됩니다. |


95| `--hook-timeout <sec>` | `60` | 이 많은 초 후 훅의 프로세스 트리를 종료합니다. 타임아웃과 5초 킬 유예는 `--expected-spawn-seconds` 아래에 있어야 합니다. 오케스트레이터는 시작 시 이를 적용합니다. |95| `--hook-timeout <sec>` | `60` | 이 많은 초 후 훅의 프로세스 트리를 종료합니다. 타임아웃과 5초 킬 유예는 `--expected-spawn-seconds` 아래에 있어야 합니다. 오케스트레이터는 시작 시 이를 적용합니다. |

96| `--expected-spawn-seconds <sec>` | `120` | 오케스트레이터가 스폰 요청을 받은 시점부터 러너가 등록될 때까지의 예상 p99 시간이며, 플랫폼에서 용량을 기다리는 시간도 포함됩니다. 서버는 10\~3600 범위를 적용합니다. 모든 폴링에서 서버 측 임차로 전송됩니다. 경과하기 전에 러너가 등록되지 않으면 세션이 새 주문 ID로 다시 제공됩니다. 모든 복제본은 이 값을 공유해야 합니다. |96| `--expected-spawn-seconds <sec>` | `120` | 오케스트레이터가 스폰 요청을 받은 시점부터 러너가 등록될 때까지의 예상 p99 시간이며, 플랫폼에서 용량을 기다리는 시간도 포함됩니다. 서버는 10\~3600 범위를 적용합니다. 모든 폴링에서 서버 측 임차로 전송됩니다. 경과하기 전에 러너가 등록되지 않으면 세션이 새 주문 ID로 다시 제공됩니다. 모든 복제본은 이 값을 공유해야 합니다. |

97| `--min-idle <n>` | `0` | 대기 중인 러너를 사전에 생성하여 최소 N개의 유휴 세션 슬롯을 비어 있는 상태로 유지합니다. `0`은 사전 워밍을 비활성화합니다. 러너의 `--exit-if-unused-min`과 함께 사용하여 잉여 대기 러너가 자신을 회수하도록 하세요. |97| `--min-idle <n>` | `0` | 대기 중인 러너를 사전에 생성하여 최소 N개의 유휴 세션 슬롯을 비어 있는 상태로 유지합니다. `0`은 사전 워밍을 비활성화합니다. 러너의 `--exit-if-unused-min`과 함께 사용하여 잉여 대기 러너가 자신을 회수하도록 하세요. |

98| `--shutdown-drain-sec <n>` | `0` | `SIGTERM`을 받으면 스폰 요청 폴링을 중지하고, 실행 중인 `spawn-runner` 훅과 아직 응답받지 못한 폴링이 완료될 때까지 최대 이 초만큼 기다린 후 남은 작업을 중지합니다. `0`이면 즉시 중지합니다. 최댓값은 `3600`이며, 오케스트레이터는 시작 시 이를 적용합니다. 값을 선택하는 방법은 [`--shutdown-drain-sec` 및 오케스트레이터의 중지 타임아웃 크기 조정](https://code.claude.com/docs/ko/self-hosted-environments-configuration#size-shutdown-drain-sec-and-the-supervisors-stop-timeout-for-the-orchestrator)을 참조하세요. Claude Code v2.1.299 이상이 필요합니다. |

98| `--debug-dir <path>` | 설정되지 않음 | 각 스폰 요청의 작업 주문 및 훅 stderr을 디스크에 씁니다. 디버그 전용이며 프로덕션에서 설정하지 마세요. |99| `--debug-dir <path>` | 설정되지 않음 | 각 스폰 요청의 작업 주문 및 훅 stderr을 디스크에 씁니다. 디버그 전용이며 프로덕션에서 설정하지 마세요. |

99 100 

100### SCM 커넥터 플래그101### SCM 커넥터 플래그

Details

154 * **원격 분석 단위**: `OTEL_EXPORTER_OTLP_*` 내보내기 키, `OTEL_LOG_*` 콘텐츠 캡처 토글, `OTEL_LOGS_EXPORTER`, 그리고 베타 추적 변수 `ENABLE_BETA_TRACING_DETAILED` 및 `BETA_TRACING_ENDPOINT`는 이들 중 하나를 설정하는 가장 높은 소스를 단위로 따릅니다. `otelHeadersHelper` 자격증명 키를 전달하는 소스는 단위를 주장하지만, 선택된 소스일 때만 이러한 변수를 제공합니다. 선택되지 않은 소스가 키를 전달하면 이들 중 어느 것도 제공하지 않으며 여전히 낮은 소스가 이들을 채우는 것을 차단합니다. 어느 쪽이든, 한 소스의 내보내기 엔드포인트는 다른 소스의 자격증명과 쌍을 이룰 수 없습니다.154 * **원격 분석 단위**: `OTEL_EXPORTER_OTLP_*` 내보내기 키, `OTEL_LOG_*` 콘텐츠 캡처 토글, `OTEL_LOGS_EXPORTER`, 그리고 베타 추적 변수 `ENABLE_BETA_TRACING_DETAILED` 및 `BETA_TRACING_ENDPOINT`는 이들 중 하나를 설정하는 가장 높은 소스를 단위로 따릅니다. `otelHeadersHelper` 자격증명 키를 전달하는 소스는 단위를 주장하지만, 선택된 소스일 때만 이러한 변수를 제공합니다. 선택되지 않은 소스가 키를 전달하면 이들 중 어느 것도 제공하지 않으며 여전히 낮은 소스가 이들을 채우는 것을 차단합니다. 어느 쪽이든, 한 소스의 내보내기 엔드포인트는 다른 소스의 자격증명과 쌍을 이룰 수 없습니다.

155 * **자격증명 쌍 라우팅**: `apiKeyHelper` 또는 `otelHeadersHelper`와 같은 선택된 소스 전용 자격증명 키와 라우팅 변수를 쌍으로 하는 소스는 해당 슬롯을 획득할 때만 이러한 라우팅 변수를 제공합니다.155 * **자격증명 쌍 라우팅**: `apiKeyHelper` 또는 `otelHeadersHelper`와 같은 선택된 소스 전용 자격증명 키와 라우팅 변수를 쌍으로 하는 소스는 해당 슬롯을 획득할 때만 이러한 라우팅 변수를 제공합니다.

156* **`allowedProviders`**: 머신에 설정된 목록과 서버 관리 목록은 [그 항목의 범위 참고](https://code.claude.com/docs/ko/settings-reference.md#allowedproviders)에 명시된 대로 결합됩니다. Claude Code v2.1.285 이상이 필요합니다.156* **`allowedProviders`**: 머신에 설정된 목록과 서버 관리 목록은 [그 항목의 범위 참고](https://code.claude.com/docs/ko/settings-reference.md#allowedproviders)에 명시된 대로 결합됩니다. Claude Code v2.1.285 이상이 필요합니다.

157* **퍼스트 파티 로그인 키**: [`forceLoginOrgUUID`](https://code.claude.com/docs/ko/settings-reference#forceloginorguuid) 및 [`forceLoginMethod`](https://code.claude.com/docs/ko/settings-reference#forceloginmethod)의 `"claudeai"` 및 `"console"` 값. MDM 정책 또는 관리형 설정 파일도 배포하는 경우, 모든 클라이언트가 v2.1.299 이상을 실행할 때까지 해당 위치와 claude.ai의 서버 관리형 설정 양쪽에 이 키를 설정하세요. 그 이후 키를 설정할 위치와 어느 소스의 값이 적용되는지는 [로그인 키를 제공하는 관리형 소스](https://code.claude.com/docs/ko/managed-settings.md#which-managed-source-supplies-login-keys)를 참조하세요.

157* **게이트웨이 로그인 키**: Claude Code는 서버 관리 설정에서 [`forceLoginGatewayUrl`](https://code.claude.com/docs/ko/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](https://code.claude.com/docs/ko/settings-reference#gatewayinternalnetworks), 또는 [`forceLoginMethod`](https://code.claude.com/docs/ko/settings-reference#forceloginmethod)의 `"gateway"` 값을 읽지 않으므로, 거기의 값은 MDM 정책 또는 관리 설정 파일에 설정된 값을 적용하지도 숨기지도 않습니다. [`managedSourcesBehavior` 항목](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior)은 머신의 어느 관리 소스가 이들을 제공하는지 나타냅니다.158* **게이트웨이 로그인 키**: Claude Code는 서버 관리 설정에서 [`forceLoginGatewayUrl`](https://code.claude.com/docs/ko/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](https://code.claude.com/docs/ko/settings-reference#gatewayinternalnetworks), 또는 [`forceLoginMethod`](https://code.claude.com/docs/ko/settings-reference#forceloginmethod)의 `"gateway"` 값을 읽지 않으므로, 거기의 값은 MDM 정책 또는 관리 설정 파일에 설정된 값을 적용하지도 숨기지도 않습니다. [`managedSourcesBehavior` 항목](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior)은 머신의 어느 관리 소스가 이들을 제공하는지 나타냅니다.

158 159 

159### 가져오기 및 캐싱 동작160### 가져오기 및 캐싱 동작

Details

2424 2424 

2425유휴 압축은 다음 조건을 모두 충족하는 대화에 대해 기본적으로 켜져 있습니다:2425유휴 압축은 다음 조건을 모두 충족하는 대화에 대해 기본적으로 켜져 있습니다:

2426 2426 

2427* **세션**: 대화형 터미널 세션에 있거나, [Anthropic이 선택한 계정](#idle-compaction-in-vs-code-and-the-desktop-app)으로 VS Code 확장 프로그램의 채팅 패널 또는 데스크톱 앱의 Code 탭을 사용하고 있습니다2427* **세션**: 대화형 터미널 세션, VS Code 확장 프로그램의 채팅 패널, 또는 세션이 사용자의 컴퓨터에서 실행되거나 SSH를 통해 실행되는 경우 데스크톱 앱의 Code 탭을 사용하고 있습니다

2428* **자동 압축**: [`autoCompactEnabled`](#autocompactenabled)가 켜져 있습니다2428* **자동 압축**: [`autoCompactEnabled`](#autocompactenabled)가 켜져 있습니다

2429* **프롬프트 캐시**: 대화가 [1시간 프롬프트 캐시 TTL](https://code.claude.com/docs/ko/prompt-caching.md#which-ttl-each-request-gets)을 사용합니다2429* **프롬프트 캐시**: 대화가 [1시간 프롬프트 캐시 TTL](https://code.claude.com/docs/ko/prompt-caching.md#which-ttl-each-request-gets)을 사용합니다

2430* **기능 플래그**: Claude Code가 [Anthropic에서 기능 플래그를 가져올](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching) 수 있습니다2430* **기능 플래그**: Claude Code가 [Anthropic에서 기능 플래그를 가져올](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching) 수 있습니다

2431* **크기**: 대화의 컨텍스트가 토큰 임계값에 도달했습니다. 이 임계값은 기본값 200,000에서 [변경](#change-the-idle-compaction-threshold)할 수 있습니다2431* **크기**: 대화의 컨텍스트가 토큰 임계값에 도달했습니다. 이 임계값은 기본값 200,000에서 [변경](#change-the-idle-compaction-threshold)할 수 있습니다

2432* **유휴 시간**: 마지막 요청 이후 약 54분이 지났으며, 그 시점에 컴퓨터가 깨어 있습니다2432* **유휴 시간**: 마지막 요청 이후 약 1시간이 지났으며, 그때까지 컴퓨터가 깨어 있는 상태를 유지합니다

2433 2433 

2434유휴 압축을 끄려면 이 키를 `false`로 설정합니다.2434유휴 압축을 끄려면 이 키를 `false`로 설정합니다.

2435 2435 


2475Compacted using a summary written while you were away · turn off with "idleCompaction": false in settings.json2475Compacted using a summary written while you were away · turn off with "idleCompaction": false in settings.json

2476```2476```

2477 2477 

2478별도로 조치할 필요는 없습니다. 유휴 압축을 끄려면 `~/.claude/settings.json` 또는 다른 [설정 파일](https://code.claude.com/docs/ko/settings.md#settings-files-and-who-they-affect)에서 `idleCompaction`을 `false`로 설정합니다.2478별도로 조치할 필요는 없습니다. 유휴 압축을 끄려면 세션이 실행되는 컴퓨터 또는 WSL 배포판의 `~/.claude/settings.json`, 또는 다른 [설정 파일](https://code.claude.com/docs/ko/settings.md#settings-files-and-who-they-affect)에서 `idleCompaction`을 `false`로 설정합니다.

2479 

2480VS Code 확장 프로그램의 채팅 패널과 데스크톱 앱의 Code 탭에서는 Anthropic이 선택한 계정에 대해 유휴 압축이 실행됩니다. Claude Code는 사용자가 자리를 비운 동안 요약을 작성한 다음, 다음 메시지가 마지막 요청으로부터 1시간 이상 지나서 도착하는 경우에만 그 요약으로 압축합니다.

2481 2479 

2482### `plansDirectory`2480### `plansDirectory`

2483 2481 


5173 5171 

5174### `forceLoginMethod`5172### `forceLoginMethod`

5175 5173 

5176사람들이 로그인할 수 있는 계정 종류를 제한합니다. `"claudeai"`로 설정하여 claude.ai 계정만 허용하거나, `"console"`로 설정하여 Claude Console 계정만 허용하거나, `"gateway"`로 설정하여 사람들을 첫 번째 당사자 로그인 대신 [클라우드 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway)로 보냅니다. 관리자는 관리형 설정에서 설정하고 [`forceLoginOrgUUID`](#forceloginorguuid)와 쌍을 이루어 개발자의 claude.ai 로그인을 한 조직 내에 유지합니다. 설정 파일에서 `"claudeai"` 또는 `"console"`로 설정하면, Claude Code는 해당 파일이 적용되는 세션에서 [키 없는 Console 로그인](https://code.claude.com/docs/ko/authentication.md#sign-in-without-an-api-key)도 제공하지 않습니다.5174사람들이 로그인할 수 있는 계정 종류를 제한합니다. `"claudeai"`로 설정하여 claude.ai 계정만 허용하거나, `"console"`로 설정하여 Claude Console 계정만 허용하거나, `"gateway"`로 설정하여 사람들을 첫 번째 당사자 로그인 대신 [클라우드 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway)로 보냅니다. 관리자는 관리형 설정에서 설정하고 [`forceLoginOrgUUID`](#forceloginorguuid)와 쌍을 이루어 개발자의 claude.ai 로그인을 한 조직 내에 유지합니다.

5175 

5176설정 파일에서 `"claudeai"`로 설정하면, Claude Code는 해당 파일이 적용되는 세션에서 [키 없는 Console 로그인](https://code.claude.com/docs/ko/authentication.md#sign-in-without-an-api-key)도 제공하지 않습니다. `"console"`만 설정한 경우에는 로그인에 실패한 후에도 여전히 키 없는 로그인에 접근할 수 있습니다. Claude Code가 이를 제공하지 않도록 하려면 [관리 대상 머신에서 키 없는 로그인 제공 중지](https://code.claude.com/docs/ko/authentication.md#stop-offering-the-keyless-sign-in-on-managed-machines)를 참조하세요. 이 문서에는 `forceLoginOrgUUID`가 변경하는 다른 사항도 나와 있습니다.

5177 5177 

5178* **범위**: [`모든 파일`](#scopes). Claude Code는 [`forceLoginGatewayUrl`](#forcelogingatewayurl)과 동일한 소스에서만 `"gateway"`를 인정하며, 그 외의 모든 곳에서는 설정되지 않은 것으로 취급합니다.5178* **범위**: [`모든 파일`](#scopes). Claude Code는 [`forceLoginGatewayUrl`](#forcelogingatewayurl)과 동일한 소스에서만 `"gateway"`를 인정하며, 그 외의 모든 곳에서는 설정되지 않은 것으로 취급합니다.

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


5504 5504 

5505## 엔터프라이즈 및 관리형 설정5505## 엔터프라이즈 및 관리형 설정

5506 5506 

5507조직이 관리형 설정을 계산, 새로고침 및 결합하는 데 사용하는 키입니다. [관리형 설정 설정](https://code.claude.com/docs/ko/admin-setup.md)을 참조하세요.5507조직이 관리형 설정을 계산하고, 새로 고치고, 결합하는 데 사용하는 키입니다. [관리형 설정 설정하기](https://code.claude.com/docs/ko/admin-setup.md)를 참조하십시오.

5508 5508 

5509### `disableSideloadFlags`5509### `disableSideloadFlags`

5510 5510 

5511`--plugin-dir`, `--plugin-url`, `--agents`, `--mcp-config` CLI 플래그를 시작 시 거부하여 사용자가 [`strictKnownMarketplaces`](#strictknownmarketplaces)를 단일 실행으로 우회하는 데 사용할 수 없도록 합니다. Claude Code는 거부된 플래그의 이름을 지정하는 오류로 종료됩니다. [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서 Claude Code는 세션을 시작하고 인프로세스 `type: "sdk"` 항목 및 [Claude Tag](https://code.claude.com/docs/ko/claude-tag.md) 세션의 Slack 도구를 제외한 모든 서버 제공 `--mcp-config` 항목을 삭제합니다. Claude Code v2.1.193 이상이 필요합니다.5511시작 시 `--plugin-dir`, `--plugin-url`, `--agents`, `--mcp-config` CLI 플래그를 거부합니다. 이 플래그를 허용하면 사용자가 단일 실행에 한해 [`strictKnownMarketplaces`](#strictknownmarketplaces)를 우회할 수 있습니다. Claude Code는 거부된 플래그의 이름을 표시하는 오류와 함께 종료됩니다. [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서는 Claude Code가 대신 세션을 시작하고, 프로세스 내 `type: "sdk"` 항목과 [Claude Tag](https://code.claude.com/docs/ko/claude-tag.md) 세션의 Slack 도구를 제외한 서버 전달 `--mcp-config` 항목을 모두 삭제합니다. Claude Code v2.1.193 이상이 필요합니다.

5512 5512 

5513* **범위**: [`Managed`](#scopes)5513* **범위**: [`Managed`](#scopes)

5514* **유형**: Boolean5514* **유형**: Boolean

5515 * `true`: Claude Code는 시작 시 `--plugin-dir`, `--plugin-url`, `--agents`, `--mcp-config`를 거부하고 이름을 지정하는 오류로 종료됩니다. 클라우드 세션에서는 세션을 시작하고 인프로세스 `type: "sdk"` 항목 및 Claude Tag 세션의 Slack 도구를 제외한 모든 서버 제공 `--mcp-config` 항목을 삭제합니다.5515 * `true`: Claude Code가 시작 시 `--plugin-dir`, `--plugin-url`, `--agents`, `--mcp-config`를 거부하고 해당 플래그의 이름을 표시하는 오류와 함께 종료됩니다. 클라우드 세션에서는 대신 세션을 시작하고, 프로세스 내 `type: "sdk"` 항목과 Claude Tag 세션의 Slack 도구를 제외한 서버 전달 `--mcp-config` 항목을 모두 삭제합니다

5516 * `false`: Claude Code는 해당 플래그를 수락합니다.5516 * `false`: Claude Code가 해당 플래그를 허용합니다

5517* **기본값**: `false`5517* **기본값**: `false`

5518 5518 

5519```json managed-settings.json theme={null}5519```json managed-settings.json theme={null}


5522}5522}

5523```5523```

5524 5524 

5525Claude Code는 여전히 서버가 모두 인프로세스 `type: "sdk"` 항목인 `--mcp-config`를 수락하므로 Agent SDK 및 VS Code 확장이 계속 작동합니다. 사용자는 여전히 `claude mcp add` 또는 `.mcp.json` 파일로 서버를 추가할 수 있습니다. 서버별 제어의 경우 [`allowedMcpServers`](https://code.claude.com/docs/ko/managed-mcp)도 설정하세요. Claude Code v2.1.193 이상이 필요합니다.5525Claude Code는 모든 서버가 프로세스 내 `type: "sdk"` 항목인 `--mcp-config`는 여전히 허용하므로 Agent SDK와 VS Code 확장 프로그램은 계속 작동합니다. 사용자는 여전히 `claude mcp add` 또는 `.mcp.json` 파일로 서버를 추가할 수 있습니다. 서버별로 제어하려면 [`allowedMcpServers`](https://code.claude.com/docs/ko/managed-mcp)도 함께 설정하십시오. Claude Code v2.1.193 이상이 필요합니다.

5526 5526 

5527`disableSideloadFlags`는 다음 소스의 플러그인 폴더도 거부합니다:5527`disableSideloadFlags`는 다음 소스의 플러그인 폴더도 거부합니다.

5528 5528 

5529* **[`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/ko/env-vars#variables) 환경 변수**: 변수가 플러그인 폴더를 지정하면 Claude Code는 변수의 이름을 지정하고 설정을 해제하도록 안내하는 오류와 함께 시작 시 종료됩니다. Claude Code v2.1.280 이상이 필요합니다.5529* **[`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/ko/env-vars#variables) 환경 변수**: 이 변수가 플러그인 폴더를 지정하면 Claude Code는 시작 시 해당 변수의 이름을 표시하고 변수를 해제하라고 안내하는 오류와 함께 종료됩니다. Claude Code v2.1.280 이상이 필요합니다

5530* **Agent SDK [`addPlugins`](https://code.claude.com/docs/ko/agent-sdk/typescript#load-more-plugin-folders-with-addplugins) 옵션**: 애플리케이션이 `addPlugins`에서 `reloadPlugins()`에 플러그인 폴더를 전달하면 해당 호출은 오류와 함께 실패합니다. 세션은 이미 가지고 있던 플러그인으로 계속 실행됩니다. Claude Code v2.1.301 이상이 필요합니다.5530* **Agent SDK [`addPlugins`](https://code.claude.com/docs/ko/agent-sdk/typescript#load-more-plugin-folders-with-addplugins) 옵션**: 애플리케이션이 `addPlugins`에서 `reloadPlugins()`에 플러그인 폴더를 전달하면 해당 호출이 오류와 함께 실패합니다. 세션은 이미 가지고 있던 플러그인으로 계속 실행됩니다. Claude Code v2.1.301 이상이 필요합니다

5531 5531 

5532클라우드 세션에서 Claude Code는 또한 서버 제공 중간 세션 MCP 업데이트를 무시합니다. 이는 클라우드 세션 구성 및 SDK `setMcpServers()` 호출 뒤의 경로이며, 이러한 세션에 도달합니다. 인프로세스 `type: "sdk"` 항목 및 Claude Tag 세션의 Slack 도구는 거기서도 면제됩니다. v2.1.268 이전에는 이 삭제와 시작 삭제 모두 Claude Tag 세션의 Slack 도구를 제거했습니다. v2.1.239 이전에는 서버 제공 `--mcp-config`가 클라우드 세션이 시작되는 것을 차단했습니다.5532클라우드 세션에서 Claude Code는 서버가 전달하는 세션 중간 MCP 업데이트도 무시합니다. 이는 클라우드 세션 구성과 해당 세션에 도달하는 SDK `setMcpServers()` 호출이 사용하는 경로입니다. 여기서도 프로세스 내 `type: "sdk"` 항목과 Claude Tag 세션의 Slack 도구는 예외로 유지됩니다. v2.1.268 이전에는 이 삭제와 시작 시 삭제 모두 Claude Tag 세션의 Slack 도구도 제거했습니다. v2.1.239 이전에는 서버가 전달한 `--mcp-config`가 클라우드 세션의 시작을 차단했습니다.

5533 5533 

5534데스크톱 앱은 claude.ai에서 동기화된 플러그인 및 조직이 앱을 통해 배포하는 플러그인을 포함하여 일부 플러그인을 자체적으로 관리합니다. MDM, OS 수준 정책 또는 관리형 설정 파일을 통해 이 키를 디바이스에 배포하면 데스크톱 앱은 해당 디바이스의 다음 세션에 해당 플러그인을 전달하지 않습니다:5534데스크톱 앱은 claude.ai에서 동기화된 플러그인과 조직이 앱을 통해 배포하는 플러그인을 포함하여 일부 플러그인을 직접 관리합니다. MDM, OS 수준 정책 또는 관리형 설정 파일을 통해 이 키를 디바이스에 배포하면 데스크톱 앱은 해당 디바이스의 다음 세션에 이러한 플러그인을 전달하지 않습니다.

5535 5535 

5536* **[사용자 머신의 Code 세션](https://code.claude.com/docs/ko/desktop.md#environment-configuration)**: 사용자의 claude.ai 계정에 대해 활성화된 스킬 없이도 시작됩니다. Claude Code가 관리형 설정의 마켓플레이스에서 설치하는 플러그인은 여전히 로드됩니다. [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview)에서 디바이스의 `org-plugins` 디렉터리에 배포하는 플러그인의 MCP 서버는 데스크톱 앱이 자체적으로 연결하기 때문에 사용 가능한 상태로 유지됩니다. Claude Desktop v1.37937.0 이전에는 이러한 세션이 시작 시 실패했습니다.5536* **[사용자 머신의 Code 세션](https://code.claude.com/docs/ko/desktop.md#environment-configuration)**: 이 세션은 사용자의 claude.ai 계정에서 활성화된 스킬 없이 시작됩니다. 관리형 설정의 마켓플레이스에서 Claude Code가 설치하는 플러그인은 여전히 로드됩니다. [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview)에서는 디바이스의 `org-plugins` 디렉터리에 배포하는 플러그인의 MCP 서버도 계속 사용할 수 있습니다. 데스크톱 앱이 해당 서버에 직접 연결하기 때문입니다. Claude Desktop v1.37937.0 이전에는 이러한 세션이 대신 시작 시 실패했습니다.

5537* **[사용자 머신의 Cowork 세션](https://code.claude.com/docs/ko/managed-settings.md#where-and-when-a-policy-applies)**: 해당 플러그인 내의 스킬 및 사용자의 claude.ai 계정에 대해 활성화된 스킬은 사용 가능한 상태로 유지됩니다. [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview)에서 디바이스의 `org-plugins` 디렉터리에 배포하는 플러그인의 MCP 서버는 데스크톱 앱이 자체적으로 연결하기 때문에 사용 가능한 상태로 유지됩니다. Claude Desktop v1.44121.0 이전에는 이러한 세션이 시작 시 실패했습니다.5537* **[사용자 머신의 Cowork 세션](https://code.claude.com/docs/ko/managed-settings.md#where-and-when-a-policy-applies)**: 해당 플러그인 내부의 스킬과 사용자의 claude.ai 계정에서 활성화된 스킬은 계속 사용할 수 있습니다. [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview)에서는 디바이스의 `org-plugins` 디렉터리에 배포하는 플러그인의 MCP 서버도 계속 사용할 수 있습니다. 데스크톱 앱이 해당 서버에 직접 연결하기 때문입니다. Claude Desktop v1.44121.0 이전에는 이러한 세션이 대신 시작 시 실패했습니다.

5538 5538 

5539### `forceRemoteSettingsRefresh`5539### `forceRemoteSettingsRefresh`

5540 5540 

5541Claude Code가 [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)을 새로 가져올 때까지 CLI 시작을 차단합니다. 가져오기가 실패하면 Claude Code는 캐시된 설정이나 설정 없이 계속하지 않고 종료합니다. 환경이 관리형 정책 없이 세션이 실행되는 짧은 기간도 허용할 수 없을 때 설정하세요.5541Claude Code가 [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)을 새로 가져올 때까지 CLI 시작을 차단합니다. 가져오기에 실패하면 Claude Code는 캐시된 설정이나 설정 없이 계속 진행하는 대신 종료됩니다. 세션이 관리형 정책 없이 실행되는 짧은 시간조차 허용할 수 없는 환경에서 설정하십시오.

5542 5542 

5543키가 설정되지 않으면 Claude Code는 가져오기에서 시작을 차단하지 않지만, 개발자가 시작 시 로그인할 때 가져오기를 위해 최대 5초를 기다립니다. Cloud 게이트웨이 세션은 항상 기다리며, 게이트웨이에 도달할 수 없으면 종료됩니다.5543이 키가 설정되지 않은 경우 Claude Code는 가져오기 때문에 시작을 차단하지 않지만, 개발자가 시작 시 로그인하면 가져오기를 최대 5초 동안 기다립니다. Cloud 게이트웨이 세션은 항상 기다리며, 게이트웨이에 연결할 수 없으면 종료됩니다.

5544 5544 

5545* **범위**: [`Managed`](#scopes). Claude Code는 최우선 소스가 아닌 경우에도 모든 관리자 제어 관리형 소스에서 `true`를 인정합니다.5545* **범위**: [`Managed`](#scopes). Claude Code는 최우선 소스가 아니더라도 관리자가 제어하는 모든 관리형 소스의 `true`를 적용합니다.

5546* **유형**: Boolean5546* **유형**: Boolean

5547 * `true`: Claude Code는 서버 관리형 설정을 새로 가져올 때까지 시작을 차단하고, 가져오기가 실패하면 종료합니다.5547 * `true`: Claude Code가 서버 관리형 설정을 새로 가져올 때까지 시작을 차단하고, 가져오기에 실패하면 종료됩니다

5548 * `false`: Claude Code는 가져오기에서 시작을 차단하지 않지만, 로그인 시작 시 가져오기를 위해 최대 5초를 기다립니다.5548 * `false`: Claude Code가 가져오기 때문에 시작을 차단하지 않지만, 로그인과 함께 시작하는 경우 가져오기를 최대 5초 동안 기다립니다

5549* **기본값**: `false`5549* **기본값**: `false`

5550 5550 

5551```json managed-settings.json theme={null}5551```json managed-settings.json theme={null}


5554}5554}

5555```5555```

5556 5556 

5557MDM 프로필 또는 관리형 설정 파일에 설정하여 첫 번째 서버 페이로드가 도착하기 전에 실패 폐쇄 시작을 적용합니다. Claude Code는 서버 관리형 설정을 가져오는 세션에서만 검사를 적용하므로, [가져오지 않는](https://code.claude.com/docs/ko/server-managed-settings.md#platform-availability) 세션은 기다리지 않고 시작됩니다. `claude auth` 부명령은 면제되므로 사용자는 만료된 자격 증명이 가져오기 실패의 원인일 때 다시 인증할 수 있습니다. [실패 폐쇄 시작 적용](https://code.claude.com/docs/ko/server-managed-settings.md#enforce-fail-closed-startup)을 참조하세요.5557첫 번째 서버 페이로드가 도착하기 전에 fail-closed 시작을 강제하려면 MDM 프로필 또는 관리형 설정 파일에서 설정하십시오. Claude Code는 서버 관리형 설정을 가져오는 세션에서만 이 검사를 적용하므로, [설정을 가져오지 않는](https://code.claude.com/docs/ko/server-managed-settings.md#platform-availability) 세션은 기다리지 않고 시작합니다. `claude auth` 하위 명령은 예외이므로, 만료된 자격 증명 때문에 가져오기가 실패하는 경우 사용자가 다시 인증할 수 있습니다. [fail-closed 시작 강제하기](https://code.claude.com/docs/ko/server-managed-settings.md#enforce-fail-closed-startup)를 참조하십시오.

5558 5558 

5559### `managedSourcesBehavior`5559### `managedSourcesBehavior`

5560 5560 

5561Claude Code가 조직이 제공하는 최우선 [관리형 소스](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)만 적용할지, 아니면 제공하는 모든 관리자 소스를 결합할지 선택합니다. 기본적으로 Claude Code는 [정책 키](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)를 전달하는 최우선 소스를 가져가고 나머지는 무시합니다. 정책 키는 이 키와 `wslInheritsWindowsSettings`를 제외한 모든 설정 키입니다. 해당 기본값에서 서버 관리형 설정 또는 MDM 정책이 정책 키를 제공하면 `managed-settings.json` 파일은 [Claude Code가 모든 관리자 소스에서 읽는 키](https://code.claude.com/docs/ko/managed-settings.md#keys-read-from-every-admin-source)만 제공합니다. `"merge"`를 사용하면 제공하는 모든 관리자 소스가 결합된 정책에 키를 제공합니다. Claude Code v2.1.242 이상이 필요합니다.5561Claude Code가 조직이 전달하는 최우선 [관리형 소스](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)만 적용할지, 아니면 전달되는 모든 관리자 소스를 결합할지 선택합니다. 기본적으로 Claude Code는 [정책 키](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)를 포함하는 최우선 소스를 사용하고 나머지는 무시합니다. 정책 키는 이 키와 `wslInheritsWindowsSettings`를 제외한 모든 설정 키입니다. 이 기본값에서는 서버 관리형 설정이나 MDM 정책이 정책 키를 전달하면 `managed-settings.json` 파일은 [Claude Code가 모든 관리자 소스에서 읽는 키](https://code.claude.com/docs/ko/managed-settings.md#keys-read-from-every-admin-source)만 제공합니다. `"merge"`를 사용하면 전달하는 모든 관리자 소스가 각자의 키를 하나의 결합된 정책에 제공합니다. Claude Code v2.1.242 이상이 필요합니다.

5562 5562 

5563최우선 소스 아래에 [순위가 지정된](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources) 모든 소스가 관리자의 제어 하에 있는 경우에만 `"merge"`를 설정하세요. Claude Code는 `permissions.allow` 규칙과 같은 하위 소스의 항목을 정책에 추가하기 때문입니다.5563최우선 소스보다 [순위](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)가 낮은 모든 소스가 관리자의 제어하에 있는 경우에만 `"merge"`를 설정하십시오. 그러면 Claude Code가 `permissions.allow` 규칙과 같은 하위 소스의 항목을 정책에 추가하기 때문입니다.

5564 5564 

5565* **범위**: [`Managed`](#scopes). Claude Code는 이 키 또는 정책 키를 전달하는 최우선 소스에서 이 키를 읽고, 순위가 낮은 모든 소스에서 이 키를 무시합니다. 따라서 하위 소스는 위의 소스와 결합하도록 자신을 선택할 수 없습니다. Windows HKCU 레지스트리 또는 [포함 호스트의 부모 설정](https://code.claude.com/docs/ko/managed-settings.md#let-an-embedding-host-add-policy)은 병합에 참여하지 않습니다.5565* **범위**: [`Managed`](#scopes). Claude Code는 이 키 또는 정책 키를 포함하는 최우선 소스에서 이 키를 읽고, 그보다 순위가 낮은 모든 소스의 이 키는 무시합니다. 따라서 하위 소스가 스스로 상위 소스와의 결합을 선택할 수 없습니다. Windows HKCU 레지스트리와 [임베딩 호스트의 부모 설정](https://code.claude.com/docs/ko/managed-settings.md#let-an-embedding-host-add-policy)은 모두 병합에 참여하지 않습니다.

5566* **유형**: string, 다음 중 하나:5566* **유형**: string, 다음 중 하나:

5567 * `"first-wins"`: 정책 키를 전달하는 최우선 소스가 정책을 제공하고, 하위 소스는 [Claude Code가 모든 관리자 소스에서 읽는 키](https://code.claude.com/docs/ko/managed-settings.md#keys-read-from-every-admin-source)만 제공합니다.5567 * `"first-wins"`: 정책 키를 포함하는 최우선 소스가 정책을 제공하고, 하위 소스는 [Claude Code가 모든 관리자 소스에서 읽는 키](https://code.claude.com/docs/ko/managed-settings.md#keys-read-from-every-admin-source)만 제공합니다

5568 * `"merge"`: 제공하는 모든 관리자 소스가 키를 제공하며, 아래 규칙에 따라 결합됩니다.5568 * `"merge"`: 전달하는 모든 관리자 소스가 각자의 키를 제공하며, 아래 규칙에 따라 결합됩니다

5569* **기본값**: `"first-wins"`5569* **기본값**: `"first-wins"`

5570 5570 

5571배포하는 최우선 소스에서 키를 제공합니다. 서버 관리형 설정을 받지 않는 머신은 Claude Code가 이 키 또는 정책 키를 전달하는 최우선 소스에서 키를 읽기 때문에 MDM 프로필에도 키가 필요합니다. `managed-settings.json` 파일은 최하위 순위 관리자 소스이므로, 거기에 설정된 `"merge"`는 결합할 아래 소스가 없습니다. 서버 관리형 설정에서 키는 다음과 같습니다:5571배포하는 최우선 소스에서 이 키를 전달하십시오. 서버 관리형 설정을 받지 않는 머신에는 MDM 프로필에도 이 키가 필요합니다. Claude Code는 이 키 또는 정책 키를 포함하는 최우선 소스에서 이 키를 읽기 때문입니다. `managed-settings.json` 파일은 순위가 가장 낮은 관리자 소스이므로, 여기에 설정한 `"merge"`는 결합할 하위 소스가 없습니다. 서버 관리형 설정에서 이 키는 다음과 같습니다.

5572 5572 

5573```json theme={null}5573```json theme={null}

5574{5574{


5576}5576}

5577```5577```

5578 5578 

5579`"merge"` 아래에서 Claude Code는 각 키를 종류별로 결합합니다. 이 표는 각 종류에 대한 규칙을 제공합니다. 제한 허용 목록, 값 전체 및 최우선 소스 전용 행은 포함하는 모든 키의 이름을 지정하고, 다른 행은 예를 제공합니다:5579`"merge"`에서 Claude Code는 각 키를 종류에 따라 결합합니다. 이 표는 각 종류의 규칙을 보여줍니다. 제한 허용 목록, 전체 값 사용, 최우선 소스 전용 행은 해당하는 모든 키를 나열하며, 나머지 행은 예시를 제공합니다.

5580 5580 

5581| 키의 종류 | Claude Code가 결합하는 방법 | 키 |5581| 키 종류 | Claude Code의 결합 방식 | 키 |

5582| :- | :- | :- |5582| :- | :- | :- |

5583| 목록 | 모든 소스의 항목을 결합합니다. | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) 및 기타 목록 키 |5583| 목록 | 모든 소스의 항목을 결합합니다 | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) 및 기타 목록 키 |

5584| 잠금 | 모든 소스가 설정하는 가장 엄격한 값을 적용합니다. 어떤 소스도 엄격한 값을 설정하지 않으면 최우선 소스에서만 더 느슨한 값을 적용합니다. | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) 및 기타 boolean 또는 enum 잠금 |5584| 잠금 | 어느 소스에서든 설정된 가장 엄격한 값을 적용합니다. 엄격한 값을 설정한 소스가 없으면 최우선 소스의 더 느슨한 값만 적용합니다 | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) 및 기타 boolean 또는 enum 잠금 |

5585| 제한 허용 목록 | 하위 소스의 항목을 추가하지 않고 설정하는 최우선 소스에서 목록 전체를 가져옵니다. 최우선 소스가 설정하지 않으면 다음 소스에서 전체를 가져옵니다. | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`allowedProviders`](#allowedproviders), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins) 및 [`fallbackModel`](#fallbackmodel) 체인 |5585| 제한 허용 목록 | 목록을 설정한 최우선 소스에서 목록 전체를 가져오며, 하위 소스의 항목은 추가하지 않습니다. 최우선 소스가 목록을 설정하지 않으면 그다음 소스에서 목록 전체를 가져옵니다 | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`allowedProviders`](#allowedproviders), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins) 및 [`fallbackModel`](#fallbackmodel) 체인 |

5586| 값 전체 | 하위 소스의 항목이나 필드를 결합하지 않고 설정하는 최우선 소스에서 값 전체를 가져옵니다. 최우선 소스가 설정하지 않으면 다음 소스에서 전체를 가져옵니다. | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) |5586| 전체 값 사용 | 값을 설정한 최우선 소스에서 값 전체를 가져오며, 하위 소스의 항목이나 필드는 결합하지 않습니다. 최우선 소스가 값을 설정하지 않으면 그다음 소스에서 값 전체를 가져옵니다 | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) |

5587| 제공된 MCP 서버 | 모든 소스의 서버 이름을 결합합니다. 두 소스가 동일한 이름을 설정하면 상위 소스의 전체 항목을 적용합니다. | [`managedMcpServers`](#managedmcpservers) |5587| 제공된 MCP 서버 | 모든 소스의 서버 이름을 결합합니다. 두 소스가 같은 이름을 설정하면 상위 소스의 항목 전체를 적용합니다 | [`managedMcpServers`](#managedmcpservers) |

5588| 최우선 소스에서만 읽기 | 정책 키를 전달하는 최우선 소스에서만 키를 읽으므로, 최우선 소스가 설정하지 않을 때에도 하위 소스의 값은 무시됩니다. | [`apiKeyHelper`](#apikeyhelper), [`awsAuthRefresh`](#awsauthrefresh), [`awsCredentialExport`](#awscredentialexport), [`gcpAuthRefresh`](#gcpauthrefresh), [`otelHeadersHelper`](#otelheadershelper), `proxyAuthHelper`, [`forceLoginOrgUUID`](#forceloginorguuid), [`forceLoginMethod`](#forceloginmethod)의 `"claudeai"` 및 `"console"` 값, [`parentSettingsBehavior`](#parentsettingsbehavior), [`modelPicker`](#modelpicker), [`policyHelper`](#policyhelper), [`permissions.defaultMode`](#permissions-defaultmode) |5588| 최우선 소스에서만 읽음 | 정책 키를 포함하는 최우선 소스에서만 키를 읽으므로, 최우선 소스가 값을 설정하지 않더라도 하위 소스의 값은 무시됩니다 | [`apiKeyHelper`](#apikeyhelper), [`awsAuthRefresh`](#awsauthrefresh), [`awsCredentialExport`](#awscredentialexport), [`gcpAuthRefresh`](#gcpauthrefresh), [`otelHeadersHelper`](#otelheadershelper), `proxyAuthHelper`, [`parentSettingsBehavior`](#parentsettingsbehavior), [`modelPicker`](#modelpicker), [`policyHelper`](#policyhelper), [`permissions.defaultMode`](#permissions-defaultmode) |

5589| `env` | [관리자 소스 전체에서 변수별로 병합합니다](https://code.claude.com/docs/ko/managed-settings.md#keys-read-from-every-admin-source). `"first-wins"` 및 `"merge"` 모두에서 | [`env`](#env) |5589| `env` | `"first-wins"`와 `"merge"` 모두에서 [관리자 소스 전체에 걸쳐 변수별로 병합합니다](https://code.claude.com/docs/ko/managed-settings.md#keys-read-from-every-admin-source) | [`env`](#env) |

5590| 다른 모든 키 | 설정하는 최우선 소스에서 값을 가져옵니다. | [`cleanupPeriodDays`](#cleanupperioddays), [`model`](#model) |5590| 기타 모든 키 | 값을 설정한 최우선 소스의 값을 사용합니다 | [`cleanupPeriodDays`](#cleanupperioddays), [`model`](#model) |

5591 5591 

5592`sandbox.credentials.awsPairs` 및 `sandbox.ripgrep`을 전체로 가져오려면 Claude Code v2.1.257 이상이 필요합니다.5592`sandbox.credentials.awsPairs`와 `sandbox.ripgrep`의 전체 값 사용에는 Claude Code v2.1.257 이상이 필요합니다.

5593 5593 

5594몇 가지 키는 표에 표시되지 않는 조건을 추가합니다:5594일부 키에는 표에 나타나지 않는 조건이 추가됩니다.

5595 5595 

5596* **[`policyHelper`](#policyhelper)**: Claude Code는 정책 키를 전달하는 최우선 소스가 MDM 정책 또는 관리형 설정 파일일 때만 인정하므로, 서버 관리형 설정에서는 적용되지 않습니다.5596* **[`policyHelper`](#policyhelper)**: Claude Code는 정책 키를 포함하는 최우선 소스가 MDM 정책 또는 관리형 설정 파일인 경우에만 이 키를 적용하므로, 서버 관리형 설정에서는 적용되지 않습니다.

5597* **[`modelOverrides`](#modeloverrides)**: `availableModels`와 쌍을 이룹니다. Claude Code는 설정하는 최우선 소스에서 `modelOverrides`를 가져옵니다. 단, 상위 소스가 `modelOverrides` 없이 `availableModels`를 설정하는 경우는 제외됩니다. 이 경우 모든 소스에서 `modelOverrides`를 무시합니다.5597* **[`modelOverrides`](#modeloverrides)**: `availableModels`와 짝을 이룹니다. Claude Code는 `modelOverrides`를 설정한 최우선 소스에서 이 값을 가져오지만, 상위 소스가 `modelOverrides` 없이 `availableModels`를 설정한 경우는 예외입니다. 이 경우 모든 소스의 `modelOverrides`를 무시합니다.

5598* **[`forceLoginGatewayUrl`](#forcelogingatewayurl), [`gatewayInternalNetworks`](#gatewayinternalnetworks) 및 [`forceLoginMethod`](#forceloginmethod)의 `"gateway"` 값**: Claude Code는 서버 관리형 설정에서 이들 중 어느 것도 읽지 않으므로, 거기의 값은 MDM 정책 또는 관리형 설정 파일에 설정된 값을 적용하거나 숨기지 않습니다. 머신의 관리자 소스 중에서 정책 키를 전달하는 최우선 순위 소스만 서버 관리형 설정도 있는지 여부와 관계없이 이들을 제공합니다.5598* **[`forceLoginGatewayUrl`](#forcelogingatewayurl), [`gatewayInternalNetworks`](#gatewayinternalnetworks) 및 [`forceLoginMethod`](#forceloginmethod)의 `"gateway"` 값**: Claude Code는 이들 중 어느 것도 서버 관리형 설정에서 읽지 않으므로, 그곳의 값은 적용되지 않으며 MDM 정책이나 관리형 설정 파일에 설정된 값을 가리지도 않습니다. 서버 관리형 설정의 존재 여부와 관계없이, 머신의 관리자 소스 중 정책 키를 포함하는 최상위 소스만 이 값들을 제공합니다.

5599* **[`allowedProviders`](#allowedproviders)**: 표의 규칙 이후에도 머신 자체의 목록이 결과를 제한하며, 해당 항목의 범위 참고 사항에 명시되어 있습니다.5599* **[`forceLoginOrgUUID`](#forceloginorguuid) 및 [`forceLoginMethod`](#forceloginmethod)의 `"claudeai"`와 `"console"` 값**: 어떤 값이 적용되는지는 표가 아닌 [로그인 키를 제공하는 관리형 소스](https://code.claude.com/docs/ko/managed-settings.md#which-managed-source-supplies-login-keys)에서 확인하십시오.

5600* **[`allowedProviders`](#allowedproviders)**: 표의 규칙을 적용한 후에도, 해당 항목의 범위 설명에 명시된 대로 머신 자체의 목록이 결과를 계속 제한합니다.

5600 5601 

5601머신에서 결합된 소스를 확인하려면 `/status`를 실행하고 [`Setting sources` 행을 읽으세요](https://code.claude.com/docs/ko/managed-settings#read-the-source-in-/status).5602머신에서 어떤 소스가 결합되었는지 확인하려면 `/status`를 실행하고 [`Setting sources` 줄을 확인하십시오](https://code.claude.com/docs/ko/managed-settings#read-the-source-in-/status).

5602 5603 

5603### `parentSettingsBehavior`5604### `parentSettingsBehavior`

5604 5605 

5605Claude Code가 Agent SDK 또는 IDE 확장과 같은 포함 호스트 프로세스에서 제공하는 관리형 설정을 적용할지 선택합니다. 관리자 배포 관리형 계층도 있을 때. `"first-wins"`를 사용하면 Claude Code는 호스트 제공 설정을 삭제합니다. `"merge"`를 사용하면 제한 전용 필터를 통해 관리자 계층 아래에 적용합니다. 호스트가 자신의 제한을 시작하는 세션에 전달해야 할 때 `"merge"`를 설정하세요. 예를 들어 Claude Desktop이 게이트웨이의 송신 허용 목록을 제공합니다.5606관리자가 배포한 관리형 계층도 존재할 때, Agent SDK나 IDE 확장 프로그램과 같은 임베딩 호스트 프로세스가 제공하는 관리형 설정을 Claude Code가 적용할지 선택합니다. `"first-wins"`를 사용하면 Claude Code가 호스트 제공 설정을 삭제하고, `"merge"`를 사용하면 제한 전용 필터를 거쳐 관리자 계층 아래에 적용합니다. 호스트가 자신이 시작하는 세션에 자체 제한을 전달해야 하는 경우 `"merge"`를 설정하십시오. 예를 들어 Claude Desktop이 게이트웨이의 egress 허용 목록을 전달하는 경우입니다.

5606 5607 

5607* **범위**: [`Managed`](#scopes). Claude Code는 최우선 관리자 제어 관리형 소스에서 읽습니다.5608* **범위**: [`Managed`](#scopes). Claude Code는 관리자가 제어하는 최우선 관리형 소스에서 이 키를 읽습니다.

5608* **유형**: string, 다음 중 하나:5609* **유형**: string, 다음 중 하나:

5609 * `"first-wins"`: Claude Code는 관리자 배포 관리형 계층이 있을 때 호스트 제공 설정을 삭제합니다.5610 * `"first-wins"`: 관리자가 배포한 관리형 계층이 존재하면 Claude Code가 호스트 제공 설정을 삭제합니다

5610 * `"merge"`: Claude Code는 제한 전용 필터를 통해 관리자 계층 아래에 호스트 제공 설정을 적용합니다.5611 * `"merge"`: Claude Code가 제한 전용 필터를 거쳐 호스트 제공 설정을 관리자 계층 아래에 적용합니다

5611* **기본값**: `"first-wins"`5612* **기본값**: `"first-wins"`

5612 5613 

5613```json managed-settings.json theme={null}5614```json managed-settings.json theme={null}


5616}5617}

5617```5618```

5618 5619 

5619관리자 배포 관리형 계층이 없을 때 이 키는 효과가 없습니다. 호스트의 설정은 유일한 관리형 계층으로 적용되며, 여전히 제한 값으로 필터링됩니다. 필터의 제한 및 관리형 소스가 상호 작용하는 방식에 대해서는 [포함 호스트의 부모 설정](https://code.claude.com/docs/ko/managed-settings.md#parent-settings-from-embedding-hosts) 및 [부모 설정 제한](https://code.claude.com/docs/ko/claude-apps-gateway#restrict-parent-settings)을 참조하세요.5620관리자가 배포한 관리형 계층이 없으면 이 키는 효과가 없습니다. 이 경우 호스트의 설정이 유일한 관리형 계층으로 적용되며, 여전히 제한적인 값으로 필터링됩니다. 필터의 한계와 관리형 소스 간의 상호 작용에 대해서는 [임베딩 호스트의 부모 설정](https://code.claude.com/docs/ko/managed-settings.md#parent-settings-from-embedding-hosts) 및 [부모 설정 제한하기](https://code.claude.com/docs/ko/claude-apps-gateway#restrict-parent-settings)를 참조하십시오.

5620 5621 

5621### `policyHelper`5622### `policyHelper`

5622 5623 

5623배포하는 실행 파일을 실행하여 시작 시 관리형 설정을 계산하므로 정적 파일 대신 디바이스 상태, ID 또는 원격 서비스에서 정책을 파생할 수 있습니다. Claude Code는 첫 번째 프롬프트를 수락하기 전에 도우미를 실행하고 내보내는 설정을 세션의 관리형 설정으로 처리합니다.5624시작 시 관리형 설정을 계산하는, 직접 배포한 실행 파일을 실행합니다. 이를 통해 정적 파일 대신 디바이스 상태, ID 또는 원격 서비스에서 정책을 도출할 수 있습니다. Claude Code는 첫 번째 프롬프트를 받기 전에 헬퍼를 실행하고, 헬퍼가 출력하는 설정을 해당 세션의 관리형 설정으로 취급합니다.

5624 5625 

5625* **범위**: [`Managed`](#scopes). macOS plist, Windows HKLM 레지스트리 또는 관리형 설정 파일에서 읽습니다. Claude Code는 [정책 키](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)를 전달하는 최우선 관리형 소스에서 키를 읽고, 해당 소스가 이 세 가지 중 하나일 때만 도우미를 실행합니다. 서버 관리형 설정, HKCU 레지스트리 및 호스트 제공 부모 설정에서 키를 무시합니다.5626* **범위**: [`Managed`](#scopes). macOS plist, Windows HKLM 레지스트리 또는 관리형 설정 파일에서 읽습니다. Claude Code는 [정책 키](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)를 포함하는 최우선 관리형 소스에서 이 키를 읽고, 해당 소스가 이 세 가지 중 하나인 경우에만 헬퍼를 실행합니다. 서버 관리형 설정, HKCU 레지스트리, 호스트 제공 부모 설정의 이 키는 무시합니다.

5626* **유형**: `path`, `timeoutMs` 및 `refreshIntervalMs`가 있는 object5627* **유형**: `path`, `timeoutMs`, `refreshIntervalMs`를 포함하는 object

5627* **기본값**: 설정 해제되어 도우미가 실행되지 않습니다.5628* **기본값**: 설정되지 않음, 따라서 헬퍼가 실행되지 않음

5628 5629 

5629서버 관리형 설정이 시작 시 정책을 제공하면 도우미의 소스보다 우선하고 도우미는 실행되지 않습니다.5630시작 시 서버 관리형 설정이 정책을 전달하면 헬퍼의 소스보다 우선하며 헬퍼는 실행되지 않습니다.

5630 5631 

5631나중에 설정 가져오기가 서버 관리형 설정이 제거되었음을 보고하면 Claude Code는 다음 시작을 기다리지 않고 그 시점에서 도우미를 실행합니다. 출력은 세션의 나머지를 관리하고, 실패한 실행은 [실패한 시작 실행](#helper-failures)과 동일한 메시지로 세션을 종료합니다.5632이후 설정 가져오기에서 서버 관리형 설정이 제거된 것으로 보고되면, Claude Code는 다음 시작을 기다리지 않고 그 시점에 헬퍼를 실행합니다. 헬퍼의 출력이 세션의 나머지 부분을 관리하며, 실행에 실패하면 [시작 시 실행 실패](#helper-failures)와 같은 메시지와 함께 세션이 종료됩니다.

5632 5633 

5633이 예제는 5초 시간 초과로 도우미를 실행하고 5분마다 다시 실행합니다:5634이 예시는 5초 타임아웃으로 헬퍼를 실행하고 5분마다 다시 실행합니다.

5634 5635 

5635```json managed-settings.json theme={null}5636```json managed-settings.json theme={null}

5636{5637{


5642}5643}

5643```5644```

5644 5645 

5645#### 도우미 출력 작성5646#### 헬퍼 출력 작성하기

5646 5647 

5647Claude Code는 인수 없이 도우미를 실행하고, 환경에서 `CLAUDE_CODE_VERSION`을 설정하고, stdout에서 JSON 봉투를 읽으며, 1 MiB로 제한됩니다.5648Claude Code는 인수 없이 헬퍼를 실행하고, 헬퍼의 환경에 `CLAUDE_CODE_VERSION`을 설정하며, stdout에서 최대 1 MiB의 JSON 엔벨로프를 읽습니다.

5648 5649 

5649`managedSettings` 키 아래에 설정을 배치합니다. `managedSettings` 키가 없는 베어 설정 객체는 `managedSettings` undefined로 구문 분석되고 아무것도 적용하지 않으며, Claude Code는 오류를 보고하지 않습니다:5650설정은 `managedSettings` 키 아래에 넣으십시오. `managedSettings` 키가 없는 단순 설정 객체는 `managedSettings`가 정의되지 않은 상태로 파싱되어 아무것도 적용되지 않으며, Claude Code는 오류를 보고하지 않습니다.

5650 5651 

5651```json theme={null}5652```json theme={null}

5652{5653{


5656}5657}

5657```5658```

5658 5659 

5659도우미가 `managedSettings`를 내보내면 해당 객체는 실행의 유일한 관리형 설정 소스가 됩니다. Claude Code는 MDM, 파일 및 HKCU 소스를 무시하고, 도우미의 출력에서만 [교차 소스 키](https://code.claude.com/docs/ko/managed-settings.md#keys-read-from-every-admin-source)를 읽고, [부모 설정](https://code.claude.com/docs/ko/managed-settings.md#parent-settings-from-embedding-hosts)을 병합하지 않습니다.5660헬퍼가 `managedSettings`를 출력하면 해당 객체가 해당 실행의 유일한 관리형 설정 소스가 됩니다. Claude Code는 MDM, 파일, HKCU 소스를 무시하고, [소스 간 키](https://code.claude.com/docs/ko/managed-settings.md#keys-read-from-every-admin-source)를 헬퍼의 출력에서만 읽으며, [부모 설정](https://code.claude.com/docs/ko/managed-settings.md#parent-settings-from-embedding-hosts)을 병합하지 않습니다.

5660 5661 

5661시작 `forceRemoteSettingsRefresh` 검사는 도우미 전에 실행되고 모든 관리자 소스를 읽습니다. 도우미가 `managedSettings`를 생략하는 봉투로 `0`을 종료하면 관리형 설정을 제공하지 않으며, 다른 소스는 평소대로 적용됩니다.5662시작 시 `forceRemoteSettingsRefresh` 검사는 헬퍼보다 먼저 실행되며 모든 관리자 소스를 읽습니다. `managedSettings`가 없는 엔벨로프와 함께 `0`으로 종료하는 헬퍼는 관리형 설정을 제공하지 않으며, 다른 소스가 평소대로 적용됩니다.

5662 5663 

5663#### 도우미 실패5664#### 헬퍼 실패

5664 5665 

5665도우미 실행은 다음과 같은 경우 실패합니다:5666다음과 같은 경우 헬퍼 실행이 실패합니다.

5666 5667 

5667* `path`가 [`policyHelper.path`](#policyhelper-path)의 규칙을 위반합니다.5668* `path`가 [`policyHelper.path`](#policyhelper-path)의 규칙을 위반하는 경우.

5668* `path`에 일반 파일이 없습니다. Claude Code는 도우미를 시작하기 전에 동일한 `timeoutMs` 예산 내에서 파일을 확인하므로, 응답하지 않는 네트워크 마운트로 인해 실행이 실패할 수 있습니다.5669* `path`에 일반 파일이 없는 경우. Claude Code는 헬퍼를 시작하기 전에 동일한 `timeoutMs` 한도 내에서 파일을 확인하므로, 응답하지 않는 네트워크 마운트로 인해 실행이 실패할 수 있습니다.

5669* 도우미가 0이 아닌 값으로 종료되거나, `timeoutMs`가 경과할 때 여전히 실행 중이거나, 예를 들어 실행 가능하지 않기 때문에 전혀 시작되지 않습니다.5670* 헬퍼가 0이 아닌 코드로 종료하거나, `timeoutMs`가 경과해도 계속 실행 중이거나, 실행 파일이 아닌 경우처럼 아예 시작되지 않는 경우.

5670* 도우미가 stdout 또는 stderr에 1 MiB 이상을 씁니다.5671* 헬퍼가 stdout 또는 stderr에 1 MiB를 초과하여 출력하는 경우.

5671* stdout이 단일 JSON 객체가 아니거나, `managedSettings`에 [Claude Code가 복구할 수 없는 스키마 위반](https://code.claude.com/docs/ko/managed-settings.md#find-entries-claude-code-dropped)이 있습니다.5672* stdout이 단일 JSON 객체가 아니거나, `managedSettings`에 [Claude Code가 복구할 수 없는 스키마 위반](https://code.claude.com/docs/ko/managed-settings.md#find-entries-claude-code-dropped)이 있는 경우.

5672 5673 

5673시작 실행이 실패하면 Claude Code는 이유를 인쇄하고 시작을 거부합니다. 0이 아닌 종료 후 이유에는 도우미의 stderr 또는 stderr가 비어 있을 때 stdout이 포함됩니다. 시간 초과 후 이유는 `timeoutMs` 제한의 이름을 지정하고 도우미의 출력을 포함하지 않습니다. 거부는 대화형 세션, `claude -p`, Agent SDK 세션, [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md) 및 대부분의 부명령을 포함합니다.5674시작 시 실행이 실패하면 Claude Code는 이유를 출력하고 시작을 거부합니다. 0이 아닌 코드로 종료한 경우 이유에는 헬퍼의 stderr가 포함되며, stderr가 비어 있으면 stdout이 포함됩니다. 시간 초과된 경우 이유에는 `timeoutMs` 한도가 명시되며 헬퍼의 출력은 포함되지 않습니다. 거부는 대화형 세션, `claude -p`, Agent SDK 세션, [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md) 및 대부분의 하위 명령에 적용됩니다.

5674 5675 

5675거부는 의도적이므로 중단 복원력이 필요한 도우미는 자신의 캐시에서 제공하고 `0`을 종료해야 합니다.5676이 거부는 의도된 것이므로, 장애에 대한 복원력이 필요한 헬퍼는 자체 캐시에서 응답을 제공하고 `0`으로 종료해야 합니다.

5676 5677 

5677백그라운드 새로고침이 실패하면 Claude Code는 마지막 성공한 정책을 유지하고, `/status`는 새로고침이 성공할 때까지 이유와 함께 실패한 새로고침을 표시합니다. 각 새로고침은 시작 실행과 동일한 `timeoutMs` 및 실패 규칙에서 실행됩니다.5678백그라운드 새로 고침이 실패하면 Claude Code는 마지막으로 성공한 정책을 유지하며, 새로 고침이 성공할 때까지 `/status`에 실패한 새로 고침과 그 이유가 표시됩니다. 각 새로 고침은 시작 시 실행과 동일한 `timeoutMs` 및 실패 규칙에 따라 실행됩니다.

5678 5679 

5679`--debug`를 사용하면 Claude Code는 모든 실행에서 도우미의 stderr을 [디버그 로그](https://code.claude.com/docs/ko/debug-your-config.md)에 씁니다.5680`--debug`를 사용하면 Claude Code는 모든 실행에서 헬퍼의 stderr를 [디버그 로그](https://code.claude.com/docs/ko/debug-your-config.md)에 기록합니다.

5680 5681 

5681Claude Code는 잘못된 `policyHelper` 값을 [삭제된 항목](https://code.claude.com/docs/ko/managed-settings.md#find-entries-claude-code-dropped)으로 보고하고 도우미를 실행하지 않고 나머지 관리형 설정에서 세션을 시작합니다. 잘못된 값에는 베어 경로 문자열 및 [최소값](#policyhelper-timeoutms) 아래의 `timeoutMs`가 포함됩니다.5682Claude Code는 유효하지 않은 `policyHelper` 값을 [삭제된 항목](https://code.claude.com/docs/ko/managed-settings.md#find-entries-claude-code-dropped)으로 보고하고, 헬퍼를 실행하지 않고 나머지 관리형 설정으로 세션을 시작합니다. 유효하지 않은 값에는 단순 경로 문자열과 [최솟값](#policyhelper-timeoutms)보다 작은 `timeoutMs`가 포함됩니다.

5682 5683 

5683도우미를 끄려면 설정하는 소스에서 키를 제거합니다.5684헬퍼를 끄려면 해당 키를 설정한 소스에서 키를 제거하십시오.

5684 5685 

5685### `policyHelper.path`5686### `policyHelper.path`

5686 5687 

5687Claude Code가 실행하는 도우미 실행 파일의 이름을 지정합니다. 경로가 아래 규칙을 위반할 때 발생하는 일은 [도우미 실패](#helper-failures)를 참조하세요.5688Claude Code가 실행하는 헬퍼 실행 파일을 지정합니다. 경로가 아래 규칙을 위반할 때 발생하는 상황은 [헬퍼 실패](#helper-failures)를 참조하십시오.

5688 5689 

5689* **범위**: [`Managed`](#scopes). [`policyHelper`](#policyhelper)가 읽히는 macOS plist, Windows HKLM 레지스트리 또는 관리형 설정 파일에서 읽습니다.5690* **범위**: [`Managed`](#scopes). [`policyHelper`](#policyhelper)를 읽는 곳인 macOS plist, Windows HKLM 레지스트리 또는 관리형 설정 파일에서 읽습니다.

5690* **유형**: string, `.` 또는 `..` 세그먼트 없이 정규화된 형식의 절대 경로. Windows에서는 `.exe`로 끝나는 드라이브 문자 또는 UNC 경로5691* **유형**: string, `.` 또는 `..` 세그먼트가 없는 정규화된 형식의 절대 경로. Windows에서는 `.exe`로 끝나는 드라이브 문자 경로 또는 UNC 경로

5691* **기본값**: 없음. `policyHelper`가 설정되면 필수5692* **기본값**: 없음. `policyHelper`가 설정된 경우 필수

5692 5693 

5693```json managed-settings.json theme={null}5694```json managed-settings.json theme={null}

5694{5695{


5700 5701 

5701### `policyHelper.timeoutMs`5702### `policyHelper.timeoutMs`

5702 5703 

5703Claude Code가 도우미를 기다리는 시간을 설정하고, 실행을 실패로 처리합니다. 시간 초과 실행은 0이 아닌 종료와 동일한 방식으로 실패하므로 시작 시 Claude Code는 시작을 거부합니다.5704Claude Code가 실행을 실패로 처리하기 전에 헬퍼를 기다리는 시간을 설정합니다. 시간 초과된 실행은 0이 아닌 코드로 종료한 경우와 동일하게 실패하므로, 시작 시에는 Claude Code가 시작을 거부합니다.

5704 5705 

5705* **범위**: [`Managed`](#scopes). [`policyHelper`](#policyhelper)가 읽히는 macOS plist, Windows HKLM 레지스트리 또는 관리형 설정 파일에서 읽습니다.5706* **범위**: [`Managed`](#scopes). [`policyHelper`](#policyhelper)를 읽는 곳인 macOS plist, Windows HKLM 레지스트리 또는 관리형 설정 파일에서 읽습니다.

5706* **유형**: integer, 밀리초, 최소 `1000`5707* **유형**: integer, 밀리초, 최솟값 `1000`

5707* **기본값**: `10000`5708* **기본값**: `10000`

5708 5709 

5709```json managed-settings.json theme={null}5710```json managed-settings.json theme={null}


5717 5718 

5718### `policyHelper.refreshIntervalMs`5719### `policyHelper.refreshIntervalMs`

5719 5720 

5720Claude Code가 백그라운드에서 간격으로 도우미를 다시 실행하여 정책 변경이 실행 중인 세션에 도달하도록 합니다. 새로고침이 성공하면 출력이 이전 관리형 설정을 다시 시작 없이 대체합니다. 새로고침이 실패하면 Claude Code는 이미 있는 정책을 유지합니다.5721Claude Code가 백그라운드에서 일정 간격으로 헬퍼를 다시 실행하도록 하여 정책 변경 사항이 실행 중인 세션에 반영되도록 합니다. 새로 고침이 성공하면 그 출력이 재시작 없이 이전 관리형 설정을 대체합니다. 새로 고침이 실패하면 Claude Code는 기존 정책을 유지합니다.

5721 5722 

5722* **범위**: [`Managed`](#scopes). [`policyHelper`](#policyhelper)가 읽히는 macOS plist, Windows HKLM 레지스트리 또는 관리형 설정 파일에서 읽습니다.5723* **범위**: [`Managed`](#scopes). [`policyHelper`](#policyhelper)를 읽는 곳인 macOS plist, Windows HKLM 레지스트리 또는 관리형 설정 파일에서 읽습니다.

5723* **유형**: integer, 밀리초: 새로고침을 비활성화하려면 `0`, 그렇지 않으면 최소 `60000`5724* **유형**: integer, 밀리초: 새로 고침을 비활성화하려면 `0`, 그 외에는 최소 `60000`

5724* **기본값**: 설정 해제되어 Claude Code가 시작 시 도우미를 한 번 실행합니다.5725* **기본값**: 설정되지 않음, 따라서 Claude Code는 시작 시 헬퍼를 한 번 실행

5725 5726 

5726이 예제는 5분마다 도우미를 다시 실행합니다:5727이 예시는 5분마다 헬퍼를 다시 실행합니다.

5727 5728 

5728```json managed-settings.json theme={null}5729```json managed-settings.json theme={null}

5729{5730{


5736 5737 

5737### `wslInheritsWindowsSettings`5738### `wslInheritsWindowsSettings`

5738 5739 

5739Claude Code on WSL이 Windows 정책 체인에서 관리형 설정을 읽도록 하여 HKLM 및 Windows 관리형 설정 파일이 `/etc/claude-code` 및 아래의 HKCU보다 우선하도록 합니다. 체인이 켜져 있는 동안 Claude Code는 [HKLM 레지스트리 값 또는 `C:\Program Files\ClaudeCode\` 폴더에 Windows 관리자 문서가 없을 때](https://code.claude.com/docs/ko/managed-settings#present-admin-documents)만 `/etc/claude-code`를 읽습니다. Windows에 이미 배포한 정책을 WSL 세션으로 확장하도록 설정하여 호스트 세션과 동일한 규칙을 따르도록 합니다. Claude Code는 HKLM 레지스트리 키 또는 `C:\Program Files\ClaudeCode\` 아래의 관리형 설정 파일 또는 드롭인에 설정된 경우에만 인정하며, 둘 다 Windows 관리자가 작성해야 합니다.5740WSL의 Claude Code가 Windows 정책 체인에서 관리형 설정을 읽도록 합니다. 이때 HKLM과 Windows 관리형 설정 파일이 `/etc/claude-code`보다 우선하며, HKCU는 그 아래에 위치합니다. 체인이 켜져 있는 동안 Claude Code는 HKLM 레지스트리 값이나 `C:\Program Files\ClaudeCode\` 폴더에 [Windows 관리자 문서가 없는 경우](https://code.claude.com/docs/ko/managed-settings.md#present-admin-documents)에만 `/etc/claude-code`를 읽습니다. Windows에 이미 배포한 정책을 같은 머신의 WSL 세션으로 확장하여 호스트 세션과 동일한 규칙을 따르도록 하려면 이 키를 설정하십시오. Claude Code는 HKLM 레지스트리 키 또는 `C:\Program Files\ClaudeCode\` 아래의 관리형 설정 파일이나 드롭인에 설정된 경우에만 이 키를 적용하며, 두 곳 모두 쓰기에 Windows 관리자 권한이 필요합니다.

5740 5741 

5741* **범위**: [`Managed`](#scopes). 관리자 제어 Windows 소스에서.5742* **범위**: [`Managed`](#scopes). 관리자가 제어하는 Windows 소스에 설정합니다.

5742* **유형**: Boolean5743* **유형**: Boolean

5743 * `true`: Claude Code on WSL은 Windows 정책 체인에서 관리형 설정을 읽고, Windows 관리자 문서가 없을 때만 `/etc/claude-code`를 읽습니다.5744 * `true`: WSL의 Claude Code가 Windows 정책 체인에서 관리형 설정을 읽고, Windows 관리자 문서가 없는 경우에만 `/etc/claude-code`를 읽습니다

5744 * `false`: WSL은 `/etc/claude-code`만 읽습니다.5745 * `false`: WSL이 `/etc/claude-code`만 읽습니다

5745* **기본값**: `false`, WSL은 `/etc/claude-code`만 읽습니다.5746* **기본값**: `false`, 따라서 WSL은 `/etc/claude-code`만 읽음

5746 5747 

5747```json managed-settings.json theme={null}5748```json managed-settings.json theme={null}

5748{5749{


5750}5751}

5751```5752```

5752 5753 

5753관리자 소스가 체인을 켜면 HKCU 정책은 HKCU도 키를 `true`로 설정할 때만 WSL에서 체인에 참여합니다. 해당 복사본은 체인을 자체적으로 켜지 않습니다. 이 키만 포함하고 `true` 또는 `false`로 설정된 Windows 소스는 정책 소스로 계산되지 않으므로 하위 우선 소스는 여전히 정책을 제공합니다. 이 키는 네이티브 Windows에 영향을 주지 않습니다.5754관리자 소스가 체인을 켜면, HKCU 정책은 HKCU도 이 키를 `true`로 설정한 경우에만 WSL에서 체인에 합류합니다. 해당 사본만으로는 체인이 켜지지 않습니다. `true` 또는 `false`로 설정된 이 키만 포함하는 Windows 소스는 정책 소스로 간주되지 않으므로, 우선순위가 더 낮은 소스가 여전히 정책을 제공합니다. 이 키는 네이티브 Windows에는 영향을 미치지 않습니다.

5754 5755 

5755Claude Code는 따옴표 있음 또는 없음으로 `true` 및 `false`를 읽고 `null`을 키 제거로 읽습니다. 다른 값을 보유하는 관리자 제어 Windows 소스는 체인이 켜져 있는 [현재 관리자 문서](https://code.claude.com/docs/ko/managed-settings.md#present-admin-documents)로 계산됩니다. `/etc/claude-code` 또는 HKCU는 적용되지 않으며, 시작 경고는 키의 이름을 지정합니다. 존재하지만 읽을 수 없는 HKLM 값 또는 Windows 폴더 파일도 체인이 켜져 있는지 여부와 관계없이 `/etc/claude-code`가 적용되는 것을 방지합니다. Claude Code v2.1.282 이상이 필요합니다.5756Claude Code는 `true`와 `false`를 따옴표 유무와 관계없이 읽으며, `null`은 키를 제거하는 것으로 읽습니다. 관리자가 제어하는 Windows 소스에 다른 값이 있으면 체인이 켜진 [존재하는 관리자 문서](https://code.claude.com/docs/ko/managed-settings.md#present-admin-documents)로 간주됩니다. 이 경우 `/etc/claude-code`와 HKCU 모두 적용되지 않으며, 시작 시 경고에 해당 키의 이름이 표시됩니다. 존재하지만 읽을 수 없는 HKLM 값이나 Windows 폴더 파일도 체인이 켜져 있는지 여부와 관계없이 `/etc/claude-code`가 적용되지 않도록 합니다. Claude Code v2.1.282 이상이 필요합니다.

5756 5757 

5757## 전역 설정5758## 전역 설정

5758 5759 

skills.md +10 −3

Details

395| 필드 | 필수 | 설명 |395| 필드 | 필수 | 설명 |

396| :- | :- | :- |396| :- | :- | :- |

397| `name` | 아니요 | `/` 메뉴에 표시되는 명령 이름입니다. 기본값은 디렉터리 이름입니다. [스킬이 명령 이름을 얻는 방법](#how-a-skill-gets-its-command-name)을 참조하여 필드가 스킬을 호출하기 위해 입력하는 이름과 어떻게 상호 작용하는지 확인하세요. |397| `name` | 아니요 | `/` 메뉴에 표시되는 명령 이름입니다. 기본값은 디렉터리 이름입니다. [스킬이 명령 이름을 얻는 방법](#how-a-skill-gets-its-command-name)을 참조하여 필드가 스킬을 호출하기 위해 입력하는 이름과 어떻게 상호 작용하는지 확인하세요. |

398| `description` | 권장 | 스킬이 무엇을 하는지, 언제 사용할지입니다. Claude는 이를 사용하여 스킬을 적용할 시기를 결정합니다. 생략하면 마크다운 콘텐츠의 첫 번째 비어 있지 않은 줄을 사용합니다. 주요 사용 사례를 먼저 입력하세요. 결합된 `description` 및 `when_to_use` 텍스트는 컨텍스트 사용을 줄이기 위해 스킬 목록에서 1,536자로 잘립니다. |398| `description` | 권장 | 스킬이 무엇을 하는지, 언제 사용할지입니다. Claude는 이를 사용하여 스킬을 적용할 시기를 결정합니다. 생략하면 마크다운 콘텐츠의 첫 번째 비어 있지 않은 줄을 사용합니다. 주요 사용 사례를 먼저 입력하세요. 결합된 `description` 및 `when_to_use` 텍스트는 컨텍스트 사용을 줄이기 위해 스킬 목록에서 1,536자로 잘립니다. 텍스트의 꺾쇠괄호는 [`&lt;` 및 `&gt;`로 표시됩니다](#angle-brackets-in-a-skill-description). |

399| `when_to_use` | 아니요 | Claude가 스킬을 호출해야 할 때에 대한 추가 컨텍스트입니다. 예를 들어 트리거 구문이나 예제 요청입니다. 스킬 목록의 `description`에 추가되며 1,536자 제한에 포함됩니다. |399| `when_to_use` | 아니요 | Claude가 스킬을 호출해야 할 때에 대한 추가 컨텍스트입니다. 예를 들어 트리거 구문이나 예제 요청입니다. 스킬 목록의 `description`에 추가되며 1,536자 제한에 포함됩니다. |

400| `argument-hint` | 아니요 | 자동 완성 중에 표시되는 힌트로 예상 인수를 나타냅니다. 예: `[issue-number]` 또는 `[filename] [format]`. |400| `argument-hint` | 아니요 | 자동 완성 중에 표시되는 힌트로 예상 인수를 나타냅니다. 예: `[issue-number]` 또는 `[filename] [format]`. |

401| `arguments` | 아니요 | 스킬 콘텐츠에서 [`$name` 치환](#available-string-substitutions)을 위한 명명된 위치 인수입니다. 공백으로 구분된 문자열 또는 YAML 목록을 허용합니다. 이름은 순서대로 인수 위치에 매핑됩니다. |401| `arguments` | 아니요 | 스킬 콘텐츠에서 [`$name` 치환](#available-string-substitutions)을 위한 명명된 위치 인수입니다. 공백으로 구분된 문자열 또는 YAML 목록을 허용합니다. 이름은 순서대로 인수 위치에 매핑됩니다. |


778 778 

779기본 `bash` 셸을 사용하면 0이 아닌 종료를 예상하는 다른 명령에 `|| true`를 추가합니다. 문제를 찾을 때 1을 종료하는 검사 스크립트가 한 예입니다.779기본 `bash` 셸을 사용하면 0이 아닌 종료를 예상하는 다른 명령에 `|| true`를 추가합니다. 문제를 찾을 때 1을 종료하는 검사 스크립트가 한 예입니다.

780 780 

781#### 주입된 명령의 제어 문자781#### 셸 명령이 실행되지 않은 경우

782 782 

783`No shell command in <name> was run`은 파일의 `!` 명령 중 하나에 탭이나 줄 바꿈 이외의 원시 제어 문자가 포함되어 있어 어떤 명령도 실행되지 않았음을 의미합니다. [해당 문자를 찾아 제거하는 방법](https://code.claude.com/docs/ko/errors.md#no-shell-command-was-run)을 참조합니다.783`No shell command in <name> was run`은 해당 스킬의 셸 명령 중 하나에 도구가 허용하지 않는 문자가 포함되어 있음을 의미합니다. 해당 문자를 찾아 제거하려면 [오류 참조](https://code.claude.com/docs/ko/errors.md#no-shell-command-was-run)를 참조합니다.

784 784 

785#### 주입된 명령의 권한 확인785#### 주입된 명령의 권한 확인

786 786 


1229 1229 

1230예산을 높이려면 [`skillListingBudgetFraction`](https://code.claude.com/docs/ko/settings-reference#skilllistingbudgetfraction) 설정(예: `0.02` = 2%) 또는 `SLASH_COMMAND_TOOL_CHAR_BUDGET` 환경 변수를 고정 문자 수로 설정하세요. 다른 스킬을 위해 예산을 확보하려면 [`skillOverrides`](#override-skill-visibility-from-settings)에서 낮은 우선순위 항목을 `"name-only"`로 설정하여 설명 없이 나열되도록 하세요. 또한 소스에서 `description` 및 `when_to_use` 텍스트를 자르세요. 각 항목의 결합된 텍스트는 예산에 관계없이 1,536자로 제한되므로 주요 사용 사례를 먼저 배치하세요. 상한은 [`skillListingMaxDescChars`](https://code.claude.com/docs/ko/settings-reference#skilllistingmaxdescchars)로 구성할 수 있습니다.1230예산을 높이려면 [`skillListingBudgetFraction`](https://code.claude.com/docs/ko/settings-reference#skilllistingbudgetfraction) 설정(예: `0.02` = 2%) 또는 `SLASH_COMMAND_TOOL_CHAR_BUDGET` 환경 변수를 고정 문자 수로 설정하세요. 다른 스킬을 위해 예산을 확보하려면 [`skillOverrides`](#override-skill-visibility-from-settings)에서 낮은 우선순위 항목을 `"name-only"`로 설정하여 설명 없이 나열되도록 하세요. 또한 소스에서 `description` 및 `when_to_use` 텍스트를 자르세요. 각 항목의 결합된 텍스트는 예산에 관계없이 1,536자로 제한되므로 주요 사용 사례를 먼저 배치하세요. 상한은 [`skillListingMaxDescChars`](https://code.claude.com/docs/ko/settings-reference#skilllistingmaxdescchars)로 구성할 수 있습니다.

1231 1231 

1232### 스킬 설명의 꺾쇠괄호가 `&lt;` 및 `&gt;`로 표시됨

1233 

1234Claude Code는 `description` 및 `when_to_use` 필드의 `<`와 `>`를 `&lt;`와 `&gt;`로 표시합니다. `<branch>`와 같은 자리 표시자를 표시하려면 대괄호 또는 [`argument-hint`](#frontmatter-reference)를 사용하세요:

1235 

1236* **대괄호**: `<branch>`를 `[branch]`로 바꾸세요. 입력한 그대로 표시됩니다

1237* **`argument-hint`**: 자리 표시자를 새 `argument-hint: <branch>` 줄로 옮기세요. 명령 이름 뒤에 표시됩니다. 스킬을 claude.ai 또는 Skills API에도 업로드하는 경우 먼저 [해당 위치에서 `argument-hint`가 허용되는지 확인하세요](#using-skill-frontmatter-outside-claude-code).

1238 

1232### 개인 스킬이 사라짐1239### 개인 스킬이 사라짐

1233 1240 

1234`~/.claude/skills/`에 만든 스킬 폴더가 사라졌다면 `~/.claude/skills/.trash/`를 확인하세요. Claude Code가 [claude.ai에서 스킬을 동기화](#how-synced-skills-behave)할 때는 별도의 `synced` 하위 폴더로 다운로드하며, 사용자가 만든 폴더는 이동하거나 삭제하지 않습니다.1241`~/.claude/skills/`에 만든 스킬 폴더가 사라졌다면 `~/.claude/skills/.trash/`를 확인하세요. Claude Code가 [claude.ai에서 스킬을 동기화](#how-synced-skills-behave)할 때는 별도의 `synced` 하위 폴더로 다운로드하며, 사용자가 만든 폴더는 이동하거나 삭제하지 않습니다.

sub-agents.md +1 −1

Details

938 938 

939Claude가 기다리는 동안 작업을 계속하려면 터미널에서 **Ctrl+B**를 누르거나 VS Code에서 [**Run in background**](https://code.claude.com/docs/ko/vs-code.md#move-a-running-command-or-subagent-to-the-background)를 클릭합니다.939Claude가 기다리는 동안 작업을 계속하려면 터미널에서 **Ctrl+B**를 누르거나 VS Code에서 [**Run in background**](https://code.claude.com/docs/ko/vs-code.md#move-a-running-command-or-subagent-to-the-background)를 클릭합니다.

940 940 

941포크 모드를 끄는 대신 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/ko/env-vars) 환경 변수를 `1`로 설정하면, Claude는 모든 서브에이전트를 기다립니다. 백그라운드 명령도 꺼지며, **Ctrl+B**를 눌러도 아무것도 백그라운드로 이동하지 않습니다.941포크 모드를 끄는 대신 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/ko/env-vars) 환경 변수를 `1`로 설정하면, Claude는 계속 진행하기 전에 서브에이전트가 완료될 때까지 기다립니다. 백그라운드 명령도 꺼지며, **Ctrl+B**를 눌러도 아무것도 백그라운드로 이동하지 않습니다.

942 942 

943#### 백그라운드 서브에이전트의 도구, 권한 및 결과943#### 백그라운드 서브에이전트의 도구, 권한 및 결과

944 944 

terminal-config.md +50 −50

Details

144 144 

145Backspace를 누를 때마다 전체 단어가 삭제되면, 터미널이 일반 Backspace에 대해 `^H`를 전송하는 것입니다. [`CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0`](https://code.claude.com/docs/ko/env-vars)을 설정하세요. 그러면 Backspace와 Ctrl+H가 각각 한 문자씩 삭제합니다. macOS 또는 Linux에서 터미널이 Ctrl+Backspace에 대해 `^H`를 전송하기 때문에 Ctrl+Backspace가 한 문자만 삭제하는 경우, 대신 변수를 `1`로 설정하세요.145Backspace를 누를 때마다 전체 단어가 삭제되면, 터미널이 일반 Backspace에 대해 `^H`를 전송하는 것입니다. [`CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0`](https://code.claude.com/docs/ko/env-vars)을 설정하세요. 그러면 Backspace와 Ctrl+H가 각각 한 문자씩 삭제합니다. macOS 또는 Linux에서 터미널이 Ctrl+Backspace에 대해 `^H`를 전송하기 때문에 Ctrl+Backspace가 한 문자만 삭제하는 경우, 대신 변수를 `1`로 설정하세요.

146 146 

147## 색상 테마 일치시키기147## 색상 테마 맞추기

148 148 

149`/theme` 명령을 사용하거나 `/config`의 테마 선택기를 사용하여 터미널과 일치하는 Claude Code 테마를 선택합니다. 자동 옵션을 선택하면 터미널의 밝은 배경 또는 어두운 배경을 감지하므로 테마가 터미널이 변경될 때마다 OS 모양 변경을 따릅니다. Claude Code는 터미널 애플리케이션에서 설정하는 터미널 자체의 색상 구성표를 제어하지 않습니다.149`/theme` 명령 또는 `/config`의 테마 선택기를 사용하여 터미널에 맞는 Claude Code 테마를 선택합니다. 자동 옵션을 선택하면 터미널의 밝은 배경 또는 어두운 배경을 감지하므로, 터미널이 OS 화면 모드 변경을 따를 때마다 테마도 함께 따라갑니다. Claude Code는 터미널 자체의 색 구성표를 제어하지 않으며, 이는 터미널 애플리케이션에서 설정됩니다.

150 150 

151인터페이스 하단에 표시되는 내용을 사용자 정의하려면 현재 모델, 작업 디렉토리, git 분기 또는 기타 컨텍스트를 표시하는 [사용자 정의 상태 줄](https://code.claude.com/docs/ko/statusline.md)을 구성합니다.151인터페이스 하단에 표시되는 내용을 사용자 지정하려면 현재 모델, 작업 디렉터리, git 브랜치 또는 기타 컨텍스트를 보여주는 [사용자 지정 상태줄](https://code.claude.com/docs/ko/statusline.md)을 구성합니다.

152 152 

153### 사용자 정의 테마 만들기153### 사용자 지정 테마 만들기

154 154 

155기본 제공 사전 설정 외에도 `/theme`은 정의한 사용자 정의 테마와 설치된 [플러그인](https://code.claude.com/docs/ko/plugins/components.md#themes-and-output-styles)에서 제공한 테마를 나열합니다. 목록 끝에서 \*\*새 사용자 정의 테마…\*\*를 선택하여 대화형으로 만듭니다. 테마 이름을 지정한 다음 개별 색상 토큰을 선택하여 재정의합니다. 사용자 정의 테마가 강조 표시된 상태에서 `Ctrl+E`를 눌러 편집합니다.155`/theme`에는 기본 제공 프리셋 외에도 사용자가 정의한 사용자 지정 테마와 설치된 [플러그인](https://code.claude.com/docs/ko/plugins/components.md#themes-and-output-styles)이 제공하는 테마가 모두 나열됩니다. 목록 끝에 있는 \*\*New custom theme…\*\*을 선택하면 대화형으로 테마를 만들 수 있습니다. 테마 이름을 지정한 다음 재정의할 개별 색상 토큰을 선택합니다. 사용자 지정 테마가 강조 표시된 상태에서 `Ctrl+E`를 누르면 해당 테마를 편집할 수 있습니다.

156 156 

157각 사용자 정의 테마는 `~/.claude/themes/`의 JSON 파일입니다. `.json` 확장자를 제외한 파일 이름이 테마의 슬러그이며, 테마를 선택하면 `custom:<slug>`이 테마 기본 설정으로 저장됩니다. 파일에는 세 가지 선택적 필드가 있습니다.157각 사용자 지정 테마는 `~/.claude/themes/`에 있는 JSON 파일입니다. `.json` 확장자를 제외한 파일 이름이 테마의 슬러그가 되며, 테마를 선택하면 `custom:<slug>`가 테마 기본 설정으로 저장됩니다. 파일에는 세 가지 선택적 필드가 있습니다.

158 158 

159| 필드 | 유형 | 설명 |159| 필드 | 유형 | 설명 |

160| :- | :- | :- |160| :- | :- | :- |

161| `name` | string | `/theme`에 표시되는 표시 레이블입니다. 파일 이름 슬러그로 기본 설정됩니다 |161| `name` | string | `/theme`에 표시되는 레이블입니다. 기본값은 파일 이름 슬러그입니다 |

162| `base` | string | 테마가 시작되는 기본 제공 사전 설정: `dark`, `light`, `dark-daltonized`, `light-daltonized`, `dark-ansi`, 또는 `light-ansi`. 기본값은 `dark`입니다 |162| `base` | string | 테마의 기반이 되는 기본 제공 프리셋으로, `dark`, `light`, `dark-daltonized`, `light-daltonized`, `dark-ansi`, `light-ansi` 중 하나입니다. 기본값은 `dark`입니다 |

163| `overrides` | object | 색상 토큰 이름을 색상 값으로 매핑합니다. 여기에 나열되지 않은 토큰은 기본 사전 설정으로 통과됩니다 |163| `overrides` | object | 색상 토큰 이름을 색상 값에 매핑한 객체입니다. 여기에 나열되지 않은 토큰은 기반 프리셋의 값을 사용합니다 |

164 164 

165색상 값은 `#rrggbb`, `#rgb`, `rgb(r,g,b)`, `ansi256(n)`, 또는 `ansi:<name>`을 허용합니다. 여기서 `<name>`은 `red` 또는 `cyanBright`와 같은 16개의 표준 ANSI 색상 이름 중 하나입니다. 알 수 없는 토큰과 잘못된 색상 값은 무시되므로 오타가 렌더링을 손상시킬 수 없습니다.165색상 값으로는 `#rrggbb`, `#rgb`, `rgb(r,g,b)`, `ansi256(n)` 또는 `ansi:<name>`을 사용할 수 있으며, 여기서 `<name>`은 `red`나 `cyanBright`와 같은 16가지 표준 ANSI 색상 이름 중 하나입니다. 알 수 없는 토큰과 잘못된 색상 값은 무시되므로 오타로 인해 렌더링이 깨지지 않습니다.

166 166 

167다음 예제는 어두운 사전 설정을 유지하지만 프롬프트 악센트, 오류 텍스트 및 성공 텍스트를 다시 칠하는 테마를 정의합니다.167다음 예시는 dark 프리셋을 유지하면서 프롬프트 강조 색상, 오류 텍스트, 성공 텍스트의 색상을 변경하는 테마를 정의합니다.

168 168 

169```json ~/.claude/themes/dracula.json theme={null}169```json ~/.claude/themes/dracula.json theme={null}

170{170{


178}178}

179```179```

180 180 

181Claude Code는 `~/.claude/themes/`를 감시하고 파일이 추가되거나 변경될 때 다시 로드하므로 편집기에서 만든 편집 내용이 다시 시작하지 않고 실행 중인 세션에 적용됩니다. Claude Code가 시작될 때 `~/.claude/themes/` 폴더 자체가 없었다면 첫 번째 테마 파일을 만든 후 한 번 다시 시작합니다. 그 후에는 다시 시작하지 않고 변경 사항이 적용됩니다.181Claude Code는 `~/.claude/themes/`를 감시하다가 파일이 추가되거나 변경되면 다시 로드하므로, 편집기에서 수정한 내용이 재시작 없이 실행 중인 세션에 적용됩니다. Claude Code를 시작할 때 `~/.claude/themes/` 폴더 자체가 존재하지 않았다면, 첫 번째 테마 파일을 만든 후 한 번 재시작합니다. 그 이후에는 변경 사항이 재시작 없이 적용됩니다.

182 182 

183아래 참조는 `overrides`에서 설정할 수 있는 토큰을 다룹니다. `/theme`의 대화형 편집기는 라이브 미리 보기와 함께 동일한 토큰을 표시하며, 여기서 생략된 온보딩 화면 색상과 같은 몇 가지 단일 목적 악센트도 표시합니다.183아래 참조에서는 `overrides`에 설정할 수 있는 토큰을 다룹니다. `/theme`의 대화형 편집기는 동일한 토큰을 실시간 미리보기와 함께 보여주며, 여기서는 생략된 온보딩 화면 색상과 같은 몇 가지 단일 용도 강조 색상도 함께 표시합니다.

184 184 

185> **색상 토큰 참조**185> **색상 토큰 참조**

186>186>

187> 다음 예제는 여러 그룹의 토큰을 결합합니다. 브랜드 악센트, 계획 모드 테두리, diff 배경 및 메시지 배경입니다.187> 다음 예시는 아래 여러 그룹의 토큰을 조합합니다. 브랜드 강조 색상, 플랜 모드 테두리, diff 배경, 메시지 배경이 포함됩니다.

188>188>

189> ```json ~/.claude/themes/midnight.json theme={null}189> ```json ~/.claude/themes/midnight.json theme={null}

190> {190> {


200> }200> }

201> ```201> ```

202>202>

203> #### 텍스트 및 악센트 색상203> #### 텍스트 및 강조 색상

204>204>

205> 기본 브랜드 악센트와 인터페이스 전체에서 사용되는 전경 텍스트 음영을 제어합니다.205> 인터페이스 전반에서 사용되는 기본 브랜드 강조 색상과 전경 텍스트 색조를 제어합니다.

206>206>

207> | 토큰 | 제어 대상 |207> | 토큰 | 제어 대상 |

208> | :- | :- |208> | :- | :- |

209> | `claude` | 기본 브랜드 악센트, 스피너 및 어시스턴트 레이블에 사용됨 |209> | `claude` | 기본 브랜드 강조 색상으로, 스피너와 어시스턴트 레이블에 사용됩니다 |

210> | `text` | 기본 전경 텍스트 |210> | `text` | 기본 전경 텍스트 |

211> | `inverseText` | 상태 배지와 같은 색상 배경 위에 그려진 텍스트 |211> | `inverseText` | 상태 배지처럼 색상이 있는 배경 위에 그려지는 텍스트 |

212> | `inactive` | 힌트, 타임스탬프 및 비활성화된 항목과 같은 보조 텍스트 |212> | `inactive` | 힌트, 타임스탬프, 비활성화된 항목과 같은 보조 텍스트 |

213> | `subtle` | 희미한 테두리 및 강조 해제된 보조 텍스트 |213> | `subtle` | 희미한 테두리 및 덜 강조된 보조 텍스트 |

214> | `suggestion` | 자동 완성 제안 및 선택기의 선택 강조 |214> | `suggestion` | 자동 완성 제안 및 선택기의 선택 강조 표시 |

215> | `permission` | 권한 프롬프트 및 선택기를 포함한 대화 상자 테두리 |215> | `permission` | 권한 프롬프트와 선택기를 포함한 대화 상자 테두리 |

216> | `remember` | 메모리 및 `CLAUDE.md` 표시기 |216> | `remember` | 메모리 및 `CLAUDE.md` 표시기 |

217>217>

218> #### 상태 색상218> #### 상태 색상

219>219>

220> 메시지 및 표시기 전체에서 성공, 실패 및 경고 상태를 신호합니다.220> 메시지와 표시기 전반에서 성공, 실패, 경고 상태를 나타냅니다.

221>221>

222> | 토큰 | 제어 대상 |222> | 토큰 | 제어 대상 |

223> | :- | :- |223> | :- | :- |

224> | `success` | 성공 메시지 및 통과 확인 |224> | `success` | 성공 메시지 및 통과한 검사 |

225> | `error` | 오류 메시지 및 실패 |225> | `error` | 오류 메시지 및 실패 |

226> | `warning` | 경고, 주의 메시지 및 자동 모드 표시기 |226> | `warning` | 경고, 주의 메시지 및 자동 모드 표시기 |

227> | `merged` | 병합된 풀 요청 상태 |227> | `merged` | 병합된 풀 리퀘스트 상태 |

228>228>

229> #### 입력 상자 및 모드 표시기229> #### 입력 상자 및 모드 표시기

230>230>

231> 입력 상자 테두리 색상과 권한 모드 또는 표시기가 활성화된 동안 표시되는 악센트를 설정합니다.231> 입력 상자 테두리 색상과 권한 모드 또는 표시기가 활성화되어 있는 동안 표시되는 강조 색상을 설정합니다.

232>232>

233> | 토큰 | 제어 대상 |233> | 토큰 | 제어 대상 |

234> | :- | :- |234> | :- | :- |

235> | `promptBorder` | 입력 상자 테두리 |235> | `promptBorder` | 입력 상자 테두리 |

236> | `planMode` | 계획 모드 악센트, 계획 메시지 및 계획 모드 대화 상자 |236> | `planMode` | 플랜 모드 강조 색상, 플랜 메시지 및 플랜 모드 대화 상자 |

237> | `autoAccept` | 편집 수락 모드 악센트 |237> | `autoAccept` | 편집 수락 모드 강조 색상 |

238> | `bashBorder` | `!` 셸 명령을 입력할 때 입력 상자 테두리 |238> | `bashBorder` | `!` 셸 명령을 입력할 때의 입력 상자 테두리 |

239> | `ide` | IDE 연결 표시기 |239> | `ide` | IDE 연결 표시기 |

240> | `fastMode` | 빠른 모드 표시기 |240> | `fastMode` | 빠른 모드 표시기 |

241> | `effortUltra` | [ultracode](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)가 켜져 있는 동안 입력 상자 테두리의 `ultracode` 태그입니다. 이 색상의 재정의는 Claude Code v2.1.239 이상에서 적용됩니다 |241> | `effortUltra` | [ultracode](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)가 켜져 있는 동안 입력 상자 테두리에 표시되는 `ultracode` 태그. 이 색상의 재정의는 Claude Code v2.1.239 이상에서 적용됩니다 |

242>242>

243> #### Diff 렌더링243> #### diff 렌더링

244>244>

245> 파일 편집 및 검토에서 추가되고 제거된 코드를 칠합니다.245> 파일 편집 및 검토에서 추가되거나 제거된 코드의 색상을 지정합니다.

246>246>

247> | 토큰 | 제어 대상 |247> | 토큰 | 제어 대상 |

248> | :- | :- |248> | :- | :- |

249> | `diffAdded` | 추가된 줄의 배경 |249> | `diffAdded` | 추가된 줄의 배경 |

250> | `diffRemoved` | 제거된 줄의 배경 |250> | `diffRemoved` | 제거된 줄의 배경 |

251> | `diffAddedDimmed` | 편집을 거부한 후 표시되는 흐린 diff의 추가된 줄 배경 |251> | `diffAddedDimmed` | 편집을 거부한 후 표시되는 흐리게 처리된 diff에서 추가된 줄의 배경 |

252> | `diffRemovedDimmed` | 편집을 거부한 후 표시되는 흐린 diff의 제거된 줄 배경 |252> | `diffRemovedDimmed` | 편집을 거부한 후 표시되는 흐리게 처리된 diff에서 제거된 줄의 배경 |

253> | `diffAddedWord` | 추가된 줄 내의 단어 수준 강조 |253> | `diffAddedWord` | 추가된 줄 내의 단어 수준 강조 표시 |

254> | `diffRemovedWord` | 제거된 줄 내의 단어 수준 강조 |254> | `diffRemovedWord` | 제거된 줄 내의 단어 수준 강조 표시 |

255>255>

256> #### 전체 화면 모드256> #### 전체 화면 모드

257>257>

258> Claude Code는 [전체 화면 렌더링 모드](https://code.claude.com/docs/ko/fullscreen.md)에서만 `userMessageBackgroundHover`, `selectionBg` 및 `composerSidebarBackground`를 사용합니다. `userMessageBackground`, `bashMessageBackgroundColor` 및 `memoryBackgroundColor`는 기본 및 전체 화면 렌더러 모두에서 칠합니다.258> Claude Code는 `userMessageBackgroundHover`, `selectionBg`, `composerSidebarBackground`를 [전체 화면 렌더링 모드](https://code.claude.com/docs/ko/fullscreen.md)에서만 사용합니다. `userMessageBackground`, `bashMessageBackgroundColor`, `memoryBackgroundColor`는 기본 렌더러와 전체 화면 렌더러 모두에서 적용됩니다.

259>259>

260> | 토큰 | 제어 대상 |260> | 토큰 | 제어 대상 |

261> | :- | :- |261> | :- | :- |

262> | `userMessageBackground` | 트랜스크립트의 메시지 뒤 배경 |262> | `userMessageBackground` | 트랜스크립트에서 사용자 메시지 뒤의 배경 |

263> | `userMessageBackgroundHover` | 마우스를 가져가거나 확장된 메시지 뒤 배경 |263> | `userMessageBackgroundHover` | 마우스를 올리거나 펼친 상태의 메시지 뒤 배경 |

264> | `bashMessageBackgroundColor` | 트랜스크립트의 `!` 셸 명령 항목 뒤 배경 |264> | `bashMessageBackgroundColor` | 트랜스크립트에서 `!` 셸 명령 항목 뒤의 배경 |

265> | `memoryBackgroundColor` | 트랜스크립트의 `#` 메모리 항목 뒤 배경 |265> | `memoryBackgroundColor` | 트랜스크립트에서 `#` 메모리 항목 뒤의 배경 |

266> | `selectionBg` | 마우스로 선택한 텍스트의 배경 |266> | `selectionBg` | 마우스로 선택한 텍스트의 배경 |

267> | `composerSidebarBackground` | [diff 패널](https://code.claude.com/docs/ko/fullscreen.md#watch-your-changes-in-the-diff-panel)이나 [mod의 창](https://code.claude.com/docs/ko/plugins/mods/interface.md)과 같이 대화 옆에 있는 패널의 배경 |267> | `composerSidebarBackground` | [diff 패널](https://code.claude.com/docs/ko/fullscreen.md#watch-your-changes-in-the-diff-panel)이나 [mod의 창](https://code.claude.com/docs/ko/plugins/mods/interface.md)처럼 대화 옆에 있는 패널의 배경 |

268>268>

269> #### 사용량 미터 및 스피커 레이블269> #### 사용량 미터 및 화자 레이블

270>270>

271> `/usage` 보기에 표시되는 막대와 메시지를 Claude의 메시지와 구별하는 레이블을 조정합니다.271> `/usage` 보기에 표시되는 막대와 사용자의 메시지를 Claude의 메시지와 구분하는 레이블을 조정합니다.

272>272>

273> | 토큰 | 제어 대상 |273> | 토큰 | 제어 대상 |

274> | :- | :- |274> | :- | :- |

275> | `rate_limit_fill` | 사용량 미터의 채워진 부분 |275> | `rate_limit_fill` | 사용량 미터의 채워진 부분 |

276> | `rate_limit_empty` | 사용량 미터의 채워지지 않은 부분 |276> | `rate_limit_empty` | 사용량 미터의 채워지지 않은 부분 |

277> | `briefLabelYou` | 메시지의 `You` 레이블 색상 |277> | `briefLabelYou` | 사용자 메시지에 표시되는 `You` 레이블의 색상 |

278> | `briefLabelClaude` | 어시스턴트 메시지의 `Claude` 레이블 색상 |278> | `briefLabelClaude` | 어시스턴트 메시지에 표시되는 `Claude` 레이블의 색상 |

279>279>

280> #### 반짝임 변형 및 서브에이전트 색상280> #### 시머 변형 및 서브에이전트 색상

281>281>

282> 여러 토큰에는 스피너의 애니메이션 그래디언트에서 사용되는 더 밝은 색상을 제공하는 쌍을 이루는 반짝임 변형이 있습니다. 애니메이션이 일치하지 않는 것처럼 보이면 기본 토큰과 함께 반짝임을 재정의합니다.282> 여러 토큰에는 스피너의 애니메이션 그라데이션에 사용되는 더 밝은 색상을 제공하는 시머 변형이 짝지어져 있습니다. 애니메이션 색상이 어울리지 않아 보이면 기본 토큰과 함께 시머도 재정의합니다.

283>283>

284> * `claude` 및 `claudeShimmer`284> * `claude` 및 `claudeShimmer`

285> * `warning` 및 `warningShimmer`285> * `warning` 및 `warningShimmer`


288> * `inactive` 및 `inactiveShimmer`288> * `inactive` 및 `inactiveShimmer`

289> * `fastMode` 및 `fastModeShimmer`289> * `fastMode` 및 `fastModeShimmer`

290>290>

291> 각 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md) 및 병렬 작업은 8개의 명명된 색상 중 하나로 표시되므로 트랜스크립트에서 구별할 수 있습니다. 토큰 이름은 `<color>_FOR_SUBAGENTS_ONLY` 패턴을 따릅니다. 여기서 `<color>`는 `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` 또는 `cyan`입니다. 이를 재정의하여 각 명명된 색상의 모양을 변경합니다. 예를 들어, 정의에서 `color: blue`를 가진 서브에이전트는 `blue_FOR_SUBAGENTS_ONLY` 값을 사용하여 그려집니다.291> 각 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md)와 병렬 작업은 트랜스크립트에서 구분할 수 있도록 8가지 이름이 지정된 색상 중 하나로 표시됩니다. 토큰 이름은 `<color>_FOR_SUBAGENTS_ONLY` 패턴을 따르며, 여기서 `<color>`는 `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan` 중 하나입니다. 이 토큰을 재정의하여 각 이름이 지정된 색상의 모양을 변경할 수 있습니다. 예를 들어 정의에 `color: blue`가 있는 서브에이전트는 `blue_FOR_SUBAGENTS_ONLY` 값을 사용하여 그려집니다.

292>292>

293> [`ultrathink`](https://code.claude.com/docs/ko/model-config#use-ultrathink-for-one-off-deep-reasoning)가 턴의 노력 수준을 높일 수 있는 경우, Claude Code는 프롬프트 입력에서 해당 단어를 7색 무지개 그래디언트로 렌더링합니다. 토큰 이름은 `rainbow_<color>` 및 `rainbow_<color>_shimmer` 패턴을 따릅니다. 여기서 `<color>`는 `red`, `orange`, `yellow`, `green`, `blue`, `indigo` 또는 `violet`입니다.293> [`ultrathink`](https://code.claude.com/docs/ko/model-config#use-ultrathink-for-one-off-deep-reasoning)가 턴의 effort를 높일 수 있는 경우, Claude Code는 프롬프트 입력에서 해당 단어를 7가지 색상의 무지개 그라데이션으로 렌더링합니다. 토큰 이름은 `rainbow_<color>` 및 `rainbow_<color>_shimmer` 패턴을 따르며, 여기서 `<color>`는 `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, `violet` 중 하나입니다.

294 294 

295## 전체 화면 렌더링으로 전환295## 전체 화면 렌더링으로 전환

296 296 

Details

1169 1169 

1170### WSL2, SSH 또는 컨테이너에서 OAuth 로그인 실패1170### WSL2, SSH 또는 컨테이너에서 OAuth 로그인 실패

1171 1171 

1172Claude Code가 WSL2에서 실행되거나 SSH를 통해 원격 머신에서 실행되거나 컨테이너 내부에서 실행될 때 브라우저는 보통 다른 호스트에서 열리고 그 리다이렉트는 Claude Code의 로컬 콜백 서버에 도달할 수 없습니다. 로그인한 후 브라우저는 자동으로 다시 리다이렉트되지 않고 대신 로그인 코드를 표시합니다. 터미널의 `Paste code here if prompted` 프롬프트에 해당 코드를 붙여넣어 로그인을 완료하세요.1172브라우저가 열리지 않거나, 브라우저에서 로그인한 후 `localhost` 주소에 대한 연결 오류가 표시되더라도 두 문제 중 어느 것도 해결하지 않고 로그인을 완료할 수 있습니다. 대신 터미널이 붙여넣기 프롬프트 위에 표시하는 별도의 로그인 URL을 통해 로그인하세요:

1173 1173 

1174WSL2에서 브라우저가 전혀 열리지 않으면 `BROWSER` 환경 변수를 Windows 브라우저 경로로 설정하세요:1174**1. 로그인 URL 복사**

1175 1175 

1176```bash theme={null}1176대화형 로그인 프롬프트에서 `c`를 눌러 URL을 복사하거나 터미널에서 URL을 선택하세요. `claude auth login`을 사용하는 경우 출력되는 URL을 복사하세요.

1177export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"1177 

1178claude1178**2. 해당 URL을 통해 로그인**

1179```1179 

1180로컬 머신의 브라우저에서 URL을 열고 로그인하세요. 그러면 브라우저는 `localhost`로 돌아가는 대신 코드를 표시합니다.

1181 

1182**3. 코드 붙여넣기**

1180 1183 

1181또는 대화형 로그인 프롬프트에서 `c`를 눌러 OAuth URL을 복사하거나 `claude auth login`이 출력하는 URL을 복사하고 로컬 머신의 브라우저에서 열어보세요.1184`Paste code here`로 시작하는 프롬프트에서 해당 코드를 터미널에 붙여넣으세요.

1182 1185 

1183대화형 프롬프트에 코드를 붙여넣어도 아무것도 하지 않으면 터미널의 붙여넣기 바인딩이 입력 필드에 도달하지 않을 가능성이 높습니다. 터미널의 대체 붙여넣기 바로 가기를 시도해보세요. 종종 Windows Terminal에서 우클릭 또는 Shift+Insert이거나 대신 `claude auth login`을 사용하세요. 이는 표준 입력에서 붙여넣은 코드를 읽습니다:1186대화형 프롬프트에 코드를 붙여넣어도 아무것도 하지 않으면 터미널의 붙여넣기 바인딩이 입력 필드에 도달하지 않을 가능성이 높습니다. 터미널의 대체 붙여넣기 바로 가기를 시도해보세요. 종종 Windows Terminal에서 우클릭 또는 Shift+Insert이거나 대신 `claude auth login`을 사용하세요. 이는 표준 입력에서 붙여넣은 코드를 읽습니다:

1184 1187 


1188 1191 

1189이 폴백은 네이티브 Windows 또는 대화형 프롬프트에 붙여넣기가 실패하는 모든 터미널에도 적용됩니다.1192이 폴백은 네이티브 Windows 또는 대화형 프롬프트에 붙여넣기가 실패하는 모든 터미널에도 적용됩니다.

1190 1193 

1194WSL2에서 브라우저가 열리지 않았다면 `BROWSER` 환경 변수를 해당 브라우저의 경로로 설정하여 다음번에는 Claude Code가 Windows 브라우저를 열도록 할 수도 있습니다:

1195 

1196```bash theme={null}

1197export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"

1198claude

1199```

1200 

1191### 로그인하지 않음 또는 토큰 만료1201### 로그인하지 않음 또는 토큰 만료

1192 1202 

1193Claude Code가 세션 후 다시 로그인하도록 요청하면 OAuth 토큰이 만료되었을 수 있습니다.1203Claude Code가 세션 후 다시 로그인하도록 요청하면 OAuth 토큰이 만료되었을 수 있습니다.

vs-code.md +16 −5

Details

133 현재 모델이 [effort 수준](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)을 지원하는 경우 선택기에 **Effort** 행도 표시되며, 모델 이름 버튼에 선택된 수준이 표시됩니다. `max` 이외의 수준을 선택하면 Claude Code는 이를 현재 모델의 기본값으로 사용자 설정의 [`modelSettings`](https://code.claude.com/docs/ko/settings-reference#modelsettings) 아래에 저장합니다. `max`는 현재 세션에만 적용됩니다. 모델 이름 버튼과 **Effort** 행에는 Claude Code v2.1.257 이상이 필요합니다.133 현재 모델이 [effort 수준](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)을 지원하는 경우 선택기에 **Effort** 행도 표시되며, 모델 이름 버튼에 선택된 수준이 표시됩니다. `max` 이외의 수준을 선택하면 Claude Code는 이를 현재 모델의 기본값으로 사용자 설정의 [`modelSettings`](https://code.claude.com/docs/ko/settings-reference#modelsettings) 아래에 저장합니다. `max`는 현재 세션에만 적용됩니다. 모델 이름 버튼과 **Effort** 행에는 Claude Code v2.1.257 이상이 필요합니다.

134 134 

135 [동적 워크플로](https://code.claude.com/docs/ko/workflows.md)가 활성화되어 있고 현재 모델이 이를 지원하면 **Effort** 행 아래에 **Ultracode** 스위치가 나타납니다. 이를 켜면 Claude가 이 세션의 각 실질적인 작업에 대해 선택된 effort 수준으로 [워크플로](https://code.claude.com/docs/ko/workflows.md#let-claude-decide-with-ultracode)를 계획합니다. 켜져 있는 동안 모델 이름 버튼에는 수준 뒤에 `· Ultracode`가 표시됩니다. 이 스위치에는 Claude Code v2.1.284 이상이 필요합니다.135 [동적 워크플로](https://code.claude.com/docs/ko/workflows.md)가 활성화되어 있고 현재 모델이 이를 지원하면 **Effort** 행 아래에 **Ultracode** 스위치가 나타납니다. 이를 켜면 Claude가 이 세션의 각 실질적인 작업에 대해 선택된 effort 수준으로 [워크플로](https://code.claude.com/docs/ko/workflows.md#let-claude-decide-with-ultracode)를 계획합니다. 켜져 있는 동안 모델 이름 버튼에는 수준 뒤에 `· Ultracode`가 표시됩니다. 이 스위치에는 Claude Code v2.1.284 이상이 필요합니다.

136* **명령 메뉴**: `/`를 클릭하거나 입력하여 명령 메뉴를 엽니다. 파일 첨부, 모델 전환, 확장 사고 켜기/끄기 등의 옵션이 있습니다.136* **명령 메뉴**: `/`를 클릭하거나 입력하여 명령 메뉴를 엽니다. 파일 첨부, 모델 전환 등의 옵션이 있습니다.

137 137 

138 Customize 섹션에는 MCP 서버, 명령, 출력 스타일, 훅, 메모리, 지침, 권한, 플러그인 같은 항목이 포함됩니다. 터미널 아이콘이 있는 항목은 통합 터미널에서 열립니다.138 Customize 섹션에는 MCP 서버, 명령, 출력 스타일, 훅, 메모리, 지침, 권한, 플러그인 같은 항목이 포함됩니다. 터미널 아이콘이 있는 항목은 통합 터미널에서 열립니다.

139 139 


191 Claude가 서브에이전트 없이 백그라운드 셸만 시작한 경우처럼 에이전트 수가 표시되지 않을 때 맵을 열려면 프롬프트 상자에 `/tasks`를 입력합니다. 맵의 백그라운드 작업과 `/tasks` 입력에는 Claude Code v2.1.277 이상이 필요합니다.191 Claude가 서브에이전트 없이 백그라운드 셸만 시작한 경우처럼 에이전트 수가 표시되지 않을 때 맵을 열려면 프롬프트 상자에 `/tasks`를 입력합니다. 맵의 백그라운드 작업과 `/tasks` 입력에는 Claude Code v2.1.277 이상이 필요합니다.

192 192 

193 Claude Code v2.1.286 이상에서는 **Stop**을 클릭하거나 `Esc`를 누르면 현재 턴이 종료됩니다. 백그라운드 에이전트는 완료되거나 맵에서 중지할 때까지 계속 실행됩니다.193 Claude Code v2.1.286 이상에서는 **Stop**을 클릭하거나 `Esc`를 누르면 현재 턴이 종료됩니다. 백그라운드 에이전트는 완료되거나 맵에서 중지할 때까지 계속 실행됩니다.

194* **확장 사고**: Claude가 복잡한 문제를 추론하는 데 더 많은 시간을 쓸 수 있게 합니다. 명령 메뉴(`/`)에서 켭니다. Claude의 추론은 대화에 접힌 블록으로 나타납니다. 블록을 클릭하여 읽거나, `Ctrl+O`를 눌러 세션의 모든 사고 블록을 펼치거나 접을 수 있습니다. 자세한 내용은 [확장 사고](https://code.claude.com/docs/ko/model-config.md#extended-thinking)를 참조하세요.194* **확장 사고**: Claude가 복잡한 문제를 추론하는 데 더 많은 시간을 쓸 수 있게 합니다. 끄거나 다시 켜려면 명령 메뉴(`/`)의 Model 섹션에 있는 **Thinking** 스위치를 사용합니다. [사고를 끌 수 없는](https://code.claude.com/docs/ko/model-config.md#extended-thinking) 모델에서는 메뉴에 **Thinking** 스위치가 없으며 사고가 계속 켜져 있습니다.

195 

196 `Thought for 12s`처럼 레이블만 표시되는 사고 블록은 텍스트가 없으며 클릭해도 열리지 않습니다. 사고 요약을 보려면 `~/.claude/settings.json`에서 [`showThinkingSummaries`](https://code.claude.com/docs/ko/settings-reference#showthinkingsummaries)를 `true`로 설정한 다음, 명령 팔레트에서 **Developer: Reload Window**를 실행합니다.

197 

198 이미 있는 사고 블록은 비어 있는 상태로 유지됩니다. 다시 로드한 후의 응답에서는 블록을 클릭하거나 `Ctrl+O`를 눌러 모두 펼칠 수 있습니다.

195* **여러 줄 입력**: `Shift+Enter`를 누르면 전송하지 않고 새 줄을 추가합니다. 이는 질문 대화 상자의 "Other" 자유 텍스트 입력에서도 작동합니다.199* **여러 줄 입력**: `Shift+Enter`를 누르면 전송하지 않고 새 줄을 추가합니다. 이는 질문 대화 상자의 "Other" 자유 텍스트 입력에서도 작동합니다.

196 200 

197### 파일 및 폴더 참조하기201### 파일 및 폴더 참조하기


333 337 

334`/usage`를 실행하여 Account & usage 대화 상자를 엽니다. 이 대화 상자에는 로그인한 계정과 사용량이 표시됩니다. 사용량 수치는 로그인 방식에 따라 다릅니다.338`/usage`를 실행하여 Account & usage 대화 상자를 엽니다. 이 대화 상자에는 로그인한 계정과 사용량이 표시됩니다. 사용량 수치는 로그인 방식에 따라 다릅니다.

335 339 

336* **claude.ai 플랜**: 현재 세션 및 주간 같은 플랜 한도에 대한 사용량 막대가 표시됩니다. 각 막대는 한도가 재설정되기까지 남은 시간을 보여줍니다.340* **claude.ai 플랜**: 현재 세션 및 주간 같은 플랜 한도에 대한 사용량 막대가 표시됩니다.

337 341 

338 대화 상자는 플랜 한도에 영향을 주는 요인도 분석합니다.342 대화 상자는 플랜 한도에 영향을 주는 요인도 분석합니다.

339 343 


580 584 

581풀 리퀘스트를 생성할 때, Claude는 실제 코드 변경 사항을 기반으로 설명을 생성하며 테스트 또는 구현 결정에 대한 컨텍스트를 추가할 수 있습니다.585풀 리퀘스트를 생성할 때, Claude는 실제 코드 변경 사항을 기반으로 설명을 생성하며 테스트 또는 구현 결정에 대한 컨텍스트를 추가할 수 있습니다.

582 586 

587### 워크트리로 이동한 대화 다시 열기

588 

589다시 연 대화에서 **This session is in worktree** 배너는 대화의 작업 디렉터리가 이 창에서 열려 있는 폴더가 아니라 배너에 표시된 [worktree](https://code.claude.com/docs/ko/worktrees.md)임을 의미합니다. 새 VS Code 창에서 워크트리를 열려면 배너의 **Open worktree**를 클릭하십시오.

590 

591예를 들어 [Claude에게 워크트리에서 작업하도록 요청](https://code.claude.com/docs/ko/worktrees.md#ask-claude-to-create-a-worktree)하면 대화가 워크트리로 이동합니다. 대화를 다시 열거나 [창을 다시 로드한 후 패널이 대화를 다시 열면](#continue-conversations-after-a-reload), Claude Code가 `.claude/worktrees/` 아래에 워크트리를 생성했고 해당 워크트리가 아직 존재하는 경우 대화가 워크트리에서 재개됩니다. Claude Code v2.1.300 이전에는 대신 빈 대화가 열렸습니다. 해당 버전을 사용 중이라면 확장 프로그램을 업데이트하십시오.

592 

583## 백그라운드에서 작업 실행하기593## 백그라운드에서 작업 실행하기

584 594 

585오래 실행되는 명령이나 서브에이전트를 백그라운드로 보낸 다음, 프롬프트 상자에서 상태를 확인할 수 있습니다.595오래 실행되는 명령이나 서브에이전트를 백그라운드로 보낸 다음, 프롬프트 상자에서 상태를 확인할 수 있습니다.


633| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | 현재 파일과 선택 영역에 대한 참조를 삽입합니다(편집기가 포커스되어 있어야 함) |643| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | 현재 파일과 선택 영역에 대한 참조를 삽입합니다(편집기가 포커스되어 있어야 함) |

634| Accept Change at Cursor | - | [제안된 편집을 한 번에 하나의 변경 사항씩 검토](#get-started)하는 동안 커서 위치의 변경 사항을 수락합니다. Claude Code v2.1.275 이상이 필요합니다 |644| Accept Change at Cursor | - | [제안된 편집을 한 번에 하나의 변경 사항씩 검토](#get-started)하는 동안 커서 위치의 변경 사항을 수락합니다. Claude Code v2.1.275 이상이 필요합니다 |

635| Reject Change at Cursor | - | 제안된 편집을 한 번에 하나의 변경 사항씩 검토하는 동안 커서 위치의 변경 사항을 되돌립니다. Claude Code v2.1.275 이상이 필요합니다 |645| Reject Change at Cursor | - | 제안된 편집을 한 번에 하나의 변경 사항씩 검토하는 동안 커서 위치의 변경 사항을 되돌립니다. Claude Code v2.1.275 이상이 필요합니다 |

636| Toggle Focus view | `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux) | 대화에서 도구 활동을 숨기거나 표시합니다. Claude 패널이나 사이드바가 표시되어 있는 동안 작동합니다. Claude Code v2.1.221 이상이 필요합니다 |646| Toggle Focus view | `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux) | 대화에서 도구 활동을 숨기거나 표시합니다. Claude 패널이나 사이드바가 표시되어 있는 동안 작동합니다. Windows/Linux에서는 포커스가 Debug Console이나 Explorer 같은 검색 가능한 목록에 있을 때 `Ctrl+Alt+F`가 대신 VS Code의 Find를 엽니다. 편집기나 Claude 패널에 포커스를 둔 후 다시 누르세요. Claude Code v2.1.221 이상이 필요합니다 |

637| Rename Session Tab | - | 활성 Claude 탭의 세션 이름을 변경합니다. Claude Code v2.1.257 이상이 필요합니다 |647| Rename Session Tab | - | 활성 Claude 탭의 세션 이름을 변경합니다. Claude Code v2.1.257 이상이 필요합니다 |

638| Add Session Tab to Group | - | 활성 Claude 탭의 세션을 선택하거나 새로 만든 [세션 그룹](#organize-sessions-into-groups)에 추가합니다. Claude Code v2.1.257 이상이 필요합니다 |648| Add Session Tab to Group | - | 활성 Claude 탭의 세션을 선택하거나 새로 만든 [세션 그룹](#organize-sessions-into-groups)에 추가합니다. Claude Code v2.1.257 이상이 필요합니다 |

639| Mark Session as Unread | - | 활성 Claude 탭의 세션을 세션 목록에서 읽지 않음으로 표시합니다. Claude Code v2.1.257 이상이 필요합니다 |649| Mark Session as Unread | - | 활성 Claude 탭의 세션을 세션 목록에서 읽지 않음으로 표시합니다. Claude Code v2.1.257 이상이 필요합니다 |


679| 매개변수 | 설명 |689| 매개변수 | 설명 |

680| - | - |690| - | - |

681| `prompt` | 프롬프트 상자에 미리 채울 텍스트입니다. URL 인코딩되어 있어야 합니다. 프롬프트는 미리 채워지지만 자동으로 제출되지는 않습니다. |691| `prompt` | 프롬프트 상자에 미리 채울 텍스트입니다. URL 인코딩되어 있어야 합니다. 프롬프트는 미리 채워지지만 자동으로 제출되지는 않습니다. |

682| `session` | 새 대화를 시작하는 대신 재개할 세션 ID입니다. 세션은 현재 VS Code에 열려 있는 워크스페이스에 속해야 합니다. 세션을 찾을 수 없으면 대신 새 대화가 시작됩니다. 세션이 이미 탭에서 열려 있으면 해당 탭이 포커스됩니다. 프로그래밍 방식으로 세션 ID를 얻으려면 [대화 계속하기](https://code.claude.com/docs/ko/headless.md#continue-conversations)를 참조하세요. |692| `session` | VS Code에 열려 있는 폴더에서 재개할 세션의 ID입니다. Claude Code v2.1.300 이상에서는 해당 폴더 저장소의 메인 체크아웃 또는 [worktree](https://code.claude.com/docs/ko/worktrees.md)에 속한 세션도 재개됩니다. 세션을 찾을 수 없으면 대신 새 대화가 시작됩니다. 세션이 이미 탭에서 열려 있으면 해당 탭이 포커스됩니다. 프로그래밍 방식으로 세션 ID를 얻으려면 [대화 계속하기](https://code.claude.com/docs/ko/headless.md#continue-conversations)를 참조하세요. |

683 693 

684예를 들어 "review my changes"가 미리 채워진 탭을 열려면 다음과 같이 합니다:694예를 들어 "review my changes"가 미리 채워진 탭을 열려면 다음과 같이 합니다:

685 695 


916| `Claude Code process exited with code 1` 또는 다른 코드 | [Claude Code process exited with code N](https://code.claude.com/docs/ko/errors.md#claude-code-process-exited-with-code-n) |926| `Claude Code process exited with code 1` 또는 다른 코드 | [Claude Code process exited with code N](https://code.claude.com/docs/ko/errors.md#claude-code-process-exited-with-code-n) |

917| `Could not locate the Claude CLI on PATH` | [Could not locate the Claude CLI on PATH](https://code.claude.com/docs/ko/errors.md#could-not-locate-the-claude-cli-on-path) |927| `Could not locate the Claude CLI on PATH` | [Could not locate the Claude CLI on PATH](https://code.claude.com/docs/ko/errors.md#could-not-locate-the-claude-cli-on-path) |

918| `The connection to Claude Code ended before this message completed` | [The connection to Claude Code ended before this message completed](https://code.claude.com/docs/ko/errors.md#the-connection-to-claude-code-ended-before-this-message-completed) |928| `The connection to Claude Code ended before this message completed` | [The connection to Claude Code ended before this message completed](https://code.claude.com/docs/ko/errors.md#the-connection-to-claude-code-ended-before-this-message-completed) |

929| `The Claude Code program for this computer, the <build> build, could not be found` | [The Claude Code program for this computer could not be found](https://code.claude.com/docs/ko/errors.md#the-claude-code-program-for-this-computer-could-not-be-found) |

919| VS Code의 통합 터미널에서 `claude`를 찾을 수 없음 | [VS Code에서 CLI 실행](#run-cli-in-vs-code) |930| VS Code의 통합 터미널에서 `claude`를 찾을 수 없음 | [VS Code에서 CLI 실행](#run-cli-in-vs-code) |

920 931 

921### 확장 프로그램이 설치되지 않는 경우932### 확장 프로그램이 설치되지 않는 경우

workflows.md +63 −63

Details

101 101 

102`Enter`를 눌러 세부 정보를 확장합니다. 그러면 프롬프트와 결과가 전체적으로 표시되고, 나열된 각 호출은 입력과 결과의 시작을 표시합니다.102`Enter`를 눌러 세부 정보를 확장합니다. 그러면 프롬프트와 결과가 전체적으로 표시되고, 나열된 각 호출은 입력과 결과의 시작을 표시합니다.

103 103 

104## Claude가 워크플로우를 작성하도록 하기104## Claude에게 워크플로 작성 맡기기

105 105 

106두 가지 방법으로 Claude가 작업을 위한 워크플로우를 작성하도록 할 수 있습니다:106Claude가 작업에 맞는 워크플로를 작성하도록 하는 방법은 두 가지입니다.

107 107 

108* [프롬프트에서 워크플로우 요청하기](#ask-for-a-workflow-in-your-prompt) 프롬프트에 `ultracode` 키워드를 포함하거나 자신의 말로 요청하면 Claude가 작업을 위한 워크플로우를 작성합니다.108* 프롬프트에서 [워크플로 요청하기](#ask-for-a-workflow-in-your-prompt): 직접 요청하거나 `ultracode` 키워드를 포함하면 Claude가 해당 작업에 맞는 워크플로를 작성합니다.

109* [ultracode로 Claude가 결정하도록 하기](#let-claude-decide-with-ultracode): `/effort ultracode`를 설정하면 Claude가 세션의 모든 실질적인 작업을 위한 워크플로우를 계획합니다.109* [ultracode로 Claude가 판단하도록 하기](#let-claude-decide-with-ultracode): `/effort ultracode`를 설정하면 Claude가 세션의 모든 실질적인 작업에 대해 워크플로를 계획합니다.

110 110 

111이미 존재하는 워크플로우 명령을 실행할 수도 있습니다: `/deep-research`와 같은 [번들된 워크플로우](#bundled-workflows) 또는 [저장한](#save-the-workflow-for-reuse) 것입니다.111이미 존재하는 워크플로 명령을 실행할 수도 있습니다. `/deep-research` 같은 [번들 워크플로](#bundled-workflows)나 직접 [저장한](#save-the-workflow-for-reuse) 워크플로를 실행할 수 있습니다.

112 112 

113### 프롬프트에서 워크플로우 요청하기113### 프롬프트에서 워크플로 요청하기

114 114 

115세션의 노력 수준을 변경하지 않고 단일 작업을 워크플로우로 실행하려면 프롬프트에 `ultracode` 키워드를 포함하십시오. 자신의 말로 요청하기(예: "워크플로우 사용" 또는 "워크플로우 실행")도 작동합니다: Claude는 직접 요청을 동일한 옵트인으로 취급합니다.115세션의 effort 수준을 변경하지 않고 단일 작업을 워크플로로 실행하려면 프롬프트에 `ultracode` 키워드를 포함합니다. "use a workflow"나 "run a workflow"처럼 직접 요청해도 됩니다. Claude는 직접적인 요청도 동일한 옵트인으로 처리합니다.

116 116 

117```text wrap theme={null}117```text wrap theme={null}

118ultracode: audit every API endpoint under src/routes/ for missing auth checks118ultracode: audit every API endpoint under src/routes/ for missing auth checks

119```119```

120 120 

121Claude Code는 입력에서 키워드를 강조하고 Claude는 차례대로 작업하는 대신 작업을 위한 워크플로우 스크립트를 작성합니다. 키워드는 Claude가 작업을 구조화하는 방식만 선택합니다: 에이전트의 도구 호출은 세션의 다른 도구 호출과 동일한 권한 확인 및 [샌드박싱](https://code.claude.com/docs/ko/sandboxing.md)을 받습니다.121Claude Code는 입력에서 키워드를 강조 표시하고, Claude는 작업을 턴 단위로 진행하는 대신 해당 작업에 맞는 워크플로 스크립트를 작성합니다. 키워드는 Claude가 작업을 구성하는 방식만 결정합니다. 에이전트의 도구 호출은 세션의 다른 모든 도구 호출과 동일한 권한 검사와 [샌드박싱](https://code.claude.com/docs/ko/sandboxing.md)을 거칩니다.

122 122 

123실행이 원하는 작업을 수행하면 나중에 [명령으로 저장](#save-the-workflow-for-reuse)할 수 있습니다. 이미 다른 방식으로 구축한 오케스트레이터가 있는 경우, 예를 들어 서브에이전트 프롬프트 폴더 또는 작업을 분산하는 스킬이 있다면 Claude에 이를 지시하고 같은 작업을 수행하는 워크플로우를 요청할 수 있습니다.123실행 결과가 원하는 대로 나왔다면 이후에 [명령으로 저장](#save-the-workflow-for-reuse)할 수 있습니다. 서브에이전트 프롬프트 폴더나 작업을 분산하는 스킬처럼 다른 방식으로 구축한 오케스트레이터가 이미 있다면, Claude에게 이를 알려 주고 같은 일을 하는 워크플로를 요청할 수 있습니다.

124 124 

125#### 키워드 무시하거나 끄기125#### 키워드 무시 또는 끄기

126 126 

127의도하지 않은 워크플로우를 시작한 경우 macOS에서 `Option+W` 또는 Windows와 Linux에서 `Alt+W`를 누르면 이 프롬프트에서 강조를 무시하거나, 강조된 키워드 바로 뒤에 커서가 있을 때 백스페이스를 누르십시오. 키워드가 전혀 트리거되지 않도록 하려면 `/config`에서 Ultracode keyword trigger를 끄십시오.127워크플로를 시작할 의도가 아니었다면 macOS에서는 `Option+W`, Windows와 Linux에서는 `Alt+W`를 눌러 이번 프롬프트의 강조 표시를 해제하거나, 커서가 강조 표시된 키워드 바로 뒤에 있을 때 백스페이스를 누릅니다. 키워드가 아예 작동하지 않도록 하려면 `/config`에서 Ultracode keyword trigger를 끕니다.

128 128 

129#### 키워드가 작동하는 위치129#### 키워드가 작동하는 위치

130 130 

131키워드는 자신이 직접 입력한 프롬프트에서만 옵트인입니다: 대화형 프롬프트, IDE 확장 패널, [Remote Control](https://code.claude.com/docs/ko/remote-control.md) 클라이언트, 또는 키보드 입력의 [`origin`](https://code.claude.com/docs/ko/agent-sdk/typescript#sdkmessageorigin)을 `{ kind: "human" }`으로 표시하는 Agent SDK 애플리케이션에서입니다. 다른 방식으로 세션에 도달할 때는 워크플로우를 시작하지 않습니다:131키워드는 사용자가 직접 입력한 프롬프트에서만 옵트인으로 작동합니다. 즉, 대화형 프롬프트, IDE 확장 패널, [Remote Control](https://code.claude.com/docs/ko/remote-control.md) 클라이언트, 또는 키보드 입력의 [`origin`](https://code.claude.com/docs/ko/agent-sdk/typescript#sdkmessageorigin)을 `{ kind: "human" }`으로 표시하는 Agent SDK 애플리케이션에서만 작동합니다. 다른 경로로 세션에 전달되는 경우에는 워크플로를 시작하지 않습니다.

132 132 

133* `-p`로 전달된 프롬프트133* `-p`로 전달된 프롬프트

134* Agent SDK 애플리케이션이 인간 입력으로 표시하지 않고 보내는 프롬프트134* Agent SDK 애플리케이션이 사람의 입력으로 표시하지 않고 보낸 프롬프트

135* 예약된 작업 프롬프트135* 예약 작업 프롬프트

136* 대화로 중계된 웹훅 페이로드 또는 풀 요청 댓글136* 대화로 전달된 웹훅 페이로드 또는 풀 리퀘스트 댓글

137 137 

138### ultracode로 Claude가 결정하도록 하기138### ultracode로 Claude가 판단하도록 하기

139 139 

140Ultracode는 Claude Code 설정으로, 세션이 실행되는 모든 [노력 수준](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)에서 자동 워크플로우 조율을 켭니다. 활성화하면 Claude는 요청을 기다리는 대신 각 실질적인 작업을 위한 워크플로우를 계획합니다. Claude Code 프롬프트에서 켜십시오:140Ultracode는 세션이 실행되는 [effort 수준](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)에 관계없이 해당 세션에서 자동 워크플로 오케스트레이션을 켜는 Claude Code 설정입니다. 이 설정을 켜면 Claude는 사용자의 요청을 기다리지 않고 각 실질적인 작업에 대해 워크플로를 계획합니다. Claude Code 프롬프트에서 다음과 같이 켭니다.

141 141 

142```text wrap theme={null}142```text wrap theme={null}

143/effort ultracode143/effort ultracode

144```144```

145 145 

146ultracode가 이미 켜진 상태로 세션을 시작하려면 `claude --effort ultracode`로 실행하십시오. 이는 effort 수준을 `xhigh`로도 설정합니다.146ultracode가 켜진 상태로 세션을 시작하려면 `claude --effort ultracode`로 실행합니다. 이 경우 effort 수준도 `xhigh`로 설정됩니다.

147 147 

148`/effort` 슬라이더에서 켜려면 `Tab`을 눌러 **Ultracode** 토글을 뒤집은 다음 `Enter`를 눌러 적용하십시오. [노력 수준 조정](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)은 ultracode를 켜는 경로를 나열합니다.148`/effort` 슬라이더에서 켜려면 `Tab`을 눌러 **Ultracode** 토글을 전환한 다음 `Enter`를 눌러 적용합니다. ultracode를 켜는 방법은 [effort 수준 조정](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)에 나와 있습니다.

149 149 

150ultracode가 켜지면 Claude는 작업이 워크플로우를 보증하는지 결정합니다. 단일 요청은 여러 워크플로우로 변할 수 있습니다: 코드를 이해하기 위한 하나, 변경을 수행하기 위한 하나, 검증하기 위한 하나입니다. 이는 세션의 모든 작업에 적용되므로 각 요청은 워크플로우 없는 동일한 요청보다 더 많은 토큰을 사용하고 더 오래 걸립니다. 구독 요금제에서 이러한 토큰은 사용량 한도에서 차감되므로 ultracode가 켜진 세션은 ultracode가 꺼진 동일한 작업보다 세션 또는 주간 한도에 더 빨리 도달합니다.150ultracode가 켜져 있으면 Claude가 작업에 워크플로가 필요한 시점을 판단합니다. 하나의 요청이 여러 워크플로로 연이어 이어질 수 있습니다. 코드를 이해하는 워크플로, 변경을 수행하는 워크플로, 이를 검증하는 워크플로가 각각 실행될 수 있습니다. 이는 세션의 모든 작업에 적용되므로, 각 요청은 워크플로 없이 같은 요청을 처리할 때보다 더 많은 토큰을 사용하고 더 오래 걸립니다. 구독 플랜에서는 이러한 토큰이 사용 한도에서 차감되므로, ultracode를 켠 세션은 끈 상태로 같은 작업을 할 때보다 세션 한도나 주간 한도에 더 빨리 도달합니다.

151 151 

152ultracode를 켜면 이미 대규모 실행에 옵트인되므로 활성화된 동안 이러한 확인이 적용되지 않습니다:152ultracode를 켜면 이미 대규모 실행에 옵트인한 것이므로, 켜져 있는 동안에는 다음 검사가 적용되지 않습니다.

153 153 

154* [`Large workflow` 경고](#cost)는 워크플로우 실행에 나타나지 않습니다154* 워크플로 실행 시 [`Large workflow` 경고](#cost)가 표시되지 않습니다

155* 세션의 [동시 서브에이전트 한도](https://code.claude.com/docs/ko/sub-agents.md#concurrent-subagent-limit)는 Claude가 Agent 도구로 생성하는 서브에이전트에 대해 적용되지 않습니다155* Claude가 Agent 도구로 생성하는 서브에이전트에는 세션의 [동시 서브에이전트 제한](https://code.claude.com/docs/ko/sub-agents.md#concurrent-subagent-limit)이 적용되지 않습니다

156* 자동 권한 모드에서는 [첫 번째 워크플로우 실행을 승인](#approve-the-plan-before-it-runs)하도록 요청받지 않습니다156* 자동 권한 모드에서 [첫 워크플로 실행 승인](#approve-the-plan-before-it-runs)을 요청받지 않습니다

157 157 

158`/effort ultracode`는 현재 세션 동안 지속됩니다; 모든 세션이 이것으로 시작하도록 하려면 [`ultracode`](https://code.claude.com/docs/ko/settings-reference#ultracode) 설정을 지정하십시오. 일상적인 작업으로 돌아갈 때 `/effort ultracode off`로 끄십시오. `/effort` 슬라이더는 [ultracode를 사용할 수 있을 때](https://code.claude.com/docs/ko/model-config.md#when-ultracode-is-available)만 토글을 제공합니다. v2.1.284 이전에는 `/effort ultracode`가 세션을 `xhigh`로 설정했으며, `/effort ultracode off`는 `Invalid argument`와 함께 실패했습니다.158`/effort ultracode`는 현재 세션 동안 유지됩니다. 모든 세션이 이 설정으로 시작되도록 하려면 [`ultracode`](https://code.claude.com/docs/ko/settings-reference#ultracode) 설정을 지정합니다. 일상적인 작업으로 돌아갈 때는 `/effort ultracode off`로 끕니다. `/effort` 슬라이더는 [ultracode를 사용할 수 있는 경우](https://code.claude.com/docs/ko/model-config.md#when-ultracode-is-available)에만 토글을 제공합니다. v2.1.284 이전에는 `/effort ultracode`가 세션을 `xhigh`로 설정했고, `/effort ultracode off`는 `Invalid argument`로 실패했습니다.

159 159 

160### 실행 전 계획 승인하기160### 실행 전 계획 승인하기

161 161 

162CLI에서 실행별 프롬프트는 계획된 단계와 다음 옵션을 표시합니다:162CLI에서는 실행별 프롬프트에 계획된 단계와 다음 옵션이 표시됩니다.

163 163 

164* **예, 실행**: 실행 시작164* **Yes, run it**: 실행을 시작합니다

165* **예, `<path>`의 `<name>`에 대해 다시 묻지 않기**: 시작하고 이 프로젝트에서 이 워크플로우에 대해 이 프롬프트를 건너뜁니다. Claude Code는 번들된, 저장된, 또는 플러그인 워크플로우를 이름으로 실행할 때 이 옵션을 제공하며, 현재 작업을 위해 Claude가 작성한 스크립트에는 제공하지 않습니다.165* **Yes, and don't ask again for `<name>` in `<path>`**: 실행을 시작하고, 이후 이 프로젝트에서 이 워크플로에 대해서는 이 프롬프트를 건너뜁니다. Claude Code는 번들, 저장된, 또는 플러그인 워크플로를 이름으로 실행할 때 이 옵션을 제공하며, Claude가 현재 작업을 위해 작성한 스크립트에는 제공하지 않습니다.

166* **원본 스크립트 보기**: 결정하기 전에 스크립트 읽기166* **View raw script**: 결정하기 전에 스크립트를 확인합니다

167* **아니오**: 취소167* **No**: 취소합니다

168 168 

169`Ctrl+G`는 편집기에서 스크립트를 엽니다. **Yes, run it** 또는 **No**가 선택된 상태에서 `Tab`을 누르면 응답에 [코멘트를 추가](https://code.claude.com/docs/ko/permissions.md#add-a-comment-when-you-answer-a-permission-prompt)할 수 있습니다.169`Ctrl+G`를 누르면 편집기에서 스크립트가 열립니다. **Yes, run it** 또는 **No**를 선택한 상태에서 `Tab`을 눌러 응답에 [댓글을 추가](https://code.claude.com/docs/ko/permissions.md#add-a-comment-when-you-answer-a-permission-prompt)할 수 있습니다.

170 170 

171이 프롬프트를 보는지 여부는 [권한 모드](https://code.claude.com/docs/ko/permission-modes.md)에 따라 다릅니다:171이 프롬프트가 표시되는지 여부는 [권한 모드](https://code.claude.com/docs/ko/permission-modes.md)에 따라 달라집니다.

172 172 

173| 권한 모드 | 프롬프트가 표시되는 경우 |173| 권한 모드 | 확인을 요청하는 시점 |

174| :- | :- |174| :- | :- |

175| 자동 | 첫 번째 실행만. 모든 **예**는 사용자 설정에 동의를 기록하고, 나중의 실행은 프롬프트 없이 시작합니다. ultracode가 켜지면 완전히 건너뜁니다 |175| Auto | 첫 실행 시에만 요청합니다. **Yes** 중 하나를 선택하면 사용자 설정에 동의가 기록되며, 이후 실행은 확인 없이 시작됩니다. ultracode가 켜져 있으면 완전히 건너뜁니다 |

176| 수동, 편집 수락 | 해당 워크플로우에 대해 **예, 다시 묻지 않기**를 선택하지 않은 한 모든 실행 |176| Manual, accept edits | 해당 프로젝트에서 해당 워크플로에 대해 **Yes, and don't ask again**을 선택하지 않은 한 매 실행 시 요청합니다 |

177| 권한 무시 | Claude Code는 프롬프트하지 않습니다. 실행이 즉시 시작됩니다 |177| Bypass permissions | Claude Code가 확인을 요청하지 않습니다. 실행이 즉시 시작됩니다 |

178| `claude -p`, Agent SDK | Claude Code는 프롬프트하지 않습니다 |178| `claude -p`, Agent SDK | Claude Code가 확인을 요청하지 않습니다 |

179 179 

180`claude -p` 및 Agent SDK에서 Claude Code는 이 프롬프트를 표시하지 않습니다. 이는 세션의 나머지 부분과 동일한 [권한 평가](https://code.claude.com/docs/ko/agent-sdk/permissions.md#how-permissions-are-evaluated)를 통해 Workflow 도구 호출을 실행하므로 거부 규칙, 요청 규칙, 및 `dontAsk` 모드가 모든 도구 호출에 적용되는 것처럼 실행에 적용됩니다. 이러한 실행에서 워크플로우가 시작되도록 하려면 다음 중 하나를 사용하십시오:180`claude -p`와 Agent SDK에서는 Claude Code가 이 프롬프트를 표시하지 않습니다. Workflow 도구 호출은 세션의 나머지 부분과 동일한 [권한 평가](https://code.claude.com/docs/ko/agent-sdk/permissions.md#how-permissions-are-evaluated)를 거치므로, 거부 규칙, 확인 규칙, `dontAsk` 모드가 모든 도구 호출과 마찬가지로 실행에도 적용됩니다. 이러한 실행에서 워크플로가 시작되도록 하려면 다음 중 하나를 사용합니다.

181 181 

182* **권한 규칙**: 모든 워크플로를 승인하려면 허용 규칙에 `Workflow`를 추가하고, 저장된 워크플로 하나를 이름으로 승인하려면 `Workflow(<name>)`를 추가하십시오.182* **권한 규칙**: 모든 워크플로를 승인하려면 허용 규칙에 `Workflow`를 추가하고, 저장된 워크플로 하나를 이름으로 승인하려면 `Workflow(<name>)`를 추가합니다.

183* **자동 권한 모드**: [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)로 실행하십시오. 이 모드에서는 분류기가 호출을 검토하고 승인할 수 있습니다.183* **자동 권한 모드**: [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)로 실행하면 분류기가 호출을 검토하고 승인할 수 있습니다.

184* **권한 무시 모드**: 권한 무시 모드로 실행하십시오.184* **Bypass permissions 모드**: bypass permissions 모드로 실행합니다.

185* **훅**: [`PreToolUse`](https://code.claude.com/docs/ko/hooks#pretooluse) 훅에서 해당 호출에 대해 `"allow"`를 반환하십시오. [플랜 모드](https://code.claude.com/docs/ko/permission-modes.md#analyze-before-you-edit-with-plan-mode)에서는 훅의 승인만으로 워크플로가 시작되지 않으므로, 대신 권한 규칙이나 호스트의 승인을 사용하십시오.185* **훅**: [`PreToolUse`](https://code.claude.com/docs/ko/hooks#pretooluse) 훅에서 해당 호출에 대해 `"allow"`를 반환합니다. [플랜 모드](https://code.claude.com/docs/ko/permission-modes.md#analyze-before-you-edit-with-plan-mode)에서는 훅의 승인만으로 워크플로가 시작되지 않으므로, 이 경우에는 권한 규칙이나 호스트의 승인을 사용합니다.

186* **호스트**: [`--permission-prompt-tool`](https://code.claude.com/docs/ko/cli-reference#cli-flags) 또는 Agent SDK를 사용하는 경우 [`canUseTool`](https://code.claude.com/docs/ko/agent-sdk/permissions) 콜백이 이를 승인합니다.186* **호스트**: [`--permission-prompt-tool`](https://code.claude.com/docs/ko/cli-reference#cli-flags) 또는 Agent SDK의 [`canUseTool`](https://code.claude.com/docs/ko/agent-sdk/permissions) 콜백이 승인합니다.

187 187 

188Desktop 앱에서 승인 카드는 워크플로우 이름, 단계 목록, 토큰 사용 주의와 함께 **한 번**, **항상**, **거부** 작업을 표시합니다. 진행 상황 보기는 Background tasks 사이드 패널에 나타납니다.188Desktop 앱에서는 승인 카드에 워크플로 이름, 단계 목록, 토큰 사용량 주의 사항이 **Once**, **Always**, **Deny** 동작과 함께 표시됩니다. 진행 상황 보기는 Background tasks 사이드 패널에 나타납니다.

189 189 

190워크플로우가 생성하는 서브에이전트는 [권한 규칙](https://code.claude.com/docs/ko/settings-reference.md#permission-settings)을 사용하며, Claude Code는 [서브에이전트가 실행되는 권한 모드](https://code.claude.com/docs/ko/sub-agents.md#permission-modes) 아래의 규칙에 따라 권한 모드를 선택합니다. 긴 실행에서 프롬프트를 피하려면 에이전트가 필요로 하는 도구를 시작 전에 허용 규칙에 추가하십시오.190워크플로가 생성하는 서브에이전트는 사용자의 [권한 규칙](https://code.claude.com/docs/ko/settings-reference.md#permission-settings)을 사용하며, Claude Code는 [서브에이전트가 실행되는 권한 모드](https://code.claude.com/docs/ko/sub-agents.md#permission-modes)의 규칙에 따라 해당 권한 모드를 선택합니다. 장시간 실행에서 프롬프트가 표시되지 않도록 하려면 시작하기 전에 에이전트에 필요한 도구를 허용 규칙에 추가합니다.

191 191 

192### 재사용을 위해 워크플로우 저장하기192### 재사용을 위해 워크플로 저장하기

193 193 

194Claude가 반복할 작업을 위한 워크플로우를 작성하면 해당 실행의 스크립트를 명령으로 저장할 수 있습니다. 모든 분기에서 실행하는 검토와 같은 프로세스는 매번 같은 조율을 실행합니다.194Claude가 반복할 작업을 위한 워크플로를 작성하면 해당 실행의 스크립트를 명령으로 저장할 수 있습니다. 그러면 모든 브랜치에서 실행하는 리뷰 같은 프로세스가 매번 동일한 오케스트레이션으로 실행됩니다.

195 195 

196`/workflows`를 실행하고, 유지하려는 실행을 선택한 후 `s`를 누릅니다. 저장 대화에서 Tab은 두 저장 위치 사이를 전환합니다:196`/workflows`를 실행하고 보관할 실행을 선택한 다음 `s`를 누릅니다. 저장 대화 상자에서 Tab을 누르면 두 저장 위치 간에 전환됩니다.

197 197 

198* `.claude/workflows/` 프로젝트에서: 저장소를 복제하는 모든 사람과 공유198* 프로젝트의 `.claude/workflows/`: 저장소를 복제하는 모든 사람과 공유됩니다

199* `~/.claude/workflows/` 홈 디렉토리에서: 모든 프로젝트에서 사용 가능, 자신에게만 표시됩니다. [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ko/env-vars)을 설정한 경우 이 위치는 해당 경로 아래의 `workflows/` 디렉토리입니다.199* 홈 디렉터리의 `~/.claude/workflows/`: 모든 프로젝트에서 사용할 수 있으며 본인에게만 표시됩니다. [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ko/env-vars)를 설정한 경우 이 위치는 해당 경로 아래의 `workflows/` 디렉터리입니다.

200 200 

201저장 대화 상자는 개인 위치에 대해 확인된 경로를 표시합니다. Enter를 눌러 저장합니다. 워크플로는 이후 세션에서 두 위치 중 하나에서 `/<name>`으로 실행됩니다.201저장 대화 상자에는 개인 위치의 확인된 경로가 표시됩니다. Enter를 눌러 저장합니다. 어느 위치에 저장하든 이후 세션에서 워크플로가 `/<name>`으로 실행됩니다.

202 202 

203Claude Code는 쓰기 전에 저장 위치에서 심볼릭 링크를 확인하고, 심볼릭 링크를 통해 쓰는 대신 오류를 표시합니다:203Claude Code는 쓰기 전에 저장 위치에 심볼릭 링크가 있는지 확인하며, 심볼릭 링크를 통해 쓰는 대신 오류를 표시합니다.

204 204 

205* 프로젝트 위치: Claude Code는 `.claude`, `.claude/workflows`, 또는 대상 파일이 심볼릭 링크인 경우 거부합니다.205* 프로젝트 위치: `.claude`, `.claude/workflows` 또는 대상 파일이 심볼릭 링크이면 Claude Code가 거부합니다.

206* 개인 위치: Claude Code는 대상 파일 자체가 심볼릭 링크인 경우에만 거부하므로 dotfiles 도구로 관리되는 `~/.claude` 디렉토리는 여전히 작동합니다.206* 개인 위치: 대상 파일 자체가 심볼릭 링크인 경우에만 Claude Code가 거부하므로, dotfiles 도구로 관리하는 `~/.claude` 디렉터리도 계속 작동합니다.

207 207 

208여러 `.claude/` 디렉토리가 있는 모노레포에서 워크플로우를 적용되는 패키지 옆에 유지할 수 있습니다. 프로젝트 위치에 저장하면 작업 디렉토리와 저장소 루트 사이에 이미 존재하는 가장 가까운 `.claude/workflows/` 디렉토리에 쓰거나, 아직 존재하지 않으면 저장소 루트에 씁니다. 프로젝트 워크플로우는 또한 해당 경로를 따라 모든 `.claude/workflows/`에서 로드되며, 둘 이상이 같은 이름을 정의할 때 Claude Code는 작업 디렉토리에 가장 가까운 것을 실행합니다.208`.claude/` 디렉터리가 여러 개인 모노레포에서는 워크플로를 해당 워크플로가 적용되는 패키지와 함께 보관할 수 있습니다. 프로젝트 위치에 저장하면 작업 디렉터리와 저장소 루트 사이에 이미 존재하는 가장 가까운 `.claude/workflows/` 디렉터리에 쓰며, 아직 없으면 저장소 루트에 씁니다. 프로젝트 워크플로는 해당 경로상의 모든 `.claude/workflows/`에서도 로드되며, 둘 이상이 같은 이름을 정의하는 경우 Claude Code는 작업 디렉터리에 가장 가까운 것을 실행합니다.

209 209 

210프로젝트 워크플로우와 개인 워크플로우가 이름을 공유하면 프로젝트 워크플로우가 실행됩니다.210프로젝트 워크플로와 개인 워크플로의 이름이 같으면 프로젝트 워크플로가 실행됩니다.

211 211 

212### 플러그인에서 워크플로우 배포하기212### 플러그인으로 워크플로 배포하기

213 213 

214팀이나 저장소 전체에 워크플로우를 공유하려면 [플러그인](https://code.claude.com/docs/ko/plugins/overview.md)에 포함시키십시오. 스크립트를 플러그인 루트의 `workflows/` 디렉토리에 배치하거나 [`workflows` 매니페스트 필드](https://code.claude.com/docs/ko/plugins/manifest-reference#fields)로 다른 위치를 지정하십시오.214팀이나 저장소 간에 워크플로를 공유하려면 [플러그인](https://code.claude.com/docs/ko/plugins/overview.md)에 포함합니다. 스크립트를 플러그인 루트의 `workflows/` 디렉터리에 두거나, [`workflows` 매니페스트 필드](https://code.claude.com/docs/ko/plugins/manifest-reference#fields)로 다른 위치를 지정합니다.

215 215 

216플러그인 워크플로우는 플러그인 이름으로 네임스페이스됩니다. `acme-tools`라는 플러그인이 `meta.name`이 `release-audit`인 스크립트를 포함하면 `/acme-tools:release-audit`으로 실행됩니다.216플러그인 워크플로는 플러그인 이름으로 네임스페이스가 지정됩니다. `meta.name`이 `release-audit`인 스크립트를 포함하는 `acme-tools`라는 플러그인은 `/acme-tools:release-audit`로 실행됩니다.

217 217 

218### 저장된 워크플로우에 입력 전달하기218### 저장된 워크플로에 입력 전달하기

219 219 

220저장된 워크플로우는 `args` 매개변수를 통해 입력을 받을 수 있습니다. 스크립트는 이를 `args`라는 전역 변수로 읽습니다. 이를 사용하여 연구 질문, 대상 경로 목록, 또는 구성 객체를 실행 시간에 제공하면 각 실행마다 스크립트를 편집할 필요가 없습니다.220저장된 워크플로는 `args` 파라미터를 통해 입력을 받을 수 있습니다. 스크립트는 이를 `args`라는 전역 변수로 읽습니다. 실행할 때마다 스크립트를 편집하는 대신 호출 시점에 연구 질문, 대상 경로 목록 또는 구성 객체를 제공하는 데 사용합니다.

221 221 

222다음 프롬프트는 문제 번호 목록으로 저장된 워크플로우를 실행합니다:222다음 프롬프트는 이슈 번호 목록으로 저장된 워크플로를 실행합니다.

223 223 

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

225Run /triage-issues on issues 1024, 1025, and 1030225Run /triage-issues on issues 1024, 1025, and 1030

226```226```

227 227 

228Claude는 목록을 구조화된 데이터로 전달하므로 스크립트는 먼저 구문 분석하지 않고도 `args`에서 배열 및 객체 메서드를 직접 호출할 수 있습니다. `args`가 생략되면 스크립트 내부의 전역 변수는 `undefined`입니다.228Claude는 목록을 구조화된 데이터로 전달하므로, 스크립트는 먼저 파싱하지 않고도 `args`에서 배열 및 객체 메서드를 직접 호출할 수 있습니다. `args`를 생략하면 스크립트 내에서 전역 변수는 `undefined`입니다.

229 229 

230## 워크플로 프롬프트 예시230## 워크플로 프롬프트 예시

231 231 

worktrees.md +15 −1

Details

214 214 

215### worktree 이름 재사용215### worktree 이름 재사용

216 216 

217`--worktree`에 디렉토리가 이미 존재하는 이름을 전달하면 새로운 worktree를 생성하는 대신 기존 worktree를 엽니다.217`--worktree`에 전달한 이름의 worktree가 이미 존재하면 Claude Code는 새로운 worktree를 생성하는 대신 기존 worktree를 엽니다. Claude Code가 `belongs to a different repository` 또는 `is a leftover worktree`가 포함된 오류와 함께 중지되면 [worktree 디렉토리가 `belongs to a different repository`](#belongs-to-a-different-repository)를 참조합니다.

218 218 

219기본 `"fresh"` [기본](#choose-the-base-branch)을 사용하면 다음 모든 조건이 충족될 때 재개된 worktree는 이전 팁에서 계속하는 대신 저장소의 기본 브랜치로 재설정됩니다:219기본 `"fresh"` [기본](#choose-the-base-branch)을 사용하면 다음 모든 조건이 충족될 때 재개된 worktree는 이전 팁에서 계속하는 대신 저장소의 기본 브랜치로 재설정됩니다:

220 220 


353 353 

354`This repository is a partial clone`이 포함된 오류는 Claude Code가 워크트리의 시작 커밋에 필요한 모든 git 객체를 가져올 수 없었음을 의미합니다. 메시지에서 `try again`으로 끝나는 문장에 안내된 단계를 수행하십시오. 그런 다음 해당 단계를 수행한 셸에서 재시도하십시오. `claude --worktree`를 실행하거나, 그곳에서 `claude`를 시작하고 다시 요청하면 됩니다.354`This repository is a partial clone`이 포함된 오류는 Claude Code가 워크트리의 시작 커밋에 필요한 모든 git 객체를 가져올 수 없었음을 의미합니다. 메시지에서 `try again`으로 끝나는 문장에 안내된 단계를 수행하십시오. 그런 다음 해당 단계를 수행한 셸에서 재시도하십시오. `claude --worktree`를 실행하거나, 그곳에서 `claude`를 시작하고 다시 요청하면 됩니다.

355 355 

356### `Can only use --worktree in a git repository`

357 

358이 오류는 git 체크아웃이 아닌 디렉터리에서 `--worktree`를 전달했으며 활성화된 [`WorktreeCreate` 훅](#non-git-version-control)이 없음을 의미합니다.

359 

360* 버전 관리가 없는 폴더에서는 그곳에서 `git init`을 실행하고 첫 커밋을 생성한 후 재시도하십시오.

361* 다른 버전 관리 시스템의 체크아웃에서는 메시지가 제안하는 훅을 설정하십시오.

362* 디렉터리에서 직접 작업하려면 `--worktree` 없이 Claude를 시작하십시오.

363 

364### 워크트리 디렉터리가 `belongs to a different repository`로 표시됨

365 

366`belongs to a different repository` 및 `is a leftover worktree` 오류는 모두 git이 전달한 워크트리 이름의 디렉터리를 다른 위치에 연결하고 있음을 의미합니다. 이는 프로젝트를 복사하거나 이동한 후에 발생할 수 있습니다.

367 

368다른 워크트리 이름을 전달하십시오. 디렉터리에 보존할 작업이 없고 프로젝트를 복사하거나 이동하지 않았다면 디렉터리를 제거하고 같은 이름으로 재시도할 수 있습니다. 복사나 이동 후에는 이 재시도가 `is already checked out elsewhere in this repository`로 실패할 수 있으므로 다른 이름을 사용하십시오.

369 

356### Claude Code가 워크트리 사용을 거부함370### Claude Code가 워크트리 사용을 거부함

357 371 

358`Refusing to use <path> as an isolation worktree`로 시작하는 오류는 Claude Code가 해당 디렉터리를 세션 또는 서브에이전트의 격리된 체크아웃으로 채택하기 전에 디렉터리의 git ID를 확인하고 이를 거부했음을 의미합니다. 이 확인은 Claude Code가 워크트리를 생성하든, 기존 워크트리에 진입하든, 이전 실행의 워크트리를 재사용하든 항상 실행됩니다.372`Refusing to use <path> as an isolation worktree`로 시작하는 오류는 Claude Code가 해당 디렉터리를 세션 또는 서브에이전트의 격리된 체크아웃으로 채택하기 전에 디렉터리의 git ID를 확인하고 이를 거부했음을 의미합니다. 이 확인은 Claude Code가 워크트리를 생성하든, 기존 워크트리에 진입하든, 이전 실행의 워크트리를 재사용하든 항상 실행됩니다.