SpyBara
Go Premium

Documentation 2026-10-25 23:58 UTC to 2026-10-26 22:57 UTC

43 files changed +688 −125. 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

admin-setup.md +1 −1

Details

93| [샌드박싱](https://code.claude.com/docs/ko/sandboxing.md) | 도메인 허용 목록이 있는 OS 수준 파일 시스템 및 네트워크 격리 | `sandbox.enabled`, `sandbox.network.allowedDomains` |93| [샌드박싱](https://code.claude.com/docs/ko/sandboxing.md) | 도메인 허용 목록이 있는 OS 수준 파일 시스템 및 네트워크 격리 | `sandbox.enabled`, `sandbox.network.allowedDomains` |

94| [관리형 정책 CLAUDE.md](https://code.claude.com/docs/ko/memory.md#deploy-organization-wide-claude-md) | 클라이언트에서 강제하는 규칙이 아닌, Claude를 위한 조직 전체 행동 지침 | 관리형 정책 경로의 파일 |94| [관리형 정책 CLAUDE.md](https://code.claude.com/docs/ko/memory.md#deploy-organization-wide-claude-md) | 클라이언트에서 강제하는 규칙이 아닌, Claude를 위한 조직 전체 행동 지침 | 관리형 정책 경로의 파일 |

95| [MCP 서버 제어](https://code.claude.com/docs/ko/managed-mcp.md) | 사용자가 추가하거나 연결할 수 있는 MCP 서버를 제한하고, 고정 집합을 배포하거나, 모든 사용자에게 자신의 서버와 함께 원격 서버를 제공합니다 | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, 또는 배포된 `managed-mcp.json` 파일 |95| [MCP 서버 제어](https://code.claude.com/docs/ko/managed-mcp.md) | 사용자가 추가하거나 연결할 수 있는 MCP 서버를 제한하고, 고정 집합을 배포하거나, 모든 사용자에게 자신의 서버와 함께 원격 서버를 제공합니다 | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, 또는 배포된 `managed-mcp.json` 파일 |

96| [플러그인 마켓플레이스 제어](https://code.claude.com/docs/ko/plugins/org.md#restrict-what-users-can-install) | 사용자가 추가하고 설치할 수 있는 마켓플레이스 소스를 제한하고, 단일 실행을 위해 플러그인, 에이전트 및 MCP 서버를 사이드로드하는 CLI 플래그를 거부하며, [`command` 플러그인 소스](https://code.claude.com/docs/ko/plugins/marketplace-reference#command-plugin-source)를 차단하고, 어떤 마켓플레이스의 플러그인을 제안할 수 있는지 허용 목록에 추가합니다 | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |96| [플러그인 마켓플레이스 제어](https://code.claude.com/docs/ko/plugins/org.md#restrict-what-users-can-install) | 사용자가 추가하고 설치할 수 있는 마켓플레이스 소스를 제한하고, 단일 실행을 위해 플러그인, 에이전트 및 MCP 서버를 사이드로드하는 CLI 플래그를 거부합니다. [`command` 플러그인 소스](https://code.claude.com/docs/ko/plugins/marketplace-reference#command-plugin-source)를 차단하고, 어떤 마켓플레이스의 플러그인을 터미널에서 제안할 수 있는지 허용 목록에 추가합니다 | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |

97| [사용자 정의 잠금](https://code.claude.com/docs/ko/settings-reference.md#strictpluginonlycustomization) | skills, 에이전트, hooks 및 MCP 서버가 사용자 및 프로젝트 소스에서 오지 않도록 차단하여 플러그인 또는 관리되는 설정에서만 올 수 있도록 합니다. skills를 잠금하면 [개발자가 claude.ai에서 활성화하는 skills](https://code.claude.com/docs/ko/skills.md#where-synced-skills-load)도 동기화되지 않습니다 | `strictPluginOnlyCustomization` |97| [사용자 정의 잠금](https://code.claude.com/docs/ko/settings-reference.md#strictpluginonlycustomization) | skills, 에이전트, hooks 및 MCP 서버가 사용자 및 프로젝트 소스에서 오지 않도록 차단하여 플러그인 또는 관리되는 설정에서만 올 수 있도록 합니다. skills를 잠금하면 [개발자가 claude.ai에서 활성화하는 skills](https://code.claude.com/docs/ko/skills.md#where-synced-skills-load)도 동기화되지 않습니다 | `strictPluginOnlyCustomization` |

98| [claude.ai 동기화 비활성화](https://code.claude.com/docs/ko/settings-reference.md#syncclaudeaiskills) | Claude Code가 개발자가 claude.ai에서 활성화하는 [skills](https://code.claude.com/docs/ko/skills.md#how-synced-skills-behave) 및 [플러그인](https://code.claude.com/docs/ko/plugins/loading.md#synced-plugins)을 로드하지 않도록 합니다. 조직의 claude.ai에서 Skills를 끄면 Claude Code는 둘 다 동기화를 중지하고, v2.1.273 이상에서는 이미 동기화한 것도 제거합니다. Skills를 끄지 않고 둘 중 하나를 중지하려면 관리되는 설정에서 해당 키를 `false`로 설정합니다 | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |98| [claude.ai 동기화 비활성화](https://code.claude.com/docs/ko/settings-reference.md#syncclaudeaiskills) | Claude Code가 개발자가 claude.ai에서 활성화하는 [skills](https://code.claude.com/docs/ko/skills.md#how-synced-skills-behave) 및 [플러그인](https://code.claude.com/docs/ko/plugins/loading.md#synced-plugins)을 로드하지 않도록 합니다. 조직의 claude.ai에서 Skills를 끄면 Claude Code는 둘 다 동기화를 중지하고, v2.1.273 이상에서는 이미 동기화한 것도 제거합니다. Skills를 끄지 않고 둘 중 하나를 중지하려면 관리되는 설정에서 해당 키를 `false`로 설정합니다 | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |

99| [Hook 제한](https://code.claude.com/docs/ko/settings-reference.md#allowmanagedhooksonly) | 실행되는 hooks를 제한하고 HTTP hook URL을 제한합니다. 전체 효과 목록은 [`allowManagedHooksOnly` 아래에서 실행되는 것](https://code.claude.com/docs/ko/settings-reference#what-runs-under-allowmanagedhooksonly)을 참조하세요 | `allowManagedHooksOnly`, `allowedHttpHookUrls` |99| [Hook 제한](https://code.claude.com/docs/ko/settings-reference.md#allowmanagedhooksonly) | 실행되는 hooks를 제한하고 HTTP hook URL을 제한합니다. 전체 효과 목록은 [`allowManagedHooksOnly` 아래에서 실행되는 것](https://code.claude.com/docs/ko/settings-reference#what-runs-under-allowmanagedhooksonly)을 참조하세요 | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

Details

233| `"default"` | 승인이 필요하고 허용 규칙에 해당하지 않는 도구 호출은 `canUseTool` 콜백을 트리거하며, 콜백이 없으면 거부됩니다 | 사용자 지정 승인 콜백이 있는 대화형 애플리케이션 |233| `"default"` | 승인이 필요하고 허용 규칙에 해당하지 않는 도구 호출은 `canUseTool` 콜백을 트리거하며, 콜백이 없으면 거부됩니다 | 사용자 지정 승인 콜백이 있는 대화형 애플리케이션 |

234| `"acceptEdits"` | 파일 편집과 일반적인 파일 시스템 명령(`mkdir`, `touch`, `mv`, `cp` 등)을 자동 승인하며, 그 외 Bash 명령은 기본 규칙을 따릅니다 | 프로토타이핑 중이거나 격리된 디렉터리에서 작업할 때처럼 Claude의 편집을 신뢰하고 더 빠르게 반복하려는 경우 |234| `"acceptEdits"` | 파일 편집과 일반적인 파일 시스템 명령(`mkdir`, `touch`, `mv`, `cp` 등)을 자동 승인하며, 그 외 Bash 명령은 기본 규칙을 따릅니다 | 프로토타이핑 중이거나 격리된 디렉터리에서 작업할 때처럼 Claude의 편집을 신뢰하고 더 빠르게 반복하려는 경우 |

235| `"plan"` | Claude가 소스 파일을 편집하지 않고 탐색하고 계획합니다. 파일 편집은 절대 자동 승인되지 않으며 `canUseTool` 콜백을 통해 확인을 요청합니다 | 코드 리뷰 중이거나 변경 전에 승인해야 할 때처럼 Claude가 변경 사항을 실행하지 않고 제안하기를 원하는 경우 |235| `"plan"` | Claude가 소스 파일을 편집하지 않고 탐색하고 계획합니다. 파일 편집은 절대 자동 승인되지 않으며 `canUseTool` 콜백을 통해 확인을 요청합니다 | 코드 리뷰 중이거나 변경 전에 승인해야 할 때처럼 Claude가 변경 사항을 실행하지 않고 제안하기를 원하는 경우 |

236| `"dontAsk"` | 절대 확인을 요청하지 않습니다. [권한 규칙](https://code.claude.com/docs/ko/settings-reference.md#permission-settings)으로 사전 승인된 도구와, 작업 디렉터리 내 파일 읽기처럼 `default` 모드에서 승인이 필요 없는 호출은 실행됩니다. 그 외에 확인을 요청했을 모든 호출은 거부되지만, 설치한 [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)을 여전히 승인할 수 있습니다. `AskUserQuestion`, [조직에서 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구, [`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구, [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)는 허용했더라도 거부됩니다 | 헤드리스 에이전트에 고정되고 명시적인 도구 범위를 원하며, `canUseTool`이 없다는 점에 암묵적으로 의존하기보다 확실한 거부를 선호하는 경우 |236| `"dontAsk"` | 절대 확인을 요청하지 않습니다. [권한 규칙](https://code.claude.com/docs/ko/settings-reference.md#permission-settings)으로 사전 승인된 도구와, 작업 디렉터리 내 파일 읽기처럼 `default` 모드에서 승인이 필요 없는 호출은 실행됩니다. 그 외에 확인을 요청했을 모든 호출은 거부되지만, 설치한 [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)을 여전히 승인할 수 있습니다. [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths) 같은 몇몇 호출은 허용했더라도 거부됩니다. 목록은 [Don't ask 모드](https://code.claude.com/docs/ko/agent-sdk/permissions.md#don’t-ask-mode-dontask)를 참조하세요 | 호출을 승인할 사람이 없는 헤드리스 에이전트 |

237| `"auto"` | 모델 분류기를 사용해 셸 명령, 네트워크 요청 같은 작업을 검토하고, 검토한 각 작업을 허용하거나 차단합니다. 사용 가능 여부와 결정 순서는 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)를 참조하세요 | 도구 사용에 대한 안전장치는 유지하려는 자율 에이전트 |237| `"auto"` | 모델 분류기를 사용해 셸 명령, 네트워크 요청 같은 작업을 검토하고, 검토한 각 작업을 허용하거나 차단합니다. 사용 가능 여부와 결정 순서는 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)를 참조하세요 | 도구 사용에 대한 안전장치는 유지하려는 자율 에이전트 |

238| `"bypassPermissions"` | 명시적인 [`ask` 규칙](https://code.claude.com/docs/ko/settings-reference#permission-settings)에 해당하는 도구, [조직에서 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구, 사용자 상호작용이 필요한 도구를 제외한 모든 허용된 도구를 묻지 않고 실행합니다. [세션 간 메시징 보호 장치](https://code.claude.com/docs/ko/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)는 계속 적용됩니다. 우선순위는 [권한 평가 방식](https://code.claude.com/docs/ko/agent-sdk/permissions.md#how-permissions-are-evaluated)을 참조하세요. TypeScript SDK에서는 `options`에 `allowDangerouslySkipPermissions: true`도 필요합니다. Unix에서 root로 실행할 때는 사용할 수 없습니다. 에이전트의 작업이 중요한 시스템에 영향을 줄 수 없는 격리된 환경에서만 사용하세요 | CI, 컨테이너 또는 기타 격리된 환경 |238| `"bypassPermissions"` | `allowedTools`에 나열하지 않은 도구에 대한 호출을 포함해, 도구 호출을 승인 요청 없이 실행합니다. 몇몇 호출은 여전히 `canUseTool` 콜백으로 전달되며, 해당 목록은 [Bypass permissions 모드](https://code.claude.com/docs/ko/agent-sdk/permissions.md#bypass-permissions-mode-bypasspermissions)에 나와 있습니다. TypeScript SDK에서는 `options`에 `allowDangerouslySkipPermissions: true`도 필요합니다. Unix에서 root로 실행할 때는 사용할 수 없습니다. 에이전트의 작업이 중요한 시스템에 영향을 줄 수 없는 격리된 환경에서만 사용하세요 | CI, 컨테이너 또는 기타 격리된 환경 |

239 239 

240대화형 애플리케이션에서는 `"default"`와 도구 승인 콜백을 함께 사용해 승인 프롬프트를 표시하세요. 개발 머신의 자율 에이전트에서는 `"acceptEdits"`가 파일 편집과 일반적인 파일 시스템 명령(`mkdir`, `touch`, `mv`, `cp` 등)을 자동 승인하면서도 그 외 `Bash` 명령은 허용 규칙으로 계속 통제합니다. `"bypassPermissions"`는 CI, 컨테이너 또는 기타 격리된 환경에서만 사용하세요. 자세한 내용은 [권한](https://code.claude.com/docs/ko/agent-sdk/permissions.md)을 참조하세요.240대화형 애플리케이션에서는 `"default"`와 도구 승인 콜백을 함께 사용해 승인 프롬프트를 표시하세요. 개발 머신의 자율 에이전트에서는 `"acceptEdits"`가 파일 편집과 일반적인 파일 시스템 명령(`mkdir`, `touch`, `mv`, `cp` 등)을 자동 승인하면서도 그 외 `Bash` 명령은 허용 규칙으로 계속 통제합니다. `"bypassPermissions"`는 CI, 컨테이너 또는 기타 격리된 환경에서만 사용하세요. 자세한 내용은 [권한](https://code.claude.com/docs/ko/agent-sdk/permissions.md)을 참조하세요.

241 241 

Details

16| 매개변수를 선택 사항으로 만들기 | 스키마에서 선택 사항으로 선언하고 핸들러에서 기본값을 적용합니다. [매개변수를 선택 사항으로 만들기](#make-a-parameter-optional)를 참조하세요. |16| 매개변수를 선택 사항으로 만들기 | 스키마에서 선택 사항으로 선언하고 핸들러에서 기본값을 적용합니다. [매개변수를 선택 사항으로 만들기](#make-a-parameter-optional)를 참조하세요. |

17| Claude에 도구 등록 | `create_sdk_mcp_server` / `createSdkMcpServer`로 래핑하고 `query()`의 `mcpServers`에 전달합니다. [사용자 정의 도구 호출](#call-a-custom-tool)을 참조하세요. |17| Claude에 도구 등록 | `create_sdk_mcp_server` / `createSdkMcpServer`로 래핑하고 `query()`의 `mcpServers`에 전달합니다. [사용자 정의 도구 호출](#call-a-custom-tool)을 참조하세요. |

18| 도구 사전 승인 | 허용된 도구에 추가합니다. [허용된 도구 구성](#configure-allowed-tools)을 참조하세요. |18| 도구 사전 승인 | 허용된 도구에 추가합니다. [허용된 도구 구성](#configure-allowed-tools)을 참조하세요. |

19| 도구 호출에 승인 요구 또는 도구 차단 | TypeScript SDK에서 `createSdkMcpServer()`가 반환하는 구성 객체에 해당 도구의 `permission_policy`를 추가합니다. [특정 도구에 승인 요구](#require-approval-for-specific-tools)를 참조하세요. |

19| Claude의 컨텍스트에서 기본 제공 도구 제거 | 원하는 기본 제공 도구만 나열하는 `tools` 배열을 전달합니다. [허용된 도구 구성](#configure-allowed-tools)을 참조하세요. |20| Claude의 컨텍스트에서 기본 제공 도구 제거 | 원하는 기본 제공 도구만 나열하는 `tools` 배열을 전달합니다. [허용된 도구 구성](#configure-allowed-tools)을 참조하세요. |

20| Claude가 도구를 병렬로 호출하도록 허용 | 부작용이 없는 도구에 `readOnlyHint: true`를 설정합니다. [도구 주석 추가](#add-tool-annotations)를 참조하세요. |21| Claude가 도구를 병렬로 호출하도록 허용 | 부작용이 없는 도구에 `readOnlyHint: true`를 설정합니다. [도구 주석 추가](#add-tool-annotations)를 참조하세요. |

21| Claude가 읽는 오류 메시지 제어 | 원시 예외를 표시하는 대신 메시지를 작성하려면 `isError: true`를 반환합니다. [오류 처리](#handle-errors)를 참조하세요. |22| Claude가 읽는 오류 메시지 제어 | 원시 예외를 표시하는 대신 메시지를 작성하려면 `isError: true`를 반환합니다. [오류 처리](#handle-errors)를 참조하세요. |


327| 필드 | 기본값 | 의미 |328| 필드 | 기본값 | 의미 |

328| :- | :- | :- |329| :- | :- | :- |

329| `readOnlyHint` | `false` | 도구는 환경을 수정하지 않습니다. 도구를 다른 읽기 전용 도구와 병렬로 호출할 수 있는지 여부를 제어합니다. |330| `readOnlyHint` | `false` | 도구는 환경을 수정하지 않습니다. 도구를 다른 읽기 전용 도구와 병렬로 호출할 수 있는지 여부를 제어합니다. |

330| `destructiveHint` | `true` | 도구는 파괴적인 업데이트를 수행할 수 있습니다. 정보 제공용입니다. |331| `destructiveHint` | `true` | 도구는 파괴적인 업데이트를 수행할 수 있습니다. [`always_ask`로 표시](#require-approval-for-specific-tools)하는 모든 도구에는 이 값을 명시적으로 `true`로 설정하세요. |

331| `idempotentHint` | `false` | 동일한 인수로 반복 호출해도 추가 효과가 없습니다. 정보 제공용입니다. |332| `idempotentHint` | `false` | 동일한 인수로 반복 호출해도 추가 효과가 없습니다. 정보 제공용입니다. |

332| `openWorldHint` | `true` | 도구는 프로세스 외부의 시스템에 도달합니다. 정보 제공용입니다. |333| `openWorldHint` | `true` | 도구는 프로세스 외부의 시스템에 도달합니다. 정보 제공용입니다. |

333 334 


383 384 

384기본 제공 도구를 완전히 제거하려면 `tools`에서 생략하거나 `disallowedTools`(Python: `disallowed_tools`)에 단순 이름을 나열하십시오. 둘 다 도구를 컨텍스트 밖에 유지하므로 Claude는 절대 시도하지 않습니다. 범위가 지정된 `disallowedTools` 규칙은 일치하는 호출을 차단하지만 도구를 표시된 상태로 유지하므로 Claude가 시도하는 데 턴을 낭비할 수 있습니다. 전체 평가 순서는 [권한 구성](https://code.claude.com/docs/ko/agent-sdk/permissions.md)을 참조하십시오.385기본 제공 도구를 완전히 제거하려면 `tools`에서 생략하거나 `disallowedTools`(Python: `disallowed_tools`)에 단순 이름을 나열하십시오. 둘 다 도구를 컨텍스트 밖에 유지하므로 Claude는 절대 시도하지 않습니다. 범위가 지정된 `disallowedTools` 규칙은 일치하는 호출을 차단하지만 도구를 표시된 상태로 유지하므로 Claude가 시도하는 데 턴을 낭비할 수 있습니다. 전체 평가 순서는 [권한 구성](https://code.claude.com/docs/ko/agent-sdk/permissions.md)을 참조하십시오.

385 386 

387### 특정 도구에 승인 요구

388 

389도구의 `permission_policy`를 `always_ask`로 설정하면 `allowedTools`가 해당 도구의 호출을 더 이상 승인하지 않으므로, 도구가 목록에 있더라도 호출이 [`canUseTool`](https://code.claude.com/docs/ko/agent-sdk/user-input) 콜백에 도달할 수 있습니다. 대신 `always_deny`로 설정하면 [도구 호출이 거부](https://code.claude.com/docs/ko/agent-sdk/permissions.md#how-permissions-are-evaluated)되지만, 로드한 플러그인의 [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). 이 필드는 TypeScript 전용이며 Agent SDK v0.3.301 이상이 필요합니다.

390 

391정책 항목은 해당 함수에 전달하는 `tools` 옵션이 아니라, `createSdkMcpServer()`가 반환하는 구성 객체의 `tools` 배열에 넣으십시오. 이 예제는 [날씨 도구 예제](#weather-tool-example)의 `weatherServer`를 펼치고 `get_temperature`에 `always_ask` 정책을 부여하는 `tools` 배열을 추가합니다.

392 

393```typescript TypeScript theme={null}

394options: {

395 mcpServers: {

396 weather: {

397 ...weatherServer,

398 tools: [{ name: "get_temperature", permission_policy: "always_ask" as const }]

399 }

400 },

401 allowedTools: ["mcp__weather__get_temperature"],

402 permissionMode: "default",

403 canUseTool: async (toolName, input) => {

404 console.log(`Approval requested for ${toolName}`);

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

406 }

407}

408```

409 

410정책을 시험해 보려면 [사용자 정의 도구 호출](#call-a-custom-tool) 스크립트의 `options`를 이 예제의 `options`로 교체한 다음 터미널에서 해당 스크립트를 실행하십시오. 스크립트는 `Approval requested for mcp__weather__get_temperature`를 출력한 뒤 온도에 대한 Claude의 답변을 출력합니다. 전체 스크립트는 [TypeScript 레퍼런스](https://code.claude.com/docs/ko/agent-sdk/typescript.md#mcpsdkserverconfigwithinstance)를 참조하십시오.

411 

412`auto` 또는 `plan` [권한 모드](https://code.claude.com/docs/ko/agent-sdk/permissions.md#permission-modes)를 사용하는 경우, 도구 호출이 계속 콜백에 도달하도록 도구의 [어노테이션](#add-tool-annotations)에 `destructiveHint: true`를 설정하십시오. 그렇지 않으면 [자동 모드 분류기](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)가 [TypeScript 레퍼런스에 나열된 조건](https://code.claude.com/docs/ko/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call)에 따라 일부 `always_ask` 호출을 승인할 수 있으며, 분류기가 승인한 호출은 콜백에 도달하지 않습니다. 설정되지 않은 `destructiveHint`는 `always_ask` 호출에서 기본값 `true`가 아니라 `false`로 간주되므로 힌트를 명시적으로 설정하십시오.

413 

386## 오류 처리414## 오류 처리

387 415 

388핸들러 오류는 에이전트 루프를 중단하지 않습니다. SDK의 인프로세스 MCP 서버는 포착되지 않은 예외를 캐치하고 오류 결과로 반환하므로, 오류를 보고하는 방식이 Claude가 읽는 내용을 결정하며, 쿼리 실패 여부는 결정하지 않습니다.416핸들러 오류는 에이전트 루프를 중단하지 않습니다. SDK의 인프로세스 MCP 서버는 포착되지 않은 예외를 캐치하고 오류 결과로 반환하므로, 오류를 보고하는 방식이 Claude가 읽는 내용을 결정하며, 쿼리 실패 여부는 결정하지 않습니다.

Details

10 10 

11## 권한이 평가되는 방식11## 권한이 평가되는 방식

12 12 

13> [!NOTE]

14>

15> [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)를 참조하세요.

16 

13Claude가 도구를 요청할 때 SDK는 다음 순서로 권한을 확인합니다.17Claude가 도구를 요청할 때 SDK는 다음 순서로 권한을 확인합니다.

14 18 

15**1. Hooks**19**1. Hooks**


20 24 

21**2. 거부 규칙**25**2. 거부 규칙**

22 26 

23`deny` 규칙(`disallowed_tools` 및 [settings.json](https://code.claude.com/docs/ko/settings-reference.md#permission-settings)에서)을 확인합니다. 거부 규칙이 일치하면 `bypassPermissions` 모드에서도 도구가 차단됩니다. `Bash`와 같은 단순 이름 거부 규칙은 이 평가가 시작되기 전에 Claude의 컨텍스트에서 도구를 제거하므로 `Bash(rm *)`과 같은 범위가 지정된 규칙만 이 단계에서 확인됩니다.27`disallowed_tools` 또는 [settings.json](https://code.claude.com/docs/ko/settings-reference.md#permission-settings)의 거부 규칙이 일치하면 [`bypassPermissions`](#bypass-permissions-mode-bypasspermissions) 모드에서도, 훅이 `allow`를 반환한 경우에도 호출이 거부되며 [`canUseTool`](https://code.claude.com/docs/ko/agent-sdk/user-input)은 호출되지 않습니다.

28 

29TypeScript SDK에서 [사용자 정의 도구](https://code.claude.com/docs/ko/agent-sdk/custom-tools.md#require-approval-for-specific-tools)의 `permission_policy`를 [`always_deny`](https://code.claude.com/docs/ko/agent-sdk/typescript#mcpservertoolpolicy)로 설정하면 해당 도구에 대한 호출은 이 단계에서 거부됩니다.

24 30 

25**3. 확인 규칙**31**3. 확인 규칙**

26 32 


30 36 

31조직이 `ask`로 설정한 [claude.ai connector](https://code.claude.com/docs/ko/mcp.md#organization-controls-on-connector-tools) 도구도 이 단계에서 흐름을 떠납니다. 모든 호출은 `bypassPermissions` 모드에서도, allow 규칙이 일치할 때도 콜백으로 전달됩니다. 콜백은 `Your organization requires approval for this tool` 이유를 받습니다. `dontAsk` 모드에서는 이 모드가 절대 프롬프트하지 않기 때문에 호출이 거부됩니다.37조직이 `ask`로 설정한 [claude.ai connector](https://code.claude.com/docs/ko/mcp.md#organization-controls-on-connector-tools) 도구도 이 단계에서 흐름을 떠납니다. 모든 호출은 `bypassPermissions` 모드에서도, allow 규칙이 일치할 때도 콜백으로 전달됩니다. 콜백은 `Your organization requires approval for this tool` 이유를 받습니다. `dontAsk` 모드에서는 이 모드가 절대 프롬프트하지 않기 때문에 호출이 거부됩니다.

32 38 

39TypeScript SDK에서 사용자 정의 도구의 `permission_policy`를 [`always_ask`](https://code.claude.com/docs/ko/agent-sdk/custom-tools#require-approval-for-specific-tools)로 설정하면 어떤 allow 규칙도, 심지어 `allowedTools` 항목도 해당 도구의 호출을 승인하지 않습니다. `dontAsk` 모드에서는 Claude Code가 이러한 호출을 거부하며, `auto`, `plan` 또는 `bypassPermissions` 모드에서는 콜백이 실행되기 전에 [이를 승인할 수 있습니다](https://code.claude.com/docs/ko/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call).

40 

33**4. 권한 모드**41**4. 권한 모드**

34 42 

35활성 [권한 모드](#permission-modes)를 적용합니다.43활성 [권한 모드](#permission-modes)를 적용합니다.

36 44 

37* `bypassPermissions` 모드에서 Claude Code는 이 단계에 도달하는 모든 것을 승인합니다. 단, 인식된 [중요 경로 제거](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)는 승인되지 않고 대신 전달됩니다.45* `bypassPermissions` 모드에서 Claude Code는 이 단계에 도달하는 모든 것을 승인합니다. 단, 인식된 [중요 경로 제거](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)와 [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/ko/permission-modes#dangerous-rm-operation-not-ruled-out)으로 표시된 Bash 명령은 승인되지 않고 대신 전달됩니다.

38* `acceptEdits` 모드에서 Claude Code는 [Accept edits mode](#accept-edits-mode-acceptedits)에 나열된 파일 작업을 승인합니다.46* `acceptEdits` 모드에서 Claude Code는 [Accept edits mode](#accept-edits-mode-acceptedits)에 나열된 파일 작업을 승인합니다.

39* `plan` 모드에서 Claude Code는 allow 규칙과 관계없이 파일 편집 및 셸 쓰기 도구를 `canUseTool` 콜백으로 보내므로 계획 중에 쓰기 작업을 자동 승인할 수 없습니다.47* `plan` 모드에서 Claude Code는 allow 규칙과 관계없이 파일 편집 도구를 `canUseTool` 콜백으로 보냅니다.

40* 다른 모드에서는 요청이 전달됩니다.48* 다른 모드에서는 요청이 전달됩니다.

41 49 

42**5. 허용 규칙**50**5. 허용 규칙**

43 51 

44`allow` 규칙(`allowed_tools` 및 settings.json에서)을 확인합니다. 규칙이 일치하면 도구가 승인됩니다. 도구가 자체적으로 승인하는 호출도 이 단계에서 규칙 없이 해결됩니다. 예를 들어 작업 디렉터리 내의 파일 읽기 또는 [읽기 전용 Bash 명령](https://code.claude.com/docs/ko/permissions.md#read-only-commands)입니다.52`allow` 규칙(`allowed_tools` 및 settings.json에서)을 확인합니다. 규칙이 일치하면 도구가 승인됩니다. 도구가 자체적으로 승인하는 호출도 이 단계에서 규칙 없이 해결됩니다. 예를 들어 작업 디렉터리 내의 파일 읽기 또는 [읽기 전용 Bash 명령](https://code.claude.com/docs/ko/permissions.md#read-only-commands)입니다.

45 53 

46인식된 [중요 경로 제거](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)는 allow 규칙으로 승인되지 않습니다. 그 후 콜백에 도달하는지 여부는 권한 모드에 따라 달라집니다. 예를 들어 `auto` 모드의 Agent SDK 세션에서 Claude Code는 기본적으로 콜백을 호출하지 않고 이를 거부합니다. [중요 경로 모드 테이블](https://code.claude.com/docs/ko/permission-modes.md#critical-path-removals-in-each-permission-mode)은 각 모드가 이들을 어떻게 처리하는지 나열합니다.54인식된 [중요 경로 제거](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)는 allow 규칙으로 승인되지 않으며, `Dangerous rm operation not ruled out`으로 표시된 명령은 `Bash` 또는 `Bash(*)` 규칙으로 승인되지 않습니다. 그 후 콜백에 도달하는지 여부는 권한 모드에 따라 달라집니다. 예를 들어 `auto` 모드의 Agent SDK 세션에서 Claude Code는 기본적으로 콜백을 호출하지 않고 이를 거부합니다. [중요 경로 모드 테이블](https://code.claude.com/docs/ko/permission-modes.md#critical-path-removals-in-each-permission-mode)은 각 모드가 이들을 어떻게 처리하는지 나열합니다.

47 55 

48allow 규칙은 [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기를 승인하지 않습니다.56allow 규칙은 [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기를 승인하지 않습니다.

49 57 


57 65 

58TypeScript SDK가 평가 순서를 자동 승인하도록 예상하는 구성에서 `canUseTool` 콜백을 전달하면 쿼리가 구성될 때 SDK는 Node.js 프로세스 경고를 한 번 내보냅니다. 경고의 코드는 `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`입니다. 두 가지 구성이 이를 트리거합니다.66TypeScript SDK가 평가 순서를 자동 승인하도록 예상하는 구성에서 `canUseTool` 콜백을 전달하면 쿼리가 구성될 때 SDK는 Node.js 프로세스 경고를 한 번 내보냅니다. 경고의 코드는 `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`입니다. 두 가지 구성이 이를 트리거합니다.

59 67 

60* `permissionMode: 'bypassPermissions'`는 [어떤 모드도 자동 승인하지 않는 작업](https://code.claude.com/docs/ko/permission-modes.md#actions-no-mode-auto-approves)을 제외하고 권한 모드 단계에 도달하는 모든 호출을 자동 승인합니다.68* `permissionMode: 'bypassPermissions'`: 경고 텍스트는 `canUseTool will not be invoked: permissionMode 'bypassPermissions'`로 시작합니다. 도구 호출은 `canUseTool`이 참조되기 전에 승인되므로, 콜백은 [Bypass permissions mode](#bypass-permissions-mode-bypasspermissions)에 나열된 호출과 같은 소수의 호출에 대해서만 실행됩니다. 승인된 호출도 확인하려면 콜백의 확인 로직을 [`PreToolUse` hook](https://code.claude.com/docs/ko/agent-sdk/hooks)에 넣으세요

61* `"Read"`와 같은 각 단순 `allowedTools` 항목은 [어떤 모드도 자동 승인하지 않는 작업](https://code.claude.com/docs/ko/permission-modes.md#actions-no-mode-auto-approves) 및 [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)를 제외하고 콜백이 참조되기 전에 전체 도구를 자동 승인합니다.69* `"Read"`처럼 도구 이름만 있는 `allowedTools` 항목: 경고는 `canUseTool will not be invoked for:` 뒤에 이러한 각 항목을 나열합니다. 나열된 도구에 대한 호출은 [allow 규칙이 절대 승인하지 않는 호출](#calls-an-allow-rule-never-approves)을 제외하고 `canUseTool`이 참조되기 전에 승인됩니다. 나열된 도구의 호출 중 승인이 필요한 호출에 대해 콜백이 실행되도록 하려면 `allowedTools`에서 해당 도구의 항목을 제거하세요

62 70 

63`Bash(ls *)`와 같은 지정자가 있는 항목과 `acceptEdits` 모드는 이를 트리거하지 않으며, 설정 파일에서 오는 허용 규칙은 확인에 표시되지 않습니다.71`Bash(ls *)`와 같은 지정자가 있는 항목과 `acceptEdits` 모드는 이를 트리거하지 않으며, 설정 파일에서 오는 허용 규칙은 확인에 표시되지 않습니다.

64 72 

65`process.on('warning', ...)`으로 수신하고 코드를 일치시켜 로깅하거나 억제합니다. 모드와 규칙과 관계없이 모든 도구 호출을 제어하려면 대신 [`PreToolUse` hook](https://code.claude.com/docs/ko/agent-sdk/hooks)을 사용합니다.73이 경고는 어떤 호출도 차단하지 않으며 어떤 옵션도 변경하지 않습니다. 콜백이 이미 확인하려는 모든 호출을 받고 있다면 구성을 그대로 두세요. 경고를 로그에 기록하려면 `process.on('warning', ...)`으로 수신하고 `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED` 코드를 일치시키세요.

66 74 

67이 페이지는 **허용 및 거부 규칙** 및 **권한 모드**에 중점을 둡니다. 다른 단계의 경우:75이 페이지는 **허용 및 거부 규칙** 및 **권한 모드**에 중점을 둡니다. 다른 단계의 경우:

68 76 


90>98>

91> **자동 승인된 도구는 `canUseTool`에 도달하지 않습니다.** `acceptEdits` 또는 `bypassPermissions`에 의해 또는 허용 규칙에 의해 이전 단계에서 승인된 도구 호출은 `canUseTool` 콜백을 건너뛰므로, 거기에 넣은 권한 검사는 해당 도구에 대해 자동으로 무시됩니다.99> **자동 승인된 도구는 `canUseTool`에 도달하지 않습니다.** `acceptEdits` 또는 `bypassPermissions`에 의해 또는 허용 규칙에 의해 이전 단계에서 승인된 도구 호출은 `canUseTool` 콜백을 건너뛰므로, 거기에 넣은 권한 검사는 해당 도구에 대해 자동으로 무시됩니다.

92>100>

93> 허용 규칙은 `AskUserQuestion`, [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)로 표시된 MCP 도구, [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구, 그리고 인식된 `rm` 및 `rmdir` [중요 경로 제거](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)를 자동 승인하지 않습니다. `dontAsk` 모드에서 Claude Code는 콜백을 호출하지 않고 이러한 호출을 거부합니다. 다른 모드에서는 처음 세 가지가 콜백에 도달합니다. [중요 경로 모드 표](https://code.claude.com/docs/ko/permission-modes.md#critical-path-removals-in-each-permission-mode)에는 각 모드가 중요 경로 제거를 어떻게 처리하는지 나와 있습니다. 이러한 제거를 인식하는 검사는 [일부 명령을 놓칠 수 있습니다](https://code.claude.com/docs/ko/permission-modes.md#critical-paths).101> `allowed_tools`에 있는 도구에 대한 호출이 여전히 `canUseTool` 콜백에 도달하거나 `dontAsk` 모드에서 거부된다면, 해당 호출이 [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)인지 또는 다음 호출 중 하나인지 확인하십시오. 어떤 허용 규칙도 이러한 호출을 승인하지 않습니다. 확인을 요청하지 않는 `dontAsk` 모드에서 Claude Code는 `canUseTool`을 호출하지 않고 이러한 호출을 거부하며, 다른 권한 모드에서는 각 항목에 설명된 대로 처리합니다:

102>

103> * `AskUserQuestion`, [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)로 표시된 MCP 도구, [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구: 콜백에서 응답합니다. `AskUserQuestion`에 응답하는 방법은 [명확화 질문 처리](https://code.claude.com/docs/ko/agent-sdk/user-input.md#handle-clarifying-questions)에 나와 있으며, 커넥터 호출은 `Your organization requires approval for this tool`이라는 사유와 함께 도착합니다

104>

105> * 애플리케이션이 [`always_ask`](https://code.claude.com/docs/ko/agent-sdk/custom-tools#require-approval-for-specific-tools)로 표시한 사용자 지정 도구: 콜백에서 호출을 결정합니다. 이러한 호출이 도착하지 않도록 하려면 [세션 중에 정책을 변경](https://code.claude.com/docs/ko/agent-sdk/typescript.md#mcpsdkserverconfigwithinstance)합니다. `auto`, `plan`, `bypassPermissions` 모드에서는 [`always_ask` 호출을 승인할 수 있는 권한 모드](https://code.claude.com/docs/ko/agent-sdk/typescript#permission-modes-that-can-approve-an-always_ask-call)에 나열된 경우에 호출이 콜백 전에 승인될 수 있습니다

94>106>

95> 적용 범위는 항목의 형식에 따라 다릅니다: `Read` 또는 `mcp__github__get_issue`와 같은 단순 이름은 위의 예외와 [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)를 제외하고 해당 도구에 대한 모든 호출을 자동 승인하고, `Bash(npm test *)`와 같은 범위 지정 규칙은 일치하는 호출만 자동 승인하며, 승인이 필요한 다른 `Bash` 호출은 여전히 콜백으로 넘어갑니다. 모든 도구 호출에서 실행되어야 하는 검사의 경우 [`PreToolUse` 훅](https://code.claude.com/docs/ko/agent-sdk/hooks)을 사용합니다: 훅은 다른 모든 단계 전에 실행되고, 훅 거부는 `bypassPermissions` 모드에서도 적용됩니다.107> * 인식된 `rm` 및 `rmdir` [중요 경로 제거](https://code.claude.com/docs/ko/permission-modes.md#critical-paths): `default`, `acceptEdits`, `bypassPermissions` 모드에서는 콜백에서 제거를 허용하거나 거부하며, 이때 [`decisionReason`](https://code.claude.com/docs/ko/agent-sdk/typescript#canusetool)은 `Dangerous rm`으로 시작합니다. `auto` 및 `plan` 모드의 경우 [각 권한 모드의 중요 경로 제거](https://code.claude.com/docs/ko/permission-modes.md#critical-path-removals-in-each-permission-mode)를 참조하십시오. 이러한 제거를 인식하는 검사는 [일부 명령을 놓칠 수 있습니다](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)

108>

109> * **단순 이름**: `Read` 또는 `mcp__github__get_issue`와 같은 항목은 [어떤 모드도 자동 승인하지 않는 작업](https://code.claude.com/docs/ko/permission-modes.md#actions-no-mode-auto-approves)과 [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)를 제외하고 해당 도구에 대한 모든 호출을 자동 승인합니다.

110>

111> * **범위 지정 규칙**: `Bash(npm test *)`와 같은 항목은 일치하는 호출만 자동 승인하며, 승인이 필요한 다른 `Bash` 호출은 여전히 콜백으로 넘어갑니다.

112>

113> 모든 도구 호출에서 실행되어야 하는 검사의 경우 [`PreToolUse` 훅](https://code.claude.com/docs/ko/agent-sdk/hooks)을 사용합니다: 훅은 다른 모든 단계 전에 실행되고, 훅 거부는 `bypassPermissions` 모드에서도 적용됩니다.

96 114 

97잠금된 에이전트의 경우 `allowedTools`를 `permissionMode: "dontAsk"`와 쌍으로 지정합니다:115잠금된 에이전트의 경우 `allowedTools`를 `permissionMode: "dontAsk"`와 쌍으로 지정합니다:

98 116 


103};121};

104```122```

105 123 

106나열된 도구는 [어떤 모드도 자동 승인하지 않는 작업](https://code.claude.com/docs/ko/permission-modes.md#actions-no-mode-auto-approves)과 [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)를 제외하고 승인됩니다. 프롬프트를 표시할 다른 모든 호출은 대신 거부되지만, 설치한 [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)를 승인할 수 있습니다.124나열된 `Read`, `Glob`, `Grep` 호출은 [어떤 모드도 자동 승인하지 않는 작업](https://code.claude.com/docs/ko/permission-modes.md#actions-no-mode-auto-approves)과 [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)를 제외하고 승인됩니다. 프롬프트를 표시할 다른 모든 호출은 대신 거부되지만, 설치한 [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)를 승인할 수 있습니다.

107 125 

108`default` 모드에서 승인이 필요 없는 호출은 나열 여부와 관계없이 실행됩니다. 예를 들어 [읽기 전용 Bash 명령](https://code.claude.com/docs/ko/permissions.md#read-only-commands), 실행 전에 묻지 않는 `Agent`와 같은 도구, 작업 디렉터리 내의 파일 읽기 등입니다. 도구를 요청에서 완전히 제거하려면 `disallowedTools`에 단순 이름을 추가합니다.126`default` 모드에서 승인이 필요 없는 호출은 나열 여부와 관계없이 실행됩니다. 예를 들어 [읽기 전용 Bash 명령](https://code.claude.com/docs/ko/permissions.md#read-only-commands), 실행 전에 묻지 않는 `Agent`와 같은 도구, 작업 디렉터리 내의 파일 읽기 등입니다. 기본 제공 도구의 호출을 거부하는 대신 Claude에게서 도구를 완전히 숨기려면 `disallowedTools`에 해당 도구의 단순 이름을 추가합니다.

109 127 

110> [!WARNING]128> [!WARNING]

111>129>


128| `default` | 표준 권한 동작 | 모드 기반 자동 승인이 없으며, 승인이 필요하고 어떤 허용 규칙과도 일치하지 않는 호출은 `canUseTool` 콜백을 트리거합니다 |146| `default` | 표준 권한 동작 | 모드 기반 자동 승인이 없으며, 승인이 필요하고 어떤 허용 규칙과도 일치하지 않는 호출은 `canUseTool` 콜백을 트리거합니다 |

129| `dontAsk` | 확인을 요청하는 대신 거부 | 원래 확인을 요청했을 모든 호출은 `canUseTool`을 호출하지 않고 거부되지만, 사용자가 설치한 [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)을 승인할 수 있습니다. `allowed_tools` 또는 `settings.json` 허용 규칙으로 승인된 호출은 실행되며, `default` 모드에서 승인이 필요 없는 호출도 실행됩니다. [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)와 같은 일부 호출은 `allowed_tools` 또는 허용 규칙이 일치하더라도 거부됩니다. 전체 목록은 [묻지 않음 모드](#don’t-ask-mode-dontask)를 참조하세요 |147| `dontAsk` | 확인을 요청하는 대신 거부 | 원래 확인을 요청했을 모든 호출은 `canUseTool`을 호출하지 않고 거부되지만, 사용자가 설치한 [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)을 승인할 수 있습니다. `allowed_tools` 또는 `settings.json` 허용 규칙으로 승인된 호출은 실행되며, `default` 모드에서 승인이 필요 없는 호출도 실행됩니다. [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)와 같은 일부 호출은 `allowed_tools` 또는 허용 규칙이 일치하더라도 거부됩니다. 전체 목록은 [묻지 않음 모드](#don’t-ask-mode-dontask)를 참조하세요 |

130| `acceptEdits` | 파일 편집 자동 수락 | 파일 편집과 [파일 시스템 작업](#accept-edits-mode-acceptedits)(`mkdir`, `rm`, `mv` 등)이 자동으로 승인됩니다 |148| `acceptEdits` | 파일 편집 자동 수락 | 파일 편집과 [파일 시스템 작업](#accept-edits-mode-acceptedits)(`mkdir`, `rm`, `mv` 등)이 자동으로 승인됩니다 |

131| `bypassPermissions` | 권한 확인 우회 | [어떤 모드도 자동 승인하지 않는 작업](https://code.claude.com/docs/ko/permission-modes.md#actions-no-mode-auto-approves)을 제외하고 도구가 권한 프롬프트 없이 실행됩니다. 주의해서 사용하세요 |149| `bypassPermissions` | 권한 확인 우회 | [어떤 모드도 자동 승인하지 않는 작업](https://code.claude.com/docs/ko/permission-modes.md#actions-no-mode-auto-approves)과, [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md) 외부에서 애플리케이션이 [`always_ask`로 지정한](https://code.claude.com/docs/ko/agent-sdk/custom-tools#require-approval-for-specific-tools) 커스텀 도구를 제외하고 도구가 권한 프롬프트 없이 실행됩니다. 주의해서 사용하세요 |

132| `plan` | 플랜 모드 | Claude가 소스 파일을 편집하지 않고 탐색하고 계획합니다. 파일 편집은 자동 승인되지 않으며 `canUseTool` 콜백을 통해 확인을 요청합니다 |150| `plan` | 플랜 모드 | Claude가 소스 파일을 편집하지 않고 탐색하고 계획합니다. 파일 편집은 자동 승인되지 않으며 `canUseTool` 콜백을 통해 확인을 요청합니다 |

133| `auto` | 모델 분류 기반 승인 | 모델 분류기가 셸 명령 및 네트워크 요청과 같은 작업을 검토하고, 검토하는 각 작업을 허용하거나 차단합니다. 사용 가능 여부와 결정 순서는 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)를 참조하세요 |151| `auto` | 모델 분류 기반 승인 | 모델 분류기가 셸 명령 및 네트워크 요청과 같은 작업을 검토하고, 검토하는 각 작업을 허용하거나 차단합니다. 사용 가능 여부와 결정 순서는 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)를 참조하세요 |

134 152 


256* 해당 범위 밖의 경로에서 작업하는 경우274* 해당 범위 밖의 경로에서 작업하는 경우

257* 보호된 경로에 쓰는 경우275* 보호된 경로에 쓰는 경우

258* Claude Code가 [중요 경로](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)로 인식하는 경로를 `rm` 또는 `rmdir`로 삭제하는 경우276* Claude Code가 [중요 경로](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)로 인식하는 경로를 `rm` 또는 `rmdir`로 삭제하는 경우

277* 예를 들어 옵션, glob, 또는 `timeout 5`나 `LANG=C` 접두사와 함께 [`touch`](https://code.claude.com/docs/ko/permission-modes#auto-approve-file-edits-with-acceptedits-mode)를 실행하는 경우

259 278 

260**사용 시기:** Claude의 편집을 신뢰하고 프로토타이핑 중이거나 격리된 디렉터리에서 작업할 때처럼 더 빠른 반복을 원하는 경우에 사용합니다.279**사용 시기:** Claude의 편집을 신뢰하고 프로토타이핑 중이거나 격리된 디렉터리에서 작업할 때처럼 더 빠른 반복을 원하는 경우에 사용합니다.

261 280 


263 282 

264`canUseTool`을 호출하지 않고 모든 권한 프롬프트를 거부로 전환하지만, 사용자가 설치한 [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)을 승인할 수 있습니다. `allowed_tools`, `settings.json` 허용 규칙 또는 훅으로 사전 승인된 도구는 정상적으로 실행됩니다. 작업 디렉터리 내부의 파일 읽기나 `Agent` 호출처럼 `default` 모드에서 승인이 필요 없는 호출도 실행됩니다.283`canUseTool`을 호출하지 않고 모든 권한 프롬프트를 거부로 전환하지만, 사용자가 설치한 [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)을 승인할 수 있습니다. `allowed_tools`, `settings.json` 허용 규칙 또는 훅으로 사전 승인된 도구는 정상적으로 실행됩니다. 작업 디렉터리 내부의 파일 읽기나 `Agent` 호출처럼 `default` 모드에서 승인이 필요 없는 호출도 실행됩니다.

265 284 

266[조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구, 사용자 상호작용이 필요한 도구, [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths), 그리고 인식된 [중요 경로 삭제](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)는 허용 규칙이 일치하더라도 거부됩니다. `PreToolUse` 훅의 허용도 인식된 중요 경로 삭제나 네트워크 경로에서의 읽기를 통과시키지 않습니다. 이러한 삭제를 인식하는 검사는 [일부 명령을 놓칠 수 있습니다](https://code.claude.com/docs/ko/permission-modes.md#critical-paths).285다음 호출은 허용 규칙이 일치하더라도 거부됩니다.

286 

287* [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구

288* `AskUserQuestion`, 그리고 서버가 [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)을 설정한 MCP 도구처럼 사용자 상호작용이 필요한 도구

289* 애플리케이션이 `permission_policy`를 [`always_ask`](https://code.claude.com/docs/ko/agent-sdk/custom-tools#require-approval-for-specific-tools)로 설정한 커스텀 도구

290* [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)

291* 인식된 [중요 경로 삭제](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)

292 

293`PreToolUse` 훅이 인식된 중요 경로 삭제, 네트워크 경로에서의 읽기 또는 `always_ask`로 지정된 도구 호출에 대해 `allow`를 반환하더라도 해당 호출은 여전히 거부됩니다. 이러한 삭제를 인식하는 검사는 [일부 명령을 놓칠 수 있습니다](https://code.claude.com/docs/ko/permission-modes.md#critical-paths).

267 294 

268**사용 시기:** 헤드리스 에이전트에 고정되고 명시적인 도구 집합을 제공하고, `canUseTool`이 없다는 점에 암묵적으로 의존하기보다 확실한 거부를 선호하는 경우에 사용합니다.295**사용 시기:** 헤드리스 에이전트에 고정되고 명시적인 도구 집합을 제공하고, `canUseTool`이 없다는 점에 암묵적으로 의존하기보다 확실한 거부를 선호하는 경우에 사용합니다.

269 296 

270#### 권한 우회 모드(`bypassPermissions`)297#### 권한 우회 모드(`bypassPermissions`)

271 298 

272아래 경고에 나열된 경우를 제외하고 확인을 요청하지 않고 도구 사용을 자동 승인합니다. 훅은 여전히 실행되며 필요한 경우 작업을 차단할 수 있습니다. Linux 및 macOS에서 Claude Code는 [인식된 샌드박스](https://code.claude.com/docs/ko/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) 외부에서 root로 또는 `sudo` 아래에서 이 모드로 시작하는 것을 거부하며, 쿼리는 첫 번째 턴 전에 실패합니다.299[어떤 모드도 자동 승인하지 않는 작업](https://code.claude.com/docs/ko/permission-modes.md#actions-no-mode-auto-approves)을 제외하고 확인을 요청하지 않고 도구 사용을 자동 승인합니다. 훅은 여전히 실행되며 필요한 경우 작업을 차단할 수 있습니다. Linux 및 macOS에서 Claude Code는 [인식된 샌드박스](https://code.claude.com/docs/ko/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) 외부에서 root로 또는 `sudo` 아래에서 이 모드로 시작하는 것을 거부하며, 쿼리는 첫 번째 턴 전에 실패합니다.

273 300 

274> [!WARNING]301> [!WARNING]

275>302>


278> `allowed_tools`는 이 모드를 제한하지 않습니다. 나열한 도구뿐만 아니라 모든 도구가 승인됩니다. 다음 제어는 여전히 적용됩니다.305> `allowed_tools`는 이 모드를 제한하지 않습니다. 나열한 도구뿐만 아니라 모든 도구가 승인됩니다. 다음 제어는 여전히 적용됩니다.

279>306>

280> * 거부 규칙, 명시적 `ask` 규칙 및 훅은 모드 확인 전에 평가되며 여전히 도구를 차단할 수 있습니다.307> * 거부 규칙, 명시적 `ask` 규칙 및 훅은 모드 확인 전에 평가되며 여전히 도구를 차단할 수 있습니다.

281> * [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구, 사용자 상호작용이 필요한 도구, 그리고 인식된 [중요 경로 삭제](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)는 여전히 `canUseTool` 콜백으로 넘어갑니다. 이러한 삭제를 인식하는 검사는 [일부 명령을 놓칠 수 있습니다](https://code.claude.com/docs/ko/permission-modes.md#critical-paths).308> * [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구, 사용자 상호작용이 필요한 도구, 그리고 인식된 [중요 경로 삭제](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)는 여전히 `canUseTool` 콜백으로 넘어갑니다. 이러한 삭제를 인식하는 검사는 [일부 명령을 놓칠 수 있습니다](https://code.claude.com/docs/ko/permission-modes.md#critical-paths). [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md) 외부에서는 애플리케이션이 [`always_ask`로 지정한](https://code.claude.com/docs/ko/agent-sdk/custom-tools#require-approval-for-specific-tools) 커스텀 도구 호출도 콜백으로 넘어갑니다.

282> * [세션 간 메시징 보호 장치](https://code.claude.com/docs/ko/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)는 여전히 적용됩니다.309> * [세션 간 메시징 보호 장치](https://code.claude.com/docs/ko/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)는 여전히 적용됩니다.

283 310 

284#### 플랜 모드(`plan`)311#### 플랜 모드(`plan`)

285 312 

286Claude는 소스 파일을 편집하지 않고 코드베이스를 탐색하여 계획을 작성합니다. 읽기 전용 도구는 `default` 권한 모드에서와 동일하게 실행됩니다.313Claude는 소스 파일을 편집하지 않고 코드베이스를 탐색하여 계획을 작성합니다. 플랜 모드에서는 허용 규칙이 일치하거나 `PreToolUse` 훅이 `allow`를 반환하더라도 파일 편집이 자동 승인되지 않습니다. 대신 `canUseTool` 콜백을 통해 확인을 요청합니다.

287 314 

288플랜 모드에서는 허용 규칙이 일치하거나 `PreToolUse` 훅이 `allow`를 반환하더라도 파일 편집이 자동 승인되지 않습니다. 대신 `canUseTool` 콜백을 통해 확인을 요청합니다. Claude Code v2.1.212 이상에서는 `touch`, `rm`과 같이 파일을 수정하는 셸 명령도 같은 방식으로 `canUseTool` 콜백에 도달합니다.315세션에서 자동 모드를 사용할 수 있는 동안에는 Claude가 계획 중에 실행하는 명령이 기본적으로 콜백에 도달하지 않습니다. [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)가 사용하는 분류기 모델이 [대신 이를 검토](https://code.claude.com/docs/ko/permission-modes.md#analyze-before-you-edit-with-plan-mode)하기 때문입니다. 이 검토가 켜져 있으면 분류기는 허용 규칙이 없는 `WebFetch` 호출처럼 원래 콜백에 도달했을 읽기 전용 호출도 승인할 수 있습니다.

289 316 

290TypeScript SDK에서 `permissionMode: 'plan'`과 함께 `allowDangerouslySkipPermissions: true`를 설정하더라도, 파일 편집과 파일을 수정하는 셸 명령은 여전히 `canUseTool` 콜백에 도달합니다. 이 옵션을 사용하면 나중에 `setPermissionMode()`로 `bypassPermissions`로 전환할 수 있습니다.317> [!NOTE]

318>

319> TypeScript SDK에서 `permissionMode: 'plan'`과 함께 `allowDangerouslySkipPermissions: true`를 설정하더라도, 파일 편집은 여전히 `canUseTool` 콜백에 도달합니다. 플랜 모드로 시작하는 세션을 나중에 `setPermissionMode()`로 `bypassPermissions`로 전환하려면 처음부터 `allowDangerouslySkipPermissions`를 설정해야 합니다.

291 320 

292Claude는 계획을 확정하기 전에 요구 사항을 명확히 하기 위해 `AskUserQuestion`을 사용할 수 있습니다. 이러한 프롬프트를 처리하는 방법은 [승인 및 사용자 입력 처리](https://code.claude.com/docs/ko/agent-sdk/user-input.md#handle-clarifying-questions)를 참조하세요.321Claude는 계획을 확정하기 전에 요구 사항을 명확히 하기 위해 `AskUserQuestion`을 사용할 수 있습니다. 이러한 프롬프트를 처리하는 방법은 [승인 및 사용자 입력 처리](https://code.claude.com/docs/ko/agent-sdk/user-input.md#handle-clarifying-questions)를 참조하세요.

293 322 

Details

70>70>

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

72 72 

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

74 

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

76 

77이 예제에서 `q`는 `query()`가 반환한 `Query` 객체입니다. 이 예제는 실행 중인 세션에 플러그인 디렉터리 하나를 추가하고, `reloadPlugins()`가 반환된 후 세션에 있는 모든 플러그인의 경로를 출력합니다:

78 

79```typescript theme={null}

80const result = await q.reloadPlugins({

81 addPlugins: [{ type: "local", path: "/home/user/plugins/another-plugin" }]

82});

83 

84console.log(result.plugins.map((plugin) => plugin.path));

85```

86 

87플러그인이 로드되었다면 출력된 목록에 `/home/user/plugins/another-plugin`이 포함됩니다. 해당 경로가 목록에 없거나 `reloadPlugins()`가 거부되면 [`reloadPlugins()`가 `addPlugins` 폴더를 로드하지 않는 경우](https://code.claude.com/docs/ko/agent-sdk/typescript#when-reloadplugins-doesnt-load-the-addplugins-folders)에서 원인을 확인하십시오.

88 

73## 플러그인 설치 확인89## 플러그인 설치 확인

74 90 

75플러그인이 성공적으로 로드되면 시스템 초기화 메시지에 나타납니다. 플러그인을 사용할 수 있는지 확인할 수 있습니다:91플러그인이 성공적으로 로드되면 시스템 초기화 메시지에 나타납니다. 플러그인을 사용할 수 있는지 확인할 수 있습니다:

Details

200| :- | :- | :- | :- |200| :- | :- | :- | :- |

201| `title` | `string` | `undefined` | 도구의 사람이 읽을 수 있는 제목 |201| `title` | `string` | `undefined` | 도구의 사람이 읽을 수 있는 제목 |

202| `readOnlyHint` | `boolean` | `false` | `true`인 경우 도구는 환경을 수정하지 않습니다 |202| `readOnlyHint` | `boolean` | `false` | `true`인 경우 도구는 환경을 수정하지 않습니다 |

203| `destructiveHint` | `boolean` | `true` | `true`인 경우 도구는 파괴적인 업데이트를 수행할 수 있습니다 (`readOnlyHint`가 `false`일 때만 의미 있음) |203| `destructiveHint` | `boolean` | `true` | `true`인 경우 도구는 파괴적인 업데이트를 수행할 수 있습니다. [`always_ask`](#mcpservertoolpolicy)로 표시한 모든 도구에는 `destructiveHint: true`를 명시적으로 설정해야 합니다. 그렇지 않으면 자동 모드 분류기가 `canUseTool` 콜백 대신 해당 도구의 호출을 승인할 수 있습니다. `destructiveHint`를 설정하지 않은 채로 두는 것만으로는 충분하지 않습니다. MCP 사양의 기본값은 `true`이지만, Claude Code는 `always_ask` 호출을 처리할 때 설정되지 않은 `destructiveHint`를 `false`로 취급하기 때문입니다 |

204| `idempotentHint` | `boolean` | `false` | `true`인 경우 동일한 인수로 반복 호출해도 추가 효과가 없습니다 (`readOnlyHint`가 `false`일 때만 의미 있음) |204| `idempotentHint` | `boolean` | `false` | `true`인 경우 동일한 인수로 반복 호출해도 추가 효과가 없습니다 (`readOnlyHint`가 `false`일 때만 의미 있음) |

205| `openWorldHint` | `boolean` | `true` | `true`인 경우 도구는 외부 엔티티와 상호작용합니다 (예: 웹 검색). `false`인 경우 도구의 도메인은 폐쇄적입니다 (예: 메모리 도구) |205| `openWorldHint` | `boolean` | `true` | `true`인 경우 도구는 외부 엔티티와 상호작용합니다 (예: 웹 검색). `false`인 경우 도구의 도메인은 폐쇄적입니다 (예: 메모리 도구) |

206 206 


630 ): Promise<SDKControlReadFileResponse | null>;630 ): Promise<SDKControlReadFileResponse | null>;

631 reloadPlugins(options?: {631 reloadPlugins(options?: {

632 holdOnCacheImpact?: boolean;632 holdOnCacheImpact?: boolean;

633 addPlugins?: SdkPluginConfig[];

633 }): Promise<SDKControlReloadPluginsResponse>;634 }): Promise<SDKControlReloadPluginsResponse>;

634 reloadSkills(): Promise<SDKControlReloadSkillsResponse>;635 reloadSkills(): Promise<SDKControlReloadSkillsResponse>;

635 reloadOutputStyles(): Promise<SDKControlReloadOutputStylesResponse>;636 reloadOutputStyles(): Promise<SDKControlReloadOutputStylesResponse>;


669| `mcpServerStatus()` | 연결된 MCP 서버의 상태를 [`McpServerStatus`](#mcpserverstatus)`[]`로 반환합니다 |670| `mcpServerStatus()` | 연결된 MCP 서버의 상태를 [`McpServerStatus`](#mcpserverstatus)`[]`로 반환합니다 |

670| `getContextUsage(opts?)` | 세션의 컨텍스트 윈도우 사용량을 카테고리, 스킬, 도구별로 분류한 [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse)를 반환합니다. 기본 `detail`에서는 대화형 세션에서 `/context`가 보여 주는 데이터를 포함하며, 메시지 스트림에 나타나지 않는 토큰 계산 API 요청으로 계산됩니다. [이러한 요청이 처리되는 방식](#sdkcontrolgetcontextusageresponse)을 참조하세요. [`detail` 옵션](#sdkcontrolgetcontextusageresponse)에는 Agent SDK v0.3.257 이상이 필요합니다 |671| `getContextUsage(opts?)` | 세션의 컨텍스트 윈도우 사용량을 카테고리, 스킬, 도구별로 분류한 [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse)를 반환합니다. 기본 `detail`에서는 대화형 세션에서 `/context`가 보여 주는 데이터를 포함하며, 메시지 스트림에 나타나지 않는 토큰 계산 API 요청으로 계산됩니다. [이러한 요청이 처리되는 방식](#sdkcontrolgetcontextusageresponse)을 참조하세요. [`detail` 옵션](#sdkcontrolgetcontextusageresponse)에는 Agent SDK v0.3.257 이상이 필요합니다 |

671| `readFile(path, options?)` | 세션의 파일 시스템에서 파일을 읽습니다. Claude Code는 `cwd`를 기준으로 경로를 확인하며, 제공하는 파일은 [`readFile()`이 읽을 수 있는 파일](#what-readfile-can-read)에 나열되어 있습니다. 읽기 상한을 변경하려면 `{ maxBytes }`를 전달하고(기본값 1 MB, 최대 10 MB), 이미지와 같은 바이너리 파일에는 `{ encoding: 'base64' }`를 전달하세요. [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse)로 resolve되며, 권한 거부, 파일 없음 또는 전송 오류 시에는 `null`로 resolve됩니다. TypeScript SDK v0.2.121 이상이 필요합니다 |672| `readFile(path, options?)` | 세션의 파일 시스템에서 파일을 읽습니다. Claude Code는 `cwd`를 기준으로 경로를 확인하며, 제공하는 파일은 [`readFile()`이 읽을 수 있는 파일](#what-readfile-can-read)에 나열되어 있습니다. 읽기 상한을 변경하려면 `{ maxBytes }`를 전달하고(기본값 1 MB, 최대 10 MB), 이미지와 같은 바이너리 파일에는 `{ encoding: 'base64' }`를 전달하세요. [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse)로 resolve되며, 권한 거부, 파일 없음 또는 전송 오류 시에는 `null`로 resolve됩니다. TypeScript SDK v0.2.121 이상이 필요합니다 |

672| `reloadPlugins(options?)` | 디스크에서 플러그인을 다시 로드하여, 세션 중에 설치하거나 편집한 플러그인이 실행 중인 세션에 반영되도록 합니다. 세션의 명령, 서브에이전트, 플러그인, MCP 서버 상태를 나열하는 [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse)로 resolve됩니다. Agent SDK v0.2.85 이상이 필요합니다. [`holdOnCacheImpact` 옵션](#sdkcontrolreloadpluginsresponse)에는 Agent SDK v0.3.268 이상이 필요합니다 |673| `reloadPlugins(options?)` | 디스크에서 플러그인을 다시 로드하여 세션 중에 설치하거나 편집한 플러그인이 실행 중인 세션에 반영되도록 합니다. 세션의 명령, 서브에이전트, 플러그인, MCP 서버 상태를 나열하는 [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse)로 확인됩니다. Agent SDK v0.2.85 이상이 필요합니다. [`holdOnCacheImpact` 옵션](#sdkcontrolreloadpluginsresponse)에는 Agent SDK v0.3.268 이상이 필요합니다. [`addPlugins` 옵션](#load-more-plugin-folders-with-addplugins)에는 Agent SDK v0.3.301 이상이 필요합니다 |

673| `reloadSkills()` | 디스크에서 스킬을 다시 로드하여, 세션 중에 추가하거나 편집한 스킬을 실행 중인 세션에서 사용할 수 있게 합니다. 다시 로드한 후 사용 가능한 스킬을 나열하는 [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse)로 resolve됩니다. Agent SDK v0.3.163 이상이 필요합니다 |674| `reloadSkills()` | 디스크에서 스킬을 다시 로드하여, 세션 중에 추가하거나 편집한 스킬을 실행 중인 세션에서 사용할 수 있게 합니다. 다시 로드한 후 사용 가능한 스킬을 나열하는 [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse)로 resolve됩니다. Agent SDK v0.3.163 이상이 필요합니다 |

674| `reloadOutputStyles()` | 디스크에서 [출력 스타일](https://code.claude.com/docs/ko/output-styles.md)을 다시 읽어, 세션 중에 추가하거나 편집한 스타일 파일을 실행 중인 세션에서 사용할 수 있게 합니다. 다시 로드한 후 사용 가능한 스타일 이름을 나열하는 [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse)로 resolve됩니다. Agent SDK v0.3.261 이상이 필요합니다 |675| `reloadOutputStyles()` | 디스크에서 [출력 스타일](https://code.claude.com/docs/ko/output-styles.md)을 다시 읽어, 세션 중에 추가하거나 편집한 스타일 파일을 실행 중인 세션에서 사용할 수 있게 합니다. 다시 로드한 후 사용 가능한 스타일 이름을 나열하는 [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse)로 resolve됩니다. Agent SDK v0.3.261 이상이 필요합니다 |

675| `seedReadState(path, mtime)` | 파일을 이미 읽은 것으로 표시하여 이후 Edit가 `File has not been read yet`으로 실패하지 않도록 합니다. [`seedReadState()`](#seedreadstate)를 참조하세요. TypeScript SDK v0.2.83 이상이 필요합니다 |676| `seedReadState(path, mtime)` | 파일을 이미 읽은 것으로 표시하여 이후 Edit가 `File has not been read yet`으로 실패하지 않도록 합니다. [`seedReadState()`](#seedreadstate)를 참조하세요. TypeScript SDK v0.2.83 이상이 필요합니다 |


1135 1136 

1136`cache_impact`는 `held: true`와 함께 있을 때만 존재합니다. `mcp_servers_added`와 `mcp_servers_removed`는 다시 로드가 등록하거나 제거할 플러그인 MCP 서버를 범위가 지정된 `plugin:<plugin>:<server>` 이름으로 나타냅니다. 이 이름은 플러그인 작성자가 정하므로 표시하기 전에 검증하세요. `lsp_tool_change`는 적용 시 LSP 도구가 추가되는지 제거되는지를 나타내며, 둘 다 아니면 `null`입니다. `may-` 형식은 검사가 대기 중인 플러그인 집합을 완전히 파악할 수 없었음을 의미합니다.1137`cache_impact`는 `held: true`와 함께 있을 때만 존재합니다. `mcp_servers_added`와 `mcp_servers_removed`는 다시 로드가 등록하거나 제거할 플러그인 MCP 서버를 범위가 지정된 `plugin:<plugin>:<server>` 이름으로 나타냅니다. 이 이름은 플러그인 작성자가 정하므로 표시하기 전에 검증하세요. `lsp_tool_change`는 적용 시 LSP 도구가 추가되는지 제거되는지를 나타내며, 둘 다 아니면 `null`입니다. `may-` 형식은 검사가 대기 중인 플러그인 집합을 완전히 파악할 수 없었음을 의미합니다.

1137 1138 

1139#### `addPlugins`로 플러그인 폴더 추가 로드

1140 

1141시작 시 [`plugins`](#options) 옵션에 없던 플러그인 폴더를 로드하려면, `path`가 절대 경로인 [`SdkPluginConfig`](#sdkpluginconfig) 항목 목록을 `addPlugins`로 `reloadPlugins()`에 전달합니다. Claude Code는 새 폴더를 로드하고 세션의 기존 플러그인을 한 번에 다시 로드합니다. 해당 폴더 항목에 [`skipMcpDiscovery`](#sdkpluginconfig)를 설정하지 않는 한, 추가된 각 플러그인의 MCP 서버도 연결됩니다. Agent SDK v0.3.301 이상과 Claude Code v2.1.301 이상이 필요합니다.

1142 

1143다음 예시는 실행 중인 쿼리 `q`에 폴더 하나를 추가하고, 호출이 반환될 때 세션이 로드한 모든 플러그인의 설치 경로를 출력합니다.

1144 

1145```typescript theme={null}

1146const result = await q.reloadPlugins({

1147 addPlugins: [{ type: "local", path: "/opt/my-app/plugins/reports" }]

1148});

1149 

1150console.log(result.plugins.map((plugin) => plugin.path));

1151```

1152 

1153폴더가 로드되었다면 출력된 목록에 `/opt/my-app/plugins/reports`가 포함되며, 플러그인의 명령과 서브에이전트가 `result.commands`와 `result.agents`에 나타납니다.

1154 

1155추가된 폴더는 세션의 일부로 유지됩니다. `reloadPlugins()`를 다시 호출하면 Claude Code가 다른 플러그인과 함께 이를 다시 로드하므로, `addPlugins`에 다시 전달할 필요가 없습니다.

1156 

1157##### `reloadPlugins()`가 `addPlugins` 폴더를 로드하지 않는 경우

1158 

1159`reloadPlugins()`가 거부되면 `addPlugins` 폴더는 하나도 추가되지 않으므로, 재시도할 때 `addPlugins`에 다시 전달해야 합니다. 거부 원인이 다음 중 하나인 경우 세션은 기존에 가지고 있던 플러그인을 유지합니다.

1160 

1161* **상대 `path` 또는 잘못된 형식의 항목**: 오류 메시지에 `add_plugins must be a list of { type: "local", path } entries with absolute paths`가 표시됩니다. Claude Code는 잘못된 항목 하나 때문에 목록 전체를 거부하므로, 모든 항목을 절대 `path`를 가진 `{ type: "local", path }` 형식으로 전달해야 합니다

1162* **관리자가 관리형 설정에서 [`disableSideloadFlags`](https://code.claude.com/docs/ko/settings-reference#disablesideloadflags)를 켠 경우**: 메시지에 `reload_plugins add_plugins is disabled by managed settings (disableSideloadFlags)`가 표시됩니다. 폴더를 로드하려면 해당 관리자에게 설정 제거를 요청합니다

1163* **[샌드박스](https://code.claude.com/docs/ko/sandboxing.md)를 다시 빌드할 수 없는 경우**: [샌드박싱](#sandboxsettings)이 켜져 있으면 Claude Code는 샌드박스 처리된 셸 명령이 추가한 폴더에 쓸 수 없도록 샌드박스 구성을 다시 빌드합니다. 메시지에 `the sandbox could not be rebuilt to keep shell commands out of this folder`가 표시됩니다. [샌드박스 설정](#sandboxsettings)이 여전히 유효한 구성을 이루는지 확인합니다

1164 

1165`holdOnCacheImpact`를 전달했고 호출이 [`held: true`](#sdkcontrolreloadpluginsresponse)로 확인되면 `addPlugins` 폴더는 추가되지 않습니다. 그래도 추가하려면 동일한 `addPlugins` 목록으로, `holdOnCacheImpact` 없이 `reloadPlugins()`를 다시 호출합니다.

1166 

1167호출이 `held: true` 없이 확인되었는데도 폴더가 `result.plugins`에 없다면, 먼저 다음 원인을 확인합니다.

1168 

1169* **폴더가 존재하지 않거나 해당 플러그인 로드에 실패한 경우**: `result.error_count`가 `1` 이상입니다. 이 경우에도 폴더는 세션의 일부로 유지됩니다. 폴더를 수정한 후 `reloadPlugins()`를 다시 호출하여 로드하되, 이번에는 `addPlugins`에 나열하지 않습니다

1170* **Claude Code 실행 파일이 v2.1.301보다 오래된 경우**: v2.1.301보다 오래된 실행 파일은 `addPlugins`를 무시하고 세션에 이미 있던 플러그인만 다시 로드합니다. [init 메시지](#sdksystemmessage)의 `claude_code_version`을 확인하고, v2.1.301 이상의 실행 파일을 실행합니다

1171 

1138### `SDKControlReloadSkillsResponse`1172### `SDKControlReloadSkillsResponse`

1139 1173 

1140[`reloadSkills()`](#query-object)의 반환 타입입니다.1174[`reloadSkills()`](#query-object)의 반환 타입입니다.


1430 1464 

1431#### `McpSdkServerConfigWithInstance`1465#### `McpSdkServerConfigWithInstance`

1432 1466 

1467[`createSdkMcpServer()`](#createsdkmcpserver)가 생성하여 애플리케이션 프로세스 내부에서 실행되는 인프로세스 MCP 서버의 구성입니다. `createSdkMcpServer()`가 반환하는 객체에, 직접 추가하는 선택적 [`McpServerToolPolicy`](#mcpservertoolpolicy) 항목의 `tools` 목록을 더한 것입니다. 서버 도구 중 하나에 대한 호출에 승인을 요구하거나 호출을 거부하려면 해당 도구 이름을 지정한 항목을 추가합니다.

1468 

1433```typescript theme={null}1469```typescript theme={null}

1434type McpSdkServerConfigWithInstance = {1470type McpSdkServerConfigWithInstance = {

1435 type: "sdk";1471 type: "sdk";

1436 name: string;1472 name: string;

1437 timeout?: number;1473 timeout?: number;

1474 tools?: McpServerToolPolicy[];

1438 instance: McpServer;1475 instance: McpServer;

1439};1476};

1440```1477```

1441 1478 

1479정책을 설정하려면 `createSdkMcpServer()`가 반환한 객체를 `mcpServers`의 새 객체에 스프레드하고, 그 새 객체에 `tools` 목록을 추가합니다. `createSdkMcpServer()` 자체의 `tools` 옵션은 도구 정의를 담는 별개의 목록으로, 정책 항목을 허용하지 않습니다. 정책 목록에는 Agent SDK v0.3.301 이상이 필요하며, 각 `permission_policy` 값의 동작은 [`McpServerToolPolicy`](#mcpservertoolpolicy)에서 설명합니다.

1480 

1481다음 예시는 `allowedTools` 와일드카드로 `records` 서버의 모든 도구를 미리 승인한 다음, `delete_record`를 `always_ask`로 표시하여 해당 호출이 어쨌든 `canUseTool`로 전달되도록 합니다. `destructiveHint: true` 어노테이션이 있으므로, 세션이 `auto` 모드에서 실행되어 자동 모드 [분류기](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)가 호출을 승인할 수 있는 경우에도 호출은 여전히 콜백에 도달합니다.

1482 

1483```typescript theme={null}

1484import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";

1485import { z } from "zod";

1486 

1487const deleteRecord = tool(

1488 "delete_record",

1489 "Delete a customer record by ID",

1490 { id: z.string() },

1491 async ({ id }) => ({ content: [{ type: "text", text: `Deleted record ${id}` }] }),

1492 { annotations: { destructiveHint: true } }

1493);

1494 

1495const records = createSdkMcpServer({ name: "records", tools: [deleteRecord] });

1496 

1497for await (const message of query({

1498 prompt: "Delete customer record 42",

1499 options: {

1500 mcpServers: {

1501 // Spread the returned config and add the policy list beside it

1502 records: {

1503 ...records,

1504 tools: [{ name: "delete_record", permission_policy: "always_ask" as const }]

1505 }

1506 },

1507 allowedTools: ["mcp__records__*"],

1508 canUseTool: async (toolName, input) => {

1509 console.log(`Approval requested for ${toolName}`);

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

1511 }

1512 }

1513})) {

1514 if (message.type === "result" && message.subtype === "success") {

1515 console.log(message.result);

1516 }

1517}

1518```

1519 

1520Claude가 도구를 호출하면, `allowedTools` 항목이 원래라면 호출을 승인했을 것임에도 스크립트는 `delete_record` 도구가 실행되기 전에 `Approval requested for mcp__records__delete_record`를 출력합니다.

1521 

1522세션 실행 중에 도구의 정책을 변경하거나 해제하려면, 새 `tools` 값을 포함한 서버 구성을 [`setMcpServers()`](#mcpsetserversresult)에 전달합니다. 전달한 `tools` 값은 Claude가 해당 서버의 도구를 다음에 호출할 때부터 적용됩니다.

1523 

1524* **항목이 있는 목록**: 항목이 현재 정책을 대체합니다

1525* **빈 목록**: 서버의 모든 정책이 해제됩니다

1526* **`tools` 키 없음**: 현재 정책이 유지됩니다

1527 

1528해당 호출에는 다른 인프로세스 서버와 이전 `setMcpServers()` 호출로 추가된 서버를 모두 포함해야 합니다. 그렇지 않으면 호출 시 해당 서버들의 연결이 끊어집니다.

1529 

1530#### `McpServerToolPolicy`

1531 

1532[`McpSdkServerConfigWithInstance`](#mcpsdkserverconfigwithinstance)의 `tools` 목록에 있는 항목 하나로, 서버 도구 중 하나의 이름을 지정하고 해당 도구 호출에 대한 권한 정책을 설정합니다. 이 목록에는 Agent SDK v0.3.301 이상과 Claude Code v2.1.301 이상이 필요합니다. `pathToClaudeCodeExecutable`로 지정한 실행 파일과 같은 이전 Claude Code 실행 파일은 이 목록을 무시합니다. 그러면 `always_ask`와 `always_deny`가 적용되지 않으며, 각 호출은 [권한 흐름](https://code.claude.com/docs/ko/agent-sdk/permissions.md#how-permissions-are-evaluated)을 거칩니다.

1533 

1534```typescript theme={null}

1535type McpServerToolPolicy = {

1536 name: string;

1537 permission_policy?: "always_allow" | "always_ask" | "always_deny";

1538 org_max_permission?: "allow" | "ask" | "blocked";

1539};

1540```

1541 

1542| 필드 | 타입 | 설명 |

1543| :- | :- | :- |

1544| `name` | `string` | [`tool()`](#tool)에 전달된 도구의 기본 이름으로, `mcp__<server>__` 접두사를 제외합니다 |

1545| `permission_policy` | `'always_allow' \| 'always_ask' \| 'always_deny'` | 도구 호출에 대한 승인 정책으로, [`always_ask` 또는 `always_deny`](#permission-policy-values)입니다. 인프로세스 서버에서는 `always_allow`가 무시됩니다. 도구를 미리 승인하려면 대신 [`allowedTools`](#options)에 나열합니다 |

1546| `org_max_permission` | `'allow' \| 'ask' \| 'blocked'` | 조직 관리자가 설정하는 도구별 상한. 인프로세스 서버에서는 무시되므로 설정하지 않은 상태로 둡니다 |

1547 

1548##### `permission_policy` 값

1549 

1550각 호출을 직접 승인하려면 `always_ask`를, 도구를 완전히 차단하려면 `always_deny`를 선택합니다.

1551 

1552* **`always_ask`**: `allowedTools` 항목이나 허용 규칙이 해당하더라도 도구에 대한 각 호출은 [승인이 필요합니다](https://code.claude.com/docs/ko/agent-sdk/permissions.md#how-permissions-are-evaluated). 호출은 먼저 처리되지 않는 한 `canUseTool` 콜백 또는 [`permissionPromptToolName`](#options) 도구로 전달됩니다. 로드한 플러그인의 [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). 그렇지 않으면 `dontAsk` 모드에서는 거부되고, [`auto`, `plan`, `bypassPermissions` 모드](#permission-modes-that-can-approve-an-always_ask-call)에서는 콜백에 도달하기 전에 승인될 수 있습니다

1553* **`always_deny`**: `bypassPermissions`를 포함한 모든 권한 모드에서 도구 호출이 [거부됩니다](https://code.claude.com/docs/ko/agent-sdk/permissions.md#how-permissions-are-evaluated). 단, 로드한 플러그인의 mod는 [여전히 승인할 수 있습니다](https://code.claude.com/docs/ko/permissions.md#precedence-among-rules-hooks-and-mods)

1554 

1555`canUseTool`과 `permissionPromptToolName`을 모두 전달하지 않거나 [`permissionPrompts`](#options)를 `'none'`으로 설정하면, 먼저 처리되지 않은 `always_ask` 호출은 [`PermissionRequest` 훅](https://code.claude.com/docs/ko/hooks#permissionrequest)이 허용하지 않는 한 거부됩니다.

1556 

1557##### `always_ask` 호출을 승인할 수 있는 권한 모드

1558 

1559`auto`, `plan`, `bypassPermissions` 모드에서는 [`always_ask`](#permission-policy-values)로 표시된 도구에 대한 호출이 `canUseTool` 콜백에 도달하기 전에 승인될 수 있습니다. 이 목록에서 세션의 모드를 찾아 해당 승인이 언제 이루어지는지, 그리고 호출이 그래도 콜백에 도달하도록 하려면 무엇을 설정해야 하는지 확인합니다.

1560 

1561* **`auto`**: 자동 모드 [분류기](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)가 호출을 검토하여 허용할 수 있습니다. `auto` 모드에서 모든 호출이 콜백에 도달하도록 하려면 도구의 [어노테이션](#toolannotations)에 `destructiveHint: true`를 설정합니다

1562* **`plan`**: 세션에서 [자동 모드를 사용할 수 있는](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode) 동안, `readOnlyHint: true`로 어노테이션된 `always_ask` 도구에 대한 호출은 자동 모드 분류기로 전달되며, 분류기가 이를 허용할 수 있습니다. 다른 `always_ask` 도구에 대한 호출은 콜백에 도달합니다. 읽기 전용 도구의 호출도 콜백에 도달하도록 하려면 해당 도구의 어노테이션에 `readOnlyHint: true`와 함께 `destructiveHint: true`를 추가합니다. 또는 [`useAutoModeDuringPlan`](https://code.claude.com/docs/ko/settings-reference#useautomodeduringplan)을 `false`로 설정하여 계획 중에 분류기를 끌 수 있습니다

1563* **`bypassPermissions`**: [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서처럼 [`CLAUDE_CODE_REMOTE`](https://code.claude.com/docs/ko/env-vars#variables) 환경 변수가 `true`이면, 도구의 어노테이션과 관계없이 호출이 콜백 없이 승인됩니다. 그 외의 환경에서는 호출이 콜백에 도달합니다. 클라우드 세션에서도 콜백에 도달하도록 하려면 대신 `default` 또는 `acceptEdits` 모드로 세션을 실행합니다

1564 

1565`auto` 및 `plan` 모드에서는 `destructiveHint`를 명시적으로 `true`로 설정합니다. `always_ask` 호출의 경우, [`ToolAnnotations`](#toolannotations)에 나열된 기본값은 `true`이지만 Claude Code는 설정되지 않은 `destructiveHint`를 `false`로 읽습니다.

1566 

1442#### `McpClaudeAIProxyServerConfig`1567#### `McpClaudeAIProxyServerConfig`

1443 1568 

1444```typescript theme={null}1569```typescript theme={null}


1464| 필드 | 타입 | 설명 |1589| 필드 | 타입 | 설명 |

1465| :- | :- | :- |1590| :- | :- | :- |

1466| `type` | `'local'` | 반드시 `'local'`이어야 합니다(현재 로컬 플러그인만 지원) |1591| `type` | `'local'` | 반드시 `'local'`이어야 합니다(현재 로컬 플러그인만 지원) |

1467| `path` | `string` | 플러그인 디렉터리의 절대 또는 상대 경로 |1592| `path` | `string` | 플러그인 디렉터리 경로. 상대 경로는 세션 시작 시 [`cwd`](#options) 옵션을 기준으로 확인됩니다. 세션 도중 [`addPlugins`](#load-more-plugin-folders-with-addplugins)로 플러그인을 로드할 때는 경로가 절대 경로여야 합니다 |

1468| `skipMcpDiscovery` | `boolean` | `true`인 경우, SDK는 이 플러그인에서 스킬, 훅, 에이전트, 명령을 로드하지만 `.mcp.json`이나 매니페스트의 `mcpServers`는 읽지 않습니다. 애플리케이션이 플러그인의 MCP 연결을 직접 관리하는 경우 이 값을 설정하세요. |1593| `skipMcpDiscovery` | `boolean` | `true`인 경우, SDK는 이 플러그인에서 스킬, 훅, 에이전트, 명령을 로드하지만 `.mcp.json`이나 매니페스트의 `mcpServers`는 읽지 않습니다. 애플리케이션이 플러그인의 MCP 연결을 직접 관리하는 경우 이 값을 설정하세요. |

1469 1594 

1470**예시:**1595**예시:**


5072};5197};

5073```5198```

5074 5199 

5075`source`는 서버의 정의가 어디에서 왔는지를 나타내며, [`McpServerProvenance`](#mcpserverprovenance)의 `source`와 동일한 값 및 신뢰 규칙을 가집니다. 필드는 Agent SDK v0.3.274 이상이 필요하며 이전 버전에서는 없습니다.5200서버를 얼마나 신뢰할지 결정하려면 `source`를 사용하고, 서버가 해당 도구에 첨부한 UI 리소스를 찾으려면 각 `tools` 항목의 `_meta`를 사용하세요:

5201 

5202* **`source`**: 서버의 정의가 어디에서 왔는지를 나타내며, [`McpServerProvenance`](#mcpserverprovenance)의 `source`와 동일한 값을 가집니다. 다른 서버가 어떤 이름으로 등록되든 자체 인프로세스 서버만 `sdk`를 보고하므로, `name`이 아닌 `source`를 기반으로 신뢰 결정을 내리세요. `source` 값을 인식하지 못하는 경우, 해당 서버를 `source`가 `sdk`가 아닌 다른 서버와 동일하게 취급하세요. Agent SDK v0.3.274 이상이 필요합니다

5203* **`_meta`**: 서버가 도구에 대해 선언한 `_meta`의 `ui` 객체와 `ui/resourceUri` 문자열입니다. Claude Code는 다른 모든 `_meta` 키를 보류합니다. `ui/resourceUri`는 `ui.resourceUri`의 이전 최상위 표기입니다. 서버가 도구에 [MCP Apps UI 리소스](https://code.claude.com/docs/ko/mcp.md#reference-mcp-resources)를 첨부하면 `ui.resourceUri` 또는 `ui/resourceUri`에 리소스의 `ui://` URI가 담깁니다. [`readMcpResource()`](#query-object)로 해당 URI를 가져와 애플리케이션에서 리소스를 렌더링하세요. Agent SDK v0.3.280 이상이 필요합니다

5204 

5205Claude Code는 subtype이 `init`인 `system` 메시지의 [`capabilities`](#sdksystemmessage) 배열에 `mcp_tool_ui_meta_v1`이 나열될 때만 `_meta`를 전송합니다. `mcp_tool_ui_meta_v1`은 직접 켜는 것이 아닙니다.

5206 

5207#### 도구의 `_meta.ui`에 `visibility`만 있는 경우

5208 

5209서버가 도구에 대해 `ui.resourceUri`를 선언했지만 애플리케이션이 받은 `_meta.ui`에 `visibility`만 있다면, 서버가 보낸 `ui` 객체가 Claude Code의 검사 중 하나를 통과하지 못한 것입니다. Claude Code는 `ui`와 `ui/resourceUri`를 별도로 검사하므로, 한 키가 실패해도 다른 키는 애플리케이션에 도달할 수 있습니다. 서버의 `tools/list` 응답에 있는 `_meta`를 각 키에 대한 검사와 비교하세요:

5210 

5211* **`ui`**: 다음 세 가지 검사를 모두 통과하면 `resourceUri` 및 `visibility` 이외의 멤버를 포함하여 변경 없이 애플리케이션에 도달합니다:

5212 

5213 * `resourceUri`가 없거나, `ui://`로 시작하는 문자열입니다

5214 * `visibility`가 없거나, `"model"`과 `"app"`만 나열합니다

5215 * 전체 객체를 JSON으로 직렬화했을 때 최대 4,096자입니다

5216 

5217 검사 중 하나라도 실패하면, 애플리케이션은 기껏해야 서버가 나열한 `"model"` 및 `"app"` 항목으로 된 `visibility` 배열만을 유일한 멤버로 가진 `ui`를 받습니다.

5218* **`ui/resourceUri`**: `ui://`로 시작하고 최대 4,096자인 문자열이면 애플리케이션에 도달합니다. 그렇지 않으면 Claude Code가 이를 삭제합니다

5076 5219 

5077`tools` 항목의 `_meta`는 해당 도구의 `_meta`의 MCP Apps 멤버를 전달하므로, 애플리케이션이 [`readMcpResource()`](#query-object)로 렌더링할 `ui://` 리소스를 찾을 수 있습니다. Claude Code는 `ui` 객체와 deprecated된 평면 `ui/resourceUri` 문자열을 통과시키고, 다른 모든 키를 보류합니다. `ui` 내에서 `resourceUri`는 `ui://` 문자열이고 `visibility`는 서버가 설정할 때 `"model"` 및 `"app"`의 배열이며, 다른 멤버는 변경되지 않고 통과합니다. Claude Code는 값이 잘못된 형식일 때 어느 키든 삭제하고, 도구가 둘 다 선언하지 않을 때 `_meta`를 생략합니다. 필드는 초기화 메시지의 [`capabilities`](#sdksystemmessage)에 `mcp_tool_ui_meta_v1`이 포함될 때만 나타나며, TypeScript Agent SDK v0.3.280 이상이 필요합니다.5220Claude Code에 전송할 `ui` 멤버와 `ui/resourceUri` 문자열이 하나도 남지 않으면, 해당 `tools` 항목에는 `_meta`가 전혀 없습니다.

5078 5221 

5079### `McpServerStatusConfig`5222### `McpServerStatusConfig`

5080 5223 


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

5310 5453 

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

5312* **호출이 이름을 지정하는 서버**: Claude Code는 이전 `setMcpServers()` 호출이 추가한 stdio, HTTP 또는 SSE 서버를 해당 구성이 전달한 것과 다를 때만 교체합니다. 해당 이름으로 이미 등록된 인프로세스 SDK 서버는 그대로 유지되므로, 이를 교체하려면 한 호출에서 제외한 다음 호출에서 추가하세요.5455* **이전 `setMcpServers()` 호출이 추가한 stdio, HTTP 및 SSE 서버**: 클라우드 세션 외부에서, 동일한 구성으로 다시 이름을 지정한 서버는 연결과 도구를 유지합니다. 이 서버는 `added`와 `removed` 어디에도 나타나지 않습니다. 변경된 구성을 전달하면 Claude Code는 해당 구성을 사용하여 서버를 다시 연결하고 `removed`가 아닌 `added`에 나열합니다.

5456* **이전 호출이 추가하지 않았는데 호출이 이름을 지정하는 stdio, HTTP 및 SSE 서버**: 클라우드 세션 외부에서 Claude Code는 서버를 추가하고 `added`에 나열하며, 서버를 거부하는 경우에는 `errors`에 나열합니다.

5457* **호출이 이름을 지정하는 인프로세스 SDK 서버**: `mcpServers` 또는 이전 호출을 통해 이미 등록된 서버는 실행 중인 인스턴스와 타임아웃을 유지합니다. 해당 서버에 대해 [`tools` 정책 목록](#mcpsdkserverconfigwithinstance)을 전달하면, 빈 목록이라도 정책이 교체됩니다. 그렇지 않으면 정책이 그대로 유지됩니다. 클라우드 세션 외부에서 새 인스턴스를 실행하려면 한 호출에서 서버를 제외한 다음 호출에서 이름을 지정하세요.

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

5314* **`.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가 사용자의 서버 연결을 끊고 설치 범위 서버를 연결할 수 있었습니다.5459* **`.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가 사용자의 서버 연결을 끊고 설치 범위 서버를 연결할 수 있었습니다.

5315 5460 


5796 5941 

5797SDK의 게시된 타이핑은 Claude Code v2.1.203 이상에서 `SDKConversationResetMessage`를 선언합니다. v2.1.203 이전에는 `SDKMessage`가 타입을 선언하지 않고 참조했으므로, `skipLibCheck`가 비활성화되었을 때 `type === "conversation_reset"`에 대한 타입 좁히기가 타입 검사에 실패했습니다.5942SDK의 게시된 타이핑은 Claude Code v2.1.203 이상에서 `SDKConversationResetMessage`를 선언합니다. v2.1.203 이전에는 `SDKMessage`가 타입을 선언하지 않고 참조했으므로, `skipLibCheck`가 비활성화되었을 때 `type === "conversation_reset"`에 대한 타입 좁히기가 타입 검사에 실패했습니다.

5798 5943 

5944### `BUILTIN_TOOL_NAMES` 및 `LEGACY_TOOL_NAME_ALIASES`

5945 

5946애플리케이션 사용자가 입력하는 도구 이름을 확인하려면 이 두 상수를 사용하세요. 두 상수 모두 각 이름을 권한 규칙, 훅 matcher, `tools` 및 `disallowedTools` 옵션에서 작성하는 방식 그대로 표기합니다. `@anthropic-ai/claude-agent-sdk` 또는 `@anthropic-ai/claude-agent-sdk/core`에서 가져오세요. Agent SDK v0.3.301 이상이 필요하며 알파 상태입니다.

5947 

5948SDK의 타입 선언은 `BUILTIN_TOOL_NAMES`에 readonly 튜플 타입을, `LEGACY_TOOL_NAME_ALIASES`에 문자열-문자열 레코드 타입을 부여합니다:

5949 

5950```typescript theme={null}

5951const BUILTIN_TOOL_NAMES: readonly ["Agent", /* ...more names... */ "Write"];

5952const LEGACY_TOOL_NAME_ALIASES: Readonly<Record<string, string>>;

5953```

5954 

5955* **`BUILTIN_TOOL_NAMES`**: `Agent`, `Bash`, `Read` 같은 Claude Code 기본 제공 도구의 이름을 알파벳순으로 나열합니다. MCP 도구 이름은 포함되지 않습니다. 타입이 문자열 리터럴의 튜플이므로, `(typeof BUILTIN_TOOL_NAMES)[number]`로 이름들의 유니온 타입을 얻을 수 있습니다

5956* **`LEGACY_TOOL_NAME_ALIASES`**: 권한 규칙, 훅 matcher, `tools` 및 `disallowedTools` 옵션이 여전히 허용하는 이전 도구 이름입니다. 각 키는 이전 이름이고 값은 현재 이름입니다. 예를 들어 `Task`는 `Agent`에 매핑되고, `KillShell`과 `KillBash`는 `TaskStop`에 매핑됩니다

5957 

5958이름은 두 가지 검사 중 하나로 확인할 수 있습니다. `BUILTIN_TOOL_NAMES`에 포함되어 있거나, `Object.hasOwn(LEGACY_TOOL_NAME_ALIASES, name)`이 `true`를 반환하는 경우입니다. `BUILTIN_TOOL_NAMES`는 MCP 도구와 일부 기본 제공 도구를 제외하므로, 두 검사를 모두 통과하지 못한 이름도 유효할 수 있습니다. `BUILTIN_TOOL_NAMES`로 거부 목록을 만들면, Claude는 이 상수에서 제외된 도구를 여전히 사용할 수 있습니다. 모든 도구를 거부하려면 대신 [`disallowedTools: ["*"]`](https://code.claude.com/docs/ko/agent-sdk/permissions#allow-and-deny-rules)를 설정하세요.

5959 

5960`BUILTIN_TOOL_NAMES`에서 이름을 찾았다고 해서 세션에 해당 도구가 있다는 의미는 아닙니다. `TodoWrite`는 [기본적으로 비활성화](https://code.claude.com/docs/ko/tools-reference.md)되어 있지만 목록에 포함되어 있습니다. 세션에 어떤 도구가 있는지 확인하려면 해당 세션의 [`SDKSystemMessage`](#sdksystemmessage)에 있는 `tools` 배열을 읽으세요. 이 배열은 MCP 도구를 포함하고 Agent 도구를 `Task`로 나열하므로, `BUILTIN_TOOL_NAMES`와 비교하기 전에 각 이름을 `LEGACY_TOOL_NAME_ALIASES`로 매핑하세요.

5961 

5799### `AbortError`5962### `AbortError`

5800 5963 

5801중단 작업을 위한 사용자 정의 오류 클래스입니다.5964중단 작업을 위한 사용자 정의 오류 클래스입니다.

agent-teams.md +1 −1

Details

188 188 

189### 작업 할당 및 요청189### 작업 할당 및 요청

190 190 

191공유 작업 목록은 팀 전체의 작업을 조율합니다. 리더는 작업을 만들고 팀원들이 이를 처리합니다. 작업은 세 가지 상태를 가집니다: 대기 중, 진행 중, 완료됨. 작업은 다른 작업에 종속될 수도 있습니다: 미해결 종속성이 있는 대기 중인 작업은 해당 종속성이 완료될 때까지 요청할 수 없습니다.191공유 작업 목록은 팀 전체의 작업을 조율합니다. 리더는 작업을 만들고 팀원들이 이를 처리합니다. 작업은 세 가지 상태를 가집니다: 대기 중, 진행 중, 완료됨. 작업은 다른 작업에 종속될 수도 있으며, 해당 작업들이 완료될 때까지 작업 목록에 차단됨으로 표시됩니다. 팀원은 차단된 작업을 자체 요청하지 않지만, 사용자나 리더는 여전히 해당 작업을 할당할 수 있습니다.

192 192 

193[Task 도구가 없는](https://code.claude.com/docs/ko/tools-reference.md#task-tool-availability) 에이전트는 공유 작업 목록 대신 메시지를 통해 조율합니다.193[Task 도구가 없는](https://code.claude.com/docs/ko/tools-reference.md#task-tool-availability) 에이전트는 공유 작업 목록 대신 메시지를 통해 조율합니다.

194 194 

agent-view.md +18 −9

Details

206* 완료된 세션: 결과206* 완료된 세션: 결과

207* 작업 중인 세션: 전체 상태 문장207* 작업 중인 세션: 전체 상태 문장

208 208 

209세션에 연결된 모든 풀 리퀘스트가 다음에 나열됩니다. 입력을 기다리는 세션의 경우 그 아래에 `waiting 3m`과 같은 줄이 기다린 시간을 표시하며, 패널에 표시되는 유일한 시간입니다. 행의 오른쪽 가장자리의 나이는 다른 숫자입니다: 세션이 시작된 시점부터 계산됩니다.209세션에 연결된 모든 풀 리퀘스트가 다음에 나열됩니다. 입력을 기다리는 세션이나 안전 모드로 실행 중인 세션의 경우 그 아래에 한 줄이 더 표시됩니다:

210 

211* `waiting 3m`과 같은 줄: 세션이 입력을 기다린 시간입니다. 행의 오른쪽 가장자리의 나이는 다른 숫자입니다: 세션이 시작된 시점부터 계산됩니다

212* `safe mode · customizations are off`: 셸에서 `claude --bg --safe-mode`로 시작했기 때문에 이 세션은 [사용자 지정이 꺼진 상태](https://code.claude.com/docs/ko/debug-your-config.md#test-against-a-clean-configuration)로 실행됩니다. 그대로 두어도 됩니다. 사용자 지정을 다시 켠 상태로 대화를 계속하려면 셸에서 [`claude stop <id>`](#manage-sessions-from-the-shell)를 실행한 다음 [`claude --resume`](https://code.claude.com/docs/ko/sessions#resume-a-session)을 실행합니다

210 213 

211대부분의 경우 엿보기 패널로 충분하며 전체 트랜스크립트를 열 필요가 없습니다.214대부분의 경우 엿보기 패널로 충분하며 전체 트랜스크립트를 열 필요가 없습니다.

212 215 


468 471 

469#### 백그라운드로 이동할 때 이어지는 것472#### 백그라운드로 이동할 때 이어지는 것

470 473 

471백그라운드로 이동하면 저장된 대화에서 재개하는 새 프로세스가 시작되며, 진행 중인 백그라운드 작업이 그 프로세스로 이동합니다. 실행 중인 백그라운드 셸 명령, 백그라운드로 보낸 서브에이전트, 동적 워크플로, [`/loop`](https://code.claude.com/docs/ko/scheduled-tasks)로 생성한 예약 작업, 그리고 Claude의 [아티팩트 댓글에 대한 자동 회신](https://code.claude.com/docs/ko/artifacts.md#let-claude-reply-to-comments-on-its-own)이 모두 이어져 그곳에서 계속 실행됩니다. 서브에이전트는 자신이 시작한 모든 것과 함께 이동하므로, 그 작업이 모두 이동할 수 있을 때만 이어집니다.474세션을 백그라운드로 보내면, 진행 중인 백그라운드 작업은 종류에 따라 백그라운드 세션으로 이어지거나, Claude가 그곳에서 다시 시작할 때만 계속되거나, 중지됩니다:

472 

473[동적 워크플로](https://code.claude.com/docs/ko/workflows.md)에 아직 실행 중인 서브에이전트가 있으면, Claude Code는 백그라운드로 이동하기 전에 `Background this session?` 대화 상자로 묻고, 몇 개의 서브에이전트가 재시작되는지 알려줍니다. 먼저 완료되도록 하려면 `Stay`를 선택합니다. 확인하면 Claude Code는 백그라운드 세션에서 실행을 재생합니다. 아직 실행 중이던 서브에이전트는 처음부터 다시 시작되므로, 지금까지 사용한 토큰이 다시 소비됩니다. 완료된 서브에이전트 중 어떤 것이 저장된 결과를 반환하고 어떤 것이 다시 실행되는지는 [일시 중지 후 재개](https://code.claude.com/docs/ko/workflows.md#resume-after-a-pause)를 참조하세요.

474 475 

475Claude Code는 실행 중인 [모니터](https://code.claude.com/docs/ko/tools-reference.md#monitor-tool)처럼 이어갈 수 없는 백그라운드 작업을 중지하며, 모니터를 소유한 백그라운드 서브에이전트도 함께 중지합니다. 이러한 작업이 실행 중이면 Claude Code는 `Background this session?` 대화 상자를 표시하여 작업을 중지하기 전에 확인할 수 있게 합니다.476* **이어짐**: 실행 중인 백그라운드 셸 명령, 백그라운드로 보낸 서브에이전트, [`/loop`](https://code.claude.com/docs/ko/scheduled-tasks)로 생성한 예약 작업, 그리고 Claude의 [아티팩트 댓글에 대한 자동 회신](https://code.claude.com/docs/ko/artifacts.md#let-claude-reply-to-comments-on-its-own)은 백그라운드 세션에서 계속 실행됩니다. 서브에이전트는 자신이 시작한 모든 것과 함께 이동하므로, 그 작업이 모두 이동할 수 있을 때만 이어집니다.

477* **Claude가 다시 시작할 때만 계속됨**: 실행 중인 [동적 워크플로](https://code.claude.com/docs/ko/workflows.md). 백그라운드 세션을 확인했을 때 워크플로가 계속되지 않았다면 [Claude에게 다시 시작하도록 요청합니다](#dynamic-workflows-when-you-background).

478* **중지됨**: 실행 중인 [모니터](https://code.claude.com/docs/ko/tools-reference.md#monitor-tool)처럼 백그라운드 세션으로 이동할 수 없는 작업. 이러한 작업이 실행 중이면 Claude Code는 `Background this session?` 대화 상자를 표시하여 작업을 중지하기 전에 확인할 수 있게 합니다. 모니터를 소유한 백그라운드 서브에이전트는 모니터와 함께 중지됩니다.

476 479 

477백그라운드로 이동한 후 세션은 새로운 서브에이전트, 모니터, 백그라운드 명령을 시작할 수 있으며, 이들은 이후 분리 및 재연결 후에도 계속 실행됩니다.480백그라운드로 이동한 후 세션은 새로운 서브에이전트, 모니터, 백그라운드 명령을 시작할 수 있으며, 이들은 이후 분리 및 재연결 후에도 계속 실행됩니다.

478 481 


488 491 

489세션 중에 [`/add-dir`](https://code.claude.com/docs/ko/permissions#additional-directories-grant-file-access-not-configuration)로 추가한 디렉터리도 이어집니다. `--allow-dangerously-skip-permissions`가 이어지면 백그라운드 세션에서 `bypassPermissions`에 도달할 수 있지만, 새로운 권한을 부여하지는 않습니다. 이 모드는 여전히 [우회 면책 조항에 대한 사용자의 수락](https://code.claude.com/docs/ko/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) 기록이 필요합니다.492세션 중에 [`/add-dir`](https://code.claude.com/docs/ko/permissions#additional-directories-grant-file-access-not-configuration)로 추가한 디렉터리도 이어집니다. `--allow-dangerously-skip-permissions`가 이어지면 백그라운드 세션에서 `bypassPermissions`에 도달할 수 있지만, 새로운 권한을 부여하지는 않습니다. 이 모드는 여전히 [우회 면책 조항에 대한 사용자의 수락](https://code.claude.com/docs/ko/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) 기록이 필요합니다.

490 493 

494##### 백그라운드로 이동할 때의 동적 워크플로

495 

496세션을 백그라운드로 보낸 후 [동적 워크플로](https://code.claude.com/docs/ko/workflows.md)가 계속되지 않았다면, Claude에게 [워크플로를 다시 시작하도록](https://code.claude.com/docs/ko/workflows.md#resume-after-you-leave-the-session) 요청합니다. 실행은 Claude가 백그라운드 세션에서 다시 시작할 때만 계속되며, Claude Code는 먼저 해당 재시작을 승인하도록 요청할 수 있습니다. 세션의 대화에는 워크플로가 `could not be resumed`라는 알림이 표시됩니다.

497 

498Claude가 워크플로를 다시 시작하면, 세션을 백그라운드로 보냈을 때 아직 실행 중이던 서브에이전트는 처음부터 다시 시작되어 토큰을 다시 소비합니다. 아직 실행 중인 서브에이전트가 있을 때 `←`를 누르거나 `/background`를 실행하면, `Background this session?` 대화 상자에 그 수가 표시됩니다. 먼저 완료되도록 하려면 `Stay`를 선택합니다.

499 

491### 셸에서 에이전트 디스패치500### 셸에서 에이전트 디스패치

492 501 

493`--bg` 또는 그 긴 형식 `--background`를 전달하여 바로 백그라운드로 가는 세션을 시작합니다:502`--bg` 또는 그 긴 형식 `--background`를 전달하여 바로 백그라운드로 가는 세션을 시작합니다:


844* **자동 업데이트 후**: 감독자가 자신을 새 버전으로 다시 시작하고 유휴 세션을 백그라운드에서 이동합니다. 작업 중이거나, 입력을 기다리거나, 연결된 세션은 중단되지 않습니다.853* **자동 업데이트 후**: 감독자가 자신을 새 버전으로 다시 시작하고 유휴 세션을 백그라운드에서 이동합니다. 작업 중이거나, 입력을 기다리거나, 연결된 세션은 중단되지 않습니다.

845* **감독자 자체가 중지됨**(예: 프로세스가 Claude Code 외부에서 종료된 경우): macOS 및 Linux에서는 약 1분 이내에 새 감독자가 연결되지 않으면 세션이 중지됩니다. 새 감독자를 시작하려면 셸에서 `claude agents`를 실행합니다. 1분이 지난 후에는 [감독자가 중지된 후에도 세션 계속 실행하기](#keep-sessions-running-after-the-supervisor-stops)를 참조하세요.854* **감독자 자체가 중지됨**(예: 프로세스가 Claude Code 외부에서 종료된 경우): macOS 및 Linux에서는 약 1분 이내에 새 감독자가 연결되지 않으면 세션이 중지됩니다. 새 감독자를 시작하려면 셸에서 `claude agents`를 실행합니다. 1분이 지난 후에는 [감독자가 중지된 후에도 세션 계속 실행하기](#keep-sessions-running-after-the-supervisor-stops)를 참조하세요.

846 855 

847세션의 프로세스가 중지되거나 다시 시작될 때, Claude가 그 세션에서 시작한 백그라운드 셸 명령, 동적 워크플로, 백그라운드 서브에이전트는 다음 프로세스로 이월됩니다. 실행 중인 모니터와 서브에이전트가 시작한 셸 명령은 프로세스와 함께 중지됩니다. 세션을 삭제하면 이월된 모든 것이 중지됩니다. 대신 프로세스와 함께 모든 것을 중지하려면 [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](https://code.claude.com/docs/ko/env-vars#variables)를 `1`로 설정합니다.856세션의 프로세스가 중지되거나 다시 시작될 때, Claude가 그 세션에서 시작한 백그라운드 셸 명령과 백그라운드 서브에이전트는 다음 프로세스로 이월됩니다. 동적 워크플로는 [Claude가 다시 실행할 때만 계속됩니다](#dynamic-workflows-when-you-background). 실행 중인 모니터와 서브에이전트가 시작한 셸 명령은 프로세스와 함께 중지됩니다. 세션을 삭제하면 이월된 모든 것이 중지됩니다. 대신 프로세스와 함께 모든 것을 중지하려면 [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](https://code.claude.com/docs/ko/env-vars#variables)를 `1`로 설정합니다.

848 857 

849감독자와 세션은 대화형 세션과 동일한 저장된 자격 증명으로 인증합니다. 세션에 도달하는 설정 및 셸 변수(예: `PATH`)는 [설정 및 공급자](#settings-and-provider)를 참조하세요. 게이트웨이 엔드포인트는 [LLM 게이트웨이](#llm-gateway)를 참조하세요.858감독자와 세션은 대화형 세션과 동일한 저장된 자격 증명으로 인증합니다. 세션에 도달하는 설정 및 셸 변수(예: `PATH`)는 [설정 및 공급자](#settings-and-provider)를 참조하세요. 게이트웨이 엔드포인트는 [LLM 게이트웨이](#llm-gateway)를 참조하세요.

850 859 


897 906 

898### 백그라운드로 이동하면 `Background this session?` 대화 상자가 표시됨907### 백그라운드로 이동하면 `Background this session?` 대화 상자가 표시됨

899 908 

900`←`를 눌러 현재 세션을 백그라운드로 전환할 때 Claude Code가 `Background this session?` 대화 상자를 표시하면, 세션에 백그라운드로 전환 시 중지되거나, 다시 시작되거나, 지켜보는 사람 없이 계속 실행될 진행 중인 백그라운드 작업이 있는 것이며, Claude Code는 이 중 어느 것이든 수행하기 전에 확인을 요청합니다:909`←`를 눌러 세션을 백그라운드로 전환할 때 `Background this session?` 대화 상자가 표시되면, 세션에 중지되거나, 중단되거나, 지켜보는 사람 없이 계속 실행될 진행 중인 백그라운드 작업이 있다는 의미입니다:

901 910 

902* **이동할 수 없는 작업**: 세션에 백그라운드 세션으로 이동할 수 없는 작업이 있습니다. 예를 들어 실행 중인 [모니터](https://code.claude.com/docs/ko/tools-reference.md#monitor-tool)와 같은 작업입니다. 대화 상자는 Claude Code가 중단할 백그라운드 작업의 이름을 표시하고, 별도로 이동할 작업의 개수를 세어줍니다.911* **이동할 수 없는 작업**: 세션에 백그라운드 세션으로 이동할 수 없는 작업이 있습니다. 예를 들어 실행 중인 [모니터](https://code.claude.com/docs/ko/tools-reference.md#monitor-tool)와 같은 작업입니다. 대화 상자는 Claude Code가 중단할 백그라운드 작업의 이름을 표시하고, 별도로 이동할 작업의 개수를 세어줍니다.

903* **실행 중인 서브에이전트가 있는 워크플로**: [동적 워크플로](https://code.claude.com/docs/ko/workflows.md)에 여전히 실행 중인 서브에이전트가 있습니다. 워크플로 자체는 이동되지만, 실행 중인 서브에이전트는 처음부터 다시 시작되며, 대화 상자는 개수를 표시합니다.912* **실행 중인 서브에이전트가 있는 워크플로**: [동적 워크플로](https://code.claude.com/docs/ko/workflows.md)에 여전히 실행 중인 서브에이전트가 있습니다. 그래도 백그라운드로 전환하면 해당 서브에이전트는 중지되며, 대화 상자는 그 개수를 표시합니다. Claude가 [백그라운드 세션에서 워크플로를 다시 시작](#dynamic-workflows-when-you-background)하면 이 서브에이전트는 처음부터 다시 시작됩니다.

904* **자동 아티팩트 답변**: Claude가 [아티팩트의 댓글에 자동으로 답변](https://code.claude.com/docs/ko/artifacts.md#let-claude-reply-to-comments-on-its-own)하고 있습니다. 이러한 답변은 백그라운드 세션에서 계속되며, 대화 상자는 이를 표시합니다.913* **자동 아티팩트 답변**: Claude가 [아티팩트의 댓글에 자동으로 답변](https://code.claude.com/docs/ko/artifacts.md#let-claude-reply-to-comments-on-its-own)하고 있습니다. 이러한 답변은 백그라운드 세션에서 계속되며, 대화 상자는 이를 표시합니다.

905 914 

906`/tasks`를 실행하여 실행 중인 모든 작업을 확인한 후 어쨌든 백그라운드로 이동하도록 확인하거나 `Stay`를 선택하여 작업이 먼저 완료되도록 합니다. [백그라운드로 이동할 때 이어지는 것](#what-carries-over-when-you-background)을 참조하여 어떤 종류의 작업이 이어지고 어떤 작업이 Claude Code에 의해 중지되는지 확인합니다.915`/tasks`를 실행하여 실행 중인 모든 작업을 확인한 후 어쨌든 백그라운드로 이동하도록 확인하거나 `Stay`를 선택하여 작업이 먼저 완료되도록 합니다. [백그라운드로 이동할 때 이어지는 것](#what-carries-over-when-you-background)을 참조하여 어떤 종류의 작업이 이어지고 어떤 작업이 Claude Code에 의해 중지되는지 확인합니다.


1118| v2.1.200 | 더 이전 Claude Code 버전이 `roster.json`의 세션 목록을 다시 작성할 때 최신 버전이 작성한 필드를 보존하여 기존 `state.json` 보장과 일치하므로 최신 버전으로 시작한 세션은 감독자가 다시 시작한 후에도 입력을 계속 수락합니다. 응답을 중지한 세션을 열면 감독자가 프로세스를 다시 시작하고 세션은 중단된 응답을 중단된 위치에서 계속합니다. 에이전트 뷰는 `agents` 뒤에 배치된 `--plugin-dir` 플래그를 디스패치된 세션뿐만 아니라 디스패치 입력의 자체 서브에이전트 및 스킬 자동 완성에도 적용합니다. |1127| v2.1.200 | 더 이전 Claude Code 버전이 `roster.json`의 세션 목록을 다시 작성할 때 최신 버전이 작성한 필드를 보존하여 기존 `state.json` 보장과 일치하므로 최신 버전으로 시작한 세션은 감독자가 다시 시작한 후에도 입력을 계속 수락합니다. 응답을 중지한 세션을 열면 감독자가 프로세스를 다시 시작하고 세션은 중단된 응답을 중단된 위치에서 계속합니다. 에이전트 뷰는 `agents` 뒤에 배치된 `--plugin-dir` 플래그를 디스패치된 세션뿐만 아니라 디스패치 입력의 자체 서브에이전트 및 스킬 자동 완성에도 적용합니다. |

1119| v2.1.199 | 메모리가 부족한 호스트에서 시작을 완료하기 전에 프로세스가 종료되는 백그라운드 세션은 단순히 종료 이유만 표시하는 대신 행 상태에 `possibly low memory — free some up and retry`를 표시합니다. `←` 또는 `/background`로 세션을 백그라운드로 이동하면 `/color`가 새 행으로 이어집니다. |1128| v2.1.199 | 메모리가 부족한 호스트에서 시작을 완료하기 전에 프로세스가 종료되는 백그라운드 세션은 단순히 종료 이유만 표시하는 대신 행 상태에 `possibly low memory — free some up and retry`를 표시합니다. `←` 또는 `/background`로 세션을 백그라운드로 이동하면 `/color`가 새 행으로 이어집니다. |

1120| v2.1.198 | 에이전트 뷰는 백그라운드 세션이 입력이 필요하거나, 완료되거나, 실패할 때 `preferredNotifChannel`을 통해 알림을 보내고 `agent_needs_input` 또는 `agent_completed` 유형으로 `Notification` 훅을 실행합니다. `claude attach <id>` 내의 `←` 및 `/exit`는 셸로 종료하는 대신 에이전트 뷰로 돌아갑니다. `Ctrl+Z`는 셸로 돌아갑니다. 작업을 워크트리에 격리한 백그라운드 세션은 완료될 때 먼저 묻는 대신 커밋하고, `main`이나 `master`가 아닌 자신의 격리된 브랜치를 푸시하며, 초안 풀 리퀘스트를 엽니다. `/login`은 에이전트 뷰에서 실행되고 로그인 대화 상자를 엽니다. `Background work is running` 종료 대화 상자는 `Move to background and exit`를 제공합니다. 종료 핸드오프는 백그라운드 서브에이전트도 포함하며, 이들은 실패로 보고되는 대신 다음 깨어날 때 트랜스크립트에서 재개됩니다. `claude --bg`는 `-p` 또는 `--print`와 결합되면 오류로 거부됩니다. 백그라운드 세션 호스트는 `connect: no route to host`로 실패하는 대신 첫 LAN 액세스 시 macOS 로컬 네트워크 권한을 요청합니다. |1129| v2.1.198 | 에이전트 뷰는 백그라운드 세션이 입력이 필요하거나, 완료되거나, 실패할 때 `preferredNotifChannel`을 통해 알림을 보내고 `agent_needs_input` 또는 `agent_completed` 유형으로 `Notification` 훅을 실행합니다. `claude attach <id>` 내의 `←` 및 `/exit`는 셸로 종료하는 대신 에이전트 뷰로 돌아갑니다. `Ctrl+Z`는 셸로 돌아갑니다. 작업을 워크트리에 격리한 백그라운드 세션은 완료될 때 먼저 묻는 대신 커밋하고, `main`이나 `master`가 아닌 자신의 격리된 브랜치를 푸시하며, 초안 풀 리퀘스트를 엽니다. `/login`은 에이전트 뷰에서 실행되고 로그인 대화 상자를 엽니다. `Background work is running` 종료 대화 상자는 `Move to background and exit`를 제공합니다. 종료 핸드오프는 백그라운드 서브에이전트도 포함하며, 이들은 실패로 보고되는 대신 다음 깨어날 때 트랜스크립트에서 재개됩니다. `claude --bg`는 `-p` 또는 `--print`와 결합되면 오류로 거부됩니다. 백그라운드 세션 호스트는 `connect: no route to host`로 실패하는 대신 첫 LAN 액세스 시 macOS 로컬 네트워크 권한을 요청합니다. |

1121| v2.1.196 | 단일 `←` 누름이 포그라운드 세션을 백그라운드로 이동합니다. 이전 버전은 바닥글 힌트와 확인이 있는 두 번의 누름이 필요했습니다. `claude agents`에 전달된 `--dangerously-skip-permissions`는 조용히 삭제되는 대신 우회 면책 조항을 표시합니다. 이름을 지정하지 않은 대화형 세션은 세션 목록 및 `claude agents --json`에서 `my-app-3f`와 같은 기본 이름을 가집니다. 백그라운드 셸 명령 및 동적 워크플로는 Windows를 포함하여 세션의 프로세스가 중지되거나, 다시 시작되거나, 업데이트되어도 유지됩니다. `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF=1`을 설정하면 핸드오프를 끕니다. 다시 시작 시 비어 있는 것으로 잘못 읽은 트랜스크립트는 삭제되는 대신 `.orphaned-` 접미사로 이름이 바뀝니다. |1130| v2.1.196 | 단일 `←` 누름이 포그라운드 세션을 백그라운드로 이동합니다. 이전 버전은 바닥글 힌트와 확인이 있는 두 번의 누름이 필요했습니다. `claude agents`에 전달된 `--dangerously-skip-permissions`는 조용히 삭제되는 대신 우회 면책 조항을 표시합니다. 이름을 지정하지 않은 대화형 세션은 세션 목록 및 `claude agents --json`에서 `my-app-3f`와 같은 기본 이름을 가집니다. 백그라운드 셸 명령은 Windows를 포함하여 세션의 프로세스가 중지되거나, 다시 시작되거나, 업데이트되어도 유지됩니다. `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF=1`을 설정하면 핸드오프를 끕니다. 다시 시작 시 비어 있는 것으로 잘못 읽은 트랜스크립트는 삭제되는 대신 `.orphaned-` 접미사로 이름이 바뀝니다. |

1122| v2.1.195 | Windows에서도 세션을 백그라운드로 이동할 때 진행 중인 백그라운드 작업이 이어집니다. `Completed` 그룹은 남은 수직 공간을 채우고 짧은 터미널에서 헤더가 압축됩니다. 이전 Claude Code 버전은 더 이상 최신 세션의 `state.json` 필드를 삭제하거나 해당 세션을 `claude agents`에서 숨기지 않습니다. 중지된 세션에 연결하면 최대 5초 동안 빈 화면을 표시하는 대신 즉시 전환됩니다. 연결을 수락할 수 없는 감독자는 자체적으로 종료되고 잠금을 해제합니다. |1131| v2.1.195 | Windows에서도 세션을 백그라운드로 이동할 때 진행 중인 백그라운드 작업이 이어집니다. `Completed` 그룹은 남은 수직 공간을 채우고 짧은 터미널에서 헤더가 압축됩니다. 이전 Claude Code 버전은 더 이상 최신 세션의 `state.json` 필드를 삭제하거나 해당 세션을 `claude agents`에서 숨기지 않습니다. 중지된 세션에 연결하면 최대 5초 동안 빈 화면을 표시하는 대신 즉시 전환됩니다. 연결을 수락할 수 없는 감독자는 자체적으로 종료되고 잠금을 해제합니다. |

1123| v2.1.191 | `claude --bg`에 서브에이전트와 일치하지 않는 `--agent` 이름을 지정하면 시작이 실패합니다: 세션은 기본 에이전트로 실행되는 대신 `--agent '<name>' not found` 오류로 즉시 종료됩니다. |1132| v2.1.191 | `claude --bg`에 서브에이전트와 일치하지 않는 `--agent` 이름을 지정하면 시작이 실패합니다: 세션은 기본 에이전트로 실행되는 대신 `--agent '<name>' not found` 오류로 즉시 종료됩니다. |

1124| v2.1.174 | 백그라운드 세션은 더 이상 감독자의 시작 셸에서 `ANTHROPIC_BASE_URL`과 같은 게이트웨이 엔드포인트 변수를 상속하지 않습니다. 감독자는 사전 준비된 워커에 새로운 자격 증명 스냅샷을 제공하여 잘못된 `Could not resolve authentication method` 오류를 수정합니다. |1133| v2.1.174 | 백그라운드 세션은 더 이상 감독자의 시작 셸에서 `ANTHROPIC_BASE_URL`과 같은 게이트웨이 엔드포인트 변수를 상속하지 않습니다. 감독자는 사전 준비된 워커에 새로운 자격 증명 스냅샷을 제공하여 잘못된 `Could not resolve authentication method` 오류를 수정합니다. |

Details

724 724 

725| 필드 | 필수 | 설명 |725| 필드 | 필수 | 설명 |

726| - | - | - |726| - | - | - |

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

728 728 

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

730 730 


927 927 

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

929 929 

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

931 

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

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

934 

930#### `cli`에 들어가는 내용935#### `cli`에 들어가는 내용

931 936 

932각 `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) 설정은 무시합니다.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) 설정은 무시합니다.


974| - | - | - |979| - | - | - |

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

976| [`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 이상이 필요하며, 이전 클라이언트는 두 키를 모두 무시합니다. |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 이상이 필요하며, 이전 클라이언트는 두 키를 모두 무시합니다. |

977| `permissions.allow` / `.deny` | CLI | 도구 및 명령 규칙입니다. [권한](https://code.claude.com/docs/ko/permissions.md)을 참조하십시오. |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)를 참조하십시오. |

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

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

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


1003 1008 

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

1005 1010 

1011#### 배포 전 정책 테스트

1012 

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

1014 

1006#### 터미널 세션의 컨텍스트 윈도우1015#### 터미널 세션의 컨텍스트 윈도우

1007 1016 

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


1589 # 계약자 정책은 이 키를 상속합니다.1598 # 계약자 정책은 이 키를 상속합니다.

1590 enforceAvailableModels: true1599 enforceAvailableModels: true

1591 permissions:1600 permissions:

1592 allow: [Read, Grep, Bash, Edit]1601 allow: [Read, Grep, Edit]

1593 deny: ["WebFetch"]1602 deny: ["WebFetch"]

1594 env: { HTTP_PROXY: http://proxy.example.com:8080 }1603 env: { HTTP_PROXY: http://proxy.example.com:8080 }

1595 1604 

Details

393| 개발자의 `/login`이 **Cloud gateway** 화면 대신 표준 계정 선택기를 표시함 | 해당 머신의 관리형 설정에서 `forceLoginMethod` 또는 `forceLoginGatewayUrl`이 설정되지 않음 | [관리형 설정 파일](https://code.claude.com/docs/ko/claude-apps-gateway#set-the-gateway-url)을 기기에 배포하세요. `/login`은 여기서 gateway URL을 읽습니다 |393| 개발자의 `/login`이 **Cloud gateway** 화면 대신 표준 계정 선택기를 표시함 | 해당 머신의 관리형 설정에서 `forceLoginMethod` 또는 `forceLoginGatewayUrl`이 설정되지 않음 | [관리형 설정 파일](https://code.claude.com/docs/ko/claude-apps-gateway#set-the-gateway-url)을 기기에 배포하세요. `/login`은 여기서 gateway URL을 읽습니다 |

394| 개발자의 요청이 `Not signed in to the Cloud gateway — run /login.`으로 실패함 | 머신의 관리형 설정이 `forceLoginMethod: "gateway"` 또는 `forceLoginGatewayUrl`을 설정했고, 세션에 gateway 로그인이 없음. 남은 claude.ai 로그인은 요구사항을 충족하지 않음 | 개발자가 `/login`을 실행하고 gateway 로그인을 완료하도록 하세요. [관리자 정책이 Cloud gateway 로그인을 요구함](https://code.claude.com/docs/ko/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in)도 참조하세요. |394| 개발자의 요청이 `Not signed in to the Cloud gateway — run /login.`으로 실패함 | 머신의 관리형 설정이 `forceLoginMethod: "gateway"` 또는 `forceLoginGatewayUrl`을 설정했고, 세션에 gateway 로그인이 없음. 남은 claude.ai 로그인은 요구사항을 충족하지 않음 | 개발자가 `/login`을 실행하고 gateway 로그인을 완료하도록 하세요. [관리자 정책이 Cloud gateway 로그인을 요구함](https://code.claude.com/docs/ko/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in)도 참조하세요. |

395| Claude Desktop이 부트스트랩 구성을 가져올 수 없다고 보고함 | `/user/bootstrap`이 404를 반환함: 사용자와 일치하는 정책이 `desktop` 키를 포함하지 않거나 일치하는 정책이 없음. gateway 감사 로그는 각 거부를 `desktop_bootstrap.denied`로 이유와 함께 기록함 | 사용자와 일치하는 정책 또는 `match: {}` 기본 계층에 `desktop` 블록을 추가하세요. 빈 `desktop: {}`으로 충분합니다. [Claude Desktop 오버레이](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#claude-desktop-overlay)를 참조하세요. |395| Claude Desktop이 부트스트랩 구성을 가져올 수 없다고 보고함 | `/user/bootstrap`이 404를 반환함: 사용자와 일치하는 정책이 `desktop` 키를 포함하지 않거나 일치하는 정책이 없음. gateway 감사 로그는 각 거부를 `desktop_bootstrap.denied`로 이유와 함께 기록함 | 사용자와 일치하는 정책 또는 `match: {}` 기본 계층에 `desktop` 블록을 추가하세요. 빈 `desktop: {}`으로 충분합니다. [Claude Desktop 오버레이](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#claude-desktop-overlay)를 참조하세요. |

396| 감사 로그가 `/v1/logs` 또는 `/v1/metrics`에서 `reason: invalid_token`과 함께 `auth.denied`를 표시함 | 머신의 관리형 설정에 [`otelHeadersHelper`](https://code.claude.com/docs/ko/settings-reference#otelheadershelper)를 설정함. 해당 머신의 Claude Desktop 세션에서 Claude Code는 세션 토큰 대신 헬퍼의 `Authorization` 헤더를 gateway의 텔레메트리 릴레이로 보냄. Claude Desktop이 v2.1.307 이전의 Claude Code를 번들로 제공하는 경우, 해당 설정에서 `OTEL_EXPORTER_OTLP_HEADERS` 또는 신호별 형식에 `Authorization` 헤더를 설정해도 동일한 거부가 발생함. | 해당 설정에서 헬퍼를 제거하세요. Claude Desktop이 v2.1.307 이전의 Claude Code를 번들로 제공하는 경우 변수를 제거하세요. |

396| 시작 시 `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.`를 표시함 | 설치된 Claude Code 빌드가 gateway 지원보다 이전 버전임 | 개발자가 Cloud gateway 지원을 포함하는 릴리스로 Claude Code를 업데이트하도록 하세요 |397| 시작 시 `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.`를 표시함 | 설치된 Claude Code 빌드가 gateway 지원보다 이전 버전임 | 개발자가 Cloud gateway 지원을 포함하는 릴리스로 Claude Code를 업데이트하도록 하세요 |

397| 시작이 `Administrator policy requires a Cloud gateway sign-in on this machine`으로 종료됨 | 개발자의 환경이 `ANTHROPIC_API_KEY` 또는 `ANTHROPIC_AUTH_TOKEN`을 설정하거나, 설정이 [`apiKeyHelper`](https://code.claude.com/docs/ko/settings-reference#apikeyhelper)를 구성하거나, 이전 Claude Console 로그인의 API 키가 여전히 저장되어 있음 | 해당하는 각각을 지우도록 개발자에게 지시하세요: 변수를 설정 해제하거나, `apiKeyHelper` 항목을 제거하거나, `claude auth logout`을 실행하여 저장된 키를 제거합니다. `CLAUDE_CODE_USE_*`를 사용하여 클라우드 공급자를 선택하는 세션은 로그인 없이 시작됩니다. 다른 모든 세션의 경우 개발자가 `claude`를 시작하고 `/login`으로 로그인하도록 하세요. [관리자 정책이 Cloud gateway 로그인을 요구함](https://code.claude.com/docs/ko/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in)도 참조하세요. |398| 시작이 `Administrator policy requires a Cloud gateway sign-in on this machine`으로 종료됨 | 개발자의 환경이 `ANTHROPIC_API_KEY` 또는 `ANTHROPIC_AUTH_TOKEN`을 설정하거나, 설정이 [`apiKeyHelper`](https://code.claude.com/docs/ko/settings-reference#apikeyhelper)를 구성하거나, 이전 Claude Console 로그인의 API 키가 여전히 저장되어 있음 | 해당하는 각각을 지우도록 개발자에게 지시하세요: 변수를 설정 해제하거나, `apiKeyHelper` 항목을 제거하거나, `claude auth logout`을 실행하여 저장된 키를 제거합니다. `CLAUDE_CODE_USE_*`를 사용하여 클라우드 공급자를 선택하는 세션은 로그인 없이 시작됩니다. 다른 모든 세션의 경우 개발자가 `claude`를 시작하고 `/login`으로 로그인하도록 하세요. [관리자 정책이 Cloud gateway 로그인을 요구함](https://code.claude.com/docs/ko/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in)도 참조하세요. |

398| 시작 또는 `/login`이 `/managed/settings` 로드에서 403 후 `Claude Code may not be enabled for your organization`을 보고함 | gateway 또는 그 앞의 무언가가 `/managed/settings` 요청에 403으로 응답함. gateway 자체 설정 경로는 절대 403으로 응답하지 않음. 상태는 [`access_control`](https://code.claude.com/docs/ko/claude-apps-gateway-config#http-tuning) IP 확인 또는 gateway 앞의 프록시 또는 WAF에서 옴. 감사 로그는 IP 확인 거부를 `access.denied`로 이유와 함께 기록함. 개발자는 로그인 상태를 유지함 | 실패 시간에 `access.denied`에 대한 감사 로그를 확인하고 `access_control` 목록 또는 프론트 엔드를 수정한 후 개발자가 `claude`를 다시 시작하도록 하세요 |399| 시작 또는 `/login`이 `/managed/settings` 로드에서 403 후 `Claude Code may not be enabled for your organization`을 보고함 | gateway 또는 그 앞의 무언가가 `/managed/settings` 요청에 403으로 응답함. gateway 자체 설정 경로는 절대 403으로 응답하지 않음. 상태는 [`access_control`](https://code.claude.com/docs/ko/claude-apps-gateway-config#http-tuning) IP 확인 또는 gateway 앞의 프록시 또는 WAF에서 옴. 감사 로그는 IP 확인 거부를 `access.denied`로 이유와 함께 기록함. 개발자는 로그인 상태를 유지함 | 실패 시간에 `access.denied`에 대한 감사 로그를 확인하고 `access_control` 목록 또는 프론트 엔드를 수정한 후 개발자가 `claude`를 다시 시작하도록 하세요 |

Details

288 288 

289[Agent teams](https://code.claude.com/docs/ko/agent-teams.md)는 기본적으로 꺼져 있지만 [환경 변수](https://code.claude.com/docs/ko/cloud-environments.md#set-environment-variables)에 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`을 추가하여 활성화할 수 있습니다.289[Agent teams](https://code.claude.com/docs/ko/agent-teams.md)는 기본적으로 꺼져 있지만 [환경 변수](https://code.claude.com/docs/ko/cloud-environments.md#set-environment-variables)에 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`을 추가하여 활성화할 수 있습니다.

290 290 

291### 대화 중 플러그인 제안

292 

293대화에 하나 이상의 [플러그인](https://code.claude.com/docs/ko/plugins/overview.md)을 나열하고 **Add** 버튼이 있는 카드가 표시되면 Claude가 작업에 맞는 플러그인을 제안하고 있다는 의미입니다. Claude는 사용자가 요청하지 않아도 이러한 제안을 할 수 있습니다. 응답할 필요는 없으며, 어느 쪽이든 Claude는 작업을 계속 진행합니다.

294 

295#### 제안된 플러그인 추가 또는 제거

296 

297플러그인에서 **Add**를 선택하면 claude.ai 계정에서 해당 플러그인이 켜지며, 세션이 끝난 후에도 켜진 상태로 유지됩니다. 이를 취소하려면 카드에서 추가된 플러그인을 열고 **Manage**를 선택하여 claude.ai의 플러그인 페이지로 이동한 다음, 해당 페이지에서 플러그인을 제거하세요.

298 

299#### 플러그인 제안 끄기

300 

301Claude가 플러그인을 제안하지 않도록 하려면 [권한 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)으로 `SearchPlugins` 및 `SuggestPluginInstall` 도구를 거부하세요. [프로젝트](https://code.claude.com/docs/ko/claude-projects.md) 외부에서 하나의 저장소가 있는 세션에서는 해당 저장소의 `.claude/settings.json`에 규칙을 커밋하고, `permissions.deny` 아래에 두 도구 이름을 모두 나열하세요:

302 

303```json theme={null}

304{

305 "permissions": {

306 "deny": ["SearchPlugins", "SuggestPluginInstall"]

307 }

308}

309```

310 

311세션에 적용되는 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)이 [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedpermissionrulesonly)를 설정하는 경우, Claude Code는 이러한 거부 규칙을 포함하여 저장소의 `.claude/settings.json`에 있는 권한 규칙을 무시합니다. 이 경우 대신 해당 관리형 설정에 규칙을 넣으세요. 여러 저장소가 있는 세션이나 프로젝트의 클라우드 스레드와 같은 다른 구성의 경우 [클라우드 세션에 적용되는 설정](https://code.claude.com/docs/ko/settings.md#settings-in-cloud-sessions)을 참조하세요.

312 

291### 대기 중인 메시지 되돌리기313### 대기 중인 메시지 되돌리기

292 314 

293Claude가 작업 중일 때 메시지를 보내면 Claude가 읽을 때까지 메시지가 대기합니다. 대기 중인 메시지를 되돌리려면 메시지의 ✕를 클릭하세요. 텍스트가 메시지 상자로 돌아가므로 편집하거나 다른 내용을 보낼 수 있습니다.315Claude가 작업 중일 때 메시지를 보내면 Claude가 읽을 때까지 메시지가 대기합니다. 대기 중인 메시지를 되돌리려면 메시지의 ✕를 클릭하세요. 텍스트가 메시지 상자로 돌아가므로 편집하거나 다른 내용을 보낼 수 있습니다.

Details

103 103 

104작성한 설정 외에도 `~/.claude`에는 Claude Code가 세션 중에 작성하는 데이터가 저장됩니다. 이 파일들은 평문입니다. 도구를 통과하는 모든 것은 디스크의 트랜스크립트에 기록됩니다: 파일 내용, 명령 출력, 붙여넣은 텍스트.104작성한 설정 외에도 `~/.claude`에는 Claude Code가 세션 중에 작성하는 데이터가 저장됩니다. 이 파일들은 평문입니다. 도구를 통과하는 모든 것은 디스크의 트랜스크립트에 기록됩니다: 파일 내용, 명령 출력, 붙여넣은 텍스트.

105 105 

106트랜스크립트에는 Claude Code가 사용자의 메시지와 함께 모델에 보내는 내용도 포함될 수 있습니다:

107 

108* 시스템 프롬프트

109* 도구 정의

110* 요청 매개변수

111* CLAUDE.md와 같이 로드한 지침 파일

112 

106### 자동으로 정리됨113### 자동으로 정리됨

107 114 

108Claude Code는 [`cleanupPeriodDays`](https://code.claude.com/docs/ko/settings-reference#cleanupperioddays)보다 오래된 아래 경로의 파일들을 삭제합니다. 보존 기간을 안전하게 결정할 수 있는 한 말입니다. 기본값은 30일이고 최소값은 1입니다. `0`으로 설정하면 유효성 검사 오류가 발생합니다. 동일한 나이 기준이 [고아 worktrees의 자동 제거](https://code.claude.com/docs/ko/worktrees.md#clean-up-subagent-and-background-session-worktrees)에도 적용됩니다.115Claude Code는 [`cleanupPeriodDays`](https://code.claude.com/docs/ko/settings-reference#cleanupperioddays)보다 오래된 아래 경로의 파일들을 삭제합니다. 보존 기간을 안전하게 결정할 수 있는 한 말입니다. 기본값은 30일이고 최소값은 1입니다. `0`으로 설정하면 유효성 검사 오류가 발생합니다. 동일한 나이 기준이 [고아 worktrees의 자동 제거](https://code.claude.com/docs/ko/worktrees.md#clean-up-subagent-and-background-session-worktrees)에도 적용됩니다.

109 116 

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

111| - | - |118| - | - |

112| `projects/<project>/<session>.jsonl` | 전체 대화 트랜스크립트: 모든 메시지, 도구 호출 및 도구 결과 |119| `projects/<project>/<session>.jsonl` | 대화 트랜스크립트: 메시지, 도구 호출 및 도구 결과, 그리고 Claude Code가 모델에 보낸 요청의 시스템 프롬프트, 도구 정의 및 매개변수 |

113| `projects/<project>/<session>.orphaned-<timestamp>-<suffix>.jsonl`, `projects/<project>/<session>.jsonl.superseded-<timestamp>` | Claude Code가 덮어쓰거나 삭제하는 대신 따로 보관한 세션의 이전 트랜스크립트입니다. 세션 선택기에 나타나지 않습니다 |120| `projects/<project>/<session>.orphaned-<timestamp>-<suffix>.jsonl`, `projects/<project>/<session>.jsonl.superseded-<timestamp>` | Claude Code가 덮어쓰거나 삭제하는 대신 따로 보관한 세션의 이전 트랜스크립트입니다. 세션 선택기에 나타나지 않습니다 |

114| `projects/<project>/<session>/subagents/` | [Subagent](https://code.claude.com/docs/ko/sub-agents.md) 대화 트랜스크립트, 상위 세션 트랜스크립트가 오래되면 함께 제거됨 |121| `projects/<project>/<session>/subagents/` | 세션 트랜스크립트와 동일한 형식의 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md) 트랜스크립트, 상위 세션 트랜스크립트가 오래되면 함께 제거됨 |

115| `projects/<project>/<session>/tool-results/` | 별도 파일로 유출된 대형 도구 출력, 그리고 [MCP 도구가 반환하는 이미지](https://code.claude.com/docs/ko/mcp.md#images-in-tool-results)의 전체 크기 복사본 |122| `projects/<project>/<session>/tool-results/` | 별도 파일로 유출된 대형 도구 출력, 그리고 [MCP 도구가 반환하는 이미지](https://code.claude.com/docs/ko/mcp.md#images-in-tool-results)의 전체 크기 복사본 |

116| `projects/<project>/<session>/mcp-tasks/` | 재개된 세션이 실행 중인 [MCP 작업](https://code.claude.com/docs/ko/mcp.md#mcp-tasks-that-run-on-the-server)을 다시 추적하는 데 필요한 정보, 그리고 Claude가 아직 읽지 않은 완료된 작업의 결과 |123| `projects/<project>/<session>/mcp-tasks/` | 재개된 세션이 실행 중인 [MCP 작업](https://code.claude.com/docs/ko/mcp.md#mcp-tasks-that-run-on-the-server)을 다시 추적하는 데 필요한 정보, 그리고 Claude가 아직 읽지 않은 완료된 작업의 결과 |

117| `file-history/<session>/` | Claude Code가 변경한 파일의 편집 전 스냅샷, [checkpoint 복원](https://code.claude.com/docs/ko/checkpointing.md)에 사용됨. 가장 최근의 100개 checkpoint에 대한 스냅샷을 보유합니다. 보존된 checkpoint가 참조하지 않는 스냅샷 파일은 각 파일의 첫 번째 스냅샷을 제외하고 삭제됩니다 |124| `file-history/<session>/` | Claude Code가 변경한 파일의 편집 전 스냅샷, [checkpoint 복원](https://code.claude.com/docs/ko/checkpointing.md)에 사용됨. 가장 최근의 100개 checkpoint에 대한 스냅샷을 보유합니다. 보존된 checkpoint가 참조하지 않는 스냅샷 파일은 각 파일의 첫 번째 스냅샷을 제외하고 삭제됩니다 |

Details

6 6 

7> Claude Security 플러그인을 설치하여 Claude Code 세션에서 코드베이스의 취약점을 스캔하고 발견 사항을 검토 및 적용할 수 있는 패치로 변환합니다.7> Claude Security 플러그인을 설치하여 Claude Code 세션에서 코드베이스의 취약점을 스캔하고 발견 사항을 검토 및 적용할 수 있는 패치로 변환합니다.

8 8 

9Claude Security 플러그인은 Claude Code 세션 내에서 코드베이스의 다중 에이전트 취약점 스캔을 실행합니다. Claude 에이전트 팀이 아키텍처를 매핑하고, 위협 모델을 구축하고, 취약점을 찾으며, 보고서를 작성하기 전에 모든 발견 사항을 독립적으로 검토합니다. 플러그인을 사용하여 전체 저장소를 스캔하거나 [변경 사항만 스캔](#scan-only-your-changes)할 수 있습니다. 예를 들어 브랜치의 diff, 풀 요청의 diff 또는 단일 커밋을 스캔한 후, 선택한 발견 사항을 검토하고 직접 적용할 수 있는 패치로 변환합니다.9Claude Security 플러그인은 Claude Code 세션 내에서 코드베이스의 다중 에이전트 취약점 스캔을 실행합니다. [기본적으로](#choose-a-scan-effort) 전체 저장소를 스캔할 때 Claude 에이전트가 아키텍처를 매핑하고, 위협 모델을 구축하고, 취약점을 찾으며, 보고서를 작성하기 전에 모든 발견 사항을 독립적으로 검토합니다.

10 

11플러그인을 사용하여 전체 저장소를 스캔하거나 브랜치의 diff, 풀 리퀘스트의 diff 또는 단일 커밋과 같은 [변경 사항만 스캔](#scan-only-your-changes)한 후, 선택한 발견 사항을 검토하고 직접 적용할 수 있는 패치로 변환합니다.

10 12 

11플러그인은 세션에서 로컬로 실행되며, [Claude Code에서 액세스할 수 있는 모든 모델을 사용](#models-and-providers)하고, 각 스캔은 [사용량](https://code.claude.com/docs/ko/costs.md)에 포함됩니다. 저장소를 모니터링하는 관리형 서비스를 원하거나 [Claude Mythos](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5)에서 스캔을 실행하려면 Enterprise 플랜에서 사용 가능한 [Claude Security](https://claude.com/product/claude-security) 제품을 참조하십시오.13플러그인은 세션에서 로컬로 실행되며, [Claude Code에서 액세스할 수 있는 모든 모델을 사용](#models-and-providers)하고, 각 스캔은 [사용량](https://code.claude.com/docs/ko/costs.md)에 포함됩니다. 저장소를 모니터링하는 관리형 서비스를 원하거나 [Claude Mythos](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5)에서 스캔을 실행하려면 Enterprise 플랜에서 사용 가능한 [Claude Security](https://claude.com/product/claude-security) 제품을 참조하십시오.

12 14 


51 53 

52플러그인이 활성화되면 [코드베이스 스캔 및 수정](#scan-and-fix-your-codebase)을 시작할 준비가 되었습니다.54플러그인이 활성화되면 [코드베이스 스캔 및 수정](#scan-and-fix-your-codebase)을 시작할 준비가 되었습니다.

53 55 

56### 플러그인 업데이트

57 

58플러그인을 직접 업데이트하려면 [지금 플러그인 업데이트](https://code.claude.com/docs/ko/plugins/install.md#update-plugins-now)를 참조하세요. 자동 업데이트가 꺼져 있지 않으면 Claude Code가 [플러그인을 자동으로 업데이트](https://code.claude.com/docs/ko/plugins/install.md#keep-plugins-updated)하기도 합니다.

59 

54### 플러그인 제거60### 플러그인 제거

55 61 

56플러그인을 제거하려면 `/plugin` 메뉴에서 제거하거나 터미널에서 `claude plugin uninstall claude-security`를 실행하세요.62플러그인을 제거하려면 `/plugin` 메뉴에서 제거하거나 터미널에서 `claude plugin uninstall claude-security`를 실행하세요.


95 101 

96대규모 저장소에서는 전체 트리 대신 한 번에 한 영역씩 스캔합니다. 플러그인이 제공하는 집중된 범위 중 하나를 선택합니다. 예를 들어 API 계층 또는 인증 코드를 선택하면 실행이 선택한 항목에 맞게 크기가 조정됩니다. 보고서의 범위 섹션에서 검사된 항목과 검사되지 않은 항목을 명시합니다. 언제든지 다른 영역에서 다른 스캔을 실행하세요.102대규모 저장소에서는 전체 트리 대신 한 번에 한 영역씩 스캔합니다. 플러그인이 제공하는 집중된 범위 중 하나를 선택합니다. 예를 들어 API 계층 또는 인증 코드를 선택하면 실행이 선택한 항목에 맞게 크기가 조정됩니다. 보고서의 범위 섹션에서 검사된 항목과 검사되지 않은 항목을 명시합니다. 언제든지 다른 영역에서 다른 스캔을 실행하세요.

97 103 

104### 스캔 강도 선택

105 

106스캔 강도는 스캔이 얼마나 깊이 진행되는지를 설정합니다. 발견 사항은 `low`, `medium`, `high` 모두에서 동일한 독립적인 검증을 거칩니다.

107 

108* **`low`**: 빠른 1차 검토입니다. 코드베이스를 스캔할 때 아키텍처 맵과 위협 모델을 건너뜁니다.

109* **`medium`**: 기본값입니다.

110* **`high`**: `medium`이 수행하는 작업에 더해, 동일한 코드에서 취약점을 더 많이 탐색합니다.

111 

112Claude Code 프롬프트에서 요청할 때 스캔 강도를 지정합니다. 예를 들어 `/claude-security scan my public API code at high` 또는 `/claude-security scan my branch at high`와 같이 요청합니다.

113 

114대규모 저장소의 스캔에서 예상보다 적은 결과가 발견되면 `high` 스캔 강도를 선택하거나, 두 번째 스캔을 실행하거나, 둘 다 수행하세요. 각 방법은 한 번의 `medium` 스캔에서 보고되지 않은 발견 사항을 보고할 수 있습니다.

115 

98### 스캔 결과 읽기116### 스캔 결과 읽기

99 117 

100모든 스캔은 저장소의 타임스탬프가 지정된 `CLAUDE-SECURITY-<timestamp>/` 디렉토리에 결과를 작성합니다.118모든 스캔은 저장소의 타임스탬프가 지정된 `CLAUDE-SECURITY-<timestamp>/` 디렉토리에 결과를 작성합니다.


102* **`CLAUDE-SECURITY-RESULTS.md`**: 보고서. 각 발견 사항의 ID(예: `F1`), 영향, 악용 시나리오, 심각도, 신뢰도 및 권장 사항 포함120* **`CLAUDE-SECURITY-RESULTS.md`**: 보고서. 각 발견 사항의 ID(예: `F1`), 영향, 악용 시나리오, 심각도, 신뢰도 및 권장 사항 포함

103* **`CLAUDE-SECURITY-RESULTS.jsonl`**: 동일한 발견 사항을 기계 판독 가능한 형식으로 표현. 줄당 하나의 JSON 객체121* **`CLAUDE-SECURITY-RESULTS.jsonl`**: 동일한 발견 사항을 기계 판독 가능한 형식으로 표현. 줄당 하나의 JSON 객체

104* **`CLAUDE-SECURITY-RESULTS.sarif`**: 동일한 발견 사항을 [SARIF 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) 로그로 표현. GitHub 코드 스캔 및 표준을 읽는 다른 도구용입니다. 스캔은 발견 사항을 [CWE](https://cwe.mitre.org/) 약점 범주로 분류합니다.122* **`CLAUDE-SECURITY-RESULTS.sarif`**: 동일한 발견 사항을 [SARIF 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) 로그로 표현. GitHub 코드 스캔 및 표준을 읽는 다른 도구용입니다. 스캔은 발견 사항을 [CWE](https://cwe.mitre.org/) 약점 범주로 분류합니다.

105* **`CLAUDE-SECURITY-REVISION-<commit>.json`**: 수정 스탬프. 스캔된 커밋, 노력 수준, 커밋되지 않은 변경 사항이 스캔된 트리의 일부인지 여부, 실행이 얼마나 철저히 검증되었는지를 기록합니다. 이렇게 하면 보고서가 항상 설명하는 코드에 연결됩니다. 버전 관리 외부의 스캔은 커밋 대신 `UNVERSIONED`를 스탬프합니다.123* **`CLAUDE-SECURITY-REVISION-<commit>.json`**: 수정 스탬프. 스캔된 커밋, 사용된 [스캔 강도](#choose-a-scan-effort), 커밋되지 않은 변경 사항이 스캔된 트리의 일부인지 여부, 실행이 얼마나 철저히 검증되었는지를 기록합니다. 이렇게 하면 보고서가 항상 설명하는 코드에 연결됩니다. 버전 관리 외부의 스캔은 커밋 대신 `UNVERSIONED`를 스탬프합니다.

106 124 

107해당 디렉토리는 스캔이 체크아웃에 수행하는 유일한 변경 사항이며, 자체 `.gitignore`를 포함하므로 실수로 `git add`를 하더라도 보고서가 커밋으로 스윕되지 않습니다. 감사 추적을 위해 보고서를 기록에 유지하려면 해당 `.gitignore` 파일 하나를 삭제하고 다른 디렉토리처럼 디렉토리를 커밋하세요.125해당 디렉토리는 스캔이 체크아웃에 수행하는 유일한 변경 사항이며, 자체 `.gitignore`를 포함하므로 실수로 `git add`를 하더라도 보고서가 커밋으로 스윕되지 않습니다. 감사 추적을 위해 보고서를 기록에 유지하려면 해당 `.gitignore` 파일 하나를 삭제하고 다른 디렉토리처럼 디렉토리를 커밋하세요.

108 126 

desktop.md +64 −0

Details

994* **셸**: 원격 머신에서 계정에 설정된 셸은 Bash, Zsh, `sh`처럼 SSH를 통해 전송된 명령을 실행할 수 있어야 합니다994* **셸**: 원격 머신에서 계정에 설정된 셸은 Bash, Zsh, `sh`처럼 SSH를 통해 전송된 명령을 실행할 수 있어야 합니다

995* **네트워크**: Claude Code는 원격 머신에서 실행되며 네트워크 요청도 그곳에서 보내므로, 머신에는 [Claude Code에 필요한 네트워크 액세스](https://code.claude.com/docs/ko/network-config.md#network-access-requirements)가 있어야 합니다. 머신이 Claude Code를 다운로드할 수 없는 경우 Desktop이 컴퓨터에서 다운로드하여 업로드합니다. Claude Code의 다른 요청은 여전히 원격 머신에서 전송됩니다. Linux 원격 머신에서 이러한 요청에 프록시가 필요하다면 [SSH 세션에 프록시를 설정](#set-a-proxy-or-a-ca-certificate-for-ssh-sessions)하세요.995* **네트워크**: Claude Code는 원격 머신에서 실행되며 네트워크 요청도 그곳에서 보내므로, 머신에는 [Claude Code에 필요한 네트워크 액세스](https://code.claude.com/docs/ko/network-config.md#network-access-requirements)가 있어야 합니다. 머신이 Claude Code를 다운로드할 수 없는 경우 Desktop이 컴퓨터에서 다운로드하여 업로드합니다. Claude Code의 다른 요청은 여전히 원격 머신에서 전송됩니다. Linux 원격 머신에서 이러한 요청에 프록시가 필요하다면 [SSH 세션에 프록시를 설정](#set-a-proxy-or-a-ca-certificate-for-ssh-sessions)하세요.

996 996 

997#### 원격 머신의 호스트 키 확인

998 

999호스트 키는 원격 머신이 자신이 어떤 머신인지 증명하기 위해 제시하는 키이며, 지문(fingerprint)은 그 키의 짧은 형태입니다. 키를 신뢰하면 컴퓨터가 키를 저장하고 다시 묻지 않고 그 키를 제시하는 대상에 연결합니다. 무언가가 연결을 가로채고 있을 수 있으므로 키를 신뢰하기 전에 확인하십시오.

1000 

1001먼저 지문이 표시된 위치를 보고 키가 어느 머신의 것인지 파악합니다.

1002 

1003* **Desktop이 `Connect to <host> for the first time?`을 묻거나 Review new key를 선택한 경우**: Desktop이 이름을 표시하는 머신 `<host>`

1004* **Desktop이 `Connect through <jump host> for the first time?`을 묻는 경우**: 점프 호스트, 즉 연결하려는 머신이 아니라 연결이 거쳐 가는 머신

1005* **터미널에서 `ssh`가 묻거나 경고하는 경우**: 메시지에 이름이 표시된 머신이며, 입력한 머신과 다를 수 있습니다

1006 

1007확인하려는 연결을 통하지 않고 해당 머신에서 직접 지문을 가져옵니다.

1008 

1009* **다른 사람이 머신을 관리하는 경우**: 관리자에게 호스트 키 지문을 요청합니다

1010* **직접 관리하며 Linux 또는 macOS를 실행하는 경우**: 머신의 콘솔에서 또는 이미 신뢰하는 연결을 통해 `ssh-keygen -lf /etc/ssh/ssh_host_<type>_key.pub`을 실행합니다. `<type>`에는 Desktop 또는 `ssh`가 지문 옆에 표시하는 키 유형을 소문자로 사용합니다: `ED25519` 또는 `ssh-ed25519`이면 `ed25519`.

1011 

1012그런 다음 머신의 지문을 표시된 지문과 비교합니다.

1013 

1014* **일치하는 경우**: 키를 신뢰합니다. Desktop에서 **Trust and connect** 또는 **Trust new key**를 선택하거나 터미널에서 `yes`로 답합니다.

1015* **다르거나 확인할 수 없는 경우**: 연결하지 마십시오. Desktop에서 **Cancel**을 선택하거나 터미널에서 `no`로 답합니다. 다른 사람이 머신을 관리한다면 표시된 지문을 알려 주십시오.

1016 

1017문제 해결 단계에서 이곳으로 왔다면 어느 결과든 해당 단계로 돌아가십시오.

1018 

997#### SSH 세션에 프록시 또는 CA 인증서 설정1019#### SSH 세션에 프록시 또는 CA 인증서 설정

998 1020 

999Linux 원격 머신이 프록시를 통해 인터넷에 연결하거나 CA 인증서가 필요한 경우, 해당 머신의 `~/.claude/settings.json`에 있는 `env` 아래에 [프록시 및 CA 변수](https://code.claude.com/docs/ko/network-config.md)를 추가합니다. 해당 머신의 `~/.profile`, `~/.bash_profile`, `~/.zprofile` 또는 `~/.zshrc`에서 이미 내보내고 있더라도 추가하세요.1021Linux 원격 머신이 프록시를 통해 인터넷에 연결하거나 CA 인증서가 필요한 경우, 해당 머신의 `~/.claude/settings.json`에 있는 `env` 아래에 [프록시 및 CA 변수](https://code.claude.com/docs/ko/network-config.md)를 추가합니다. 해당 머신의 `~/.profile`, `~/.bash_profile`, `~/.zprofile` 또는 `~/.zshrc`에서 이미 내보내고 있더라도 추가하세요.


2135 2157 

2136MCP 서버 토글이 응답하지 않거나 Windows에서 서버가 연결되지 않으면 서버가 설정에 올바르게 구성되었는지 확인하고, 앱을 다시 시작하고, Task Manager에서 서버 프로세스가 실행 중인지 확인하고, 연결 오류에 대한 서버 로그를 검토합니다.2158MCP 서버 토글이 응답하지 않거나 Windows에서 서버가 연결되지 않으면 서버가 설정에 올바르게 구성되었는지 확인하고, 앱을 다시 시작하고, Task Manager에서 서버 프로세스가 실행 중인지 확인하고, 연결 오류에 대한 서버 로그를 검토합니다.

2137 2159 

2160### SSH host key verification failed

2161 

2162다음 메시지는 각각 Desktop이 [호스트 키](#check-a-remote-machines-host-key)를 거부했음을 의미합니다:

2163 

2164* `Couldn't connect to <host>` 카드의 **View details** 아래에 표시되는 `SSH host key verification failed` 또는 `Host denied (verification failed)`

2165* 프롬프트 상자 옆 또는 **Test connection** 후에 표시되는 `Connection failed: Host key changed or not trusted`

2166* 연결이 끊긴 세션에 표시되는 `<host>'s host key is not trusted` 또는 `<host>'s host key has changed`

2167 

2168Desktop은 일반적으로 키가 컴퓨터에 저장된 키와 다르거나 해당 머신에 대해 저장된 키가 없기 때문에 키를 거부합니다. 재구축되거나 재설치된 머신은 일반적으로 새 키를 제시하며, 연결을 가로채는 무언가도 마찬가지입니다. 다시 연결하기 전에 Desktop이 메시지와 함께 표시하는 내용부터 시작하여 키를 확인합니다:

2169 

2170* **Windows를 사용 중이고 Desktop에 `Connection failed: Host key changed or not trusted`가 표시되는 경우**: 먼저 [OpenSSH 클라이언트 누락](#ssh-host-key-refused-on-windows-without-an-openssh-client) 가능성을 배제합니다

2171* **Desktop이 `UserKnownHostsFile`을 설정하라고 안내하는 경우**: `~/.ssh/config`에서 이를 `~/.ssh/known_hosts`로 설정한 다음 [터미널에서 키를 확인합니다](#check-the-host-key-from-a-terminal)

2172* **Review new key 버튼이 표시되는 경우**: 버튼을 선택하고 Desktop이 표시하는 지문을 머신 자체의 지문과 [비교합니다](#check-a-remote-machines-host-key). 일치하면 **Trust new key**를 선택하여 저장된 키를 교체합니다. 그렇지 않으면 **Cancel**을 선택합니다.

2173* **Review new key 버튼이 표시되지 않거나, Desktop에 `Couldn't show the new key`가 표시되거나, Trust new key 후에도 Desktop이 키를 다시 거부하는 경우**: [터미널에서 키를 확인합니다](#check-the-host-key-from-a-terminal)

2174 

2175#### 터미널에서 호스트 키 확인하기

2176 

2177Desktop의 [SSH 연결](#ssh-sessions)에 있는 **SSH host** 값으로 컴퓨터에서 `ssh <SSH host>`를 실행합니다. 연결에 **SSH port** 값이 있으면 `-p <SSH port>`를 추가합니다. Windows에서는 Desktop이 Git Bash 또는 WSL의 `ssh`로 연결하지 않으므로 PowerShell을 사용합니다. PowerShell에서 `ssh`를 찾을 수 없으면 [Microsoft의 OpenSSH 클라이언트를 설치합니다](#ssh-host-key-refused-on-windows-without-an-openssh-client).

2178 

2179`ssh`가 메시지에서 어떤 머신을 언급하는지 확인한 다음(`<SSH host>`가 아닌 점프 호스트일 수 있습니다), 해당하는 경우를 따릅니다:

2180 

2181* **`ssh`가 계속 연결할지 묻는 경우**: 표시된 지문을 해당 머신 자체의 지문과 [비교합니다](#check-a-remote-machines-host-key). 일치하는 경우에만 `yes`로 답합니다.

2182* **`ssh`가 호스트 키가 변경되었다고 경고하는 경우**: 경고의 지문을 해당 머신 자체의 지문과 [비교합니다](#check-a-remote-machines-host-key). 일치하는 경우에만 `Offending <type> key in <file>:<line>`이 가리키는 줄을 삭제하고 `ssh`를 다시 실행합니다. `ssh`가 다른 줄에 대해 다시 경고하면 앞서와 같이 비교, 삭제, 재실행을 반복합니다.

2183* **`ssh`가 묻지 않고 알 수 없는 키를 거부하는 경우**: 확인 중인 연결을 통해서가 아니라 해당 머신을 관리하는 사람에게서 그 머신의 `known_hosts` 줄을 받습니다. `ssh` 메시지에 나온 이름을 호스트 이름으로 하여 해당 줄을 `known_hosts` 파일에 추가하고 `ssh`를 다시 실행합니다.

2184* **`ssh`가 호스트 키에 대해 묻지 않고 바로 로그인을 진행하는 경우**: 아직 암호를 입력하지 마세요. [`ssh`가 이미 신뢰하는 키를 확인합니다](#check-the-keys-that-ssh-already-trusts).

2185 

2186확인했거나 추가한 키를 `ssh`가 수락하면 Desktop에서 재시도합니다. Desktop이 키를 다시 거부하면 [SSH 문제에 대한 Desktop 로그 가져오기](#get-desktops-logs-for-an-ssh-problem)를 참조하세요.

2187 

2188##### `ssh`가 이미 신뢰하는 키 확인하기

2189 

2190동일한 `ssh` 명령에 `-v -S none`을 추가하여 다시 실행합니다. 출력에서 `Server host key:` 줄은 지문을 보여 주고, 그다음 `Host '<name>' is known` 줄은 해당 지문이 속한 머신의 이름을 보여 줍니다. 찾은 각 지문을 해당 머신 자체의 지문과 [비교합니다](#check-a-remote-machines-host-key).

2191 

2192* **점프 호스트에 `Server host key:` 줄이 없는 경우**: `ssh -v -S none <jump host>`도 실행하고 같은 방식으로 해당 지문을 비교합니다.

2193* **지문이 일치하지 않거나 확인할 수 없는 경우**: 다시 연결하지 마세요. 저장된 키를 제거합니다. `Host '<name>' is known` 아래의 `Found key in <file>:<line>` 줄이 키가 저장된 파일을 가리킵니다. `ssh-keygen -R "<name>" -f <file>`을 실행합니다. 호스트 키를 둘 이상의 파일에 보관하는 경우 각 파일에서 키를 제거합니다. 파일을 변경할 수 없으면 컴퓨터를 관리하는 사람에게 알립니다.

2194* **모든 지문이 일치하는 경우**: Desktop에서 재시도합니다. Desktop이 키를 다시 거부하면 [SSH 문제에 대한 Desktop 로그 가져오기](#get-desktops-logs-for-an-ssh-problem)를 참조하세요.

2195 

2196### OpenSSH 클라이언트가 없는 Windows에서 SSH 호스트 키가 거부됨

2197 

2198OpenSSH 클라이언트가 없는 Windows에서는 Desktop이 올바른 호스트 키조차 `Connection failed: Host key changed or not trusted`와 함께 거부합니다. Desktop은 저장된 키를 조회하는 데 이 클라이언트가 필요합니다. 클라이언트가 있는지 확인하려면 PowerShell에서 `ssh`를 실행합니다. PowerShell이 `ssh`를 인식하지 못하면 [Microsoft의 OpenSSH 클라이언트](https://learn.microsoft.com/windows-server/administration/openssh/openssh_install_firstuse)를 설치하고 Desktop을 다시 시작합니다.

2199 

2200그런 다음 다시 연결합니다. Desktop이 처음으로 연결할지 묻는 경우 신뢰하기 전에 [머신의 호스트 키를 확인합니다](#check-a-remote-machines-host-key). Desktop이 여전히 키를 거부하면 [SSH host key verification failed](#ssh-host-key-verification-failed) 아래의 다른 경우를 따릅니다.

2201 

2138### 로그인 후 SSH 연결 실패2202### 로그인 후 SSH 연결 실패

2139 2203 

2140이 표에서 카드의 제목 또는 오류 메시지 끝에 있는 코드를 찾은 다음 마지막 열의 안내를 따릅니다. 메시지를 보려면 실패 카드에서 **View details**를 선택합니다.2204이 표에서 카드의 제목 또는 오류 메시지 끝에 있는 코드를 찾은 다음 마지막 열의 안내를 따릅니다. 메시지를 보려면 실패 카드에서 **View details**를 선택합니다.

env-vars.md +2 −2

Details

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)는 여전히 백그라운드에서 실행됩니다 |

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 이상이 필요합니다 |

240| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | `1`로 설정하면 Claude Code가 시스템 메모리 부족 상황에서 [백그라운드 셸 명령](https://code.claude.com/docs/ko/interactive-mode.md#background-bash-commands)을 종료하지 않습니다. 기본적으로 macOS와 Linux에서 Claude Code는 운영 체제가 심각한 메모리 부족을 보고하고 세션이 실행 중인 턴이나 서브에이전트 없이 30분 동안 유휴 상태였을 때 백그라운드 셸을 종료합니다. Windows에는 메모리 부족 신호가 없으므로 이 변수는 효과가 없습니다. Claude Code v2.1.193 이상이 필요합니다 |240| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | `1`로 설정하면 Claude Code가 시스템 메모리 부족 상황에서 [백그라운드 셸 명령](https://code.claude.com/docs/ko/interactive-mode.md#background-bash-commands)을 종료하지 않습니다. 기본적으로 macOS와 Linux에서 Claude Code는 운영 체제가 심각한 메모리 부족을 보고하고 세션이 실행 중인 턴이나 서브에이전트 없이 30분 동안 유휴 상태였을 때 백그라운드 셸을 종료합니다. Windows에는 메모리 부족 신호가 없으므로 이 변수는 효과가 없습니다. Claude Code v2.1.193 이상이 필요합니다 |

241| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | `1`로 설정하면 Claude Code에 포함된 [스킬](https://code.claude.com/docs/ko/skills.md)과 워크플로를 비활성화합니다: 번들 스킬과 워크플로는 완전히 제거되며, `/init` 같은 기본 제공 명령은 계속 입력할 수 있지만 모델에게는 숨겨집니다. `/doctor`는 기본 제공 명령처럼 계속 입력할 수 있으며, 숨기려면 대신 `DISABLE_DOCTOR_COMMAND`를 사용합니다. 플러그인, `.claude/skills/`, `.claude/commands/`의 스킬은 영향을 받지 않습니다. [`disableBundledSkills`](https://code.claude.com/docs/ko/settings-reference#disablebundledskills) 설정과 동일합니다 |241| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | `1`로 설정하면 Claude Code에 포함된 [스킬](https://code.claude.com/docs/ko/skills.md)과 워크플로를 비활성화합니다: 번들 스킬과 워크플로는 완전히 제거되며, `/init` 같은 기본 제공 명령은 계속 입력할 수 있지만 모델에게는 숨겨집니다. `/doctor`는 기본 제공 명령처럼 계속 입력할 수 있으며, 숨기려면 대신 `DISABLE_DOCTOR_COMMAND`를 사용합니다. 플러그인, `.claude/skills/`, `.claude/commands/`의 스킬은 영향을 받지 않습니다. [`disableBundledSkills`](https://code.claude.com/docs/ko/settings-reference#disablebundledskills) 설정과 동일합니다 |

242| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | `1`로 설정하면 [Claude in Chrome](https://code.claude.com/docs/ko/chrome.md) 브라우저 도구는 계속 사용할 수 있게 유지하면서 시스템 프롬프트의 Chrome 섹션과 `/claude-in-chrome` [번들 스킬](https://code.claude.com/docs/ko/skills.md#bundled-skills)을 생략합니다. Claude Code를 임베드하고 자체 브라우저 지침을 제공하는 호스트를 위한 것입니다. Claude Code v2.1.257 이상이 필요합니다 |242| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | `1`로 설정하면 [Claude in Chrome](https://code.claude.com/docs/ko/chrome.md) 브라우저 도구는 계속 사용할 수 있게 유지하면서 시스템 프롬프트의 Chrome 섹션과 `/claude-in-chrome` [번들 스킬](https://code.claude.com/docs/ko/skills.md#bundled-skills)을 생략합니다. Claude Code를 임베드하고 자체 브라우저 지침을 제공하는 호스트를 위한 것입니다. Claude Code v2.1.257 이상이 필요합니다 |

243| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | `1`로 설정하면 사용자, 프로젝트, 자동 메모리 파일을 포함한 모든 CLAUDE.md 메모리 파일을 컨텍스트에 로드하지 않습니다 |243| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | `1`로 설정하면 사용자, 프로젝트, 자동 메모리 파일을 포함한 모든 CLAUDE.md 메모리 파일을 컨텍스트에 로드하지 않습니다 |

244| `CLAUDE_CODE_DISABLE_CRON` | `1`로 설정하면 [세션 범위 예약 작업](https://code.claude.com/docs/ko/scheduled-tasks.md)을 비활성화합니다. `/loop` 스킬과 cron 도구를 사용할 수 없게 되며, 세션 도중 이미 실행 중인 작업을 포함해 이미 예약된 모든 작업의 실행이 중지됩니다 |244| `CLAUDE_CODE_DISABLE_CRON` | `1`로 설정하면 [세션 범위 예약 작업](https://code.claude.com/docs/ko/scheduled-tasks.md)을 비활성화합니다. `/loop` 스킬과 cron 도구를 사용할 수 없게 되며, 세션 도중 이미 실행 중인 작업을 포함해 이미 예약된 모든 작업의 실행이 중지됩니다 |

245| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | `1`로 설정하면 [중요 경로 삭제](https://code.claude.com/docs/ko/permission-modes.md#critical-paths) 프롬프트의 시간 제한을 끕니다. 그러면 `auto` 모드에서 Claude Code는 이러한 삭제를 대신 분류기로 보내고, `bypassPermissions` 모드에서는 프롬프트가 사용자의 응답을 기다립니다. Claude Code는 설정 `env` 블록을 통해 전달된 값을 무시하므로 Claude Code를 실행하는 환경에서 설정합니다. Claude Code v2.1.281 이상이 필요합니다 |245| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | `1`로 설정하면 중요 경로 삭제에 대한 `auto` 및 `bypassPermissions` [시간 제한 및 거부](https://code.claude.com/docs/ko/permission-modes.md#time-limits-and-denials-in-auto-and-bypasspermissions-modes)를 끕니다. 그러면 이러한 삭제는 `auto` 모드에서는 분류기로 전달되고, `bypassPermissions` 모드에서는 Claude Code가 프롬프트를 표시할 수 있는 곳이면 어디서든 시간 제한 없는 프롬프트가 표시됩니다. Claude Code는 설정의 `env` 블록을 통해 전달된 값을 무시하므로, Claude Code를 실행하는 환경에서 설정합니다. Claude Code v2.1.281 이상이 필요합니다 |

246| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | `1`로 설정하면 API 요청에서 프리릴리스 `anthropic-beta` 요청 헤더, 이와 짝을 이루는 본문 필드, `defer_loading` 및 `eager_input_streaming` 같은 베타 도구 스키마 필드를 제거합니다. 프록시 게이트웨이가 `anthropic-beta` 헤더에 대해 `Unexpected value(s)` 오류나 `Extra inputs are not permitted` 오류로 요청을 거부할 때 사용합니다. [프리릴리스 기능 비활성화](https://code.claude.com/docs/ko/llm-gateway-protocol.md#disable-pre-release-capabilities)에 [MCP 도구 검색](https://code.claude.com/docs/ko/mcp.md#scale-with-mcp-tool-search)을 포함해 이 변수가 제거하는 항목과 Claude Code가 계속 전송하는 항목이 나와 있습니다 |246| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | `1`로 설정하면 API 요청에서 프리릴리스 `anthropic-beta` 요청 헤더, 이와 짝을 이루는 본문 필드, `defer_loading` 및 `eager_input_streaming` 같은 베타 도구 스키마 필드를 제거합니다. 프록시 게이트웨이가 `anthropic-beta` 헤더에 대해 `Unexpected value(s)` 오류나 `Extra inputs are not permitted` 오류로 요청을 거부할 때 사용합니다. [프리릴리스 기능 비활성화](https://code.claude.com/docs/ko/llm-gateway-protocol.md#disable-pre-release-capabilities)에 [MCP 도구 검색](https://code.claude.com/docs/ko/mcp.md#scale-with-mcp-tool-search)을 포함해 이 변수가 제거하는 항목과 Claude Code가 계속 전송하는 항목이 나와 있습니다 |

247| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | `1`로 설정하면 기본 제공 [Explore 및 Plan 서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#built-in-subagents)를 비활성화합니다. Claude는 대신 검색 도구나 general-purpose 서브에이전트로 탐색하며, [플랜 모드](https://code.claude.com/docs/ko/permission-modes.md#analyze-before-you-edit-with-plan-mode)는 Explore 및 Plan 에이전트를 실행하지 않고 파일을 직접 읽습니다. 이름이 `Explore` 또는 `Plan`인 사용자 지정 서브에이전트는 영향을 받지 않습니다. Agent SDK나 비대화형 모드에서 모든 기본 제공 서브에이전트 유형을 제거하려면 대신 `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`를 사용합니다. Claude Code v2.1.198 이상이 필요합니다 |247| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | `1`로 설정하면 기본 제공 [Explore 및 Plan 서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#built-in-subagents)를 비활성화합니다. Claude는 대신 검색 도구나 general-purpose 서브에이전트로 탐색하며, [플랜 모드](https://code.claude.com/docs/ko/permission-modes.md#analyze-before-you-edit-with-plan-mode)는 Explore 및 Plan 에이전트를 실행하지 않고 파일을 직접 읽습니다. 이름이 `Explore` 또는 `Plan`인 사용자 지정 서브에이전트는 영향을 받지 않습니다. Agent SDK나 비대화형 모드에서 모든 기본 제공 서브에이전트 유형을 제거하려면 대신 `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`를 사용합니다. Claude Code v2.1.198 이상이 필요합니다 |

248| `CLAUDE_CODE_DISABLE_FAST_MODE` | `1`로 설정하면 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)를 비활성화합니다 |248| `CLAUDE_CODE_DISABLE_FAST_MODE` | `1`로 설정하면 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)를 비활성화합니다 |

errors.md +35 −3

Details

244| `MCP server "<name>" was not saved to` / `was not removed from` | [명령줄 오류](#mcp-server-was-not-saved-or-removed) |244| `MCP server "<name>" was not saved to` / `was not removed from` | [명령줄 오류](#mcp-server-was-not-saved-or-removed) |

245| `MCP server "<name>" may not have been saved` / `may not have been removed` | [명령줄 오류](#mcp-server-may-not-have-been-saved-or-removed) |245| `MCP server "<name>" may not have been saved` / `may not have been removed` | [명령줄 오류](#mcp-server-may-not-have-been-saved-or-removed) |

246| `Server rejected the Authorization header minted by the configured headersHelper` | [명령줄 오류](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) |246| `Server rejected the Authorization header minted by the configured headersHelper` | [명령줄 오류](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) |

247| `This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability` | [명령줄 오류](#mcp-server-rejected-the-elicitation-capability) |

247| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [명령줄 오류](#mcp-permission-prompt-tool-not-found) |248| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [명령줄 오류](#mcp-permission-prompt-tool-not-found) |

248| `OAuth callback port <port> is already in use — another process may be holding it` | [명령줄 오류](#oauth-callback-port-is-already-in-use) |249| `OAuth callback port <port> is already in use — another process may be holding it` | [명령줄 오류](#oauth-callback-port-is-already-in-use) |

249| `No available ports for OAuth redirect` | [명령줄 오류](#no-available-ports-for-oauth-redirect) |250| `No available ports for OAuth redirect` | [명령줄 오류](#no-available-ports-for-oauth-redirect) |


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

3281* **`No answer in time.` 뒤에 `Error: Workspace not trusted`**: `Trust <folder>? [y/N]` 질문에 5분 동안 답하지 않았습니다. `claude ultrareview`를 다시 실행하고 답합니다.3282* **`No answer in time.` 뒤에 `Error: Workspace not trusted`**: `Trust <folder>? [y/N]` 질문에 5분 동안 답하지 않았습니다. `claude ultrareview`를 다시 실행하고 답합니다.

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

3283* **``Ultrareview did not start: `--trust-workspace` takes no value``**: PR 번호나 `false`처럼 플래그가 아닌 무언가가 `--trust-workspace` 뒤에 옵니다. 폴더를 신뢰하지 않는다면 플래그를 빼십시오. 이번 실행에 한해 신뢰하려면 PR 번호나 기본 브랜치를 플래그 앞에 둡니다: `claude ultrareview 1234 --trust-workspace`.3284* **``Ultrareview did not start: `--trust-workspace` takes no value``**: PR 번호나 `false`처럼 플래그가 아닌 것이 `--trust-workspace` 뒤에 옵니다. 폴더를 신뢰하지 않는다면 플래그를 빼십시오. 이번 실행에 대해 신뢰하려면 PR 번호나 기본 브랜치를 플래그 앞에 둡니다: `claude ultrareview 1234 --trust-workspace`.

3284 3285 

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

3286 3287 


3473 3474 

3474v2.1.248 이전에는 헬퍼가 `Authorization` 헤더를 제공하는 서버에 대해서도 Claude Code가 OAuth 검색을 실행했습니다. 이 검색은 거부된 자격 증명을 보고하는 대신 `Incompatible auth server: does not support dynamic client registration`으로 실패할 수 있었습니다.3475v2.1.248 이전에는 헬퍼가 `Authorization` 헤더를 제공하는 서버에 대해서도 Claude Code가 OAuth 검색을 실행했습니다. 이 검색은 거부된 자격 증명을 보고하는 대신 `Incompatible auth server: does not support dynamic client registration`으로 실패할 수 있었습니다.

3475 3476 

3477### MCP server rejected the elicitation capability

3478 

3479Java MCP SDK 0.11.0부터 0.17.0까지의 버전으로 빌드된 MCP 서버가 연결을 거부한 경우입니다. 이러한 SDK 버전은 Claude Code가 핸드셰이크에서 선언하는 `form` 및 `url` [elicitation 모드](https://code.claude.com/docs/ko/mcp.md#elicitation-modes-claude-code-declares)를 파싱할 수 없습니다. `claude mcp list`는 서버 자체의 오류 대신 이 메시지와 함께 서버를 실패로 표시합니다:

3480 

3481```text theme={null}

3482This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).

3483```

3484 

3485**해결 방법:**

3486 

3487* 서버를 Java MCP SDK 0.17.1 이상 또는 메시지에 표시된 Spring AI 릴리스 중 하나로 업그레이드합니다

3488* 또는 MCP 구성의 해당 서버 항목에 `"bareElicitationCapability": true`를 추가한 뒤 Claude Code를 다시 시작합니다. 이 필드는 stdio, `sse`, `http`, `ws` 항목에서 허용되며 Claude Code v2.1.281 이상이 필요합니다

3489 

3490다음 `.mcp.json` 항목은 하나의 HTTP 서버에 이 필드를 설정합니다:

3491 

3492```json theme={null}

3493{

3494 "mcpServers": {

3495 "inventory": {

3496 "type": "http",

3497 "url": "https://mcp.example.com/mcp",

3498 "bareElicitationCapability": true

3499 }

3500 }

3501}

3502```

3503 

3504다시 시작한 후 `/mcp`에서 서버가 연결된 것으로 표시됩니다. Claude Code는 해당 서버에만 form 모드를 선언하므로, 서버를 업그레이드하면 이 필드를 제거합니다.

3505 

3506서버가 `Unrecognized field "form"`이 포함된 오류처럼 자체 오류 텍스트로 실패할 수도 있습니다. 같은 해결 방법이 적용됩니다.

3507 

3476### MCP 권한 프롬프트 도구를 찾을 수 없음3508### MCP 권한 프롬프트 도구를 찾을 수 없음

3477 3509 

3478실행에서 처음으로 권한 결정이 필요했을 때 [`--permission-prompt-tool`](https://code.claude.com/docs/ko/cli-reference#cli-flags)에 전달한 도구가 연결된 MCP 도구 중에 없었습니다. 해당 서버가 연결되지 않았거나, 연결된 서버 중 그 이름의 도구를 노출하는 서버가 없기 때문입니다. Claude Code는 여전히 프롬프트를 전송합니다. [비대화형](https://code.claude.com/docs/ko/headless.md) 실행은 첫 번째 도구 호출에서 이 오류와 종료 코드 1로 종료되므로, 요청은 이루어졌지만 응답은 생성되지 않습니다. 첫 번째 프롬프트 전에 Claude Code는 [`MCP_TIMEOUT`](https://code.claude.com/docs/ko/env-vars)으로 설정된 서버별 연결 타임아웃인 최대 30초 동안 해당 서버가 연결되기를 기다립니다. v2.1.206 이전에는 시작 시 서버 연결이 완료될 때까지 기다리지 않았기 때문에, 시작이 느리지만 정상인 서버에서도 이 오류가 발생했습니다.3510실행에서 처음으로 권한 결정이 필요했을 때 [`--permission-prompt-tool`](https://code.claude.com/docs/ko/cli-reference#cli-flags)에 전달한 도구가 연결된 MCP 도구 중에 없었습니다. 해당 서버가 연결되지 않았거나, 연결된 서버 중 그 이름의 도구를 노출하는 서버가 없기 때문입니다. Claude Code는 여전히 프롬프트를 전송합니다. [비대화형](https://code.claude.com/docs/ko/headless.md) 실행은 첫 번째 도구 호출에서 이 오류와 종료 코드 1로 종료되므로, 요청은 이루어졌지만 응답은 생성되지 않습니다. 첫 번째 프롬프트 전에 Claude Code는 [`MCP_TIMEOUT`](https://code.claude.com/docs/ko/env-vars)으로 설정된 서버별 연결 타임아웃인 최대 30초 동안 해당 서버가 연결되기를 기다립니다. v2.1.206 이전에는 시작 시 서버 연결이 완료될 때까지 기다리지 않았기 때문에, 시작이 느리지만 정상인 서버에서도 이 오류가 발생했습니다.


3541 3573 

3542관련 메시지는 명령이 실행되기도 전에 발생합니다:3574관련 메시지는 명령이 실행되기도 전에 발생합니다:

3543 3575 

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

3545* ``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)을 참조하세요3577* ``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)을 참조하세요

3546* `No shell command in <name> was run`: 파일의 `!` 명령 중 하나에 탭이나 줄 바꿈 이외의 원시 제어 문자가 포함되어 있어 어떤 명령도 실행되지 않습니다. [해당 문자를 찾아 제거하는 방법](#no-shell-command-was-run)을 참조하십시오3578* `No shell command in <name> was run`: 파일의 `!` 명령 중 하나에 탭이나 줄 바꿈 이외의 원시 제어 문자가 포함되어 있어 어떤 명령도 실행되지 않습니다. [해당 문자를 찾아 제거하는 방법](#no-shell-command-was-run)을 참조하십시오

3547 3579 


3693 3725 

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

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

3696* **클론에 없던 기준 브랜치를 전달한 경우**: 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`와 함께 실패했습니다.3728* **클론에 없던 기본 브랜치를 전달한 경우**: 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`와 함께 실패했습니다.

3697 3729 

3698**해결 방법:**3730**해결 방법:**

3699 3731 

Details

303* CLAUDE.md 및 git 상태. 기본 제공 Explore 및 Plan 에이전트는 [둘 다 없이 시작](https://code.claude.com/docs/ko/sub-agents.md#what-loads-at-startup)하며, 정의에서 [`omitClaudeMd`](https://code.claude.com/docs/ko/sub-agents#supported-frontmatter-fields)를 설정한 에이전트는 사용자, 프로젝트 및 로컬 CLAUDE.md 파일 없이 시작합니다.303* CLAUDE.md 및 git 상태. 기본 제공 Explore 및 Plan 에이전트는 [둘 다 없이 시작](https://code.claude.com/docs/ko/sub-agents.md#what-loads-at-startup)하며, 정의에서 [`omitClaudeMd`](https://code.claude.com/docs/ko/sub-agents#supported-frontmatter-fields)를 설정한 에이전트는 사용자, 프로젝트 및 로컬 CLAUDE.md 파일 없이 시작합니다.

304* 리드 에이전트가 프롬프트에서 전달하는 모든 컨텍스트304* 리드 에이전트가 프롬프트에서 전달하는 모든 컨텍스트

305 305 

306[포크](https://code.claude.com/docs/ko/sub-agents.md#fork-the-current-conversation)의 경우, Claude Code는 부모의 대화 지금까지, 시스템 프롬프트 및 도구를 로드합니다.306[포크](https://code.claude.com/docs/ko/sub-agents.md#fork-the-current-conversation)의 경우, Claude Code는 대신 부모의 지금까지의 대화, 시스템 프롬프트 및 도구를 로드합니다.

307 307 

308**컨텍스트 비용:** 주 세션에서 격리됨.308**컨텍스트 비용:** 주 세션에서 격리됨.

309 309 

hooks.md +1 −1

Details

1957 1957 

1958| 필드 | 설명 |1958| 필드 | 설명 |

1959| :- | :- |1959| :- | :- |

1960| `permissionDecision` | `"allow"`는 권한 프롬프트를 건너뜁니다. 단, [어떤 모드도 자동 승인하지 않는 작업](https://code.claude.com/docs/ko/permission-modes.md#actions-no-mode-auto-approves)과 [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)는 예외입니다. `AskUserQuestion`과 `ExitPlanMode`에는 [`"allow"`와 함께 `updatedInput`](#allow-with-updatedinput)이 필요합니다. 플랜 모드의 경우 [플랜 모드의 훅 승인](https://code.claude.com/docs/ko/permissions.md#hook-approvals-in-plan-mode)을 참조하십시오. `"deny"`는 도구 호출을 막습니다. `"ask"`는 사용자에게 확인을 요청합니다. `"defer"`는 나중에 도구를 재개할 수 있도록 턴을 종료하며, `-p` 플래그를 사용하는 [비대화형 모드](#defer-a-tool-call-for-later)가 필요합니다. [거부 및 확인 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)은 훅이 반환하는 내용과 관계없이 계속 평가됩니다 |1960| `permissionDecision` | `"allow"`는 권한 프롬프트를 건너뜁니다. 단, [어떤 모드에서도 자동 승인되지 않는 작업](https://code.claude.com/docs/ko/permission-modes.md#actions-no-mode-auto-approves)과 [네트워크 경로에서의 읽기](https://code.claude.com/docs/ko/permissions.md#network-paths)는 예외입니다. [권한 모드가 호출을 승인](https://code.claude.com/docs/ko/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call)하지 않는 한, [Agent SDK 앱이 `always_ask`로 표시한 도구](https://code.claude.com/docs/ko/agent-sdk/custom-tools#require-approval-for-specific-tools)에 대한 호출의 승인도 건너뛰지 않습니다. `AskUserQuestion`과 `ExitPlanMode`에는 [`"allow"`와 함께 `updatedInput`](#allow-with-updatedinput)이 필요합니다. 플랜 모드에 대해서는 [플랜 모드에서의 훅 승인](https://code.claude.com/docs/ko/permissions.md#hook-approvals-in-plan-mode)을 참조하십시오. `"deny"`는 도구 호출을 막습니다. `"ask"`는 사용자에게 확인을 요청합니다. `"defer"`는 도구를 나중에 재개할 수 있도록 턴을 종료하며, `-p` 플래그를 사용하는 [비대화형 모드](#defer-a-tool-call-for-later)가 필요합니다. 훅이 무엇을 반환하든 [거부 및 확인 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)은 여전히 평가됩니다 |

1961| `permissionDecisionReason` | `"ask"`의 경우 권한 프롬프트에서 사용자에게 표시됩니다. 아무도 해당 프롬프트에 답할 수 없는 `-p` 실행에서 Claude Code가 [호출을 거부](https://code.claude.com/docs/ko/headless.md#turn-off-permission-prompts-in-unattended-runs)하면, Claude가 대신 도구 결과에서 이유를 읽습니다. `"deny"`의 경우 Claude에게 표시됩니다. `"allow"` 및 `"defer"`의 경우 [디버그 로그](#debug-hooks)에만 기록됩니다 |1961| `permissionDecisionReason` | `"ask"`의 경우 권한 프롬프트에서 사용자에게 표시됩니다. 아무도 해당 프롬프트에 답할 수 없는 `-p` 실행에서 Claude Code가 [호출을 거부](https://code.claude.com/docs/ko/headless.md#turn-off-permission-prompts-in-unattended-runs)하면, Claude가 대신 도구 결과에서 이유를 읽습니다. `"deny"`의 경우 Claude에게 표시됩니다. `"allow"` 및 `"defer"`의 경우 [디버그 로그](#debug-hooks)에만 기록됩니다 |

1962| `updatedInput` | 실행 전에 도구의 입력 매개변수를 수정합니다. 전체 입력 객체를 대체하므로 수정된 필드와 함께 변경되지 않은 필드도 포함하십시오. Claude Code는 권한 규칙과 Bash 명령의 [자동 백그라운드 전환 적격성](https://code.claude.com/docs/ko/tools-reference.md#foreground-commands-that-move-to-the-background)을 Claude가 보낸 입력이 아닌 훅이 반환한 입력을 기준으로 평가합니다. 자동 승인하려면 `"allow"`와, 수정된 입력을 사용자에게 보여주려면 `"ask"`와 함께 사용하십시오. `"defer"`의 경우 무시됩니다 |1962| `updatedInput` | 실행 전에 도구의 입력 매개변수를 수정합니다. 전체 입력 객체를 대체하므로 수정된 필드와 함께 변경되지 않은 필드도 포함하십시오. Claude Code는 권한 규칙과 Bash 명령의 [자동 백그라운드 전환 적격성](https://code.claude.com/docs/ko/tools-reference.md#foreground-commands-that-move-to-the-background)을 Claude가 보낸 입력이 아닌 훅이 반환한 입력을 기준으로 평가합니다. 자동 승인하려면 `"allow"`와, 수정된 입력을 사용자에게 보여주려면 `"ask"`와 함께 사용하십시오. `"defer"`의 경우 무시됩니다 |

1963| `additionalContext` | 도구 결과와 함께 Claude의 컨텍스트에 추가되는 문자열입니다. `permissionDecision`이 `"defer"`일 때는 무시됩니다. [Claude를 위한 컨텍스트 추가](#add-context-for-claude)를 참조하십시오 |1963| `additionalContext` | 도구 결과와 함께 Claude의 컨텍스트에 추가되는 문자열입니다. `permissionDecision`이 `"defer"`일 때는 무시됩니다. [Claude를 위한 컨텍스트 추가](#add-context-for-claude)를 참조하십시오 |

hooks-guide.md +2 −0

Details

629 629 

630* [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기630* [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기

631* [`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구631* [`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구

632* [Agent SDK 앱이 `always_ask`로 표시한 도구](https://code.claude.com/docs/ko/agent-sdk/custom-tools#require-approval-for-specific-tools)에 대한 호출([권한 모드가 해당 호출을 승인하는](https://code.claude.com/docs/ko/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call) 경우 제외)

632* 해당 설정이 Claude Code에 도달하는 세션에서 [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구633* 해당 설정이 Claude Code에 도달하는 세션에서 [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구

633 634 

634 플랜 모드에서 `"allow"`가 어떻게 동작하는지는 [플랜 모드의 hook 승인](https://code.claude.com/docs/ko/permissions.md#hook-approvals-in-plan-mode)을 참조하세요.635 플랜 모드에서 `"allow"`가 어떻게 동작하는지는 [플랜 모드의 hook 승인](https://code.claude.com/docs/ko/permissions.md#hook-approvals-in-plan-mode)을 참조하세요.


963* **`"allow"`보다 우선하는 항목**: `"allow"`를 반환하는 훅은 설정의 거부 규칙을 우회하지 않으며, 다음에 대한 프롬프트를 억제할 수 없습니다:964* **`"allow"`보다 우선하는 항목**: `"allow"`를 반환하는 훅은 설정의 거부 규칙을 우회하지 않으며, 다음에 대한 프롬프트를 억제할 수 없습니다:

964 * [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기965 * [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기

965 * [`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구966 * [`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구

967 * [Agent SDK 앱이 `always_ask`로 표시한 도구](https://code.claude.com/docs/ko/agent-sdk/custom-tools#require-approval-for-specific-tools)에 대한 호출([권한 모드가 해당 호출을 승인](https://code.claude.com/docs/ko/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call)하는 경우는 제외)

966 * 해당 설정이 Claude Code에 도달하는 세션에서 [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구968 * 해당 설정이 Claude Code에 도달하는 세션에서 [조직이 `ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구

967 969 

968[플랜 모드](https://code.claude.com/docs/ko/permissions.md#hook-approvals-in-plan-mode)에서 `PreToolUse` 훅이 파일 편집에 대해 `"allow"`를 반환하면, 훅이 없을 때 해당 편집이 받았을 것과 동일한 프롬프트, 차단 또는 승인이 적용됩니다. 훅 승인에 대한 이 제한을 해제하려면 [플랜을 승인](https://code.claude.com/docs/ko/permission-modes.md#review-and-approve-a-plan)하거나 다른 권한 모드로 전환합니다.970[플랜 모드](https://code.claude.com/docs/ko/permissions.md#hook-approvals-in-plan-mode)에서 `PreToolUse` 훅이 파일 편집에 대해 `"allow"`를 반환하면, 훅이 없을 때 해당 편집이 받았을 것과 동일한 프롬프트, 차단 또는 승인이 적용됩니다. 훅 승인에 대한 이 제한을 해제하려면 [플랜을 승인](https://code.claude.com/docs/ko/permission-modes.md#review-and-approve-a-plan)하거나 다른 권한 모드로 전환합니다.

Details

142 142 

143`CLAUDE_CODE_GATEWAY_HINT_HEADERS`를 `0`으로 설정하면 모든 연결에서 헤더가 중지됩니다.143`CLAUDE_CODE_GATEWAY_HINT_HEADERS`를 `0`으로 설정하면 모든 연결에서 헤더가 중지됩니다.

144 144 

145헤더는 아래 행에 나열된 것만 전달합니다. 고정된 어휘, 도구 이름 및 기간이며, 프롬프트 텍스트나 파일 내용은 절대 아닙니다. 모든 값은 인쇄 가능한 ASCII입니다.145헤더는 아래 행에 나열된 것만 전달합니다. 고정된 어휘, 도구 이름, 기간 및 무작위 프롬프트 식별자이며, 프롬프트 텍스트나 파일 내용은 절대 아닙니다. 모든 값은 인쇄 가능한 ASCII입니다.

146 146 

147| 헤더 | 설명 |147| 헤더 | 설명 |

148| :- | :- |148| :- | :- |

Details

407| [`managedMcpServers`](https://code.claude.com/docs/ko/settings-reference#managedmcpservers) | 모든 사용자에게 자신의 것과 함께 제공되는 원격 MCP 서버입니다. 이는 서버를 제공하며 아무것도 잠그지 않습니다. [관리형 설정을 통해 서버 제공](https://code.claude.com/docs/ko/managed-mcp.md#provide-servers-through-managed-settings)을 참조하세요. Claude Code v2.1.259 이상이 필요합니다 |407| [`managedMcpServers`](https://code.claude.com/docs/ko/settings-reference#managedmcpservers) | 모든 사용자에게 자신의 것과 함께 제공되는 원격 MCP 서버입니다. 이는 서버를 제공하며 아무것도 잠그지 않습니다. [관리형 설정을 통해 서버 제공](https://code.claude.com/docs/ko/managed-mcp.md#provide-servers-through-managed-settings)을 참조하세요. Claude Code v2.1.259 이상이 필요합니다 |

408| [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior) | Claude Code가 최고 우선순위 관리형 소스만 적용하는지 또는 [모든 소스를 구성](#compose-every-managed-source)하는지 여부입니다 |408| [`managedSourcesBehavior`](https://code.claude.com/docs/ko/settings-reference#managedsourcesbehavior) | Claude Code가 최고 우선순위 관리형 소스만 적용하는지 또는 [모든 소스를 구성](#compose-every-managed-source)하는지 여부입니다 |

409| [`parentSettingsBehavior`](https://code.claude.com/docs/ko/settings-reference#parentsettingsbehavior) | 호스트 제공 부모 설정이 관리형 정책 아래에 병합되는지 여부입니다 |409| [`parentSettingsBehavior`](https://code.claude.com/docs/ko/settings-reference#parentsettingsbehavior) | 호스트 제공 부모 설정이 관리형 정책 아래에 병합되는지 여부입니다 |

410| [`pluginSuggestionMarketplaces`](https://code.claude.com/docs/ko/settings-reference#pluginsuggestionmarketplaces) | Claude Code가 사용자에게 제안할 수 있는 플러그인의 마켓플레이스입니다 |410| [`pluginSuggestionMarketplaces`](https://code.claude.com/docs/ko/settings-reference#pluginsuggestionmarketplaces) | Claude Code가 터미널에서 사용자에게 제안할 수 있는 플러그인의 마켓플레이스입니다 |

411| [`pluginTrustMessage`](https://code.claude.com/docs/ko/settings-reference#plugintrustmessage) | 설치 전에 표시되는 플러그인 신뢰 경고에 추가되는 사용자 정의 메시지입니다 |411| [`pluginTrustMessage`](https://code.claude.com/docs/ko/settings-reference#plugintrustmessage) | 설치 전에 표시되는 플러그인 신뢰 경고에 추가되는 사용자 정의 메시지입니다 |

412| [`policyHelper`](https://code.claude.com/docs/ko/settings-reference#policyhelper) | 시작 시 관리형 설정을 계산하는 실행 파일입니다. [정책 도우미로 관리형 설정 계산](https://code.claude.com/docs/ko/settings-reference.md#policyhelper)을 참조하세요 |412| [`policyHelper`](https://code.claude.com/docs/ko/settings-reference#policyhelper) | 시작 시 관리형 설정을 계산하는 실행 파일입니다. [정책 도우미로 관리형 설정 계산](https://code.claude.com/docs/ko/settings-reference.md#policyhelper)을 참조하세요 |

413| [`sandbox.filesystem.allowManagedReadPathsOnly`](https://code.claude.com/docs/ko/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | `true`일 때 관리형 설정의 `filesystem.allowRead` 경로만 존중됩니다. `denyRead`는 여전히 모든 소스에서 병합됩니다 |413| [`sandbox.filesystem.allowManagedReadPathsOnly`](https://code.claude.com/docs/ko/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | `true`일 때 관리형 설정의 `filesystem.allowRead` 경로만 존중됩니다. `denyRead`는 여전히 모든 소스에서 병합됩니다 |

mcp.md +10 −1

Details

1624 1624 

1625유도를 사용하는 MCP 서버를 구축하는 경우, 프로토콜 세부 정보 및 스키마 예제는 [MCP 유도 사양](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation)을 참조합니다.1625유도를 사용하는 MCP 서버를 구축하는 경우, 프로토콜 세부 정보 및 스키마 예제는 [MCP 유도 사양](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation)을 참조합니다.

1626 1626 

1627[protocol revision 2026-07-28](#mcp-client-runtimes)을 사용하는 연결에서 Claude Code는 클라이언트 기능에서 `elicitation: {form: {}, url: {}}`을 선언하므로, 해당 프로토콜의 표준 유도 요청을 통해 서버가 어느 모드든 요청할 수 있습니다.1627### Claude Code가 선언하는 유도 모드

1628 

1629MCP 서버를 구축하는 경우, Claude Code가 연결할 때 보내는 클라이언트 기능을 통해 서버가 요청할 수 있는 유도 모드를 알 수 있습니다. Claude Code는 다음 연결에서 `elicitation: {form: {}, url: {}}`을 선언하므로, 이러한 연결의 서버는 두 모드를 모두 요청할 수 있습니다.

1630 

1631* [프로토콜 리비전 2026-07-28](#mcp-client-runtimes)을 사용하는 연결

1632* 이전 프로토콜 리비전(2025-11-25 및 그 이전)에서 사용자의 Claude Code MCP 구성에 있는 stdio, `sse`, `http`, `ws` 서버에 대한 연결. Claude Code v2.1.287 이상이 필요합니다

1633 

1634이전 리비전의 그 밖의 연결(예: [claude.ai 커넥터](#use-mcp-servers-from-claude-ai)에 대한 연결)에서 Claude Code는 단순한 `elicitation: {}`을 선언하며, 이는 양식 모드의 유도 요청만 허용합니다.

1635 

1636Java MCP SDK 0.17.0 이하로 빌드된 서버는 `form`과 `url`이 포함된 선언을 거부할 수 있습니다. [MCP server rejected the elicitation capability](https://code.claude.com/docs/ko/errors.md#mcp-server-rejected-the-elicitation-capability)를 참조합니다.

1628 1637 

1629## MCP 리소스 사용1638## MCP 리소스 사용

1630 1639 

Details

36* 명시적 [요청 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)과 일치하는 도구36* 명시적 [요청 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)과 일치하는 도구

37* 조직이 [`ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구, 해당 설정이 Claude Code에 도달하는 세션에서37* 조직이 [`ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 커넥터 도구, 해당 설정이 Claude Code에 도달하는 세션에서

38* 사용자 상호작용이 필요한 도구: 기본 제공 `AskUserQuestion` 도구 및 [`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구38* 사용자 상호작용이 필요한 도구: 기본 제공 `AskUserQuestion` 도구 및 [`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 MCP 도구

39* 인식된 `rm` 및 `rmdir` [중요 경로 제거](#critical-paths), 어떤 허용 규칙이나 `PreToolUse` 훅 `"allow"`도 승인하지 않음39* 어떤 허용 규칙이나 `PreToolUse` 훅 `"allow"`도 승인하지 않는 인식된 `rm` 및 `rmdir` [중요 경로 제거](#critical-paths), 그리고 [`Dangerous rm operation not ruled out`](#dangerous-rm-operation-not-ruled-out)으로 플래그가 지정된 Bash 명령

40* [세션 간 메시징 보안 조치](#skip-all-checks-with-bypasspermissions-mode)40* [세션 간 메시징 보안 조치](#skip-all-checks-with-bypasspermissions-mode)

41* [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ko/settings-reference#permissions-blockreadsoutsideworkingdirectories)가 켜져 있는 동안 작업 디렉토리 외부의 읽기: 인식된 파일 읽기 Bash 명령어는 자동 모드 및 `bypassPermissions` 모드에서도 프롬프트하며, 샌드박스 외부에서 실행하기 위해 승인이 필요한 모든 [샌드박스 해제 재시도](https://code.claude.com/docs/ko/sandboxing.md#the-unsandboxed-retry-escape-hatch)도 마찬가지입니다. Claude Code v2.1.257 이상이 필요합니다.41* [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ko/settings-reference#permissions-blockreadsoutsideworkingdirectories)가 켜져 있는 동안 작업 디렉토리 외부의 읽기: 인식된 파일 읽기 Bash 명령어는 자동 모드 및 `bypassPermissions` 모드에서도 프롬프트하며, 샌드박스 외부에서 실행하기 위해 승인이 필요한 모든 [샌드박스 해제 재시도](https://code.claude.com/docs/ko/sandboxing.md#the-unsandboxed-retry-escape-hatch)도 마찬가지입니다. Claude Code v2.1.257 이상이 필요합니다.

42 42 


265 265 

266`acceptEdits` 모드를 사용하면 Claude가 프롬프트 없이 작업 디렉토리에서 파일을 생성하고 편집할 수 있습니다. 이 모드가 활성화되어 있는 동안 상태 표시줄에 `⏵⏵ accept edits on`이 표시됩니다.266`acceptEdits` 모드를 사용하면 Claude가 프롬프트 없이 작업 디렉토리에서 파일을 생성하고 편집할 수 있습니다. 이 모드가 활성화되어 있는 동안 상태 표시줄에 `⏵⏵ accept edits on`이 표시됩니다.

267 267 

268파일 편집 외에도 `acceptEdits` 모드는 일반적인 파일시스템 Bash 명령어를 자동으로 승인합니다: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`. 이러한 명령어는 `LANG=C` 또는 `NO_COLOR=1`과 같은 안전한 환경 변수가 접두사로 붙거나 `timeout`, `nice`, `nohup`과 같은 프로세스 래퍼가 붙을 때도 자동으로 승인됩니다. 파일 편집과 마찬가지로 자동 승인은 작업 디렉토리 또는 `additionalDirectories` 내의 경로에만 적용됩니다.268파일 편집 외에도 `acceptEdits` 모드는 일반적인 파일시스템 Bash 명령을 자동으로 승인합니다: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`. `touch`를 제외한 이러한 명령은 `LANG=C` 또는 `NO_COLOR=1`과 같은 안전한 환경 변수가 접두사로 붙거나 `timeout`, `nice`, `nohup`과 같은 프로세스 래퍼가 붙을 때도 자동으로 승인됩니다. 파일 편집과 마찬가지로 자동 승인은 작업 디렉터리 또는 `additionalDirectories` 내의 경로에만 적용됩니다.

269 269 

270다음 항목은 여전히 확인을 요청합니다:270다음 항목은 여전히 확인을 요청합니다:

271 271 

272* 해당 범위 밖의 경로272* 해당 범위 밖의 경로

273* [보호된 경로](#protected-paths)에 대한 쓰기273* [보호된 경로](#protected-paths)에 대한 쓰기

274* 인식된 `rm` 및 `rmdir` [중요 경로 제거](#critical-paths)274* 인식된 `rm` 및 `rmdir` [중요 경로 제거](#critical-paths)

275* 일반 파일 경로 이외의 항목이 포함된 `touch`(예: 옵션, glob, 또는 `timeout 5`나 `LANG=C`와 같은 접두사)

275* [기본 제공 읽기 전용 집합](https://code.claude.com/docs/ko/permissions.md#read-only-commands)을 제외한 다른 모든 Bash 명령276* [기본 제공 읽기 전용 집합](https://code.claude.com/docs/ko/permissions.md#read-only-commands)을 제외한 다른 모든 Bash 명령

276 277 

277각 경로는 [심볼릭 링크 확인](https://code.claude.com/docs/ko/permissions.md#symlinks)도 거치므로, 해당 범위 밖으로 확인되는 쓰기 역시 자동으로 승인되지 않습니다.278각 경로는 [심볼릭 링크 확인](https://code.claude.com/docs/ko/permissions.md#symlinks)도 거치므로, 해당 범위 밖으로 확인되는 쓰기 역시 자동으로 승인되지 않습니다.


369* **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) 세션(예: 텔레메트리를 끈 경우)은 모든 종류의 세션에서 기본적으로 서버에 요청합니다.

370* **클라우드 제공자, 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 게이트웨이 또는 프록시**: [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* **로그인한 [Claude 앱 게이트웨이](https://code.claude.com/docs/ko/claude-apps-gateway) 세션**: Claude Code v2.1.280 이상이 필요합니다372* **로그인한 [Claude 앱 게이트웨이](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이 롤아웃할 때 서버에 요청합니다.

372 374 

373서버가 작업을 검토하는 경우 해당 판정이 이를 결정합니다. 다른 두 가지 결과가 가능합니다:375서버가 작업을 검토하는 경우 해당 판정이 이를 결정합니다. 다른 두 가지 결과가 가능합니다:

374 376 


647 649 

648`bypassPermissions` 모드는 권한 프롬프트와 안전 확인을 비활성화하여 [보호된 경로](#protected-paths)에 대한 쓰기를 포함한 도구 호출이 즉시 실행되도록 합니다.650`bypassPermissions` 모드는 권한 프롬프트와 안전 확인을 비활성화하여 [보호된 경로](#protected-paths)에 대한 쓰기를 포함한 도구 호출이 즉시 실행되도록 합니다.

649 651 

650[어떤 모드도 자동 승인하지 않는 작업](#actions-no-mode-auto-approves)은 이 모드에서도 계속 프롬프트를 표시합니다. [다른 조직의 공개 아티팩트](https://code.claude.com/docs/ko/artifacts.md#read-an-artifact-shared-with-you)를 읽으려면 사용자의 승인이 필요한데, 이 모드는 승인을 요청하지 않으므로 Claude는 이를 읽을 수 없습니다. [PowerShell의 Remove-Item](#remove-item-in-powershell) 거부도 이 모드에서 적용됩니다.652`bypassPermissions` 모드에서도 [어떤 모드도 자동 승인하지 않는 작업](#actions-no-mode-auto-approves)은 각각 자체적으로 실행되지 않고 프롬프트를 표시하거나 거부됩니다. [다른 조직의 공개 아티팩트](https://code.claude.com/docs/ko/artifacts.md#read-an-artifact-shared-with-you)를 읽으려면 사용자의 승인이 필요한데, 이 모드는 승인을 요청하지 않으므로 Claude는 이를 읽을 수 없습니다. [PowerShell의 Remove-Item](#remove-item-in-powershell) 거부도 이 모드에서 적용됩니다.

651 653 

652두 가지 [세션 간 메시징](https://code.claude.com/docs/ko/cross-session-messaging.md) 보안 조치는 이 모드에서, 그리고 권한 우회가 가능한 대화형 터미널 계획 모드 세션에서도 계속 적용됩니다:654두 가지 [세션 간 메시징](https://code.claude.com/docs/ko/cross-session-messaging.md) 보안 조치는 이 모드에서, 그리고 권한 우회가 가능한 대화형 터미널 계획 모드 세션에서도 계속 적용됩니다:

653 655 


769* `.devcontainer.json`771* `.devcontainer.json`

770* `.ripgreprc`, `pyrightconfig.json`772* `.ripgreprc`, `pyrightconfig.json`

771* `.mcp.json`, `.claude.json`773* `.mcp.json`, `.claude.json`

774* 세션을 시작할 때 [`--settings`](https://code.claude.com/docs/ko/cli-reference#cli-flags), `--mcp-config` 또는 `--agents`에 전달한 파일

772* 사용자, 프로젝트 또는 로컬 [설정 파일](https://code.claude.com/docs/ko/settings.md#settings-files-and-who-they-affect) 자체가 심볼릭 링크일 때(예: dotfiles 저장소로 연결되는 경우) 해당 설정 파일이 가리키는 파일. 보호된 경로 쓰기를 분류기로 라우팅하는 모드에서는 allow 규칙이 일치하더라도 이 파일에 대한 쓰기는 대신 확인을 요청합니다. 파일 자체의 경로가 다른 폴더의 `.claude/settings.json`처럼 설정 파일의 경로이기도 한 경우, 해당 쓰기는 다른 보호된 경로 쓰기와 마찬가지로 분류기로 전달됩니다775* 사용자, 프로젝트 또는 로컬 [설정 파일](https://code.claude.com/docs/ko/settings.md#settings-files-and-who-they-affect) 자체가 심볼릭 링크일 때(예: dotfiles 저장소로 연결되는 경우) 해당 설정 파일이 가리키는 파일. 보호된 경로 쓰기를 분류기로 라우팅하는 모드에서는 allow 규칙이 일치하더라도 이 파일에 대한 쓰기는 대신 확인을 요청합니다. 파일 자체의 경로가 다른 폴더의 `.claude/settings.json`처럼 설정 파일의 경로이기도 한 경우, 해당 쓰기는 다른 보호된 경로 쓰기와 마찬가지로 분류기로 전달됩니다

773 776 

774## 중요 경로777## 중요 경로


844 847 

845변수 아래의 glob 또는 후행 슬래시의 경우 프롬프트는 플래그된 `rm`의 이름을 지정하고 확인을 통과하도록 다시 작성하는 방법을 설명합니다.848변수 아래의 glob 또는 후행 슬래시의 경우 프롬프트는 플래그된 `rm`의 이름을 지정하고 확인을 통과하도록 다시 작성하는 방법을 설명합니다.

846 849 

850### `Dangerous rm operation not ruled out` 프롬프트

851 

852전체 이유는 다음과 같습니다:

853 

854```text theme={null}

855Dangerous rm operation not ruled out — the shell may read this command differently than it was parsed

856```

857 

858이 이유는 셸이 Claude Code와 다르게 명령을 읽을 수 있다는 뜻이므로, `rm`이 없더라도 확인되지 않은 부분에 제거가 들어 있을 수 있습니다. `auto` 또는 `bypassPermissions` 모드에서 다음 문장이 포함된 거부도 같은 확인에서 비롯됩니다:

859 

860```text theme={null}

861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.

862```

863 

864[권한 모드에서](#critical-path-removals-in-each-permission-mode) critical-path 제거에 표시되는 것과 같은 프롬프트 또는 거부가 표시되며, `bypassPermissions`도 마찬가지입니다. `Bash` 또는 `Bash(*)` allow 규칙, 샌드박스 [auto-allow mode](https://code.claude.com/docs/ko/sandboxing.md#auto-allow-mode), `"allow"`를 반환하는 `PreToolUse` 훅으로는 이 명령을 승인할 수 없습니다. 명령을 읽은 다음 프롬프트를 승인하거나, 거부된 후에는 셸에서 직접 실행합니다.

865 

847### 마운트된 드라이브 프롬프트866### 마운트된 드라이브 프롬프트

848 867 

849마운트된 드라이브 프롬프트는 macOS, Linux, WSL에서 recursive `rm`이 `/mnt/c` 또는 `/Volumes/USB/build`와 같이 목록에 있는 [마운트된 드라이브 경로](#paths-that-get-the-mounted-drive-prompt)를 대상으로 할 때 표시됩니다. 이 프롬프트의 이유는 `Dangerous rm operation on mounted drive path: <path>`로 표시됩니다. `/*` 대상은 recursive 플래그 없이도 프롬프트가 표시됩니다. Claude Code는 `rm /Volumes/USB/build/*`를 `/Volumes/USB/build`의 제거로 읽기 때문입니다.868마운트된 드라이브 프롬프트는 macOS, Linux, WSL에서 recursive `rm`이 `/mnt/c` 또는 `/Volumes/USB/build`와 같이 목록에 있는 [마운트된 드라이브 경로](#paths-that-get-the-mounted-drive-prompt)를 대상으로 할 때 표시됩니다. 이 프롬프트의 이유는 `Dangerous rm operation on mounted drive path: <path>`로 표시됩니다. `/*` 대상은 recursive 플래그 없이도 프롬프트가 표시됩니다. Claude Code는 `rm /Volumes/USB/build/*`를 `/Volumes/USB/build`의 제거로 읽기 때문입니다.


900| `plan` | 승인을 요청합니다. [계획 중에 분류기가 명령을 검토할 때](#analyze-before-you-edit-with-plan-mode) bypass permissions를 사용할 수 없으면 `auto` mode처럼 처리합니다 |919| `plan` | 승인을 요청합니다. [계획 중에 분류기가 명령을 검토할 때](#analyze-before-you-edit-with-plan-mode) bypass permissions를 사용할 수 없으면 `auto` mode처럼 처리합니다 |

901| `auto` | 터미널에서 [시간 제한](#time-limits-and-denials-in-auto-and-bypasspermissions-modes)과 함께 승인을 요청합니다. 다른 곳에서는 거부합니다 |920| `auto` | 터미널에서 [시간 제한](#time-limits-and-denials-in-auto-and-bypasspermissions-modes)과 함께 승인을 요청합니다. 다른 곳에서는 거부합니다 |

902| `dontAsk` | 거부합니다 |921| `dontAsk` | 거부합니다 |

903| `bypassPermissions` | 터미널에서 시간 제한과 함께 승인을 요청합니다 |922| `bypassPermissions` | 터미널에서는 시간 제한이 끝나기 전에 승인을 요청합니다. 다른 곳에서는 [각 위치에서의 동작](#time-limits-and-denials-in-auto-and-bypasspermissions-modes)을 참조하십시오 |

904 923 

905명시적 [ask 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)이 명령과 일치하면 Claude Code는 `auto` mode에서도 승인을 요청합니다. 시간 제한 없이 요청합니다. 승인을 요청하는 모드에서 [`PermissionRequest` hook](https://code.claude.com/docs/ko/hooks#permissionrequest)은 프롬프트에 답할 수 있습니다.924명시적 [ask 규칙](https://code.claude.com/docs/ko/permissions.md#manage-permissions)이 명령과 일치하면 Claude Code는 `auto` mode에서도 승인을 요청합니다. 시간 제한 없이 요청합니다. 승인을 요청하는 모드에서 [`PermissionRequest` hook](https://code.claude.com/docs/ko/hooks#permissionrequest)은 프롬프트에 답할 수 있습니다.

906 925 


912* 프롬프트가 열려 있는 동안 아무 키나 누르면 카운트다운이 중지되고 프롬프트는 답변을 기다립니다.931* 프롬프트가 열려 있는 동안 아무 키나 누르면 카운트다운이 중지되고 프롬프트는 답변을 기다립니다.

913* 세션에서 이러한 프롬프트 3개가 답변 없이 끝나면 Claude Code는 더 이상 표시하지 않고 critical-path 제거를 즉시 거부합니다. 새 메시지를 보내면 카운트가 다시 시작됩니다.932* 세션에서 이러한 프롬프트 3개가 답변 없이 끝나면 Claude Code는 더 이상 표시하지 않고 critical-path 제거를 즉시 거부합니다. 새 메시지를 보내면 카운트가 다시 시작됩니다.

914 933 

915`auto` mode에서 Claude Code가 터미널 프롬프트를 표시할 수 없는 곳에서는 명령을 즉시 거부합니다. 예를 들어 `-p`를 사용한 [non-interactive 실행](https://code.claude.com/docs/ko/headless.md), [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/permissions.md) 세션, VS Code 확장의 채팅 패널 및 Desktop 앱에서입니다. 거부는 Claude에게 삭제하려던 항목을 보고하고 제거를 사용자에게 맡기도록 알려줍니다.934시간 제한은 Claude Code v2.1.281 이상에서 적용되며, 터미널 외부에서의 `auto` mode 거부도 마찬가지입니다.

935 

936터미널 외부에서는 이 프롬프트가 표시되지 않습니다:

916 937 

917`auto` 및 `bypassPermissions` 처리에는 Claude Code v2.1.281 이상이 필요합니다. 이를 끄려면 Claude Code를 시작하는 환경에서 [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT=1`](https://code.claude.com/docs/ko/env-vars#variables)을 설정합니다. `auto` mode에서 critical-path 제거는 대신 분류기로 이동하고, `bypassPermissions` mode에서 프롬프트는 시간 제한이 없습니다.938| 위치 | `auto` | `bypassPermissions` |

939| :- | :- | :- |

940| [VS Code 확장](https://code.claude.com/docs/ko/vs-code.md)의 채팅 패널 | 거부합니다 | [`PermissionRequest` 훅](https://code.claude.com/docs/ko/hooks#permissionrequest)이 허용하지 않는 한 거부합니다 |

941| [Desktop 앱](https://code.claude.com/docs/ko/desktop.md) | 거부합니다 | `PermissionRequest` 훅이 허용하지 않는 한 거부합니다 |

942| [`-p` 실행](https://code.claude.com/docs/ko/headless) 또는 [Agent SDK 세션](https://code.claude.com/docs/ko/agent-sdk/permissions.md) | 거부합니다 | [`--permission-prompt-tool`](https://code.claude.com/docs/ko/cli-reference#cli-flags) 또는 [`canUseTool` 콜백](https://code.claude.com/docs/ko/agent-sdk/user-input#handle-tool-approval-requests)이 결정합니다. 둘 다 없거나 [`--permission-prompts none`](https://code.claude.com/docs/ko/headless#turn-off-permission-prompts-in-unattended-runs)을 사용하는 경우에는 `PermissionRequest` 훅이 허용하지 않는 한 거부합니다 |

943 

944제거가 거부된 곳 어디에서든 전체 명령을 읽고 셸에서 직접 실행할 수 있습니다.

945 

946각 모드에서의 동작을 변경하려면 [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`](https://code.claude.com/docs/ko/env-vars#variables)을 `1`로 설정합니다:

947 

948* **`bypassPermissions`**: 터미널 프롬프트에 시간 제한이 없으며, VS Code 채팅 패널에서는 승인을 요청합니다

949* **`auto`**: 터미널, VS Code 채팅 패널, `-p` 실행 및 Agent SDK 세션에서 [분류기](#eliminate-prompts-with-auto-mode)가 결정합니다

950 

951Claude Code 설정 파일이 아니라, 셸이나 SDK의 `env` 옵션처럼 Claude Code를 시작하는 환경에서 설정합니다. 채팅 패널의 경우 VS Code 자체의 사용자 `settings.json`에 있는 [`claudeCode.environmentVariables`](https://code.claude.com/docs/ko/vs-code#extension-settings)에 추가한 다음 새 대화를 시작합니다:

952 

953```json theme={null}

954{

955 "claudeCode.environmentVariables": [

956 { "name": "CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT", "value": "1" }

957 ]

958}

959```

918 960 

919### PowerShell의 Remove-Item961### PowerShell의 Remove-Item

920 962 

Details

41 41 

42튜토리얼이나 이전 지침 세트에서 `/plugin marketplace add anthropics/claude-code`를 실행하도록 말하면, 이는 `claude-code-plugins`라는 데모 마켓플레이스를 추가합니다. 이는 공식 마켓플레이스가 아닙니다.42튜토리얼이나 이전 지침 세트에서 `/plugin marketplace add anthropics/claude-code`를 실행하도록 말하면, 이는 `claude-code-plugins`라는 데모 마켓플레이스를 추가합니다. 이는 공식 마켓플레이스가 아닙니다.

43 43 

44데모 마켓플레이스의 플러그인 대부분은 같은 이름으로 공식 마켓플레이스에도 있습니다. 예를 들어, `code-review`, `feature-dev`, `commit-commands`, `security-guidance`는 둘 다에 있습니다. 두 개의 복사본이 설치되지 않도록 `claude-plugins-official`에서 이들을 설치합니다.44데모 마켓플레이스의 플러그인 대부분은 같은 이름으로 공식 마켓플레이스에도 있습니다. 예를 들어, `code-review`, `feature-dev`, `commit-commands`는 둘 다에 있습니다. 두 개의 복사본이 설치되지 않도록 `claude-plugins-official`에서 이들을 설치합니다.

45 45 

46## 공식 마켓플레이스에서 플러그인 찾기46## 공식 마켓플레이스에서 플러그인 찾기

47 47 

Details

403 403 

404버전 범위, 해결되는 `<plugin>--v<version>` git 태그 규칙 및 교차 마켓플레이스 신뢰의 경우 [플러그인 종속성](https://code.claude.com/docs/ko/plugins/dependencies.md)을 참조하세요.404버전 범위, 해결되는 `<plugin>--v<version>` git 태그 규칙 및 교차 마켓플레이스 신뢰의 경우 [플러그인 종속성](https://code.claude.com/docs/ko/plugins/dependencies.md)을 참조하세요.

405 405 

406프로젝트가 일치할 때 Claude Code가 플러그인을 제안하도록 하려면 항목에 프로젝트를 식별하는 신호가 있는 `relevance` 블록을 추가하세요. 사용자는 관리자가 `pluginSuggestionMarketplaces`에 나열할 때만 마켓플레이스의 제안을 봅니다. 신호 및 활성화 단계는 [플러그인 관련성](https://code.claude.com/docs/ko/plugins/relevance.md)을 참조하세요.406프로젝트가 일치할 때 Claude Code가 플러그인을 제안하도록 하려면 항목에 프로젝트를 식별하는 신호가 있는 `relevance` 블록을 추가하세요. 사용자는 관리자가 `pluginSuggestionMarketplaces`에 마켓플레이스를 나열할 때만 해당 제안을 봅니다. 신호 및 활성화 단계는 [플러그인 관련성](https://code.claude.com/docs/ko/plugins/relevance.md)을 참조하세요.

407 407 

408## 마켓플레이스가 할 수 없는 것 해결408## 마켓플레이스가 할 수 없는 것 해결

409 409 

Details

95 95 

96이러한 제어 중 어느 것도 mod를 샌드박스에 격리하지 않습니다. 허용된 mod는 사용자로서 실행되며, 파일, 프로세스, 네트워크에 대한 사용자의 액세스 권한을 가집니다.96이러한 제어 중 어느 것도 mod를 샌드박스에 격리하지 않습니다. 허용된 mod는 사용자로서 실행되며, 파일, 프로세스, 네트워크에 대한 사용자의 액세스 권한을 가집니다.

97 97 

98### 실행되지 않는 사용자 mod의 훅 알아보기

99 

100[기본 제공 가드](#know-what-happens-by-default)가 로드되는 환경에서는 사용자의 mod가 다음 이벤트 중 하나에 등록한 훅이 실행되지 않으며, `/plugin`이 해당 사용자에게 메모로 이를 알립니다. [`session.append`](https://code.claude.com/docs/ko/plugins/mods/reference#session) 행에서 `door`는 훅이 필터링 대상으로 지정한 저장된 행의 종류입니다.

101 

102| 훅 대상 | 이벤트 내용 |

103| :- | :- |

104| `classic.Stop`과 같은 [`classic.<Event>`](https://code.claude.com/docs/ko/plugins/mods/events#hook-the-settings-hook-events) | [설정 훅 이벤트](https://code.claude.com/docs/ko/hooks.md#hook-events) |

105| [`prompt.compose`](https://code.claude.com/docs/ko/plugins/mods/reference#prompts-and-what-claude-reads) | 시스템 프롬프트의 섹션 목록 |

106| `prompt.section` | 시스템 프롬프트의 섹션 하나 |

107| `prompt.context` | 대화의 첫 메시지와 함께 전송되는 컨텍스트 |

108| `prompt.attachment` | 리마인더처럼 Claude Code가 Claude를 위해 추가하는 메시지 |

109| `skill.prompt` | Claude를 위해 확장되는 스킬의 텍스트 |

110| `attribution.text` | 커밋 또는 풀 리퀘스트 attribution 텍스트 |

111| [`session.compact`](https://code.claude.com/docs/ko/plugins/mods/reference#session) | 대화 압축 |

112| `settings.read` | mod의 `$.settings.read` 호출과 같은 설정 읽기 |

113| `session.append{door=attachment}` | Claude Code가 Claude를 위해 추가하는 메시지의 저장된 행 |

114| `session.append{door=hook-context}` | 설정 훅에서 온 컨텍스트의 저장된 행 |

115| `session.append{door=compaction}` | 압축의 요약과 경계에 대한 저장된 행 |

116 

117가드는 [`tool.describe`](https://code.claude.com/docs/ko/plugins/mods/reference#tools)에서 조직 도구의 설명이나 스킬 텍스트의 저장된 행과 같은 일부 다른 경우에도 사용자의 훅을 건너뜁니다. 이러한 경우 `/plugin`에는 메모가 표시되지 않습니다. 다른 이벤트의 훅이 아무 동작도 하지 않는다면 [mod가 아무 동작도 하지 않는 이유 확인하기](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)를 참조하십시오.

118 

119메모는 플러그인 세부 정보와 `/plugin`의 **Errors** 탭에 나타납니다. 이 기능에는 Claude Code v2.1.299 이상이 필요합니다. 메모에는 다음 예시처럼 표의 각 훅이 mod가 등록한 이름 그대로 표시됩니다.

120 

121```text theme={null}

122Its hooks on classic.Stop, prompt.section do not run here: where an organization manages Claude Code, these events pass over the plugins you install

123Only a plugin that counts as your organization's own runs hooks on these events. An administrator sets that up in managed settings

124```

125 

126이러한 훅이 실행되도록 하려면 다음 두 가지 방법 중 하나로 관리형 설정을 변경하십시오.

127 

128* **mod를 조직의 mod로 실행하기**: [mod가 조직의 mod로 간주되도록 설치](#install-your-organizations-mods)합니다. 그러면 이러한 이벤트에 대한 해당 mod의 훅이 실행되고, 다른 모든 mod에 대해서는 가드가 계속 로드됩니다. 이 mod는 해당 설정을 받는 모든 사용자에게 켜지며, 각 머신에 배치하는 디렉터리에 있어야 합니다. `prependPlugins`에 mod를 나열하는 경우 목록에 `sec-default@builtin`을 유지하십시오.

129* **가드 제거하기**: `prependPlugins`에서 `sec-default@builtin`을 제외합니다. 빈 목록인 `"prependPlugins": []`만으로도 충분합니다. 이렇게 하면 이러한 이벤트뿐 아니라 가드 전체가 사라집니다. 그러면 사용자의 mod가 [가드가 원래 막는 동작](#know-what-happens-by-default)을 할 수 있게 되며, [가드의 옵션](#set-options-on-the-built-in-guard)도 적용되지 않습니다.

130 

131가드가 없는 목록을 [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md#fetch-and-caching-behavior)으로 배포하는 경우, 서버가 세션의 설정을 확인할 때까지 가드는 로드된 상태로 유지됩니다. v2.1.299 이상을 실행하는 머신에서 어느 쪽 변경이든 적용되었는지 확인하려면 해당 머신의 세션에서 `/plugin`을 열고 메모가 사라졌는지 확인하십시오.

132 

133`door` 필터가 없는 `session.append` 훅은 계속 실행되며 메모도 표시되지 않지만, 표에 있는 저장된 행은 해당 훅에 전달되지 않습니다.

134 

98## mod를 켜 둘지 결정하기135## mod를 켜 둘지 결정하기

99 136 

100mod는 Claude Code 내부에서 실행되므로 플러그인의 다른 구성 요소보다 더 많은 작업을 할 수 있습니다. mod는 모든 프롬프트와 도구 호출을 확인하고 변경할 수 있으며, 권한 프롬프트가 표시되기 전에 도구 호출을 허용하거나 거부할 수 있습니다.137mod는 Claude Code 내부에서 실행되므로 플러그인의 다른 구성 요소보다 더 많은 작업을 할 수 있습니다. mod는 모든 프롬프트와 도구 호출을 확인하고 변경할 수 있으며, 권한 프롬프트가 표시되기 전에 도구 호출을 허용하거나 거부할 수 있습니다.


142| `$.prompt.submit` | 프롬프트를 제출하며, 사용자가 직접 작성한 것처럼 보낼 수 있습니다 |179| `$.prompt.submit` | 프롬프트를 제출하며, 사용자가 직접 작성한 것처럼 보낼 수 있습니다 |

143| `$.session.send` | 다른 세션, 서브에이전트 또는 [팀원](https://code.claude.com/docs/ko/agent-teams.md)의 Claude가 읽는 메시지를 보냅니다 |180| `$.session.send` | 다른 세션, 서브에이전트 또는 [팀원](https://code.claude.com/docs/ko/agent-teams.md)의 Claude가 읽는 메시지를 보냅니다 |

144 181 

145`hooks:` 줄에서 [`tool.call`](https://code.claude.com/docs/ko/plugins/mods/reference#tools)과 [`prompt.submit`](https://code.claude.com/docs/ko/plugins/mods/reference#prompts-and-what-claude-reads)은 mod가 모든 도구 호출과 모든 프롬프트를 확인하고 변경할 수 있음을 의미합니다. [`session.append`](https://code.claude.com/docs/ko/plugins/mods/reference#session)는 mod가 대화의 각 행이 저장되기 전에 이를 다시 작성할 수 있음을 의미합니다. [`ui.render{component=AskUserQuestion}`](https://code.claude.com/docs/ko/plugins/mods/interface#change-what-claude-code-already-draws)는 Claude가 사용자에게 질문할 때 사용하는 대화 상자를 mod가 다시 그릴 수 있음을 의미합니다. `tool.check`는 권한 프롬프트가 표시되기 전에 mod가 도구 호출을 승인하거나 거부할 수 있음을 의미합니다. [기본 동작 알아보기](#know-what-happens-by-default)에서 mod의 응답보다 우선 적용되는 규칙과 훅을 확인할 수 있습니다.182`hooks:` 줄에서 [`tool.call`](https://code.claude.com/docs/ko/plugins/mods/reference#tools)과 [`prompt.submit`](https://code.claude.com/docs/ko/plugins/mods/reference#prompts-and-what-claude-reads)은 mod가 모든 도구 호출과 모든 프롬프트를 확인하고 변경할 수 있음을 의미합니다. [`session.append`](https://code.claude.com/docs/ko/plugins/mods/reference#session)는 [가드가 건너뛰는 행](#hooks-the-guard-passes-over)을 제외하고 mod가 대화의 각 행이 저장되기 전에 이를 다시 작성할 수 있음을 의미합니다. [`ui.render{component=AskUserQuestion}`](https://code.claude.com/docs/ko/plugins/mods/interface#change-what-claude-code-already-draws)는 Claude가 사용자에게 질문할 때 사용하는 대화 상자를 mod가 다시 그릴 수 있음을 의미합니다. `tool.check`는 권한 프롬프트가 표시되기 전에 mod가 도구 호출을 승인하거나 거부할 수 있음을 의미합니다. [기본 동작 알아보기](#know-what-happens-by-default)에서 mod의 응답보다 우선 적용되는 규칙과 훅을 확인할 수 있습니다.

146 183 

147## 허용 범위 선택하기184## 허용 범위 선택하기

148 185 

Details

377 377 

378### 설정 훅 이벤트 처리하기378### 설정 훅 이벤트 처리하기

379 379 

380설정 훅은 설정 파일에서 구성하는 command, HTTP, prompt, agent 훅입니다. `Stop`, `SessionEnd`, `PostToolUse` 같은 각 [설정 훅 이벤트](https://code.claude.com/docs/ko/hooks.md#hook-events)는 `classic.` 뒤에 설정 훅 이벤트 이름이 붙은 이벤트(예: `classic.Stop`)이기도 합니다. `e`는 설정 훅이 stdin으로 받는 JSON이며, `transcript_path`를 포함합니다.380설정 훅은 설정 파일에서 구성하는 command, HTTP, prompt, agent 훅입니다. `Stop`, `SessionEnd`, `PostToolUse` 같은 각 [설정 훅 이벤트](https://code.claude.com/docs/ko/hooks.md#hook-events)는 `classic.` 뒤에 설정 훅 이벤트 이름이 붙은 이벤트(예: `classic.Stop`)이기도 합니다. `e`는 설정 훅이 stdin으로 받는 JSON이며, `transcript_path`를 포함합니다. [기본 제공 가드](https://code.claude.com/docs/ko/plugins/mods/admin.md#know-what-happens-by-default)가 로드되는 환경에서는 [설치한 mod에 있는 이 이벤트들의 훅이 실행되지 않습니다](https://code.claude.com/docs/ko/plugins/mods/admin.md#hooks-the-guard-passes-over).

381 381 

382다음 훅은 Claude가 응답을 마칠 때 발생하는 `Stop`을 사용하여 세션의 트랜스크립트가 저장된 위치를 로그에 기록합니다.382다음 훅은 Claude가 응답을 마칠 때 발생하는 `Stop`을 사용하여 세션의 트랜스크립트가 저장된 위치를 로그에 기록합니다.

383 383 


425* **`next`를 호출하기 전에 실패한 경우**: Claude Code는 해당 훅을 건너뛰고 그 자리에서 다음 핸들러를 실행합니다425* **`next`를 호출하기 전에 실패한 경우**: Claude Code는 해당 훅을 건너뛰고 그 자리에서 다음 핸들러를 실행합니다

426* **`next`가 완료된 후에 실패한 경우**: 해당 결과가 그대로 유지되며, 어떤 것도 다시 실행되지 않습니다426* **`next`가 완료된 후에 실패한 경우**: 해당 결과가 그대로 유지되며, 어떤 것도 다시 실행되지 않습니다

427 427 

428mod, 이벤트, 이유를 나타내는 한 줄이 기록됩니다(예: `my-mod: tool.call hook skipped: threw Error: boom`). 이 내용을 확인하는 위치는 [mod가 아무 동작도 하지 않는 이유 찾기](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)에 나와 있듯이 세션에 따라 다릅니다. 그리기 결과가 유효성 검사를 통과하지 못한 `ui.render` 훅은 [요소로 트리 만들기](https://code.claude.com/docs/ko/plugins/mods/interface.md#build-a-tree-from-elements)에 설명된 대로 다른 방식으로 보고됩니다.428mod, 이벤트, 이유를 나타내는 한 줄이 기록됩니다(예: `my-mod: tool.call hook skipped: threw Error: boom`). 이 내용을 확인하는 위치는 [mod가 아무 동작도 하지 않는 이유 찾기](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)에 나와 있듯이 세션에 따라 다릅니다. [트리가 유효성 검사를 통과하지 못한](https://code.claude.com/docs/ko/plugins/mods/interface.md#build-a-tree-from-elements) `ui.render` 훅은 잘못된 형태의 결과를 반환한 훅으로 간주됩니다.

429 429 

430호출을 차단하는 훅이 실패 시 닫힌 상태(fail closed)가 되도록 하려면, 그 자리에서 대신 응답하는 `.catch` 오류 핸들러를 추가하십시오. 여기서 `guard`는 사용자의 훅 함수이며, 핸들러는 [`next.called`](https://code.claude.com/docs/ko/plugins/mods/reference#the-hook-function)를 검사하여 `guard`가 실패했을 때 이미 `next`를 호출했는지 확인합니다.430호출을 차단하는 훅이 실패 시 닫힌 상태(fail closed)가 되도록 하려면, 그 자리에서 대신 응답하는 `.catch` 오류 핸들러를 추가하십시오. 여기서 `guard`는 사용자의 훅 함수이며, 핸들러는 [`next.called`](https://code.claude.com/docs/ko/plugins/mods/reference#the-hook-function)를 검사하여 `guard`가 실패했을 때 이미 `next`를 호출했는지 확인합니다.

431 431 

Details

421Note: Type a note and press Enter421Note: Type a note and press Enter

422```422```

423 423 

424`rows`를 추가하면 필드에 여러 줄을 담을 수 있습니다. Enter는 여전히 제출 동작을 하며, Enter 앞에 백슬래시를 입력하면 새 줄이 시작됩니다. [터미널이 지원하는 경우](https://code.claude.com/docs/ko/terminal-config.md#enter-multiline-prompts) Shift+Enter로도 새 줄을 시작할 수 있습니다. 갤러리에서 [`rows`가 있는 필드](https://code.claude.com/docs/ko/plugins/mods/gallery#input)를 확인할 수 있습니다.

425 

424[인터페이스 갤러리](https://code.claude.com/docs/ko/plugins/mods/gallery.md)에서 대부분의 요소에 대한 샘플과 스크린샷을 확인할 수 있습니다. 다음 표는 모든 요소를 나열합니다.426[인터페이스 갤러리](https://code.claude.com/docs/ko/plugins/mods/gallery.md)에서 대부분의 요소에 대한 샘플과 스크린샷을 확인할 수 있습니다. 다음 표는 모든 요소를 나열합니다.

425 427 

426| 요소 | 그리는 내용 | 사용 위치 |428| 요소 | 그리는 내용 | 사용 위치 |


436 438 

437모듈이 `.tsx` 또는 `.jsx` 파일이라면 트리를 JSX로 작성할 수 있습니다. 먼저 `$.ui.resolve(e)`에서 요소를 구조 분해하십시오.439모듈이 `.tsx` 또는 `.jsx` 파일이라면 트리를 JSX로 작성할 수 있습니다. 먼저 `$.ui.resolve(e)`에서 요소를 구조 분해하십시오.

438 440 

439트리에 앱에 없는 요소, 요소가 받지 않는 prop, 또는 자식이 들어갈 수 없는 곳의 자식이 사용되면 Claude Code는 해당 영역을 자체 버전으로 그립니다.441그린 내용이 나타나지 않으면 트리에 요소가 받지 않는 prop이나 자식이 들어갈 수 없는 곳의 자식이 있는지 확인하십시오. 이러한 트리를 반환하는 훅은 [실패](https://code.claude.com/docs/ko/plugins/mods/events.md#handle-a-hook-that-fails)하며, [`hook skipped` 줄](https://code.claude.com/docs/ko/plugins/mods/troubleshoot#a-pane-or-band-is-empty)에 mod 이름과 트리가 위반한 규칙이 표시됩니다. 창에 있는 `Text`에 `bogusProp`이라는 prop이 있으면 해당 줄은 다음과 같습니다.

440 442 

441`--plugin-dir`로 시작한 세션에서는 `ui.render (Pane) refused: Text prop "bogusProp" is not allowed; the engine drew its own`과 같은 트랜스크립트 줄로 이를 알려 줍니다. [디버그 로그](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#read-the-debug-log)에는 같은 사유와 함께 `ui.render (Pane): a hook returned a tree that does not validate`로 기록됩니다. 세션에는 그 밖에 아무것도 표시되지 않으므로, 그린 내용이 나타나지 않는다면 해당 줄이나 로그를 확인하십시오.443```text theme={null}

444my-mod: ui.render hook skipped: returned the wrong shape (a tree Pane refuses: Text prop "bogusProp" is not allowed)

445```

442 446 

443### Desktop 앱과 VS Code의 `Link`447### Desktop 앱과 VS Code의 `Link`

444 448 


542| 키 | 동작 |546| 키 | 동작 |

543| :- | :- |547| :- | :- |

544| Tab | 다음 컨트롤로 이동합니다 |548| Tab | 다음 컨트롤로 이동합니다 |

545| Up 및 Down | 그린 내용이 들어맞는 동안에는 컨트롤 사이를 이동합니다. 창이나 밴드에 표시할 수 있는 것보다 많은 행이 있으면 스크롤합니다. |549| Up 및 Down | 그린 내용이 들어맞는 동안에는 컨트롤 사이를 이동합니다. 창이나 밴드에 표시할 수 있는 것보다 많은 행이 있으면 스크롤합니다. `Input`에서는 먼저 [필드의 행 사이를 이동](https://code.claude.com/docs/ko/plugins/mods/gallery.md#input)합니다. |

546| Enter | 포커스된 `Button`을 누르거나, 포커스된 `Input`을 제출하거나, `Select`에서 항목을 고릅니다 |550| Enter | 포커스된 `Button`을 누르거나, 포커스된 `Input`을 제출하거나, `Select`에서 항목을 고릅니다 |

547| 버튼의 단축키 | 해당 버튼을 누릅니다. `Input`에 포커스가 있는 동안에는 출력 가능한 모든 키가 필드로 전달됩니다. |551| 버튼의 단축키 | 해당 버튼을 누릅니다. `Input`에 포커스가 있는 동안에는 출력 가능한 모든 키가 필드로 전달됩니다. |

548| Page Up, Page Down, Home 및 End | 창이나 밴드에 표시할 수 있는 것보다 많은 행이 있으면 창이나 밴드를 스크롤합니다 |552| Page Up, Page Down, Home 및 End | 창이나 밴드에 표시할 수 있는 것보다 많은 행이 있으면 창이나 밴드를 스크롤합니다 |

Details

275| [`Link`](https://code.claude.com/docs/ko/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. [제한 사항](#limits)을 참조하십시오. | ✓ | ✓ | ✓ |275| [`Link`](https://code.claude.com/docs/ko/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. [제한 사항](#limits)을 참조하십시오. | ✓ | ✓ | ✓ |

276| [`Code`](https://code.claude.com/docs/ko/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |276| [`Code`](https://code.claude.com/docs/ko/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |

277| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |277| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |

278| [`Input`](https://code.claude.com/docs/ko/plugins/mods/interface#take-typed-input-and-draw-a-row-for-each-item) | `key`, `label`, `placeholder`, `value`, `submitLabel`, `onSubmit`, `onInput`, `autoFocus` | ✓ | ✓ | ✓ |278| [`Input`](https://code.claude.com/docs/ko/plugins/mods/interface#take-typed-input-and-draw-a-row-for-each-item) | `key`, `label`, `placeholder`, `value`, `submitLabel`, [`rows`](https://code.claude.com/docs/ko/plugins/mods/gallery#input), `onSubmit`, `onInput`, `autoFocus` | ✓ | ✓ | ✓ |

279| `Select` | `key`, `label`, `options`, `value`, `onSelect`, `autoFocus` | ✓ | ✓ | ✓ |279| `Select` | `key`, `label`, `options`, `value`, `onSelect`, `autoFocus` | ✓ | ✓ | ✓ |

280| `Svg` | 최대 131,072자의 SVG 마크업으로 된 `source`, `alt` 텍스트, `width`, `height`, `isInteractive` | | ✓ | ✓ |280| `Svg` | 최대 131,072자의 SVG 마크업으로 된 `source`, `alt` 텍스트, `width`, `height`, `isInteractive` | | ✓ | ✓ |

281| [`Client`](https://code.claude.com/docs/ko/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key`, `props`, `width`, `height`, `flexGrow` | ✓ | ✓ | |281| [`Client`](https://code.claude.com/docs/ko/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key`, `props`, `width`, `height`, `flexGrow` | ✓ | ✓ | |


333 333 

334`gap`, `padding` 또는 `margin`을 단계로 설정하면 해당 단계가 가로와 세로에 동시에 적용됩니다. 예를 들어 터미널과 VS Code 확장에서 `padding: 'md'`는 양옆 각각 두 셀, 위아래 각각 한 행입니다.334`gap`, `padding` 또는 `margin`을 단계로 설정하면 해당 단계가 가로와 세로에 동시에 적용됩니다. 예를 들어 터미널과 VS Code 확장에서 `padding: 'md'`는 양옆 각각 두 셀, 위아래 각각 한 행입니다.

335 335 

336단계 이름을 사용하려면 Claude Code v2.1.299 이상이 필요합니다. 이전 릴리스에서는 단계 이름을 사용하는 트리 대신 Claude Code가 [사이트의 자체 버전을 그립니다](https://code.claude.com/docs/ko/plugins/mods/interface.md#build-a-tree-from-elements).336단계 이름을 사용하려면 Claude Code v2.1.299 이상이 필요합니다. 이전 릴리스에서는 단계 이름을 사용하는 트리가 그려지지 않습니다.

337 337 

338### `Text` 타이포그래피 prop338### `Text` 타이포그래피 prop

339 339 


346| `mono` | 앱의 고정폭 서체를 요청하려면 `true` | 무시됨: 터미널은 항상 고정폭입니다 | 무시되므로 텍스트는 확장 자체의 서체를 유지합니다 |346| `mono` | 앱의 고정폭 서체를 요청하려면 `true` | 무시됨: 터미널은 항상 고정폭입니다 | 무시되므로 텍스트는 확장 자체의 서체를 유지합니다 |

347| `tabular` | 제자리에서 업데이트되는 숫자나 숫자 열이 정렬된 상태를 유지하도록 너비가 동일한 숫자를 요청하려면 `true` | 무시됨: 터미널의 숫자는 이미 한 셀 너비입니다 | 무시됨 |347| `tabular` | 제자리에서 업데이트되는 숫자나 숫자 열이 정렬된 상태를 유지하도록 너비가 동일한 숫자를 요청하려면 `true` | 무시됨: 터미널의 숫자는 이미 한 셀 너비입니다 | 무시됨 |

348 348 

349이 네 가지 prop을 사용하려면 Claude Code v2.1.299 이상이 필요합니다. 이전 릴리스에서는 `size`, `weight`, `mono` 또는 `tabular`를 설정한 트리 대신 Claude Code가 [사이트의 자체 버전을 그립니다](https://code.claude.com/docs/ko/plugins/mods/interface.md#build-a-tree-from-elements).349이 네 가지 prop을 사용하려면 Claude Code v2.1.299 이상이 필요합니다. 이전 릴리스에서는 `size`, `weight`, `mono` 또는 `tabular`를 설정한 트리가 그려지지 않습니다.

350 350 

351#### `bold`를 `weight`로 대체하기351#### `bold`를 `weight`로 대체하기

352 352 

353`Text`의 `bold`는 `weight`로 대체되어 deprecated되었지만 여전히 작동합니다. `weight`가 없는 `Text`에서 이를 대체하려면 `bold: true`를 `weight: 'semibold'`로 변경하십시오. Claude Code v2.1.299 이상에서 동일한 결과를 얻을 수 있습니다.353`Text`의 `bold`는 `weight`로 대체되어 deprecated되었지만 여전히 작동합니다. `weight`가 없는 `Text`에서 이를 대체하려면 `bold: true`를 `weight: 'semibold'`로 변경하십시오. Claude Code v2.1.299 이상에서 동일한 결과를 얻을 수 있습니다.

354 354 

355v2.1.299 이전 릴리스에서는 `weight`를 설정한 트리가 그려지지 않으며, 대신 Claude Code가 [사이트의 자체 버전을 그립니다](https://code.claude.com/docs/ko/plugins/mods/interface.md#build-a-tree-from-elements). `Text`에 `bold`와 `weight`를 모두 설정하면 `bold`는 효과가 없습니다.355v2.1.299 이전 릴리스에서는 `weight`를 설정한 트리가 그려지지 않습니다. `Text`에 `bold`와 `weight`를 모두 설정하면 `bold`는 효과가 없습니다.

356 356 

357## 제한357## 제한

358 358 

359훅 및 mod API 호출은 시간 및 크기 제한 내에서 실행됩니다. Claude Code는 시간 제한을 초과한 훅을 건너뜁니다.359훅 및 mod API 호출은 시간 및 크기 제한 내에서 실행됩니다. Claude Code는 시간 제한을 초과한 훅을 건너뜁니다. 중첩, 요소, `Raster` 셀 또는 `Image` 바이트 제한을 초과한 트리는 [그려지지 않습니다](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#a-pane-or-band-is-empty).

360 360 

361| 제한 | 값 |361| 제한 | 값 |

362| :- | :- |362| :- | :- |


372| `$.http.fetch` 호출 하나가 따르는 리디렉션 수 | 5 |372| `$.http.fetch` 호출 하나가 따르는 리디렉션 수 | 5 |

373| 훅의 `drop` 사유 또는 `config.set` `deny` 사유 | 4,096자. 이보다 긴 사유는 끝부분이 잘리며, drop 또는 deny는 그대로 적용됩니다. 잘라내기에는 Claude Code v2.1.292 이상이 필요하며, 이전 버전에서는 대신 훅이 [실패합니다](https://code.claude.com/docs/ko/plugins/mods/events.md#handle-a-hook-that-fails). |373| 훅의 `drop` 사유 또는 `config.set` `deny` 사유 | 4,096자. 이보다 긴 사유는 끝부분이 잘리며, drop 또는 deny는 그대로 적용됩니다. 잘라내기에는 Claude Code v2.1.292 이상이 필요하며, 이전 버전에서는 대신 훅이 [실패합니다](https://code.claude.com/docs/ko/plugins/mods/events.md#handle-a-hook-that-fails). |

374| 하나의 트리에 포함된 텍스트 | 처음 100,000자까지 그려집니다 |374| 하나의 트리에 포함된 텍스트 | 처음 100,000자까지 그려집니다 |

375| `Code`의 `language` 또는 `path`, `Select` 옵션의 `value`, `Client`의 `module` | 10,000자. 이보다 길면 Claude Code가 [해당 위치를 자체 버전으로 그립니다](https://code.claude.com/docs/ko/plugins/mods/interface.md#build-a-tree-from-elements). |375| `Code`의 `language` 또는 `path`, `Select` 옵션의 `value`, `Client`의 `module` | 10,000자. 이보다 길면 이를 반환한 `ui.render` 훅이 [실패합니다](https://code.claude.com/docs/ko/plugins/mods/events.md#handle-a-hook-that-fails). |

376| `Link`의 `href` | 2,048자. 이보다 긴 `href`가 있으면 트리 전체가 그려지지 않습니다. |376| `Link`의 `href` | 2,048자. 이보다 길면 이를 반환한 `ui.render` 훅이 [실패합니다](https://code.claude.com/docs/ko/plugins/mods/events.md#handle-a-hook-that-fails). |

377| 하나의 트리의 중첩 깊이 | 루트 요소 아래 32단계 |

378| 하나의 트리에 포함된 요소 및 텍스트 자식 | 20,000 |

379| 하나의 트리에 포함된 `Raster` 셀(각 `Raster`의 `columns` 곱하기 `rows`) | 262,144 |

380| 하나의 트리에 포함된 모든 `Image`의 PNG 또는 RGBA 바이트 | 2 MiB |

377| `$.store` | JSON 총 4 MiB |381| `$.store` | JSON 총 4 MiB |

378| `$.session.messages()` | 최신 4,096개 항목 |382| `$.session.messages()` | 최신 4,096개 항목 |

379| `$.ui.invalidate('ui.render')` 다시 그리기 | 초당 10회로 제한되며, 터미널에서는 표시 중인 창, 확장된 밴드, 프롬프트 아래의 힌트 줄에 대해 초당 30회로 제한됩니다. 그보다 빨리 들어오는 호출은 하나로 병합됩니다. |383| `$.ui.invalidate('ui.render')` 다시 그리기 | 초당 10회로 제한되며, 터미널에서는 표시 중인 창, 확장된 밴드, 프롬프트 아래의 힌트 줄에 대해 초당 30회로 제한됩니다. 그보다 빨리 들어오는 호출은 하나로 병합됩니다. |

Details

312| 메서드 | 기능 |312| 메서드 | 기능 |

313| :- | :- |313| :- | :- |

314| `press({ key: 'more' })` | 해당 키를 가진 `Button`을 누릅니다 |314| `press({ key: 'more' })` | 해당 키를 가진 `Button`을 누릅니다 |

315| `input({ key: 'new-note', text: 'buy milk' })` | 해당 키를 가진 `Input`에 텍스트를 입력하고 Enter를 누릅니다. 제출하지 않고 입력만 하려면 `kind: 'change'`를 추가합니다. |315| `input({ key: 'new-note', text: 'buy milk' })` | 해당 키를 가진 `Input`에 텍스트를 입력하고 Enter를 누릅니다. 제출하지 않고 입력만 하려면 `kind: 'change'`를 추가합니다. `rows`가 있는 필드의 경우 텍스트에 `\n`을 포함할 수 있습니다. |

316| `select({ key: 'size', value: 'large' })` | 해당 키를 가진 `Select`에서 해당 값을 가진 옵션을 선택합니다 |316| `select({ key: 'size', value: 'large' })` | 해당 키를 가진 `Select`에서 해당 값을 가진 옵션을 선택합니다 |

317| `find({ key: 'more' })` 또는 `find({ type: 'Text', text: 'Count: 2' })` | 처음으로 일치하는 요소를 `{ type, props, children }` 형태로 반환하거나, `undefined`를 반환합니다. `text`는 문자열 또는 정규 표현식일 수 있습니다. |317| `find({ key: 'more' })` 또는 `find({ type: 'Text', text: 'Count: 2' })` | 처음으로 일치하는 요소를 `{ type, props, children }` 형태로 반환하거나, `undefined`를 반환합니다. `text`는 문자열 또는 정규 표현식일 수 있습니다. |

318| `unmount()` | 그린 내용을 제거합니다 |318| `unmount()` | 그린 내용을 제거합니다 |

319 319 

320각 메서드는 핸들러가 완료된 후에 resolve되므로 바로 다음 줄에서 결과를 확인할 수 있습니다. `props`는 Claude Code가 해당 지점에 전달할 값으로 설정합니다. [렌더링 지점 표](https://code.claude.com/docs/ko/plugins/mods/reference.md#render-sites)에는 각 지점의 prop이 나열되어 있으며, [사용 중인 빌드의 타입](https://code.claude.com/docs/ko/plugins/mods/create.md#get-the-types-for-your-build)에서 해당 타입을 확인할 수 있습니다.320각 메서드는 핸들러가 완료된 후에 resolve되므로 바로 다음 줄에서 결과를 확인할 수 있습니다. `props`는 Claude Code가 해당 지점에 전달할 값으로 설정합니다. [렌더링 지점 표](https://code.claude.com/docs/ko/plugins/mods/reference.md#render-sites)에는 각 지점의 prop이 나열되어 있으며, [사용 중인 빌드의 타입](https://code.claude.com/docs/ko/plugins/mods/create.md#get-the-types-for-your-build)에서 해당 타입을 확인할 수 있습니다.

321 321 

322그리기 테스트는 훅이 반환하는 트리와 해당 트리가 그 앱에서 유효한지를 확인합니다. 앱이 이를 실제로 어떻게 그려 내는지는 확인하지 않으므로, 새 레이아웃은 실제 세션에서도 살펴보시기 바랍니다.322`surface`에 지정한 앱에서 유효하지 않은 [요소 트리](https://code.claude.com/docs/ko/plugins/mods/interface.md#build-a-tree-from-elements)를 잡아내려면 훅이 추가하는 요소를 `find`로 확인합니다. 테스트는 앱이 트리를 실제로 어떻게 그려 내는지는 확인하지 않으므로, 새 레이아웃은 실제 세션에서도 살펴보시기 바랍니다.

323 323 

324### `/clear` 후 그리기 테스트324### `/clear` 후 그리기 테스트

325 325 

Details

226 226 

227해당 mod를 찾으려면 [디버그 로그를 작성](#read-the-debug-log)하고 로그에서 `answered ui.render without next()`를 검색합니다. `other-mod (user) answered ui.render without next()` 같은 줄은 `next(e)`를 호출하지 않고 트리를 반환한 mod를 나타냅니다. 이 줄은 [렌더링 지점](https://code.claude.com/docs/ko/plugins/mods/reference.md#render-sites)을 명시하지 않으므로 pane 전용 mod도 나타날 수 있습니다. `next(e)`를 호출한 뒤 그 결과를 버리는 mod에 대해서는 줄이 기록되지 않으므로, 사용자의 mod보다 앞선 훅도 확인합니다.227해당 mod를 찾으려면 [디버그 로그를 작성](#read-the-debug-log)하고 로그에서 `answered ui.render without next()`를 검색합니다. `other-mod (user) answered ui.render without next()` 같은 줄은 `next(e)`를 호출하지 않고 트리를 반환한 mod를 나타냅니다. 이 줄은 [렌더링 지점](https://code.claude.com/docs/ko/plugins/mods/reference.md#render-sites)을 명시하지 않으므로 pane 전용 mod도 나타날 수 있습니다. `next(e)`를 호출한 뒤 그 결과를 버리는 mod에 대해서는 줄이 기록되지 않으므로, 사용자의 mod보다 앞선 훅도 확인합니다.

228 228 

229변경 후에는 mod 중 하나라도 유효성 검사를 통과하지 못하는 트리를 반환하면 band에 아무것도 표시되지 않습니다. 이유를 확인하려면 `--plugin-dir` 세션의 트랜스크립트에서 `ui.render (AbovePrompt) refused:` 줄을 찾거나 디버그 로그에서 `does not validate`를 검색합니다. band에 여러 mod가 있으면 어느 줄에도 mod 이름이 표시되지 않으므로 각 mod의 트리를 확인합니다.229mod의 band는 해당 mod의 훅이 반환한 트리가 유효성 검사를 통과하지 못할 때도 표시되지 않으며, 이때 다른 mod의 band는 그대로 유지됩니다. 어떤 mod인지와 그 이유를 확인하려면 [디버그 로그를 작성](#read-the-debug-log)하고 로그에서 [`ui.render hook skipped`](#a-pane-or-band-is-empty)를 검색합니다.

230 230 

231### pane 또는 band가 비어 있거나 Claude Code의 일반 콘텐츠를 표시함231### pane 또는 band가 비어 있거나 Claude Code의 일반 콘텐츠를 표시함

232 232 

233훅이 반환한 [트리](https://code.claude.com/docs/ko/plugins/mods/interface.md#build-a-tree-from-elements)가 유효성 검사를 통과하지 못했습니다. `--plugin-dir`을 사용하면 트랜스크립트에 `ui.render (Pane) refused:`와 함께 이유가 표시됩니다. 예를 들면 `first-mod: ui.render (Pane) refused: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse; the engine drew its own`과 같습니다. 디버그 로그에는 같은 이유와 함께 `a hook returned a tree that does not validate`가 기록됩니다.233훅이 반환한 [트리](https://code.claude.com/docs/ko/plugins/mods/interface.md#build-a-tree-from-elements)가 유효성 검사를 통과하지 못했습니다. [트랜스크립트 또는 디버그 로그](#find-out-why-a-mod-does-nothing)에 기록된 [`hook skipped`](#hook-skipped) 줄에 mod 이름과 이유가 표시됩니다. 다음은 pane 안의 `Box`에 대한 예입니다.

234 234 

235해당 줄에 표시된 이유를 확인합니다. 흔한 원인은 해당 요소가 받지 않는 prop을 사용했거나 앱에 없는 요소를 사용한 경우입니다.235```text theme={null}

236first-mod: ui.render hook skipped: returned the wrong shape (a tree Pane refuses: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse)

237```

238 

239이유에 명시된 내용을 수정합니다. 이유가 잘려 있으면 [디버그 로그를 작성](#read-the-debug-log)하고 로그에서 `a hook returned a tree that does not validate`를 검색하여 나머지 내용을 확인합니다.

240 

241해당 줄에 `ui.render (Pane) refused:`처럼 지점 이름 바로 뒤에 `refused:`가 표시된다면 [`ui.render` 줄에 `refused`가 표시됨](#ui-render-refused)을 참조하세요.

242 

243### `ui.render` 줄에 `refused`가 표시됨

244 

245`ui.render (<site>) refused:` 또는 [디버그 로그](#read-the-debug-log)의 `ui.render (<site>): the chain settled on a tree that does not validate`는 해당 지점의 [트리](https://code.claude.com/docs/ko/plugins/mods/interface.md#build-a-tree-from-elements)가 [크기 제한](https://code.claude.com/docs/ko/plugins/mods/reference.md#limits)을 초과했다는 의미입니다. 두 줄 모두 [렌더링 지점](https://code.claude.com/docs/ko/plugins/mods/reference.md#render-sites)을 명시한 다음 이유를 표시하며, 이유에는 해당 제한이 명시됩니다.

246 

247해당 지점에 그리는 mod의 [`ui.render`](https://code.claude.com/docs/ko/plugins/mods/reference#interface) 훅이 더 작은 트리를 반환하도록 변경하거나 작성자에게 변경을 요청합니다. 트랜스크립트 줄이 `hooks`로 시작하면 로드된 mod 중 둘 이상이 해당 지점에 대한 `ui.render` 훅을 가지고 있으므로 각 mod의 트리를 확인합니다. 여러 mod의 프롬프트 위 band가 32단계보다 깊은 트리로 중첩되는 경우 해당 줄은 다음과 같습니다.

248 

249```text theme={null}

250hooks: ui.render (AbovePrompt) refused: deeper than 32; nothing was drawn

251```

252 

253v2.1.307 이전에는 모든 지점에 대한 `refused:` 줄이 유효성 검사를 통과하지 못한 모든 트리를 보고했으며, `Pane`과 `AbovePrompt`의 경우 `; the engine drew its own`으로 끝났습니다. 해당 릴리스에서는 이유에 명시된 내용을 수정합니다.

236 254 

237### `needs a key`, `is drawn twice` 또는 `key each once`255### `needs a key`, `is drawn twice` 또는 `key each once`

238 256 


383hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render401hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render

384```402```

385 403 

386유효성 검사를 통과하지 못한 드로잉도 거부된 결과로 간주되어 줄이 기록됩니다. 로그에 직접 줄을 작성하려면 `$.ui.log('message', { to: 'debug' })`처럼 두 번째 인수와 함께 [`$.ui.log`](https://code.claude.com/docs/ko/plugins/mods/api#show-something-without-starting-a-turn)를 호출합니다. 두 번째 인수가 없으면 `$.ui.log`는 트랜스크립트에 흐린 줄을 추가합니다.404로그에 직접 줄을 작성하려면 `$.ui.log('message', { to: 'debug' })`처럼 두 번째 인수와 함께 [`$.ui.log`](https://code.claude.com/docs/ko/plugins/mods/api#show-something-without-starting-a-turn)를 호출합니다. 두 번째 인수가 없으면 `$.ui.log`는 트랜스크립트에 흐린 줄을 추가합니다.

387 405 

388`--plugin-dir`로 로드된 mod를 편집하는 동안, 트랜스크립트에는 다시 로드할 때마다 mod의 이름을 표시하고 해당 훅을 나열하는 줄이 나타납니다. 저장으로 인해 모듈이 손상되면 해당 줄에 이유와 함께 `reload failed, the previous version stays loaded:`가 표시되며, 마지막으로 정상 작동한 버전은 `/reload-plugins`를 실행할 때처럼 Claude Code가 다음에 플러그인을 다시 로드할 때까지 계속 실행됩니다.406`--plugin-dir`로 로드된 mod를 편집하는 동안, 트랜스크립트에는 다시 로드할 때마다 mod의 이름을 표시하고 해당 훅을 나열하는 줄이 나타납니다. 저장으로 인해 모듈이 손상되면 해당 줄에 이유와 함께 `reload failed, the previous version stays loaded:`가 표시되며, 마지막으로 정상 작동한 버전은 `/reload-plugins`를 실행할 때처럼 Claude Code가 다음에 플러그인을 다시 로드할 때까지 계속 실행됩니다.

389 407 

plugins/org.md +6 −2

Details

182| `blockedMarketplaces` | 마켓플레이스 소스의 차단 목록, 허용 목록 전에 확인됨 | 이미 일치하지 않는 소스에서 등록된 마켓플레이스를 차단하지 않습니다 |182| `blockedMarketplaces` | 마켓플레이스 소스의 차단 목록, 허용 목록 전에 확인됨 | 이미 일치하지 않는 소스에서 등록된 마켓플레이스를 차단하지 않습니다 |

183| `syncClaudeAiPlugins` | 각 사용자의 계정에서 [동기화된](https://code.claude.com/docs/ko/plugins/loading.md#synced-plugins) 플러그인을 Claude Code가 다운로드하고 로드하는 것을 중지하려면 `false`로 설정하세요. Claude Code v2.1.273 이상 필요 | 하나의 동기화된 플러그인을 끄지 않습니다. 그렇게 하려면 [`enabledPlugins`](https://code.claude.com/docs/ko/settings-reference#enabledplugins)에서 `"<name>@synced": false`를 설정하세요 |183| `syncClaudeAiPlugins` | 각 사용자의 계정에서 [동기화된](https://code.claude.com/docs/ko/plugins/loading.md#synced-plugins) 플러그인을 Claude Code가 다운로드하고 로드하는 것을 중지하려면 `false`로 설정하세요. Claude Code v2.1.273 이상 필요 | 하나의 동기화된 플러그인을 끄지 않습니다. 그렇게 하려면 [`enabledPlugins`](https://code.claude.com/docs/ko/settings-reference#enabledplugins)에서 `"<name>@synced": false`를 설정하세요 |

184| `enabledPlugins` | `true`는 강제 활성화하고, `false`는 모든 범위에서 차단하고 플러그인을 숨깁니다 | 마켓플레이스가 등록되거나 허용되지 않은 플러그인을 설치하지 않습니다 |184| `enabledPlugins` | `true`는 강제 활성화하고, `false`는 모든 범위에서 차단하고 플러그인을 숨깁니다 | 마켓플레이스가 등록되거나 허용되지 않은 플러그인을 설치하지 않습니다 |

185| `disableSideloadFlags` | `--plugin-dir`, `--plugin-url`, `--agents`, Agent SDK `plugins` 옵션 및 비 SDK `--mcp-config`를 시작 시 거부하고, [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/ko/env-vars#variables) 변수에 지정된 폴더를 같은 방식으로 거부합니다 | `.mcp.json`, `claude mcp add` 또는 SDK 제공 서버를 제한하지 않습니다. [`allowedMcpServers`](https://code.claude.com/docs/ko/managed-mcp)와 쌍을 이루세요 |185| `disableSideloadFlags` | `--plugin-dir`, `--plugin-url`, `--agents`, Agent SDK `plugins` 옵션 및 [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/ko/env-vars#variables) 변수에 지정된 폴더를 시작 시 거부하며, `--mcp-config`도 그 안의 모든 서버가 프로세스 내 `type: "sdk"` 항목이 아닌 한 거부합니다. Agent SDK 애플리케이션이 세션 도중 [`addPlugins`](https://code.claude.com/docs/ko/agent-sdk/typescript#load-more-plugin-folders-with-addplugins)로 추가하는 플러그인 폴더를 거부합니다 | `.mcp.json`, `claude mcp add` 또는 SDK 제공 서버를 제한하지 않습니다. [`allowedMcpServers`](https://code.claude.com/docs/ko/managed-mcp)와 쌍을 이루세요 |

186| `disableCommandPluginSources` | `command` 소스가 있는 플러그인이 설치, 업데이트 또는 로드되는 것을 차단합니다. `command` 소스는 플러그인 디렉토리가 머신에서 명령을 실행하여 생성되는 것입니다. 설정되지 않으면 `allowManagedHooksOnly`의 값을 사용합니다 | 다른 소스 유형에 영향을 주지 않습니다 |186| `disableCommandPluginSources` | `command` 소스가 있는 플러그인이 설치, 업데이트 또는 로드되는 것을 차단합니다. `command` 소스는 플러그인 디렉토리가 머신에서 명령을 실행하여 생성되는 것입니다. 설정되지 않으면 `allowManagedHooksOnly`의 값을 사용합니다 | 다른 소스 유형에 영향을 주지 않습니다 |

187| `allowManagedHooksOnly` | 실행할 수 있는 훅을 제한합니다. [`allowManagedHooksOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedhooksonly)를 참조하세요 | 사용자가 자신이 활성화한 플러그인의 훅을 신뢰하지 않습니다 |187| `allowManagedHooksOnly` | 실행할 수 있는 훅을 제한합니다. [`allowManagedHooksOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedhooksonly)를 참조하세요 | 사용자가 자신이 활성화한 플러그인의 훅을 신뢰하지 않습니다 |

188| `strictPluginOnlyCustomization` | 플러그인, 관리형 설정 또는 Claude Code의 기본 제공에서 오지 않는 스킬, 에이전트, 훅 및 MCP 서버를 차단합니다. 또한 [스킬 디렉토리 플러그인](#keep-skills-directory-plugins-loading)이 로드되지 않도록 합니다. 모든 네 가지 유형을 다루려면 `true`로 설정하거나 일부를 다루려면 `skills`, `agents`, `hooks` 및 `mcp` 값의 배열(예: `["skills", "hooks"]`)로 설정하세요 | 사용자가 설치하는 플러그인을 제한하지 않습니다. `strictKnownMarketplaces`와 쌍을 이루세요 |188| `strictPluginOnlyCustomization` | 플러그인, 관리형 설정 또는 Claude Code의 기본 제공에서 오지 않는 스킬, 에이전트, 훅 및 MCP 서버를 차단합니다. 또한 [스킬 디렉토리 플러그인](#keep-skills-directory-plugins-loading)이 로드되지 않도록 합니다. 모든 네 가지 유형을 다루려면 `true`로 설정하거나 일부를 다루려면 `skills`, `agents`, `hooks` 및 `mcp` 값의 배열(예: `["skills", "hooks"]`)로 설정하세요 | 사용자가 설치하는 플러그인을 제한하지 않습니다. `strictKnownMarketplaces`와 쌍을 이루세요 |

189| `pluginSuggestionMarketplaces` | 플러그인이 설치 제안으로 나타날 수 있는 마켓플레이스. [플러그인 권장](#recommend-plugins)을 참조하세요 | 기본 제공 팁에 영향을 주지 않습니다 |189| `pluginSuggestionMarketplaces` | 플러그인이 터미널에서 설치 제안으로 나타날 수 있는 마켓플레이스. [플러그인 권장](#recommend-plugins)을 참조하세요 | 기본 제공 팁에 영향을 주지 않습니다 |

190| `pluginTrustMessage` | 플러그인이 설치되기 전에 `/plugin`이 표시하는 신뢰 경고에 텍스트를 추가합니다 | 경고 자신의 텍스트를 변경하지 않습니다 |190| `pluginTrustMessage` | 플러그인이 설치되기 전에 `/plugin`이 표시하는 신뢰 경고에 텍스트를 추가합니다 | 경고 자신의 텍스트를 변경하지 않습니다 |

191| `allowedChannelPlugins` | 채널 메시지를 푸시할 수 있는 플러그인의 기본 목록을 대체합니다. `channelsEnabled: true` 필요 | [채널 플러그인이 실행할 수 있는 것 제한](https://code.claude.com/docs/ko/channels.md#restrict-which-channel-plugins-can-run)을 참조하세요 |191| `allowedChannelPlugins` | 채널 메시지를 푸시할 수 있는 플러그인의 기본 목록을 대체합니다. `channelsEnabled: true` 필요 | [채널 플러그인이 실행할 수 있는 것 제한](https://code.claude.com/docs/ko/channels.md#restrict-which-channel-plugins-can-run)을 참조하세요 |

192| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](https://code.claude.com/docs/ko/env-vars) | 대화형 터미널 세션이 공식 마켓플레이스를 자동 등록하는 것을 중지합니다 | 이미 등록된 마켓플레이스를 제거하지 않습니다. 허용 목록 및 차단 목록은 이 없이도 같은 자동 등록을 제어합니다. 이를 설정하여 시작한 머신은 설정을 해제한 후 자동 등록을 재개하지 않습니다 |192| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](https://code.claude.com/docs/ko/env-vars) | 대화형 터미널 세션이 공식 마켓플레이스를 자동 등록하는 것을 중지합니다 | 이미 등록된 마켓플레이스를 제거하지 않습니다. 허용 목록 및 차단 목록은 이 없이도 같은 자동 등록을 제어합니다. 이를 설정하여 시작한 머신은 설정을 해제한 후 자동 등록을 재개하지 않습니다 |


361 361 

362마켓플레이스의 제안은 사용자의 머신에 등록되어 있고, 관리되는 설정에서 `pluginSuggestionMarketplaces`에 해당 이름을 나열하고, 같은 정책에서 해당 소스를 선언할 때만 나타납니다. 소스를 마켓플레이스의 `extraKnownMarketplaces` 항목 또는 허용 목록 항목으로 선언하세요. 공식 마켓플레이스는 이름만 필요합니다. [관리되는 설정에서 제안 활성화](https://code.claude.com/docs/ko/plugins/relevance.md#enable-suggestions-in-managed-settings)를 참조하세요.362마켓플레이스의 제안은 사용자의 머신에 등록되어 있고, 관리되는 설정에서 `pluginSuggestionMarketplaces`에 해당 이름을 나열하고, 같은 정책에서 해당 소스를 선언할 때만 나타납니다. 소스를 마켓플레이스의 `extraKnownMarketplaces` 항목 또는 허용 목록 항목으로 선언하세요. 공식 마켓플레이스는 이름만 필요합니다. [관리되는 설정에서 제안 활성화](https://code.claude.com/docs/ko/plugins/relevance.md#enable-suggestions-in-managed-settings)를 참조하세요.

363 363 

364> [!NOTE]

365>

366> 클라우드 세션의 대화에서 Claude는 `pluginSuggestionMarketplaces` 설정 여부와 관계없이 플러그인을 제안할 수 있습니다. 이러한 제안을 끄려면 [플러그인 제안 끄기](https://code.claude.com/docs/ko/claude-code-on-the-web.md#turn-off-plugin-suggestions)를 참조하세요.

367 

364## 감사 및 검토368## 감사 및 검토

365 369 

366OpenTelemetry 이벤트 및 Analytics API는 플릿이 설치하고 실행하는 것을 알려줍니다.370OpenTelemetry 이벤트 및 Analytics API는 플릿이 설치하고 실행하는 것을 알려줍니다.

Details

8 8 

9Claude Code는 사용자의 세션이 해당 플러그인에 대해 정의한 신호와 일치할 때 조직의 마켓플레이스에서 플러그인 설치를 제안할 수 있습니다. 신호에는 작업 디렉토리, Claude가 읽은 파일, Claude가 실행한 명령이 포함됩니다. 플러그인의 `marketplace.json` 항목에 `relevance` 블록을 추가하여 신호를 정의합니다.9Claude Code는 사용자의 세션이 해당 플러그인에 대해 정의한 신호와 일치할 때 조직의 마켓플레이스에서 플러그인 설치를 제안할 수 있습니다. 신호에는 작업 디렉토리, Claude가 읽은 파일, Claude가 실행한 명령이 포함됩니다. 플러그인의 `marketplace.json` 항목에 `relevance` 블록을 추가하여 신호를 정의합니다.

10 10 

11마켓플레이스 운영자가 `relevance` 항목을 작성합니다. 그 다음 관리자가 관리 설정에서 마켓플레이스를 허용 목록에 추가합니다. 마켓플레이스가 허용 목록에 추가될 때까지 사용자는 마켓플레이스에서 제안을 볼 수 없습니다.11마켓플레이스 운영자가 `relevance` 항목을 작성합니다. 그 다음 관리자가 관리형 설정에서 마켓플레이스를 허용 목록에 추가합니다. 터미널에서는 마켓플레이스가 허용 목록에 추가될 때까지 사용자가 해당 마켓플레이스의 제안을 볼 수 없습니다.

12 12 

13> [!NOTE]13> [!NOTE]

14>14>

15> 다음 페이지에서 다루는 경우:15> 다음 페이지에서 다루는 경우:

16>16>

17> * **플러그인을 설치하려는 경우**: [플러그인 설치 및 관리](https://code.claude.com/docs/ko/plugins/install.md) 참조17> * **플러그인을 설치하려는 경우**: [플러그인 설치 및 관리](https://code.claude.com/docs/ko/plugins/install.md) 참조

18> * **제안을 끄려는 경우**: [플러그인 관련성 작동 방식 이해](#understand-how-plugin-relevance-works) 참조18> * **제안을 끄려는 경우**: [플러그인 관련성 작동 방식 이해](#understand-how-plugin-relevance-works) 참조, 클라우드 세션의 대화에서 Claude가 하는 제안의 경우 [플러그인 제안 끄기](https://code.claude.com/docs/ko/claude-code-on-the-web.md#turn-off-plugin-suggestions) 참조

19 19 

20역할에 해당하는 섹션부터 시작하세요:20역할에 해당하는 섹션부터 시작하세요:

21 21 


158 158 

159## 관리 설정에서 제안 활성화159## 관리 설정에서 제안 활성화

160 160 

161사용자는 관리자가 [관리 설정](https://code.claude.com/docs/ko/plugins/org.md)에서 마켓플레이스를 허용 목록에 추가할 때까지 마켓플레이스에서 제안을 볼 수 없습니다. 해당 `marketplace.json`이 `relevance`를 선언하더라도 마찬가지입니다.161터미널에서 사용자는 관리자가 [관리형 설정](https://code.claude.com/docs/ko/plugins/org.md)에서 마켓플레이스를 허용 목록에 추가할 때까지 해당 마켓플레이스의 제안을 볼 수 없습니다. 해당 `marketplace.json`이 `relevance`를 선언하더라도 마찬가지입니다.

162 162 

163마켓플레이스를 허용 목록에 추가하려면 관리 설정을 다음과 같이 편집합니다:163마켓플레이스를 허용 목록에 추가하려면 관리 설정을 다음과 같이 편집합니다:

164 164 

sandboxing.md +1 −1

Details

891 891 

892### `objects` 또는 `refs`라는 폴더가 명령 후 사라짐892### `objects` 또는 `refs`라는 폴더가 명령 후 사라짐

893 893 

894세션 중에 나타난 최상위 `objects` 또는 `refs` 폴더는 [샌드박싱된 명령이 끝난 후 삭제될](#when-the-sandbox-deletes-head-objects-or-refs) 수 있습니다. 명령, Claude, 사용자 중 누가 만들었는지는 관계없습니다. 폴더를 유지하려면 폴더 안에 무언가를 남겨 둡니다. 세션 중에 `HEAD` 파일이나 심볼릭 링크가 최상위에 있었다면 이를 다른 곳으로 옮긴 다음, 그곳에서 열려 있는 모든 Claude Code 세션을 다시 시작합니다.894세션 중에 나타난 최상위 `objects` 또는 `refs` 폴더는 [샌드박싱된 명령이 끝난 후 삭제될](#when-the-sandbox-deletes-head-objects-or-refs) 수 있습니다. 명령, Claude, 사용자 중 누가 만들었는지는 관계없습니다. 폴더를 유지하려면 폴더 안에 무언가를 남겨 둡니다. 세션 중에 `HEAD` 파일이나 심볼릭 링크가 최상위에 있었다면 이를 다른 곳으로 옮긴 다음, 해당 작업 디렉터리에서 열려 있는 모든 Claude Code 세션을 다시 시작합니다.

895 895 

896v2.1.307 이전에는 `HEAD`가 없고 폴더 안에 무언가가 있어도 폴더가 삭제되었습니다. 이전 버전을 사용 중이라면 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)합니다.896v2.1.307 이전에는 `HEAD`가 없고 폴더 안에 무언가가 있어도 폴더가 삭제되었습니다. 이전 버전을 사용 중이라면 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)합니다.

897 897 

Details

26 26 

27개발자가 클라우드 세션을 시작하면, 세션 시작 UI는 Anthropic 호스팅 환경과 조직이 생성한 환경을 나열하는 환경 선택기를 표시합니다. 조직의 환경을 선택하면, Anthropic의 제어 평면이 세션을 환경의 큐에 배치하고, 러너가 이를 요청하고, 개발자가 선택한 저장소를 복제하고, 호스트에서 Claude Code 프로세스를 시작하여 실행합니다. 러너는 구성한 자격 증명으로 git 호스트에 인증합니다. [git 구성](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#configure-git)에서 옵션을 다룹니다. 세션은 네트워크 내부에서 내부 서비스에 도달하며, 내부인 경우 git 호스트도 동일한 방식으로 도달합니다. Anthropic으로의 트래픽, 즉 큐 폴링, 세션의 이벤트 스트림, 그리고 기본적으로 모델 추론은 `api.anthropic.com`으로의 아웃바운드 HTTPS이며, 세션이 도달할 수 있는 추가 호스트의 짧은 목록은 [네트워크 요구 사항](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#network-requirements)에 있습니다. Anthropic은 절대 네트워크에 연결하지 않습니다.27개발자가 클라우드 세션을 시작하면, 세션 시작 UI는 Anthropic 호스팅 환경과 조직이 생성한 환경을 나열하는 환경 선택기를 표시합니다. 조직의 환경을 선택하면, Anthropic의 제어 평면이 세션을 환경의 큐에 배치하고, 러너가 이를 요청하고, 개발자가 선택한 저장소를 복제하고, 호스트에서 Claude Code 프로세스를 시작하여 실행합니다. 러너는 구성한 자격 증명으로 git 호스트에 인증합니다. [git 구성](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#configure-git)에서 옵션을 다룹니다. 세션은 네트워크 내부에서 내부 서비스에 도달하며, 내부인 경우 git 호스트도 동일한 방식으로 도달합니다. Anthropic으로의 트래픽, 즉 큐 폴링, 세션의 이벤트 스트림, 그리고 기본적으로 모델 추론은 `api.anthropic.com`으로의 아웃바운드 HTTPS이며, 세션이 도달할 수 있는 추가 호스트의 짧은 목록은 [네트워크 요구 사항](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#network-requirements)에 있습니다. Anthropic은 절대 네트워크에 연결하지 않습니다.

28 28 

29![자체 호스팅 환경의 아키텍처 다이어그램: 네트워크 경계에는 러너, 그 내부의 두 Claude Code 세션 프로세스, 그리고 git 호스트가 포함되어 있으며, api.anthropic.com 외부에는 큐, 세션 스트림, 추론이 있습니다. 러너는 큐를 폴링하고 git 호스트에 도달하며, 각 세션 프로세스는 자신의 스트림, 추론, git 연결을 열고, 모든 연결은 네트워크에서 아웃바운드이며 인바운드는 없습니다.](https://mintcdn.com/claude-code/Y0sJ2uDoOVbOVZrQ/images/self-hosted-network-paths.svg?fit=max\&auto=format\&n=Y0sJ2uDoOVbOVZrQ\&q=85\&s=8056103fc1c5564c7f0ef219d260b99d)29![자체 호스팅 환경의 아키텍처 다이어그램: 네트워크 경계에는 러너, 그 내부의 두 Claude Code 세션 프로세스, 그리고 git 호스트가 포함되어 있으며, 경계 외부의 api.anthropic.com에는 큐, 세션 스트림, 추론이 있습니다. 러너는 큐를 폴링하고 git 호스트에 도달하며, 각 세션 프로세스는 자신의 스트림, 추론, git 연결을 열고, 모든 연결은 네트워크에서 아웃바운드이며 인바운드는 없습니다.](https://mintcdn.com/claude-code/Y0sJ2uDoOVbOVZrQ/images/self-hosted-network-paths.svg?fit=max\&auto=format\&n=Y0sJ2uDoOVbOVZrQ\&q=85\&s=8056103fc1c5564c7f0ef219d260b99d)

30 30 

31다이어그램의 두 Claude Code 상자는 세션 프로세스입니다: 한 러너가 동시에 두 세션을 실행하며, 구성된 용량까지입니다. 러너는 한 번에 하나의 [소유자](#key-concepts)를 제공하며 첫 번째 세션을 요청할 때 해당 소유자에게 잠깁니다. 따라서 체크아웃된 코드는 소유자 간에 혼합되지 않습니다. [러너 수명 주기](#runner-lifecycle)에서 규칙을 다룹니다.31다이어그램의 두 Claude Code 상자는 세션 프로세스입니다: 한 러너가 동시에 두 세션을 실행하며, 구성된 용량까지입니다. 러너는 한 번에 하나의 [소유자](#key-concepts)를 제공하며 첫 번째 세션을 요청할 때 해당 소유자에게 잠깁니다. 따라서 체크아웃된 코드는 소유자 간에 혼합되지 않습니다. [러너 수명 주기](#runner-lifecycle)에서 규칙을 다룹니다.

32 32 

Details

22* **호스트의 GitHub 자격 증명을 세션에서 분리**: Claude는 세션이 읽을 수 있는 모든 GitHub 자격 증명을 해당 자격 증명이 부여하는 모든 액세스 권한으로 사용할 수 있습니다. 러너 호스트 자체의 광범위한 범위를 가진 GitHub 자격 증명을 세션이 읽을 수 있는 곳에 두지 마세요. 이러한 자격 증명은 개인 액세스 토큰, `gh auth login`이 계정에 대해 저장하는 토큰, 또는 러너 환경의 `GH_TOKEN`일 수 있습니다.22* **호스트의 GitHub 자격 증명을 세션에서 분리**: Claude는 세션이 읽을 수 있는 모든 GitHub 자격 증명을 해당 자격 증명이 부여하는 모든 액세스 권한으로 사용할 수 있습니다. 러너 호스트 자체의 광범위한 범위를 가진 GitHub 자격 증명을 세션이 읽을 수 있는 곳에 두지 마세요. 이러한 자격 증명은 개인 액세스 토큰, `gh auth login`이 계정에 대해 저장하는 토큰, 또는 러너 환경의 `GH_TOKEN`일 수 있습니다.

23 * **[Anthropic 관리형 git](#use-the-anthropic-git-proxy) 사용 시**: 이러한 자격 증명이 있으면 Claude는 Anthropic 관리형 git을 거치지 않고 GitHub에 직접 접근합니다.23 * **[Anthropic 관리형 git](#use-the-anthropic-git-proxy) 사용 시**: 이러한 자격 증명이 있으면 Claude는 Anthropic 관리형 git을 거치지 않고 GitHub에 직접 접근합니다.

24 * **Anthropic 관리형 git 미사용 시**: [이미지에 git 구성 포함](#ship-git-config-in-your-image)에서 설명하는 만큼 범위를 엄격하게 제한하면 클론 자격 증명을 이미지에 유지할 수 있습니다.24 * **Anthropic 관리형 git 미사용 시**: [이미지에 git 구성 포함](#ship-git-config-in-your-image)에서 설명하는 만큼 범위를 엄격하게 제한하면 클론 자격 증명을 이미지에 유지할 수 있습니다.

25* **세션 실행 호스트에서 환경 시크릿 유지**: 환경 시크릿은 러너를 등록하고 환경에 대기 중인 모든 세션을 선택할 수 있습니다. 고정 플릿에서는 모든 러너 호스트에 있으며, 모든 세션의 코드가 시크릿 파일을 읽을 수 있습니다. [온디맨드 러너](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#on-demand-runners)를 선호하세요. 여기서 시크릿은 사용자 코드를 실행하지 않는 오케스트레이터 호스트에 유지되며, 각 러너는 정확히 하나의 러너를 등록하는 단일 사용 작업 주문을 받습니다. 고정 플릿에서는 환경 시크릿 파일을 모든 세션이 읽을 수 있는 것으로 취급하고 의심되는 세션 손상 후 시크릿을 회전하세요.25* **세션 실행 호스트에서 환경 시크릿 분리**: 환경 시크릿은 러너를 등록하고 환경에 대기 중인 모든 세션을 선택할 수 있습니다. 고정 플릿에서는 모든 러너 호스트에 있으며, 모든 세션의 코드가 시크릿 파일을 읽을 수 있습니다. [온디맨드 러너](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#on-demand-runners)를 선호하세요. 여기서 시크릿은 사용자 코드를 실행하지 않는 오케스트레이터 호스트에 유지되며, 각 러너는 정확히 하나의 러너를 등록하는 단일 사용 작업 주문을 받습니다. 고정 플릿에서는 환경 시크릿 파일을 모든 세션이 읽을 수 있는 것으로 취급하고 의심되는 세션 손상 후 시크릿을 회전하세요.

26* **기본 거부 네트워크 이그레스**: 모든 환경에서 네트워크 경계에서 러너 및 세션 컨테이너 아웃바운드 트래픽을 제한하세요. [기본 거부 이그레스](#default-deny-egress)에서 허용할 항목과 이유를 다룹니다.26* **기본 거부 네트워크 이그레스**: 모든 환경에서 네트워크 경계에서 러너 및 세션 컨테이너 아웃바운드 트래픽을 제한하세요. [기본 거부 이그레스](#default-deny-egress)에서 허용할 항목과 이유를 다룹니다.

27* **최소 권한 호스트 IAM**: 러너 호스트에 연결된 컴퓨팅 ID(예: 인스턴스 프로필 또는 노드 서비스 계정)는 러너 자체가 필요한 것만 부여해야 합니다. 세션은 호스트의 ID를 상속하는 대신 래퍼 스크립트를 통해 자신의 자격증명을 얻어야 합니다.27* **최소 권한 호스트 IAM**: 러너 호스트에 연결된 컴퓨팅 ID(예: 인스턴스 프로필 또는 노드 서비스 계정)는 러너 자체가 필요한 것만 부여해야 합니다. 세션은 호스트의 ID를 상속하는 대신 래퍼 스크립트를 통해 자신의 자격증명을 얻어야 합니다.

28* **세션에서 클라우드 메타데이터 엔드포인트 차단**: 세션을 호스트 ID에서 벗어나게 유지하려면 클라우드 메타데이터 엔드포인트에 대한 액세스를 차단해야 하며, 서브넷 수준 이그레스 정책은 링크 로컬 메타데이터 트래픽을 가로채지 않으므로 컨테이너 자체에서 차단하세요:28* **세션에서 클라우드 메타데이터 엔드포인트 차단**: 세션을 호스트 ID에서 벗어나게 유지하려면 클라우드 메타데이터 엔드포인트에 대한 액세스를 차단해야 하며, 서브넷 수준 이그레스 정책은 링크 로컬 메타데이터 트래픽을 가로채지 않으므로 컨테이너 자체에서 차단하세요:


399러너는 `--capacity`를 사용하여 한 번에 실행하는 세션 수를 제한합니다. CPU 또는 메모리를 세션 간에 나누지 않으므로 러너의 세션은 컨테이너의 CPU 및 메모리를 공유합니다. 한 세션의 메모리 사용으로 다른 세션이 종료되지 않도록 하려면 [자체 메모리 제한](#give-each-session-its-own-memory-limit)을 둔 러너당 한 세션을 실행하세요.399러너는 `--capacity`를 사용하여 한 번에 실행하는 세션 수를 제한합니다. CPU 또는 메모리를 세션 간에 나누지 않으므로 러너의 세션은 컨테이너의 CPU 및 메모리를 공유합니다. 한 세션의 메모리 사용으로 다른 세션이 종료되지 않도록 하려면 [자체 메모리 제한](#give-each-session-its-own-memory-limit)을 둔 러너당 한 세션을 실행하세요.

400 400 

401* **러너당 한 세션**: 각 컨테이너에 한 세션의 값을 제공하세요. `--capacity 1`에서 이 크기 조정을 사용하세요. [강화 섹션](#harden-your-deployment)이 권장하고, [온디맨드 러너](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#on-demand-runners)의 경우, 값을 [`spawn-runner` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#the-spawn-runner-hook)이 제출하는 워크로드(예: Kubernetes Job의 pod 템플릿)에 설정합니다.401* **러너당 한 세션**: 각 컨테이너에 한 세션의 값을 제공하세요. `--capacity 1`에서 이 크기 조정을 사용하세요. [강화 섹션](#harden-your-deployment)이 권장하고, [온디맨드 러너](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#on-demand-runners)의 경우, 값을 [`spawn-runner` 훅](https://code.claude.com/docs/ko/self-hosted-environments-configuration#the-spawn-runner-hook)이 제출하는 워크로드(예: Kubernetes Job의 pod 템플릿)에 설정합니다.

402* **러너당 여러 세션**: `--capacity` 1 이상에서 한 세션의 값에 용량을 곱하세요. 컨테이너에서 한 번에 최대 그 많은 세션이 실행될 수 있기 때문입니다. [Kubernetes](#kubernetes) 및 [Docker Compose](#docker-compose) 레시피는 CPU 또는 메모리 제한 없이 `--capacity 4`를 실행하므로 실행하는 용량에 맞게 크기가 조정된 제한을 추가하세요.402* **러너당 여러 세션**: `--capacity`가 1보다 클 때 한 세션의 값에 용량을 곱하세요. 컨테이너에서 한 번에 최대 그 많은 세션이 실행될 수 있기 때문입니다. [Kubernetes](#kubernetes) 및 [Docker Compose](#docker-compose) 레시피는 CPU 또는 메모리 제한 없이 `--capacity 4`를 실행하므로 실행하는 용량에 맞게 크기가 조정된 제한을 추가하세요.

403* **한 호스트의 여러 러너 컨테이너**: 각 러너는 `--capacity`에 대해 자신의 세션만 계산하므로 러너 용량의 합계에 맞게 호스트 크기를 조정하세요:403* **한 호스트의 여러 러너 컨테이너**: 각 러너는 `--capacity`에 대해 자신의 세션만 계산하므로 러너 용량의 합계에 맞게 호스트 크기를 조정하세요:

404 404 

405 * **메모리**: 한 세션의 메모리에 합계를 곱한 다음 호스트 자체 프로세스가 사용하는 양을 더합니다405 * **메모리**: 한 세션의 메모리에 합계를 곱한 다음 호스트 자체 프로세스가 사용하는 양을 더합니다


414* **컨테이너에서**: 컨테이너당 하나의 러너를 실행하고 Kubernetes의 `limits.memory`, Docker의 `--memory`, Compose 파일의 `mem_limit`와 같은 컨테이너의 메모리 제한을 설정하세요. 호스트 자체의 메모리가 부족해지면 커널이 호스트의 어디에서든 프로세스를 종료할 수 있으므로 컨테이너 제한의 합계를 호스트 메모리 미만으로 유지하세요.414* **컨테이너에서**: 컨테이너당 하나의 러너를 실행하고 Kubernetes의 `limits.memory`, Docker의 `--memory`, Compose 파일의 `mem_limit`와 같은 컨테이너의 메모리 제한을 설정하세요. 호스트 자체의 메모리가 부족해지면 커널이 호스트의 어디에서든 프로세스를 종료할 수 있으므로 컨테이너 제한의 합계를 호스트 메모리 미만으로 유지하세요.

415* **컨테이너 없이 systemd에서**: 러너의 유닛에 `MemoryMax`를 설정하고 호스트당 하나의 러너를 실행하세요. 한 파일 시스템에서 [동일한 `--base-dir`를 사용하는](#keep-the-base-directory-and-capacity-identical-across-runners) 러너는 그곳에 클론된 저장소를 공유하기 때문입니다. 예를 들어 `checkout` 훅 없이 `--capacity 1`에서 한 저장소에 대한 이들의 세션이 동시에 같은 체크아웃에서 작업할 수 있습니다. 한 호스트에서 여러 러너를 실행하려면 각각에 컨테이너를 제공하세요.415* **컨테이너 없이 systemd에서**: 러너의 유닛에 `MemoryMax`를 설정하고 호스트당 하나의 러너를 실행하세요. 한 파일 시스템에서 [동일한 `--base-dir`를 사용하는](#keep-the-base-directory-and-capacity-identical-across-runners) 러너는 그곳에 클론된 저장소를 공유하기 때문입니다. 예를 들어 `checkout` 훅 없이 `--capacity 1`에서 한 저장소에 대한 이들의 세션이 동시에 같은 체크아웃에서 작업할 수 있습니다. 한 호스트에서 여러 러너를 실행하려면 각각에 컨테이너를 제공하세요.

416 416 

417컨테이너 또는 유닛이 메모리 제한에 도달하면 커널은 그 내부의 프로세스만 종료합니다. `--capacity`를 1 이상으로 설정하면 세션들이 하나의 제한을 공유합니다. 세션들이 제한에 도달하면 커널은 어떤 프로세스를 종료할지 세션 단위로 선택하지 않으므로 한 세션의 메모리 사용으로 다른 세션이 종료될 수 있습니다.417컨테이너 또는 유닛이 메모리 제한에 도달하면 커널은 그 내부의 프로세스만 종료합니다. `--capacity`를 1보다 크게 설정하면 세션들이 하나의 제한을 공유합니다. 세션들이 제한에 도달하면 커널은 어떤 프로세스를 종료할지 세션 단위로 선택하지 않으므로 한 세션의 메모리 사용으로 다른 세션이 종료될 수 있습니다.

418 418 

419Kubernetes에서는 kubelet의 `singleProcessOOMKill` 설정의 어느 값으로도 세션을 분리할 수 없습니다. [래퍼 스크립트](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#wrapper-scripts)의 메모리 `ulimit`으로도 세션의 총 메모리를 제한할 수 없습니다. 커널은 `ulimit -v`와 같은 값을 각 프로세스에 개별적으로 적용합니다.419Kubernetes에서는 kubelet의 `singleProcessOOMKill` 설정의 어느 값으로도 세션을 분리할 수 없습니다. [래퍼 스크립트](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#wrapper-scripts)의 메모리 `ulimit`으로도 세션의 총 메모리를 제한할 수 없습니다. 커널은 `ulimit -v`와 같은 값을 각 프로세스에 개별적으로 적용합니다.

420 420 


794 세션은 이 값을 상속하므로 세션에 다시 설정할 필요는 없습니다. Git은 이 값을 읽지 않습니다. 해당 프록시를 통한 클론의 경우 [`GIT_SSL_CAINFO`](#trust-a-private-certificate-authority-with-anthropic-managed-git)도 설정합니다.794 세션은 이 값을 상속하므로 세션에 다시 설정할 필요는 없습니다. Git은 이 값을 읽지 않습니다. 해당 프록시를 통한 클론의 경우 [`GIT_SSL_CAINFO`](#trust-a-private-certificate-authority-with-anthropic-managed-git)도 설정합니다.

795* **시작 스크립트가 `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`에서는 스크립트가 종료됩니다.795* **시작 스크립트가 `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`에서는 스크립트가 종료됩니다.

796 796 

797 오류를 없애려면 러너 또는 오케스트레이터의 출력을 스크립트의 사용자가 생성할 수 있는 파일로 보냅니다. 이를 시작하는 명령에서 백그라운드로 보내는 `&`가 있다면 그 앞에 `>> "$HOME/claude-runner.log" 2>&1`을 추가합니다.797 오류를 없애려면 러너 또는 오케스트레이터의 출력을 스크립트의 사용자가 생성할 수 있는 파일로 보냅니다. 이를 시작하는 명령에 `>> "$HOME/claude-runner.log" 2>&1`을 추가하되, 백그라운드로 보내는 `&`가 있다면 그 앞에 둡니다:

798 798 

799 ```bash theme={null}799 ```bash theme={null}

800 claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret >> "$HOME/claude-runner.log" 2>&1800 claude self-hosted-runner --environment-secret-file /etc/claude/environment-secret >> "$HOME/claude-runner.log" 2>&1

Details

92| `--hook-concurrency <n>` | `4` | 병렬로 실행되는 최대 `spawn-runner` 훅입니다. 또한 폴링당 청구되는 스폰 요청 수를 제한합니다. 오케스트레이터는 자신이 시작한 모든 훅이 완료된 후에만 새 스폰 요청을 확인하므로, 느린 훅 하나가 해당 오케스트레이터의 다음 훅을 지연시킵니다. |92| `--hook-concurrency <n>` | `4` | 병렬로 실행되는 최대 `spawn-runner` 훅입니다. 또한 폴링당 청구되는 스폰 요청 수를 제한합니다. 오케스트레이터는 자신이 시작한 모든 훅이 완료된 후에만 새 스폰 요청을 확인하므로, 느린 훅 하나가 해당 오케스트레이터의 다음 훅을 지연시킵니다. |

93| `--hook-timeout <sec>` | `60` | 이 많은 초 후 훅의 프로세스 트리를 종료합니다. 타임아웃과 5초 킬 유예는 `--expected-spawn-seconds` 아래에 있어야 합니다. 오케스트레이터는 시작 시 이를 적용합니다. |93| `--hook-timeout <sec>` | `60` | 이 많은 초 후 훅의 프로세스 트리를 종료합니다. 타임아웃과 5초 킬 유예는 `--expected-spawn-seconds` 아래에 있어야 합니다. 오케스트레이터는 시작 시 이를 적용합니다. |

94| `--expected-spawn-seconds <sec>` | `120` | 오케스트레이터가 스폰 요청을 받은 시점부터 러너가 등록될 때까지의 예상 p99 시간이며, 플랫폼에서 용량을 기다리는 시간도 포함됩니다. 서버는 10\~3600 범위를 적용합니다. 모든 폴링에서 서버 측 임차로 전송됩니다. 경과하기 전에 러너가 등록되지 않으면 세션이 새 주문 ID로 다시 제공됩니다. 모든 복제본은 이 값을 공유해야 합니다. |94| `--expected-spawn-seconds <sec>` | `120` | 오케스트레이터가 스폰 요청을 받은 시점부터 러너가 등록될 때까지의 예상 p99 시간이며, 플랫폼에서 용량을 기다리는 시간도 포함됩니다. 서버는 10\~3600 범위를 적용합니다. 모든 폴링에서 서버 측 임차로 전송됩니다. 경과하기 전에 러너가 등록되지 않으면 세션이 새 주문 ID로 다시 제공됩니다. 모든 복제본은 이 값을 공유해야 합니다. |

95| `--min-idle <n>` | `0` | 대기 중인 러너를 사전에 생성하여 최소 N개의 유휴 세션 슬롯을 무료로 유지합니다. `0`은 사전 워밍을 비활성화합니다. 러너의 `--exit-if-unused-min`과 쌍을 이루어 잉여 대기 러너가 자신을 회수하도록 합니다. |95| `--min-idle <n>` | `0` | 대기 중인 러너를 사전에 생성하여 최소 N개의 유휴 세션 슬롯을 비어 있는 상태로 유지합니다. `0`은 사전 워밍을 비활성화합니다. 러너의 `--exit-if-unused-min`과 함께 사용하여 잉여 대기 러너가 자신을 회수하도록 하세요. |

96| `--debug-dir <path>` | 설정되지 않음 | 각 스폰 요청의 작업 주문 및 훅 stderr을 디스크에 씁니다. 디버그 전용이며 프로덕션에서 설정하지 마세요. |96| `--debug-dir <path>` | 설정되지 않음 | 각 스폰 요청의 작업 주문 및 훅 stderr을 디스크에 씁니다. 디버그 전용이며 프로덕션에서 설정하지 마세요. |

97 97 

98### SCM 커넥터 플래그98### SCM 커넥터 플래그

Details

170 170 

171**캐시된 설정으로 후속 시작:**171**캐시된 설정으로 후속 시작:**

172 172 

173* 캐시된 설정은 캐시된 `modelPricing` 및 `managedMcpServers` 값과 Claude Code가 서버가 페이로드를 확인할 때까지 보류하는 환경 변수를 제외하고 시작 시 즉시 적용됩니다.173* 캐시된 설정은 시작 시 즉시 적용됩니다. 단, 캐시된 `modelPricing` 및 `managedMcpServers` 값, Claude Code가 서버가 페이로드를 확인할 때까지 보류하는 환경 변수, 캐시된 플러그인 목록에 의한 [기본 제공 가드](https://code.claude.com/docs/ko/plugins/mods/admin.md#know-what-happens-by-default)의 제거, 위치 변경 또는 비활성화, 그리고 엔드포인트 관리형 소스가 자체 플러그인을 나열하거나 활성화하는 머신에서 캐시된 목록만 활성화하는 플러그인의 [조직 지위](https://code.claude.com/docs/ko/plugins/mods/admin.md#install-your-organizations-mods)는 제외됩니다.

174* 캐시된 [`modelPricing`](https://code.claude.com/docs/ko/settings-reference#modelpricing)은 세션의 가져오기가 페이로드를 확인할 때까지 적용되지 않습니다. 그때까지 개발자가 `/usage`에서 보는 비용 수치와 상태 줄은 정가입니다.174* 캐시된 [`modelPricing`](https://code.claude.com/docs/ko/settings-reference#modelpricing)은 세션의 가져오기가 페이로드를 확인할 때까지 적용되지 않습니다. 그때까지 개발자가 `/usage`에서 보는 비용 수치와 상태 줄은 정가입니다.

175* 캐시된 [`managedMcpServers`](https://code.claude.com/docs/ko/settings-reference#managedmcpservers) 블록은 세션의 가져오기가 페이로드를 확인할 때까지 적용되지 않습니다. Claude Code는 MCP 서버를 연결하기 전에 해당 가져오기를 최대 30초 동안 기다립니다. 가져오기가 실패하거나 시간 초과되면, 세션은 조직의 서버 없이 시작되고, `/status`는 그렇게 표시하며, 나중에 가져오기가 이들을 확인하면 연결됩니다. 첫 시작을 포함한 전체 동작은 [제공된 서버가 연결될 때](https://code.claude.com/docs/ko/managed-mcp.md#when-provided-servers-connect)를 참조하세요. Claude Code v2.1.259 이상이 필요합니다.175* 캐시된 [`managedMcpServers`](https://code.claude.com/docs/ko/settings-reference#managedmcpservers) 블록은 세션의 가져오기가 페이로드를 확인할 때까지 적용되지 않습니다. Claude Code는 MCP 서버를 연결하기 전에 해당 가져오기를 최대 30초 동안 기다립니다. 가져오기가 실패하거나 시간 초과되면, 세션은 조직의 서버 없이 시작되고, `/status`는 그렇게 표시하며, 나중에 가져오기가 이들을 확인하면 연결됩니다. 첫 시작을 포함한 전체 동작은 [제공된 서버가 연결될 때](https://code.claude.com/docs/ko/managed-mcp.md#when-provided-servers-connect)를 참조하세요. Claude Code v2.1.259 이상이 필요합니다.

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

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

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

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

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

sessions.md +1 −1

Details

249 249 

250기본적으로 Claude Code는 기록을 `~/.claude/projects/<project>/<session-id>.jsonl`에 JSONL로 저장합니다. 여기서 `<project>`는 작업 디렉토리 경로에서 파생되고 영숫자가 아닌 문자는 `-`로 대체됩니다. 변환된 이름이 200자를 초과하는 작업 디렉토리의 경우 Claude Code는 이름을 200자로 자르고 전체 경로의 해시를 추가하므로 디렉토리 이름이 파일 시스템 제한 내에 유지됩니다.250기본적으로 Claude Code는 기록을 `~/.claude/projects/<project>/<session-id>.jsonl`에 JSONL로 저장합니다. 여기서 `<project>`는 작업 디렉토리 경로에서 파생되고 영숫자가 아닌 문자는 `-`로 대체됩니다. 변환된 이름이 200자를 초과하는 작업 디렉토리의 경우 Claude Code는 이름을 200자로 자르고 전체 경로의 해시를 추가하므로 디렉토리 이름이 파일 시스템 제한 내에 유지됩니다.

251 251 

252각 줄은 메시지, 도구 사용 또는 메타데이터 항목에 대한 JSON 객체입니다. 항목 형식은 Claude Code 내부 형식이며 버전 간에 변경되므로 이러한 파일을 직접 파싱하는 스크립트는 모든 릴리스에서 손상될 수 있습니다. 세션 데이터를 기반으로 구축하려면 `/export` 또는 [스크립트 인터페이스](#access-conversations-from-scripts) 대신 사용합니다.252각 줄은 JSON 객체이며, 메시지, 도구 사용 또는 결과, Claude Code가 모델에 보낸 요청의 기록, 또는 메타데이터 항목 중 하나입니다. 항목 형식은 Claude Code 내부 형식이며 버전 간에 변경되므로 이러한 파일을 직접 파싱하는 스크립트는 모든 릴리스에서 손상될 수 있습니다. 세션 데이터를 기반으로 구축하려면 `/export` 또는 [스크립트 인터페이스](#access-conversations-from-scripts)를 대신 사용합니다.

253 253 

254위치, 보존 및 쓰기 동작은 구성 가능합니다:254위치, 보존 및 쓰기 동작은 구성 가능합니다:

255 255 

Details

2037* **유형**: 각각 서비스 이름인 문자열의 배열. 단일 후행 `*`는 접두사와 일치하고, `"*"` 단독으로는 모든 서비스와 일치합니다.2037* **유형**: 각각 서비스 이름인 문자열의 배열. 단일 후행 `*`는 접두사와 일치하고, `"*"` 단독으로는 모든 서비스와 일치합니다.

2038* **기본값**: 설정되지 않음2038* **기본값**: 설정되지 않음

2039 2039 

2040다음은 `com.apple.coresimulator.` 접두사 아래의 모든 서비스를 허용합니다:2040다음 예시는 `com.apple.CoreSimulator.` 접두사 아래의 모든 서비스를 허용합니다.

2041 2041 

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

2043{2043{

2044 "sandbox": {2044 "sandbox": {

2045 "network": {2045 "network": {

2046 "allowMachLookup": ["com.apple.coresimulator.*"]2046 "allowMachLookup": ["com.apple.CoreSimulator.*"]

2047 }2047 }

2048 }2048 }

2049}2049}


4729* **Type**: 문자열 배열, 저장소 루트에 상대적인 디렉터리 경로4729* **Type**: 문자열 배열, 저장소 루트에 상대적인 디렉터리 경로

4730* **Default**: 설정되지 않음. 각 worktree는 전체 트리를 체크아웃합니다4730* **Default**: 설정되지 않음. 각 worktree는 전체 트리를 체크아웃합니다

4731 4731 

4732이 예제는 각 worktree에서 `packages/my-app` 및 `shared/utils`와 루트 수준 파일만 체크아웃합니다:4732각 worktree에도 저장소의 `.claude/settings.json` 및 `.claude/rules/`가 포함되도록 목록에 `.claude`를 포함합니다. 이 예제는 각 worktree에서 `.claude`, `packages/my-app` 및 `shared/utils`와 루트 수준 파일만 체크아웃합니다:

4733 4733 

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

4735{4735{

4736 "worktree": {4736 "worktree": {

4737 "sparsePaths": ["packages/my-app", "shared/utils"]4737 "sparsePaths": [".claude", "packages/my-app", "shared/utils"]

4738 }4738 }

4739}4739}

4740```4740```


5525 5525 

5526Claude 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 이상이 필요합니다.5526Claude 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 이상이 필요합니다.

5527 5527 

5528동일한 검사는 [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/ko/env-vars#variables) 환경 변수에 명명된 플러그인 폴더를 포함합니다. 이는 Claude Code v2.1.280 이상이 필요합니다. 변수가 폴더의 이름을 지정하면 Claude Code는 동일한 오류로 종료되며, 오류는 변수를 설정 해제하도록 지시합니다.5528`disableSideloadFlags`는 다음 소스의 플러그인 폴더도 거부합니다:

5529 

5530* **[`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/ko/env-vars#variables) 환경 변수**: 변수가 플러그인 폴더를 지정하면 Claude Code는 변수의 이름을 지정하고 설정을 해제하도록 안내하는 오류와 함께 시작 시 종료됩니다. Claude Code v2.1.280 이상이 필요합니다.

5531* **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 이상이 필요합니다.

5529 5532 

5530클라우드 세션에서 Claude Code는 또한 서버 제공 중간 세션 MCP 업데이트를 무시합니다. 이는 클라우드 세션 구성 및 SDK `setMcpServers()` 호출 뒤의 경로이며, 이러한 세션에 도달합니다. 인프로세스 `type: "sdk"` 항목 및 Claude Tag 세션의 Slack 도구는 거기서도 면제됩니다. v2.1.268 이전에는 이 삭제와 시작 삭제 모두 Claude Tag 세션의 Slack 도구를 제거했습니다. v2.1.239 이전에는 서버 제공 `--mcp-config`가 클라우드 세션이 시작되는 것을 차단했습니다.5533클라우드 세션에서 Claude Code는 또한 서버 제공 중간 세션 MCP 업데이트를 무시합니다. 이는 클라우드 세션 구성 및 SDK `setMcpServers()` 호출 뒤의 경로이며, 이러한 세션에 도달합니다. 인프로세스 `type: "sdk"` 항목 및 Claude Tag 세션의 Slack 도구는 거기서도 면제됩니다. v2.1.268 이전에는 이 삭제와 시작 삭제 모두 Claude Tag 세션의 Slack 도구를 제거했습니다. v2.1.239 이전에는 서버 제공 `--mcp-config`가 클라우드 세션이 시작되는 것을 차단했습니다.

5531 5534 


5656 5659 

5657도우미가 `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)을 병합하지 않습니다.

5658 5661 

5659시작 `forceRemoteSettingsRefresh` 검사는 도우미 전에 실행되고 모든 관리자 소스를 읽습니다. 도우미가 `managedSettings`를 생략하는 봉투로 0을 종료하면 관리형 설정을 제공하지 않으며, 다른 소스는 평소대로 적용됩니다.5662시작 `forceRemoteSettingsRefresh` 검사는 도우미 전에 실행되고 모든 관리자 소스를 읽습니다. 도우미가 `managedSettings`를 생략하는 봉투로 `0`을 종료하면 관리형 설정을 제공하지 않으며, 다른 소스는 평소대로 적용됩니다.

5660 5663 

5661#### 도우미 실패5664#### 도우미 실패

5662 5665 


5670 5673 

5671시작 실행이 실패하면 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) 및 대부분의 부명령을 포함합니다.

5672 5675 

5673거부는 의도적이므로 중단 복원력이 필요한 도우미는 자신의 캐시에서 제공하고 0을 종료해야 합니다.5676거부는 의도적이므로 중단 복원력이 필요한 도우미는 자신의 캐시에서 제공하고 `0`을 종료해야 합니다.

5674 5677 

5675백그라운드 새로고침이 실패하면 Claude Code는 마지막 성공한 정책을 유지하고, `/status`는 새로고침이 성공할 때까지 이유와 함께 실패한 새로고침을 표시합니다. 각 새로고침은 시작 실행과 동일한 `timeoutMs` 및 실패 규칙에서 실행됩니다.5678백그라운드 새로고침이 실패하면 Claude Code는 마지막 성공한 정책을 유지하고, `/status`는 새로고침이 성공할 때까지 이유와 함께 실패한 새로고침을 표시합니다. 각 새로고침은 시작 실행과 동일한 `timeoutMs` 및 실패 규칙에서 실행됩니다.

5676 5679 

vs-code.md +36 −17

Details

203What's in @src/components/ (include a trailing slash for folders)203What's in @src/components/ (include a trailing slash for folders)

204```204```

205 205 

206큰 PDF의 경우 전체 파일 대신 특정 페이지를 읽도록 Claude에 요청할 수 있습니다. 단일 페이지, 1-10페이지 같은 범위, 또는 3페이지 이후 같은 끝이 열린 범위를 요청하세요. 특정 페이지를 읽으려면 Claude Code가 실행되는 머신에 [poppler-utils](https://code.claude.com/docs/ko/tools-reference.md#read-tool-behavior)가 필요합니다.206### PDF의 특정 페이지 읽기

207 

208편집기에서 텍스트를 선택하면 Claude가 강조 표시된 코드를 자동으로 볼 수 있습니다. 프롬프트 상자 하단에 선택된 줄 수가 표시됩니다. `Option+K`(Mac) / `Alt+K`(Windows/Linux)를 누르면 `@app.ts#5-10`처럼 파일 경로와 줄 번호가 포함된 @-멘션이 삽입됩니다. Claude가 선택 영역을 받지 않도록 하려면 선택 표시기의 **X**를 클릭하여 제거합니다. 다른 텍스트를 선택하면 표시기가 다시 나타납니다.

209 207 

210확장 프로그램은 일부 파일에서 선택한 텍스트를 전달하지 않습니다.208큰 PDF의 경우 전체 파일 대신 특정 페이지를 읽도록 Claude에 요청할 수 있습니다. 단일 페이지, 1-10페이지 같은 범위, 또는 3페이지 이후 같은 끝이 열린 범위를 요청하세요. 특정 페이지를 읽으려면 Claude Code가 실행되는 머신에 [poppler-utils](https://code.claude.com/docs/ko/tools-reference.md#read-tool-behavior)가 필요합니다.

211 

212* 파일이 워크스페이스 안에 있고 `files.exclude` 또는 `search.exclude` 설정과 일치하면, Claude는 선택한 텍스트가 아닌 최대 파일 경로만 받습니다.

213* VS Code의 `search.useIgnoreFiles` 설정과 확장 프로그램의 [`respectGitIgnore` 설정](#extension-settings)이 모두 켜져 있으면(기본값) git이 무시하는 파일에도 동일하게 적용됩니다.

214 209 

215이 필터는 채팅 패널에만 적용됩니다. Claude Code가 통합 터미널에서 실행되면 CLI는 파일에 관계없이 선택한 텍스트를 전송합니다. 그곳에서 파일 내용을 Claude에게서 보호하려면 [`Read` 거부 규칙](#the-built-in-ide-mcp-server)을 추가합니다.210### 프롬프트에 터미널 출력 포함하기

216 211 

217Claude는 아무것도 선택하지 않은 경우에도 편집기에 열려 있는 파일을 알 수 있으며, 프롬프트 상자에 그 이름이 표시됩니다. 선택한 텍스트만 추가하려면 [Attach Open File 설정](vscode://settings/claudeCode.attachOpenFile)을 끕니다. 이 설정에는 Claude Code v2.1.271 이상이 필요합니다.212`@terminal:name`을 사용하여 프롬프트에서 터미널 출력을 참조합니다. 여기서 `name`은 터미널의 제목입니다. 이렇게 하면 복사하여 붙여넣지 않고도 Claude가 명령 출력, 오류 메시지 또는 로그를 볼 수 있습니다.

218 213 

219메시지에 이미지와 파일을 첨부할 수도 있습니다.214### 이미지 및 파일 첨부하기

220 215 

221* 이미지를 첨부하려면 클립보드에서 프롬프트 상자에 붙여넣습니다.216* 이미지를 첨부하려면 클립보드에서 프롬프트 상자에 붙여넣습니다.

222* 파일을 첨부하려면 `Shift`를 누른 상태로 프롬프트 상자에 드래그합니다.217* 파일을 첨부하려면 `Shift`를 누른 상태로 프롬프트 상자에 드래그합니다.

223* 컨텍스트에서 첨부 파일을 제거하려면 첨부 파일의 X를 클릭합니다.218* 컨텍스트에서 첨부 파일을 제거하려면 첨부 파일의 X를 클릭합니다.

224 219 

225### 프롬프트에 터미널 출력 포함하기

226 

227`@terminal:name`을 사용하여 프롬프트에서 터미널 출력을 참조합니다. 여기서 `name`은 터미널의 제목입니다. 이렇게 하면 복사하여 붙여넣지 않고도 Claude가 명령 출력, 오류 메시지 또는 로그를 볼 수 있습니다.

228 

229### 텍스트 붙여넣기220### 텍스트 붙여넣기

230 221 

231붙여넣은 텍스트는 [터미널에서](https://code.claude.com/docs/ko/terminal-config.md#paste-large-content)처럼 자리 표시자로 접히지 않고 프롬프트 상자에 그대로 표시됩니다. Claude Code가 [붙여넣은 텍스트를 표시하는](https://code.claude.com/docs/ko/terminal-config.md#how-claude-treats-pasted-text) 세션에서는, Claude가 여전히 큰 붙여넣기를 직접 입력한 것이 아니라 붙여넣은 텍스트로 인식합니다.222붙여넣은 텍스트는 [터미널에서](https://code.claude.com/docs/ko/terminal-config.md#paste-large-content)처럼 자리 표시자로 접히지 않고 프롬프트 상자에 그대로 표시됩니다. Claude Code가 [붙여넣은 텍스트를 표시하는](https://code.claude.com/docs/ko/terminal-config.md#how-claude-treats-pasted-text) 세션에서는, Claude가 여전히 큰 붙여넣기를 직접 입력한 것이 아니라 붙여넣은 텍스트로 인식합니다.


235* 붙여넣을 때 `Removed 3 invisible characters from the pasted text` 같은 알림이 나타나면, 해당 문자가 제거된 상태로 텍스트가 입력된 것입니다.226* 붙여넣을 때 `Removed 3 invisible characters from the pasted text` 같은 알림이 나타나면, 해당 문자가 제거된 상태로 텍스트가 입력된 것입니다.

236* 전송할 때 제거된 문자에 대한 알림이 나타나면 아무것도 전송되지 않은 것입니다. 정리된 텍스트가 프롬프트 상자에 다시 들어가 있습니다. 표시된 텍스트를 보내려면 다시 전송합니다.227* 전송할 때 제거된 문자에 대한 알림이 나타나면 아무것도 전송되지 않은 것입니다. 정리된 텍스트가 프롬프트 상자에 다시 들어가 있습니다. 표시된 텍스트를 보내려면 다시 전송합니다.

237 228 

229### 선택 영역과 열린 파일에서 자동으로 제공되는 컨텍스트

230 

231편집기에서 텍스트를 선택하면 Claude가 강조 표시된 코드를 자동으로 볼 수 있습니다. 프롬프트 상자 하단에 선택된 줄 수가 표시됩니다. Claude는 아무것도 선택하지 않은 경우에도 편집기에 열려 있는 파일을 알 수 있으며, 프롬프트 상자에 그 이름이 표시됩니다.

232 

233`Option+K`(Mac) / `Alt+K`(Windows/Linux)를 누르면 `@app.ts#5-10`처럼 파일 경로와 줄 번호가 포함된 @-멘션이 삽입됩니다.

234 

235#### 선택 영역과 열린 파일을 메시지에서 제외하기

236 

237선택한 텍스트나 열린 파일이 메시지에 포함되지 않도록 하려면 VS Code 설정에서 해당 설정을 끕니다.

238 

239* **선택한 텍스트**: [Attach Selection 설정](vscode://settings/claudeCode.attachSelection)을 끕니다. Claude Code v2.1.300 이상이 필요합니다. 선택 영역 하나만 제외하려면 줄 수 옆의 **X**를 클릭합니다. 다른 텍스트를 선택하면 줄 수가 다시 나타납니다.

240* **열린 파일**: [Attach Open File 설정](vscode://settings/claudeCode.attachOpenFile)을 끕니다. Claude Code v2.1.271 이상이 필요합니다. 메시지에 해당 파일에서 선택한 텍스트가 포함되지 않는 한 파일은 제외됩니다.

241 

242Attach Selection이 꺼진 상태에서 텍스트를 @-멘션으로 추가하려면 텍스트를 선택하고 Mac에서는 `Option+K`, Windows 및 Linux에서는 `Alt+K`를 누릅니다.

243 

244두 설정 모두 VS Code의 통합 터미널에서 `claude`를 실행할 때도 적용됩니다.

245 

246#### 제외되거나 무시된 파일에서 선택한 텍스트

247 

248채팅 패널에서 확장 프로그램은 일부 파일에서 선택한 텍스트를 전달하지 않습니다.

249 

250* 파일이 워크스페이스 안에 있고 `files.exclude` 또는 `search.exclude` 설정과 일치하면, Claude는 선택한 텍스트가 아닌 최대 파일 경로만 받습니다.

251* VS Code의 `search.useIgnoreFiles` 설정과 확장 프로그램의 [`respectGitIgnore` 설정](#extension-settings)이 모두 켜져 있으면(기본값) git이 무시하는 파일에도 동일하게 적용됩니다.

252 

253이 필터는 채팅 패널에만 적용됩니다. Claude Code가 통합 터미널에서 실행되면 Claude는 이러한 파일에서 선택한 텍스트를 받을 수 있습니다. 그곳에서 파일 내용을 Claude에게서 보호하려면 [`Read` 거부 규칙](https://code.claude.com/docs/ko/permissions#read-and-edit)을 추가합니다.

254 

238### 응답의 LaTeX 수식255### 응답의 LaTeX 수식

239 256 

240채팅 패널은 Claude 응답의 LaTeX 수식을 조판된 공식으로 표시합니다. 수식 렌더링에는 Claude Code v2.1.301 이상이 필요합니다. [터미널 모드](#switch-to-terminal-mode)에서는 수식이 조판되지 않습니다. 패널은 디스플레이 수식과 인라인 수식을 모두 조판합니다.257채팅 패널은 Claude 응답의 LaTeX 수식을 조판된 공식으로 표시합니다. 수식 렌더링에는 Claude Code v2.1.301 이상이 필요합니다. [터미널 모드](#switch-to-terminal-mode)에서는 수식이 조판되지 않습니다. 패널은 디스플레이 수식과 인라인 수식을 모두 조판합니다.


694| `preferredLocation` | `panel` | Claude가 열리는 위치: `sidebar`(오른쪽) 또는 `panel`(새 탭) |711| `preferredLocation` | `panel` | Claude가 열리는 위치: `sidebar`(오른쪽) 또는 `panel`(새 탭) |

695| `lockEditorGroups` | `true` | [Claude가 탭용으로 시작하는 편집기 그룹을 잠가](#choose-where-claude-lives) Claude 탭에 포커스가 있는 동안 여는 파일이 다른 그룹으로 이동하도록 합니다. 끄면 확장 프로그램은 편집기 그룹을 잠그지 않습니다. Claude Code v2.1.274 이상이 필요합니다 |712| `lockEditorGroups` | `true` | [Claude가 탭용으로 시작하는 편집기 그룹을 잠가](#choose-where-claude-lives) Claude 탭에 포커스가 있는 동안 여는 파일이 다른 그룹으로 이동하도록 합니다. 끄면 확장 프로그램은 편집기 그룹을 잠그지 않습니다. Claude Code v2.1.274 이상이 필요합니다 |

696| `autosave` | `true` | Claude가 파일을 읽거나 쓰기 전에 파일을 자동 저장합니다 |713| `autosave` | `true` | Claude가 파일을 읽거나 쓰기 전에 파일을 자동 저장합니다 |

697| `attachOpenFile` | `true` | 편집기에 열려 있는 파일을 메시지에 추가하고 프롬프트 상자에 표시합니다. 끄면 선택한 텍스트만 추가됩니다. Claude Code v2.1.271 이상이 필요합니다 |714| `attachOpenFile` | `true` | 편집기에 열려 있는 파일을 메시지에 추가하고 프롬프트 상자에 표시합니다. 끄면 파일은 선택한 텍스트와 함께일 때만 추가됩니다. Claude Code v2.1.271 이상이 필요합니다 |

715| `attachSelection` | `true` | 편집기에서 선택한 텍스트를 메시지에 추가하고 프롬프트 상자에 표시합니다. 끄더라도 [선택 영역을 @-멘션으로 추가](#automatic-context-from-your-selection-and-open-file)할 수 있습니다. Claude Code v2.1.300 이상이 필요합니다 |

698| `useCtrlEnterToSend` | `false` | 프롬프트를 보낼 때 Enter 대신 Ctrl/Cmd+Enter를 사용합니다 |716| `useCtrlEnterToSend` | `false` | 프롬프트를 보낼 때 Enter 대신 Ctrl/Cmd+Enter를 사용합니다 |

699| `scrollToBottomOnSend` | `true` | 메시지를 보낼 때 대화를 맨 아래로 스크롤합니다. 끄면 대화가 마지막 위치에 그대로 유지됩니다. Claude Code v2.1.275 이상이 필요합니다 |717| `scrollToBottomOnSend` | `true` | 메시지를 보낼 때 대화를 맨 아래로 스크롤합니다. 끄면 대화가 마지막 위치에 그대로 유지됩니다. Claude Code v2.1.275 이상이 필요합니다 |

700| `showMessageTimestamps` | `true` | 각 메시지를 보낸 시간을 표시합니다. 날짜가 바뀌는 지점에 날짜 줄이 표시됩니다. Claude Code v2.1.284 이상이 필요합니다. v2.1.290 이전에는 기본값이 `false`였습니다 |718| `showMessageTimestamps` | `true` | 각 메시지를 보낸 시간을 표시합니다. 날짜가 바뀌는 지점에 날짜 줄이 표시됩니다. Claude Code v2.1.284 이상이 필요합니다. v2.1.290 이전에는 기본값이 `false`였습니다 |


705| `continueAfterReload` | `true` | 창을 다시 로드한 후 Claude가 복원된 세션에서 [중단된 단계를 계속 진행](#continue-conversations-after-a-reload)합니다. Claude Code v2.1.274 이상이 필요합니다 |723| `continueAfterReload` | `true` | 창을 다시 로드한 후 Claude가 복원된 세션에서 [중단된 단계를 계속 진행](#continue-conversations-after-a-reload)합니다. Claude Code v2.1.274 이상이 필요합니다 |

706| `hideOnboarding` | `false` | 온보딩 체크리스트(학사모 아이콘)를 숨깁니다 |724| `hideOnboarding` | `false` | 온보딩 체크리스트(학사모 아이콘)를 숨깁니다 |

707| `focusView` | `false` | 도구 호출, 도구 결과, 사고를 펼칠 수 있는 행 뒤로 숨기고 프롬프트와 Claude의 응답만 남깁니다. Claude의 최신 할 일 목록은 계속 표시되며, 이를 위해서는 Claude Code v2.1.225 이상이 필요합니다. 명령 메뉴에서 Focus view를 전환할 수도 있습니다. Claude Code v2.1.221 이상이 필요합니다 |725| `focusView` | `false` | 도구 호출, 도구 결과, 사고를 펼칠 수 있는 행 뒤로 숨기고 프롬프트와 Claude의 응답만 남깁니다. Claude의 최신 할 일 목록은 계속 표시되며, 이를 위해서는 Claude Code v2.1.225 이상이 필요합니다. 명령 메뉴에서 Focus view를 전환할 수도 있습니다. Claude Code v2.1.221 이상이 필요합니다 |

708| `respectGitIgnore` | `true` | 파일 검색 및 [선택 컨텍스트](#reference-files-and-folders)에서 .gitignore 패턴을 제외합니다 |726| `respectGitIgnore` | `true` | 파일 검색 및 [선택 컨텍스트](#selected-text-from-excluded-or-ignored-files)에서 .gitignore 패턴을 제외합니다 |

709| `usePythonEnvironment` | `true` | Claude를 실행할 때 워크스페이스의 Python 환경을 활성화합니다. Python 확장 프로그램이 필요합니다. |727| `usePythonEnvironment` | `true` | Claude를 실행할 때 워크스페이스의 Python 환경을 활성화합니다. Python 확장 프로그램이 필요합니다. |

710| `environmentVariables` | `[]` | Claude 프로세스의 환경 변수를 설정합니다. 공유 구성에는 대신 Claude Code 설정을 사용하세요. [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ko/env-vars) 항목은 값이 절대 경로인 경우에만 적용되며, 확장 프로그램은 `~`를 확장하지 않고 상대 값은 무시합니다. |728| `environmentVariables` | `[]` | Claude 프로세스의 환경 변수를 설정합니다. 공유 구성에는 대신 Claude Code 설정을 사용하세요. [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ko/env-vars) 항목은 값이 절대 경로인 경우에만 적용되며, 확장 프로그램은 `~`를 확장하지 않고 상대 값은 무시합니다. |

711| `disableLoginPrompt` | `false` | 인증 프롬프트를 건너뜁니다(서드파티 제공업체 설정용) |729| `disableLoginPrompt` | `false` | 인증 프롬프트를 건너뜁니다(서드파티 제공업체 설정용) |


835 853 

836**선택 영역 및 열린 파일 컨텍스트.** 연결되어 있는 동안 CLI는 전송하는 각 프롬프트에 현재 편집기 선택 영역과 활성 파일의 경로를 컨텍스트로 포함합니다. 이 경우 트랜스크립트에 `⧉ Selected N lines from <file>` 줄이 표시됩니다. 다음 경우에는 이 컨텍스트가 달라집니다.854**선택 영역 및 열린 파일 컨텍스트.** 연결되어 있는 동안 CLI는 전송하는 각 프롬프트에 현재 편집기 선택 영역과 활성 파일의 경로를 컨텍스트로 포함합니다. 이 경우 트랜스크립트에 `⧉ Selected N lines from <file>` 줄이 표시됩니다. 다음 경우에는 이 컨텍스트가 달라집니다.

837 855 

856* **[Attach Selection 설정](#keep-your-selection-and-open-file-out-of-your-messages) 꺼짐**: CLI가 선택 영역을 컨텍스트로 포함하지 않습니다.

857* **Attach Open File 설정 꺼짐**: CLI는 선택 영역도 함께 포함하는 경우에만 활성 파일의 경로를 포함합니다.

838* **대기열에 추가된 메시지**: [Claude가 작업하는 동안 메시지를 대기열에 추가](https://code.claude.com/docs/ko/interactive-mode.md#queue-messages-while-claude-works)하면, 이후에 무엇을 선택하든 `Enter`를 눌렀을 때의 선택 영역이 유지됩니다.858* **대기열에 추가된 메시지**: [Claude가 작업하는 동안 메시지를 대기열에 추가](https://code.claude.com/docs/ko/interactive-mode.md#queue-messages-while-claude-works)하면, 이후에 무엇을 선택하든 `Enter`를 눌렀을 때의 선택 영역이 유지됩니다.

839* **민감한 파일**: `.env`와 같은 민감한 파일을 제외하려면 해당 경로에 대한 [`Read` 거부 규칙](https://code.claude.com/docs/ko/permissions#read-and-edit)을 추가합니다. 일치하는 거부 규칙이 있으면 해당 파일의 선택된 텍스트와 열린 파일 알림이 모두 Claude에 전달되지 않습니다.859* **민감한 파일**: `.env`와 같은 민감한 파일을 제외하려면 해당 경로에 대한 [`Read` 거부 규칙](https://code.claude.com/docs/ko/permissions#read-and-edit)을 추가합니다. 일치하는 거부 규칙이 있으면 해당 파일의 선택된 텍스트와 열린 파일 알림이 모두 Claude에 전달되지 않습니다.

840* **Attach Open File 꺼짐**: [Attach Open File 설정](#extension-settings)을 끄면 CLI는 활성 파일에서 텍스트를 선택한 동안에만 해당 파일의 경로를 받습니다.

841 860 

842**전송 방식 및 인증.** 서버는 10000–65535 범위의 임의 포트로 `127.0.0.1`에 바인딩되며, 포트는 구성할 수 없습니다. 전송 방식과 인증 토큰은 다음과 같이 작동합니다.861**전송 방식 및 인증.** 서버는 10000–65535 범위의 임의 포트로 `127.0.0.1`에 바인딩되며, 포트는 구성할 수 없습니다. 전송 방식과 인증 토큰은 다음과 같이 작동합니다.

843 862 

workflows.md +5 −4

Details

333 333 

334워크플로우 런타임은 대화와 분리된 격리된 환경에서 스크립트를 실행합니다. 중간 결과는 Claude의 컨텍스트에 들어가는 대신 스크립트 변수에 남아 있습니다.334워크플로우 런타임은 대화와 분리된 격리된 환경에서 스크립트를 실행합니다. 중간 결과는 Claude의 컨텍스트에 들어가는 대신 스크립트 변수에 남아 있습니다.

335 335 

336모든 실행은 `~/.claude/projects/` 아래의 세션 디렉토리에 스크립트를 작성합니다. Claude는 실행이 시작될 때 경로를 받으므로 요청할 수 있습니다. 해당 파일을 열어 Claude가 작성한 오케스트레이션을 읽거나, 이전 실행의 스크립트와 비교하거나, 편집한 후 Claude에 편집된 버전에서 다시 시작하도록 요청할 수 있습니다.336Claude가 스크립트 파일 경로에서 실행을 시작하는 경우가 아니라면, Claude Code는 실행의 스크립트를 `~/.claude/projects/` 아래의 세션 디렉터리에 있는 파일에 작성합니다. Claude는 실행이 시작될 때 스크립트의 경로를 받으므로 경로를 요청할 수 있습니다. 해당 파일을 열어 Claude가 작성한 오케스트레이션을 읽거나, 이전 실행의 스크립트와 diff를 비교하거나, 편집한 후 Claude에 편집된 버전에서 다시 시작하도록 요청할 수 있습니다.

337 337 

338Claude는 세션이 이미 읽을 수 있는 스크립트 파일에서만 워크플로우를 시작할 수 있습니다. 작업 디렉토리 외부에 보관된 스크립트를 실행하려면 먼저 [`/add-dir`](https://code.claude.com/docs/ko/permissions#working-directories)을 사용하거나 [Read 허용 규칙](https://code.claude.com/docs/ko/permissions.md#read-and-edit)을 추가합니다.338Claude는 세션이 이미 읽을 수 있는 스크립트 파일에서만 워크플로우를 시작할 수 있습니다. 작업 디렉토리 외부에 보관된 스크립트를 실행하려면 먼저 [`/add-dir`](https://code.claude.com/docs/ko/permissions#working-directories)을 사용하거나 [Read 허용 규칙](https://code.claude.com/docs/ko/permissions.md#read-and-edit)을 추가합니다.

339 339 


387 387 

388#### 세션을 떠난 후 재개388#### 세션을 떠난 후 재개

389 389 

390실행은 같은 Claude Code 세션 안에서 재개할 수 있습니다. 세션을 떠날 때 실행 중인 워크플로에 어떤 일이 일어나는지는 세션을 떠나는 방식에 따라 다릅니다.390워크플로 실행이 진행 중일 때 세션을 백그라운드로 보내거나 Claude Code를 종료하면 실행은 자동으로 계속되지 않습니다. 실행은 Claude가 `Workflow` 호출로 다시 시작할 때만 계속되며, 이 호출은 [저장된 결과에서 실행을 재생합니다](#which-agents-run-again).

391 391 

392* [세션을 백그라운드로 보내면](https://code.claude.com/docs/ko/agent-view.md#what-carries-over-when-you-background) Claude Code가 백그라운드 세션에서 같은 방식으로 실행을 재생하고 계속 진행합니다.392* **세션을 백그라운드로 보냈거나 [`Move to background and exit`](https://code.claude.com/docs/ko/agent-view#from-inside-a-session)를 선택한 경우**: [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md#what-carries-over-when-you-background)을 확인했을 때 실행이 계속되지 않았다면 해당 세션에서 Claude에게 워크플로를 다시 시작하도록 요청합니다. [권한 모드](#approve-the-plan-before-it-runs)에 따라 Claude Code가 먼저 재시작 승인을 요청합니다. 세션이 agent view에서 `Needs input` 아래에 표시되면 [세션에 연결](https://code.claude.com/docs/ko/agent-view.md#attach-to-a-session)하여 승인 프롬프트에 응답합니다.

393* 워크플로가 실행 중이고 [agent view가 켜져 있는](https://code.claude.com/docs/ko/agent-view.md#from-inside-a-session) 상태에서 Claude Code를 종료하면, 종료 대화 상자에 `Move to background and exit` 옵션이 표시되며 이 옵션은 같은 방식으로 실행을 이어 갑니다. 대신 `Exit and stop tasks`를 선택하거나 해당 옵션이 표시되지 않으면 실행은 세션과 함께 중지됩니다. Claude Code는 실행의 저장된 결과를 `~/.claude/projects/` 아래 해당 세션 디렉터리에 보관하므로, `claude --resume`으로 재개한 세션에서 Claude에게 워크플로를 다시 시작하도록 요청하면 저장된 결과를 재생할 수 있습니다. 새로 시작한 세션에서는 Claude가 다시 시작할 이전 실행이 없으므로 워크플로를 새 실행으로 처음부터 시작합니다.393* **백그라운드 세션에서 재시작이 `nothing to resume`으로 실패한 경우**: Claude에게 워크플로를 새 실행으로 처음부터 시작하도록 요청합니다. Claude가 작업 디렉터리에 있는 스크립트처럼 `~/.claude/projects/` 외부에 있는 스크립트 파일의 경로로 실행을 시작했다면, Claude는 백그라운드 세션에서 해당 실행을 다시 시작할 수 없습니다.

394* **`Exit and stop tasks`를 선택했거나 `Move to background and exit`가 제공되지 않은 경우**: 실행은 세션과 함께 중지되었으며, Claude Code는 실행의 저장된 결과를 `~/.claude/projects/` 아래 해당 세션 디렉터리에 보관합니다. 셸에서 `claude --resume`으로 세션을 재개한 다음 Claude에게 워크플로를 다시 시작하도록 요청합니다. 새로 시작한 세션에서는 Claude가 다시 시작할 이전 실행이 없으므로 워크플로를 처음부터 시작합니다.

394 395 

395[클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서는 Claude Code가 실행 결과를 세션의 대화 기록과 함께 저장하며, 이 기록은 세션의 VM이 회수된 후에도 유지됩니다. [이러한 세션을 다시 열고](https://code.claude.com/docs/ko/claude-code-on-the-web.md#environment-expired) Claude에게 워크플로를 다시 시작하도록 요청하면, 완료된 에이전트는 여전히 저장된 결과를 반환합니다.396[클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서는 Claude Code가 실행 결과를 세션의 대화 기록과 함께 저장하며, 이 기록은 세션의 VM이 회수된 후에도 유지됩니다. [이러한 세션을 다시 열고](https://code.claude.com/docs/ko/claude-code-on-the-web.md#environment-expired) Claude에게 워크플로를 다시 시작하도록 요청하면, 완료된 에이전트는 여전히 저장된 결과를 반환합니다.

396 397