SpyBara
Go Premium

Documentation 2026-11-12 23:02 UTC to 2026-11-13 23:02 UTC

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

117 --network none \117 --network none \

118 --memory 2g \118 --memory 2g \

119 --cpus 2 \119 --cpus 2 \

120 --pids-limit 100 \120 --pids-limit 600 \

121 --user 1000:1000 \121 --user 1000:1000 \

122 -v /path/to/code:/workspace:ro \122 -v /path/to/code:/workspace:ro \

123 -v /var/run/proxy.sock:/var/run/proxy.sock:ro \123 -v /var/run/proxy.sock:/var/run/proxy.sock:ro \


135| `--tmpfs /tmp:...` | 컨테이너가 중지될 때 지워지는 쓰기 가능한 임시 디렉토리를 제공합니다 |135| `--tmpfs /tmp:...` | 컨테이너가 중지될 때 지워지는 쓰기 가능한 임시 디렉토리를 제공합니다 |

136| `--network none` | 컨테이너를 외부 네트워크로부터 차단합니다 |136| `--network none` | 컨테이너를 외부 네트워크로부터 차단합니다 |

137| `--memory 2g` | 메모리 사용을 2GB로 제한하여 리소스 고갈을 방지합니다 |137| `--memory 2g` | 메모리 사용을 2GB로 제한하여 리소스 고갈을 방지합니다 |

138| `--pids-limit 100` | 프로세스 수를 100으로 제한하여 포크 폭탄을 방지합니다 |138| `--pids-limit 600` | 프로세스와 스레드 수를 제한하여 포크 폭탄을 방지합니다 |

139| `--user 1000:1000` | 루트가 아닌 사용자로 실행합니다 |139| `--user 1000:1000` | 루트가 아닌 사용자로 실행합니다 |

140| `-v ...:/workspace:ro` | 코드를 읽기 전용으로 마운트하여 에이전트가 분석할 수 있지만 수정할 수 없도록 합니다. **`~/.ssh`, `~/.aws`, `~/.config`와 같은 민감한 호스트 디렉토리 마운트를 피하십시오** |140| `-v ...:/workspace:ro` | 코드를 읽기 전용으로 마운트하여 에이전트가 분석할 수 있지만 수정할 수 없도록 합니다. **`~/.ssh`, `~/.aws`, `~/.config`와 같은 민감한 호스트 디렉토리 마운트를 피하십시오** |

141| `-v .../proxy.sock:...` | 컨테이너 외부에서 실행되는 프록시에 연결된 Unix 소켓을 마운트합니다(아래 참조) |141| `-v .../proxy.sock:...` | 컨테이너 외부에서 실행되는 프록시에 연결된 Unix 소켓을 마운트합니다(아래 참조) |

Details

104| `options` | [`Options`](#options) | 선택적 구성 객체입니다. `query()`의 `options` 매개변수와 동일합니다 |104| `options` | [`Options`](#options) | 선택적 구성 객체입니다. `query()`의 `options` 매개변수와 동일합니다 |

105| `initializeTimeoutMs` | `number` | 부프로세스 초기화를 기다릴 최대 시간(밀리초)입니다. 기본값은 `60000`입니다. 초기화가 시간 내에 완료되지 않으면 프로미스가 타임아웃 오류로 거부됩니다 |105| `initializeTimeoutMs` | `number` | 부프로세스 초기화를 기다릴 최대 시간(밀리초)입니다. 기본값은 `60000`입니다. 초기화가 시간 내에 완료되지 않으면 프로미스가 타임아웃 오류로 거부됩니다 |

106 106 

107느린 [SessionStart](https://code.claude.com/docs/ko/hooks.md#sessionstart) 및 [Setup](https://code.claude.com/docs/ko/hooks.md#setup) [명령 훅](https://code.claude.com/docs/ko/hooks.md#command-hook-fields)은 `initializeTimeoutMs`가 설정되지 않은 경우에만 추가 시간을 받습니다:

108 

109* **설정하지 않은 경우:** 이러한 훅이 실행되는 데 소요된 시간은 총 최대 10분까지 60초 기본값에 포함되지 않으므로 초기화에 최대 11분이 걸릴 수 있습니다.

110* **`60000`을 포함하여 값을 설정한 경우:** 훅이 실행 중일 때도 해당 값이 제한이 됩니다.

111 

112추가 시간을 받으려면 TypeScript Agent SDK v0.3.304 이상이 필요합니다.

113 

107#### 반환값114#### 반환값

108 115 

109부프로세스가 생성되고 초기화 핸드셰이크를 완료한 후 해결되는 `Promise<`[`WarmQuery`](#warmquery)`>`를 반환합니다.116부프로세스가 생성되고 초기화 핸드셰이크를 완료한 후 해결되는 `Promise<`[`WarmQuery`](#warmquery)`>`를 반환합니다.


128 135 

129### `prewarm()`136### `prewarm()`

130 137 

131*알파.* 어느 세션을 제공할지 알기 전에 Claude Code 프로세스를 스페어로 미리 시작하여 나중에 [`claim()`](#spareprocess)으로 세션에 바인딩할 수 있습니다. 사용자가 폴더를 선택하기 전에 부팅되는 애플리케이션에서 사용합니다. TypeScript Agent SDK v0.3.282 이상이 필요합니다.138*알파.* 어느 세션을 제공할지 알기 전에 Claude Code 프로세스를 스페어로 시작하여 나중에 [`claim()`](#spareprocess)으로 세션에 바인딩할 수 있습니다. TypeScript Agent SDK v0.3.282 이상이 필요합니다.

132 139 

133`prewarm()`은 [`startup()`](#startup)과 동일한 초기화 핸드셰이크를 완료하며, `options.cwd`를 설정할 때 해당 디렉터리에서 프로세스가 대기하고, 그렇지 않으면 Claude Code 구성 디렉터리 아래의 개인 임시 디렉터리에서 대기합니다. 세션의 작업 디렉터리, 해당 `SessionStart` 훅, 해당 stdio MCP 서버, 해당 CLAUDE.md 및 git 컨텍스트는 클레임을 기다립니다. 스페어는 대기하는 동안 대략 230\~260 MB의 메모리를 보유합니다. [`spawnClaudeCodeProcess`](#options)가 다른 머신이나 컨테이너에서 Claude Code를 실행하는 경우 `options.cwd`를 해당 환경에 존재하는 디렉터리로 설정하여 스페어가 그곳에서 대기하도록 합니다.140사용자가 폴더를 선택하기 전에 애플리케이션이 부팅되는 경우 `prewarm()`을 사용합니다.

134 141 

135```typescript theme={null}142```typescript theme={null}

136function prewarm(params?: {143function prewarm(params?: {


139}): Promise<SpareProcess>;146}): Promise<SpareProcess>;

140```147```

141 148 

142`options` 및 `initializeTimeoutMs`는 `startup()`과 동일한 의미를 가지며, `options.cwd`는 스페어가 대기하는 디렉터리만 설정합니다. 프로미스는 프로세스가 초기화 핸드셰이크를 완료한 후 [`SpareProcess`](#spareprocess)로 해결됩니다. `prewarm()`은 `options`가 `resume`, `continue` 또는 `forkSession`을 설정하면 throw합니다. 스페어는 아직 세션이 없기 때문입니다. 클레임이 설정할 수 없는 모든 것(예: `mcpServers`, `hooks`, `canUseTool`, `settingSources`, `systemPrompt` 및 `plugins`)은 스페어의 수명 동안 고정되므로 해당 옵션의 고유한 집합마다 하나의 스페어를 유지하고 변경될 때 다시 미리 준비합니다.149#### 매개변수

150 

151| 매개변수 | 유형 | 설명 |

152| :- | :- | :- |

153| `options` | [`Options`](#options) | 선택적 구성 객체이며, `startup()`이 받는 것과 동일한 유형입니다 |

154| `initializeTimeoutMs` | `number` | 스페어의 초기화를 기다릴 최대 시간(밀리초)입니다. 기본값은 `60000`입니다. 초기화가 시간 내에 완료되지 않으면 프로미스가 타임아웃 오류로 거부됩니다 |

155 

156`prewarm()`은 `initializeTimeoutMs`를 설정하지 않은 경우에도 [Setup](https://code.claude.com/docs/ko/hooks.md#setup) 훅에서 소요된 시간을 `initializeTimeoutMs`에 포함합니다. 느린 Setup 훅에 더 많은 시간을 주려면 더 긴 값을 설정합니다.

157 

158#### 반환값

159 

160스페어를 클레임할 준비가 되면 해결되는 `Promise<`[`SpareProcess`](#spareprocess)`>`를 반환합니다.

161 

162`options`에서 `resume`, `continue` 또는 `forkSession`을 요청하면 프로미스가 거부됩니다. 스페어에는 아직 세션이 없기 때문입니다.

163 

164#### 스페어의 작동 방식

165 

166* **스페어가 대기하는 위치:** Claude Code 구성 디렉터리 아래의 개인 임시 디렉터리, 또는 `prewarm()`에서 `options.cwd`를 설정한 경우 해당 디렉터리입니다.

167* **[`spawnClaudeCodeProcess`](#options)가 다른 머신이나 컨테이너에서 Claude Code를 실행하는 경우:** 기본 임시 디렉터리는 사용자의 머신에 생성되므로, 해당 환경에 존재하는 `options.cwd`를 `prewarm()`에 전달합니다.

168* **메모리:** 각 스페어는 대기하는 동안 대략 230\~260 MB를 사용합니다.

169* **`claim()`을 호출할 때까지 발생하지 않는 작업:**

170 * `claim()`에 전달하는 작업 디렉터리로 이동

171 * SessionStart 훅 실행

172 * stdio MCP 서버 시작

173 * CLAUDE.md 및 git 컨텍스트 로드

174* **클레임이 변경할 수 없는 항목:** `mcpServers`, `hooks`, `canUseTool`, `settingSources`, `plugins`와 같은 옵션은 `prewarm()`에서 지정한 값을 유지합니다. 클레임이 설정할 수 있는 항목은 [`SpareProcess`](#spareprocess)에 나열되어 있습니다.

175* **세션마다 이러한 옵션에 다른 값이 필요한 경우:** 값의 집합마다 별도의 스페어를 유지합니다.

143 176 

144#### 예제177#### 예제

145 178 

agent-view.md +5 −3

Details

8 8 

9`claude agents`로 열 수 있는 에이전트 뷰는 모든 백그라운드 세션을 위한 하나의 화면입니다: 무엇이 실행 중인지, 무엇이 입력을 필요로 하는지, 무엇이 완료되었는지를 보여줍니다. 새로운 세션을 디스패치하고, 트랜스크립트를 스크롤하는 대신 한눈에 상태를 확인하고, 필요할 때만 개입합니다. 각 백그라운드 세션은 터미널이 연결되지 않은 상태에서도 계속 실행되는 완전한 Claude Code 대화이므로, 언제든지 열고, 답변하고, 떠날 수 있습니다.9`claude agents`로 열 수 있는 에이전트 뷰는 모든 백그라운드 세션을 위한 하나의 화면입니다: 무엇이 실행 중인지, 무엇이 입력을 필요로 하는지, 무엇이 완료되었는지를 보여줍니다. 새로운 세션을 디스패치하고, 트랜스크립트를 스크롤하는 대신 한눈에 상태를 확인하고, 필요할 때만 개입합니다. 각 백그라운드 세션은 터미널이 연결되지 않은 상태에서도 계속 실행되는 완전한 Claude Code 대화이므로, 언제든지 열고, 답변하고, 떠날 수 있습니다.

10 10 

11![터미널의 에이전트 뷰. 상단의 한 줄은 입력을 기다리는 세션, 작업 중인 세션, 완료된 세션의 개수를 표시합니다. 네 개의 세션이 입력 필요, 작업 중, 완료됨 아래에 그룹화되어 있습니다. 각 행은 세션의 이름, 최신 상태 또는 질문, 시간을 표시합니다. 하단에는 새 작업을 설명하기 위한 입력 필드와 키보드 힌트 행이 있습니다.](https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/agent-view-light.png?fit=max\&auto=format\&n=HDAmBwgbrZVk0pOt\&q=85\&s=d6905012bee31f3e6b3920b09c05dd02)11![터미널의 에이전트 뷰. 상단의 한 줄은 입력을 기다리는 세션, 작업 중인 세션, 완료된 세션의 개수를 표시합니다. 네 개의 세션이 입력 필요, 작업 중, 완료됨 아래에 그룹화되어 있습니다. 각 행은 세션의 이름, 최신 상태 또는 질문, 시간을 표시합니다. 하단에는 새 작업을 설명하기 위한 입력 필드와 키보드 힌트 행이 있습니다.](https://mintcdn.com/claude-code/v_J840yKc6uuKDX_/images/agent-view-light.png?fit=max\&auto=format\&n=v_J840yKc6uuKDX_\&q=85\&s=bd95fda83ea66ca8b2e0e7b68f8cb29e)

12 12 

13Claude가 사용자의 감시 없이 작업할 수 있는 여러 독립적인 작업이 있을 때 에이전트 뷰를 사용합니다. 버그 수정, 풀 리퀘스트 검토, 불안정한 테스트 조사를 세 개의 행으로 디스패치하고, 다른 창에서 계속 작업하며, 행에 입력이 필요하거나 결과가 있음을 표시할 때 다시 확인합니다.13Claude가 사용자의 감시 없이 작업할 수 있는 여러 독립적인 작업이 있을 때 에이전트 뷰를 사용합니다. 버그 수정, 풀 리퀘스트 검토, 불안정한 테스트 조사를 세 개의 행으로 디스패치하고, 다른 창에서 계속 작업하며, 행에 입력이 필요하거나 결과가 있음을 표시할 때 다시 확인합니다.

14 14 


628 628 

629* 에이전트 뷰는 커밋되지 않은 변경 사항을 포함하여 워크트리를 제거하므로, 유지하려는 내용은 먼저 커밋합니다.629* 에이전트 뷰는 커밋되지 않은 변경 사항을 포함하여 워크트리를 제거하므로, 유지하려는 내용은 먼저 커밋합니다.

630* `claude rm`은 커밋되지 않은 변경 사항이 있으면 세션 행과 함께 워크트리를 유지합니다.630* `claude rm`은 커밋되지 않은 변경 사항이 있으면 세션 행과 함께 워크트리를 유지합니다.

631* 에이전트 뷰와 `claude rm` 모두 실행 중인 다른 세션이 사용 중이거나 잠근 워크트리는 제거하지 않으며, 다시 삭제해도 달라지지 않습니다. Claude Code는 워크트리와 세션을 유지하고, 유지한 디렉터리와 이유를 알립니다. 에이전트 뷰에서는 세션의 행에 `not deleted`가 표시됩니다. 다른 세션을 닫은 다음 다시 삭제합니다.631* 에이전트 뷰와 `claude rm` 모두 실행 중인 다른 세션이 사용 중이거나 잠근 워크트리는 제거하지 않으며, 다시 삭제해도 달라지지 않습니다. Claude Code는 워크트리와 세션을 유지하고, 유지한 디렉터리와 이유를 알립니다. 에이전트 뷰에서는 세션의 행에 `not removed`가 표시됩니다. 다른 세션을 닫은 다음 다시 삭제합니다.

632* 다른 곳에 저장되었는지 Claude Code가 확인할 수 없는 커밋이 워크트리에 있는 세션을 삭제하면, Claude Code는 워크트리와 세션을 유지하고, 메시지에 워크트리의 브랜치와 푸시되지 않은 커밋 수를 표시합니다. 메시지는 두 가지 방법도 제시합니다. 커밋을 푸시하거나, 다시 삭제하여 커밋을 버리는 것입니다.632* 다른 곳에 저장되었는지 Claude Code가 확인할 수 없는 커밋이 워크트리에 있는 세션을 삭제하면, Claude Code는 워크트리와 세션을 유지하고, 메시지에 워크트리의 브랜치와 푸시되지 않은 커밋 수를 표시합니다. 메시지는 두 가지 방법도 제시합니다. 커밋을 푸시하거나, 다시 삭제하여 커밋을 버리는 것입니다.

633 633 

634 원격에 있는 커밋은 삭제를 막지 않습니다. `origin` 원격의 기본 브랜치의 로컬 복사본에 있는 커밋도 마찬가지이며, 단 해당 브랜치가 워크트리가 아닌 저장소 디렉터리 자체인 메인 체크아웃에 체크아웃되어 있어야 합니다.634 원격에 있는 커밋은 삭제를 막지 않습니다. `origin` 원격의 기본 브랜치의 로컬 복사본에 있는 커밋도 마찬가지이며, 단 해당 브랜치가 워크트리가 아닌 저장소 디렉터리 자체인 메인 체크아웃에 체크아웃되어 있어야 합니다.


935머신을 종료하거나 재시작하면 실행 중인 백그라운드 세션이 중지됩니다. 입력을 기다리던 세션은 돌아올 때 `Needs input` 아래에 남아 있습니다. 다른 실행 중인 세션의 경우, 에이전트 뷰가 표시하는 내용은 마지막으로 진행한 이후 경과 시간에 따라 달라집니다:935머신을 종료하거나 재시작하면 실행 중인 백그라운드 세션이 중지됩니다. 입력을 기다리던 세션은 돌아올 때 `Needs input` 아래에 남아 있습니다. 다른 실행 중인 세션의 경우, 에이전트 뷰가 표시하는 내용은 마지막으로 진행한 이후 경과 시간에 따라 달라집니다:

936 936 

937* 48시간 이내에는 세션이 실패로 표시됩니다. 연결하거나 답변하면 저장된 대화에서 다시 시작됩니다. 중단된 작업을 이어서 진행하려면 계속하라고 요청하는 답변을 보냅니다.937* 48시간 이내에는 세션이 실패로 표시됩니다. 연결하거나 답변하면 저장된 대화에서 다시 시작됩니다. 중단된 작업을 이어서 진행하려면 계속하라고 요청하는 답변을 보냅니다.

938* 48시간 이후, 예를 들어 머신이 며칠 동안 꺼져 있었던 경우, 세션은 `ended while the background service was off`와 함께 중지로 표시됩니다. 행에서 `Enter`를 누르면 바닥글에 `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.`이 표시됩니다. 같은 행에서 `Enter`를 다시 누르면 저장된 대화를 다시 시작합니다. 답변 또는 `claude attach <id>`는 바닥글 프롬프트 없이 다시 시작합니다.938* 48시간 이후, 예를 들어 머신이 며칠 동안 꺼져 있었던 경우, 세션은 `ended while the background service was off`와 함께 중지로 표시됩니다.

939 

940 행에서 `Enter`를 누르면 바닥글에 `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to remove it.`이 표시됩니다. 같은 행에서 `Enter`를 다시 누르면 저장된 대화를 다시 시작합니다. 답변 또는 `claude attach <id>`는 바닥글 프롬프트 없이 다시 시작합니다.

939 941 

940[트랜스크립트 정리](https://code.claude.com/docs/ko/settings-reference.md#cleanupperioddays)가 중지된 세션의 저장된 대화를 제거한 경우, Claude Code는 행을 열기를 거부합니다: 메시지는 다시 시작할 것이 없음을 나타냅니다. `claude rm <id>`는 행을 삭제합니다. 단, [유지되는 경우](#what-deleting-a-session-removes)에서 설명한 경우는 제외되며, `claude respawn <id>`는 원래 프롬프트를 다시 실행합니다. [이 세션의 저장된 대화는 더 이상 디스크에 없습니다](https://code.claude.com/docs/ko/errors.md#this-sessions-saved-conversation-is-no-longer-on-disk)를 참조합니다.942[트랜스크립트 정리](https://code.claude.com/docs/ko/settings-reference.md#cleanupperioddays)가 중지된 세션의 저장된 대화를 제거한 경우, Claude Code는 행을 열기를 거부합니다: 메시지는 다시 시작할 것이 없음을 나타냅니다. `claude rm <id>`는 행을 삭제합니다. 단, [유지되는 경우](#what-deleting-a-session-removes)에서 설명한 경우는 제외되며, `claude respawn <id>`는 원래 프롬프트를 다시 실행합니다. [이 세션의 저장된 대화는 더 이상 디스크에 없습니다](https://code.claude.com/docs/ko/errors.md#this-sessions-saved-conversation-is-no-longer-on-disk)를 참조합니다.

941 943 

Details

349 349 

350### 세션 중에 모델이 비활성화될 때350### 세션 중에 모델이 비활성화될 때

351 351 

352계정이 세션이 실행 중인 모델에 대한 액세스를 잃으면(예: 관리자가 Amazon Bedrock 계정에서 비활성화), Claude Code는 각 요청이 실패하는 대신 세션을 다른 모델로 전환하고 `Switched to <fallback> because <model> is not available`을 표시합니다. 시작 폴백과 동일한 모델을 시도합니다: 먼저 동일한 계층의 이전 버전을 시도하고, 사용 가능한 Opus 버전이 없는 Opus 세션의 경우 기본 Sonnet 모델을 시도합니다.352Amazon Bedrock이 세션의 모델을 계정에서 사용할 수 없다는 이유로 거부하면, Claude Code는 세션을 다른 모델로 전환하며 작업을 계속할 수 있습니다. `Switched to <fallback> because <model> is not available`로 시작하는 메시지가 표시됩니다. 예를 들어 관리자가 모델을 비활성화했거나 최신 모델을 아직 계정에서 사용할 수 없는 경우에 이런 상황이 발생합니다.

353 353 

354전환은 고정하지 않은 계층에만 적용되며, 이는 시작 폴백과 동일한 조건입니다. 선택한 특정 버전에서의 세션 또는 [애플리케이션 추론 프로필 ARN](#map-each-model-version-to-an-inference-profile)에서의 세션은 모델을 유지하고, 폴백 모델 체인이 없으면 요청이 실패합니다. [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry)에서 Claude Code는 Amazon Bedrock에서 자동 모드가 지원하는 모델로만 전환합니다. 해당 모델도 사용할 수 없으면 요청이 [AWS 인증 실패](https://code.claude.com/docs/ko/errors.md#aws-authentication-failed)로 실패하고 모델을 활성화하라는 힌트가 표시됩니다.354[폴백 모델 체인](https://code.claude.com/docs/ko/model-config.md#fallback-model-chains)을 구성한 경우, Claude Code는 대신 구성한 폴백으로 전환합니다. 체인이 없으면 다음과 같은 경우에 요청이 실패합니다.

355 355 

356구성한 [폴백 모델 체인](https://code.claude.com/docs/ko/model-config.md#fallback-model-chains)은 계층 전환을 대체합니다: 이러한 거부에서 Claude Code는 구성한 폴백으로 전환합니다. 거부된 요청이 전환하지 않고 실패하도록 하려면 [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/ko/env-vars)을 설정합니다. 구성한 폴백 체인은 여전히 이러한 거부에서 전환합니다; 모든 거부된 요청이 실패하도록 하려면 체인도 제거합니다.356* 세션이 고정된 모델, 선택한 특정 버전 또는 [애플리케이션 추론 프로필 ARN](#map-each-model-version-to-an-inference-profile)에서 실행 중인 경우

357* [Claude Code가 시도하는 모델](#startup-model-checks) 중 어느 것도 사용할 수 없는 경우. [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry)에서 Claude Code는 Amazon Bedrock에서 자동 모드가 지원하는 모델로만 전환합니다.

358 

359작업을 계속하려면 세션에서 `/model`을 실행하고 계정에서 사용할 수 있는 모델에서 `s`를 누릅니다. 이렇게 하면 기본값은 변경되지 않습니다. `403`은 [AWS 인증 실패](https://code.claude.com/docs/ko/errors.md#aws-authentication-failed)로 표시됩니다.

360 

361거부된 요청이 전환하지 않고 실패하도록 하려면 [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/ko/env-vars)을 설정합니다. 폴백 모델 체인을 구성한 경우 Claude Code가 여전히 해당 폴백으로 이동하므로 체인도 제거합니다.

357 362 

358## 교차 지역 추론 프로필 접두사363## 교차 지역 추론 프로필 접두사

359 364 

Details

222 222 

223각각은 자연어 규칙으로 읽히는 산문 설명의 배열입니다. 분류기 이전에 실행되는 도구 패턴 기반의 하드 블록의 경우 [`permissions.deny`](https://code.claude.com/docs/ko/permissions)를 사용하세요.223각각은 자연어 규칙으로 읽히는 산문 설명의 배열입니다. 분류기 이전에 실행되는 도구 패턴 기반의 하드 블록의 경우 [`permissions.deny`](https://code.claude.com/docs/ko/permissions)를 사용하세요.

224 224 

225> [!NOTE]

226>

227> [Code Mode](https://code.claude.com/docs/ko/code-mode.md#permission-checks) 세션에서 분류기는 Claude의 코드를 검토할 때 `hard_deny`와 `soft_deny`를 적용하며, 코드가 수행하는 각 도구 호출에는 적용하지 않습니다. `permissions.deny` 규칙은 각 호출에 적용됩니다.

228 

225분류기 내에서 우선순위는 네 가지 계층으로 작동합니다:229분류기 내에서 우선순위는 네 가지 계층으로 작동합니다:

226 230 

227* `hard_deny` 규칙은 무조건적으로 차단합니다. 사용자 의도와 `allow` 예외는 적용되지 않습니다.231* `hard_deny` 규칙은 무조건적으로 차단합니다. 사용자 의도와 `allow` 예외는 적용되지 않습니다.


279 283 

280Claude Code는 [관리되는 설정](https://code.claude.com/docs/ko/server-managed-settings.md) 또는 `--settings` 플래그의 항목을 읽기 전용으로 표시하고, 탭에서 수행한 모든 변경 사항을 `~/.claude/settings.json`에 저장합니다.284Claude Code는 [관리되는 설정](https://code.claude.com/docs/ko/server-managed-settings.md) 또는 `--settings` 플래그의 항목을 읽기 전용으로 표시하고, 탭에서 수행한 모든 변경 사항을 `~/.claude/settings.json`에 저장합니다.

281 285 

282## 모든 셸 명령을 분류기를 통해 라우팅합니다286## 모든 셸 명령을 분류기로 라우팅하기

283 287 

284기본적으로 좁은 Bash 및 PowerShell 허용 규칙(예: `Bash(npm test)`)은 자동 모드에서 계속 적용됩니다. Claude Code는 명령이 [명령별 허용 도메인](https://code.claude.com/docs/ko/sandboxing.md#per-command-allowed-domains-in-auto-mode)을 포함하지 않는 한 분류기가 실행되기 전에 이를 해결합니다. Claude Code는 `Bash(*)` 또는 와일드카드 인터프리터와 같은 임의의 코드 실행을 허용하는 광범위한 규칙만 일시 중단하며, [`Monitor`](https://code.claude.com/docs/ko/tools-reference#monitor-tool)를 명명하는 모든 규칙과 함께 일시 중단합니다. Monitor 명령은 셸을 통해 실행되기 때문입니다. 이는 좁은 규칙이 여전히 분류기가 보지 못하는 파괴적인 인수(예: 스크립트 경로 또는 규칙의 접두사가 예상하지 못한 플래그)를 통과시킬 수 있음을 의미합니다.288기본적으로 `Bash(npm test)`와 같은 좁은 범위의 Bash 및 PowerShell 허용 규칙은 자동 모드에서도 계속 적용됩니다. 명령에 [명령별 허용 도메인](https://code.claude.com/docs/ko/sandboxing.md#per-command-allowed-domains-in-auto-mode)이 포함된 경우를 제외하고, Claude Code는 분류기가 실행되기 전에 이러한 규칙을 처리합니다. Claude Code는 `Bash(*)` 또는 와일드카드가 적용된 인터프리터처럼 임의의 코드 실행을 허용하는 광범위한 규칙만 일시 중지하며, Monitor 명령은 셸을 통해 실행되므로 [`Monitor`](https://code.claude.com/docs/ko/tools-reference#monitor-tool)를 지정하는 모든 규칙도 함께 일시 중지합니다. 따라서 좁은 범위의 규칙이라도 분류기가 확인하지 못한 채 파괴적인 인수를 통과시킬 수 있습니다. 예를 들어 규칙의 접두사가 예상하지 못한 스크립트 경로나 플래그가 여기에 해당합니다.

285 289 

286`autoMode.classifyAllShell`을 `true`로 설정하여 자동 모드가 활성화되어 있는 동안 모든 Bash 및 PowerShell 허용 규칙을 일시 중단하면, 분류기가 허용 목록에 관계없이 모든 셸 명령을 평가합니다. [중요 경로 제거](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)는 예외입니다.290`autoMode.classifyAllShell`을 `true`로 설정하면 자동 모드가 활성화되어 있는 동안 모든 Bash 및 PowerShell 허용 규칙이 일시 중지되므로, [중요 경로 제거](https://code.claude.com/docs/ko/permission-modes.md#critical-paths)를 제외하고 허용 목록과 관계없이 분류기가 모든 셸 명령을 평가합니다. [Code Mode](https://code.claude.com/docs/ko/code-mode.md#permission-checks) 세션에서는 이 설정이 켜져 있더라도 분류기가 명령을 실행하는 코드를 검토합니다.

287 291 

288```json theme={null}292```json theme={null}

289{293{


293}297}

294```298```

295 299 

296이는 지연 시간을 범위로 교환합니다. 허용 규칙이 즉시 승인했을 명령은 이제 분류기 결정을 기다리며, 각 셸 명령은 분류기 호출로 계산됩니다.300이 설정은 지연 시간을 감수하는 대신 적용 범위를 넓힙니다. 허용 규칙이 즉시 승인했을 명령도 이제 분류기의 결정을 기다려야 하며, 각 셸 명령은 분류기 호출 한 번으로 계산됩니다.

297 301 

298이 설정은 자동 모드가 활성화되어 있는 동안에만 적용되며, 다른 권한 모드에서는 허용 규칙이 정상적으로 작동합니다.302이 설정은 자동 모드가 활성화되어 있는 동안에만 적용되며, 다른 권한 모드에서는 허용 규칙이 평소대로 동작합니다.

299 303 

300## 기본값 및 유효한 구성 검사304## 기본값 및 유효한 구성 검사

301 305 

Details

315 {315 {

316 "matcher": "Edit|Write",316 "matcher": "Edit|Write",

317 "hooks": [317 "hooks": [

318 { "type": "command", "command": "npx prettier --write --ignore-unknown \"$(jq -r '.tool_input.file_path')\"" }318 { "type": "command", "command": "f=$(jq -r '.tool_input.file_path') && npx prettier --write --ignore-unknown \"$f\"" }

319 ]319 ]

320 }320 }

321 ]321 ]

Details

74| PostgreSQL 11 이상 | 장치 로그인 흐름과 속도 제한 카운터를 지원합니다. 가장 작은 계층을 포함한 관리형 PostgreSQL 서비스가 작동합니다; [지원되는 데이터베이스](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#postgres)를 참조하세요. [지출 제한](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md)을 사용하면 백업해야 하는 지속적인 지출, 감사 및 ID 테이블도 보유합니다. `?sslmode=require`를 통한 TLS가 권장됩니다. PostgreSQL 11, 12, 13은 게이트웨이 서버에서 Claude Code v2.1.290 이상이 필요합니다. PostgreSQL 프로젝트는 더 이상 해당 버전을 유지 관리하지 않으므로 가능하면 더 새로운 버전을 사용하세요. |74| PostgreSQL 11 이상 | 장치 로그인 흐름과 속도 제한 카운터를 지원합니다. 가장 작은 계층을 포함한 관리형 PostgreSQL 서비스가 작동합니다; [지원되는 데이터베이스](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#postgres)를 참조하세요. [지출 제한](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md)을 사용하면 백업해야 하는 지속적인 지출, 감사 및 ID 테이블도 보유합니다. `?sslmode=require`를 통한 TLS가 권장됩니다. PostgreSQL 11, 12, 13은 게이트웨이 서버에서 Claude Code v2.1.290 이상이 필요합니다. PostgreSQL 프로젝트는 더 이상 해당 버전을 유지 관리하지 않으므로 가능하면 더 새로운 버전을 사용하세요. |

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

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

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

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

79 79 

80`HTTPS_PROXY` 또는 `HTTP_PROXY`가 게이트웨이 호스트에 적용되는 경우, 로그인에는 호스트명이 개인 주소로 확인되는 프록시가 필요하거나, 개발자 머신의 `NO_PROXY`에 게이트웨이 호스트가 포함되어 있어야 합니다. 해당 머신에서 `no_proxy`도 설정하는 경우 게이트웨이 호스트를 거기에도 추가하세요. 그렇지 않으면 모델 요청이 여전히 프록시를 거칩니다.

81 

80### 단계82### 단계

81 83 

82**1. IdP에서 OAuth 클라이언트 등록**84**1. IdP에서 OAuth 클라이언트 등록**

Details

16 16 

17## 파일 구조17## 파일 구조

18 18 

195개 섹션은 [필수](#required-sections)입니다. 다른 모든 섹션은 [선택사항](#optional-sections)이며, 생략된 섹션은 기본값을 사용합니다. 알 수 없는 키는 부팅에 실패하므로, 오타는 자동으로 무시되는 설정이 아니라 명명된 오류로 표시됩니다.195개 섹션은 [필수](#required-sections)입니다. 다른 모든 섹션은 [선택사항](#optional-sections)이며, 생략된 섹션은 기본값을 사용합니다.

20 20 

21**필수 섹션:**21**필수 섹션:**

22 22 


519 519 

520Claude Code v2.1.281 이상을 실행하는 게이트웨이가 필요합니다. IAM 역할과 AWS 청구에서 세션이 표시되는 위치는 [AWS의 비용 귀속](https://code.claude.com/docs/ko/claude-apps-gateway-on-aws.md#cost-attribution)에서 다룹니다.520Claude Code v2.1.281 이상을 실행하는 게이트웨이가 필요합니다. IAM 역할과 AWS 청구에서 세션이 표시되는 위치는 [AWS의 비용 귀속](https://code.claude.com/docs/ko/claude-apps-gateway-on-aws.md#cost-attribution)에서 다룹니다.

521 521 

522> [!NOTE]

523>

524> 개발자별 귀속을 위해서는 `aws_bearer_token`을 사용하는 업스트림을 제외한 모든 `bedrock` 및 [`mantle`](#amazon-bedrock-mantle-endpoint) 업스트림에 `session_name`과 함께 `assume_role`을 설정하세요. `aws_bearer_token`을 사용하는 업스트림은 [`assume_role`을 사용할 수 없으므로](#bedrock-in-another-aws-account) 해당 요청은 하나의 주체 아래에 남습니다.

525 

522```yaml theme={null}526```yaml theme={null}

523upstreams:527upstreams:

524 - provider: bedrock528 - provider: bedrock


535 539 

536게이트웨이는 이 역할로 자체 호출도 한 번 수행합니다. [지출 한도](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md)의 정확성을 유지하기 위해 클라이언트가 중단한 요청의 토큰을 계산하는 것입니다. 그 계산과 [토큰 하나짜리 폴백 요청](#amazon-bedrock)은 공유 `claude-apps-gateway` 세션으로 서명되므로, AWS는 폴백을 개발자가 아닌 `claude-apps-gateway`에 귀속합니다.540게이트웨이는 이 역할로 자체 호출도 한 번 수행합니다. [지출 한도](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md)의 정확성을 유지하기 위해 클라이언트가 중단한 요청의 토큰을 계산하는 것입니다. 그 계산과 [토큰 하나짜리 폴백 요청](#amazon-bedrock)은 공유 `claude-apps-gateway` 세션으로 서명되므로, AWS는 폴백을 개발자가 아닌 `claude-apps-gateway`에 귀속합니다.

537 541 

538엄격한 개발자별 귀속을 위해서는 나열하는 모든 Bedrock 업스트림에 `session_name`과 함께 `assume_role`을 설정하십시오. 이 설정이 없는 업스트림은 처리하는 요청에 자체 자격 증명으로 서명합니다.

539 

540#### Amazon Bedrock Mantle 엔드포인트542#### Amazon Bedrock Mantle 엔드포인트

541 543 

542`mantle` 공급자는 Amazon Bedrock의 [Mantle 엔드포인트](https://code.claude.com/docs/ko/amazon-bedrock.md#use-the-mantle-endpoint)로 추론을 보냅니다. 게이트웨이 서버에 Claude Code v2.1.283 이상이 필요합니다. 이전 게이트웨이 릴리스는 부팅 시 이를 거부하므로, 추가하기 전에 모든 복제본을 업그레이드하십시오.544`mantle` 공급자는 Amazon Bedrock의 [Mantle 엔드포인트](https://code.claude.com/docs/ko/amazon-bedrock.md#use-the-mantle-endpoint)로 추론을 보냅니다. 게이트웨이 서버에 Claude Code v2.1.283 이상이 필요합니다. 이전 게이트웨이 릴리스는 부팅 시 이를 거부하므로, 추가하기 전에 모든 복제본을 업그레이드하십시오.


656 658 

657| 설정 | 방법 |659| 설정 | 방법 |

658| - | - |660| - | - |

659| RBAC | 게이트웨이의 ID에 Microsoft Foundry 리소스에 대한 `Azure AI User` 또는 `Cognitive Services User`를 부여하십시오 |661| RBAC | Microsoft Foundry 리소스에서 게이트웨이의 ID에 `Foundry User` 또는 `Cognitive Services User` 역할을 부여하세요 |

660| 배포 | Microsoft Foundry는 표준 모델 ID가 아닌 관리자가 선택한 배포 이름을 사용합니다. 각 표준 ID를 배포 이름에 매핑하는 [`models:`](#models) 블록을 추가하십시오. |662| 배포 | Microsoft Foundry는 표준 모델 ID가 아닌 관리자가 선택한 배포 이름을 사용합니다. 각 표준 ID를 배포 이름에 매핑하는 [`models:`](#models) 블록을 추가하십시오. |

661| AKS (워크로드 ID) | 사용자 할당 Managed Identity를 클러스터의 OIDC 발급자와 페더레이션하고 게이트웨이의 서비스 계정에 바인딩하십시오. `use_azure_ad: true`가 `WorkloadIdentityCredential`을 통해 이를 사용합니다. |663| AKS (워크로드 ID) | 사용자 할당 Managed Identity를 클러스터의 OIDC 발급자와 페더레이션하고 게이트웨이의 서비스 계정에 바인딩하십시오. `use_azure_ad: true`가 `WorkloadIdentityCredential`을 통해 이를 사용합니다. |

662| ACI / App Service | 리소스에서 시스템 할당 또는 사용자 할당 관리 ID를 활성화하십시오. `use_azure_ad: true`가 이를 자동으로 사용합니다. |664| ACI / App Service | 리소스에서 시스템 할당 또는 사용자 할당 관리 ID를 활성화하십시오. `use_azure_ad: true`가 이를 자동으로 사용합니다. |


1001 1003 

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

1003 1005 

1006`auto_include_builtin_models: false`에서 개발자가 `fable` 별칭을 사용할 수 있도록 하려면 `models`에 `claude-fable-5` 항목을 추가하세요. 이 ID는 게이트웨이에 로그인한 개발자에게 [`fable` 별칭](https://code.claude.com/docs/ko/model-config#fable-alias-resolution)이 확인되는 ID입니다. 이 항목이 없으면 메시지가 `API Error: 400 model claude-fable-5 is not in the operator's model allowlist`로 시작하는 오류와 함께 실패합니다.

1007 

1004### `managed`1008### `managed`

1005 1009 

1006`managed` 블록은 IdP 그룹 또는 이메일 도메인을 기준으로 하는 역할 기반 접근 정책을 정의합니다. 정책은 순서대로 평가되며, 기본적으로 첫 번째로 매칭된 정책이 선택된 다음 `match: {}` 포괄 기본 정책 위에 병합됩니다. 두 역할 정책에 매칭되는 사용자는 첫 번째 정책만 받으므로, [매칭되는 모든 정책을 적용](#apply-every-matching-policy)하지 않는 한 두 번째 정책의 거부 규칙은 적용되지 않습니다. 정책은 ETag/304 캐싱과 함께 `GET /managed/settings`에서 사용자별로 제공됩니다.1010`managed` 블록은 IdP 그룹 또는 이메일 도메인을 기준으로 하는 역할 기반 접근 정책을 정의합니다. 정책은 순서대로 평가되며, 기본적으로 첫 번째로 매칭된 정책이 선택된 다음 `match: {}` 포괄 기본 정책 위에 병합됩니다. 두 역할 정책에 매칭되는 사용자는 첫 번째 정책만 받으므로, [매칭되는 모든 정책을 적용](#apply-every-matching-policy)하지 않는 한 두 번째 정책의 거부 규칙은 적용되지 않습니다. 정책은 ETag/304 캐싱과 함께 `GET /managed/settings`에서 사용자별로 제공됩니다.


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

1026 1030 

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

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

1033 * `permissions.deny`와 `permissions.ask`

1034 * `disabledMcpjsonServers`와 `deniedMcpServers`

1035 * `blockedMarketplaces`와 `deniedModels`

1036 * `hooks` 이벤트 유형 배열

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

1030 1038 

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


1277 1285 

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

1279 1287 

1288> [!NOTE]

1289>

1290> Claude Code는 컨텍스트 윈도우 크기를 정할 때 별칭의 `upstream_model`을 읽지 않습니다. Claude Code가 인식하지 못하는 `models`의 별칭에 해당 모델의 윈도우를 부여하려면 [게이트웨이 또는 사용자 지정 모델 ID의 윈도우 수정](https://code.claude.com/docs/ko/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id)을 참조하세요.

1291 

1280#### 1시간 프롬프트 캐시1292#### 1시간 프롬프트 캐시

1281 1293 

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


1379 1391 

1380##### 게이트웨이가 부팅 시 거부하는 항목1392##### 게이트웨이가 부팅 시 거부하는 항목

1381 1393 

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

1383 1395 

1384* 알 수 없는 키1396* 빈 값처럼 Claude Desktop이 거부하거나 조용히 무시할 값을 가진 인식된 키.

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

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

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

1399* v2.1.300부터, 셀프 호스팅 세션 호스트용 키처럼 이름이 `selfHosted`로 시작하는 모든 키. 게이트웨이를 v2.1.300 이상으로 업그레이드하기 전에 이러한 키를 제거하세요.

1388 1400 

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

1390 1402 

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

1392 1404 

1405##### 게이트웨이가 모르는 키

1406 

1407Claude Code v2.1.295 이상을 실행하는 게이트웨이에서는 최신 Claude Desktop 릴리스의 키 대부분에 게이트웨이 업그레이드가 필요하지 않습니다. v2.1.321 이상에서는 알려진 키 안의 새 하위 키 대부분도 마찬가지입니다.

1408 

1409다음과 같은 일부 키와 값은 여전히 부팅에 실패합니다:

1410 

1411* 알려진 키의 고정 값 목록에 추가된 새 선택지.

1412* `disableAutoUpdates` 대신 `disable_auto_updates`처럼 `desktop` 블록에서 설정할 수 있는 키의 오타로 보이는 키. 오류에서 이름을 제안합니다.

1413 

1414각 경우에, 해당 이름이나 값이 최신 Claude Desktop 릴리스에 실제로 있다면 [게이트웨이를 최신 릴리스로 업그레이드](https://code.claude.com/docs/ko/claude-apps-gateway-deploy.md#upgrades)하세요. 그렇지 않다면 수정하거나 제거하세요. 배포 전에 확인하려면 [정책을 테스트](#test-a-policy-before-deployment)하세요.

1415 

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

1394 1417 

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

1396 1419 

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

1398 1421 

Details

92 92 

93바이너리 외에도 이미지는 다음이 필요합니다:93바이너리 외에도 이미지는 다음이 필요합니다:

94 94 

95* **glibc 기반 이미지**: glibc 빌드의 유일한 동적 종속성은 glibc 라이브러리입니다. Musl 기반 이미지는 `linux-x64-musl` 또는 `linux-arm64-musl` 빌드와 추가 패키지가 필요합니다. [Alpine Linux 설정](https://code.claude.com/docs/ko/setup.md#alpine-linux-and-musl-based-distributions)을 참조하세요.95* **glibc 기반 이미지**: glibc 빌드의 유일한 동적 의존성은 glibc 라이브러리입니다. Musl 기반 이미지에는 `linux-x64-musl` 또는 `linux-arm64-musl` 빌드가 필요하며, 이 빌드의 유일한 동적 의존성은 musl입니다.

96* **쓰기 가능한 상태 디렉토리**: 게이트웨이는 모든 사용자로 실행되지만, 최소 이미지에는 쓰기 가능한 홈이 없습니다. `CLAUDE_CONFIG_DIR`을 `/tmp/.claude`와 같은 쓰기 가능한 경로로 설정하세요.96* **쓰기 가능한 상태 디렉토리**: 게이트웨이는 모든 사용자로 실행되지만, 최소 이미지에는 쓰기 가능한 홈이 없습니다. `CLAUDE_CONFIG_DIR`을 `/tmp/.claude`와 같은 쓰기 가능한 경로로 설정하세요.

97* **컨테이너 명령**: `claude gateway --config /etc/claude/gateway.yaml`. 구성 파일은 읽기 전용으로 마운트되고 시크릿은 환경 변수로 제공됩니다. 게이트웨이는 `listen.port`에서 수신하며, 기본값은 `8080`입니다.97* **컨테이너 명령**: `claude gateway --config /etc/claude/gateway.yaml`. 구성 파일은 읽기 전용으로 마운트되고 시크릿은 환경 변수로 제공됩니다. 게이트웨이는 `listen.port`에서 수신하며, 기본값은 `8080`입니다.

98 98 

Details

189 189 

190```190```

191Sent to cloud session.191Sent to cloud session.

192Session ID: session_01DiUkqY2kzbUbDmW1w96rfi192Session ID: session_01HJKLMNOPQRSTUVWXYZ

193View: https://claude.ai/code/session_01DiUkqY2kzbUbDmW1w96rfi?from=cli&m=0193View: https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ?from=cli&m=0

194```194```

195 195 

196`--output-format json`을 전달하여 머신이 읽을 수 있는 결과를 얻습니다: 성공 시 `{ok, session_id, url}`, 또는 세션이 누락되거나 보관된 경우와 같이 전송이 실패할 때 `{ok: false, session_id, error}`입니다. 지원되지 않는 제공자 또는 비활성화된 조직 정책과 같은 구성 오류는 JSON 없이 stderr에 인쇄됩니다. `--output-format stream-json`은 `--cloud <session-id>`에서 지원되지 않습니다.196`--output-format json`을 전달하여 머신이 읽을 수 있는 결과를 얻습니다: 성공 시 `{ok, session_id, url}`, 또는 세션이 누락되거나 보관된 경우와 같이 전송이 실패할 때 `{ok: false, session_id, error}`입니다. 지원되지 않는 제공자 또는 비활성화된 조직 정책과 같은 구성 오류는 JSON 없이 stderr에 인쇄됩니다. `--output-format stream-json`은 `--cloud <session-id>`에서 지원되지 않습니다.

Details

274 274 

275스레드는 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)에서 실행되므로, Claude는 매번 묻지 않고 해당 폴더의 명령을 실행하고 파일을 편집합니다. 자동 모드를 사용할 수 없거나 해당 컴퓨터의 Claude Code에서 꺼져 있으면, 스레드는 자동 모드 없이 실행되고, 발생하는 모든 권한 프롬프트는 [승인을 기다리는 스레드 차단 해제](#unblock-a-thread-waiting-on-approval)에서 설명하는 대로 스레드에서 답변을 기다립니다.275스레드는 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)에서 실행되므로, Claude는 매번 묻지 않고 해당 폴더의 명령을 실행하고 파일을 편집합니다. 자동 모드를 사용할 수 없거나 해당 컴퓨터의 Claude Code에서 꺼져 있으면, 스레드는 자동 모드 없이 실행되고, 발생하는 모든 권한 프롬프트는 [승인을 기다리는 스레드 차단 해제](#unblock-a-thread-waiting-on-approval)에서 설명하는 대로 스레드에서 답변을 기다립니다.

276 276 

277다른 모드로 스레드를 실행하려면 [`--settings`](https://code.claude.com/docs/ko/remote-control#start-a-remote-control-session)와 함께 `claude remote-control`을 시작합니다. 그러면 해당 파일 또는 해당 컴퓨터의 설정에 있는 [`permissions.defaultMode`](https://code.claude.com/docs/ko/permission-modes#start-in-a-different-mode)로 다른 모드를 선택할 수 있습니다.

278 

277스레드가 실행되는 동안, 헤더의 노트북 아이콘은 컴퓨터가 연결되어 있는지 표시합니다. 클릭하여 스레드가 사용 중인 폴더를 확인하거나 연결을 끕니다. 해당 컴퓨터가 잠자기 상태일 때 스레드는 일시 중지되고, 데스크톱 앱 또는 `claude remote-control`이 종료되면 중지됩니다.279스레드가 실행되는 동안, 헤더의 노트북 아이콘은 컴퓨터가 연결되어 있는지 표시합니다. 클릭하여 스레드가 사용 중인 폴더를 확인하거나 연결을 끕니다. 해당 컴퓨터가 잠자기 상태일 때 스레드는 일시 중지되고, 데스크톱 앱 또는 `claude remote-control`이 종료되면 중지됩니다.

278 280 

279* **스레드를 다시 시작하려면**: [폴더와의 연결 끊김](#lost-contact-with-your-folder)을 참조합니다281* **스레드를 다시 시작하려면**: [폴더와의 연결 끊김](#lost-contact-with-your-folder)을 참조합니다

code-mode.md +224 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Code Mode로 코드에서 도구 호출 실행하기

6 

7> Claude가 한 단계에서 여러 도구 호출을 수행하는 JavaScript를 작성하는 실험적 기능인 Code Mode를 사용해 봅니다.

8 

9Code Mode는 Claude가 [도구](https://code.claude.com/docs/ko/tools-reference.md)를 사용하는 방식을 바꿉니다. Code Mode가 없으면 Claude는 Bash, Read, Edit 같은 도구 호출을 직접 요청하고, 다음에 무엇을 할지 결정하기 전에 각 결과를 읽습니다. Code Mode에서는 Claude가 도구 호출을 수행하는 JavaScript 코드를 작성하고, Claude Code가 세션에서 해당 코드를 실행합니다.

10 

11> [!NOTE]

12>

13> Code Mode는 실험적 기능이며 기본적으로 꺼져 있습니다. 어떤 릴리스에서든 변경되거나 제거될 수 있습니다. 피드백을 공유하려면 `/feedback`을 실행하십시오.

14 

15## Code Mode의 작동 방식

16 

17Code Mode 세션에서도 작업은 프롬프트로 설명하며, Claude는 이를 수행할 JavaScript를 작성합니다. 하나의 코드로 명령을 병렬로 실행하고, 한 결과를 다음 호출에 사용하고, 출력 중 Claude가 읽어야 하는 부분을 반환할 수 있습니다.

18 

19예를 들어 재시도 한도를 높여 달라고 요청하면, Claude는 파일을 찾고, 편집하고, 테스트를 실행하기 위해 다음과 같은 코드를 작성할 수 있습니다. 마지막 줄은 파일 경로와 테스트 출력을 Claude에게 반환합니다.

20 

21```javascript theme={null}

22const files = await $`rg -l "function retryPolicy" src`.text();

23const target = files.trim().split("\n")[0];

24await edit(target, "maxAttempts: 3", "maxAttempts: 5");

25({ edited: target, tests: $`npm test -- retryPolicy`.nothrow() });

26```

27 

28대화에는 코드가 아니라 편집의 diff 같은 도구 호출이 표시됩니다. 코드를 읽으려면 `Ctrl+O`를 눌러 [트랜스크립트 뷰어](https://code.claude.com/docs/ko/interactive-mode.md#transcript-viewer)를 엽니다. 각 코드는 그곳에 접힌 **Code** 행으로 표시되며, 펼치는 방법에 대한 안내가 함께 나타납니다.

29 

30### Code Mode를 사용할 때

31 

32서로 관련된 도구 호출이 많이 필요한 작업에서 Code Mode를 사용해 보십시오. 예를 들면 다음과 같습니다.

33 

34* 여러 파일에 걸쳐 반복되는 변경

35* Claude가 읽기 전에 결과를 필터링해야 하는 검색

36* 동시에 실행할 수 있는 여러 독립적인 명령

37 

38### Code Mode의 제한 사항

39 

40Code Mode를 켜기 전에 다음 제한 사항을 수용할 수 있는지 확인하십시오.

41 

42* **재개**: Code Mode 세션은 터미널에서 Code Mode를 켠 상태로만 재개할 수 있습니다

43* **자동 모드**: 자동 모드의 분류기는 [각 도구 호출이 아니라 코드를 검토합니다](#permission-checks)

44* **장시간 실행되는 코드**: [코드를 백그라운드에서 실행할 수 있는](#long-running-code) 경우를 제외하고, 코드가 끝날 때까지 기다려야 하며 코드는 10분 후 중지됩니다

45* **훅**: `PreToolUse` 훅을 실행할 수 없거나 시간 초과되면 [도구 호출이 거부](#tool-call-refused-by-a-hook)될 수 있고, `UserPromptSubmit` 훅에 의해 [코드 출력이 차단](#code-output-withheld-by-a-hook)될 수 있습니다

46* **사용할 수 없는 기능**: [Remote Control](https://code.claude.com/docs/ko/remote-control.md), [Claude in Chrome](https://code.claude.com/docs/ko/chrome.md), [컴퓨터 사용](https://code.claude.com/docs/ko/computer-use.md)을 사용할 수 없습니다

47* **세션 이동**: 세션을 Desktop 앱으로 옮기거나 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md)으로 전환할 수 없으며, `/fork`로 백그라운드 사본을 시작할 수 없습니다

48 

49## 요구 사항

50 

51* **버전**: 어느 [릴리스 채널](https://code.claude.com/docs/ko/setup.md#configure-release-channel)이든 Claude Code v2.1.323 이상. 이전 버전은 `it isn't open to your account yet` 사유 표시 여부와 관계없이 Code Mode 없이 시작됩니다

52* **계정**: Claude 구독 또는 Console 계정. 게이트웨이, Amazon Bedrock, Claude Platform on AWS, Google Cloud의 Agent Platform, Microsoft Foundry를 통해서는 Code Mode를 사용할 수 없습니다

53* **조직**: 조직이 [HIPAA 구성](https://code.claude.com/docs/ko/hipaa-setup.md)과 [zero data retention](https://code.claude.com/docs/ko/zero-data-retention.md)을 모두 사용하지 않아야 합니다

54* **모델**: Claude Opus 5.5, Sonnet 5.5, Haiku 5.5 또는 Fable 5.2

55* **사용 환경**: 터미널의 대화형 `claude` 세션. Code Mode는 `-p`, Agent SDK, VS Code 패널, Desktop 앱, 클라우드 세션에서는 작동하지 않습니다

56* **설치**: Claude Code의 [네이티브 빌드](https://code.claude.com/docs/ko/setup.md)

57* **Windows**: [Git for Windows](https://git-scm.com/downloads/win)가 설치되어 있어야 합니다

58 

59또한 API 키 헬퍼, 에이전트 팀, OpenTelemetry 내보내기, `DISABLE_TELEMETRY` 같은 일부 설정이 켜져 있으면 Code Mode를 시작할 수 없습니다. 각 항목의 해결 방법은 [Code Mode가 시작되지 않음](#code-mode-doesnt-start)을 참조하십시오.

60 

61## Code Mode 사용해 보기

62 

63Code Mode를 켜고 Claude에게 작업을 맡긴 다음, Claude가 작성한 코드를 살펴봅니다.

64 

65**1. 버전 확인하기**

66 

67`claude --version`을 실행합니다. 버전이 v2.1.323보다 이전이면 `claude update`를 실행합니다. `stable` 채널을 사용 중이고 업데이트 후에도 v2.1.323에 도달하지 않으면, `stable`이 따라잡을 때까지 기다리거나 [`latest`로 전환](https://code.claude.com/docs/ko/setup#configure-release-channel)하십시오.

68 

69**2. Code Mode를 켜고 Claude Code 시작하기**

70 

71[`CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`](https://code.claude.com/docs/ko/env-vars#variables) 환경 변수를 `1`로 설정합니다. Code Mode를 시험해 보려면 셸에서 설정합니다. 모든 새 세션에서 Code Mode를 켜려면 사용자 설정에서 설정합니다.

72 

73> [tab] macOS, Linux, WSL

74>

75> ```bash theme={null}

76> CLAUDE_CODE_EXPERIMENTAL_CODE_MODE=1 claude

77> ```

78 

79> [tab] Windows PowerShell

80>

81> ```powershell theme={null}

82> $env:CLAUDE_CODE_EXPERIMENTAL_CODE_MODE = "1"

83> claude

84> ```

85 

86> [tab] settings.json

87>

88> 다음 `env` 블록을 `~/.claude/settings.json`에 저장하고 `claude`를 시작합니다.

89>

90> ```json theme={null}

91> {

92> "env": {

93> "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "1"

94> }

95> }

96> ```

97>

98> Claude Code는 [프로젝트의 설정 파일에 있는 이 변수를 무시](https://code.claude.com/docs/ko/settings-reference.md#variables-claude-code-ignores-in-env)하므로, 복제한 저장소가 사용자 대신 Code Mode를 켤 수는 없습니다.

99 

100**3. Code Mode 사용 확인하기**

101 

102Claude Code는 첫 Code Mode 세션 전에 확인을 요청합니다. **Yes, turn on Code Mode**를 선택합니다. Claude Code가 다시 시작되고 세션 상단 근처에 다음 줄이 표시됩니다.

103 

104```text theme={null}

105Code Mode (experimental) is on · this session can be resumed only with Code Mode on

106```

107 

108다른 줄이 표시되거나 아무것도 표시되지 않으면 [Code Mode가 시작되지 않음](#code-mode-doesnt-start)을 참조하십시오.

109 

110**4. 도구 호출이 많은 작업을 Claude에게 맡기기**

111 

112잘 알고 있는 프로젝트에서 다음과 같은 프롬프트를 보냅니다.

113 

114```text theme={null}

115Read every Markdown file in this project and list the links that point to local files that don't exist.

116```

117 

118**5. Claude가 작성한 코드 읽기**

119 

120`Ctrl+O`를 누르고 **Code** 행을 펼쳐 도구 호출 뒤에 있는 JavaScript를 확인합니다. 대화로 돌아가려면 `Ctrl+O`를 다시 누릅니다.

121 

122> [!WARNING]

123>

124> 나중에 Code Mode 세션을 재개하려면 `claude --continue` 또는 `claude --resume`을 실행할 때 `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`를 `1`로 유지하십시오. Code Mode가 꺼져 있으면 Claude Code는 세션 재개를 거부합니다. Code Mode 없이 시작한 세션은 변수가 설정되어 있더라도 Code Mode 없이 재개됩니다.

125 

126### Code Mode 끄기

127 

128셸과 `~/.claude/settings.json`에서 `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`를 제거한 다음 새 세션을 시작합니다. 변수를 유지하고 두 위치 중 어느 곳에서든 값을 `0`으로 변경할 수도 있습니다. 한 곳에 `0`이 있으면 다른 곳에 `1`을 설정하더라도 Code Mode는 꺼진 상태로 유지됩니다.

129 

130### 조직에서 Code Mode 차단하기

131 

132조직의 누구도 Code Mode를 사용할 수 없도록 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)에 값이 `0`인 `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`를 추가합니다.

133 

134```json theme={null}

135{

136 "env": {

137 "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "0"

138 }

139}

140```

141 

142Code Mode 세션에 있는 사용자는 Claude Code를 종료하거나 다시 시작할 때까지 해당 세션에 머무릅니다. 그 이후에는 사용자가 Code Mode 없이 시작하며, `0`이 적용되어 있는 동안에는 Code Mode 세션을 재개할 수 없습니다. 관리형 설정에서 사용자에게 Code Mode를 켜 줄 수는 없습니다.

143 

144## 권한과 장시간 실행되는 코드

145 

146권한 모드에 따라 Claude의 코드가 검사되는 방식과, 코드가 실행되는 동안 Claude와 대화할 수 있는지가 결정됩니다.

147 

148### 권한 검사

149 

150Claude의 코드가 수행하는 각 도구 호출은 `deny` 및 `ask` [권한 규칙](https://code.claude.com/docs/ko/permissions.md)과 [`PreToolUse` 훅](https://code.claude.com/docs/ko/hooks#pretooluse)을 거칩니다. `Bash` 같은 도구에 대한 규칙이나 matcher를 변경할 필요는 없습니다. 규칙과 훅 외에도, 자동 모드에서는 분류기가 코드를 검토하고, 확인을 요청하는 모드에서는 사용자가 프롬프트에 응답합니다.

151 

152* **[자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)**: 분류기는 각 도구 호출이 아니라 각 코드를 실행 전에 검토합니다. 검색 출력에서 가져온 경로처럼 실행 시점에 계산되는 값은 보지 못하므로, 반드시 제어해야 하는 호출에 대해서는 규칙이나 훅을 유지하십시오. [이전 코드가 실행되는 동안 새 코드가 시작되면 확인 요청](#permission-prompt-with-a-countdown)을 받을 수도 있습니다

153* **기타 [권한 모드](https://code.claude.com/docs/ko/permission-modes.md)**: 코드는 검토 없이 시작되며, 해당 모드에서 확인을 요청했을 각 도구 호출에 대해 확인 요청을 받습니다

154 

155코드 자체를 검사하려면 Claude의 코드를 실행하는 도구인 `REPL`과 일치하는 `PreToolUse` 훅을 작성하고 `tool_input.code`에서 JavaScript를 읽으십시오.

156 

157> [!WARNING]

158>

159> Bash 규칙은 명령 텍스트와 일치시키므로, Code Mode 사용 여부와 관계없이 Claude는 거부된 명령을 [규칙과 일치하지 않는 형태로](https://code.claude.com/docs/ko/permissions.md#bash-rule-limits) 실행할 수 있습니다. 명령 텍스트에 의존하지 않는 제한은 [샌드박싱](https://code.claude.com/docs/ko/sandboxing.md)을 참조하십시오.

160 

161### 장시간 실행되는 코드

162 

163코드가 긴 빌드나 테스트를 실행하는 동안 Claude는 이를 기다리거나 백그라운드에서 계속 실행되도록 합니다.

164 

165* **대기**: Claude는 코드가 끝난 후 응답하며, 코드는 권한 프롬프트에서 보낸 시간을 포함해 10분 후 중지됩니다

166* **백그라운드**: Claude와 계속 대화할 수 있으며, 코드는 최대 2시간 동안 실행될 수 있습니다

167 

168백그라운드 코드를 사용하려면 자동 모드 또는 `bypassPermissions` 모드로 세션을 시작하십시오. 그래도 Claude가 기다린다면 현재 모드와 세션을 시작한 방법을 확인하십시오.

169 

170* **다른 모드로 전환한 경우**: 시작했던 모드로 돌아올 때까지 `Shift+Tab`을 누릅니다

171* **다른 모드로 시작했거나 `claude --resume` 목록에서 세션을 선택한 경우**: [자동 모드를 사용할 수 있다면](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode) 종료한 다음, Code Mode를 켠 상태로 `claude --continue --permission-mode auto`를 실행합니다

172* **`--tools`에 도구 이름을 전달한 경우**: 해당 플래그 없이 자동 모드로 다시 시작합니다

173 

174## 문제 해결

175 

176### Code Mode가 시작되지 않음

177 

178세션 상단 근처에 `Code Mode (experimental) isn't available`이 표시되면 Claude Code가 Code Mode 없이 시작되었다는 의미입니다. 사유는 같은 줄에 이어서 표시되며, `/status`에도 표시됩니다. 다음 표에서 사유를 찾아 변경한 다음 새 세션을 시작하십시오. 표에 없는 사유라면 [요구 사항](#requirements)을 확인하십시오.

179 

180| 사유에 포함된 내용 | 해결 방법 |

181| :- | :- |

182| `it isn't open to your account yet` | 버전이 v2.1.323보다 이전이면 [업데이트](#try-code-mode)합니다. 그렇지 않으면 네트워크 연결을 확인하고 다시 시작합니다. 사유가 계속 표시되면 다른 날 다시 시도하십시오 |

183| `it only works with the Anthropic API` | 클라우드 제공업체, 게이트웨이 또는 사용자 지정 `ANTHROPIC_BASE_URL`을 통해 요청을 라우팅하는 설정을 제거합니다 |

184| `it doesn't work with an API key helper` | `apiKeyHelper`, `ANTHROPIC_AUTH_TOKEN`, 그리고 `ANTHROPIC_CUSTOM_HEADERS`에 있는 모든 `Authorization` 또는 `X-Api-Key` 헤더를 제거합니다. 그런 다음 로그인하거나 `ANTHROPIC_API_KEY`를 설정합니다 |

185| `it only works with Opus 5.5, Sonnet 5.5 and later models` | 예를 들어 `--model opus`를 사용해 [지원되는 모델](#requirements)로 시작합니다. Haiku 5.5와 Fable 5.2도 작동합니다 |

186| `it doesn't work in background jobs` | `--remote-control` 없이 포그라운드에서 시작합니다 |

187| `it needs settings that Claude Code downloads from Anthropic` | `DISABLE_TELEMETRY`처럼 [기능 플래그 가져오기를 끄는](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching) 변수를 해제합니다 |

188| `OpenTelemetry is on` | [OpenTelemetry 내보내기](https://code.claude.com/docs/ko/monitoring-usage.md) 없이 작업할 수 있다면 `CLAUDE_CODE_ENABLE_TELEMETRY`와 `ENABLE_BETA_TRACING_DETAILED`를 해제합니다 |

189| `it doesn't yet work with an installed mod` | 도구 호출을 검사하는 [mod](https://code.claude.com/docs/ko/plugins/mods/overview.md)를 끕니다 |

190| `it can't be used together with agent teams yet` | `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`를 해제합니다 |

191| `this launch's tool options` | `--restricted` 없이 시작하고, `--tools`에 `REPL`을 추가하고, `--disallowedTools`와 `deny` 규칙에서 `REPL`을 제거합니다 |

192| `couldn't save your answer` | `~/.claude.json`을 쓰기 가능하게 만듭니다 |

193| `your organization's settings don't allow it` | 관리자에게 [관리형 설정](#block-code-mode-for-your-organization)에 대해 문의합니다 |

194 

195Code Mode에 관한 줄이 전혀 표시되지 않으면 `claude --version`을 실행하십시오. 버전이 v2.1.323보다 이전이면 업데이트합니다. 그런 다음 셸 또는 사용자 설정에서 `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`가 `1`인지 확인하고, 해당 위치와 모든 `--settings` 파일에서 `0`을 제거하십시오.

196 

197### 카운트다운이 있는 권한 프롬프트

198 

199자동 모드에서 이전 코드가 아직 실행 중일 때 Claude가 코드를 추가로 시작하면, 이전 코드는 분류기 검토를 받지 못하게 됩니다. 그러면 Claude Code는 이전 코드의 남은 호출 중 검토가 필요했을 호출에 대해 사용자에게 묻습니다. IDE가 연결되어 있지 않으면 프롬프트에 카운트다운이 표시됩니다.

200 

201```text theme={null}

202Claude Code will automatically block this request in 1:59, to avoid holding up an unattended session

203```

204 

205카운트다운이 끝나기 전에 응답하십시오. 그렇지 않으면 해당 호출이 거부되고, 이후 카운트다운이 표시될 호출은 프롬프트 없이 거부됩니다. 프롬프트를 다시 보려면 Claude에게 메시지를 보내십시오.

206 

207### 훅에 의해 거부된 도구 호출

208 

209Claude가 거부된 도구 호출을 보고하면 오류 텍스트를 요청하십시오. 다음 오류는 `PreToolUse` 훅이 결정을 내리지 않았다는 의미이며, 이 경우 [`onFailure`](https://code.claude.com/docs/ko/hooks#block-the-action-when-a-hook-fails)가 설정되지 않았더라도 호출이 거부됩니다.

210 

211* **`the hook failed`**: Claude의 코드에서 온 호출에 대해 훅을 시작할 수 없었거나, 훅이 종료(kill)되었거나, 126, 127 또는 128보다 큰 코드로 종료되었거나, HTTP 오류 또는 잘못된 출력을 반환했습니다. 훅을 수정하십시오

212* **`the hook did not finish`**: Claude의 코드에서 온 호출, 또는 Claude가 세션에서 코드를 실행한 이후의 다른 모든 도구 호출에서 훅이 시간 초과되었습니다. 훅의 [`timeout`](https://code.claude.com/docs/ko/hooks#common-fields)을 늘리십시오

213 

214`command` 또는 `http` 훅이 실패하거나 시간 초과될 때 호출이 진행되도록 하려면 해당 훅에 `"onFailure": "continue"`를 설정하십시오. `command` 훅이 1과 같은 일반 코드로 종료되면, `"onFailure": "block"`을 설정한 경우를 제외하고 호출이 진행됩니다.

215 

216### 훅에 의해 보류된 코드 출력

217 

218Claude의 코드 출력이 나와야 할 곳에서 Claude가 훅의 차단 사유를 보고하면 [`UserPromptSubmit`](https://code.claude.com/docs/ko/hooks#userpromptsubmit) 훅을 확인하십시오. [코드를 백그라운드에서 실행할 수 있는](#long-running-code) 경우, 해당 이벤트의 `command`, `http`, `mcp_tool` 훅은 코드 출력에 대해서도 실행됩니다. 출력을 통과시키려면 입력의 `source`가 `poll_event`일 때 차단하지 않도록 훅을 변경하십시오.

219 

220## 관련 리소스

221 

222* [권한 모드](https://code.claude.com/docs/ko/permission-modes.md): 자동 모드와 확인을 요청하는 모드 비교

223* [훅 레퍼런스](https://code.claude.com/docs/ko/hooks.md): `PreToolUse` 및 `UserPromptSubmit` 훅 작성

224* [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md): 조직 전체에 하나의 구성 적용

commands.md +3 −5

Details

35아래 표에는 Claude Code에 포함된 모든 명령이 나열되어 있습니다. 대부분은 동작이 CLI에 직접 구현된 기본 제공 명령입니다. 다음 두 종류의 항목은 별도로 표시됩니다.35아래 표에는 Claude Code에 포함된 모든 명령이 나열되어 있습니다. 대부분은 동작이 CLI에 직접 구현된 기본 제공 명령입니다. 다음 두 종류의 항목은 별도로 표시됩니다.

36 36 

37* **[스킬](https://code.claude.com/docs/ko/skills.md#bundled-skills)**: 번들 스킬입니다. 사용자가 직접 작성하는 스킬과 같은 방식으로 작동하며, Claude에게 전달되는 프롬프트입니다.37* **[스킬](https://code.claude.com/docs/ko/skills.md#bundled-skills)**: 번들 스킬입니다. 사용자가 직접 작성하는 스킬과 같은 방식으로 작동하며, Claude에게 전달되는 프롬프트입니다.

38 * `/verify`는 사용자가 호출할 때만 실행됩니다.

39* **[워크플로](https://code.claude.com/docs/ko/workflows.md#bundled-workflows)**: 작업을 여러 서브에이전트에 분산하여 백그라운드에서 실행하는 번들 [동적 워크플로](https://code.claude.com/docs/ko/workflows.md)입니다.38* **[워크플로](https://code.claude.com/docs/ko/workflows.md#bundled-workflows)**: 작업을 여러 서브에이전트에 분산하여 백그라운드에서 실행하는 번들 [동적 워크플로](https://code.claude.com/docs/ko/workflows.md)입니다.

40 * `/deep-research`는 사용자가 호출할 때만 실행됩니다.

41 39 

42직접 명령을 추가하려면 [스킬](https://code.claude.com/docs/ko/skills.md)을 참조하세요.40직접 명령을 추가하려면 [스킬](https://code.claude.com/docs/ko/skills.md)을 참조하세요.

43 41 


149| `/stats` | `/usage`의 별칭입니다. Stats 탭에서 열립니다 |147| `/stats` | `/usage`의 별칭입니다. Stats 탭에서 열립니다 |

150| `/status` | 버전, 모델, 계정, 연결 상태를 보여주는 Status 탭에서 설정 인터페이스를 엽니다. `Session kind` 행은 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md)에서 터미널 연결 여부에 따라 `background job · attached` 또는 `background job · unattended`로 표시되며, 그 외 세션에서는 `interactive`로 표시됩니다. v2.1.221 이전에는 `/status`에 이 행이 표시되지 않았습니다. Claude가 응답하는 중에도 작동합니다 |148| `/status` | 버전, 모델, 계정, 연결 상태를 보여주는 Status 탭에서 설정 인터페이스를 엽니다. `Session kind` 행은 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md)에서 터미널 연결 여부에 따라 `background job · attached` 또는 `background job · unattended`로 표시되며, 그 외 세션에서는 `interactive`로 표시됩니다. v2.1.221 이전에는 `/status`에 이 행이 표시되지 않았습니다. Claude가 응답하는 중에도 작동합니다 |

151| `/statusline` | Claude Code의 [상태줄](https://code.claude.com/docs/ko/statusline.md)을 구성합니다. 원하는 내용을 설명하거나, 인수 없이 실행하여 셸 프롬프트를 바탕으로 자동 구성합니다 |149| `/statusline` | Claude Code의 [상태줄](https://code.claude.com/docs/ko/statusline.md)을 구성합니다. 원하는 내용을 설명하거나, 인수 없이 실행하여 셸 프롬프트를 바탕으로 자동 구성합니다 |

152| `/stickers` | Claude Code 스티커를 주문합니다 |150| `/stickers` | Claude Code 스티커 제공 여부를 확인합니다 |

153| `/stop` | 연결된 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md) 또는 [엿보기 답장](https://code.claude.com/docs/ko/agent-view.md#peek-and-reply)으로 이 명령을 보낸 세션을 중지합니다. 트랜스크립트와 worktree는 유지됩니다. 중지하지 않고 분리하려면 `/exit`를 사용하거나 `←`를 누릅니다 |151| `/stop` | 연결된 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md) 또는 [엿보기 답장](https://code.claude.com/docs/ko/agent-view.md#peek-and-reply)으로 이 명령을 보낸 세션을 중지합니다. 트랜스크립트와 worktree는 유지됩니다. 중지하지 않고 분리하려면 `/exit`를 사용하거나 `←`를 누릅니다 |

154| `/subtask <task>` | [분기된 서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#fork-the-current-conversation)를 생성합니다. 이는 전체 대화를 상속받아 사용자가 계속 작업하는 동안 해당 작업을 수행하는 백그라운드 서브에이전트입니다. 완료되면 결과가 이 대화로 돌아옵니다. 대신 대화를 별도의 백그라운드 세션으로 복사하려면 `/fork`를 사용합니다. [에이전트 보기가 꺼져 있으면](https://code.claude.com/docs/ko/agent-view.md#turn-off-agent-view) `/subtask`를 사용할 수 없으며 대신 `/fork`가 분기된 서브에이전트를 생성합니다 |152| `/subtask <task>` | [분기된 서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#fork-the-current-conversation)를 생성합니다. 이는 전체 대화를 상속받아 사용자가 계속 작업하는 동안 해당 작업을 수행하는 백그라운드 서브에이전트입니다. 완료되면 결과가 이 대화로 돌아옵니다. 대신 대화를 별도의 백그라운드 세션으로 복사하려면 `/fork`를 사용합니다. [에이전트 보기가 꺼져 있으면](https://code.claude.com/docs/ko/agent-view.md#turn-off-agent-view) `/subtask`를 사용할 수 없으며 대신 `/fork`가 분기된 서브에이전트를 생성합니다 |

155| `/tasks` | 완료된 서브에이전트를 포함하여 현재 세션의 백그라운드 작업을 확인하고 관리합니다. `/bashes`로도 사용할 수 있습니다 |153| `/tasks` | 완료된 서브에이전트를 포함하여 현재 세션의 백그라운드 작업을 확인하고 관리합니다. `/bashes`로도 사용할 수 있습니다 |


161| `/ultraplan <prompt>` | 제거되었습니다. 대신 [플랜 모드](https://code.claude.com/docs/ko/permission-modes.md#analyze-before-you-edit-with-plan-mode)를 사용하세요. 이전에는 브라우저에서 리뷰할 수 있도록 계획 작업을 [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)으로 보냈습니다 |159| `/ultraplan <prompt>` | 제거되었습니다. 대신 [플랜 모드](https://code.claude.com/docs/ko/permission-modes.md#analyze-before-you-edit-with-plan-mode)를 사용하세요. 이전에는 브라우저에서 리뷰할 수 있도록 계획 작업을 [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)으로 보냈습니다 |

162| `/ultrareview [PR or branch]` | [ultrareview](https://code.claude.com/docs/ko/ultrareview.md)를 사용하여 클라우드 샌드박스에서 심층 멀티 에이전트 코드 리뷰를 실행합니다. 해당 풀 리퀘스트를 리뷰하려면 PR 참조를 전달하고, 비교 기준을 변경하려면 기준 브랜치 또는 커밋을 전달합니다. 권장 호출 방식은 `/code-review ultra`이며 `/ultrareview`는 별칭입니다. Pro, Max, Ultra에서는 무료 실행 3회가 포함되며, 그 이후에는 [사용량 크레딧](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)이 필요합니다 |160| `/ultrareview [PR or branch]` | [ultrareview](https://code.claude.com/docs/ko/ultrareview.md)를 사용하여 클라우드 샌드박스에서 심층 멀티 에이전트 코드 리뷰를 실행합니다. 해당 풀 리퀘스트를 리뷰하려면 PR 참조를 전달하고, 비교 기준을 변경하려면 기준 브랜치 또는 커밋을 전달합니다. 권장 호출 방식은 `/code-review ultra`이며 `/ultrareview`는 별칭입니다. Pro, Max, Ultra에서는 무료 실행 3회가 포함되며, 그 이후에는 [사용량 크레딧](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)이 필요합니다 |

163| `/update-config [request]` | **[스킬](https://code.claude.com/docs/ko/skills.md#bundled-skills).** 명령 허용, 환경 변수 설정, [훅](https://code.claude.com/docs/ko/hooks.md) 추가 같은 설정 변경을 설명하면 Claude가 해당하는 [`settings.json`](https://code.claude.com/docs/ko/settings) 파일을 편집합니다. 테마와 모델 같은 옵션에는 대신 `/config`를 사용합니다 |161| `/update-config [request]` | **[스킬](https://code.claude.com/docs/ko/skills.md#bundled-skills).** 명령 허용, 환경 변수 설정, [훅](https://code.claude.com/docs/ko/hooks.md) 추가 같은 설정 변경을 설명하면 Claude가 해당하는 [`settings.json`](https://code.claude.com/docs/ko/settings) 파일을 편집합니다. 테마와 모델 같은 옵션에는 대신 `/config`를 사용합니다 |

164| `/upgrade` | 더 높은 플랜 등급으로 전환하기 위해 브라우저에서 업그레이드 페이지를 엽니다. 브라우저를 열지 못하면 명령이 URL을 출력하지 않고 로그인 프롬프트를 표시합니다 |162| `/upgrade` | 더 높은 플랜 등급으로 전환하기 위해 브라우저에서 업그레이드 페이지를 엽니다. SSH 사용 시처럼 브라우저로 페이지를 열 수 없는 경우 명령이 로그인 프롬프트 위에 페이지 URL을 출력합니다. URL 출력은 Claude Code v2.1.323 이상이 필요합니다 |

165| `/usage` | 세션 비용, 플랜 사용 한도, 활동 통계를 표시합니다. Pro, Max, Ultra, Team 또는 Enterprise 플랜에서는 [플랜 한도에 집계되는 항목의 세부 내역](https://code.claude.com/docs/ko/costs.md#plan-usage-breakdown)이 포함됩니다. 지출을 추적하는 Claude apps 게이트웨이를 사용하는 경우 [게이트웨이를 통한 지출](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md#usage-warnings-in-claude-code)을 표시합니다. `/cost`와 `/stats`는 별칭입니다 |163| `/usage` | 세션 비용, 플랜 사용 한도, 활동 통계를 표시합니다. Pro, Max, Ultra, Team 또는 Enterprise 플랜에서는 [플랜 한도에 집계되는 항목의 세부 내역](https://code.claude.com/docs/ko/costs.md#plan-usage-breakdown)이 포함됩니다. 지출을 추적하는 Claude apps 게이트웨이를 사용하는 경우 [게이트웨이를 통한 지출](https://code.claude.com/docs/ko/claude-apps-gateway-spend-limits.md#usage-warnings-in-claude-code)을 표시합니다. `/cost`와 `/stats`는 별칭입니다 |

166| `/usage-credits` | 한도에 도달했을 때 사용량 크레딧을 구성하거나 관리자에게 요청합니다. 브라우저에서 [사용량 크레딧 청구 설정](https://code.claude.com/docs/ko/costs.md#add-usage-credits-to-your-subscription)을 엽니다. 단, 청구 액세스 권한이 없는 Team 및 Enterprise 구성원은 요청이 관리자에게 알림으로 전달된다는 것을 대화 상자에서 확인한 후, CLI에서 관리자에게 사용량 크레딧 요청을 보냅니다. SSH 사용 시처럼 브라우저로 청구 페이지를 열 수 없는 경우 명령이 대신 방문할 URL을 출력합니다. 이 기능은 Claude Code v2.1.205 이상이 필요하며, 이전 버전에서는 이 경우 아무것도 표시되지 않았습니다. 이전 명칭: `/extra-usage` |164| `/usage-credits` | 한도에 도달했을 때 사용량 크레딧을 구성하거나 관리자에게 요청합니다. 브라우저에서 [사용량 크레딧 청구 설정](https://code.claude.com/docs/ko/costs.md#add-usage-credits-to-your-subscription)을 엽니다. 청구 액세스 권한이 없는 Team 및 Enterprise 구성원은 대신 CLI에서 관리자에게 사용량 크레딧 요청을 보냅니다. SSH 사용 시처럼 브라우저로 페이지를 열 수 없는 터미널에서는 명령이 URL을 출력합니다. URL 출력은 Claude Code v2.1.205 이상이 필요합니다. 이전 명칭: `/extra-usage` |

167| `/verify` | **[스킬](https://code.claude.com/docs/ko/skills.md#bundled-skills).** 테스트나 타입 검사에 의존하지 않고, 프로젝트의 앱을 빌드하고 실행하여 결과를 관찰함으로써 코드 변경이 의도대로 작동하는지 확인합니다. [앱 실행 및 검증](https://code.claude.com/docs/ko/skills.md#run-and-verify-your-app)을 참조하세요 |165| `/verify` | **[스킬](https://code.claude.com/docs/ko/skills.md#bundled-skills).** 테스트나 타입 검사에 의존하지 않고, 프로젝트의 앱을 빌드하고 실행하여 결과를 관찰함으로써 코드 변경이 의도대로 작동하는지 확인합니다. [앱 실행 및 검증](https://code.claude.com/docs/ko/skills.md#run-and-verify-your-app)을 참조하세요 |

168| `/vim` | v2.1.92에서 제거되었습니다. Vim 편집 모드와 Normal 편집 모드 사이를 전환하려면 `/config` → Editor mode를 사용하세요 |166| `/vim` | v2.1.92에서 제거되었습니다. Vim 편집 모드와 Normal 편집 모드 사이를 전환하려면 `/config` → Editor mode를 사용하세요 |

169| `/voice [hold\|tap\|off]` | [음성 받아쓰기](https://code.claude.com/docs/ko/voice-dictation.md)를 전환하거나 특정 모드로 활성화합니다. Claude.ai 계정이 필요합니다 |167| `/voice [hold\|tap\|off]` | [음성 받아쓰기](https://code.claude.com/docs/ko/voice-dictation.md)를 전환하거나 특정 모드로 활성화합니다. Claude.ai 계정이 필요합니다 |

desktop.md +0 −4

Details

2261 2261 

2262Desktop 앱은 `claude_desktop_config.json`에서 MCP 서버를 로컬 Code 탭 세션으로 로드하며, `~/.claude.json` 및 `.mcp.json`의 서버와 함께 로드됩니다. `claude_desktop_config.json`에서 정의한 서버는 Desktop 채팅 사용 환경과 로컬 Code 탭 세션 모두에서 사용 가능합니다.2262Desktop 앱은 `claude_desktop_config.json`에서 MCP 서버를 로컬 Code 탭 세션으로 로드하며, `~/.claude.json` 및 `.mcp.json`의 서버와 함께 로드됩니다. `claude_desktop_config.json`에서 정의한 서버는 Desktop 채팅 사용 환경과 로컬 Code 탭 세션 모두에서 사용 가능합니다.

2263 2263 

2264`claude_desktop_config.json`과 `~/.claude.json` 또는 `.mcp.json`에서 동일한 서버 이름을 정의하면, 로컬 세션의 Code 탭은 한 번 연결되고 `claude_desktop_config.json` 정의를 사용합니다.

2265 

2266앱은 또한 `~/.claude.json`의 stdio 서버를 로컬 세션의 임베드된 CLI로 다시 전달합니다. `~/.claude.json`(사용자 범위)의 최상위 수준과 `.mcp.json`이 동일한 stdio 서버 이름을 정의할 때, Code 탭은 `~/.claude.json` 정의를 사용하며, CLI [범위 계층](https://code.claude.com/docs/ko/mcp.md#scope-hierarchy-and-precedence)에서 벗어납니다.

2267 

2268> [!NOTE]2264> [!NOTE]

2269>2265>

2270> 독립 실행형 CLI는 `claude_desktop_config.json`을 읽지 않습니다. macOS 및 WSL에서는 `claude mcp add-from-claude-desktop`을 실행하여 해당 서버를 `~/.claude.json`으로 복사합니다. 가져오기 흐름 및 범위 옵션은 [Claude Desktop에서 MCP 서버 가져오기](https://code.claude.com/docs/ko/mcp.md#import-mcp-servers-from-claude-desktop)를 참조하세요.2266> 독립 실행형 CLI는 `claude_desktop_config.json`을 읽지 않습니다. macOS 및 WSL에서는 `claude mcp add-from-claude-desktop`을 실행하여 해당 서버를 `~/.claude.json`으로 복사합니다. 가져오기 흐름 및 범위 옵션은 [Claude Desktop에서 MCP 서버 가져오기](https://code.claude.com/docs/ko/mcp.md#import-mcp-servers-from-claude-desktop)를 참조하세요.

Details

71 71 

72애플리케이션 런처에서 **Claude**를 실행하거나 터미널에서 `claude-desktop`을 실행한 후 Anthropic 계정으로 로그인합니다.72애플리케이션 런처에서 **Claude**를 실행하거나 터미널에서 `claude-desktop`을 실행한 후 Anthropic 계정으로 로그인합니다.

73 73 

74Linux 앱은 macOS 및 Windows와 동일한 방식으로 로그인합니다: claude.ai 구독 또는 조직의 SSO를 통해 로그인합니다. API 키 인증의 경우 [CLI](https://code.claude.com/docs/ko/quickstart.md)를 사용하세요. 대신 Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry 또는 LLM 게이트웨이와 함께 Desktop을 사용하려면 [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview)를 참조하세요. 이러한 배포에서 프록시 서버 및 사용자 지정 인증 기관을 설정하려면 [네트워크 구성](https://code.claude.com/docs/ko/network-config.md)을 참조하세요.74Linux 앱은 macOS 및 Windows와 동일한 방식으로 로그인합니다: claude.ai 구독 또는 조직의 SSO를 통해 로그인합니다. 대신 Claude API 키, Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry 또는 LLM 게이트웨이와 함께 Desktop을 사용하려면 [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview)를 참조하세요. 이러한 배포에서 프록시 서버 및 사용자 지정 인증 기관을 설정하려면 [네트워크 구성](https://code.claude.com/docs/ko/network-config.md)을 참조하세요.

75 75 

76### 다운로드한 파일에서 설치76### 다운로드한 파일에서 설치

77 77 

Details

83 83 

84**8. 권한 모드와 모델 선택하기**84**8. 권한 모드와 모델 선택하기**

85 85 

86지침 상자의 도구 모음에서 [권한 모드](#permissions-for-scheduled-tasks)와 모델을 선택합니다. 변경하지 않으면 실행 시 Claude Code 설정과 기본 모델이 사용됩니다.86지침 상자의 도구 모음에서 [권한 모드](#permissions-for-scheduled-tasks)와 모델을 선택합니다.

87 

88* **권한 모드**: 변경하지 않으면 실행 시 Claude Code 설정이 사용됩니다.

89* **모델**: 모델 메뉴에 **Default · Set by admin**이 표시되고 다른 모델을 선택하지 않으면, 실행 시 조직이 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)에서 지정한 모델이 사용됩니다. 앱이 열릴 때 시작되는 [보충 실행](#missed-runs)에서는 대신 [계정의 런타임 기본값](https://code.claude.com/docs/ko/model-config.md#default-model-setting)이 사용될 수 있습니다.

87 90 

88**9. 작업 만들기**91**9. 작업 만들기**

89 92 

90**Create**를 클릭합니다. 아직 폴더를 신뢰하지 않은 경우 Desktop이 이 시점에 폴더를 신뢰하도록 요청합니다. 작업의 세부 정보 페이지가 열립니다.93**Create**를 클릭합니다. 아직 폴더를 신뢰하지 않은 경우 Desktop이 이 시점에 폴더를 신뢰하도록 요청합니다. 작업의 세부 정보 페이지가 열립니다.

91 94 

95**Default · Set by admin**이 어떤 모델을 가리키는지 확인하려면 세부 정보 페이지에서 **Run now**를 클릭하여 작업을 즉시 실행합니다. 그런 다음 [실행의 세션을 엽니다](#find-a-runs-session). 세션에서 프롬프트 상자 아래의 행에 모델 이름이 표시됩니다.

96 

92세부 정보 페이지에서 연필 아이콘을 클릭하면 [**Edit** 양식](#manage-scheduled-tasks)이 열립니다. 여기에서 Desktop이 지침을 바탕으로 채운 **Description**을 변경하거나, **Worktree**를 선택하거나, 일정을 **Manual** 또는 **Custom**으로 전환할 수 있습니다.97세부 정보 페이지에서 연필 아이콘을 클릭하면 [**Edit** 양식](#manage-scheduled-tasks)이 열립니다. 여기에서 Desktop이 지침을 바탕으로 채운 **Description**을 변경하거나, **Worktree**를 선택하거나, 일정을 **Manual** 또는 **Custom**으로 전환할 수 있습니다.

93 98 

94모든 세션에서 원하는 작업을 설명하여 작업을 만들 수도 있습니다. 예를 들어, "매일 아침 9시에 실행되는 일일 코드 리뷰 설정"은 반복 작업을 만듭니다. "내일 오후 3시에 배포 확인을 상기시켜 줘"와 같은 요청은 실행 후 스스로 비활성화되는 일회성 작업을 만듭니다.99모든 세션에서 원하는 작업을 설명하여 작업을 만들 수도 있습니다. 예를 들어, "매일 아침 9시에 실행되는 일일 코드 리뷰 설정"은 반복 작업을 만듭니다. "내일 오후 3시에 배포 확인을 상기시켜 줘"와 같은 요청은 실행 후 스스로 비활성화되는 일회성 작업을 만듭니다.


181 186 

182작업이 `update_scheduled_task` MCP 도구로 자신의 일정이나 프롬프트를 변경하도록 허용하려면 **Run now**를 클릭하고 매번 호출을 승인합니다.187작업이 `update_scheduled_task` MCP 도구로 자신의 일정이나 프롬프트를 변경하도록 허용하려면 **Run now**를 클릭하고 매번 호출을 승인합니다.

183 188 

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

185 190 

186## 관련 리소스191## 관련 리소스

187 192 

env-vars.md +7 −3

Details

211| `CLAUDE_CODE_AUTO_CONNECT_IDE` | 자동 [IDE 연결](https://code.claude.com/docs/ko/vs-code.md)을 재정의합니다. 기본적으로 Claude Code는 지원되는 IDE의 통합 터미널에서 실행될 때 자동으로 연결됩니다. 이를 방지하려면 `false`로 설정합니다. tmux가 상위 터미널을 가리는 경우처럼 자동 감지가 실패할 때 연결 시도를 강제하려면 `true`로 설정합니다. [`autoConnectIde`](https://code.claude.com/docs/ko/settings-reference#autoconnectide) 전역 구성 설정보다 우선합니다 |211| `CLAUDE_CODE_AUTO_CONNECT_IDE` | 자동 [IDE 연결](https://code.claude.com/docs/ko/vs-code.md)을 재정의합니다. 기본적으로 Claude Code는 지원되는 IDE의 통합 터미널에서 실행될 때 자동으로 연결됩니다. 이를 방지하려면 `false`로 설정합니다. tmux가 상위 터미널을 가리는 경우처럼 자동 감지가 실패할 때 연결 시도를 강제하려면 `true`로 설정합니다. [`autoConnectIde`](https://code.claude.com/docs/ko/settings-reference#autoconnectide) 전역 구성 설정보다 우선합니다 |

212| `CLAUDE_CODE_AUTO_MODE_MODEL` | Claude Code가 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)에서 보내는 분류기 요청의 모델을 설정합니다. `claude-sonnet-4-6`과 같은 전체 모델 ID를 사용합니다. Claude Code가 이 값을 무시하는 경우는 [분류기 모델 선택](https://code.claude.com/docs/ko/permission-modes.md#choose-the-classifier-model)을 참조하세요. Claude Code v2.1.302 이상이 필요합니다 |212| `CLAUDE_CODE_AUTO_MODE_MODEL` | Claude Code가 [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode)에서 보내는 분류기 요청의 모델을 설정합니다. `claude-sonnet-4-6`과 같은 전체 모델 ID를 사용합니다. Claude Code가 이 값을 무시하는 경우는 [분류기 모델 선택](https://code.claude.com/docs/ko/permission-modes.md#choose-the-classifier-model)을 참조하세요. Claude Code v2.1.302 이상이 필요합니다 |

213| `CLAUDE_CODE_AUTO_MODE_SERVER` | Claude Code가 서버에 [자동 모드 작업 검토](https://code.claude.com/docs/ko/permission-modes.md#server-side-classifier-review)를 요청할지 여부를 제어합니다. 대신 Claude Code 자체의 분류기 요청을 사용하려면 `0`으로 설정합니다. Anthropic API에 직접 연결하는 경우 v2.1.281 이상이 필요합니다. 연결된 섹션에 변수가 설정되지 않았을 때 어떤 세션이 어느 버전부터 서버에 요청하는지 나와 있습니다. Claude Code v2.1.271 이상이 필요합니다 |213| `CLAUDE_CODE_AUTO_MODE_SERVER` | Claude Code가 서버에 [자동 모드 작업 검토](https://code.claude.com/docs/ko/permission-modes.md#server-side-classifier-review)를 요청할지 여부를 제어합니다. 대신 Claude Code 자체의 분류기 요청을 사용하려면 `0`으로 설정합니다. Anthropic API에 직접 연결하는 경우 v2.1.281 이상이 필요합니다. 연결된 섹션에 변수가 설정되지 않았을 때 어떤 세션이 어느 버전부터 서버에 요청하는지 나와 있습니다. Claude Code v2.1.271 이상이 필요합니다 |

214| `CLAUDE_CODE_AUTOMOUNT_ROOTS` | Claude Code가 `CLAUDE.md`, 스킬, `.mcp.json` 같은 파일을 찾기 위해 작업 디렉터리 상위 폴더를 살펴볼 때 건너뛸 자동 마운트 루트 폴더입니다. 이러한 조회가 자동 마운터를 기다리는 경우 설정하세요. 여러 경로는 Unix에서는 `:`, Windows에서는 `;`로 구분하고, 각 경로는 심볼릭 링크가 포함되지 않은 절대 경로로 지정하세요. Claude Code v2.1.323 이상이 필요합니다 |

214| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | 요청이 [`AWS default-chain credential resolve timed out`](https://code.claude.com/docs/ko/errors#aws-default-chain-credential-resolve-timed-out) 오류로 실패하기 전에 Claude Code가 AWS 기본 자격 증명 공급자 체인이 자격 증명을 생성하기를 기다리는 시간(밀리초)입니다(기본값: `60000`). `aws-vault` 같은 래퍼를 통한 MFA 포함 브라우저 기반 SSO 로그인처럼 체인의 한 단계가 실제로 더 오래 걸리는 경우 값을 늘립니다. Amazon Bedrock, [Claude Platform on AWS](https://code.claude.com/docs/ko/claude-platform-on-aws.md), [Mantle 엔드포인트](https://code.claude.com/docs/ko/amazon-bedrock.md#use-the-mantle-endpoint)에 적용됩니다. [자격 증명 캐싱 및 확인 타임아웃](https://code.claude.com/docs/ko/amazon-bedrock.md#credential-caching-and-resolution-timeout)을 참조하세요. Claude Code v2.1.207 이상이 필요합니다 |215| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | 요청이 [`AWS default-chain credential resolve timed out`](https://code.claude.com/docs/ko/errors#aws-default-chain-credential-resolve-timed-out) 오류로 실패하기 전에 Claude Code가 AWS 기본 자격 증명 공급자 체인이 자격 증명을 생성하기를 기다리는 시간(밀리초)입니다(기본값: `60000`). `aws-vault` 같은 래퍼를 통한 MFA 포함 브라우저 기반 SSO 로그인처럼 체인의 한 단계가 실제로 더 오래 걸리는 경우 값을 늘립니다. Amazon Bedrock, [Claude Platform on AWS](https://code.claude.com/docs/ko/claude-platform-on-aws.md), [Mantle 엔드포인트](https://code.claude.com/docs/ko/amazon-bedrock.md#use-the-mantle-endpoint)에 적용됩니다. [자격 증명 캐싱 및 확인 타임아웃](https://code.claude.com/docs/ko/amazon-bedrock.md#credential-caching-and-resolution-timeout)을 참조하세요. Claude Code v2.1.207 이상이 필요합니다 |

215| `CLAUDE_CODE_BASH_EDIT_DIFF` | `0`으로 설정하면 [Bash 명령이 실행되는 동안 변경된 파일의 diff](https://code.claude.com/docs/ko/hooks.md#bash)를 끄고, `1`로 설정하면 모든 권한 모드에서 이를 기록합니다. [`bashEditDiffEnabled`](https://code.claude.com/docs/ko/settings-reference#basheditdiffenabled) 설정보다 우선합니다. Claude Code v2.1.269 이상이 필요합니다 |216| `CLAUDE_CODE_BASH_EDIT_DIFF` | `0`으로 설정하면 [Bash 명령이 실행되는 동안 변경된 파일의 diff](https://code.claude.com/docs/ko/hooks.md#bash)를 끄고, `1`로 설정하면 모든 권한 모드에서 이를 기록합니다. [`bashEditDiffEnabled`](https://code.claude.com/docs/ko/settings-reference#basheditdiffenabled) 설정보다 우선합니다. Claude Code v2.1.269 이상이 필요합니다 |

216| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | `0`으로 설정하면 백그라운드 작업이 아직 실행 중이더라도 비대화형 세션이 매 턴이 끝날 때마다 호스트에 유휴 상태를 보고합니다. 기본적으로 세션은 백그라운드 에이전트나 [워크플로](https://code.claude.com/docs/ko/workflows.md) 실행 같은 백그라운드 작업이 아직 진행 중이면 턴이 끝난 후에도 실행 중 상태를 계속 보고합니다. 이렇게 하면 원격 세션 목록처럼 상태를 감시하는 호스트가 작업 도중에 Claude가 사용자 입력을 기다리고 있다고 알리는 것을 방지할 수 있습니다. 개발 서버 같은 백그라운드 셸 명령은 실행 중 상태를 유지하지 않습니다. 실행 중 상태 기본값과 `0` 옵트아웃에는 Claude Code v2.1.269 이상이 필요하며, 이전 버전에서는 실행 중 상태를 유지하려면 `1`로 설정합니다 |217| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | `0`으로 설정하면 백그라운드 작업이 아직 실행 중이더라도 비대화형 세션이 매 턴이 끝날 때마다 호스트에 유휴 상태를 보고합니다. 기본적으로 세션은 백그라운드 에이전트나 [워크플로](https://code.claude.com/docs/ko/workflows.md) 실행 같은 백그라운드 작업이 아직 진행 중이면 턴이 끝난 후에도 실행 중 상태를 계속 보고합니다. 이렇게 하면 원격 세션 목록처럼 상태를 감시하는 호스트가 작업 도중에 Claude가 사용자 입력을 기다리고 있다고 알리는 것을 방지할 수 있습니다. 개발 서버 같은 백그라운드 셸 명령은 실행 중 상태를 유지하지 않습니다. 실행 중 상태 기본값과 `0` 옵트아웃에는 Claude Code v2.1.269 이상이 필요하며, 이전 버전에서는 실행 중 상태를 유지하려면 `1`로 설정합니다 |


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

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

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

302| `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` | 실험적 기능인 [Code Mode](https://code.claude.com/docs/ko/code-mode.md)로 세션을 시작하려면 `1`로 설정합니다. 꺼진 상태로 유지하려면 `0`으로 설정하거나, 관리형 설정에서 설정하여 [조직에서 차단](https://code.claude.com/docs/ko/code-mode.md#block-code-mode-for-your-organization)합니다. 이 변수는 [모든 설정 파일에서 인정되지는 않습니다](https://code.claude.com/docs/ko/settings-reference.md#variables-claude-code-ignores-in-env). [버전 및 계정 요구 사항](https://code.claude.com/docs/ko/code-mode.md#requirements)을 참조하세요 |

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

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

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


348| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | 보류 중인 OpenTelemetry 스팬을 플러시하는 타임아웃(밀리초)입니다(기본값: 5000). [모니터링](https://code.claude.com/docs/ko/monitoring-usage.md)을 참조하세요 |350| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | 보류 중인 OpenTelemetry 스팬을 플러시하는 타임아웃(밀리초)입니다(기본값: 5000). [모니터링](https://code.claude.com/docs/ko/monitoring-usage.md)을 참조하세요 |

349| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 동적 OpenTelemetry 헤더를 새로 고치는 간격(밀리초)입니다(기본값: 1740000 / 29분). [동적 헤더](https://code.claude.com/docs/ko/monitoring-usage.md#dynamic-headers)를 참조하세요 |351| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 동적 OpenTelemetry 헤더를 새로 고치는 간격(밀리초)입니다(기본값: 1740000 / 29분). [동적 헤더](https://code.claude.com/docs/ko/monitoring-usage.md#dynamic-headers)를 참조하세요 |

350| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | 종료 시 OpenTelemetry 익스포터가 완료되기까지의 타임아웃(밀리초)입니다(기본값: 2000). 종료 시 메트릭이 누락되면 값을 늘립니다. [모니터링](https://code.claude.com/docs/ko/monitoring-usage.md)을 참조하세요 |352| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | 종료 시 OpenTelemetry 익스포터가 완료되기까지의 타임아웃(밀리초)입니다(기본값: 2000). 종료 시 메트릭이 누락되면 값을 늘립니다. [모니터링](https://code.claude.com/docs/ko/monitoring-usage.md)을 참조하세요 |

351| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | API가 `529` overloaded 오류로 거부한 요청의 [자동 재시도](https://code.claude.com/docs/ko/errors.md#tune-retry-behavior) 사이에 적용되는 지수 백오프의 시작 지연 시간(밀리초)으로, 기본값 500을 대체합니다. API가 용량에 도달했을 때 재시도를 더 긴 기간에 걸쳐 분산하려면 값을 늘립니다. 500부터 32000까지의 정수 밀리초를 숫자로만 지정하며, Claude Code는 그 밖의 값을 설정되지 않은 것으로 간주합니다. `CLAUDE_CODE_RETRY_WATCHDOG`가 `1`로 설정되어 있거나 거부된 요청이 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md#handle-rate-limits)로 전송된 경우에는 아무 효과가 없습니다. Claude Code v2.1.292 이상이 필요합니다 |353| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | API가 `529` 과부하 오류로 거부한 요청의 재시도 간 백오프 시작 지연 시간(밀리초)입니다(기본값: 500). API 용량이 한계에 도달했을 때 재시도를 더 긴 시간에 걸쳐 분산하려면 값을 늘리세요. 500에서 32000 사이의 정수 밀리초를 숫자로만 지정합니다. Claude Code는 그 외의 값을 설정되지 않은 것으로 취급합니다. [효과가 없는 경우](https://code.claude.com/docs/ko/errors.md#tune-retry-behavior)를 참조하세요. Claude Code v2.1.292 이상이 필요합니다 |

352| `CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS` | API가 `529` 과부하 오류로 거부한 요청의 [자동 재시도](https://code.claude.com/docs/ko/errors.md#tune-retry-behavior) 사이 지수 백오프의 상한(밀리초)으로, 기본값 32000을 대신합니다. API 용량이 가득 찼을 때 이후 재시도 간격이 계속 벌어지도록 하려면 값을 높이세요. 32000에서 64000 사이의 밀리초 정수를 숫자만으로 지정하며, Claude Code는 다른 값을 설정되지 않은 것으로 간주합니다. `CLAUDE_CODE_RETRY_WATCHDOG`가 `1`로 설정된 경우나 거부된 요청이 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md#handle-rate-limits)로 전송된 경우에는 효과가 없습니다. Claude Code v2.1.296 이상이 필요합니다 |354| `CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS` | API가 `529` 과부하 오류로 거부한 요청의 재시도 간 백오프 상한(밀리초)입니다(기본값: 32000). 이후 재시도 간격이 계속 벌어지도록 하려면 값을 늘리세요. 32000에서 300000 사이의 정수 밀리초를 숫자로만 지정합니다. Claude Code는 그 외의 값을 설정되지 않은 것으로 취급합니다. 64000보다 큰 값은 v2.1.323 이상이 필요합니다. [효과가 없는 경우](https://code.claude.com/docs/ko/errors.md#tune-retry-behavior)를 참조하세요. Claude Code v2.1.296 이상이 필요합니다 |

353| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | 새 버전을 사용할 수 있을 때 Claude Code가 패키지 관리자의 업그레이드 명령을 백그라운드에서 실행하도록 하려면 `1`로 설정합니다. Homebrew 및 WinGet 설치에 적용됩니다. 다른 패키지 관리자는 계속해서 업그레이드 명령을 실행하지 않고 표시만 합니다. [자동 업데이트](https://code.claude.com/docs/ko/setup.md#auto-updates)를 참조하세요 |355| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | 새 버전을 사용할 수 있을 때 Claude Code가 패키지 관리자의 업그레이드 명령을 백그라운드에서 실행하도록 하려면 `1`로 설정합니다. Homebrew 및 WinGet 설치에 적용됩니다. 다른 패키지 관리자는 계속해서 업그레이드 명령을 실행하지 않고 표시만 합니다. [자동 업데이트](https://code.claude.com/docs/ko/setup.md#auto-updates)를 참조하세요 |

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

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


370| `CLAUDE_CODE_REMOTE` | Claude Code가 [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)으로 실행될 때 자동으로 `true`로 설정됩니다. 훅이나 설정 스크립트에서 이 값을 읽어 클라우드 세션인지 감지합니다 |372| `CLAUDE_CODE_REMOTE` | Claude Code가 [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)으로 실행될 때 자동으로 `true`로 설정됩니다. 훅이나 설정 스크립트에서 이 값을 읽어 클라우드 세션인지 감지합니다 |

371| `CLAUDE_CODE_REMOTE_SESSION_ID` | [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서 현재 세션의 ID로 자동 설정됩니다. 세션 트랜스크립트로 돌아가는 링크를 구성할 때 읽습니다. [출력을 세션에 다시 연결](https://code.claude.com/docs/ko/cloud-environments.md#link-output-back-to-the-session)을 참조하세요 |373| `CLAUDE_CODE_REMOTE_SESSION_ID` | [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)에서 현재 세션의 ID로 자동 설정됩니다. 세션 트랜스크립트로 돌아가는 링크를 구성할 때 읽습니다. [출력을 세션에 다시 연결](https://code.claude.com/docs/ko/cloud-environments.md#link-output-back-to-the-session)을 참조하세요 |

372| `CLAUDE_CODE_RESTRICTED` | [`--restricted`](https://code.claude.com/docs/ko/cli-reference#cli-flags)를 전달하는 것과 같이 제한 모드로 세션을 시작하려면 `1`로 설정합니다. Claude Code는 설정 파일의 `env` 블록에서 이 변수를 무시합니다. Claude Code v2.1.248 이상이 필요합니다 |374| `CLAUDE_CODE_RESTRICTED` | [`--restricted`](https://code.claude.com/docs/ko/cli-reference#cli-flags)를 전달하는 것과 같이 제한 모드로 세션을 시작하려면 `1`로 설정합니다. Claude Code는 설정 파일의 `env` 블록에서 이 변수를 무시합니다. Claude Code v2.1.248 이상이 필요합니다 |

375| `CLAUDE_CODE_RESUME_HINT_COMMAND` | Claude Code를 시작하는 래퍼 스크립트에서, 래퍼를 실행하기 위해 입력하는 이름(예: `mytool`)으로 설정합니다. 그러면 로컬 세션이 종료 시 `claude --resume <session-id>` 대신 `mytool --resume <session-id>`를 출력합니다. Claude Code는 `^\w[\w-]*$`와 일치하지 않는 이름을 무시합니다. 설정 파일의 `env` 블록에 있는 이 변수도 무시합니다. Claude Code v2.1.323 이상이 필요합니다 |

373| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | 이전 세션이 턴 도중에 종료된 경우 자동으로 재개하려면 `1`로 설정합니다. SDK 모드에서 SDK가 프롬프트를 다시 보내지 않아도 모델이 계속 진행하도록 사용됩니다. 끄려면 변수 설정을 해제하거나 `0`으로 설정합니다. VS Code 채팅 패널의 경우 [다시 로드 후 대화 계속하기](https://code.claude.com/docs/ko/vs-code.md#continue-conversations-after-a-reload)를 참조하세요 |376| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | 이전 세션이 턴 도중에 종료된 경우 자동으로 재개하려면 `1`로 설정합니다. SDK 모드에서 SDK가 프롬프트를 다시 보내지 않아도 모델이 계속 진행하도록 사용됩니다. 끄려면 변수 설정을 해제하거나 `0`으로 설정합니다. VS Code 채팅 패널의 경우 [다시 로드 후 대화 계속하기](https://code.claude.com/docs/ko/vs-code.md#continue-conversations-after-a-reload)를 참조하세요 |

374| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | 턴 중간에 종료된 세션이 재개 시 자동으로 계속되기 위한 마지막 트랜스크립트 메시지의 최대 경과 시간(밀리초)입니다. 마지막 메시지가 이 기준보다 오래되면 Claude Code는 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 자동 재개와 그 `CLAUDE_CODE_RESUME_PROMPT` 계속 메시지를 건너뛰고, 세션은 유휴 상태로 시작하여 사용자가 명시적으로 계속하게 됩니다. 설정하지 않거나 `0`이면 기준이 없지만, API 오류로 종료된 턴처럼 일부 턴은 마지막 메시지로부터 6시간 이내에만 재개됩니다. 양수 값은 그런 턴을 포함한 모든 턴에 기준을 적용하며, 음수 또는 숫자가 아닌 값은 1시간 기준을 적용합니다. 장기 실행 에이전트의 생성 스크립트는 이 값을 설정하여 오래된 트랜스크립트로 재시작할 때 오래된 프롬프트가 다시 실행되지 않도록 할 수 있습니다. Claude Code는 대화형 세션에서 대화를 상속한 [에이전트 뷰](https://code.claude.com/docs/ko/agent-view.md) 세션이 충돌한 후 재시작할 때 자체적으로 1시간 기준을 설정합니다. Claude Code v2.1.211 이상이 필요합니다 |377| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | 턴 중간에 종료된 세션이 재개 시 자동으로 계속되기 위한 마지막 트랜스크립트 메시지의 최대 경과 시간(밀리초)입니다. 마지막 메시지가 이 기준보다 오래되면 Claude Code는 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 자동 재개와 그 `CLAUDE_CODE_RESUME_PROMPT` 계속 메시지를 건너뛰고, 세션은 유휴 상태로 시작하여 사용자가 명시적으로 계속하게 됩니다. 설정하지 않거나 `0`이면 기준이 없지만, API 오류로 종료된 턴처럼 일부 턴은 마지막 메시지로부터 6시간 이내에만 재개됩니다. 양수 값은 그런 턴을 포함한 모든 턴에 기준을 적용하며, 음수 또는 숫자가 아닌 값은 1시간 기준을 적용합니다. 장기 실행 에이전트의 생성 스크립트는 이 값을 설정하여 오래된 트랜스크립트로 재시작할 때 오래된 프롬프트가 다시 실행되지 않도록 할 수 있습니다. Claude Code는 대화형 세션에서 대화를 상속한 [에이전트 뷰](https://code.claude.com/docs/ko/agent-view.md) 세션이 충돌한 후 재시작할 때 자체적으로 1시간 기준을 설정합니다. Claude Code v2.1.211 이상이 필요합니다 |

375| `CLAUDE_CODE_RESUME_PROMPT` | `CLAUDE_CODE_RESUME_INTERRUPTED_TURN`이 중단된 턴을 프롬프트를 다시 보내는 대신 계속할 때, 또는 `-p`로 [지연된 도구 호출](https://code.claude.com/docs/ko/hooks.md#defer-a-tool-call-for-later)을 재개할 때 Claude Code가 Claude에게 보내는 계속 메시지를 재정의합니다. 기본값은 `Continue from where you left off.`입니다. 빈 문자열은 기본값을 사용합니다 |378| `CLAUDE_CODE_RESUME_PROMPT` | `CLAUDE_CODE_RESUME_INTERRUPTED_TURN`이 중단된 턴을 프롬프트를 다시 보내는 대신 계속할 때, 또는 `-p`로 [지연된 도구 호출](https://code.claude.com/docs/ko/hooks.md#defer-a-tool-call-for-later)을 재개할 때 Claude Code가 Claude에게 보내는 계속 메시지를 재정의합니다. 기본값은 `Continue from where you left off.`입니다. 빈 문자열은 기본값을 사용합니다 |


405| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Bash 명령, 훅, stdio MCP 서버 등 Claude Code가 시작하는 하위 프로세스의 환경에서 자격 증명을 제거하려면 `1`로 설정합니다. 제거 기능은 변수 이름이나 값으로 자격 증명을 인식하며, GitHub 토큰과 프록시 설정은 그대로 둡니다. [하위 프로세스 환경 정리가 제거하는 항목](#what-the-subprocess-environment-scrub-removes)을 참조하세요. `allowed_non_write_users`가 구성되면 `claude-code-action`이 이 변수를 자동으로 설정합니다 |408| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Bash 명령, 훅, stdio MCP 서버 등 Claude Code가 시작하는 하위 프로세스의 환경에서 자격 증명을 제거하려면 `1`로 설정합니다. 제거 기능은 변수 이름이나 값으로 자격 증명을 인식하며, GitHub 토큰과 프록시 설정은 그대로 둡니다. [하위 프로세스 환경 정리가 제거하는 항목](#what-the-subprocess-environment-scrub-removes)을 참조하세요. `allowed_non_write_users`가 구성되면 `claude-code-action`이 이 변수를 자동으로 설정합니다 |

406| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | 비대화형 모드(`-p` 플래그)에서 첫 번째 쿼리 전에 플러그인 설치가 완료될 때까지 기다리려면 `1`로 설정합니다. 이 변수가 없으면 플러그인이 백그라운드에서 설치되어 첫 번째 턴에서 사용할 수 없을 수 있습니다. 대기 시간을 제한하려면 `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS`와 함께 사용합니다 |409| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | 비대화형 모드(`-p` 플래그)에서 첫 번째 쿼리 전에 플러그인 설치가 완료될 때까지 기다리려면 `1`로 설정합니다. 이 변수가 없으면 플러그인이 백그라운드에서 설치되어 첫 번째 턴에서 사용할 수 없을 수 있습니다. 대기 시간을 제한하려면 `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS`와 함께 사용합니다 |

407| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | 동기식 플러그인 설치의 타임아웃(밀리초)입니다. 초과하면 Claude Code는 플러그인 없이 진행하고 오류를 로그에 기록합니다. 기본값은 없으며, 이 변수가 없으면 동기식 설치는 완료될 때까지 기다립니다 |410| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | 동기식 플러그인 설치의 타임아웃(밀리초)입니다. 초과하면 Claude Code는 플러그인 없이 진행하고 오류를 로그에 기록합니다. 기본값은 없으며, 이 변수가 없으면 동기식 설치는 완료될 때까지 기다립니다 |

408| `CLAUDE_CODE_SYNC_SKILLS` | `-p` 플래그를 사용하는 비대화형 모드에서 `1`로 설정하면, Claude Code가 해당 실행에서 claude.ai 계정에 활성화된 스킬을 다운로드하고 첫 번째 쿼리를 실행하기 전에 최대 `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` 동안 스킬 목록을 기다립니다. claude.ai 인증이 필요합니다. claude.ai 계정으로 로그인한 터미널 세션은 이 변수 없이도 [이러한 스킬을 동기화](https://code.claude.com/docs/ko/skills.md#where-synced-skills-load)하므로, `-p` 실행의 첫 번째 쿼리에 현재 스킬이 필요한 경우에만 설정합니다 |411| `CLAUDE_CODE_SYNC_SKILLS` | `1`로 설정하면 Claude Code가 claude.ai 계정에 활성화된 스킬을 다운로드합니다. `-p` 플래그를 사용하는 비대화형 모드에서는 Claude Code가 첫 번째 쿼리를 실행하기 전에 스킬 목록을 최대 `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`만큼 기다리기도 합니다. claude.ai 인증이 필요합니다. claude.ai 계정으로 로그인하는 터미널 세션은 이 변수 없이도 [이러한 스킬을 동기화](https://code.claude.com/docs/ko/skills.md#where-synced-skills-load)합니다. 대화형 세션에서 이 변수를 사용하려면 v2.1.323 이상이 필요합니다 |

409| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/typescript.md#query-object)로 빌드된 앱이 스킬을 다시 로드할 때 세션 도중 실행되는 스킬 재동기화의 타임아웃(밀리초)입니다(기본값: 30000). 초과하면 도착한 스킬로 다시 로드를 계속하며, 나머지 다운로드는 백그라운드에서 완료됩니다 |412| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/typescript.md#query-object)로 빌드된 앱이 스킬을 다시 로드할 때 세션 도중 실행되는 스킬 재동기화의 타임아웃(밀리초)입니다(기본값: 30000). 초과하면 도착한 스킬로 다시 로드를 계속하며, 나머지 다운로드는 백그라운드에서 완료됩니다 |

410| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | `CLAUDE_CODE_SYNC_SKILLS`가 설정된 경우 첫 번째 쿼리가 초기 스킬 목록을 기다리는 타임아웃(밀리초)입니다(기본값: 5000). 초과하면 첫 번째 쿼리는 도착한 스킬로 실행됩니다. 어느 쪽이든 다운로드는 백그라운드에서 완료되며, Claude는 스킬을 호출할 때 해당 스킬의 다운로드를 기다립니다 |413| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | `CLAUDE_CODE_SYNC_SKILLS`가 설정된 경우 첫 번째 쿼리가 초기 스킬 목록을 기다리는 타임아웃(밀리초)입니다(기본값: 5000). 초과하면 첫 번째 쿼리는 도착한 스킬로 실행됩니다. 어느 쪽이든 다운로드는 백그라운드에서 완료되며, Claude는 스킬을 호출할 때 해당 스킬의 다운로드를 기다립니다 |

411| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | diff 출력에서 구문 강조를 비활성화하려면 `false`로 설정합니다. 색상이 터미널 설정과 충돌할 때 유용합니다. 코드 블록과 파일 미리보기에서도 강조를 비활성화하려면 [`syntaxHighlightingDisabled`](https://code.claude.com/docs/ko/settings-reference#syntaxhighlightingdisabled) 설정을 사용합니다 |414| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | diff 출력에서 구문 강조를 비활성화하려면 `false`로 설정합니다. 색상이 터미널 설정과 충돌할 때 유용합니다. 코드 블록과 파일 미리보기에서도 강조를 비활성화하려면 [`syntaxHighlightingDisabled`](https://code.claude.com/docs/ko/settings-reference#syntaxhighlightingdisabled) 설정을 사용합니다 |


585* [You should know mod](https://code.claude.com/docs/ko/interactive-mode.md#you-should-know-suggestions) 켜기588* [You should know mod](https://code.claude.com/docs/ko/interactive-mode.md#you-should-know-suggestions) 켜기

586* [advisor 도구](https://code.claude.com/docs/ko/advisor.md#requirements) 사용. 단, Claude Code v2.1.300 이상을 사용하는 Claude Platform on AWS에서는 예외입니다589* [advisor 도구](https://code.claude.com/docs/ko/advisor.md#requirements) 사용. 단, Claude Code v2.1.300 이상을 사용하는 Claude Platform on AWS에서는 예외입니다

587* [MCP 작업](https://code.claude.com/docs/ko/mcp.md#mcp-tasks-that-run-on-the-server) 사용590* [MCP 작업](https://code.claude.com/docs/ko/mcp.md#mcp-tasks-that-run-on-the-server) 사용

591* [Code Mode](https://code.claude.com/docs/ko/code-mode.md#requirements) 켜기

588* [아티팩트의 댓글](https://code.claude.com/docs/ko/artifacts.md#collect-comments-on-an-artifact) 읽기 또는 답글 달기592* [아티팩트의 댓글](https://code.claude.com/docs/ko/artifacts.md#collect-comments-on-an-artifact) 읽기 또는 답글 달기

589* Claude가 [다른 조직의 공개 아티팩트](https://code.claude.com/docs/ko/artifacts.md#read-an-artifact-shared-with-you)를 읽도록 하기593* Claude가 [다른 조직의 공개 아티팩트](https://code.claude.com/docs/ko/artifacts.md#read-an-artifact-shared-with-you)를 읽도록 하기

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

errors.md +286 −244

Details

122| `A request to MCP server "<name>" was sent without your stored credentials` | [인증](#couldnt-read-the-stored-credentials-for-mcp-server) |122| `A request to MCP server "<name>" was sent without your stored credentials` | [인증](#couldnt-read-the-stored-credentials-for-mcp-server) |

123| `This server's URL is missing or not a valid URL, so sign-in can't start` | [인증](#mcp-server-url-is-missing-or-not-a-valid-url) |123| `This server's URL is missing or not a valid URL, so sign-in can't start` | [인증](#mcp-server-url-is-missing-or-not-a-valid-url) |

124| `Issuer mismatch in authorization response (RFC 9207)` | [인증](#issuer-mismatch-in-authorization-response) |124| `Issuer mismatch in authorization response (RFC 9207)` | [인증](#issuer-mismatch-in-authorization-response) |

125| `Stopped an OAuth request` | [인증](#stopped-an-oauth-request) |

125| `Refusing to send credentials to non-https token endpoint` / `<short-name> from the MCP SDK for <server-url>` | [인증](#refusing-to-send-credentials-to-non-https-token-endpoint) |126| `Refusing to send credentials to non-https token endpoint` / `<short-name> from the MCP SDK for <server-url>` | [인증](#refusing-to-send-credentials-to-non-https-token-endpoint) |

126| `Cloud gateway session expired — run /login to reconnect.` | [인증](#cloud-gateway-session-expired) |127| `Cloud gateway session expired — run /login to reconnect.` | [인증](#cloud-gateway-session-expired) |

127| `Cloud gateway <url> no longer accepts this session` | [인증](#cloud-gateway-session-expired) |128| `Cloud gateway <url> no longer accepts this session` | [인증](#cloud-gateway-session-expired) |


251| `Ultrareview did not start` | [명령줄 오류](#ultrareview-did-not-start) |252| `Ultrareview did not start` | [명령줄 오류](#ultrareview-did-not-start) |

252| `Remote Control did not start: "<question>" got no answer` | [명령줄 오류](#remote-control-did-not-start-got-no-answer) |253| `Remote Control did not start: "<question>" got no answer` | [명령줄 오류](#remote-control-did-not-start-got-no-answer) |

253| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [명령줄 오류](#not-carried-over-to-the-sessions-remote-control-starts) |254| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [명령줄 오류](#not-carried-over-to-the-sessions-remote-control-starts) |

255| `Remote Control did not start, because sessions would skip part or all of the --settings file` | [명령줄 오류](#remote-control-did-not-start-because-of-the-settings-file) |

256| `The settings file <file> has changed since Remote Control started, so this session did not start` | [명령줄 오류](#settings-file-changed-since-remote-control-started) |

254| `--sandbox is not supported by claude remote-control` / `--no-sandbox is not supported by claude remote-control` | [명령줄 오류](#sandbox-is-not-supported-by-claude-remote-control) |257| `--sandbox is not supported by claude remote-control` / `--no-sandbox is not supported by claude remote-control` | [명령줄 오류](#sandbox-is-not-supported-by-claude-remote-control) |

255| `` `claude import` is not yet available in this build `` | [명령줄 오류](#claude-import-is-not-yet-available-in-this-build) |258| `` `claude import` is not yet available in this build `` | [명령줄 오류](#claude-import-is-not-yet-available-in-this-build) |

256| `Could not read Claude Code config` | [명령줄 오류](#could-not-read-claude-code-config) |259| `Could not read Claude Code config` | [명령줄 오류](#could-not-read-claude-code-config) |


825동일한 Claude 응답의 이후 호출도 다음 사유로 거부될 수 있습니다:828동일한 Claude 응답의 이후 호출도 다음 사유로 거부될 수 있습니다:

826 829 

827```text theme={null}830```text theme={null}

828another call in this response was changed by a hook after auto mode reviewed it, or could not be confirmed unchanged831another call in this response was changed after auto mode reviewed it, or could not be confirmed unchanged

829```832```

830 833 

831그러면 Claude는 거부된 각 호출을 다시 발급하여 서버가 검토하도록 할 수 있습니다. 권한 프롬프트가 열리면 응답합니다. Claude가 응답에서 자동 모드가 호출을 검사할 수 없었다고 말하지 않는 한 다른 작업은 필요하지 않습니다. 그런 경우 변경을 중지하거나 호출을 직접 승인한 다음 Claude에게 호출을 다시 시도하도록 요청합니다:834그러면 Claude는 거부된 각 호출을 다시 발급하여 서버가 검토하도록 할 수 있습니다. 권한 프롬프트가 열리면 응답합니다. Claude가 응답에서 자동 모드가 호출을 검사할 수 없었다고 말하지 않는 한 다른 작업은 필요하지 않습니다. 그런 경우 변경을 중지하거나 호출을 직접 승인한 다음 Claude에게 호출을 다시 시도하도록 요청합니다:


1822 1825 

1823v2.1.232 이전에는 Claude Code가 점진적 출시 대상이거나 `MCP_SDK_GENERATION=v2`를 설정한 경우에만 v2 런타임을 사용했습니다.1826v2.1.232 이전에는 Claude Code가 점진적 출시 대상이거나 `MCP_SDK_GENERATION=v2`를 설정한 경우에만 v2 런타임을 사용했습니다.

1824 1827 

1828### Stopped an OAuth request

1829 

1830이 메시지는 OAuth 엔드포인트가 리디렉션했기 때문에 Claude Code가 [MCP 서버에 대한 OAuth 요청](https://code.claude.com/docs/ko/mcp.md#authenticate-with-remote-mcp-servers)을 중단했음을 의미합니다. 메시지의 두 가지 형태 모두에서 첫 번째 주소가 리디렉션을 보낸 주소입니다.

1831 

1832```text theme={null}

1833Stopped an OAuth request, which can hold secrets: https://auth.example.com redirected it to https://other.example.com. Ask the owner of https://auth.example.com to remove that redirect.

1834Stopped an OAuth request: https://auth.example.com redirected it more than 5 times. Ask the owner of https://auth.example.com to fix those redirects.

1835```

1836 

1837**해결 방법:**

1838 

1839* MCP 서버 운영자 등 첫 번째 주소를 운영하는 사람에게 리디렉션을 제거하거나 수정하도록 요청합니다. 그런 다음 `/mcp`에서 다시 시도합니다.

1840 

1825### HTTPS가 아닌 토큰 엔드포인트로 자격 증명 전송 거부1841### HTTPS가 아닌 토큰 엔드포인트로 자격 증명 전송 거부

1826 1842 

1827[v2 런타임](https://code.claude.com/docs/ko/mcp.md#mcp-client-runtimes)에서 Claude Code는 HTTPS로 제공되거나 `localhost`, `127.0.0.1`, `::1`에 있는 토큰 엔드포인트에만 [MCP OAuth](https://code.claude.com/docs/ko/mcp.md#authenticate-with-remote-mcp-servers) 토큰 요청을 보냅니다. 이 메시지는 서버의 토큰 엔드포인트가 둘 다 해당하지 않아 Claude Code가 요청을 보내기 전에 중단했다는 뜻입니다. 이는 브라우저 로그인 이후에 발생하므로 브라우저 단계는 먼저 성공하며, Claude Code가 서버의 토큰을 갱신할 때마다 다시 발생합니다.1843[v2 런타임](https://code.claude.com/docs/ko/mcp.md#mcp-client-runtimes)에서 Claude Code는 HTTPS로 제공되거나 `localhost`, `127.0.0.1`, `::1`에 있는 토큰 엔드포인트에만 [MCP OAuth](https://code.claude.com/docs/ko/mcp.md#authenticate-with-remote-mcp-servers) 토큰 요청을 보냅니다. 이 메시지는 서버의 토큰 엔드포인트가 둘 다 해당하지 않아 Claude Code가 요청을 보내기 전에 중단했다는 뜻입니다. 이는 브라우저 로그인 이후에 발생하므로 브라우저 단계는 먼저 성공하며, Claude Code가 서버의 토큰을 갱신할 때마다 다시 발생합니다.


2207 2223 

2208### 클라우드 세션에서 호스트가 허용되지 않음2224### 클라우드 세션에서 호스트가 허용되지 않음

2209 2225 

2210클라우드 세션 또는 클라우드 예약 작업의 아웃바운드 HTTP 요청이 환경의 네트워크 정책에 의해 차단되었습니다.2226클라우드 세션 또는 클라우드 예약 작업에서 `403` 또는 `ENOTFOUND`와 같은 DNS 오류는 요청한 호스트가 [클라우드 환경의 허용 목록](https://code.claude.com/docs/ko/cloud-environments.md#access-levels)에 없음을 의미할 수 있습니다. 확인하려면 해당 목록과 호스트를 대조합니다. 이 헤더가 있는 `403`은 차단을 확인해 주지만, 차단된 모든 요청의 `403`에 이 헤더가 있는 것은 아닙니다:

2211 2227 

2212```text theme={null}2228```text theme={null}

2213HTTP 4032229HTTP 403


2393 2409 

2394## 요청 오류2410## 요청 오류

2395 2411 

2396이 오류들은 요청의 내용과 관련이 있습니다. 대부분은 API가 요청을 거부한 후 API에서 반환되며, 일부는 요청이 전송되기 전에 Claude Code가 로컬에서 생성합니다.2412이 오류는 요청 내용과 관련됩니다. 대부분은 API가 요청을 거부한 후 API에서 반환되며, 일부는 요청이 전송되기 전에 Claude Code가 로컬에서 생성합니다.

2397 2413 

2398### Prompt is too long2414### Prompt is too long

2399 2415 

2400대화와 첨부 파일을 합친 크기가 모델의 컨텍스트 윈도우를 초과했습니다.2416대화와 첨부 파일을 합한 크기가 모델의 컨텍스트 윈도우를 초과합니다.

2401 2417 

2402```text theme={null}2418```text theme={null}

2403Prompt is too long2419Prompt is too long

2404```2420```

2405 2421 

2406대화형 세션에서 Claude Code는 이 오류를 다음과 같이 표시합니다.2422대화형 세션에서 Claude Code는 이 오류를 다음과 같이 표시합니다:

2407 2423 

2408```text theme={null}2424```text theme={null}

2409Context limit reached · /compact or /clear to continue2425Context limit reached · /compact or /clear to continue

2410```2426```

2411 2427 

2412[`DISABLE_COMPACT`](https://code.claude.com/docs/ko/env-vars)가 설정되어 있으면 이 줄에는 `/clear`만 표시됩니다. 아래의 압축 실패 형식과 같이 더 긴 형식의 오류는 `Prompt is too long ·` 문구를 유지합니다. `-p` 출력과 트랜스크립트에서는 텍스트가 `Prompt is too long`으로 유지됩니다.2428[`DISABLE_COMPACT`](https://code.claude.com/docs/ko/env-vars)가 설정되어 있으면 이 줄에는 `/clear`만 표시됩니다. 아래의 압축 실패 형식과 같은 더 긴 형식의 오류는 `Prompt is too long ·` 문구를 유지합니다. `-p` 출력과 트랜스크립트에서는 텍스트가 `Prompt is too long`으로 유지됩니다.

2413 2429 

2414[사용자 설정](https://code.claude.com/docs/ko/settings-reference.md#autocompactenabled)에서 자동 압축을 끈 경우, 이 줄에 그 사실도 함께 표시됩니다.2430[사용자 설정](https://code.claude.com/docs/ko/settings-reference.md#autocompactenabled)에서 자동 압축을 끈 경우 이 줄에 해당 내용도 함께 표시됩니다:

2415 2431 

2416```text theme={null}2432```text theme={null}

2417Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on2433Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on

2418```2434```

2419 2435 

2420`/config`의 **Auto-compact** 토글은 사용자 설정에 `autoCompactEnabled`를 기록합니다. 이 힌트는 `/config` 변경이 실제로 적용될 때만 나타납니다. 예를 들어 [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/ko/env-vars) 또는 [`DISABLE_COMPACT`](https://code.claude.com/docs/ko/env-vars)로 자동 압축을 끈 경우에는 나타나지 않습니다. 프로젝트 설정이나 관리형 설정처럼 우선순위가 더 높은 범위에서 `autoCompactEnabled`를 `false`로 설정한 경우에도 나타나지 않습니다. v2.1.235 이전에는 이 줄에 자동 압축 힌트가 포함되지 않았습니다.2436`/config`의 **Auto-compact** 토글은 사용자 설정에 `autoCompactEnabled`를 기록합니다. 이 힌트는 `/config` 변경이 실제로 적용될 수 있는 경우에만 표시됩니다. 예를 들어 [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/ko/env-vars) 또는 [`DISABLE_COMPACT`](https://code.claude.com/docs/ko/env-vars)로 자동 압축을 끈 경우에는 표시되지 않습니다. 또한 프로젝트 설정이나 관리형 설정처럼 우선순위가 더 높은 범위에서 `autoCompactEnabled`를 `false`로 설정한 경우에도 표시되지 않습니다. v2.1.235 이전에는 이 줄에 자동 압축 힌트가 없었습니다.

2421 2437 

2422Amazon Bedrock은 이 상태를 `Input is too long for requested model.`로 보고하며, Claude Code는 이를 동일한 방식으로 처리합니다. v2.1.217 이전에는 Claude Code가 Bedrock의 문구를 인식하지 못했기 때문에 자동 압축이 이 오류에서 트리거되지 않았고 `/compact`도 같은 오류로 실패했습니다.2438Amazon Bedrock은 이 상태를 `Input is too long for requested model.`로 보고하며, Claude Code는 이를 동일하게 처리합니다. v2.1.217 이전에는 Claude Code가 Bedrock의 문구를 인식하지 못해 자동 압축이 트리거되지 않았고 `/compact`도 같은 오류로 실패했습니다.

2423 2439 

2424[Claude apps gateway](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#upstream-error-messages)는 클라우드 업스트림이 제공업체 고유의 오류 형식으로 요청을 거부할 때 이 상태를 `capability_rejected: prompt_too_long`으로 보고합니다. Claude Code는 이 토큰을 `Prompt is too long`과 동일하게 처리합니다. v2.1.228 이전에는 Claude Code가 이 토큰을 인식하지 못했기 때문에 자동 압축이 트리거되지 않았습니다.2440[Claude apps gateway](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#upstream-error-messages)는 클라우드 업스트림이 제공업체 고유의 오류 형식으로 요청을 거부하면 이 상태를 `capability_rejected: prompt_too_long`으로 보고합니다. Claude Code는 이 토큰을 `Prompt is too long`과 동일하게 처리합니다. v2.1.228 이전에는 Claude Code가 이 토큰을 인식하지 못해 자동 압축이 트리거되지 않았습니다.

2425 2441 

2426이번 턴에 자동 압축이 실행되었으나 사용할 수 없는 모델이나 인증 실패 같은 근본 오류로 실패한 경우, 메시지는 구분 기호 뒤에 해당 오류를 표시합니다.2442이번 턴에서 자동 압축이 실행되었지만 모델을 사용할 수 없거나 인증에 실패하는 등 근본 오류로 인해 실패한 경우, 메시지의 구분 기호 뒤에 해당 오류가 표시됩니다:

2427 2443 

2428```text theme={null}2444```text theme={null}

2429Prompt is too long · automatic compaction failed: <the underlying error>2445Prompt is too long · automatic compaction failed: <the underlying error>

2430```2446```

2431 2447 

2432표시된 오류를 먼저 해결하십시오. 해결하기 전까지 `/compact`도 같은 오류로 실패합니다. v2.1.229 이전에는 자동 압축이 실패하면 원인 없이 `Prompt is too long`만 표시되었습니다.2448표시된 오류를 먼저 해결하세요. 해결하기 전까지는 `/compact`도 같은 오류로 실패합니다. v2.1.229 이전에는 자동 압축이 실패해도 원인 없이 `Prompt is too long`만 표시되었습니다.

2433 2449 

2434이 오류에서 자동 압축이 실행되면 일반적으로 가장 오래된 대화 교환을 요약하고 최신 교환은 유지합니다. 최후의 수단으로 Claude Code는 다르게 요약합니다.2450이 오류에서 자동 압축이 실행되면 일반적으로 가장 오래된 대화 교환을 요약하고 최신 교환은 유지합니다. 최후의 수단으로 Claude Code는 다른 방식으로 요약합니다:

2435 2451 

2436* 온전한 교환을 하나도 요약할 수 없는 경우, Claude Code는 최신 프롬프트를 그대로 유지하고 그 이전의 모든 내용을 요약합니다.2452* 전체 교환을 하나도 요약할 수 없는 경우 Claude Code는 최신 프롬프트를 그대로 유지하고 그 이전의 모든 내용을 요약합니다.

2437* 이 경우 대화가 사용자의 프롬프트로 끝나지 않으면, Claude Code는 대신 전체 대화를 요약합니다.2453* 이 경우 대화가 사용자의 프롬프트로 끝나지 않으면 Claude Code는 대신 대화 전체를 요약합니다.

2438 2454 

2439이어서 유지할 내용에 모델 응답이 없고 사용자가 작성한 텍스트가 약 1,000토큰 미만인 경우(예: 너무 큰 붙여넣기 이후 보낸 짧은 재시도), Claude Code는 이 복구를 건너뜁니다. 새로 시작하려면 `/clear`를 실행하십시오. v2.1.269 이전에는 온전한 교환을 요약할 수 없을 때마다 압축이 실패했기 때문에, 그런 상태의 세션은 매 턴마다 이 오류가 다시 발생했습니다.2455Claude Code가 이어서 가져갈 내용에 모델 응답이 없고 사용자가 직접 작성한 텍스트가 약 1,000 토큰 미만인 경우(예: 지나치게 큰 내용을 붙여넣은 후 보낸 짧은 재시도), Claude Code는 이 복구를 건너뜁니다. `/clear`를 실행하여 새로 시작하세요. v2.1.269 이전에는 전체 교환을 요약할 수 없을 때마다 압축이 실패했기 때문에, 이 상태의 세션에서는 매 턴마다 이 오류가 다시 발생했습니다.

2440 2456 

2441교환이 하나뿐인 대화에는 요약할 이전 턴이 없습니다. 이런 대화에서 자동 압축이 실행될 상황이 되면, Claude Code는 시도를 건너뛰고 대신 무엇이 요청을 채우고 있는지 설명합니다. API가 오류에 토큰 수를 보고하지 않는 경우 메시지는 다음과 같습니다.2457교환이 하나뿐인 대화에는 요약할 이전 턴이 없습니다. 이러한 대화에서 자동 압축이 실행될 상황이 되면 Claude Code는 시도를 건너뛰고, 대신 요청을 채우고 있는 내용이 무엇인지 설명합니다. API가 오류에서 토큰 수를 보고하지 않으면 메시지는 다음과 같습니다:

2442 2458 

2443```text theme={null}2459```text theme={null}

2444Prompt is too long · this conversation is a single exchange and cannot be compacted — the request size comes mostly from system prompt, tool definitions, or attachments.2460Prompt is too long · this conversation is a single exchange and cannot be compacted — the request size comes mostly from system prompt, tool definitions, or attachments.

2445```2461```

2446 2462 

2447API가 오류에 토큰 수를 보고하는 경우, Claude Code는 이를 대화 크기에 대한 자체 추정치와 비교하여 요청의 대부분이 대화 자체의 내용인지, 아니면 Claude Code가 함께 보내는 시스템 프롬프트, 도구 정의, 첨부 파일 내용인지 판단합니다. 대화 자체의 내용이 요청의 대부분을 차지하는 경우 메시지는 다음과 같습니다.2463API가 오류에서 토큰 수를 보고하면, Claude Code는 이를 대화 크기에 대한 자체 추정치와 비교하여 요청의 대부분을 차지하는 것이 대화 자체의 내용인지, 아니면 Claude Code가 함께 보내는 시스템 프롬프트, 도구 정의, 첨부 내용인지 판단합니다. 대화 자체의 내용이 요청의 대부분을 차지하면 메시지는 다음과 같습니다:

2448 2464 

2449```text theme={null}2465```text theme={null}

2450Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) and this conversation's own content is most of it. A single-exchange conversation cannot be compacted; start with less content (smaller files or pasted text).2466Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) and this conversation's own content is most of it. A single-exchange conversation cannot be compacted; start with less content (smaller files or pasted text).

2451```2467```

2452 2468 

2453요청의 대부분이 대화 외부에 있는 경우 메시지는 다음과 같습니다.2469요청의 대부분이 대화 외부에 있으면 메시지는 다음과 같습니다:

2454 2470 

2455```text theme={null}2471```text theme={null}

2456Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) but this conversation is only ~<conversation tokens> tokens — the rest is system prompt, tool definitions, and attachment content. A single-exchange conversation cannot be compacted; reduce attached files/tools or start with less context.2472Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) but this conversation is only ~<conversation tokens> tokens — the rest is system prompt, tool definitions, and attachment content. A single-exchange conversation cannot be compacted; reduce attached files/tools or start with less context.

2457```2473```

2458 2474 

2459v2.1.162 이전에는 Claude Code가 그래도 압축을 시도했고, 실패하면 `Prompt is too long`만 표시했습니다.2475v2.1.162 이전에는 Claude Code가 그럼에도 압축을 시도했고, 실패하면 `Prompt is too long`만 표시했습니다.

2460 2476 

2461**해결 방법:**2477**해결 방법:**

2462 2478 

2463* `/compact`를 실행하여 이전 턴을 요약하고 공간을 확보하거나, `/clear`를 실행하여 새로 시작하십시오. `/compact`가 `Not enough messages to compact.`로 응답하면 대화가 요약할 이전 내용이 없는 단일 교환이라는 뜻이므로, 공간은 그 하나의 프롬프트와 Claude Code가 모든 요청에 함께 보내는 내용이 차지하고 있습니다. `/clear`를 실행한 후 붙여넣는 텍스트를 줄이거나 더 작은 첨부 파일로 다시 보내거나, 아래 단계에 따라 도구 정의와 메모리 파일을 줄이십시오2479* `/compact`를 실행하여 이전 턴을 요약하고 공간을 확보하거나, `/clear`를 실행하여 새로 시작하세요. `/compact`가 `Not enough messages to compact.`로 응답하면 대화가 요약할 이전 내용이 없는 단일 교환이라는 뜻이므로, 공간은 해당 프롬프트 하나와 Claude Code가 모든 요청과 함께 보내는 내용이 차지하고 있습니다. `/clear`를 실행하고 붙여넣는 텍스트를 줄이거나 더 작은 첨부 파일로 다시 보내거나, 아래 단계에 따라 도구 정의와 메모리 파일을 줄이세요

2464* `/context`를 실행하면 시스템 프롬프트, 도구, 메모리 파일, 메시지 등 무엇이 윈도우를 차지하고 있는지 세부 내역을 확인할 수 있습니다2480* `/context`를 실행하여 윈도우를 차지하는 항목(시스템 프롬프트, 도구, 메모리 파일, 메시지)의 내역을 확인하세요

2465* 사용하지 않는 MCP 서버를 `/mcp disable <name>`으로 비활성화하여 해당 도구 정의를 컨텍스트에서 제거하십시오2481* 사용하지 않는 MCP 서버를 `/mcp disable <name>`으로 비활성화하여 해당 도구 정의를 컨텍스트에서 제거하세요

2466* 큰 `CLAUDE.md` 메모리 파일을 줄이거나, 관련이 있을 때만 로드되는 [경로 범위 규칙](https://code.claude.com/docs/ko/memory.md#path-specific-rules)으로 지침을 옮기십시오2482* 큰 `CLAUDE.md` 메모리 파일을 줄이거나, 관련 있을 때만 로드되는 [경로 범위 규칙](https://code.claude.com/docs/ko/memory.md#path-specific-rules)으로 지침을 옮기세요

2467* 자동 압축은 기본적으로 켜져 있으며 일반적으로 이 오류를 방지합니다. `/config`에서 또는 [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/ko/env-vars)로 자동 압축을 끈 경우 다시 켜십시오. 계속 끈 상태로 두려면 윈도우가 가득 차기 전에 직접 `/compact`를 실행하십시오.2483* 자동 압축은 기본적으로 켜져 있으며 일반적으로 이 오류를 방지합니다. `/config` 또는 [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/ko/env-vars)로 자동 압축을 끈 경우 다시 켜세요. 계속 꺼 두려면 윈도우가 가득 차기 전에 직접 `/compact`를 실행하세요.

2468* 더 큰 컨텍스트를 지원하는 모델에서 200K 토큰 근처에서 오류가 발생한다면, Claude Code가 인식하지 못하는 모델 ID가 원인일 수 있습니다. Claude Code는 이런 ID에 대해 200K 윈도우를 가정하므로, 그 이상으로 계속 작업하려면 [모델의 실제 컨텍스트 윈도우를 지정](https://code.claude.com/docs/ko/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id)하십시오.2484* 더 많은 토큰을 허용하는 모델에서 200K 토큰 근처에서 오류가 나타난다면, Claude Code가 인식하지 못하는 모델 ID가 한 가지 원인입니다. Claude Code는 이러한 ID에 대해 200K 윈도우를 가정하므로, 그 이상으로 계속 작업하려면 [모델의 실제 컨텍스트 윈도우를 지정하세요](https://code.claude.com/docs/ko/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id).

2469 * 사용자 지정 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/ko/env-vars)을 사용하고 오류가 `Prompt is too long · automatic compaction failed`로 시작한다면, [모델의 컨텍스트 윈도우를 설정](https://code.claude.com/docs/ko/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id)하거나 v2.1.299 이상으로 [업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하십시오. v2.1.299 이전에는 Claude Code가 가정된 200K 윈도우 근처에서 요청을 보내는 대신 해당 메시지와 함께 턴을 종료했습니다.2485 * 사용자 지정 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/ko/env-vars)을 사용하고 오류가 `Prompt is too long · automatic compaction failed`로 시작하면, [모델의 컨텍스트 윈도우를 설정](https://code.claude.com/docs/ko/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id)하거나 v2.1.299 이상으로 [업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하세요. v2.1.299 이전에는 Claude Code가 가정된 200K 윈도우 근처에서 요청을 보내는 대신 해당 메시지와 함께 턴을 종료했습니다.

2470* Claude가 대화를 압축하는 도중에 중지한 직후 오류가 나타났다면, 대화는 변경되지 않았으며 여전히 압축이 필요할 만큼 큽니다. `/compact`를 실행하고 메시지를 다시 보내십시오. 오류가 재발하지 않도록 하려면 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하여 v2.1.304 이상으로 만드십시오. v2.1.304 이전에는 그 시점에 중지하면 이 오류와 함께 턴이 종료될 수 있었습니다.2486* Claude가 대화를 압축하는 동안 중지한 직후에 오류가 나타났다면, 대화는 변경되지 않았으며 여전히 압축이 필요할 만큼 큽니다. `/compact`를 실행하고 메시지를 다시 보내세요. 오류가 재발하지 않도록 하려면 v2.1.304 이상으로 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하세요. v2.1.304 이전에는 이 시점에 중지하면 이 오류와 함께 턴이 종료될 수 있었습니다.

2471* v2.1.305에서 MCP 도구가 많고 Anthropic API에 직접 연결된 경우, 이 오류가 API의 관련 없는 400 또는 422 오류를 가릴 수 있습니다. 원래 오류를 확인하려면 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하여 v2.1.306 이상으로 만드십시오.2487* v2.1.305에서 MCP 도구가 많고 Anthropic API에 직접 연결된 경우, 이 오류가 API의 관련 없는 400 또는 422 오류를 가릴 수 있습니다. 원래 오류를 확인하려면 v2.1.306 이상으로 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하세요.

2472 2488 

2473컨텍스트가 채워지는 방식을 대화형으로 보려면 [컨텍스트 윈도우 살펴보기](https://code.claude.com/docs/ko/context-window.md)를 참조하십시오.2489컨텍스트가 채워지는 방식을 대화형으로 살펴보려면 [컨텍스트 윈도우 살펴보기](https://code.claude.com/docs/ko/context-window.md)를 참조하세요.

2474 2490 

2475### 컨텍스트가 토큰 한도를 초과함2491### Context exceeds the token limit

2476 2492 

2477대화가 모델의 컨텍스트 윈도우를 넘어설 만큼 커지면 `/context`는 출력 상단에 다음 경고를 표시합니다:2493대화가 모델의 컨텍스트 윈도우를 넘어서면 `/context`는 출력 상단에 다음 경고를 표시합니다:

2478 2494 

2479```text theme={null}2495```text theme={null}

2480Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.2496Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.

2481```2497```

2482 2498 

2483`Context exceeds` 경고가 표시된 후, 기본값인 [자동 압축](https://code.claude.com/docs/ko/settings-reference.md#autocompactenabled)이 켜져 있는 동안에는 두 명령 중 어느 것도 실행할 필요가 없습니다:2499`Context exceeds` 경고가 표시된 후에도 [자동 압축](https://code.claude.com/docs/ko/settings-reference.md#autocompactenabled)이 켜져 있는 동안(기본값)에는 두 명령 중 어느 것도 실행할 필요가 없습니다:

2484 2500 

2485* **자동 압축 켜짐**: 다음 메시지를 보내세요. 여전히 [`Prompt is too long`](#prompt-is-too-long)으로 실패하면 해당 항목을 참조하세요.2501* **자동 압축 켜짐**: 다음 메시지를 보내세요. 여전히 [`Prompt is too long`](#prompt-is-too-long)으로 실패하면 해당 항목을 참조하세요.

2486* **자동 압축 꺼짐**: 세션에서 경고에 `/compact`가 표시되어 있으면 이를 실행하고, 그렇지 않으면 `/clear`를 실행하여 다시 시작하세요. 둘 중 하나를 실행하기 전까지 메시지는 `Context limit reached`로 실패하며, `-p` 출력에서는 `Prompt is too long`으로 실패합니다.2502* **자동 압축 꺼짐**: 세션에서 경고에 `/compact`가 표시되어 있으면 이를 실행하거나, `/clear`를 실행하여 다시 시작하세요. 둘 중 하나를 실행하기 전까지는 메시지가 `Context limit reached`(`-p` 출력에서는 `Prompt is too long`)로 실패합니다.

2487 2503 

2488초과한 한도가 1M 컨텍스트 모델의 200K 경계처럼 압축 윈도우인 경우 경고 문구가 다릅니다. 압축 윈도우는 모델의 컨텍스트 윈도우보다 작을 수 있으므로, 이를 넘어선 요청도 여전히 성공할 수 있습니다.2504초과한 한도가 1M 컨텍스트 모델의 200K 경계와 같은 압축 윈도우인 경우 경고 문구가 다릅니다. 압축 윈도우는 모델의 컨텍스트 윈도우보다 작을 수 있으므로, 이를 넘어선 요청도 여전히 성공할 수 있습니다.

2489 2505 

2490```text theme={null}2506```text theme={null}

2491Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.2507Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.


2496**해결 방법:**2512**해결 방법:**

2497 2513 

2498* **압축 윈도우 경고 후**: 여러 턴으로 이루어진 대화에서는 `/compact`를 실행하여 이전 턴을 요약하고 공간을 확보하세요. 대신 새로 시작하려면 `/clear`를 실행하세요.2514* **압축 윈도우 경고 후**: 여러 턴으로 이루어진 대화에서는 `/compact`를 실행하여 이전 턴을 요약하고 공간을 확보하세요. 대신 새로 시작하려면 `/clear`를 실행하세요.

2499* 사용량을 줄이는 더 많은 방법은 [Prompt is too long](#prompt-is-too-long)을 참조하십시오2515* 사용량을 줄이는 다른 방법은 [Prompt is too long](#prompt-is-too-long)을 참조하세요

2500 2516 

2501v2.1.216 이전에는 `/context`가 100%를 넘는 사용량을 표시하면서도 그 의미나 복구 방법을 설명하는 경고 줄을 표시하지 않았습니다.2517v2.1.216 이전에는 `/context`가 100%를 넘는 사용량을 표시하면서도 그 의미나 복구 방법을 설명하는 경고 줄을 표시하지 않았습니다.

2502 2518 

2503### Request too large2519### Request too large

2504 2520 

2505토큰화 이전의 원시 요청 본문이 API의 32MB 한도를 초과했습니다. 보통 큰 붙여넣기 내용, 도구 결과 또는 첨부 파일 때문입니다. 이 한도는 [컨텍스트 윈도우](#prompt-is-too-long)와는 별개입니다.2521원시 요청 본문이 토큰화 전에 API의 32MB 한도를 초과했습니다. 대개 크게 붙여넣은 내용, 도구 결과 또는 첨부 파일 때문입니다. 이 한도는 [컨텍스트 윈도우](#prompt-is-too-long)와는 별개입니다.

2506 2522 

2507```text theme={null}2523```text theme={null}

2508Request too large (max 32MB). Accumulated images and attachments in the conversation pushed the request over the limit. Run /compact, or double press esc to go back and remove attachments.2524Request too large (max 32MB). Accumulated images and attachments in the conversation pushed the request over the limit. Run /compact, or double press esc to go back and remove attachments.

2509```2525```

2510 2526 

2511요청이 Claude API로 직접 전송되었고 API 자체가 이를 거부한 경우, Claude Code는 대화 크기를 측정하고 복구가 가능한지에 따라 메시지 문구를 정합니다. 프록시, 게이트웨이 또는 클라우드 제공업체를 거친 경우에는 일반 메시지가 표시됩니다. 측정된 형식은 다음과 같습니다.2527요청이 Claude API로 직접 전송되었고 API 자체가 이를 거부한 경우, Claude Code는 대화를 측정하고 복구가 가능한지에 따라 메시지 문구를 결정합니다. 프록시, 게이트웨이 또는 클라우드 제공업체를 거친 경우에는 일반 메시지가 표시됩니다. 측정된 형식은 다음과 같습니다:

2512 2528 

2513* `Request too large (max 32MB; 20.1MB of about 33.4MB is images or documents).`: 이미지나 문서 때문에 요청이 한도를 초과했습니다. Claude Code는 이를 제거한 후 재시도합니다.2529* `Request too large (max 32MB; 20.1MB of about 33.4MB is images or documents).`: 이미지나 문서 때문에 요청이 한도를 초과했습니다. Claude Code는 이를 제거하고 재시도합니다.

2514* `Request too large for the API's 32MB request limit`: 메시지만으로도 한도를 초과하므로 메시지에 `compacting cannot make it fit`이 표시되며 Claude Code는 재시도하지 않습니다. [비대화형 모드](https://code.claude.com/docs/ko/headless.md)에서는 대신 입력을 줄이거나 새 세션을 시작하라는 메시지가 표시됩니다.2530* `Request too large for the API's 32MB request limit`: 메시지만으로도 한도를 초과하므로, 메시지에 `compacting cannot make it fit`이 표시되고 Claude Code는 재시도하지 않습니다. [비대화형 모드](https://code.claude.com/docs/ko/headless.md)에서는 메시지가 대신 입력을 줄이거나 새 세션을 시작하라고 안내합니다.

2515 2531 

2516v2.1.212 이전에는 이미지가 충분히 누적된 대화가 매 턴마다 `Request too large (max 32MB). Double press esc to go back and try with a smaller file.`로 실패했습니다. v2.1.229 이전에는 압축으로 해결할 수 없는 경우에도 Claude Code가 모든 거부에 대해 첨부 파일 관련 조언을 표시했습니다.2532v2.1.212 이전에는 이미지가 충분히 누적된 대화가 매 턴마다 `Request too large (max 32MB). Double press esc to go back and try with a smaller file.`로 실패했습니다. v2.1.229 이전에는 압축이 도움이 되지 않는 경우에도 Claude Code가 모든 거부에 대해 첨부 파일 관련 조언을 표시했습니다.

2517 2533 

2518**해결 방법:**2534**해결 방법:**

2519 2535 

2520* 메시지에 `compacting cannot make it fit`이 표시되면 Esc를 두 번 눌러 큰 내용을 추가한 턴 이전으로 되돌아가거나, `/clear`를 실행하여 새로 시작하십시오2536* 메시지에 `compacting cannot make it fit`이 표시되면 Esc를 두 번 눌러 큰 내용을 추가한 턴 이전으로 돌아가거나, `/clear`를 실행하여 새로 시작하세요

2521* 그렇지 않으면 누적된 이미지와 첨부 파일을 제거하는 `/compact`를 실행하십시오2537* 그렇지 않으면 누적된 이미지와 첨부 파일을 제거하는 `/compact`를 실행하세요

2522* 큰 파일은 내용을 붙여넣는 대신 경로로 참조하여 Claude가 나누어 읽을 수 있도록 하십시오2538* 큰 파일은 내용을 붙여넣는 대신 경로로 참조하여 Claude가 나누어 읽을 수 있도록 하세요

2523* 이미지의 경우 아래의 [Image was too large](#image-was-too-large)를 참조하십시오2539* 이미지의 경우 아래 [Image was too large](#image-was-too-large)를 참조하세요

2524 2540 

2525### Image was too large2541### Image was too large

2526 2542 

2527붙여넣거나 첨부한 이미지가 API의 크기 또는 해상도 한도를 초과했습니다.2543붙여넣거나 첨부한 이미지가 API의 크기 또는 치수 한도를 초과합니다.

2528 2544 

2529```text theme={null}2545```text theme={null}

2530Image was too large. Double press esc to go back and try again with a smaller image.2546Image was too large. Double press esc to go back and try again with a smaller image.


2533An image in the conversation exceeds the dimension limit for many-image requests (3000px). Run /compact to remove old images from context, or start a new session.2549An image in the conversation exceeds the dimension limit for many-image requests (3000px). Run /compact to remove old images from context, or start a new session.

2534```2550```

2535 2551 

2536`could not be processed and was removed` 줄은 크기 또는 해상도 한도를 초과하는 이미지 등 대화 내의 이미지를 API가 거부했다는 의미입니다.2552`could not be processed and was removed` 줄은 API가 대화의 이미지(예: 크기 또는 치수 한도를 초과한 이미지)를 거부했음을 의미합니다.

2537 2553 

2538이러한 오류 중 하나가 계속 반복된다면 Claude Code를 업데이트하십시오. 이전 버전에서는 다음과 같은 이유로 이미지 오류가 반복될 수 있었습니다.2554이러한 오류 중 하나가 계속 반복되면 Claude Code를 업데이트하세요. 이전 버전에서는 다음과 같은 이유로 이미지 오류가 반복될 수 있었습니다:

2539 2555 

2540* v2.1.299 이전에는 이미지가 많은 긴 대화에서 Claude Code가 한도를 초과한 이미지 대신 마지막으로 첨부한 이미지를 제거할 수 있었습니다. 그러면 `was removed` 줄이 매 턴마다 반복되었고 Claude는 새 이미지를 보지 못했습니다.2556* v2.1.299 이전에는 이미지가 많은 긴 대화에서 Claude Code가 한도를 초과한 이미지 대신 마지막으로 첨부한 이미지를 제거할 수 있었습니다. 그러면 `was removed` 줄이 매 턴마다 반복되었고, Claude는 새 이미지를 보지 못했습니다.

2541* v2.1.299 이전에는 VS Code, Desktop 앱, Agent SDK에서 Claude가 작업하는 동안 첨부한 이미지가 다른 첨부 이미지와 달리 크기 조정되지 않았습니다. 이 이미지들은 원래 크기 그대로 API에 전달되어 긴 대화에서 이미지 오류가 반복되었습니다.2557* v2.1.299 이전에는 VS Code, Desktop 앱, Agent SDK에서 Claude가 작업하는 동안 첨부한 이미지가 다른 첨부 이미지처럼 크기 조정되지 않았습니다. 이러한 이미지는 원래 크기로 API에 전달되어 긴 대화에서 이미지 오류가 반복되는 원인이 되었습니다.

2542* v2.1.166 이전에는 붙여넣은 이미지가 대화에 남아 이후 모든 메시지에서 같은 오류가 반복될 수 있었습니다2558* v2.1.166 이전에는 붙여넣은 이미지가 대화에 남아 이후 모든 메시지에서 같은 오류가 반복될 수 있었습니다

2543 2559 

2544**해결 방법:**2560**해결 방법:**

2545 2561 

2546* 붙여넣기 전에 이미지 크기를 조정하십시오. API는 단일 이미지의 경우 가장 긴 변 기준 8000픽셀까지, 컨텍스트에 이미지가 20개를 초과하는 경우 3000픽셀까지 허용합니다.2562* 붙여넣기 전에 이미지 크기를 조정하세요. API는 단일 이미지의 경우 가장 긴 변이 최대 8000픽셀, 컨텍스트에 이미지가 20개를 넘는 경우 최대 3000픽셀인 이미지를 허용합니다.

2547* 전체 화면 대신 관련 영역만 더 좁게 스크린샷을 찍으십시오2563* 전체 화면 대신 관련 영역만 좁게 스크린샷을 찍으세요

2548* `dimension limit for many-image requests` 메시지의 경우, 메시지에 `/compact`가 언급되어 있으면 Claude Code 프롬프트에서 이를 실행하거나, 이미지가 더 적은 새 세션을 시작하십시오2564* `dimension limit for many-image requests` 메시지의 경우, 메시지에 `/compact`가 표시되어 있으면 Claude Code 프롬프트에서 이를 실행하거나, 이미지를 줄여 새 세션을 시작하세요

2549 2565 

2550`dimension limit for many-image requests` 메시지에는 API 오류에 명시된 픽셀 한도가 표시됩니다.2566`dimension limit for many-image requests` 메시지에는 API 오류에 명시된 픽셀 한도가 표시됩니다.

2551 2567 


2563Unable to resize image — its pixels could not be decoded (the file may be damaged, or use an encoding Claude Code cannot read), and it is over the … API limit (… raw, … base64), so it cannot be sent. Re-save it as a PNG or JPEG and try again.2579Unable to resize image — its pixels could not be decoded (the file may be damaged, or use an encoding Claude Code cannot read), and it is over the … API limit (… raw, … base64), so it cannot be sent. Re-save it as a PNG or JPEG and try again.

2564```2580```

2565 2581 

2566Claude Code는 일반적으로 큰 이미지를 자동으로 크기 조정합니다. 이 오류들은 이미지를 디코딩할 수 없었거나 API 한도에 맞게 크기를 조정할 수 없었다는 의미입니다.2582Claude Code는 일반적으로 큰 이미지의 크기를 자동으로 조정합니다. 이러한 오류는 이미지를 디코딩할 수 없었거나 API 한도에 맞게 크기를 조정할 수 없었음을 의미합니다.

2583 

2584표시되는 오류에는 이 예시의 `2000x2000px` 대신 `2576x2576px`와 같은 다른 픽셀 한도가 명시될 수 있습니다.

2567 2585 

2568**해결 방법:**2586**해결 방법:**

2569 2587 

2570* 메시지에서 이미지 변환을 요청하면 PNG, JPEG, GIF 또는 WebP로 변환한 후 다시 첨부하십시오. Claude Code는 이러한 형식에 대해 이미지를 디코딩하지 않고도 파일 헤더에서 해상도를 확인할 수 있습니다.2588* 메시지에서 이미지 변환을 요청하면 PNG, JPEG, GIF 또는 WebP로 변환한 후 다시 첨부하세요. Claude Code는 이러한 형식의 경우 이미지를 디코딩하지 않고도 파일 헤더에서 치수를 확인할 수 있습니다.

2571* 메시지에 해상도 또는 크기 한도가 표시되면, 첨부하기 전에 해당 한도 이하로 이미지 크기를 조정하거나 다시 압축하십시오.2589* 메시지에 치수 또는 크기 한도가 표시되면 첨부하기 전에 이미지를 해당 한도 미만으로 크기 조정하거나 다시 압축하세요.

2572* 메시지에 CMYK JPEG, 애니메이션 WebP, 손상되었을 수 있는 파일 등의 원인이 표시되면, 메시지가 제안하는 형식으로 이미지를 다시 저장한 후 다시 첨부하십시오.2590* 메시지에 CMYK JPEG, 애니메이션 WebP, 손상되었을 수 있는 파일과 같은 원인이 명시되어 있으면 메시지가 제안하는 형식으로 이미지를 다시 저장한 후 다시 첨부하세요.

2573 2591 

2574### Request rejected as unprocessable by the model2592### Request rejected as unprocessable by the model

2575 2593 

2576API가 모델이 처리할 수 없는 요청이라며 요청을 거부했습니다. 이 메시지는 API 자체의 메시지입니다.2594API가 모델이 처리할 수 없는 요청으로 판단하여 요청을 거부했습니다. 이 메시지는 API 자체의 메시지입니다.

2577 2595 

2578```text theme={null}2596```text theme={null}

2579API Error: 400 Request rejected as unprocessable by the model (too many or oversized images, or unsupported parameters)2597API Error: 400 Request rejected as unprocessable by the model (too many or oversized images, or unsupported parameters)

2580```2598```

2581 2599 

2582Claude Code는 거부된 요청에서 가장 오래된 이미지와 문서를 제거한 후 다시 보낼 수 있습니다. v2.1.290 이전에는 Claude Code가 이 거부에 대해 이미지를 제거하지 않았기 때문에, 수백 개의 이미지가 누적된 긴 세션은 매 턴마다 이 오류로 실패할 수 있었습니다.2600Claude Code는 거부된 요청에서 가장 오래된 이미지와 문서를 제거하고 다시 보낼 수 있습니다. v2.1.290 이전에는 Claude Code가 이 거부에 대해 이미지를 제거하지 않았기 때문에, 수백 개의 이미지가 누적된 긴 세션은 매 턴마다 이 오류로 실패할 수 있었습니다.

2583 2601 

2584**해결 방법:**2602**해결 방법:**

2585 2603 

2586* 이미지나 문서가 포함된 대화에서 메시지가 계속 나타나면 직접 제거하십시오. Esc를 두 번 눌러 이를 추가한 턴 이전으로 되돌아가거나, `/clear`를 실행하여 새로 시작하십시오.2604* 이미지나 문서가 있는 대화에서 메시지가 계속 나타나면 직접 제거하세요. Esc를 두 번 눌러 해당 항목을 추가한 턴 이전으로 돌아가거나, `/clear`를 실행하여 새로 시작하세요.

2587 2605 

2588### PDF 오류2606### PDF 오류

2589 2607 

2590첨부한 PDF를 처리할 수 없습니다. 여기에는 메시지가 비대화형 형식으로 표시되어 있으며, 대화형 세션에서는 대신 esc를 두 번 눌러 다시 시도하라고 안내합니다.2608첨부한 PDF를 처리할 수 없었습니다. 여기에 표시된 메시지는 비대화형 형식이며, 대화형 세션에서는 대신 esc를 두 번 눌러 다시 시도하라는 안내가 표시됩니다.

2591 2609 

2592```text theme={null}2610```text theme={null}

2593PDF too large (max 100 pages, 20MB). Try reading the file a different way (e.g., extract text with pdftotext).2611PDF too large (max 100 pages, 20MB). Try reading the file a different way (e.g., extract text with pdftotext).


2597 2615 

2598**해결 방법:**2616**해결 방법:**

2599 2617 

2600* 너무 큰 PDF의 경우, 전체 파일을 첨부하는 대신 Claude에게 Read 도구로 페이지 범위를 읽도록 요청하거나, `pdftotext` 같은 도구로 텍스트를 추출한 후 출력 파일을 경로로 참조하십시오2618* 크기가 큰 PDF의 경우 전체 파일을 첨부하는 대신 Claude에게 Read 도구로 페이지 범위를 읽도록 요청하거나, `pdftotext` 같은 도구로 텍스트를 추출한 후 출력 파일을 경로로 참조하세요

2601* 보호되었거나 유효하지 않은 PDF의 경우, 비밀번호를 제거하거나 원본 애플리케이션에서 파일을 다시 내보낸 후 다시 시도하십시오2619* 보호되었거나 유효하지 않은 PDF의 경우 암호를 제거하거나 원본 애플리케이션에서 파일을 다시 내보낸 후 다시 시도하세요

2602 2620 

2603Claude가 Read 도구로 PDF의 페이지 범위를 읽을 때, 다른 메시지와 함께 읽기가 실패할 수 있습니다.2621Claude가 Read 도구로 PDF의 페이지 범위를 읽을 때 다음과 같은 다른 메시지와 함께 읽기가 실패할 수 있습니다:

2604 2622 

2605```text theme={null}2623```text theme={null}

2606pdftoppm is not installed. Install poppler-utils (e.g. `brew install poppler` or `apt-get install poppler-utils`) to enable PDF page rendering.2624pdftoppm is not installed. Install poppler-utils (e.g. `brew install poppler` or `apt-get install poppler-utils`) to enable PDF page rendering.

2607```2625```

2608 2626 

2609페이지 범위 읽기는 `pdftoppm`으로 페이지를 렌더링합니다. 메시지에 제시된 명령으로 poppler-utils를 설치하거나, 다른 플랫폼에서는 `pdftoppm`을 `PATH`에 추가하는 poppler 빌드를 설치하십시오. 어떤 PDF가 페이지 범위로 읽히는지는 [Read 도구 동작](https://code.claude.com/docs/ko/tools-reference.md#read-tool-behavior)을 참조하십시오.2627페이지 범위 읽기는 `pdftoppm`으로 페이지를 렌더링합니다. 메시지에 제시된 명령으로 poppler-utils를 설치하거나, 다른 플랫폼에서는 `pdftoppm`을 `PATH`에 추가하는 poppler 빌드를 설치하세요. 어떤 PDF가 페이지 범위로 읽히는지는 [Read 도구 동작](https://code.claude.com/docs/ko/tools-reference.md#read-tool-behavior)을 참조하세요.

2610 2628 

2611### Extra inputs are not permitted2629### Extra inputs are not permitted

2612 2630 

2613요청을 받은 엔드포인트가 요청의 필드 중 하나를 허용하지 않는 입력으로 거부했으며, 엔드포인트의 메시지에 해당 필드가 표시됩니다.2631요청을 받은 엔드포인트가 요청의 필드 중 하나를 허용하지 않는 입력으로 판단하여 거부했으며, 엔드포인트의 메시지에 해당 필드가 명시됩니다.

2614 2632 

2615```text theme={null}2633```text theme={null}

2616API Error: 400 ... context_management: Extra inputs are not permitted2634API Error: 400 ... context_management: Extra inputs are not permitted

2617```2635```

2618 2636 

2619Claude Code는 `context_management`나 도구 검색의 `defer_loading` 같은 베타 전용 필드를 이를 활성화하는 `anthropic-beta` 헤더와 함께 보냅니다. 게이트웨이가 본문은 전달하지만 헤더를 누락하면 API는 인식하지 못하는 필드를 보게 됩니다. 게이트웨이가 Anthropic 형식의 본문을 스키마가 다른 업스트림으로 전달하면, 해당 업스트림이 이러한 필드를 거부합니다. [베타 헤더와 본문 필드 쌍](https://code.claude.com/docs/ko/llm-gateway-protocol.md#beta-header-and-body-field-pairs)에서 두 경우를 모두 다룹니다.2637Claude Code는 `context_management` 및 도구 검색의 `defer_loading`과 같은 베타 전용 필드를, 이를 활성화하는 `anthropic-beta` 헤더와 함께 보냅니다. 게이트웨이가 본문은 전달하지만 헤더를 제거하면 API는 인식할 수 없는 필드를 받게 됩니다. 게이트웨이가 Anthropic 형식의 본문을 다른 스키마를 사용하는 업스트림으로 전달하면 해당 업스트림이 이러한 필드를 거부합니다. [베타 헤더와 본문 필드 쌍](https://code.claude.com/docs/ko/llm-gateway-protocol.md#beta-header-and-body-field-pairs)에서 두 경우를 모두 다룹니다.

2620 2638 

2621**해결 방법:**2639**해결 방법:**

2622 2640 

2623* 메시지에 `context_management: Extra inputs are not permitted`가 포함되어 있으면 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하여 v2.1.304 이상으로 만드십시오. 업데이트 후에는 Claude Code가 이 거부에 대해 해당 필드 없이 요청을 한 번 더 보냅니다. v2.1.304 이전에는 Claude Code가 이 거부를 재시도하지 않았습니다.2641* 메시지에 `context_management: Extra inputs are not permitted`가 포함되어 있으면 v2.1.304 이상으로 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하세요. 업데이트 후에는 Claude Code가 이 거부에 대응하여 해당 필드 없이 요청을 한 번 더 보냅니다. v2.1.304 이전에는 Claude Code가 이 거부에 대해 재시도하지 않았습니다.

2624* 메시지에 `defer_loading` 또는 `tool_reference`가 표시되면 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하여 v2.1.305 이상으로 만드십시오. 그러면 Claude Code는 이 거부에 대해 도구 검색 필드 없이 [요청을 한 번 더 보냅니다](https://code.claude.com/docs/ko/llm-gateway-protocol.md#retry-without-tool-search).2642* 메시지에 `defer_loading` 또는 `tool_reference`가 명시되어 있으면 v2.1.305 이상으로 [Claude Code를 업데이트](https://code.claude.com/docs/ko/setup.md#update-claude-code)하세요. 그러면 Claude Code는 이 거부에 대응하여 도구 검색 필드 없이 [요청을 한 번 더 보냅니다](https://code.claude.com/docs/ko/llm-gateway-protocol.md#retry-without-tool-search).

2625* 게이트웨이가 헤더를 누락한다면 `anthropic-beta` 헤더를 전달하도록 구성하십시오. 게이트웨이가 전달해야 하는 항목은 [기능 패스스루](https://code.claude.com/docs/ko/llm-gateway-protocol.md#feature-pass-through)를 참조하십시오.2643* 게이트웨이가 헤더를 제거하는 경우 `anthropic-beta` 헤더를 전달하도록 구성하세요. 게이트웨이가 전달해야 하는 항목은 [기능 패스스루](https://code.claude.com/docs/ko/llm-gateway-protocol.md#feature-pass-through)를 참조하세요.

2626* 대안으로, 실행하기 전에 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](https://code.claude.com/docs/ko/env-vars)을 설정하십시오. 정확한 적용 범위는 [사전 출시 기능 비활성화](https://code.claude.com/docs/ko/llm-gateway-protocol.md#disable-pre-release-capabilities)에서 다룹니다.2644* 대체 방법으로, 실행하기 전에 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](https://code.claude.com/docs/ko/env-vars)을 설정하세요. 정확한 적용 범위는 [출시 전 기능 비활성화](https://code.claude.com/docs/ko/llm-gateway-protocol.md#disable-pre-release-capabilities)에서 다룹니다.

2627 2645 

2628v2.1.302 이전에는 게이트웨이가 관여하지 않아도 이 오류에 `diagnostics` 필드가 표시될 수 있었습니다. 이는 이미 Anthropic API를 사용한 세션이 재시작 없이 Amazon Bedrock 또는 Google Cloud의 Agent Platform으로 전환될 때 나타났습니다. 예를 들어, 다른 Claude Code 창에서 [`/setup-bedrock`](https://code.claude.com/docs/ko/commands)을 실행하면 열어 둔 세션이 Bedrock으로 전환됩니다. 해당 버전에서는 그 세션에서 `/clear`를 실행하거나 세션을 재시작하십시오.2646v2.1.302 이전에는 게이트웨이가 관여하지 않아도 이 오류에 `diagnostics` 필드가 명시될 수 있었습니다. 이 오류는 이미 Anthropic API를 사용한 세션이 재시작 없이 Amazon Bedrock 또는 Google Cloud의 Agent Platform으로 전환될 때 나타났습니다. 예를 들어 열어 둔 세션은 다른 Claude Code 창에서 [`/setup-bedrock`](https://code.claude.com/docs/ko/commands)을 실행하면 Bedrock으로 전환됩니다. 해당 버전에서는 그 세션에서 `/clear`를 실행하거나 세션을 재시작하세요.

2629 2647 

2630### Tool input schema is invalid2648### 도구 입력 스키마가 유효하지 않음

2631 2649 

2632요청에 포함된 도구가 API의 JSON Schema 검증에 실패하는 `input_schema`를 선언했기 때문에 API가 요청 전체를 거부했습니다. `tools.` 뒤의 숫자는 요청의 도구 목록에서 실패한 도구의 위치이며, 조회할 수 있는 이름이 아닙니다.2650요청의 도구가 API의 JSON Schema 검증을 통과하지 못하는 `input_schema`를 선언하여 API가 요청 전체를 거부했습니다. `tools.` 뒤의 숫자는 요청의 도구 목록에서 실패한 도구의 위치이며, 조회할 수 있는 이름이 아닙니다.

2633 2651 

2634```text theme={null}2652```text theme={null}

2635API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid2653API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid


2638 2656 

2639첫 번째 형식은 스키마가 유효한 JSON Schema draft 2020-12가 아니라는 의미입니다. 두 번째 형식은 최상위 속성 이름이 메시지에 인용된 패턴과 일치하지 않는다는 의미입니다.2657첫 번째 형식은 스키마가 유효한 JSON Schema draft 2020-12가 아니라는 의미입니다. 두 번째 형식은 최상위 속성 이름이 메시지에 인용된 패턴과 일치하지 않는다는 의미입니다.

2640 2658 

2641Claude Code는 서버의 도구를 로드할 때 [입력 스키마가 이 검증에 실패할 MCP 도구를 제외](https://code.claude.com/docs/ko/mcp.md#tools-with-invalid-input-schemas)하므로, 일반적으로 요청에는 그런 도구가 포함되지 않습니다.2659Claude Code는 서버의 도구를 로드할 때 [이 검증에 실패할 입력 스키마를 가진 MCP 도구를 제외](https://code.claude.com/docs/ko/mcp.md#tools-with-invalid-input-schemas)하므로, 일반적으로 요청에는 그러한 도구가 포함되지 않습니다.

2642 2660 

2643[플래그 가져오기가 꺼진 배포](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching)나 플래그를 한 번도 받지 못한 머신에서는, Claude Code가 어떤 도구가 거부될지 서버 로그에 기록하지만 그래도 해당 도구를 보내므로 이 오류가 여전히 발생할 수 있습니다.2661[플래그 가져오기가 꺼진 배포](https://code.claude.com/docs/ko/env-vars.md#features-that-need-feature-flag-fetching) 또는 플래그를 한 번도 받지 못한 머신에서는 Claude Code가 어떤 도구가 거부될지를 서버 로그에 기록하지만 해당 도구를 그대로 보내므로, 이 오류가 여전히 발생할 수 있습니다.

2644 2662 

2645이 오류는 스키마가 `$schema`에서 draft 2020-12 이외의 JSON Schema 방언을 선언한 도구에 대해서도 발생할 수 있습니다. Claude Code는 이러한 스키마를 JSON Schema 메타 스키마와 대조하여 확인하지 않지만, 최상위 속성 이름 검사는 여전히 적용됩니다.2663이 오류는 `$schema`에서 draft 2020-12 이외의 JSON Schema 방언을 선언하는 스키마를 가진 도구에서도 발생할 수 있습니다. Claude Code는 이러한 스키마를 JSON Schema 메타 스키마와 대조하여 검사하지 않지만, 최상위 속성 이름 검사는 여전히 적용됩니다.

2646 2664 

2647v2.1.216 이전에는 어떤 배포에서도 제외 검사가 실행되지 않았습니다.2665v2.1.216 이전에는 어떤 배포에서도 제외 검사가 실행되지 않았습니다.

2648 2666 

2649**해결 방법:**2667**해결 방법:**

2650 2668 

2651* Claude Code 버전이 v2.1.300 이전이라면 셸에서 [`claude update`](https://code.claude.com/docs/ko/setup#update-claude-code)를 실행하십시오. v2.1.300 이전에는 Claude Code가 [거부된 도구의 매개변수 없이 요청을 재시도](https://code.claude.com/docs/ko/mcp.md#tools-whose-input-schema-the-api-refuses)하지 않았기 때문에, 해당 도구가 포함된 모든 요청에서 이 오류가 반복되었습니다.2669* Claude Code 버전이 v2.1.300 이전이면 셸에서 [`claude update`](https://code.claude.com/docs/ko/setup#update-claude-code)를 실행하세요. v2.1.300 이전에는 Claude Code가 [거부된 도구의 매개변수 없이 요청을 재시도](https://code.claude.com/docs/ko/mcp.md#tools-whose-input-schema-the-api-refuses)하지 않았기 때문에, 해당 도구를 포함한 모든 요청에서 이 오류가 반복되었습니다.

2652* 유효하지 않은 스키마를 선언하는 MCP 서버를 제거하거나 [비활성화](https://code.claude.com/docs/ko/mcp.md#disable-a-server-without-removing-it)하십시오. 오류는 도구를 위치로만 표시합니다. v2.1.216 이상에서는 각 서버의 로그에서 입력 스키마가 거부될 도구를 명시하는 줄을 확인하십시오. 어떤 로그에도 해당 도구가 명시되어 있지 않다면 서버를 하나씩 비활성화하십시오.2670* 유효하지 않은 스키마를 선언하는 MCP 서버를 제거하거나 [비활성화](https://code.claude.com/docs/ko/mcp.md#disable-a-server-without-removing-it)하세요. 오류는 도구를 위치로만 나타냅니다. v2.1.216 이상에서는 각 서버의 로그에서 입력 스키마가 거부될 도구를 명시하는 줄을 확인하세요. 이를 명시하는 로그가 없으면 서버를 하나씩 비활성화하세요.

2653* 서버를 직접 관리한다면 도구의 `input_schema`를 수정하십시오. 스키마는 유효한 JSON Schema여야 하며, 최상위 속성 이름은 1\~64자여야 하고 ASCII 문자와 숫자, `_`, `.`, `-`만 사용해야 합니다. [유효하지 않은 입력 스키마를 가진 도구](https://code.claude.com/docs/ko/mcp.md#tools-with-invalid-input-schemas)를 참조하십시오.2671* 서버를 유지 관리하는 경우 도구의 `input_schema`를 수정하세요. 스키마는 유효한 JSON Schema여야 하며, 최상위 속성 이름은 1\~64자여야 하고 ASCII 문자와 숫자, `_`, `.`, `-`만 사용해야 합니다. [유효하지 않은 입력 스키마를 가진 도구](https://code.claude.com/docs/ko/mcp.md#tools-with-invalid-input-schemas)를 참조하세요.

2654 2672 

2655### 128자를 초과하는 MCP 도구 이름2673### 128자를 초과하는 MCP 도구 이름

2656 2674 

2657MCP 서버가 나열한 도구의 전체 이름(예: `mcp__<server>__<tool>`)이 API가 허용하는 128자보다 깁니다. Claude Code는 [해당 도구를 Claude에 보내는 도구에서 제외](https://code.claude.com/docs/ko/mcp.md#tools-with-names-longer-than-128-characters)하며, 서버의 다른 도구는 계속 작동합니다. 셸에서 `claude --debug`로 시작한 세션에서는 Claude Code가 `~/.claude/debug/<session-id>.txt`의 디버그 로그에 다음 메시지를 기록합니다.2675MCP 서버가 `mcp__<server>__<tool>`과 같은 전체 이름이 API가 허용하는 128자보다 긴 도구를 나열합니다. Claude Code는 [Claude에게 보내는 도구에서 해당 도구를 제외](https://code.claude.com/docs/ko/mcp.md#tools-with-names-longer-than-128-characters)하며, 서버의 다른 도구는 계속 작동합니다. 셸에서 `claude --debug`로 시작한 세션에서는 Claude Code가 `~/.claude/debug/<session-id>.txt`의 디버그 로그에 다음 메시지를 기록합니다:

2658 2676 

2659```text theme={null}2677```text theme={null}

2660Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 1282678Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128


2662 2680 

2663**해결 방법:**2681**해결 방법:**

2664 2682 

2665* 서버를 직접 관리한다면 도구 이름을 줄이십시오.2683* 서버를 유지 관리하는 경우 도구 이름을 줄이세요.

2666* 서버가 [MCP 구성](https://code.claude.com/docs/ko/mcp.md#mcp-installation-scopes)에 있다면, 그곳에서 `analytics-database` 대신 `db`처럼 더 짧은 이름을 지정하십시오. 그런 다음 [권한 규칙](https://code.claude.com/docs/ko/permissions.md#mcp)과 [훅 matcher](https://code.claude.com/docs/ko/hooks.md#match-mcp-tools)처럼 이전 이름으로 서버나 도구를 참조하는 항목을 업데이트하십시오.2684* 서버가 [MCP 구성](https://code.claude.com/docs/ko/mcp.md#mcp-installation-scopes)에 있는 경우 그곳에서 `analytics-database` 대신 `db`처럼 더 짧은 이름을 지정하세요. 그런 다음 [권한 규칙](https://code.claude.com/docs/ko/permissions.md#mcp)과 [훅 matcher](https://code.claude.com/docs/ko/hooks.md#match-mcp-tools) 등 이전 이름으로 서버나 해당 도구를 참조하는 항목을 업데이트하세요.

2667* [플러그인이 서버를 번들로 제공](https://code.claude.com/docs/ko/mcp.md#plugin-provided-mcp-servers)하는 경우, 도구의 전체 이름에 플러그인 이름도 포함됩니다. 플러그인 관리자에게 서버 또는 도구 이름을 줄여 달라고 요청하십시오.2685* [플러그인이 서버를 번들로 제공](https://code.claude.com/docs/ko/mcp.md#plugin-provided-mcp-servers)하는 경우 도구의 전체 이름에는 플러그인 이름도 포함됩니다. 플러그인 유지 관리자에게 서버 또는 도구 이름을 줄여 달라고 요청하세요.

2668 2686 

2669v2.1.292 이전에는 Claude Code가 그래도 해당 도구를 보냈고, API는 이를 포함한 모든 요청을 `API Error: 400 ... tools.N.custom.name: String should have at most 128 characters`로 거부했습니다.2687v2.1.292 이전에는 Claude Code가 해당 도구를 그대로 보냈고, API는 이를 포함한 모든 요청을 `API Error: 400 ... tools.N.custom.name: String should have at most 128 characters`로 거부했습니다.

2670 2688 

2671### 200자를 초과하는 tool\_use.name2689### 200자를 초과하는 tool\_use.name

2672 2690 

2673대화 기록의 도구 호출에 API가 요청에서 허용하는 200자보다 긴 이름이 포함되어 있습니다.2691대화 기록의 도구 호출에 API가 요청에서 허용하는 200자보다 긴 이름이 포함되어 있습니다:

2674 2692 

2675```text theme={null}2693```text theme={null}

2676API Error: 400 ... tool_use.name: String should have at most 200 characters2694API Error: 400 ... tool_use.name: String should have at most 200 characters

2677```2695```

2678 2696 

2679Claude Code는 응답이 도착할 때와 저장된 대화를 로드할 때 이런 이름을 200자로 자르므로, 해당 호출은 [`No such tool available`](#no-such-tool-available) 도구 오류로 실패하고 대화는 이 API 오류 없이 계속됩니다.2697Claude Code는 응답이 도착할 때와 저장된 대화를 로드할 때 이러한 이름을 200자로 자르므로, 해당 호출은 [`No such tool available`](#no-such-tool-available) 도구 오류로 실패하고 대화는 이 API 오류 없이 계속됩니다.

2680 2698 

2681**해결 방법:**2699**해결 방법:**

2682 2700 

2683* `claude update`를 실행한 후 대화를 재개하십시오. 업데이트된 버전은 트랜스크립트를 로드할 때 너무 긴 이름을 복구하므로, 멈춰 있던 대화가 다시 작동합니다.2701* `claude update`를 실행한 후 대화를 재개하세요. 업데이트된 버전은 트랜스크립트를 로드할 때 지나치게 긴 이름을 복구하므로, 막혀 있던 대화가 다시 작동합니다.

2684 2702 

2685v2.1.281 이전에는 너무 긴 이름이 기록에 남아 있어 API가 `/compact`와 `--resume`을 포함하여 대화를 다시 보내는 모든 요청을 거부했기 때문에, 이 오류가 반복되고 대화가 멈춰 있었습니다.2703v2.1.281 이전에는 지나치게 긴 이름이 기록에 남아 있었고, API는 `/compact`와 `--resume`을 포함하여 대화를 다시 보내는 모든 요청을 거부했기 때문에 이 오류가 반복되고 대화가 막혔습니다.

2686 2704 

2687### There's an issue with the selected model2705### There's an issue with the selected model

2688 2706 

2689구성된 모델 이름을 인식할 수 없거나 계정에 해당 모델에 대한 접근 권한이 없습니다. v2.1.160부터 끝부분의 힌트(여기서는 대화형 형식으로 표시됨)는 사용 환경에 따라 다릅니다.2707구성된 모델 이름을 인식할 수 없거나 계정에 해당 모델에 대한 액세스 권한이 없습니다. v2.1.160부터 끝부분의 힌트(여기서는 대화형 형식으로 표시)는 사용 환경에 따라 다릅니다.

2690 2708 

2691```text theme={null}2709```text theme={null}

2692There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to pick a different model.2710There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to pick a different model.


2694 2712 

2695**해결 방법:**2713**해결 방법:**

2696 2714 

2697* **대화형 CLI**: `/model`을 실행하여 계정에서 사용할 수 있는 모델 중에서 선택하십시오.2715* **대화형 CLI**: `/model`을 실행하여 계정에서 사용할 수 있는 모델 중에서 선택하세요.

2698* **비대화형 모드(`-p`)**: 유효한 별칭 또는 ID와 함께 `--model`을 전달하거나, [`ANTHROPIC_MODEL`](https://code.claude.com/docs/ko/env-vars)을 설정하십시오. 이 사용 환경에서는 오류 텍스트에 `Run --model`이 표시됩니다.2716* **비대화형 모드(`-p`)**: 유효한 별칭이나 ID와 함께 `--model`을 전달하거나 [`ANTHROPIC_MODEL`](https://code.claude.com/docs/ko/env-vars)을 설정하세요. 이 사용 환경에서는 오류 텍스트에 `Run --model`이 표시됩니다.

2699* **Agent SDK**: 모델이 프로그래밍 방식으로 설정되므로 오류 텍스트에 힌트가 생략됩니다. TypeScript에서는 [`Options`의 `model`](https://code.claude.com/docs/ko/agent-sdk/typescript#options)을, Python에서는 [`ClaudeAgentOptions(model=...)`](https://code.claude.com/docs/ko/agent-sdk/python#claudeagentoptions)를 설정하고, 구조화된 `model_not_found` 오류를 처리하여 자체 재시도 또는 모델 선택기를 표시하십시오.2717* **Agent SDK**: 모델이 프로그래밍 방식으로 설정되므로 오류 텍스트에서 힌트가 생략됩니다. TypeScript에서는 [`Options`의 `model`](https://code.claude.com/docs/ko/agent-sdk/typescript#options)을, Python에서는 [`ClaudeAgentOptions(model=...)`](https://code.claude.com/docs/ko/agent-sdk/python#claudeagentoptions)을 설정하고, 구조화된 `model_not_found` 오류를 처리하여 자체 재시도 또는 모델 선택기를 표시하세요.

2700* 전체 버전 ID 대신 `sonnet`이나 `opus` 같은 별칭을 사용하십시오. 별칭은 관리되는 기본값으로 해석되므로 오래되어 쓸모없어지지 않습니다. [모델 구성](https://code.claude.com/docs/ko/model-config.md)을 참조하십시오.2718* 전체 버전 ID 대신 `sonnet` 또는 `opus`와 같은 별칭을 사용하세요. 별칭은 유지 관리되는 기본값으로 확인되므로 오래된 값이 되지 않습니다. [모델 구성](https://code.claude.com/docs/ko/model-config.md)을 참조하세요.

2701* CLI에서 잘못된 모델이 계속 돌아온다면 어딘가에 오래된 ID가 설정되어 있는 것입니다. [우선순위 순서](https://code.claude.com/docs/ko/model-config.md#setting-your-model)대로 모델을 설정할 수 있는 위치를 확인하고 오래된 값을 제거하십시오.2719* CLI에서 잘못된 모델이 계속 다시 나타나면 어딘가에 오래된 ID가 설정되어 있는 것입니다. [우선순위 순서](https://code.claude.com/docs/ko/model-config.md#setting-your-model)에 따라 모델을 설정할 수 있는 위치를 확인하고 오래된 값을 제거하세요.

2702* Claude Code는 만료된 claude.ai 로그인을 이 오류가 아닌 [Login expired](#login-expired)로 보고합니다. v2.1.206 이전에는 더 이상 갱신할 수 없는 만료된 로그인으로 인해 모든 모델이 이 오류로 실패했습니다. 이전 버전에서 이 현상이 나타나면 `/login`을 실행하십시오.2720* Claude Code는 만료된 claude.ai 로그인을 이 오류가 아닌 [Login expired](#login-expired)로 보고합니다. v2.1.206 이전에는 더 이상 갱신할 수 없는 만료된 로그인으로 인해 모든 모델이 이 오류로 실패했습니다. 이전 버전에서 이 현상이 나타나면 `/login`을 실행하세요.

2703* [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/ko/env-vars)이 [LLM 게이트웨이](https://code.claude.com/docs/ko/llm-gateway)를 가리키고 모든 모델이 이렇게 실패한다면, 게이트웨이와 그 업스트림이 [도구 검색](https://code.claude.com/docs/ko/mcp.md#tool-search-through-a-gateway) 필드를 허용하는지 확인하십시오. 기본적으로 Claude Code는 `defer_loading` 도구 필드와 `tool_reference` 블록을 이를 활성화하는 `anthropic-beta` 헤더와 함께 보냅니다. v2.1.304 이전에는 `ENABLE_TOOL_SEARCH`로 켜지 않는 한 게이트웨이 뒤에서 도구 검색이 꺼져 있었습니다.2721* [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/ko/env-vars)이 [LLM 게이트웨이](https://code.claude.com/docs/ko/llm-gateway)를 가리키고 모든 모델이 이렇게 실패하면, 게이트웨이와 해당 업스트림이 [도구 검색](https://code.claude.com/docs/ko/mcp.md#tool-search-through-a-gateway) 필드를 허용하는지 확인하세요. 기본적으로 Claude Code는 `defer_loading` 도구 필드와 `tool_reference` 블록을 이를 활성화하는 `anthropic-beta` 헤더와 함께 보냅니다. v2.1.304 이전에는 `ENABLE_TOOL_SEARCH`로 직접 켠 경우를 제외하고 게이트웨이 뒤에서 도구 검색이 꺼져 있었습니다.

2704* Google Cloud의 Agent Platform 배포의 경우 [Google Cloud의 Agent Platform 문제 해결](https://code.claude.com/docs/ko/google-vertex-ai.md#troubleshooting)을 참조하십시오.2722* Google Cloud의 Agent Platform 배포의 경우 [Google Cloud의 Agent Platform 문제 해결](https://code.claude.com/docs/ko/google-vertex-ai.md#troubleshooting)을 참조하세요.

2705 2723 

2706### Model is not a recognized model id2724### Model is not a recognized model id

2707 2725 

2708모델 전환에 전달한 문자열이 Claude Code가 모델로 사용할 수 있는 것이 아니므로, 요청을 보내지 않고 전환을 거부했으며 세션은 현재 모델을 유지합니다. 이 오류는 [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/typescript.md)의 `setModel()` 메서드로 모델을 설정할 때, [Desktop 앱](https://code.claude.com/docs/ko/desktop.md)처럼 Claude Code CLI를 대신 실행하는 앱이 모델을 설정할 때, 또는 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)로 연결된 기기에서 모델을 선택할 때 발생할 수 있습니다. v2.1.200 이전에는 Claude Code가 해당 문자열을 저장한 후 다음 요청에서 [There's an issue with the selected model](#theres-an-issue-with-the-selected-model)로 실패했습니다.2726모델 전환에 전달한 문자열은 Claude Code가 모델로 사용할 수 있는 문자열이 아니므로, Claude Code는 요청을 보내지 않고 전환을 거부했으며 세션은 현재 모델을 유지합니다. 이 오류는 [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/typescript.md) `setModel()` 메서드나 [Desktop 앱](https://code.claude.com/docs/ko/desktop.md)처럼 Claude Code CLI를 대신 실행하는 앱을 통해 모델을 설정하거나, [Remote Control](https://code.claude.com/docs/ko/remote-control.md)로 연결된 기기에서 모델을 선택할 때 발생할 수 있습니다. v2.1.200 이전에는 Claude Code가 문자열을 저장했다가 다음 요청에서 [There's an issue with the selected model](#theres-an-issue-with-the-selected-model)로 실패했습니다.

2709 2727 

2710```text theme={null}2728```text theme={null}

2711Model "Sonnet5" is not a recognized model id. Did you mean 'claude-sonnet-5'?2729Model "Sonnet5" is not a recognized model id. Did you mean 'claude-sonnet-5'?

2712```2730```

2713 2731 

2714이 예에서는 앱이 표시 이름 `Sonnet 5`를 보냈으며, 메시지는 이를 공백 없이 반복합니다. 끝부분의 힌트는 가장 가깝게 일치하는 별칭 또는 모델 ID를 표시합니다. 충분히 가까운 것이 없으면 대신 `Run /model to see available models.`로 표시됩니다. [Desktop 앱](https://code.claude.com/docs/ko/desktop.md)이 대신 시작한 세션에서는 일치하는 항목이 없을 때의 힌트가 `Switch to a different model.`로 표시됩니다.2732이 예시에서는 앱이 표시 이름 `Sonnet 5`를 보냈으며, 메시지는 이를 공백 없이 반복합니다. 끝부분의 힌트에는 가장 가깝게 일치하는 별칭 또는 모델 ID가 표시됩니다. 충분히 가까운 항목이 없으면 대신 `Run /model to see available models.`가 표시됩니다. [Desktop 앱](https://code.claude.com/docs/ko/desktop.md)이 대신 시작하는 세션에서는 일치 항목이 없을 때의 힌트가 `Switch to a different model.`로 표시됩니다.

2715 2733 

2716Anthropic API에서 Agent SDK나 앱을 통해 전환하는 경우, 표시 이름이나 빈 문자열처럼 모델 ID가 될 수 없는 문자열만 이 오류를 받습니다.2734Anthropic API에서 Agent SDK나 앱을 통해 전환하는 경우, 표시 이름이나 빈 문자열처럼 모델 ID가 될 수 없는 문자열에만 이 오류가 발생합니다.

2717 2735 

2718Remote Control 기기에서 모델을 선택하면 Claude Code가 문자열을 로컬에서 확인합니다. 모델 별칭, Claude Code가 나열하거나 사용자가 구성한 모델, 또는 `claude-`로 시작하는 ID가 아닌 모든 문자열은 `claud-sonnet-5`처럼 잘못 입력한 ID를 포함하여 이 오류를 받습니다. v2.1.260 이전에는 이 검사가 Remote Control 선택에 적용되지 않았으므로, 인식되지 않는 문자열이 적용된 후 다음 요청에서 실패했습니다.2736Remote Control 기기에서 모델을 선택하면 Claude Code가 로컬에서 문자열을 확인합니다. 모델 별칭, Claude Code가 나열하거나 사용자가 구성한 모델, 또는 `claude-`로 시작하는 ID가 아닌 모든 문자열에는 이 오류가 발생하며, `claud-sonnet-5`와 같이 잘못 입력한 ID도 포함됩니다. v2.1.260 이전에는 이 검사가 Remote Control 선택에 적용되지 않아, 인식되지 않는 문자열이 적용된 후 다음 요청에서 실패했습니다.

2719 2737 

2720**해결 방법:**2738**해결 방법:**

2721 2739 

2722* 인수 없이 `/model`을 실행하여 선택기를 열고 계정에서 사용할 수 있는 모델 중에서 선택한 후, 그곳에 표시된 별칭 또는 ID를 전달하십시오2740* 인수 없이 `/model`을 실행하여 선택기를 열고 계정에서 사용할 수 있는 모델 중에서 선택한 다음, 그곳에 표시된 별칭이나 ID를 전달하세요

2723* 최신 Claude Code 버전에서만 지원하는 별칭을 사용했다면 `claude update`를 실행하거나, 대신 모델의 전체 ID를 전달하십시오. 서버는 여전히 해당 모델에 대해 최소 Claude Code 버전을 요구할 수 있습니다. [Claude Code does not support this model](#claude-code-does-not-support-this-model)을 참조하십시오.2741* 최신 Claude Code 버전에서만 지원하는 별칭을 사용한 경우 `claude update`를 실행하거나 대신 모델의 전체 ID를 전달하세요. 서버는 여전히 해당 모델에 대해 최소 Claude Code 버전을 요구할 수 있습니다. [Claude Code does not support this model](#claude-code-does-not-support-this-model)을 참조하세요.

2724* v2.1.200 이전에 저장된 모델은 이 검사로 복구되지 않습니다. 오래된 값이 계속 돌아온다면 [모델 설정](https://code.claude.com/docs/ko/model-config.md#setting-your-model)에 나열된 위치에서 제거하십시오.2742* v2.1.200 이전에 저장된 모델은 이 검사로 복구되지 않습니다. 오래된 값이 계속 다시 나타나면 [모델 설정](https://code.claude.com/docs/ko/model-config.md#setting-your-model)에 나열된 위치에서 제거하세요.

2725* Anthropic API 이외의 제공업체, 또는 게이트웨이나 사용자 지정 `ANTHROPIC_BASE_URL` 뒤에서는 빈 문자열만 이 오류를 받습니다. Claude Code는 모든 제공업체에서 요청 시점에 [인식되지 않는 모델 진단 줄](#unrecognized-model-id-on-a-request)을 여전히 기록할 수 있습니다.2743* Anthropic API 이외의 제공업체나 게이트웨이 또는 사용자 지정 `ANTHROPIC_BASE_URL` 뒤에서는 빈 문자열에만 이 오류가 발생합니다. Claude Code는 모든 제공업체에서 요청 시점에 여전히 [인식되지 않는 모델 진단 줄](#unrecognized-model-id-on-a-request)을 기록할 수 있습니다.

2726 2744 

2727### Model not found2745### Model not found

2728 2746 

2729이름으로 모델을 전환했지만 Claude Code가 해당 이름의 모델이 존재하는지 확인할 수 없었습니다. 이름이 [모델 별칭](https://code.claude.com/docs/ko/model-config.md#model-aliases)이나 Claude Code가 로컬에서 허용하는 다른 표기가 아니면, Claude Code는 최소한의 API 요청으로 이를 확인하며, 이 오류는 대개 API 엔드포인트의 응답입니다. `/model <name>`의 경우, 공백이 포함된 이름처럼 모델 ID가 전혀 될 수 없는 이름도 같은 메시지를 받습니다.2747이름으로 모델을 전환했지만 Claude Code가 해당 이름의 모델이 존재하는지 확인할 수 없었습니다. 이름이 [모델 별칭](https://code.claude.com/docs/ko/model-config.md#model-aliases)이나 Claude Code가 로컬에서 허용하는 다른 표기가 아니면 Claude Code는 최소한의 API 요청으로 이를 확인하며, 이 오류는 대개 API 엔드포인트의 응답입니다. `/model <name>`에서는 공백이 포함된 이름처럼 애초에 모델 ID가 될 수 없는 이름에도 같은 메시지가 표시됩니다.

2730 2748 

2731```text theme={null}2749```text theme={null}

2732Model 'claude-opus-9' not found2750Model 'claude-opus-9' not found

2733```2751```

2734 2752 

2735제공업체별 모델 ID를 사용하는 제공업체에서는 메시지에 폴백 모델에 대한 해당 제공업체의 ID를 알려 주는 `Try '...' instead` 제안이 추가될 수 있습니다.2753제공업체별 모델 ID를 사용하는 제공업체에서는 메시지에 대체 모델에 대한 제공업체의 ID를 명시하는 `Try '...' instead` 제안이 추가될 수 있습니다.

2736 2754 

2737**해결 방법:**2755**해결 방법:**

2738 2756 

2739* 인수 없이 `/model`을 실행하여 계정에서 사용할 수 있는 모델 중에서 선택하거나, 관리되는 기본값으로 해석되는 `sonnet` 같은 [모델 별칭](https://code.claude.com/docs/ko/model-config.md#model-aliases)을 사용하십시오2757* 인수 없이 `/model`을 실행하여 계정에서 사용할 수 있는 모델 중에서 선택하거나, 유지 관리되는 기본값으로 확인되는 `sonnet`과 같은 [모델 별칭](https://code.claude.com/docs/ko/model-config.md#model-aliases)을 사용하세요

2740* 전체 ID를 입력했다면 제공업체의 모델 카탈로그와 대조하여 확인하십시오. 새로 출시된 모델은 제공업체나 리전에서 제공하기 전에 Anthropic API에서 먼저 사용 가능할 수 있습니다.2758* 전체 ID를 입력한 경우 제공업체의 모델 카탈로그와 대조하세요. 새로 출시된 모델은 제공업체나 리전에서 제공되기 전에 Anthropic API에서 먼저 사용 가능할 수 있습니다.

2741* Agent SDK에서는 `setModel()`이 이 메시지와 함께 실패하고 세션은 이전 모델로 계속 실행됩니다. TypeScript SDK에서는 [`supportedModels()`](https://code.claude.com/docs/ko/agent-sdk/typescript#query-object)를 호출하여 전환할 수 있는 모델 목록을 확인하십시오.2759* Agent SDK에서는 `setModel()`이 이 메시지와 함께 실패하고 세션은 이전 모델로 계속 실행됩니다. TypeScript SDK에서는 [`supportedModels()`](https://code.claude.com/docs/ko/agent-sdk/typescript#query-object)를 호출하여 전환할 수 있는 모델 목록을 확인하세요.

2742* v2.1.265 이전에는 `/model`이 `opusplan[1m]` 별칭 표기도 이 오류로 거부했습니다. 해당 버전에서는 Claude Code를 업데이트하거나, 대신 [설정](https://code.claude.com/docs/ko/model-config.md#setting-your-model)에서 또는 `--model`로 모델을 설정하십시오.2760* v2.1.265 이전에는 `/model`이 `opusplan[1m]` 별칭 표기도 이 오류로 거부했습니다. 해당 버전에서는 Claude Code를 업데이트하거나, 대신 [설정](https://code.claude.com/docs/ko/model-config.md#setting-your-model)이나 `--model`로 모델을 설정하세요.

2743 2761 

2744### Couldn't confirm model with the API2762### Couldn't confirm model with the API

2745 2763 

2746[Agent SDK](https://code.claude.com/docs/ko/agent-sdk/typescript.md)의 `setModel()` 메서드나 [Desktop 앱](https://code.claude.com/docs/ko/desktop.md)처럼 Claude Code CLI를 대신 실행하는 앱을 통해 모델을 전환했으나, API 엔드포인트로 모델 ID를 확인하는 요청이 15초 이내에 응답을 받지 못했습니다. 세션은 현재 모델을 유지합니다.2764[Agent SDK](https://code.claude.com/docs/ko/agent-sdk/typescript.md) `setModel()` 메서드나 [Desktop 앱](https://code.claude.com/docs/ko/desktop.md)처럼 Claude Code CLI를 대신 실행하는 앱을 통해 모델을 전환했는데, API 엔드포인트에서 모델 ID를 확인하는 요청이 15초 내에 응답을 받지 못했습니다. 세션은 현재 모델을 유지합니다.

2747 2765 

2748```text theme={null}2766```text theme={null}

2749Couldn't confirm model "claude-sonnet-5" with the API. Try again, or run /model to see available models.2767Couldn't confirm model "claude-sonnet-5" with the API. Try again, or run /model to see available models.

2750```2768```

2751 2769 

2752[Desktop 앱](https://code.claude.com/docs/ko/desktop.md)이 대신 시작한 세션에서는 메시지가 `Try again.`으로 끝납니다.2770[Desktop 앱](https://code.claude.com/docs/ko/desktop.md)이 대신 시작하는 세션에서는 메시지가 `Try again.`으로 끝납니다.

2753 2771 

2754**해결 방법:**2772**해결 방법:**

2755 2773 

2756* 모델로 다시 전환하십시오2774* 해당 모델로 다시 전환하세요

2757* 전환이 계속 실패하면 Claude Code가 API 엔드포인트에 연결할 수 있는지 확인하십시오. [네트워크 및 연결 오류](#network-and-connection-errors)를 참조하십시오2775* 전환이 계속 실패하면 Claude Code가 API 엔드포인트에 연결할 수 있는지 확인하세요. [네트워크 및 연결 오류](#network-and-connection-errors)를 참조하세요

2758 2776 

2759### 선택한 모델을 확인할 때 발생하는 API 오류2777### 선택한 모델을 확인할 때 발생하는 API 오류

2760 2778 

2761`/model <name>`으로 모델을 선택했거나, 세션에 연결된 앱이 전환을 요청했습니다. API가 속도 제한이나 서버 오류처럼 별도 항목이 없는 이유로 Claude Code가 모델 확인을 위해 보내는 최소한의 요청을 거부했습니다. 세션은 현재 모델을 유지하며, 메시지 끝에 그 사실이 표시됩니다.2779`/model <name>`으로 모델을 선택했거나 세션에 연결된 앱이 전환을 요청했습니다. API가 속도 제한이나 서버 오류처럼 별도 항목이 없는 이유로, Claude Code가 모델을 확인하기 위해 보내는 최소한의 요청을 거부했습니다. 세션은 현재 모델을 유지하며, 메시지 끝에서 이를 알립니다:

2762 2780 

2763```text theme={null}2781```text theme={null}

2764API error: 429 <the server's explanation> · model not changed2782API error: 429 <the server's explanation> · model not changed


2768 2786 

2769**해결 방법:**2787**해결 방법:**

2770 2788 

2771* 서버의 설명에 따라 조치하십시오. 속도 제한이나 5xx 상태의 경우 잠시 기다린 후 모델을 다시 선택하십시오2789* 서버의 설명에 따라 조치하세요. 속도 제한이나 5xx 상태인 경우 잠시 기다린 후 모델을 다시 선택하세요

2772* 고유한 문구가 있는 거부는 [Model not found](#model-not-found)와 [Model is restricted by your organization's settings](#model-is-restricted-by-your-organizations-settings) 같은 주변 항목에서 다룹니다2790* 고유한 문구가 있는 거부는 [Model not found](#model-not-found)와 [Model is restricted by your organization's settings](#model-is-restricted-by-your-organizations-settings) 등 주변 항목에서 다룹니다

2773 2791 

2774### Claude Opus is not available with the Claude Pro plan2792### Claude Opus is not available with the Claude Pro plan

2775 2793 

2776현재 구독 플랜에 선택한 모델이 포함되어 있지 않습니다.2794활성 구독 플랜에 선택한 모델이 포함되어 있지 않습니다.

2777 2795 

2778```text theme={null}2796```text theme={null}

2779Claude Opus is not available with the Claude Pro plan. If you have updated your subscription plan recently, run /logout and /login for the plan to take effect.2797Claude Opus is not available with the Claude Pro plan. If you have updated your subscription plan recently, run /logout and /login for the plan to take effect.

2780```2798```

2781 2799 

2782Claude Desktop 앱이 실행하는 세션에서는 메시지가 명령 이름 대신 `sign out and sign in again`이라고 안내합니다.2800Claude Desktop 앱이 실행하는 세션에서는 메시지가 명령 이름을 표시하는 대신 `sign out and sign in again`하라고 안내합니다.

2783 2801 

2784**해결 방법:**2802**해결 방법:**

2785 2803 

2786* `/model`을 실행하여 플랜에 포함된 모델을 선택하십시오2804* `/model`을 실행하고 플랜에 포함된 모델을 선택하세요

2787* 최근에 플랜을 업그레이드했는데도 이 메시지가 표시된다면 `/logout`을 실행한 후 `/login`을 실행하십시오. 저장된 토큰은 로그인한 시점의 플랜을 반영하므로, claude.ai에서 업그레이드해도 다시 인증하기 전까지는 기존 세션에 적용되지 않습니다.2805* 최근에 플랜을 업그레이드했는데도 이 메시지가 표시되면 `/logout`을 실행한 후 `/login`을 실행하세요. 저장된 토큰은 로그인 시점의 플랜을 반영하므로, claude.ai에서 업그레이드해도 다시 인증하기 전까지는 기존 세션에 적용되지 않습니다.

2788* 각 플랜에 포함된 모델은 [claude.com/pricing](https://claude.com/pricing)을 참조하십시오2806* 각 플랜에 포함된 모델은 [claude.com/pricing](https://claude.com/pricing)을 참조하세요

2789 2807 

2790### Claude Code does not support this model2808### Claude Code does not support this model

2791 2809 

2792Claude Code 버전이 요구되는 최소 버전보다 낮기 때문에 API가 400으로 요청을 거부했습니다. 선택한 모델이 더 새로운 버전을 요구하거나(서버가 모델별로 확인함), 조직의 정책이 이를 요구하는 경우입니다. 400에는 오류 코드 `claude_code_version_too_old`가 포함되며, 메시지에는 어떤 최소 버전이 적용되는지 표시됩니다.2810Claude Code 버전이 필수 최소 버전보다 낮아 API가 400으로 요청을 거부했습니다. 선택한 모델이 더 새로운 버전을 요구하거나(서버가 모델별로 확인), 조직의 정책이 이를 요구합니다. 400 응답에는 오류 코드 `claude_code_version_too_old`가 포함되며, 메시지에 어떤 최소 버전이 적용되는지 표시됩니다.

2793 2811 

2794```text theme={null}2812```text theme={null}

2795API Error: 400 Claude Code 2.1.219 does not support this model; version 2.1.255 or newer is required. Run 'claude update', or update the Claude desktop app, then try again.2813API Error: 400 Claude Code 2.1.219 does not support this model; version 2.1.255 or newer is required. Run 'claude update', or update the Claude desktop app, then try again.

2796```2814```

2797 2815 

2798조직 정책 문구는 다음과 같습니다.2816조직 정책 문구는 다음과 같습니다:

2799 2817 

2800```text theme={null}2818```text theme={null}

2801API Error: 400 Claude Code 2.1.240 is older than the minimum version required by your organization's policy. Run 'claude update', or update the Claude desktop app, to continue.2819API Error: 400 Claude Code 2.1.240 is older than the minimum version required by your organization's policy. Run 'claude update', or update the Claude desktop app, to continue.

2802```2820```

2803 2821 

2804API가 확인하는 버전은 요청을 보낸 Claude Code 바이너리가 보고한 버전입니다.2822API가 확인하는 버전은 요청을 보낸 Claude Code 바이너리가 보고하는 버전입니다.

2805 2823 

2806**해결 방법:**2824**해결 방법:**

2807 2825 

2808해당 바이너리를 업데이트한 후 새 세션을 시작하십시오. [자체 호스팅 환경](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#pin-the-version)을 제외하면, 바이너리의 출처에 따라 업데이트 방법이 결정됩니다.2826해당 바이너리를 업데이트한 후 새 세션을 시작하세요. [자체 호스팅 환경](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#pin-the-version)을 제외하면, 바이너리의 출처에 따라 방법이 달라집니다:

2809 2827 

2810| 요청을 보낸 바이너리 | 업데이트 방법 |2828| 요청을 보낸 바이너리 | 업데이트 방법 |

2811| :- | :- |2829| :- | :- |

2812| 직접 설치한 Claude Code | `claude update` 실행 |2830| 직접 설치한 Claude Code | `claude update` 실행 |

2813| Claude desktop 앱 | 앱 업데이트 |2831| Claude 데스크톱 앱 | 앱 업데이트 |

2814| [VS Code 확장 프로그램](https://code.claude.com/docs/ko/vs-code.md)에 번들로 포함된 바이너리 | 확장 프로그램 업데이트 |2832| [VS Code 확장 프로그램](https://code.claude.com/docs/ko/vs-code.md)에 번들된 바이너리 | 확장 프로그램 업데이트 |

2815| Agent SDK 패키지에 번들로 포함된 바이너리 | [SDK 패키지를 업그레이드](https://code.claude.com/docs/ko/agent-sdk/hosting.md#runtime-dependencies)한 후 애플리케이션 재시작. [컴파일된 단일 파일 실행 파일](https://code.claude.com/docs/ko/agent-sdk/typescript.md#compile-to-a-single-executable)의 경우 다시 빌드 |2833| Agent SDK 패키지에 번들된 바이너리 | [SDK 패키지를 업그레이드](https://code.claude.com/docs/ko/agent-sdk/hosting.md#runtime-dependencies)한 후 애플리케이션을 재시작합니다. [컴파일된 단일 파일 실행 파일](https://code.claude.com/docs/ko/agent-sdk/typescript.md#compile-to-a-single-executable)에서는 다시 빌드합니다 |

2816 2834 

2817* [stable 릴리스 채널](https://code.claude.com/docs/ko/setup.md#configure-release-channel)에서 `claude update`를 실행하면 최신 stable 릴리스보다 높은 버전으로 이동하지 않으며, 이 릴리스가 여전히 요구되는 최소 버전보다 낮을 수 있습니다. latest 채널로 이동한 후 다시 업데이트하십시오. 조직이 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)으로 채널이나 버전을 고정한 경우 관리자에게 변경을 요청하십시오2835* [stable 릴리스 채널](https://code.claude.com/docs/ko/setup.md#configure-release-channel)에서 `claude update`를 실행하면 최신 stable 릴리스보다 새로운 버전으로는 업데이트되지 않으며, 이 릴리스는 여전히 필수 최소 버전보다 낮을 수 있습니다. latest 채널로 이동한 후 다시 업데이트하세요. 조직이 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)을 통해 채널이나 버전을 고정한 경우 관리자에게 변경을 요청하세요

2818* 모델별 문구의 경우, 다른 모델로 전환하여 현재 세션에서 계속 작업할 수 있습니다. CLI에서 `/model`을 실행하거나, 스트리밍 입력 모드에서 TypeScript SDK의 `Query` 객체에 대해 [`setModel()`](https://code.claude.com/docs/ko/agent-sdk/typescript#query-object)을 호출하거나, Python SDK의 `ClaudeSDKClient`에 대해 [`set_model()`](https://code.claude.com/docs/ko/agent-sdk/python#claudesdkclient)을 호출하십시오2836* 모델별 문구의 경우 다른 모델로 전환하여 현재 세션에서 계속 작업할 수 있습니다. CLI에서 `/model`을 실행하거나, 스트리밍 입력 모드에서 TypeScript SDK의 `Query` 객체에 대해 [`setModel()`](https://code.claude.com/docs/ko/agent-sdk/typescript#query-object)을 호출하거나, Python SDK의 `ClaudeSDKClient`에 대해 [`set_model()`](https://code.claude.com/docs/ko/agent-sdk/python#claudesdkclient)을 호출하세요

2819* 조직 정책 문구의 경우, 계속하기 전에 업데이트하십시오2837* 조직 정책 문구의 경우 계속하기 전에 업데이트하세요

2820 2838 

2821### Model is restricted by your organization's settings2839### Model is restricted by your organization's settings

2822 2840 

2823조직 관리자가 claude.ai 관리 콘솔에서 이 모델을 비활성화했거나, 관리형 설정이 [`availableModels`](https://code.claude.com/docs/ko/model-config#restrict-model-selection) 허용 목록 또는 [`deniedModels`](https://code.claude.com/docs/ko/model-config#block-specific-models-or-versions) 목록으로 이 모델을 제외했습니다. 이 알림은 `--model`, `ANTHROPIC_MODEL` 또는 `model` 설정에 제한된 모델이 지정된 경우 시작 시 표시되며, 세션이 대신 사용하는 모델을 알려 줍니다. 관리형 설정으로 인해 세션이 사용할 수 있는 허용된 모델이 없다면 [Managed settings block the default model](#managed-settings-block-the-default-model)을 참조하십시오. 관리자가 claude.ai 관리 콘솔에서 세션이 실행 중인 모델을 비활성화하면, 대체 알림이 세션 도중에도 나타날 수 있습니다.2841조직 관리자가 claude.ai 관리 콘솔에서 이 모델을 비활성화했거나, 관리형 설정이 [`availableModels`](https://code.claude.com/docs/ko/model-config#restrict-model-selection) 허용 목록 또는 [`deniedModels`](https://code.claude.com/docs/ko/model-config#block-specific-models-or-versions) 목록을 통해 이 모델을 제외합니다. 이 알림은 `--model`, `ANTHROPIC_MODEL` 또는 `model` 설정이 제한된 모델을 지정한 경우 시작 시 나타나며, 세션이 대신 사용하는 모델을 명시합니다. 관리형 설정으로 인해 세션이 사용할 수 있는 허용된 모델이 없는 경우 [관리형 설정이 기본 모델을 차단함](#managed-settings-block-the-default-model)을 참조하세요. 관리자가 claude.ai 관리 콘솔에서 세션이 실행 중인 모델을 비활성화하면 대체 알림이 세션 도중에 나타날 수도 있습니다.

2824 2842 

2825```text theme={null}2843```text theme={null}

2826Model "claude-opus-4-8" is restricted by your organization's settings. Using claude-sonnet-4-6 instead.2844Model "claude-opus-4-8" is restricted by your organization's settings. Using claude-sonnet-4-6 instead.

2827```2845```

2828 2846 

2829제한된 모델에 대해 `/model <name>`을 입력하면 거부되며 세션은 현재 모델을 유지합니다. 관리 콘솔에서 비활성화된 모델의 경우 거부 메시지는 `Model '<name>' is restricted by your organization's settings. Run /model to choose a different model.`입니다. 관리형 설정이 제외한 모델의 경우 `Model '<name>' is not available. Your organization restricts model selection.`입니다.2847제한된 모델에 대해 `/model <name>`을 입력하면 거부되며 세션은 현재 모델을 유지합니다. 관리 콘솔에서 비활성화된 모델의 경우 거부 메시지는 `Model '<name>' is restricted by your organization's settings. Run /model to choose a different model.`입니다. 관리형 설정이 제외하는 모델의 경우 `Model '<name>' is not available. Your organization restricts model selection.`입니다.

2830 2848 

2831알림 앞에 에이전트, 스킬 또는 명령 이름이 붙어 있다면 제한이 해당 [서브에이전트가 요청한 모델](https://code.claude.com/docs/ko/sub-agents.md#choose-a-model)에 적용되었다는 의미입니다. 서브에이전트는 대체된 모델로 실행되고 세션의 모델은 변경되지 않습니다. v2.1.223 이전에는 Claude Code가 Agent 도구로 실행된 서브에이전트에 대해서만 알림을 표시했습니다.2849에이전트, 스킬 또는 명령 이름이 앞에 붙은 알림은 해당 [서브에이전트가 요청한 모델](https://code.claude.com/docs/ko/sub-agents.md#choose-a-model)에 제한이 적용되었음을 의미합니다. 서브에이전트는 대체된 모델로 실행되며 세션의 모델은 변경되지 않습니다. v2.1.223 이전에는 Claude Code가 Agent 도구로 시작된 서브에이전트에 대해서만 알림을 표시했습니다.

2832 2850 

2833Claude Code는 모델 계열 별칭(`opus`, `sonnet`, `haiku`, `fable` 중 하나)을 최신 버전이 아닌 해당 계열에 대한 요청으로 처리합니다. Anthropic API와 [Claude Platform on AWS](https://code.claude.com/docs/ko/claude-platform-on-aws.md)에서는 제한된 계열 별칭이 조직의 설정이 허용하는 해당 계열의 최신 버전으로 해석되며, 대체 알림에 그 버전이 표시됩니다. Claude Code는 계열의 모든 버전이 제한된 경우에만 `/model <alias>`를 거부합니다. v2.1.205 이전에는 같은 계열의 이전 버전이 허용되더라도 계열 별칭이 최신 버전만을 기준으로 대체되거나 거부되었습니다.2851Claude Code는 `opus`, `sonnet`, `haiku`, `fable` 중 하나인 모델 패밀리 별칭을 해당 패밀리의 최신 버전이 아닌 패밀리 자체에 대한 요청으로 처리합니다. Anthropic API와 [Claude Platform on AWS](https://code.claude.com/docs/ko/claude-platform-on-aws.md)에서 제한된 패밀리 별칭은 조직의 설정이 허용하는 해당 패밀리의 최신 버전으로 확인되며, 대체 알림에 해당 버전이 명시됩니다. Claude Code는 패밀리의 모든 버전이 제한된 경우에만 `/model <alias>`를 거부합니다. v2.1.205 이전에는 같은 패밀리의 이전 버전이 허용되더라도 패밀리 별칭이 최신 버전만을 기준으로 대체되거나 거부되었습니다.

2834 2852 

2835**해결 방법:**2853**해결 방법:**

2836 2854 

2837* `/model`을 실행하여 조직이 허용하는 모델 중에서 선택하십시오. 제한된 모델은 선택기에서 숨겨집니다.2855* `/model`을 실행하여 조직이 허용하는 모델 중에서 선택하세요. 제한된 모델은 선택기에서 숨겨집니다.

2838* 제한된 모델이 `--model`, `ANTHROPIC_MODEL`, 설정 파일의 `model` 필드, 또는 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#choose-a-model), 스킬, 명령의 `model` frontmatter에 설정되어 있다면 알림이 재발하지 않도록 해당 값을 제거하거나 업데이트하십시오2856* 제한된 모델이 `--model`, `ANTHROPIC_MODEL`, 설정 파일의 `model` 필드, 또는 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#choose-a-model), 스킬, 명령의 `model` frontmatter에 설정된 경우, 알림이 반복되지 않도록 해당 값을 제거하거나 업데이트하세요

2839* 제한된 모델에 접근해야 한다면 조직 관리자에게 활성화를 요청하십시오. [조직 모델 제한](https://code.claude.com/docs/ko/model-config.md#organization-model-restrictions)을 참조하십시오.2857* 제한된 모델에 액세스해야 하는 경우 조직 관리자에게 활성화를 요청하세요. [조직 모델 제한](https://code.claude.com/docs/ko/model-config.md#organization-model-restrictions)을 참조하세요.

2840 2858 

2841### Can't switch to the default model2859### Can't switch to the default model

2842 2860 

2843`/model` 선택기에서 Default 행을 선택하거나 `/model default`를 입력하는 등의 방법으로 Default 모델을 선택했습니다. Claude Code가 전환을 거부했으므로 세션은 현재 모델을 유지합니다.2861예를 들어 `/model` 선택기에서 Default 행을 선택하거나 `/model default`를 입력하여 Default 모델을 선택했습니다. Claude Code가 전환을 거부했으므로 세션은 현재 모델을 유지합니다.

2844 2862 

2845```text theme={null}2863```text theme={null}

2846Can't switch to the default model: your organization's managed settings block it (claude-opus-4-6) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".2864Can't switch to the default model: your organization's managed settings block it (claude-opus-4-6) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".

2847```2865```

2848 2866 

2849콜론 뒤의 문구는 무엇이 전환을 막았는지 알려 줍니다.2867콜론 뒤의 문구는 전환을 차단한 원인을 나타냅니다:

2850 2868 

2851* **`your organization's managed settings block it ... in "deniedModels"`**: 관리형 거부 목록이 Default 옵션이 해석되는 모델을 차단합니다2869* **`your organization's managed settings block it ... in "deniedModels"`**: 관리형 거부 목록이 Default 옵션이 확인되는 모델을 차단합니다

2852* **`your organization allows only the models listed in "availableModels"`**: [`availableModelsMatch`](https://code.claude.com/docs/ko/settings-reference#availablemodelsmatch)가 `"exact"`로 설정된 관리형 [`availableModels`](https://code.claude.com/docs/ko/model-config#restrict-model-selection) 허용 목록에 Default 옵션이 해석되는 모델이 포함되어 있지 않습니다2870* **`your organization allows only the models listed in "availableModels"`**: [`availableModelsMatch`](https://code.claude.com/docs/ko/settings-reference#availablemodelsmatch)가 `"exact"`로 설정된 관리형 [`availableModels`](https://code.claude.com/docs/ko/model-config#restrict-model-selection) 허용 목록에 Default 옵션이 확인되는 모델이 포함되어 있지 않습니다

2853* **`Claude Code couldn't read your organization's managed settings to check which models they allow`**: [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)을 읽을 수 없었으며, Claude Code는 확인 없이 전환을 적용하는 대신 전환을 거부합니다2871* **`Claude Code couldn't read your organization's managed settings to check which models they allow`**: [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)을 읽을 수 없었으며, Claude Code는 확인되지 않은 상태로 전환을 적용하는 대신 전환을 거부합니다

2854 2872 

2855**해결 방법:**2873**해결 방법:**

2856 2874 

2857* [`deniedModels`](https://code.claude.com/docs/ko/settings-reference#deniedmodels) 및 `availableModels` 문구의 경우, `/model`을 실행하고 조직이 허용하는 모델을 이름으로 선택하십시오2875* [`deniedModels`](https://code.claude.com/docs/ko/settings-reference#deniedmodels) 및 `availableModels` 문구의 경우 `/model`을 실행하고 조직이 허용하는 모델을 이름으로 선택하세요

2858* 관리자에게 메시지에 표시된 관리형 설정을 업데이트해 달라고 요청하십시오2876* 메시지에 명시된 관리형 설정을 업데이트하도록 관리자에게 요청하세요

2859* `couldn't read` 문구의 경우 Claude Code를 재시작하십시오. 계속 발생한다면 관리자에게 관리형 설정을 확인해 달라고 요청하십시오2877* `couldn't read` 문구의 경우 Claude Code를 재시작하세요. 계속 발생하면 관리자에게 관리형 설정을 확인하도록 요청하세요

2860 2878 

2861대신 이러한 관리형 설정에서 `Claude Code can't start` 메시지와 함께 세션 시작이 실패한다면 [Managed settings block the default model](#managed-settings-block-the-default-model)을 참조하십시오.2879이러한 관리형 설정에서 대신 `Claude Code can't start` 메시지와 함께 세션이 시작되지 않으면 [관리형 설정이 기본 모델을 차단함](#managed-settings-block-the-default-model)을 참조하세요.

2862 2880 

2863### Model switch was blocked by a PreModelSwitch hook2881### Model switch was blocked by a PreModelSwitch hook

2864 2882 

2865[PreModelSwitch 훅](https://code.claude.com/docs/ko/hooks.md#premodelswitch)이 사용자 또는 클라이언트가 요청한 모델 전환을 승인하지 않았으므로 세션은 현재 모델을 유지합니다. 입력한 명령이 아니라 [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/overview.md) 호스트나 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)에서 전환이 요청된 경우, 메시지는 대상 모델을 명시하지 않고 `Model switch blocked by a PreModelSwitch hook`으로 표시됩니다.2883[PreModelSwitch 훅](https://code.claude.com/docs/ko/hooks.md#premodelswitch)이 사용자나 클라이언트가 요청한 모델 전환을 승인하지 않아 세션이 현재 모델을 유지합니다. 직접 입력한 명령이 아닌 [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/overview.md) 호스트나 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)에서 전환이 시작된 경우, 메시지는 대상 모델을 명시하지 않고 `Model switch blocked by a PreModelSwitch hook`으로 표시됩니다.

2866 2884 

2867```text theme={null}2885```text theme={null}

2868Model switch to Opus 4.6 was blocked by a PreModelSwitch hook: Opus 4.6 is retired for this project. Use a newer model.2886Model switch to Opus 4.6 was blocked by a PreModelSwitch hook: Opus 4.6 is retired for this project. Use a newer model.

2869```2887```

2870 2888 

2871콜론 뒤의 이유는 무엇이 전환을 거부했는지 알려 줍니다.2889콜론 뒤의 이유는 무엇이 전환을 거부했는지 나타냅니다:

2872 2890 

2873* **훅이 작성한 이유**: PreModelSwitch 훅이 [전환을 거부하거나 확인을 요청](https://code.claude.com/docs/ko/hooks.md#premodelswitch-decision-control)할 때 해당 이유를 제공했습니다. 요청 사항을 해결하거나, 훅이 허용하는 모델을 선택하십시오.2891* **훅이 작성한 이유**: PreModelSwitch 훅이 [전환을 거부하거나 확인을 요청](https://code.claude.com/docs/ko/hooks.md#premodelswitch-decision-control)할 때 해당 이유를 제공했습니다. 요청된 내용을 해결하거나 훅이 허용하는 모델을 선택하세요.

2874* **`PreModelSwitch hook <name> did not respond before its timeout`**: [타임아웃](https://code.claude.com/docs/ko/hooks.md#timeouts) 전에 응답하지 않는 훅은 전환을 차단합니다. 멈춘 명령을 수정하거나 해당 훅의 `timeout`을 늘린 후 다시 전환하십시오.2892* **`PreModelSwitch hook <name> did not respond before its timeout`**: [타임아웃](https://code.claude.com/docs/ko/hooks.md#timeouts) 전에 응답하지 않는 훅은 전환을 차단합니다. 멈춘 명령을 수정하거나 해당 훅의 `timeout`을 늘린 후 다시 전환하세요.

2875* **`confirmation required, and this session cannot ask`**: 훅이 이유 없이 `ask`로 응답했으며, 제어 요청에는 확인 프롬프트를 표시할 방법이 없습니다. [`-p` 실행](https://code.claude.com/docs/ko/headless)에서 `/model` 명령은 이유 뒤에 `(run /model interactively to confirm)`을 붙여 같은 상태를 보고합니다. 대화형 세션에서 전환하거나, 이 모델에 대한 훅의 결정을 변경하십시오.2893* **`confirmation required, and this session cannot ask`**: 훅이 이유 없이 `ask`로 응답했으며, 제어 요청에는 확인 프롬프트를 표시할 방법이 없습니다. [`-p` 실행](https://code.claude.com/docs/ko/headless)의 `/model` 명령은 같은 상태를 이유 뒤에 `(run /model interactively to confirm)`을 붙여 보고합니다. 대화형 세션에서 전환하거나 이 모델에 대한 훅의 결정을 변경하세요.

2876* **`so organization-managed PreModelSwitch hooks could not be checked`**: 관리형 플러그인 로드 실패 등의 이유로, Claude Code가 조직의 [관리형 플러그인](https://code.claude.com/docs/ko/settings-reference.md#enabledplugins)이 제공하는 PreModelSwitch 훅을 파악할 수 없었습니다. 이러한 훅 중 하나가 전환을 차단할 수 있으므로, Claude Code는 확인 없이 전환을 적용하는 대신 거부합니다. 이유의 시작 부분에 무엇이 실패했는지 표시됩니다. Claude Code는 전환을 시도할 때마다 다시 확인하므로, 이후 해결된 실패는 더 이상 차단하지 않습니다. 계속 실패한다면 `claude --debug`를 실행하고 다시 전환하여 세부 정보를 캡처한 후, 플러그인을 수정하거나 관리자에게 수정을 요청하십시오.2894* **`so organization-managed PreModelSwitch hooks could not be checked`**: v2.1.323 이전의 Claude Code는 [관리형 플러그인](https://code.claude.com/docs/ko/settings-reference.md#enabledplugins)이 제공하는 PreModelSwitch 훅을 파악할 수 없으면 전환을 거부합니다. 이 문구 앞의 텍스트는 무엇이 실패했는지 나타냅니다. 거부를 멈추려면 Claude Code를 업데이트하세요. 실패한 플러그인의 훅도 실행되도록 하려면 플러그인을 수정하거나 관리자에게 문의하세요. 자세한 내용을 확인하려면 셸에서 `claude --debug`를 시작하고 모델을 전환한 다음 [디버그 로그](https://code.claude.com/docs/ko/hooks.md#debug-hooks)를 읽으세요.

2877* **`a PreModelSwitch hook failed before answering`** 또는 **`PreModelSwitch hooks were cancelled (the control stream closed) before answering`**: 훅 실행이 판정 없이 종료되었으며, Claude Code는 이를 승인으로 처리하지 않습니다. `claude --debug`를 실행하여 무엇이 실패했는지 확인한 후 다시 전환하십시오.2895* **`a PreModelSwitch hook failed before answering`** 또는 **`PreModelSwitch hooks were cancelled (the control stream closed) before answering`**: 훅 실행이 결정 없이 종료되었으며, Claude Code는 이를 승인으로 간주하지 않습니다. `claude --debug`를 실행하여 무엇이 실패했는지 확인한 후 다시 전환하세요.

2878 2896 

2879v2.1.260 이전에는 관리형 플러그인 거부 메시지가 `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`였습니다. Claude Code는 플러그인 로드를 한 번 재시도한 후, 조직이 관리하는 플러그인이 없더라도 세션에서 이후의 전환을 거부했습니다. 해당 버전에서는 세션을 재시작하여 플러그인 로드를 다시 실행하십시오.2897v2.1.260 이전에는 관리형 플러그인 거부 문구가 `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`였습니다. Claude Code는 플러그인 로드를 한 번 재시도한 후, 조직이 관리하는 플러그인이 없는 경우에도 세션에서 이후의 전환을 거부했습니다. 해당 버전에서는 세션을 재시작하여 플러그인 로드를 다시 실행하세요.

2880 2898 

2881### Couldn't save it as your default2899### Couldn't save it as your default

2882 2900 

2883`/model <name>`이나 `/model` 선택기의 `Enter` 등으로 기본값으로 저장할 모델을 선택했지만, Claude Code가 선택 내용을 사용자 설정 파일 `~/.claude/settings.json`에 기록하지 못했습니다. 전환 자체는 적용되었으므로 현재 세션은 선택한 모델로 실행되지만, 기본값은 변경되지 않았으며 다음 세션은 이전 값으로 시작됩니다.2901예를 들어 `/model <name>` 또는 `/model` 선택기에서 `Enter`로 기본값으로 저장할 모델을 선택했지만, Claude Code가 선택 내용을 사용자 설정 파일인 `~/.claude/settings.json`에 기록하지 못했습니다. 전환 자체는 적용되었으므로 현재 세션은 선택한 모델로 실행되지만, 기본값은 변경되지 않았으며 다음 세션은 이전 값으로 시작합니다.

2884 2902 

2885```text theme={null}2903```text theme={null}

2886Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)2904Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)

2887```2905```

2888 2906 

2889파일 경로 뒤의 이유는 무엇이 실패했는지 알려 줍니다.2907파일 경로 뒤의 이유는 무엇이 실패했는지 나타냅니다:

2890 2908 

2891* **`can't be written (<code>)`**: 괄호 안의 운영 체제 오류 코드와 함께 쓰기가 실패했습니다. 예를 들어 파일 또는 파일이 링크하는 대상이 쓰기를 거부하는 파일 시스템에 있으면 `EROFS`가 표시됩니다. 파일을 쓰기 가능하게 만든 후 다시 전환하십시오. 다른 도구가 파일을 생성한다면 대신 해당 도구에서 `model` 키를 설정하십시오. [Claude Code에서 변경한 내용이 새 세션에서 사라지는 경우](https://code.claude.com/docs/ko/settings.md#a-change-you-made-in-claude-code-is-lost-in-new-sessions)를 참조하십시오.2909* **`can't be written (<code>)`**: 쓰기가 괄호 안의 운영 체제 오류 코드와 함께 실패했습니다. 예를 들어 파일 또는 파일이 링크하는 대상 파일이 쓰기를 거부하는 파일 시스템에 있으면 `EROFS`가 표시됩니다. 파일을 쓰기 가능하게 만든 후 다시 전환하세요. 다른 도구가 파일을 생성하는 경우 대신 해당 도구에서 `model` 키를 설정하세요. [Claude Code에서 변경한 내용이 새 세션에서 사라짐](https://code.claude.com/docs/ko/settings.md#a-change-you-made-in-claude-code-is-lost-in-new-sessions)을 참조하세요.

2892* **`isn't valid JSON`**: 디스크의 파일을 파싱할 수 없으며, Claude Code는 다시 읽을 수 없는 내용을 덮어쓰는 대신 파일을 그대로 둡니다. 구문 오류를 수정한 후 다시 전환하십시오. [손상된 설정 파일 수정](https://code.claude.com/docs/ko/settings.md#fix-a-broken-settings-file)을 참조하십시오.2910* **`isn't valid JSON`**: 디스크의 파일을 파싱할 수 없으며, Claude Code는 다시 읽을 수 없는 내용을 덮어쓰지 않도록 파일을 그대로 둡니다. 구문 오류를 수정한 후 다시 전환하세요. [손상된 설정 파일 수정](https://code.claude.com/docs/ko/settings.md#fix-a-broken-settings-file)을 참조하세요.

2893 2911 

2894`couldn't confirm it was saved as your default (~/.claude/settings.json is still being written)`로 끝나는 알림은 3초가 지나도 쓰기가 완료되지 않았다는 의미입니다. 쓰기는 백그라운드에서 계속되므로 기본값이 여전히 저장될 수 있습니다. 다음 세션이 어떤 모델로 시작되는지 확인하거나, `/model <name>`을 다시 실행하십시오.2912`couldn't confirm it was saved as your default (~/.claude/settings.json is still being written)`로 끝나는 알림은 3초가 지난 후에도 쓰기가 완료되지 않았음을 의미합니다. 쓰기는 백그라운드에서 계속되므로 기본값이 여전히 저장될 수 있습니다. 다음 세션이 어떤 모델로 시작하는지 확인하거나 `/model <name>`을 다시 실행하세요.

2895 2913 

2896v2.1.265 이전에는 쓰기가 실패한 경우에도 알림에 모델이 `saved as your default for new sessions`라고 표시되었습니다.2914v2.1.265 이전에는 쓰기가 실패한 경우에도 알림에 모델이 `saved as your default for new sessions`되었다고 표시되었습니다.

2897 2915 

2898### Advisor is less capable than the current main model2916### Advisor is less capable than the current main model

2899 2917 

2900[advisor 모델](https://code.claude.com/docs/ko/advisor.md)의 순위가 세션의 메인 모델보다 낮으므로, Claude Code는 선택을 유지하지만 메인 모델의 요청에 advisor를 연결하지 않습니다.2918[어드바이저 모델](https://code.claude.com/docs/ko/advisor.md)의 순위가 세션의 메인 모델보다 낮으므로, Claude Code는 선택은 유지하지만 메인 모델의 요청에 어드바이저를 연결하지 않습니다.

2901 2919 

2902```text theme={null}2920```text theme={null}

2903Advisor set to Opus 4.82921Advisor set to Opus 4.8

2904Note: Opus 4.8 is less capable than the current main model (Sonnet 5.5), so the advisor will not activate. Choose a more capable advisor, or switch to a smaller main model.2922Note: Opus 4.8 is less capable than the current main model (Sonnet 5.5), so the advisor will not activate. Choose a more capable advisor, or switch to a smaller main model.

2905```2923```

2906 2924 

2907다른 메시지도 같은 상태를 보고합니다.2925다른 메시지도 같은 상태를 보고합니다:

2908 2926 

2909* 대화형 세션에서는 `Advisor will not activate on the main model (advisor is less capable); subagents may still use it and may use more tokens · /advisor`라는 알림이 표시됩니다.2927* 대화형 세션에서는 `Advisor will not activate on the main model (advisor is less capable); subagents may still use it and may use more tokens · /advisor`라는 알림이 표시됩니다.

2910* [비대화형 모드](https://code.claude.com/docs/ko/headless.md)에서 `--advisor` 플래그로 실행하고 해당 실행이 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md)이 아닌 경우, stderr에 경고가 출력되고 실행은 그대로 시작됩니다. 경고 내용은 `"<advisor>" cannot advise "<main model>" (the advisor must be at least as capable as the main model). The advisor will not be used for the main model.`입니다. 대화형 세션은 이 경고를 [디버그 로그](#configuration-warnings)에만 기록합니다.2928* [비대화형 모드](https://code.claude.com/docs/ko/headless.md)에서 `--advisor` 플래그로 실행하고 해당 실행이 [백그라운드 세션](https://code.claude.com/docs/ko/agent-view.md)이 아닌 경우, 경고가 stderr로 출력되고 실행은 그대로 시작됩니다. 경고 내용은 `"<advisor>" cannot advise "<main model>" (the advisor must be at least as capable as the main model). The advisor will not be used for the main model.`입니다. 대화형 세션은 이 경고를 [디버그 로그](#configuration-warnings)에만 기록합니다.

2911 2929 

2912**해결 방법:**2930**해결 방법:**

2913 2931 

2914* 순위가 더 높은 advisor나 순위가 더 낮은 메인 모델을 선택하십시오. [advisor 모델 선택](https://code.claude.com/docs/ko/advisor.md#choose-an-advisor-model)에서 순위를 확인하고 각 메인 모델에 허용되는 advisor 목록을 볼 수 있습니다.2932* 순위가 더 높은 어드바이저나 순위가 더 낮은 메인 모델을 선택하세요. [어드바이저 모델 선택](https://code.claude.com/docs/ko/advisor.md#choose-an-advisor-model)에서 순위를 보여 주고 각 메인 모델에 허용되는 어드바이저를 나열합니다.

2915* advisor가 자문할 수 있는 모델을 사용하는 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md)가 계속 advisor를 사용하게 하려면 advisor를 설정된 상태로 두십시오2933* 어드바이저가 자문할 수 있는 모델을 사용하는 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md)가 계속 어드바이저를 사용하도록 하려면 어드바이저 설정을 그대로 두세요

2916 2934 

2917v2.1.287 이전에는 Claude Code가 여러 조합의 순위를 다르게 매겼습니다. Opus 4.7 또는 Opus 4.8 메인 모델에 Sonnet 5.5 advisor를 조합한 경우 이 안내를 표시했지만, 이제는 이 조합을 허용합니다. 또한 Sonnet 5.5 메인 모델에 Opus 4.8 advisor를 조합한 경우처럼, 현재는 이 안내가 표시되는 일부 advisor를 연결했습니다.2935v2.1.287 이전에는 Claude Code가 여러 조합의 순위를 다르게 매겼습니다. Opus 4.7 또는 Opus 4.8 메인 모델과 Sonnet 5.5 어드바이저 조합에 이 참고 사항을 표시했지만, 현재는 이 조합을 허용합니다. 또한 Sonnet 5.5 메인 모델과 Opus 4.8 어드바이저 조합처럼 현재는 이 참고 사항이 표시되는 일부 어드바이저를 연결했습니다.

2918 2936 

2919### thinking.type.enabled is not supported for this model2937### thinking.type.enabled is not supported for this model

2920 2938 

2921Claude Code 버전이 선택한 모델의 최소 버전보다 오래되었습니다. CLI가 모델이 더 이상 허용하지 않는 사고 구성을 보냈습니다.2939Claude Code 버전이 선택한 모델에 필요한 최소 버전보다 오래되었습니다. CLI가 모델이 더 이상 허용하지 않는 사고 구성을 보냈습니다.

2922 2940 

2923```text theme={null}2941```text theme={null}

2924API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.2942API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.


2926 2944 

2927**해결 방법:**2945**해결 방법:**

2928 2946 

2929* `claude update`를 실행하고 Claude Code를 재시작하십시오. Opus 4.7은 v2.1.111 이상이 필요합니다. Opus 4.8은 v2.1.154 이상이 필요합니다. Sonnet 5는 v2.1.197 이상이 필요합니다. Opus 5는 v2.1.219 이상이 필요합니다. Opus 5.5는 v2.1.280 이상이 필요합니다. Sonnet 5.5는 v2.1.284 이상이 필요합니다2947* `claude update`를 실행하고 Claude Code를 재시작하세요. Opus 4.7은 v2.1.111 이상이 필요합니다. Opus 4.8은 v2.1.154 이상이 필요합니다. Sonnet 5는 v2.1.197 이상이 필요합니다. Opus 5는 v2.1.219 이상이 필요합니다. Opus 5.5는 v2.1.280 이상이 필요합니다. Sonnet 5.5는 v2.1.284 이상이 필요합니다

2930* [stable 릴리스 채널](https://code.claude.com/docs/ko/setup.md#configure-release-channel)에서는 업데이트해도 최신 stable 릴리스보다 높은 버전으로 이동하지 않으며, 이 릴리스가 여전히 위 버전보다 오래되었을 수 있습니다. latest 채널로 이동한 후 업데이트하십시오2948* [stable 릴리스 채널](https://code.claude.com/docs/ko/setup.md#configure-release-channel)에서는 업데이트해도 최신 stable 릴리스보다 새로운 버전으로 이동하지 않으며, 이 릴리스는 여전히 이러한 버전보다 오래되었을 수 있습니다. latest 채널로 이동한 후 업데이트하세요

2931* 업그레이드할 수 없다면 `/model`을 실행하고 대신 Opus 4.6 또는 Sonnet 4.6을 선택하십시오2949* 업그레이드할 수 없으면 `/model`을 실행하고 대신 Opus 4.6 또는 Sonnet 4.6을 선택하세요

2932* [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/overview.md)에서 이 문제가 발생한다면 대신 SDK 패키지를 업그레이드하십시오. Opus 4.8은 TypeScript SDK v0.3.154 이상 및 Python SDK v0.2.88 이상이 필요합니다. Sonnet 5는 TypeScript SDK v0.3.197 이상이 필요합니다. Opus 5는 TypeScript SDK v0.3.219 이상이 필요합니다. Opus 5.5는 TypeScript SDK v0.3.280 이상이 필요합니다. Sonnet 5.5는 TypeScript SDK v0.3.284 이상이 필요합니다2950* [Agent SDK](https://code.claude.com/docs/ko/agent-sdk/overview.md)에서 이 문제가 발생하면 대신 SDK 패키지를 업그레이드하세요. Opus 4.8은 TypeScript SDK v0.3.154 이상 및 Python SDK v0.2.88 이상이 필요합니다. Sonnet 5는 TypeScript SDK v0.3.197 이상이 필요합니다. Opus 5는 TypeScript SDK v0.3.219 이상이 필요합니다. Opus 5.5는 TypeScript SDK v0.3.280 이상이 필요합니다. Sonnet 5.5는 TypeScript SDK v0.3.284 이상이 필요합니다

2933 2951 

2934### Effort isn't available with thinking turned off2952### Effort isn't available with thinking turned off

2935 2953 

2936[확장 사고](https://code.claude.com/docs/ko/model-config.md#extended-thinking)를 끄고 `high`보다 높은 [effort 수준](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)으로 실행했습니다. 모델이 이 조합을 허용하지 않으므로 API가 요청을 거부했습니다.2954[확장 사고](https://code.claude.com/docs/ko/model-config.md#extended-thinking)를 끈 상태에서 `high`보다 높은 [effort 수준](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)으로 실행했습니다. 모델이 이 조합을 허용하지 않으므로 API가 요청을 거부했습니다.

2937 2955 

2938```text theme={null}2956```text theme={null}

2939API Error: Effort 'xhigh' isn't available with thinking turned off on this model · run /effort high to continue, or turn thinking back on (unset MAX_THINKING_TOKENS=0)2957API Error: Effort 'xhigh' isn't available with thinking turned off on this model · run /effort high to continue, or turn thinking back on (unset MAX_THINKING_TOKENS=0)


2943 2961 

2944**해결 방법:**2962**해결 방법:**

2945 2963 

2946* [effort 수준을 낮추어](https://code.claude.com/docs/ko/model-config.md#set-the-effort-level) `high` 이하로 설정하십시오.2964* [effort 수준을 낮춰](https://code.claude.com/docs/ko/model-config.md#set-the-effort-level) `high` 이하로 설정하세요.

2947* 예를 들어 [`MAX_THINKING_TOKENS`](https://code.claude.com/docs/ko/env-vars) 설정을 해제하거나 설정에서 [`"alwaysThinkingEnabled": false`](https://code.claude.com/docs/ko/settings-reference#alwaysthinkingenabled)를 제거하여 사고를 다시 켜십시오.2965* 예를 들어 [`MAX_THINKING_TOKENS`](https://code.claude.com/docs/ko/env-vars) 설정을 해제하거나 설정에서 [`"alwaysThinkingEnabled": false`](https://code.claude.com/docs/ko/settings-reference#alwaysthinkingenabled)를 제거하여 사고를 다시 켜세요.

2948 2966 

2949v2.1.242 이전에는 Claude Code가 API 자체의 메시지를 표시했습니다: `API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking.` v2.1.251 이전에는 Claude Code가 설정된 effort 수준으로 요청을 보냈기 때문에, 사고가 꺼진 상태에서 Opus 5가 `high`를 넘는 모든 요청을 거부했습니다. 이제 Claude Code는 Opus 5처럼 이 조합을 거부하는 것으로 알려진 모델에는 대신 effort `high`로 요청을 보냅니다.2967v2.1.242 이전에는 Claude Code가 API 자체의 메시지를 표시했습니다: `API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking.` v2.1.251 이전에는 Claude Code가 설정한 effort 수준 그대로 요청을 보냈기 때문에, Opus 5는 사고가 꺼진 상태에서 `high`보다 높은 모든 요청을 거부했습니다. 이제 Claude Code는 Opus 5처럼 이 조합을 거부하는 것으로 알려진 모델에는 대신 effort `high`를 보냅니다.

2950 2968 

2951### 사고 예산이 출력 한도를 초과함2969### 사고 예산이 출력 한도를 초과함

2952 2970 

2953구성된 확장 사고 예산이 최대 응답 길이를 초과하여 실제 답변을 위한 공간이 남지 않았습니다.2971구성된 확장 사고 예산이 최대 응답 길이를 초과하여 실제 답변을 위한 공간이 남지 않습니다.

2954 2972 

2955```text theme={null}2973```text theme={null}

2956API Error: 400 ... max_tokens must be greater than thinking.budget_tokens2974API Error: 400 ... max_tokens must be greater than thinking.budget_tokens


2958 2976 

2959**해결 방법:**2977**해결 방법:**

2960 2978 

2961* [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](https://code.claude.com/docs/ko/env-vars)를 사고 예산보다 높게 설정하십시오2979* [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](https://code.claude.com/docs/ko/env-vars)를 사고 예산보다 높게 올리세요

2962* 예산이 출력 길이와 어떻게 상호작용하는지는 [확장 사고](https://code.claude.com/docs/ko/model-config.md#extended-thinking)를 참조하십시오2980* 예산이 출력 길이와 어떻게 상호 작용하는지는 [확장 사고](https://code.claude.com/docs/ko/model-config.md#extended-thinking)를 참조하세요

2963 2981 

2964### Response exceeded the output token maximum2982### Response exceeded the output token maximum

2965 2983 

2966Claude의 응답이 요청에서 허용하는 최대 출력 토큰 수에 도달하여 그 지점에서 잘렸습니다.2984Claude의 응답이 요청에서 허용하는 최대 출력 토큰 수에 도달하여 그 지점에서 잘렸습니다:

2967 2985 

2968```text theme={null}2986```text theme={null}

2969API Error: Claude's response exceeded the ... output token maximum. To configure this behavior, set the CLAUDE_CODE_MAX_OUTPUT_TOKENS environment variable.2987API Error: Claude's response exceeded the ... output token maximum. To configure this behavior, set the CLAUDE_CODE_MAX_OUTPUT_TOKENS environment variable.

2970API Error: Claude's response exceeded the 64000 output token maximum for a request sent without streaming. The CLAUDE_CODE_MAX_OUTPUT_TOKENS environment variable cannot raise this limit.2988API Error: Claude's response exceeded the 64000 output token maximum for a request sent without streaming. The CLAUDE_CODE_MAX_OUTPUT_TOKENS environment variable cannot raise this limit.

2971```2989```

2972 2990 

2973`a request sent without streaming`이 표시된 형식은 스트리밍 요청이 실패하여 Claude Code가 스트리밍 없이 다시 보냈다는 의미이며, 이 경우 응답이 64,000 출력 토큰으로 제한됩니다. v2.1.299 이전에는 이렇게 다시 보낸 요청에서 응답이 잘리면, 이 메시지 없이 응답이 완료된 것처럼 턴이 종료되었습니다.2991`a request sent without streaming`을 명시하는 형식은 스트리밍 요청이 실패하여 Claude Code가 스트리밍 없이 다시 보냈다는 의미이며, 이 경우 응답은 64,000 출력 토큰으로 제한됩니다. v2.1.299 이전에는 이렇게 다시 보낸 요청에서 응답이 잘리면 이 메시지 없이 응답이 완료된 것처럼 턴이 종료되었습니다.

2974 2992 

2975**해결 방법:**2993**해결 방법:**

2976 2994 

2977* 응답이 잘리기 전에 Claude가 일부 텍스트를 작성했다면, 대화형 세션에서 `continue`로 답하여 나머지를 요청하십시오. 해당 텍스트는 대화에 남아 있습니다.2995* 응답이 잘리기 전에 Claude가 일부 텍스트를 작성했다면, 대화형 세션에서 `continue`로 답하여 나머지를 요청하세요. 해당 텍스트는 대화에 남아 있습니다.

2978* 메시지에서 `CLAUDE_CODE_MAX_OUTPUT_TOKENS`를 설정하라고 안내한다면, 값의 상한이 정해지는 방식은 [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](https://code.claude.com/docs/ko/env-vars)를, 설정 위치는 [환경 변수 설정](https://code.claude.com/docs/ko/env-vars.md#set-environment-variables)을 참조하십시오2996* 메시지에서 `CLAUDE_CODE_MAX_OUTPUT_TOKENS`를 설정하라고 안내하면, 값의 상한이 어떻게 정해지는지는 [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](https://code.claude.com/docs/ko/env-vars)를, 설정 위치는 [환경 변수 설정](https://code.claude.com/docs/ko/env-vars.md#set-environment-variables)을 참조하세요

2979* 각 응답이 한도를 넘지 않도록, 응답마다 파일 하나 또는 섹션 하나처럼 더 작은 단위로 출력을 요청하십시오2997* 각 응답을 한도 이내로 유지하려면 응답당 파일 하나 또는 섹션 하나처럼 더 작은 단위로 출력을 요청하세요

2980 2998 

2981### 도구 사용 또는 thinking 블록 불일치2999### 도구 사용 또는 thinking 블록 불일치

2982 3000 


2990API Error: 400 ... thinking blocks ... cannot be modified3008API Error: 400 ... thinking blocks ... cannot be modified

2991```3009```

2992 3010 

2993모든 변형은 같은 의미입니다. 기록에 있는 `tool_use`, `tool_result`, `thinking` 블록의 순서가 더 이상 API가 기대하는 것과 일치하지 않습니다.3011모든 변형은 같은 의미입니다. 기록의 `tool_use`, `tool_result`, `thinking` 블록 순서가 더 이상 API가 예상하는 것과 일치하지 않습니다.

2994 3012 

2995**해결 방법:**3013**해결 방법:**

2996 3014 

2997* Opus 4.7 또는 Opus 4.8을 사용 중이라면 먼저 `claude update`를 실행하십시오. v2.1.156 이전 버전은 일반적인 도구 사용 중에 이 오류를 일으킬 수 있으며, `/rewind`로는 해결되지 않습니다.3015* Opus 4.7 또는 Opus 4.8을 사용하는 경우 먼저 `claude update`를 실행하세요. v2.1.156 이전 버전은 일반적인 도구 사용 중에 이 오류를 일으킬 수 있으며, `/rewind`로는 해결되지 않습니다.

2998* `/rewind`를 실행하거나 Esc를 두 번 눌러 손상된 턴 이전의 체크포인트로 되돌아간 후 그곳에서 계속하십시오. 체크포인트가 생성되고 복원되는 방식은 [체크포인트](https://code.claude.com/docs/ko/checkpointing.md)를 참조하십시오.3016* `/rewind`를 실행하거나 Esc를 두 번 눌러 손상된 턴 이전의 체크포인트로 돌아간 후 그곳에서부터 계속하세요. 체크포인트가 생성되고 복원되는 방식은 [체크포인트](https://code.claude.com/docs/ko/checkpointing.md)를 참조하세요.

2999 3017 

3000### Invalid data in redacted\_thinking block3018### Invalid data in redacted\_thinking block

3001 3019 

3002대화 기록의 이전 턴에 포함된 `redacted_thinking` 블록을 허용할 수 없었기 때문에 API가 400으로 요청을 거부했습니다.3020API가 대화 기록의 이전 턴에 포함된 `redacted_thinking` 블록을 허용할 수 없어 400으로 요청을 거부했습니다.

3003 3021 

3004```text theme={null}3022```text theme={null}

3005API Error: 400 ... Invalid `data` in `redacted_thinking` block3023API Error: 400 ... Invalid `data` in `redacted_thinking` block

3006```3024```

3007 3025 

3008Claude Code는 대화의 이전 사고를 요청에서 제외하고 한 번 재시도하므로, 세션은 오류를 표시하지 않고 계속됩니다. v2.1.282 이전에는 Claude Code가 거부된 블록을 유지했기 때문에 이후의 모든 턴이 같은 오류로 실패했습니다.3026Claude Code는 대화의 이전 사고 내용을 요청에서 제외하고 한 번 재시도하므로, 세션은 오류를 표시하지 않고 계속됩니다. v2.1.282 이전에는 Claude Code가 거부된 블록을 유지했기 때문에 이후의 모든 턴이 같은 오류로 실패했습니다.

3009 3027 

3010**해결 방법:**3028**해결 방법:**

3011 3029 

3012* v2.1.281 이하 버전을 사용 중이고 모든 턴이 이 오류로 실패한다면 `claude update`를 실행하고 세션을 재개하십시오3030* v2.1.281 이하를 사용 중이고 모든 턴이 이 오류로 실패하면 `claude update`를 실행하고 세션을 재개하세요

3013* 오류가 지속되면 `/clear`를 실행하여 해당 블록이 포함되지 않은 대화를 시작하십시오3031* 오류가 지속되면 `/clear`를 실행하여 해당 블록이 포함되지 않은 대화를 시작하세요

3014 3032 

3015### Unsupported tool content removed3033### Unsupported tool content removed

3016 3034 

3017Claude Code가 Anthropic API에 직접 연결하여 저장된 세션을 로드하거나 미리 볼 때, Anthropic API가 허용하지 않는 도구 콘텐츠를 제거하고, 제거된 콘텐츠가 두 thinking 블록 사이에 있던 위치에 다음 줄을 남깁니다.3035Claude Code가 Anthropic API에 직접 연결된 상태에서 저장된 세션을 로드하거나 미리 볼 때, Anthropic API가 허용하지 않는 도구 콘텐츠를 제거하고, 제거된 콘텐츠가 두 thinking 블록 사이에 있던 자리에 다음 줄을 남깁니다:

3018 3036 

3019```text theme={null}3037```text theme={null}

3020[Unsupported tool content removed]3038[Unsupported tool content removed]

3021```3039```

3022 3040 

3023이러한 콘텐츠는 Anthropic API가 아닌 다른 무언가가 API 형식으로 응답했을 때 세션 파일에 들어갑니다. 일반적으로 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/ko/env-vars)로 설정된 서드파티 프록시가 다른 제공업체의 도구 호출을 변환하는 경우입니다. Claude Code는 세션이 Anthropic API에 직접 연결된 경우에만 이를 제거하며, 세션이 프록시를 거치거나 다른 제공업체에서 실행되는 경우에는 저장된 기록을 그대로 로드합니다. v2.1.246 이전에는 Claude Code가 도구 사용과 그 결과를 API로 다시 보냈기 때문에, 재개된 세션의 모든 턴이 `messages.1.content.0.server_tool_use.name: Input should be 'web_search', 'web_fetch', ...` 같은 400 오류로 실패했습니다.3041이러한 콘텐츠는 Anthropic API가 아닌 다른 무언가가 API 형식으로 응답했을 때 세션 파일에 들어가며, 대표적인 예는 [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/ko/env-vars)로 설정되어 다른 제공업체의 도구 호출을 변환하는 서드파티 프록시입니다. Claude Code는 세션이 Anthropic API에 직접 연결된 경우에만 이를 제거하며, 세션이 프록시를 통해 또는 다른 제공업체에서 실행되는 경우에는 저장된 기록을 그대로 로드합니다. v2.1.246 이전에는 Claude Code가 도구 사용과 그 결과를 API로 다시 보냈고, 재개된 세션의 모든 턴이 `messages.1.content.0.server_tool_use.name: Input should be 'web_search', 'web_fetch', ...`와 같은 400 오류로 실패했습니다.

3024 3042 

3025**해결 방법:**3043**해결 방법:**

3026 3044 

3027* 자리 표시 줄이 보이는 경우에는 조치가 필요하지 않습니다. 세션은 제거된 콘텐츠 없이 계속됩니다.3045* 자리 표시자 줄이 표시되는 경우에는 조치가 필요하지 않습니다. 세션은 제거된 콘텐츠 없이 계속됩니다.

3028* 대신 재개된 세션의 모든 턴이 400 오류로 실패한다면 `claude update`를 실행하고 세션을 다시 재개하십시오. v2.1.246 이전 버전은 해당 콘텐츠를 제거하지 않습니다.3046* 대신 재개된 세션의 모든 턴이 400 오류로 실패하면 `claude update`를 실행하고 세션을 다시 재개하세요. v2.1.246 이전 버전은 콘텐츠를 제거하지 않습니다.

3029 3047 

3030### role 'system' must precede an 'assistant' message3048### role 'system' must precede an 'assistant' message

3031 3049 

3032대화에서 허용되지 않는 위치에 시스템 메시지가 있기 때문에 API가 400으로 요청을 거부했습니다.3050시스템 메시지가 대화에서 API가 허용하지 않는 위치에 있어 API가 400으로 요청을 거부했습니다:

3033 3051 

3034```text theme={null}3052```text theme={null}

3035API Error: 400 messages.6: role 'system' must precede an 'assistant' message or end the array; ...3053API Error: 400 messages.6: role 'system' must precede an 'assistant' message or end the array; ...

3036```3054```

3037 3055 

3038Claude Code는 리마인더와 첨부 파일 텍스트 중 일부를 대화 내의 시스템 메시지로 보냅니다. API가 그 위치를 거부하면, Claude Code는 해당 텍스트를 일반 사용자 메시지로 보내는 방식으로 요청을 한 번 재시도합니다. `use the top-level 'system' parameter for the initial system prompt`처럼 API의 유사한 위치 관련 문구에도 같은 복구가 적용됩니다.3056Claude Code는 일부 리마인더 및 첨부 텍스트를 대화 내의 시스템 메시지로 보냅니다. API가 그 위치를 거부하면 Claude Code는 해당 텍스트를 일반 사용자 메시지로 보내 요청을 한 번 재시도합니다. `use the top-level 'system' parameter for the initial system prompt`와 같이 위치에 관한 API의 유사한 문구도 같은 방식으로 복구됩니다.

3039 3057 

3040오류가 나타난다면 거부된 시스템 메시지는 Claude Code가 제거할 수 있는 것이 아닙니다. 이는 대개 Claude Code와 API 사이의 프록시나 [LLM 게이트웨이](https://code.claude.com/docs/ko/llm-gateway)가 자체 시스템 메시지를 추가했다는 의미입니다.3058오류가 표시된다면 거부된 시스템 메시지는 Claude Code가 제거할 수 있는 메시지가 아닙니다. 이는 대개 Claude Code와 API 사이의 프록시나 [LLM 게이트웨이](https://code.claude.com/docs/ko/llm-gateway)가 자체 시스템 메시지를 추가했음을 의미합니다.

3041 3059 

3042**해결 방법:**3060**해결 방법:**

3043 3061 

3044* [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/ko/env-vars)로 구성된 프록시나 게이트웨이 뒤에서 매 턴마다 오류가 반복된다면, 프록시 없이 연결하여 원인을 확인하고 운영자에게 오류를 보고하십시오3062* [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/ko/env-vars)로 구성된 프록시나 게이트웨이 뒤에서 매 턴마다 오류가 반복되면, 프록시 없이 연결하여 원인을 확인하고 해당 프록시의 운영자에게 오류를 보고하세요

3045* `/clear`를 실행하여 새 대화를 시작하십시오. 그곳에서도 오류가 다시 발생한다면 원인은 저장된 대화가 아니라 요청 경로에 있습니다.3063* `/clear`를 실행하여 새 대화를 시작하세요. 새 대화에서도 오류가 다시 발생하면 원인은 저장된 대화가 아니라 요청 경로에 있습니다.

3046 3064 

3047v2.1.280 이전에는 Claude Code가 이 문구를 인식하지 못했기 때문에, 거부된 시스템 메시지가 Claude Code 자체가 보낸 것인 경우에도 오류가 나타났고 대화의 이후 모든 턴이 같은 방식으로 실패했습니다.3065v2.1.280 이전에는 Claude Code가 이 문구를 인식하지 못했기 때문에, 거부된 시스템 메시지가 Claude Code 자체가 보낸 것인 경우에도 오류가 나타났고 대화의 이후 모든 턴이 같은 방식으로 실패했습니다.

3048 3066 

3049### Invalid encrypted\_content in search\_result block3067### Invalid encrypted\_content in search\_result block

3050 3068 

3051대화 기록에 API가 복호화할 수 없는 호스팅 웹 검색 콘텐츠가 포함되어 있어 API가 400으로 요청을 거부했습니다. 문구에는 읽을 수 없는 필드가 표시됩니다.3069대화 기록에 API가 복호화할 수 없는 호스팅 웹 검색 콘텐츠가 있어 API가 400으로 요청을 거부했습니다. 문구에는 읽을 수 없는 필드가 명시됩니다:

3052 3070 

3053```text theme={null}3071```text theme={null}

3054API Error: 400 ... Invalid `encrypted_content` in `search_result` block3072API Error: 400 ... Invalid `encrypted_content` in `search_result` block


3057API Error: 400 ... Invalid `encrypted_stdout` in `encrypted_code_execution_result` block3075API Error: 400 ... Invalid `encrypted_stdout` in `encrypted_code_execution_result` block

3058```3076```

3059 3077 

3060API의 호스팅 [웹 검색 도구](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool)의 결과에는 API만 읽을 수 있는 암호화된 필드가 포함됩니다. `encrypted_stdout` 문구는 이러한 결과를 읽은 호스팅 코드 실행 프로그램의 출력을 가리키며, API는 이 출력도 암호화합니다. API는 다른 조직을 위해 생성된 콘텐츠처럼 복호화할 수 없는 콘텐츠를 다시 보내는 요청을 거부합니다.3078API의 호스팅 [웹 검색 도구](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool)의 결과에는 API만 읽을 수 있는 암호화된 필드가 포함됩니다. `encrypted_stdout` 문구는 이러한 결과를 읽은 호스팅 코드 실행 프로그램의 출력을 가리키며, API는 이 출력도 암호화합니다. API는 다른 조직용으로 생성된 콘텐츠처럼 복호화할 수 없는 콘텐츠를 다시 보내는 요청을 거부합니다.

3061 3079 

3062Claude Code 자체의 [WebSearch 도구](https://code.claude.com/docs/ko/tools-reference.md#websearch-tool-behavior)는 검색 결과를 일반 텍스트로 기록하므로, 이러한 블록은 대개 호스팅 웹 검색을 자체적으로 실행한 프록시나 [LLM 게이트웨이](https://code.claude.com/docs/ko/llm-gateway)를 통해 대화에 들어옵니다.3080Claude Code 자체의 [WebSearch 도구](https://code.claude.com/docs/ko/tools-reference.md#websearch-tool-behavior)는 검색 결과를 일반 텍스트로 기록하므로, 이러한 블록은 대개 호스팅 웹 검색을 직접 실행한 프록시나 [LLM 게이트웨이](https://code.claude.com/docs/ko/llm-gateway)를 통해 대화에 들어옵니다.

3063 3081 

3064세 가지 웹 검색 문구의 경우, Claude Code는 검색 호출, 결과, 인용을 보내는 내용에서 제외하고 요청을 한 번 재시도하므로, 세션은 오류를 표시하지 않고 계속됩니다. `encrypted_stdout` 문구에는 이런 복구가 없으므로 해당 메시지는 여전히 표시됩니다. v2.1.282 이전에는 Claude Code가 거부된 웹 검색 블록도 유지했기 때문에, 이후의 모든 턴과 `/compact`가 같은 방식으로 실패했습니다.3082세 가지 웹 검색 문구의 경우 Claude Code는 검색 호출, 결과, 인용을 보내는 내용에서 제외하고 요청을 한 번 재시도하므로, 세션은 오류를 표시하지 않고 계속됩니다. `encrypted_stdout` 문구에는 이러한 복구가 없으므로 해당 메시지는 여전히 표시됩니다. v2.1.282 이전에는 Claude Code가 거부된 웹 검색 블록도 유지했기 때문에 이후의 모든 턴과 `/compact`가 같은 방식으로 실패했습니다.

3065 3083 

3066**해결 방법:**3084**해결 방법:**

3067 3085 

3068* v2.1.281 이하 버전을 사용 중이고 모든 턴이 웹 검색 문구 중 하나로 실패한다면 `claude update`를 실행하고 세션을 재개하십시오3086* v2.1.281 이하를 사용 중이고 모든 턴이 웹 검색 문구 중 하나로 실패하면 `claude update`를 실행하고 세션을 재개하세요

3069* 오류가 지속되거나 메시지에 `encrypted_stdout`이 표시된다면, `/rewind`를 실행하여 해당 콘텐츠를 추가한 턴 이전의 체크포인트로 되돌아가거나, `/clear`를 실행하여 해당 콘텐츠가 포함되지 않은 대화를 시작하십시오3087* 오류가 지속되거나 메시지에 `encrypted_stdout`이 명시되어 있으면 `/rewind`를 실행하여 해당 콘텐츠를 추가한 턴 이전의 체크포인트로 돌아가거나, `/clear`를 실행하여 해당 콘텐츠가 포함되지 않은 대화를 시작하세요

3070* 프록시나 게이트웨이 뒤에서 Claude Code를 실행한다면 운영자에게 오류를 보고하십시오3088* 프록시나 게이트웨이 뒤에서 Claude Code를 실행하는 경우 해당 운영자에게 오류를 보고하세요

3071 3089 

3072### Usage Policy refusal3090### 사용 정책 거부

3073 3091 

3074대화의 콘텐츠가 [사용 정책](https://www.anthropic.com/legal/aup) 검사를 트리거하여 API가 응답을 거부했습니다.3092대화의 콘텐츠가 [사용 정책](https://www.anthropic.com/legal/aup) 검사를 트리거하여 API가 응답을 거부했습니다.

3075 3093 

3076메시지에 `` Details: `[reasoning_extraction]` `` 줄이 포함되어 있다면 [Claude의 추론을 요청하는 요청이 세이프가드에 의해 플래그됨](#safeguards-flagged-a-request-for-claudes-reasoning)을 참조하십시오.3094메시지에 `` Details: `[reasoning_extraction]` `` 줄이 포함되어 있다면 [안전 장치가 Claude의 추론을 요구하는 요청을 플래그 처리함](#safeguards-flagged-a-request-for-claudes-reasoning)을 참조하십시오.

3077 3095 

3078메시지에는 거부가 잘못되었다고 판단될 경우 지원팀에 전달할 수 있는 Request ID와 Message ID가 포함되어 있습니다.3096메시지에는 Request ID와 Message ID가 포함되어 있으며, 거부가 잘못되었다고 판단되는 경우 지원팀에 문의할 때 이를 인용할 수 있습니다.

3079 3097 

3080```text theme={null}3098```text theme={null}

3081API Error: Opus 4.6 can't help with this. Start a new session to continue.3099API Error: Opus 4.6 can't help with this. Start a new session to continue.


3083Send feedback with /feedback or learn more: https://www.anthropic.com/legal/aup3101Send feedback with /feedback or learn more: https://www.anthropic.com/legal/aup

3084```3102```

3085 3103 

3086메시지에는 거부한 모델의 이름이 표시되며, 기록된 모델이 없는 경우에는 `Claude`가 표시됩니다.3104메시지에는 거부한 모델의 이름이 표시되며, 기록된 모델이 없으면 `Claude`가 표시됩니다.

3087 3105 

3088이 검사는 최신 프롬프트만이 아니라 전체 대화를 평가하므로, 같은 세션에서 새 메시지를 보내면 대개 동일한 거부가 다시 트리거됩니다. 세션을 종료한 후 `--continue` 또는 `--resume`으로 다시 열어도 디스크의 트랜스크립트에 트리거한 콘텐츠가 여전히 포함되어 있으므로 마찬가지입니다. [Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md), [Google Cloud의 Agent Platform](https://code.claude.com/docs/ko/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/ko/microsoft-foundry.md)에서는 모델의 안전 조치가 사이버 보안 주제로 플래그한 요청도 이 메시지로 표시됩니다. [안전 조치가 사이버 보안 주제를 플래그함](#safety-measures-flagged-a-cybersecurity-topic)을 참조하십시오.3106이 검사는 최신 프롬프트뿐만 아니라 전체 대화를 평가하므로, 같은 세션에서 새 메시지를 보내면 대개 같은 거부가 다시 트리거됩니다. 세션을 종료한 후 `--continue` 또는 `--resume`으로 다시 열어도 마찬가지인데, 디스크의 트랜스크립트에 트리거한 콘텐츠가 여전히 포함되어 있기 때문입니다. [Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md), [Google Cloud의 Agent Platform](https://code.claude.com/docs/ko/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/ko/microsoft-foundry.md)에서는 모델의 안전 조치가 사이버 보안 주제로 플래그 처리한 요청에도 이 메시지가 표시됩니다. [안전 조치가 사이버 보안 주제를 플래그 처리함](#safety-measures-flagged-a-cybersecurity-topic)을 참조하십시오.

3089 3107 

3090v2.1.219 이전에는 메시지가 `Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Please double press esc to edit your last message or start a new session for Claude Code to assist with a different task.`로 표시되었습니다.3108v2.1.219 이전에는 메시지가 `Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Please double press esc to edit your last message or start a new session for Claude Code to assist with a different task.`로 표시되었습니다.

3091 3109 

3092**해결 방법:**3110**해결 방법:**

3093 3111 

3094* Esc를 두 번 누르거나 `/rewind`를 실행하여 거부를 트리거한 턴 이전의 체크포인트로 되돌아간 다음, 표현을 바꾸거나 다른 접근 방식을 사용하십시오. [체크포인트](https://code.claude.com/docs/ko/checkpointing.md)를 참조하십시오.3112* Esc를 두 번 누르거나 `/rewind`를 실행하여 거부를 트리거한 턴 이전의 체크포인트로 되돌아간 다음, 표현을 바꾸거나 다른 접근 방식을 사용합니다. [체크포인트](https://code.claude.com/docs/ko/checkpointing.md)를 참조하십시오.

3095* 어떤 턴이 원인인지 파악할 수 없다면 `/clear`를 실행하여 같은 프로젝트에서 새 대화를 시작하십시오. 이전 대화는 디스크에 보존되며 `/resume`에서 계속 사용할 수 있습니다.3113* 어떤 턴이 원인인지 파악할 수 없다면 `/clear`를 실행하여 같은 프로젝트에서 새 대화를 시작합니다. 이전 대화는 디스크에 보존되며 `/resume`에서 계속 사용할 수 있습니다.

3096* 되감기를 사용할 수 없는 [비대화형 모드](https://code.claude.com/docs/ko/headless.md)(`-p`)에서는 `--continue` 없이 새 세션에서 표현을 바꾼 프롬프트로 재시도하십시오. 정책 검사는 모델마다 다르므로 `--model`로 다른 모델로 전환하면 경우에 따라 거부가 해결될 수도 있습니다.3114* 되감기를 사용할 수 없는 [비대화형 모드](https://code.claude.com/docs/ko/headless.md)(`-p`)에서는 `--continue` 없이 새 세션에서 표현을 바꾼 프롬프트로 재시도합니다. 정책 검사는 모델마다 다르므로, 경우에 따라 `--model`로 다른 모델로 전환하는 것도 거부를 해결할 수 있습니다.

3097 3115 

3098### Safety measures flagged a cybersecurity topic3116### 안전 조치가 사이버 보안 주제를 플래그 처리함

3099 3117 

3100모델의 안전 조치가 대화의 콘텐츠를 사이버 보안 주제로 플래그했습니다. 메시지에는 요청을 플래그한 모델의 이름이 표시됩니다.3118모델의 안전 조치가 대화의 콘텐츠를 사이버 보안 주제로 플래그 처리했습니다. 메시지에는 요청을 플래그 처리한 모델의 이름이 표시됩니다.

3101 3119 

3102```text theme={null}3120```text theme={null}

3103API Error: Opus 4.8's safeguards flagged this message. Our intentionally broad safeguards allow us to deliver more capabilities faster, but can sometimes flag legitimate cybersecurity work. Send feedback with /feedback or learn more: https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude3121API Error: Opus 4.8's safeguards flagged this message. Our intentionally broad safeguards allow us to deliver more capabilities faster, but can sometimes flag legitimate cybersecurity work. Send feedback with /feedback or learn more: https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude

3104```3122```

3105 3123 

3106메시지에 `` Details: `[reasoning_extraction]` `` 줄이 포함되어 있다면 [Claude의 추론을 요청하는 요청이 세이프가드에 의해 플래그됨](#safeguards-flagged-a-request-for-claudes-reasoning)을 참조하십시오.3124메시지에 `` Details: `[reasoning_extraction]` `` 줄이 포함되어 있다면 [안전 장치가 Claude의 추론을 요구하는 요청을 플래그 처리함](#safeguards-flagged-a-request-for-claudes-reasoning)을 참조하십시오.

3107 3125 

3108이 메시지는 정당한 사이버 보안 작업에 대한 액세스 권한을 부여하는 [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude)으로 연결됩니다. [자동 모델 폴백](https://code.claude.com/docs/ko/model-config.md#automatic-model-fallback)이 적용되는 모델은 이 링크가 없는 다른 메시지를 출력하며, Opus 5.5와 Sonnet 5.5에서는 이 메시지가 `<model>'s safeguards flagged this session`으로 시작합니다. 해당 섹션에서는 Claude Code가 대신 모델을 전환하는 경우도 다룹니다.3126이 메시지는 합법적인 사이버 보안 작업을 위한 액세스 권한을 부여하는 [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude)으로 연결됩니다. [자동 모델 폴백](https://code.claude.com/docs/ko/model-config.md#automatic-model-fallback)이 있는 모델은 이 링크 없이 다른 메시지를 출력하며, Opus 5.5와 Sonnet 5.5에서는 `<model>'s safeguards flagged this session`으로 시작합니다. 해당 섹션에서는 Claude Code가 대신 모델을 전환하는 경우도 다룹니다.

3109 3127 

3110[Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md), [Google Cloud의 Agent Platform](https://code.claude.com/docs/ko/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/ko/microsoft-foundry.md)에서는 사이버 보안 플래그가 발생하면 대신 [Usage Policy refusal](#usage-policy-refusal) 메시지가 표시됩니다.3128[Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md), [Google Cloud의 Agent Platform](https://code.claude.com/docs/ko/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/ko/microsoft-foundry.md)에서는 사이버 보안 플래그가 발생하면 대신 [사용 정책 거부](#usage-policy-refusal) 메시지가 표시됩니다.

3111 3129 

3112**해결 방법:**3130**해결 방법:**

3113 3131 

3114* 작업에 이 콘텐츠가 필요한 경우 [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude)을 통해 액세스를 신청하십시오3132* 작업에 이 콘텐츠가 필요한 경우 [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude)을 통해 액세스를 신청합니다

3115* 요청이 사이버 보안 주제와 관련이 없었다면 `/feedback`을 실행하여 오탐을 보고하십시오3133* 요청이 사이버 보안 주제와 관련이 없었다면 `/feedback`을 실행하여 오탐을 신고합니다

3116* 같은 세션에서 작업을 계속하려면 Esc를 두 번 누르거나 `/rewind`를 실행하여 플래그를 트리거한 턴 이전의 체크포인트로 되돌아간 다음 다른 접근 방식을 사용하십시오. [체크포인트](https://code.claude.com/docs/ko/checkpointing.md)를 참조하십시오.3134* 같은 세션에서 계속 작업하려면 Esc를 두 번 누르거나 `/rewind`를 실행하여 플래그를 트리거한 턴 이전의 체크포인트로 되돌아간 다음, 다른 접근 방식을 사용합니다. [체크포인트](https://code.claude.com/docs/ko/checkpointing.md)를 참조하십시오.

3117 3135 

3118표시된 메시지가 대신 다음 중 하나와 같은 문구라면, 이전 Claude Code 버전에서 발생한 동일한 플래그입니다.3136표시되는 메시지가 대신 다음 중 하나와 같은 문구라면, 이전 Claude Code 버전에서 발생한 동일한 플래그입니다.

3119 3137 

3120* v2.1.219부터 v2.1.296까지는 메시지의 마지막 문장 앞에 `Apply to the Cyber Verification Program to reduce these interruptions.`가 포함될 수도 있었습니다3138* v2.1.219부터 v2.1.296까지는 메시지의 마지막 문장 앞에 `Apply to the Cyber Verification Program to reduce these interruptions.`가 포함될 수도 있었습니다

3121* v2.1.203부터 v2.1.218까지는 메시지가 `<model> has safety measures that flagged this message for a cybersecurity topic. To learn about the Cyber Verification Program and apply for access, visit our help center:`로 표시되고 그 뒤에 동일한 고객 센터 링크가 이어졌습니다. 대화형 세션에서는 `If you were not engaging in a cybersecurity topic, please send feedback via /feedback.`가 이어서 표시되었습니다.3139* v2.1.203부터 v2.1.218까지는 메시지가 `<model> has safety measures that flagged this message for a cybersecurity topic. To learn about the Cyber Verification Program and apply for access, visit our help center:` 뒤에 동일한 도움말 센터 링크가 이어지는 형태로 표시되었습니다. 대화형 세션에서는 이어서 `If you were not engaging in a cybersecurity topic, please send feedback via /feedback.`가 표시되었습니다

3122* v2.1.203 이전에는 `<model>'s safeguards flagged this message for a cybersecurity topic. If your work requires this access, you can apply for an exemption:`으로 표시되고 그 뒤에 예외 신청 양식 링크가 이어졌습니다3140* v2.1.203 이전에는 `<model>'s safeguards flagged this message for a cybersecurity topic. If your work requires this access, you can apply for an exemption:` 뒤에 예외 신청 양식 링크가 이어지는 형태로 표시되었습니다

3123 3141 

3124### Claude의 추론을 요청하는 요청이 세이프가드에 의해 플래그됨3142### 안전 장치가 Claude의 추론을 요구하는 요청을 플래그 처리함

3125 3143 

3126세이프가드가 요청을 모델의 내부 추론을 응답에 재현하도록 요구하는 것으로 플래그했기 때문에 API가 요청을 거부했습니다. API는 이 [거부 범주](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response)를 `reasoning_extraction`이라고 부르며, 거부 메시지에는 다음 줄이 포함됩니다.3144안전 장치가 해당 요청을 모델에게 내부 추론을 응답에 재현하도록 요구하는 것으로 플래그 처리하여 API가 요청을 거부했습니다. API는 이 [거부 범주](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response)를 `reasoning_extraction`으로 명명하며, 거부 메시지에는 다음 줄이 포함됩니다.

3127 3145 

3128```text theme={null}3146```text theme={null}

3129Details: `[reasoning_extraction]`3147Details: `[reasoning_extraction]`


3133 3151 

3134**해결 방법:**3152**해결 방법:**

3135 3153 

3136* Claude에게 사고 또는 추론을 그대로 또는 고정된 형식으로 작성하도록 요청하는 지시를 제거하거나 표현을 바꾸십시오. 예를 들어 `<thinking>` 섹션, 스크래치패드 섹션, JSON 출력의 `reasoning` 필드 등이 있습니다. 이러한 지시는 프롬프트에 있을 수도 있고, CLAUDE.md, 스킬, 서브에이전트 프롬프트, 출력 스타일, MCP 도구 설명처럼 Claude Code가 프롬프트와 함께 로드하는 사용자 지정 항목에 있을 수도 있습니다.3154* Claude에게 사고나 추론을 그대로 또는 고정된 형식으로 작성하도록 요구하는 지시를 제거하거나 표현을 바꿉니다. 예를 들어 `<thinking>` 섹션, 스크래치패드 섹션, JSON 출력의 `reasoning` 필드 등이 있습니다. 이러한 지시는 프롬프트에 있을 수도 있고, CLAUDE.md, 스킬, 서브에이전트 프롬프트, 출력 스타일, MCP 도구 설명처럼 Claude Code가 프롬프트와 함께 로드하는 사용자 지정 항목에 있을 수도 있습니다.

3137* 사용자 지정 항목이 원인인지 확인하려면 터미널에서 [`claude --safe-mode`](https://code.claude.com/docs/ko/cli-reference#cli-flags)를 실행하여 사용자 지정 항목이 비활성화된 세션을 시작한 다음 같은 프롬프트를 보내십시오3155* 사용자 지정 항목이 트리거인지 확인하려면 터미널에서 [`claude --safe-mode`](https://code.claude.com/docs/ko/cli-reference#cli-flags)를 실행하여 사용자 지정 항목이 비활성화된 세션을 시작한 다음, 같은 프롬프트를 보냅니다

3138* 사용자 지정 항목을 변경한 후에는 새 세션을 시작하십시오3156* 사용자 지정 항목을 변경한 후에는 새 세션을 시작합니다

3139* 이미 보낸 프롬프트의 표현을 바꾸려면 [되감기 및 요약](https://code.claude.com/docs/ko/checkpointing.md#rewind-and-summarize)을 참조하십시오3157* 이미 보낸 프롬프트의 표현을 바꾸려면 [되감기 및 요약](https://code.claude.com/docs/ko/checkpointing.md#rewind-and-summarize)을 참조하십시오

3140* Claude에게 답변을 설명해 달라고 요청하는 것은 여전히 가능합니다. 간단한 설명, 결과의 근거, 또는 수행한 작업의 요약을 요청하십시오. Claude의 사고 요약을 보려면 [`showThinkingSummaries`](https://code.claude.com/docs/ko/settings-reference#showthinkingsummaries)를 참조하십시오.3158* Claude에게 답변을 설명해 달라고 요청하는 것은 여전히 가능합니다. 간단한 설명, 결과의 근거, 또는 수행한 작업의 요약을 요청하십시오. Claude의 사고 요약을 읽으려면 [`showThinkingSummaries`](https://code.claude.com/docs/ko/settings-reference#showthinkingsummaries)를 참조하십시오.

3141* 더 많은 예시와 표현을 바꾼 요청이 여전히 거부될 때의 해결 방법은 [추론을 thinking 블록에 유지하기](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#keep-reasoning-in-thinking-blocks)를 참조하십시오3159* 더 많은 예시와 표현을 바꾼 요청이 여전히 거부되는 경우의 해결 방법은 [추론을 thinking 블록에 유지하기](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#keep-reasoning-in-thinking-blocks)를 참조하십시오

3142 3160 

3143### Output blocked by content filtering policy3161### Output blocked by content filtering policy

3144 3162 


3150 3168 

3151**해결 방법:**3169**해결 방법:**

3152 3170 

3153* 마지막 메시지의 표현을 바꾸거나 다른 접근 방식을 사용하십시오3171* 마지막 메시지의 표현을 바꾸거나 다른 접근 방식을 사용합니다

3154* 차단을 트리거한 턴 이전의 체크포인트로 되돌아가려면 Esc를 두 번 누르거나 `/rewind`를 실행하십시오. [체크포인트](https://code.claude.com/docs/ko/checkpointing.md)를 참조하십시오3172* 차단을 트리거한 턴 이전의 체크포인트로 되돌아가려면 Esc를 두 번 누르거나 `/rewind`를 실행합니다. [체크포인트](https://code.claude.com/docs/ko/checkpointing.md)를 참조하십시오

3155 3173 

3156## 명령줄 오류3174## 명령줄 오류

3157 3175 


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

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

3501* **`Ultrareview did not start: <folder> is not trusted`**: 예를 들어 `n`으로 답하거나 Enter를 눌러 `Trust <folder>? [y/N]` 질문을 거절했습니다. 리뷰를 시작하려면 `claude ultrareview`를 다시 실행하고 `y`로 답합니다.3519* **`Ultrareview did not start: <folder> is not trusted`**: 예를 들어 `n`으로 답하거나 Enter를 눌러 `Trust <folder>? [y/N]` 질문을 거절했습니다. 리뷰를 시작하려면 `claude ultrareview`를 다시 실행하고 `y`로 답합니다.

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

3503 3521 

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

3505 3523 


3522`remote-control` 동사 앞에 전역 `claude` 플래그를 두고 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)을 시작했으며, 그 플래그는 `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, `--mcp-config`처럼 Remote Control이 시작하는 세션을 제한하거나 구성하는 플래그입니다. 동사 앞에 둔 플래그는 해당 세션에 전달되지 않습니다. 대신 Claude Code는 플래그 이름을 표시하며 시작을 거부합니다:3540`remote-control` 동사 앞에 전역 `claude` 플래그를 두고 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)을 시작했으며, 그 플래그는 `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, `--mcp-config`처럼 Remote Control이 시작하는 세션을 제한하거나 구성하는 플래그입니다. 동사 앞에 둔 플래그는 해당 세션에 전달되지 않습니다. 대신 Claude Code는 플래그 이름을 표시하며 시작을 거부합니다:

3523 3541 

3524```text theme={null}3542```text theme={null}

3525Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).3543Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`). Pass settings with `claude remote-control --settings <file>`.

3526```3544```

3527 3545 

3528`--verbose`, `--model`, 또는 래퍼가 주입한 `--session-id`나 `--plugin-dir`처럼 무시해도 문제없는 전역 플래그는 Claude Code가 거부하지 않습니다. 이러한 플래그는 무시되고 Remote Control이 시작됩니다.3546`--verbose`, `--model`, 또는 래퍼가 주입한 `--session-id`나 `--plugin-dir`처럼 무시해도 문제없는 전역 플래그는 Claude Code가 거부하지 않습니다. 이러한 플래그는 무시되고 Remote Control이 시작됩니다.


3536 3554 

3537v2.1.248 이전에는 전역 플래그가 먼저 오면 `claude remote-control`이 자체 플래그를 받지 않았으며, 명령이 `unknown option` 오류로 실패했습니다.3555v2.1.248 이전에는 전역 플래그가 먼저 오면 `claude remote-control`이 자체 플래그를 받지 않았으며, 명령이 `unknown option` 오류로 실패했습니다.

3538 3556 

3557### `--settings` 파일 때문에 Remote Control이 시작되지 않음

3558 

3559[`claude remote-control --settings`](https://code.claude.com/docs/ko/remote-control#start-a-remote-control-session)에 전달한 파일에 문제가 있습니다:

3560 

3561```text theme={null}

3562Error: Remote Control did not start, because sessions would skip part or all of the --settings file ./rc-settings.json: Invalid or malformed JSON

3563```

3564 

3565**해결 방법:**

3566 

3567* 메시지에 언급된 문제를 수정한 후 `claude remote-control` 명령을 다시 실행합니다

3568 

3569### Remote Control 시작 이후 설정 파일이 변경됨

3570 

3571`claude remote-control`을 실행 중인 터미널에 이 메시지가 표시되면, [`--settings`](https://code.claude.com/docs/ko/remote-control#start-a-remote-control-session)에 전달한 파일의 현재 상태로는 세션이 시작되지 않는다는 의미입니다:

3572 

3573```text theme={null}

3574Session failed: Error: The settings file /path/to/settings.json has changed since Remote Control started, so this session did not start. Restart `claude remote-control` to use it as it is now.

3575```

3576 

3577**해결 방법:**

3578 

3579* 파일을 현재 상태로 사용하려면 `claude remote-control`을 중지하고 같은 명령을 다시 실행합니다. 서버가 제공하던 세션을 다시 불러오려면 [서버 중지 후 세션 재개하기](https://code.claude.com/docs/ko/remote-control.md#resume-sessions-after-stopping-the-server)를 참조하세요.

3580* Remote Control이 시작될 때의 설정을 유지하려면 파일 내용을 원래대로 되돌린 다음, `claude remote-control`이 종료된 경우 명령을 다시 실행합니다

3581 

3539### `--sandbox` or `--no-sandbox` is not supported by claude remote-control3582### `--sandbox` or `--no-sandbox` is not supported by claude remote-control

3540 3583 

3541이 오류는 [Remote Control](https://code.claude.com/docs/ko/remote-control.md) 서버를 시작하는 명령이 `remote-control` 뒤에 `--sandbox` 또는 `--no-sandbox`를 전달하는데, `claude remote-control`은 두 플래그 모두 받지 않는다는 의미입니다. 서버는 시작하지 않고 종료 코드 1로 종료됩니다:3584이 오류는 [Remote Control](https://code.claude.com/docs/ko/remote-control.md) 서버를 시작하는 명령이 `remote-control` 뒤에 `--sandbox` 또는 `--no-sandbox`를 전달하는데, `claude remote-control`은 두 플래그 모두 받지 않는다는 의미입니다. 서버는 시작하지 않고 종료 코드 1로 종료됩니다:


3806 3849 

3807다음 관련 메시지는 명령이 실행되기도 전에 표시됩니다:3850다음 관련 메시지는 명령이 실행되기도 전에 표시됩니다:

3808 3851 

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

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

3811 3854 

3812**해결 방법:**3855**해결 방법:**


3960 4003 

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

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

3963* **클론에 없던 기본 브랜치를 전달한 경우**: 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가 클론이 얕은 클론인지 판단할 수 없으면 대신 `git fetch --unshallow origin`을 제안합니다. v2.1.221 이전에는 가져온 모든 기본 브랜치에 대해 힌트가 `git fetch --unshallow origin`을 제안했으며, 완전한 클론에서는 이 명령이 `fatal: --unshallow on a complete repository does not make sense`로 실패합니다.4006* **클론에 없던 기본 브랜치를 전달한 경우**: 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`와 함께 실패합니다.

3964 4007 

3965**해결 방법:**4008**해결 방법:**

3966 4009 


4490commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory4533commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory

4491```4534```

4492 4535 

4493마켓플레이스 플러그인 자체 파일 중 하나(예: `hooks/hooks.json`)의 전체 경로를 제공하는 메시지는 Claude Code가 해당 파일을 건너뛰었음을 의미합니다. 이는 Claude Code가 파일이 플러그인 내부에 있는지, 또는 [로컬 마켓플레이스](https://code.claude.com/docs/ko/plugins/loading.md#in-place-and-copied-plugins)의 플러그인의 경우 해당 마켓플레이스 내부에 있는지 확인할 수 없을 때 발생합니다. 메시지는 이러한 각 파일을 다음 구성 요소 이름으로 보고합니다:4536마켓플레이스 플러그인 자체 파일 중 하나(예: `hooks/hooks.json`)의 전체 경로를 표시하는 메시지는 Claude Code가 해당 파일을 건너뛰었음을 의미합니다. Claude Code는 파일이 플러그인 내부에 있는지, 또는 [로컬 마켓플레이스](https://code.claude.com/docs/ko/plugins/loading.md#in-place-and-copied-plugins)의 플러그인인 경우 해당 마켓플레이스 내부에 있는지 확인할 수 없으면 그 파일을 건너뜁니다. 메시지는 이러한 파일을 다음과 같이 표시된 컴포넌트 이름 아래에 보고합니다:

4494 4537 

4495* `hooks/hooks.json`: `hooks`4538* `hooks/hooks.json`: `hooks`

4496* `monitors/monitors.json`: `monitors`4539* `monitors/monitors.json`: `monitors`

4497* `settings.json`: `settings`

4498* 플러그인 루트의 `SKILL.md`: `skills`4540* 플러그인 루트의 `SKILL.md`: `skills`

4499 4541 

4500예를 들어 이 메시지는 플러그인과 해당 로컬 마켓플레이스 모두의 외부로 확인되는 `hooks/hooks.json`에 대한 것입니다:4542예를 들어 이 메시지는 플러그인과 해당 로컬 마켓플레이스 모두의 외부로 확인되는 `hooks/hooks.json`에 대한 것입니다:

Details

117 <td>✗</td>117 <td>✗</td>

118 </tr>118 </tr>

119 119 

120 <tr>

121 <td>[Code Mode](https://code.claude.com/docs/ko/code-mode.md)</td>

122 <td>✓ (실험적, [요구 사항 적용](https://code.claude.com/docs/ko/code-mode.md#requirements))</td>

123 <td>✓ (실험적, [요구 사항 적용](https://code.claude.com/docs/ko/code-mode.md#requirements))</td>

124 <td>✗</td>

125 <td>✗</td>

126 <td>✗</td>

127 <td>✗</td>

128 </tr>

129 

120 <tr>130 <tr>

121 <td>[교차 세션 메시징](https://code.claude.com/docs/ko/cross-session-messaging.md)</td>131 <td>[교차 세션 메시징](https://code.claude.com/docs/ko/cross-session-messaging.md)</td>

122 <td>✓ <sup>[5](#fn5)</sup></td>132 <td>✓ <sup>[5](#fn5)</sup></td>


231 241 

232> [tab] Amazon Bedrock242> [tab] Amazon Bedrock

233>243>

234> **사용 불가능:** 모든 [Claude 구독이 필요한 기능](#features-that-require-a-claude-subscription), 그리고 [웹 검색](https://code.claude.com/docs/ko/tools-reference.md#websearch-tool-behavior), [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md), [Advisor](https://code.claude.com/docs/ko/advisor.md), [Channels](https://code.claude.com/docs/ko/channels.md), [분석 대시보드](https://code.claude.com/docs/ko/analytics.md), [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md), [`/design-sync` 및 `/import` 명령](https://code.claude.com/docs/ko/commands#all-commands).244> **사용 불가능:** 모든 [Claude 구독이 필요한 기능](#features-that-require-a-claude-subscription), 그리고 [웹 검색](https://code.claude.com/docs/ko/tools-reference.md#websearch-tool-behavior), [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md), [Advisor](https://code.claude.com/docs/ko/advisor.md), [채널](https://code.claude.com/docs/ko/channels.md), [Code Mode](https://code.claude.com/docs/ko/code-mode.md), [분석 대시보드](https://code.claude.com/docs/ko/analytics.md), [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md), [`/design-sync` 및 `/import` 명령](https://code.claude.com/docs/ko/commands#all-commands).

235>245>

236> **부분 지원:**246> **부분 지원:**

237>247>


244 254 

245> [tab] AWS의 Claude Platform255> [tab] AWS의 Claude Platform

246>256>

247> **사용 불가능:** 모든 [Claude 구독이 필요한 기능](#features-that-require-a-claude-subscription), 그리고 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md), [채널](https://code.claude.com/docs/ko/channels.md), [GitHub Actions](https://code.claude.com/docs/ko/github-actions.md), [분석 대시보드](https://code.claude.com/docs/ko/analytics.md), [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md), [`/design-sync` 및 `/import` 명령](https://code.claude.com/docs/ko/commands#all-commands).257> **사용 불가능:** 모든 [Claude 구독이 필요한 기능](#features-that-require-a-claude-subscription), 그리고 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md), [채널](https://code.claude.com/docs/ko/channels.md), [GitHub Actions](https://code.claude.com/docs/ko/github-actions.md), [Code Mode](https://code.claude.com/docs/ko/code-mode.md), [분석 대시보드](https://code.claude.com/docs/ko/analytics.md), [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md), [`/design-sync` 및 `/import` 명령](https://code.claude.com/docs/ko/commands#all-commands).

248>258>

249> **Amazon Bedrock에서는 사용할 수 없지만 여기서는 사용 가능:** [웹 검색](https://code.claude.com/docs/ko/tools-reference.md#websearch-tool-behavior), 그리고 Claude Code v2.1.300 이상에서 [Advisor](https://code.claude.com/docs/ko/advisor.md).259> **Amazon Bedrock에서는 사용할 수 없지만 여기서는 사용 가능:** [웹 검색](https://code.claude.com/docs/ko/tools-reference.md#websearch-tool-behavior), 그리고 Claude Code v2.1.300 이상에서 [Advisor](https://code.claude.com/docs/ko/advisor.md).

250>260>


256 266 

257> [tab] Google Cloud의 Agent Platform267> [tab] Google Cloud의 Agent Platform

258>268>

259> **사용 불가능:** 모든 [Claude 구독이 필요한 기능](#features-that-require-a-claude-subscription), 그리고 [Advisor](https://code.claude.com/docs/ko/advisor.md), [채널](https://code.claude.com/docs/ko/channels.md), [분석 대시보드](https://code.claude.com/docs/ko/analytics.md), [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md), [`/design-sync` 및 `/import` 명령](https://code.claude.com/docs/ko/commands#all-commands).269> **사용 불가능:** 모든 [Claude 구독이 필요한 기능](#features-that-require-a-claude-subscription), 그리고 [Advisor](https://code.claude.com/docs/ko/advisor.md), [채널](https://code.claude.com/docs/ko/channels.md), [Code Mode](https://code.claude.com/docs/ko/code-mode.md), [분석 대시보드](https://code.claude.com/docs/ko/analytics.md), [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md), [`/design-sync` 및 `/import` 명령](https://code.claude.com/docs/ko/commands#all-commands).

260>270>

261> **부분 지원:**271> **부분 지원:**

262>272>


271 281 

272> [tab] Microsoft Foundry282> [tab] Microsoft Foundry

273>283>

274> **사용 불가능:** 모든 [Claude 구독이 필요한 기능](#features-that-require-a-claude-subscription), 그리고 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md), [Advisor](https://code.claude.com/docs/ko/advisor.md), [Channels](https://code.claude.com/docs/ko/channels.md), [GitLab CI/CD](https://code.claude.com/docs/ko/gitlab-ci-cd.md), [분석 대시보드](https://code.claude.com/docs/ko/analytics.md), [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md), [`/design-sync` 및 `/import` 명령](https://code.claude.com/docs/ko/commands#all-commands).284> **사용 불가능:** 모든 [Claude 구독이 필요한 기능](#features-that-require-a-claude-subscription), 그리고 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md), [Advisor](https://code.claude.com/docs/ko/advisor.md), [채널](https://code.claude.com/docs/ko/channels.md), [GitLab CI/CD](https://code.claude.com/docs/ko/gitlab-ci-cd.md), [Code Mode](https://code.claude.com/docs/ko/code-mode.md), [분석 대시보드](https://code.claude.com/docs/ko/analytics.md), [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md), [`/design-sync` 및 `/import` 명령](https://code.claude.com/docs/ko/commands#all-commands).

275>285>

276> **부분 지원:**286> **부분 지원:**

277>287>

gateways.md +1 −1

Details

63* **클라이언트 원격 분석**: Claude Code는 세션이 Claude 앱 게이트웨이에 로그인할 때 Anthropic 바운드 클라이언트 분석을 비활성화합니다. 로그인 전 시작 분석도 꺼두려면, 각 기기의 [클라이언트 측 관리 설정](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#client-side-managed-settings)에서 [`DISABLE_TELEMETRY`](https://code.claude.com/docs/ko/managed-settings#turn-telemetry-off-for-your-organization)를 전달합니다.63* **클라이언트 원격 분석**: Claude Code는 세션이 Claude 앱 게이트웨이에 로그인할 때 Anthropic 바운드 클라이언트 분석을 비활성화합니다. 로그인 전 시작 분석도 꺼두려면, 각 기기의 [클라이언트 측 관리 설정](https://code.claude.com/docs/ko/claude-apps-gateway-config.md#client-side-managed-settings)에서 [`DISABLE_TELEMETRY`](https://code.claude.com/docs/ko/managed-settings#turn-telemetry-off-for-your-organization)를 전달합니다.

64* **다른 게이트웨이의 클라이언트 원격 분석**: Claude Code가 선택적 클라이언트 원격 분석 스트림을 전송하는지 여부는 제공자에 따라 다르며, [원격 분석 기본값 표](https://code.claude.com/docs/ko/data-usage.md#default-behaviors-by-api-provider)에서 각 경우를 다룹니다.64* **다른 게이트웨이의 클라이언트 원격 분석**: Claude Code가 선택적 클라이언트 원격 분석 스트림을 전송하는지 여부는 제공자에 따라 다르며, [원격 분석 기본값 표](https://code.claude.com/docs/ko/data-usage.md#default-behaviors-by-api-provider)에서 각 경우를 다룹니다.

65* **원격 분석 대상**: Claude Code가 게이트웨이 세션의 원격 분석을 전송하는 위치는 세션이 로그인한 방식에 따라 다르며, [개발자에게 적용되는 항목](https://code.claude.com/docs/ko/claude-apps-gateway#whats-enforced-on-developers)에서 각 종류의 세션의 내보내기가 어디로 가는지 설명합니다.65* **원격 분석 대상**: Claude Code가 게이트웨이 세션의 원격 분석을 전송하는 위치는 세션이 로그인한 방식에 따라 다르며, [개발자에게 적용되는 항목](https://code.claude.com/docs/ko/claude-apps-gateway#whats-enforced-on-developers)에서 각 종류의 세션의 내보내기가 어디로 가는지 설명합니다.

66* **회사 HTTP 프록시**: `HTTPS_PROXY`는 Claude Code와 게이트웨이를 포함하여 통신하는 모든 서버 사이에 위치합니다. 네트워크에 필요한 경우, 게이트웨이 외에 [프록시를 구성](https://code.claude.com/docs/ko/network-config.md)하세요. Claude 앱 게이트웨이를 호스팅하는 경우, [로그인은 프록시 호스트도 개인 네트워크에 있는지 확인](https://code.claude.com/docs/ko/claude-apps-gateway#prerequisites)합니다. 그렇지 않으면 게이트웨이 호스트를 `NO_PROXY`에 추가하여 CLI가 직접 연결하도록 하세요.66* **회사 HTTP 프록시**: Claude Code는 게이트웨이로 가는 요청을 포함한 모든 요청을 `HTTPS_PROXY`에 지정된 프록시를 통해 전송합니다. 네트워크에 프록시가 필요한 경우 [프록시를 구성](https://code.claude.com/docs/ko/network-config.md)하세요. 프록시가 직접 호스팅하는 Claude 앱 게이트웨이에도 적용되는 경우, [로그인](https://code.claude.com/docs/ko/claude-apps-gateway#prerequisites)하려면 프록시의 호스트 이름이 사설 주소로 확인되거나 게이트웨이 호스트가 `NO_PROXY`에 포함되어 있어야 합니다.

67 67 

68## 다음 단계68## 다음 단계

69 69 

Details

129| Administration | 읽기 |129| Administration | 읽기 |

130| Checks | 읽기 및 쓰기 |130| Checks | 읽기 및 쓰기 |

131| Contents | 읽기 및 쓰기 |131| Contents | 읽기 및 쓰기 |

132| Dependabot alerts | 읽기 |

132| Discussions | 읽기 및 쓰기 |133| Discussions | 읽기 및 쓰기 |

133| Issues | 읽기 및 쓰기 |134| Issues | 읽기 및 쓰기 |

134| Members | 읽기 |135| Members | 읽기 |

Details

83>83>

84> [GitHub Actions에서 인증하기에 대한 Microsoft 가이드](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect)에 따라 저장소에 대한 페더레이션 자격증명을 사용하여 Microsoft Entra 애플리케이션을 생성합니다:84> [GitHub Actions에서 인증하기에 대한 Microsoft 가이드](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect)에 따라 저장소에 대한 페더레이션 자격증명을 사용하여 Microsoft Entra 애플리케이션을 생성합니다:

85>85>

86> * Microsoft Entra 애플리케이션을 등록하고 저장소에 GitHub가 발급하는 토큰을 신뢰하는 페더레이션 ID 자격증명을 추가합니다. 사용자 할당 관리 ID는 애플리케이션 대신 사용할 수 있습니다. 둘 다 아래에서 기록하는 클라이언트 ID를 가집니다86> * Microsoft Entra 애플리케이션을 등록하고 저장소에 GitHub가 발급하는 토큰을 신뢰하는 페더레이션 ID 자격 증명을 추가합니다. 사용자 할당 관리 ID는 애플리케이션 대신 사용할 수 있습니다. 둘 다 아래에서 기록하는 클라이언트 ID를 가집니다

87> * 애플리케이션에 Foundry 리소스에 대한 `Azure AI User` 역할을 할당합니다. 더 좁은 사용자 정의 역할은 [Azure RBAC 구성](https://code.claude.com/docs/ko/microsoft-foundry.md#azure-rbac-configuration)을 참조합니다87> * 애플리케이션에 Foundry 리소스에 대한 `Foundry User` 역할을 할당합니다. 다른 기본 제공 역할과 사용자 정의 역할은 [Azure RBAC 구성](https://code.claude.com/docs/ko/microsoft-foundry.md#azure-rbac-configuration)을 참조합니다

88>88>

89> 애플리케이션의 클라이언트 ID, 테넌트 ID, 구독 ID를 기록합니다. 다음 단계에서 비밀로 추가합니다.89> 애플리케이션의 클라이언트 ID, 테넌트 ID, 구독 ID를 기록합니다. 다음 단계에서 비밀로 추가합니다.

90 90 

Details

228 228 

229### 세션 중에 모델이 비활성화될 때229### 세션 중에 모델이 비활성화될 때

230 230 

231프로젝트가 세션이 실행 중인 모델에 대한 액세스를 잃으면(예: 관리자가 [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)에서 비활성화하는 경우), Claude Code는 각 요청이 실패하는 대신 세션을 다른 모델로 전환하고 `Switched to <fallback> because <model> is not available`을 표시합니다. 시작 폴백과 동일한 모델을 시도합니다: 먼저 동일한 계층의 이전 버전이고, Opus 세션에서 사용 가능한 Opus 버전이 없으면 기본 Sonnet 모델입니다.231Agent Platform이 세션의 모델을 프로젝트 또는 리전에서 사용할 수 없다는 이유로 거부하면 Claude Code는 세션을 다른 모델로 전환하며, 계속 작업할 수 있습니다. `Switched to <fallback> because <model> is not available`로 시작하는 메시지가 표시됩니다. 예를 들어 관리자가 [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)에서 모델을 비활성화하거나 해당 리전에서 모델이 제공되지 않는 경우에 이런 일이 발생합니다.

232 232 

233전환은 고정하지 않은 계층에만 적용되며, 이는 시작 폴백과 동일한 조건입니다. 선택한 특정 버전의 세션은 모델을 유지하고, 폴백 모델 체인이 없으면 요청이 실패합니다. [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry)에서 Claude Code는 Agent Platform에서 자동 모드가 지원하는 모델로만 전환합니다. 해당 모델도 사용 가능하지 않으면 요청이 실패합니다.233[폴백 모델 체인](https://code.claude.com/docs/ko/model-config.md#fallback-model-chains)을 구성한 경우 Claude Code는 대신 구성한 폴백으로 전환합니다. 체인이 없으면 다음과 같은 경우에 요청이 실패합니다.

234 234 

235구성한 [폴백 모델 체인](https://code.claude.com/docs/ko/model-config.md#fallback-model-chains)은 계층 전환을 대체합니다: 이러한 거부에서 Claude Code는 구성한 폴백으로 전환합니다. 거부된 요청이 전환되지 않고 실패하도록 하려면 [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/ko/env-vars)을 설정합니다. 구성한 폴백 체인은 여전히 이러한 거부에서 전환합니다. 모든 거부된 요청이 실패하도록 하려면 체인도 제거합니다.235* 세션이 고정된 모델 또는 직접 선택한 특정 버전을 사용하는 경우

236* [Claude Code가 시도하는 모델](#startup-model-checks) 중 사용 가능한 모델이 없는 경우. [자동 모드](https://code.claude.com/docs/ko/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry)에서 Claude Code는 Agent Platform에서 자동 모드가 지원하는 모델로만 전환합니다.

237 

238계속 작업하려면 세션에서 `/model`을 실행하고 프로젝트와 리전에서 사용 가능한 모델에서 `s`를 누릅니다. 이렇게 하면 기본값은 변경되지 않습니다.

239 

240거부된 요청이 전환되지 않고 실패하도록 하려면 [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/ko/env-vars)을 설정합니다. 폴백 모델 체인을 구성한 경우 Claude Code가 여전히 해당 폴백으로 이동하므로 체인도 제거합니다.

236 241 

237## IAM 구성242## IAM 구성

238 243 

hooks.md +22 −7

Details

257관리자는 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)에서 [`allowManagedHooksOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedhooksonly)를 사용하여 실행되는 훅을 제한할 수 있습니다:257관리자는 [관리형 설정](https://code.claude.com/docs/ko/managed-settings.md)에서 [`allowManagedHooksOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedhooksonly)를 사용하여 실행되는 훅을 제한할 수 있습니다:

258 258 

259* 사용자, 프로젝트, 로컬 및 플러그인 hook이 차단됩니다. 관리형 설정 `enabledPlugins`에서 강제 활성화된 플러그인의 Hook은 제외됩니다.259* 사용자, 프로젝트, 로컬 및 플러그인 hook이 차단됩니다. 관리형 설정 `enabledPlugins`에서 강제 활성화된 플러그인의 Hook은 제외됩니다.

260* Claude Code는 또한 [`statusLine`](https://code.claude.com/docs/ko/statusline), [`fileSuggestion`](https://code.claude.com/docs/ko/settings-reference#filesuggestion) 및 [`subagentStatusLine`](https://code.claude.com/docs/ko/statusline#subagent-status-lines) 설정을 관리형 설정으로 좁힙니다.260* Claude Code는 또한 [`statusLine`](https://code.claude.com/docs/ko/statusline) 및 [`fileSuggestion`](https://code.claude.com/docs/ko/settings-reference#filesuggestion) 설정을 관리형 설정으로 좁힙니다.

261* Claude Code는 또한 [`disableCommandPluginSources`](https://code.claude.com/docs/ko/settings-reference#disablecommandpluginsources)가 명시적으로 `false`로 설정되지 않은 한 [`command` 소스](https://code.claude.com/docs/ko/plugins/marketplace-reference#command-plugin-source)가 있는 플러그인을 비활성화합니다. 여기에는 관리형 설정 `enabledPlugins`에서 강제 활성화된 플러그인이 포함됩니다. `command` 소스는 Claude Code v2.1.229 이상이 필요합니다.261* Claude Code는 또한 [`disableCommandPluginSources`](https://code.claude.com/docs/ko/settings-reference#disablecommandpluginsources)가 명시적으로 `false`로 설정되지 않은 한 [`command` 소스](https://code.claude.com/docs/ko/plugins/marketplace-reference#command-plugin-source)가 있는 플러그인을 비활성화합니다. 여기에는 관리형 설정 `enabledPlugins`에서 강제 활성화된 플러그인이 포함됩니다. `command` 소스는 Claude Code v2.1.229 이상이 필요합니다.

262* Claude Code는 또한 [`disableCommandPluginSources`](https://code.claude.com/docs/ko/settings-reference#disablecommandpluginsources)가 명시적으로 `false`로 설정되지 않은 한 마켓플레이스 [`headersHelper` 명령](https://code.claude.com/docs/ko/plugins/host-marketplace#authenticate-archive-downloads)을 차단합니다. 단, 관리형 설정 자체가 선언하는 마켓플레이스는 제외됩니다.262* Claude Code는 또한 [`disableCommandPluginSources`](https://code.claude.com/docs/ko/settings-reference#disablecommandpluginsources)가 명시적으로 `false`로 설정되지 않은 한 마켓플레이스 [`headersHelper` 명령](https://code.claude.com/docs/ko/plugins/host-marketplace#authenticate-archive-downloads)을 차단합니다. 단, 관리형 설정 자체가 선언하는 마켓플레이스는 제외됩니다.

263 263 


505| `url` | 예 | POST 요청을 보낼 URL |505| `url` | 예 | POST 요청을 보낼 URL |

506| `headers` | 아니요 | 키-값 쌍으로 추가 HTTP 헤더. 값은 `$VAR_NAME` 또는 `${VAR_NAME}` 구문을 사용한 환경 변수 보간을 지원합니다. `allowedEnvVars`에 나열된 변수만 해결됩니다. |506| `headers` | 아니요 | 키-값 쌍으로 추가 HTTP 헤더. 값은 `$VAR_NAME` 또는 `${VAR_NAME}` 구문을 사용한 환경 변수 보간을 지원합니다. `allowedEnvVars`에 나열된 변수만 해결됩니다. |

507| `allowedEnvVars` | 아니요 | 헤더 값에 보간될 수 있는 환경 변수 이름 목록. 나열되지 않은 변수에 대한 참조는 빈 문자열로 바뀝니다. 환경 변수 보간이 작동하려면 필수입니다. |507| `allowedEnvVars` | 아니요 | 헤더 값에 보간될 수 있는 환경 변수 이름 목록. 나열되지 않은 변수에 대한 참조는 빈 문자열로 바뀝니다. 환경 변수 보간이 작동하려면 필수입니다. |

508| `onFailure` | 아니요 | 훅이 실패할 때 해당 작업에 일어나는 동작: 기본값인 `"continue"` 또는 `"block"`. [훅이 실패할 때 작업 차단](#block-the-action-when-a-hook-fails)을 참조하십시오. Claude Code v2.1.295 이상이 필요합니다. |508| `onFailure` | 아니요 | 훅이 실패할 때 훅을 트리거한 작업이 계속 진행되는지 여부: `"continue"` 또는 `"block"`. `"block"` 및 필드를 설정하지 않은 경우에 대해서는 [훅이 실패할 때 작업 차단](#block-the-action-when-a-hook-fails)을 참조하십시오. Claude Code v2.1.295 이상이 필요합니다. |

509 509 

510Claude Code는 hook의 [JSON 입력](#hook-input-and-output)을 `Content-Type: application/json`을 사용하여 POST 요청 본문으로 보냅니다. 응답 본문은 명령 hook과 동일한 [JSON 출력 형식](#json-output)을 사용합니다.510Claude Code는 hook의 [JSON 입력](#hook-input-and-output)을 `Content-Type: application/json`을 사용하여 POST 요청 본문으로 보냅니다. 응답 본문은 명령 hook과 동일한 [JSON 출력 형식](#json-output)을 사용합니다.

511 511 


901 901 

902`PreToolUse`에서 시간 초과된 `command`, `http`, `mcp_tool` hook은 도구 호출을 차단하지 않습니다. 단, [실패 시 작업을 차단하는 hook](#block-the-action-when-a-hook-fails)은 예외입니다. 호출은 일반 [권한 흐름](https://code.claude.com/docs/ko/permissions.md)을 통해 계속되므로 멈춘 hook이 게이트 역할을 할 것이라고 기대하지 마세요. `command` 또는 `http` hook이 시간 초과될 때 호출을 차단하려면 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)을 설정합니다. 타임아웃을 초과한 [Agent SDK 콜백 hook](https://code.claude.com/docs/ko/agent-sdk/hooks.md)은 [도구 호출을 차단합니다](#pretooluse).902`PreToolUse`에서 시간 초과된 `command`, `http`, `mcp_tool` hook은 도구 호출을 차단하지 않습니다. 단, [실패 시 작업을 차단하는 hook](#block-the-action-when-a-hook-fails)은 예외입니다. 호출은 일반 [권한 흐름](https://code.claude.com/docs/ko/permissions.md)을 통해 계속되므로 멈춘 hook이 게이트 역할을 할 것이라고 기대하지 마세요. `command` 또는 `http` hook이 시간 초과될 때 호출을 차단하려면 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)을 설정합니다. 타임아웃을 초과한 [Agent SDK 콜백 hook](https://code.claude.com/docs/ko/agent-sdk/hooks.md)은 [도구 호출을 차단합니다](#pretooluse).

903 903 

904> [!NOTE]

905>

906> Code Mode를 사용하는 경우 `PreToolUse`의 타임아웃은 다르게 동작합니다. [hook에 의해 거부된 도구 호출](https://code.claude.com/docs/ko/code-mode.md#tool-call-refused-by-a-hook)을 참조하세요.

907 

904#### 백그라운드 프로세스를 시작하는 hook908#### 백그라운드 프로세스를 시작하는 hook

905 909 

906hook은 개발 서버와 같이 오래 실행되는 프로그램을 시작하고, 세션이 계속되는 동안 실행 상태로 둘 수 있습니다. hook의 스크립트 또는 [셸 형식](#exec-form-and-shell-form) 명령에서 다음을 수행합니다:910hook은 개발 서버와 같이 오래 실행되는 프로그램을 시작하고, 세션이 계속되는 동안 실행 상태로 둘 수 있습니다. hook의 스크립트 또는 [셸 형식](#exec-form-and-shell-form) 명령에서 다음을 수행합니다:


981* **`Stop`, `SubagentStop`, `TaskCompleted`, `TeammateIdle` hook**: 이러한 이벤트에서 종료 코드 2는 Claude가 계속 작업하도록 되돌려 보내며, Claude는 실행되지 않는 hook을 고칠 수 없습니다985* **`Stop`, `SubagentStop`, `TaskCompleted`, `TeammateIdle` hook**: 이러한 이벤트에서 종료 코드 2는 Claude가 계속 작업하도록 되돌려 보내며, Claude는 실행되지 않는 hook을 고칠 수 없습니다

982* **백그라운드 명령 hook**: [`async` 또는 `asyncRewake`](#run-hooks-in-the-background)를 설정한 명령 hook986* **백그라운드 명령 hook**: [`async` 또는 `asyncRewake`](#run-hooks-in-the-background)를 설정한 명령 hook

983 987 

988> [!NOTE]

989>

990> Code Mode를 사용하는 경우 `PreToolUse`의 실패는 다르게 동작합니다. [hook에 의해 거부된 도구 호출](https://code.claude.com/docs/ko/code-mode.md#tool-call-refused-by-a-hook)을 참조하세요.

991 

984#### Git Bash가 없는 Windows에서 실패한 hook992#### Git Bash가 없는 Windows에서 실패한 hook

985 993 

986차단된 도구 호출의 오류에 다음 텍스트가 포함되어 있으면 `PreToolUse` 또는 `PermissionRequest` 명령 hook이 실패하거나 시간 초과되어 호출을 차단한 것입니다:994차단된 도구 호출의 오류에 다음 텍스트가 포함되어 있으면 `PreToolUse` 또는 `PermissionRequest` 명령 hook이 실패하거나 시간 초과되어 호출을 차단한 것입니다:


1512* `/loop` 반복을 포함하여 [세션 범위 예약 작업](https://code.claude.com/docs/ko/scheduled-tasks.md)이 실행될 때1520* `/loop` 반복을 포함하여 [세션 범위 예약 작업](https://code.claude.com/docs/ko/scheduled-tasks.md)이 실행될 때

1513* [백그라운드 서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#run-subagents-in-foreground-or-background)가 자신을 시작한 세션에 결과를 보고할 때1521* [백그라운드 서브에이전트](https://code.claude.com/docs/ko/sub-agents.md#run-subagents-in-foreground-or-background)가 자신을 시작한 세션에 결과를 보고할 때

1514* [다른 세션이 보낸 메시지](https://code.claude.com/docs/ko/cross-session-messaging.md)가 메인 대화에 도착할 때1522* [다른 세션이 보낸 메시지](https://code.claude.com/docs/ko/cross-session-messaging.md)가 메인 대화에 도착할 때

1523* 코드가 백그라운드에서 실행될 수 있는 경우, `command`, `http`, `mcp_tool` 훅에 대해 [Code Mode](https://code.claude.com/docs/ko/code-mode.md#code-output-withheld-by-a-hook) 세션에서 Claude의 코드가 출력을 낼 때

1515 1524 

1516`UserPromptSubmit` 훅의 기본 타임아웃은 `command`, `http`, `mcp_tool` 유형에 대해 30초로, 대부분의 다른 이벤트에서 해당 유형의 기본값인 600초보다 짧습니다. 이 훅은 모든 프롬프트 전에 실행되고 완료될 때까지 모델 처리를 차단하므로, 멈춘 훅은 세션을 지연시킵니다. 훅에 더 많은 시간이 필요하면 훅 항목에서 `timeout` 필드를 설정하십시오.1525`UserPromptSubmit` 훅의 기본 타임아웃은 `command`, `http`, `mcp_tool` 유형에 대해 30초로, 대부분의 다른 이벤트에서 해당 유형의 기본값인 600초보다 짧습니다. 이 훅은 모든 프롬프트 전에 실행되고 완료될 때까지 모델 처리를 차단하므로, 멈춘 훅은 세션을 지연시킵니다. 훅에 더 많은 시간이 필요하면 훅 항목에서 `timeout` 필드를 설정하십시오.

1517 1526 


1560| 필드 | 설명 |1569| 필드 | 설명 |

1561| :- | :- |1570| :- | :- |

1562| `decision` | `"block"`은 프롬프트가 Claude에 도달하기 전에 중지합니다. 프롬프트 진행을 허용하려면 생략하십시오 |1571| `decision` | `"block"`은 프롬프트가 Claude에 도달하기 전에 중지합니다. 프롬프트 진행을 허용하려면 생략하십시오 |

1563| `reason` | `decision`이 `"block"`일 때 사용자에게 표시됩니다. 컨텍스트에 추가되지 않습니다 |1572| `reason` | `decision`이 `"block"`일 때 사용자에게 표시됩니다. 훅이 [Code Mode 출력](https://code.claude.com/docs/ko/code-mode.md#code-output-withheld-by-a-hook)을 차단하는 경우를 제외하고 컨텍스트에 추가되지 않습니다 |

1564| `additionalContext` | 제출된 프롬프트와 함께 Claude의 컨텍스트에 추가되는 문자열입니다. [Claude를 위한 컨텍스트 추가](#add-context-for-claude)를 참조하십시오 |1573| `additionalContext` | 제출된 프롬프트와 함께 Claude의 컨텍스트에 추가되는 문자열입니다. [Claude를 위한 컨텍스트 추가](#add-context-for-claude)를 참조하십시오 |

1565| `sessionTitle` | 세션 제목을 설정합니다. 프롬프트 내용을 기반으로 세션 이름을 자동으로 지정할 때 사용하십시오 |1574| `sessionTitle` | 세션 제목을 설정합니다. 프롬프트 내용을 기반으로 세션 이름을 자동으로 지정할 때 사용하십시오 |

1566| `suppressOriginalPrompt` | 훅이 프롬프트를 차단할 때 `true`이면 차단 메시지에서 프롬프트 텍스트를 제외합니다. [차단된 프롬프트가 남기는 것](#what-a-blocked-prompt-leaves-behind)을 참조하십시오 |1575| `suppressOriginalPrompt` | 훅이 프롬프트를 차단할 때 `true`이면 차단 메시지에서 프롬프트 텍스트를 제외합니다. [차단된 프롬프트가 남기는 것](#what-a-blocked-prompt-leaves-behind)을 참조하십시오 |

1567 1576 

1568종료 코드 2로 차단하는 훅은 `reason`과 같은 방식으로 전달됩니다. 차단 메시지는 사용자에게 stderr 텍스트를 표시하며, 컨텍스트에는 추가되지 않습니다.1577훅이 종료 코드 2로 차단하는 경우, stderr 텍스트는 `reason`과 같은 방식으로 처리됩니다.

1569 1578 

1570```json theme={null}1579```json theme={null}

1571{1580{


3000 3009 

3001세션 중에 설정 파일이 변경될 때 실행됩니다. 설정 변경을 감사하거나, 보안 정책을 강제하거나, 설정 파일의 무단 수정을 차단하는 데 사용하십시오.3010세션 중에 설정 파일이 변경될 때 실행됩니다. 설정 변경을 감사하거나, 보안 정책을 강제하거나, 설정 파일의 무단 수정을 차단하는 데 사용하십시오.

3002 3011 

3003Claude Code는 설정 파일, 관리형 정책 파일 또는 스킬 파일이 변경될 때 ConfigChange 훅을 실행합니다. 관리형 정책의 경우 `managed-settings.json` 또는 `managed-settings.d/`의 파일이 변경될 때만 실행합니다. [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md)과 macOS 관리형 환경설정 또는 Windows 레지스트리 정책의 변경 사항은 훅을 실행하지 않고 적용합니다. [`wslInheritsWindowsSettings`](https://code.claude.com/docs/ko/settings-reference#wslinheritswindowssettings)가 설정된 WSL에서는 변경된 Windows 측 관리형 설정 파일도 정책 폴링 시 훅을 실행하지 않고 적용합니다.3012Claude Code는 설정 파일, 관리형 정책 파일 또는 스킬 파일이 변경될 때 ConfigChange 훅을 실행합니다. 관리형 정책의 경우 `managed-settings.json` 또는 `managed-settings.d/`의 파일이 변경될 때만 실행합니다.

3004 3013 

3005matcher는 구성 소스를 기준으로 필터링합니다.3014matcher는 구성 소스를 기준으로 필터링합니다.

3006 3015 


3012| `policy_settings` | `managed-settings.json` 또는 `managed-settings.d/`의 파일이 변경된 경우 |3021| `policy_settings` | `managed-settings.json` 또는 `managed-settings.d/`의 파일이 변경된 경우 |

3013| `skills` | `.claude/skills/`의 스킬 파일이 변경된 경우 |3022| `skills` | `.claude/skills/`의 스킬 파일이 변경된 경우 |

3014 3023 

3015이 예시는 보안 감사를 위해 모든 구성 변경을 로그에 기록합니다.3024다음과 같은 변경은 훅을 실행하지 않고 적용됩니다.

3025 

3026* **Yes, and don't ask again**, `/permissions` 또는 `/model`로 저장한 규칙과 설정(저장한 세션 내에서). 다른 열린 세션이 같은 파일을 로드하면 해당 세션에서는 훅이 실행됩니다.

3027* [서버 관리형 설정](https://code.claude.com/docs/ko/server-managed-settings.md), macOS 관리형 환경설정 또는 Windows 레지스트리 정책의 업데이트

3028* [`wslInheritsWindowsSettings`](https://code.claude.com/docs/ko/settings-reference#wslinheritswindowssettings)를 사용하는 WSL에서 Claude Code가 정책 폴링 시 감지하는 Windows 측 관리형 설정 파일의 변경

3029 

3030다음 예시는 보안 감사를 위해 구성 변경을 로그에 기록합니다.

3016 3031 

3017```json theme={null}3032```json theme={null}

3018{3033{


3335 "hooks": [3350 "hooks": [

3336 {3351 {

3337 "type": "command",3352 "type": "command",

3338 "command": "bash -c 'jq -r .worktree_path | xargs rm -rf'"3353 "command": "bash -c 'p=$(jq -er .worktree_path) && rm -rf -- \"$p\"'"

3339 }3354 }

3340 ]3355 ]

3341 }3356 }

hooks-guide.md +4 −4

Details

50 "PostToolUse": [50 "PostToolUse": [

51 {51 {

52 "matcher": "Edit|Write",52 "matcher": "Edit|Write",

53 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" }]53 "hooks": [{ "type": "command", "command": "f=$(jq -r '.tool_input.file_path') && npx prettier --write --ignore-unknown \"$f\"" }]

54 }54 }

55 ],55 ],

56 "Notification": [56 "Notification": [


221 "hooks": [221 "hooks": [

222 {222 {

223 "type": "command",223 "type": "command",

224 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"224 "command": "f=$(jq -r '.tool_input.file_path') && npx prettier --write --ignore-unknown \"$f\""

225 }225 }

226 ]226 ]

227 }227 }


336 336 

337세션 중에 설정 파일이나 스킬 파일이 변경되는 시점을 추적합니다. `ConfigChange` 이벤트는 외부 프로세스나 편집기가 설정 파일을 수정할 때 발생하므로, 규정 준수를 위해 변경 사항을 로그에 기록하거나 승인되지 않은 수정을 차단할 수 있습니다.337세션 중에 설정 파일이나 스킬 파일이 변경되는 시점을 추적합니다. `ConfigChange` 이벤트는 외부 프로세스나 편집기가 설정 파일을 수정할 때 발생하므로, 규정 준수를 위해 변경 사항을 로그에 기록하거나 승인되지 않은 수정을 차단할 수 있습니다.

338 338 

339이 예시는 각 변경 사항을 감사 로그에 추가합니다. 다음을 `~/.claude/settings.json`에 추가하십시오.339이 예시는 각 이벤트를 감사 로그에 추가합니다. 다음 내용을 `~/.claude/settings.json`에 추가합니다:

340 340 

341```json theme={null}341```json theme={null}

342{342{


925엔드포인트는 명령 hooks와 동일한 [출력 형식](https://code.claude.com/docs/ko/hooks.md#json-output)의 JSON 본문으로 응답하며, Claude Code는 응답 상태도 확인합니다:925엔드포인트는 명령 hooks와 동일한 [출력 형식](https://code.claude.com/docs/ko/hooks.md#json-output)의 JSON 본문으로 응답하며, Claude Code는 응답 상태도 확인합니다:

926 926 

927* **2xx 상태**: 도구 호출을 차단하려면 본문에 적절한 `hookSpecificOutput` 필드를 반환합니다.927* **2xx 상태**: 도구 호출을 차단하려면 본문에 적절한 `hookSpecificOutput` 필드를 반환합니다.

928* **그 외 모든 상태 또는 요청 실패**: Claude Code는 [비차단 오류](https://code.claude.com/docs/ko/hooks.md#exit-code-output)를 보고하고 작업을 계속 진행합니다. 엔드포인트가 실패했을 때 작업을 차단하려면 hook에 [`onFailure: "block"`](https://code.claude.com/docs/ko/hooks#block-the-action-when-a-hook-fails)을 설정합니다.928* **그 외 모든 상태 또는 요청 실패**: Claude Code는 [비차단 오류](https://code.claude.com/docs/ko/hooks.md#exit-code-output)를 보고하고 작업을 계속 진행합니다. 단, 해당 hook이 [실패 시 작업을 차단하는 hook](https://code.claude.com/docs/ko/hooks.md#block-the-action-when-a-hook-fails)인 경우는 제외합니다. 엔드포인트가 실패했을 때 작업을 차단하려면 hook에 [`onFailure: "block"`](https://code.claude.com/docs/ko/hooks#block-the-action-when-a-hook-fails)을 설정합니다.

929 929 

930헤더 값은 `$VAR_NAME` 또는 `${VAR_NAME}` 구문을 사용한 환경 변수 보간을 지원합니다. `allowedEnvVars` 배열에 나열된 변수만 해결됩니다. 다른 모든 `$VAR` 참조는 비어 있습니다.930헤더 값은 `$VAR_NAME` 또는 `${VAR_NAME}` 구문을 사용한 환경 변수 보간을 지원합니다. `allowedEnvVars` 배열에 나열된 변수만 해결됩니다. 다른 모든 `$VAR` 참조는 비어 있습니다.

931 931 

Details

36| `Esc` | Claude 중단 또는 대화 상자 닫기 | 현재 응답 또는 도구 호출을 중간에 중지하여 리디렉션할 수 있습니다. Claude는 지금까지 수행한 작업을 유지합니다. [메시지가 대기 중](#queue-messages-while-claude-works)이면 Claude Code는 이어서 그 메시지를 보냅니다. 대화 상자가 열려 있으면 `Esc`는 대화 상자를 닫습니다. 푸터 항목(예: 프롬프트 아래의 [서브에이전트 패널](https://code.claude.com/docs/ko/sub-agents.md#run-subagents-in-foreground-or-background))이 선택되어 있으면 `Esc`는 중단하는 대신 [선택을 해제합니다](https://code.claude.com/docs/ko/keybindings.md#footer-actions). 권한 프롬프트에서 `Esc`는 [**No** 주석 없음](https://code.claude.com/docs/ko/permissions.md#add-a-comment-when-you-answer-a-permission-prompt)과 동일하게 작업을 거부합니다 |36| `Esc` | Claude 중단 또는 대화 상자 닫기 | 현재 응답 또는 도구 호출을 중간에 중지하여 리디렉션할 수 있습니다. Claude는 지금까지 수행한 작업을 유지합니다. [메시지가 대기 중](#queue-messages-while-claude-works)이면 Claude Code는 이어서 그 메시지를 보냅니다. 대화 상자가 열려 있으면 `Esc`는 대화 상자를 닫습니다. 푸터 항목(예: 프롬프트 아래의 [서브에이전트 패널](https://code.claude.com/docs/ko/sub-agents.md#run-subagents-in-foreground-or-background))이 선택되어 있으면 `Esc`는 중단하는 대신 [선택을 해제합니다](https://code.claude.com/docs/ko/keybindings.md#footer-actions). 권한 프롬프트에서 `Esc`는 [**No** 주석 없음](https://code.claude.com/docs/ko/permissions.md#add-a-comment-when-you-answer-a-permission-prompt)과 동일하게 작업을 거부합니다 |

37| `Esc` + `Esc` | 입력 초안 지우기 또는 되감기 | 프롬프트 입력에 텍스트가 있으면 이중 `Esc`는 이를 지우고 초안을 기록에 저장하여 `Up`이 이를 회상할 수 있습니다. 입력이 비어 있으면 이중 `Esc`는 [되감기 메뉴](https://code.claude.com/docs/ko/checkpointing.md)를 열어 이전 지점에서 코드 및 대화를 복원하거나 요약합니다 |37| `Esc` + `Esc` | 입력 초안 지우기 또는 되감기 | 프롬프트 입력에 텍스트가 있으면 이중 `Esc`는 이를 지우고 초안을 기록에 저장하여 `Up`이 이를 회상할 수 있습니다. 입력이 비어 있으면 이중 `Esc`는 [되감기 메뉴](https://code.claude.com/docs/ko/checkpointing.md)를 열어 이전 지점에서 코드 및 대화를 복원하거나 요약합니다 |

38| `Ctrl+Enter` 또는 `Ctrl+X Ctrl+S` | 대기 중인 메시지 지금 보내기 | [대기 중인 메시지](#queue-messages-while-claude-works)와 초안을 지금 바로 보냅니다. [Claude Code가 대기 중인 메시지를 보낼 때](#when-claude-code-sends-what-you-queued)는 Claude가 작업 중인 턴에 어떤 일이 발생하는지 설명합니다. [셸 모드](#shell-mode-with-prefix)에서 키는 명령만 대기열에 넣습니다. 확장 키를 보고하지 않는 터미널에서 `Ctrl+Enter`는 일반 `Enter`로 도착합니다. `Ctrl+X Ctrl+S`는 모든 터미널에서 작동합니다. Claude Code v2.1.275 이상 필요 |38| `Ctrl+Enter` 또는 `Ctrl+X Ctrl+S` | 대기 중인 메시지 지금 보내기 | [대기 중인 메시지](#queue-messages-while-claude-works)와 초안을 지금 바로 보냅니다. [Claude Code가 대기 중인 메시지를 보낼 때](#when-claude-code-sends-what-you-queued)는 Claude가 작업 중인 턴에 어떤 일이 발생하는지 설명합니다. [셸 모드](#shell-mode-with-prefix)에서 키는 명령만 대기열에 넣습니다. 확장 키를 보고하지 않는 터미널에서 `Ctrl+Enter`는 일반 `Enter`로 도착합니다. `Ctrl+X Ctrl+S`는 모든 터미널에서 작동합니다. Claude Code v2.1.275 이상 필요 |

39| `Shift+Tab` 또는 Node 또는 Bun 런타임이 VT 입력 모드를 활성화하지 않을 때 Windows의 `Alt+M` | 권한 모드 순환 | `default` (모드 표시기에서 Manual로 표시됨), `acceptEdits`, `plan` 및 사용 가능할 때 `bypassPermissions` 및 `auto`를 순환합니다. `auto`에서 첫 번째 누름은 `default`로 전환합니다. [권한 모드](https://code.claude.com/docs/ko/permission-modes.md)를 참조하세요. 파일 권한 프롬프트에서 동일한 키는 열린 [주석 필드](https://code.claude.com/docs/ko/permissions.md#add-a-comment-when-you-answer-a-permission-prompt)를 닫습니다. 필드가 열려 있지 않으면 프롬프트가 나머지 세션에 대해 작업을 허용하는 옵션을 선택합니다 |39| `Shift+Tab` 또는 Node 또는 Bun 런타임이 VT 입력 모드를 활성화하지 않을 때 Windows의 `Alt+M` | 권한 모드 순환 | `default` (모드 표시기에서 Manual로 표시됨), `acceptEdits`, `plan`을 순환한 다음, 사용 가능한 경우 `bypassPermissions` 및 `auto`를 순환합니다. [권한 모드](https://code.claude.com/docs/ko/permission-modes.md)를 참조하세요. 파일 권한 프롬프트에서 동일한 키는 열린 [주석 필드](https://code.claude.com/docs/ko/permissions.md#add-a-comment-when-you-answer-a-permission-prompt)를 닫습니다. 필드가 열려 있지 않으면, 프롬프트가 나머지 세션 동안 작업을 허용하는 옵션을 제공하는 경우 해당 옵션을 선택합니다. 계획 승인 프롬프트에서는 계획을 승인합니다 |

40| `Option+P` (macOS) 또는 `Alt+P` (Windows/Linux) | 모델 전환 | 프롬프트를 지우지 않고 모델을 전환합니다 |40| `Option+P` (macOS) 또는 `Alt+P` (Windows/Linux) | 모델 전환 | 프롬프트를 지우지 않고 모델을 전환합니다 |

41| `Option+T` (macOS) 또는 `Alt+T` (Windows/Linux) | 확장 사고 전환 | 확장 사고 모드를 활성화하거나 비활성화합니다. Opus 5.5, Sonnet 5.5, Haiku 5.5 또는 Fable 모델에는 영향을 주지 않으며, 이들은 항상 확장 사고를 사용합니다. Option을 Meta로 구성하지 않고도 macOS에서 작동합니다 |41| `Option+T` (macOS) 또는 `Alt+T` (Windows/Linux) | 확장 사고 전환 | 확장 사고 모드를 활성화하거나 비활성화합니다. Opus 5.5, Sonnet 5.5, Haiku 5.5 또는 Fable 모델에는 영향을 주지 않으며, 이들은 항상 확장 사고를 사용합니다. Option을 Meta로 구성하지 않고도 macOS에서 작동합니다 |

42| `Option+O` (macOS) 또는 `Alt+O` (Windows/Linux) | 빠른 모드 전환 | [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)를 활성화하거나 비활성화합니다 |42| `Option+O` (macOS) 또는 `Alt+O` (Windows/Linux) | 빠른 모드 전환 | [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)를 활성화하거나 비활성화합니다 |


81| :- | :- | :- |81| :- | :- | :- |

82| 빠른 탈출 | `\` + `Enter` | 모든 터미널에서 작동합니다 |82| 빠른 탈출 | `\` + `Enter` | 모든 터미널에서 작동합니다 |

83| Option 키 | `Option+Enter` | macOS에서 [Option을 Meta로](https://code.claude.com/docs/ko/terminal-config.md#enable-option-key-shortcuts-on-macos) 활성화한 후 |83| Option 키 | `Option+Enter` | macOS에서 [Option을 Meta로](https://code.claude.com/docs/ko/terminal-config.md#enable-option-key-shortcuts-on-macos) 활성화한 후 |

84| Shift+Enter | `Shift+Enter` | iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal, Windows Terminal에서 기본적으로 지원됩니다. 다른 터미널의 경우 [여러 줄 프롬프트 입력](https://code.claude.com/docs/ko/terminal-config.md#enter-multiline-prompts)을 참조하세요 |84| Shift+Enter | `Shift+Enter` | iTerm2, WezTerm, Ghostty, Kitty, Warp, Windows Terminal에서 기본적으로 지원됩니다. 다른 터미널의 경우 [여러 줄 프롬프트 입력](https://code.claude.com/docs/ko/terminal-config.md#enter-multiline-prompts)을 참조하세요 |

85| 제어 시퀀스 | `Ctrl+J` | 구성 없이 모든 터미널에서 작동합니다 |85| 제어 시퀀스 | `Ctrl+J` | 구성 없이 모든 터미널에서 작동합니다 |

86| 붙여넣기 모드 | 직접 붙여넣기 | 코드 블록, 로그의 경우 |86| 붙여넣기 모드 | 직접 붙여넣기 | 코드 블록, 로그의 경우 |

87 87 


137 137 

138`/config` → 편집기 모드에서 vim 스타일 편집을 활성화합니다.138`/config` → 편집기 모드에서 vim 스타일 편집을 활성화합니다.

139 139 

140Claude Code는 `Ctrl+O`로 [트랜스크립트 뷰어](#transcript-viewer)를 전환하거나 `/config`와 같은 패널을 열고 닫을 때 vim 모드와 커서 위치를 유지합니다. 프롬프트를 NORMAL 모드로 두면, 돌아올 때도 여전히 NORMAL 모드이며 커서는 남겨둔 위치에 있습니다.

141 

142### 모드 전환140### 모드 전환

143 141 

144| 명령어 | 작업 | 시작 모드 |142| 명령어 | 작업 | 시작 모드 |


302 * `Ctrl+C`를 눌러 취소하고 원래 입력을 복원합니다300 * `Ctrl+C`를 눌러 취소하고 원래 입력을 복원합니다

303 * 빈 검색에서 `Backspace`를 눌러 취소합니다301 * 빈 검색에서 `Backspace`를 눌러 취소합니다

304 302 

305일치 항목을 수락하거나 검색을 취소하면 Claude Code가 여전히 기록을 로드 중이더라도 즉시 적용됩니다.

306 

307오류 로그처럼 길게 붙여넣은 내용만 기억나는 이전 프롬프트를 찾으려면 `Ctrl+R`을 누르고 붙여넣은 내용에 있던 단어를 입력합니다. Claude Code v2.1.314 이상이 필요합니다.303오류 로그처럼 길게 붙여넣은 내용만 기억나는 이전 프롬프트를 찾으려면 `Ctrl+R`을 누르고 붙여넣은 내용에 있던 단어를 입력합니다. Claude Code v2.1.314 이상이 필요합니다.

308 304 

309## 백그라운드 Bash 명령어305## 백그라운드 Bash 명령어


600 596 

601### Claude Code가 밑줄을 긋는 것597### Claude Code가 밑줄을 긋는 것

602 598 

603입력을 일시 중지한 후 얼마 지나지 않아 Claude Code는 사전이 모르는 단어에 밑줄을 그을 것입니다. 아직 입력 중인 단어는 그 단어를 지나갈 때까지 그대로 두며, 텍스트를 절대 변경하지 않습니다. 또한 코드처럼 보이는 텍스트를 건너뜁니다:599입력을 일시 중지한 후 얼마 지나지 않아 Claude Code는 사전이 모르는 단어에 밑줄을 긋습니다. 아직 입력 중인 단어는 그 단어를 지나갈 때까지 그대로 둡니다. 또한 코드처럼 보이는 텍스트를 건너뜁니다:

604 600 

605* `/help`, `@` 언급, URL, 파일 경로, `--verbose`와 같은 플래그 등의 명령어601* `/help`, `@` 언급, URL, 파일 경로, `--verbose`와 같은 플래그 등의 명령어

606* 숫자, 밑줄, 또는 첫 번째 이후의 대문자가 있는 단어, 그리고 백틱 안의 텍스트602* 숫자, 밑줄, 또는 첫 번째 이후의 대문자가 있는 단어, 그리고 백틱 안의 텍스트

keybindings.md +7 −2

Details

581 581 

582Claude Code는 `ctrl+x` 접두사에서 컨텍스트별로 다음과 같은 기본 코드를 바인딩합니다:582Claude Code는 `ctrl+x` 접두사에서 컨텍스트별로 다음과 같은 기본 코드를 바인딩합니다:

583 583 

584* `Chat`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, `ctrl+x ctrl+s`, `ctrl+x tab`584* `Chat`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, `ctrl+x ctrl+s`, `ctrl+x tab`, `ctrl+x ctrl+=`, `ctrl+x ctrl+-`, `ctrl+x ctrl+_`, `ctrl+x =`, `ctrl+x -`

585* `Task`: `ctrl+x ctrl+b`585* `Task`: `ctrl+x ctrl+b`

586* `DiffPanel`: `ctrl+x b`586* `DiffPanel`: `ctrl+x b`

587* `Pane`: `ctrl+x left`, `ctrl+x right`, `ctrl+x up`, `ctrl+x down`, `ctrl+x x`587* `Pane`: `ctrl+x left`, `ctrl+x right`, `ctrl+x up`, `ctrl+x down`, `ctrl+x x`


631 "ctrl+x ctrl+a": null,631 "ctrl+x ctrl+a": null,

632 "ctrl+x ctrl+s": null,632 "ctrl+x ctrl+s": null,

633 "ctrl+x tab": null,633 "ctrl+x tab": null,

634 "ctrl+x ctrl+=": null,

635 "ctrl+x ctrl+-": null,

636 "ctrl+x ctrl+_": null,

637 "ctrl+x =": null,

638 "ctrl+x -": null,

634 "ctrl+x": "chat:newline"639 "ctrl+x": "chat:newline"

635 }640 }

636 }641 }


716Claude Code는 키보드 단축키의 유효성을 검사하며, 다음과 같은 경우 디버그 로그에 경고를 기록합니다.721Claude Code는 키보드 단축키의 유효성을 검사하며, 다음과 같은 경우 디버그 로그에 경고를 기록합니다.

717 722 

718* 구문 분석 오류(잘못된 JSON 또는 구조)723* 구문 분석 오류(잘못된 JSON 또는 구조)

719* `ctl+k`와 같이 철자가 잘못된 수정자 키. Claude Code는 인식하지 못하는 부분을 제외하고 나머지 키 입력(이 예에서는 `k`)에 바인딩을 적용합니다.724* `ctl+k`와 같이 철자가 잘못된 수정자 키. Claude Code는 해당 바인딩 전체를 무시합니다. 수정자 키를 올바르게 고치세요. 이 예에서는 `ctrl+k`로 수정합니다.

720* `ctrl+ k`와 같이 키 문자열에서 `+` 옆에 공백이 있는 경우. Claude Code는 이 문자열을 `ctrl+` 다음에 `k`가 오는 [코드](#chords)로 읽습니다. `ctrl+` 단독과 일치하는 키 입력은 없으므로 이 바인딩은 절대 실행되지 않습니다. 공백을 제거하세요.725* `ctrl+ k`와 같이 키 문자열에서 `+` 옆에 공백이 있는 경우. Claude Code는 이 문자열을 `ctrl+` 다음에 `k`가 오는 [코드](#chords)로 읽습니다. `ctrl+` 단독과 일치하는 키 입력은 없으므로 이 바인딩은 절대 실행되지 않습니다. 공백을 제거하세요.

721* 잘못된 컨텍스트 이름726* 잘못된 컨텍스트 이름

722* 문자열도 `null`도 아닌 작업과 같은 잘못된 작업 값727* 문자열도 `null`도 아닌 작업과 같은 잘못된 작업 값

llm-gateway.md +4 −0

Details

43 43 

44`ANTHROPIC_BASE_URL`을 통해 도달한 gateway를 관리되는 머신이 사용할 수 있는 유일한 대상으로 만들려면, 동일한 관리되는 설정 파일에서 [`allowedProviders`](https://code.claude.com/docs/ko/settings-reference#allowedproviders)를 `["customEndpoint"]`로 설정하고 gateway의 `ANTHROPIC_BASE_URL`을 해당 파일의 `env` 블록에 넣습니다. Claude Code는 Anthropic에 직접 또는 개발자의 자체 프록시를 포함하여 다른 곳을 가리키는 세션을 거부하고, `ANTHROPIC_BASE_URL`을 해당 파일에 설정한 값으로만 수락합니다. `ANTHROPIC_BEDROCK_BASE_URL`과 같은 공급자별 엔드포인트 변수를 통해 도달한 gateway의 경우, `allowedProviders` 항목은 어느 변수를 고정할지 나타냅니다. Claude Code v2.1.285 이상이 필요합니다.44`ANTHROPIC_BASE_URL`을 통해 도달한 gateway를 관리되는 머신이 사용할 수 있는 유일한 대상으로 만들려면, 동일한 관리되는 설정 파일에서 [`allowedProviders`](https://code.claude.com/docs/ko/settings-reference#allowedproviders)를 `["customEndpoint"]`로 설정하고 gateway의 `ANTHROPIC_BASE_URL`을 해당 파일의 `env` 블록에 넣습니다. Claude Code는 Anthropic에 직접 또는 개발자의 자체 프록시를 포함하여 다른 곳을 가리키는 세션을 거부하고, `ANTHROPIC_BASE_URL`을 해당 파일에 설정한 값으로만 수락합니다. `ANTHROPIC_BEDROCK_BASE_URL`과 같은 공급자별 엔드포인트 변수를 통해 도달한 gateway의 경우, `allowedProviders` 항목은 어느 변수를 고정할지 나타냅니다. Claude Code v2.1.285 이상이 필요합니다.

45 45 

46> [!NOTE]

47>

48> Desktop이 claude.ai에 로그인된 상태에서는 사용자 머신의 Cowork 세션이 [`"anthropic"`](https://code.claude.com/docs/ko/settings-reference#allowedproviders)으로 간주됩니다. MDM 정책 또는 관리형 설정 파일에서 이 목록에 이를 포함하지 않으면 해당 세션이 거부됩니다. 포함하면 Anthropic으로 직접 전송되는 세션도 이 목록을 통과합니다.

49 

46## 구독 및 gateway50## 구독 및 gateway

47 51 

48[gateway 자격 증명 변수](https://code.claude.com/docs/ko/llm-gateway-connect.md#set-the-credential-variable) 또는 `apiKeyHelper`가 활성화되어 있는 동안 요청은 개발자의 claude.ai 구독 로그인 대신 해당 자격 증명을 전달하며, 구독의 사용량 제한이 적용되지 않습니다. Claude Code는 머신에 저장된 claude.ai 로그인을 유지하지만 해당 요청과 함께 전송하지 않습니다. 해당 트래픽은 gateway가 전달하는 자격 증명의 소유자(예: 조직의 Anthropic Console 계정 또는 gateway가 그곳으로 라우팅할 때 Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry 계정)에게 토큰당 청구됩니다.52[gateway 자격 증명 변수](https://code.claude.com/docs/ko/llm-gateway-connect.md#set-the-credential-variable) 또는 `apiKeyHelper`가 활성화되어 있는 동안 요청은 개발자의 claude.ai 구독 로그인 대신 해당 자격 증명을 전달하며, 구독의 사용량 제한이 적용되지 않습니다. Claude Code는 머신에 저장된 claude.ai 로그인을 유지하지만 해당 요청과 함께 전송하지 않습니다. 해당 트래픽은 gateway가 전달하는 자격 증명의 소유자(예: 조직의 Anthropic Console 계정 또는 gateway가 그곳으로 라우팅할 때 Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry 계정)에게 토큰당 청구됩니다.

Details

36 36 

37`/status` 메뉴의 두 줄이 모두 올바르지만 Claude로의 메시지가 실패하면 [문제 해결 표](#troubleshoot-gateway-errors)를 참조하세요.37`/status` 메뉴의 두 줄이 모두 올바르지만 Claude로의 메시지가 실패하면 [문제 해결 표](#troubleshoot-gateway-errors)를 참조하세요.

38 38 

39## Claude Code 직접 구성39## Claude Code 직접 구성하기

40 40 

41게이트웨이에 대해 Claude Code를 직접 구성하려면 게이트웨이 팀에서 다음이 필요합니다:41게이트웨이용 Claude Code를 직접 구성하려면 게이트웨이 팀으로부터 다음 정보를 받아야 합니다.

42 42 

43* 게이트웨이의 기본 URL43* 게이트웨이의 기본 URL

44* 자격 증명: 키 또는 토큰 문자열, 또는 하나를 가져오는 명령44* 자격 증명: 키 또는 토큰 문자열, 또는 이를 가져오는 명령

45 * 게이트웨이 팀이 어떤 종류의 자격 증명인지 말하지 않았다면, 아래의 [자격 증명 변수 섹션](#set-the-credential-variable)에서 시도할 것을 다룹니다.45 * 게이트웨이 팀이 자격 증명의 종류를 알려주지 않았다면, 아래의 [자격 증명 변수 섹션](#set-the-credential-variable)에서 시도해 볼 방법을 안내합니다

46 46 

47아래 섹션은 순서대로 구성을 다룹니다:47아래 섹션에서는 구성을 순서대로 다룹니다.

48 48 

49* [자격 증명 변수 설정](#set-the-credential-variable) 및 [기본 URL 설정](#set-the-base-url-and-credential): 모든 게이트웨이 연결에 필요한 두 변수49* [자격 증명 변수 설정](#set-the-credential-variable) 및 [기본 URL 설정](#set-the-base-url-and-credential): 모든 게이트웨이 연결에 필요한 두 가지 변수

50* [연결 확인](#verify-the-connection): 무엇이든 유지하기 전에 작동하는지 확인50* [연결 확인](#verify-the-connection): 값을 영구적으로 저장하기 전에 연결이 작동하는지 확인

51* [각 표면 구성](#configure-each-surface): Claude Code CLI 외에 VS Code와 같은 다른 표면을 사용하는 경우, 게이트웨이 자격 증명으로 구성하는 방법을 참조하세요.51* [각 사용 환경 구성](#configure-each-surface): VS Code 등 Claude Code CLI 이외의 사용 환경을 사용하는 경우, 게이트웨이 자격 증명으로 해당 환경을 구성하는 방법 확인

52* [추가 구성](#additional-configuration): 기본 URL과 자격 증명 외에 일부 게이트웨이가 필요로 하는 변수(예: 사용자 정의 헤더, 자격 증명 도우미, 모델 검색, 제공자 형식 기본 URL 또는 게이트웨이 경로 외부의 트래픽 끄기). 관리자가 명시한 경우에만 이를 설정하거나 네트워크가 송신을 제한합니다.52* [추가 구성](#additional-configuration): 일부 게이트웨이에서 기본 URL과 자격 증명 외에 필요로 하는 변수(사용자 지정 헤더, 자격 증명 헬퍼, 모델 검색, 제공자 형식 기본 URL, 게이트웨이 경로 외부 트래픽 비활성화 등). 관리자가 지정했거나 네트워크에서 외부 송신(egress)을 제한하는 경우에만 설정합니다

53 53 

54### 자격 증명 변수 설정54### 자격 증명 변수 설정

55 55 

56Claude Code를 게이트웨이에 인증하려면 환경 변수에 자격 증명을 설정합니다. 어떤 변수를 사용할지는 게이트웨이 팀이 말한 것에 따라 다릅니다:56Claude Code가 게이트웨이에 인증하도록 하려면 환경 변수에 자격 증명을 설정합니다. 어떤 변수를 사용할지는 게이트웨이 팀이 안내한 내용에 따라 다릅니다.

57 57 

58| 자격 증명 설정 위치 | 사용 시기 |58| 자격 증명을 설정할 위치 | 사용하는 경우 |

59| :- | :- |59| :- | :- |

60| `ANTHROPIC_AUTH_TOKEN` | 게이트웨이 팀이 "bearer token" 또는 "Authorization header"라고 말했을 때 |60| `ANTHROPIC_AUTH_TOKEN` | 게이트웨이 팀이 "bearer token" 또는 "Authorization header"라고 안내한 경우 |

61| `ANTHROPIC_API_KEY` | 게이트웨이 팀이 "API key" 또는 "x-api-key"라고 말했을 때 |61| `ANTHROPIC_API_KEY` | 게이트웨이 팀이 "API key" 또는 "x-api-key"라고 안내한 경우 |

62| [`apiKeyHelper`](#rotate-credentials-with-apikeyhelper) | 자격 증명이 회전하거나 자격 증명 모음에서 나올 때 |62| [`apiKeyHelper`](#rotate-credentials-with-apikeyhelper) | 자격 증명이 교체(rotate)되거나 볼트(vault)에서 가져오는 경우 |

63 63 

64어떤 종류인지 말하지 않았다면 `ANTHROPIC_AUTH_TOKEN`을 사용하세요. 아래의 [확인 요청](#verify-the-connection)은 전환이 필요한지 확인하는 방법을 보여줍니다.64종류를 안내받지 못했다면 `ANTHROPIC_AUTH_TOKEN`을 사용합니다. 아래의 [확인 요청](#verify-the-connection)에서 변수를 바꿔야 하는지 판단하는 방법을 설명합니다.

65 65 

66### 기본 URL과 자격 증명 설정66### 기본 URL 및 자격 증명 설정

67 67 

68게이트웨이의 기본 URL과 위에서 선택한 자격 증명 변수를 환경 변수로 설정합니다. 예제는 `ANTHROPIC_AUTH_TOKEN`을 사용합니다. [선택한 변수](#set-the-credential-variable)가 `ANTHROPIC_API_KEY`라면 이를 바꾸세요. [셸에서](#set-as-shell-environment-variables) 설정할 수 있으며, 이는 한 터미널 세션 동안 지속되거나, [Claude Code 설정 파일에서](#set-in-a-settings-file) 설정할 수 있으며, 이는 Claude Code가 실행되는 모든 곳에서 지속됩니다.68게이트웨이의 기본 URL과 위에서 선택한 자격 증명 변수를 환경 변수로 설정합니다. 예시에서는 `ANTHROPIC_AUTH_TOKEN`을 사용하며, [선택한 변수](#set-the-credential-variable)가 `ANTHROPIC_API_KEY`라면 해당 변수로 바꿔서 사용합니다. 하나의 터미널 세션 동안만 유지되는 [셸에서 설정](#set-as-shell-environment-variables)하거나, Claude Code가 실행되는 모든 곳에서 유지되는 [Claude Code 설정 파일에서 설정](#set-in-a-settings-file)할 수 있습니다.

69 69 

70첫 번째 연결의 경우, 셸 내보내기로 시작하고 값을 설정 파일로 이동하기 전에 [확인 요청](#verify-the-connection)을 실행합니다.70처음 연결할 때는 셸 export로 시작하고, 값을 설정 파일로 옮기기 전에 [확인 요청](#verify-the-connection)을 실행합니다.

71 71 

72#### 셸 환경 변수로 설정72#### 셸 환경 변수로 설정

73 73 

74값을 게이트웨이 팀이 제공한 값으로 바꾸세요:74값을 게이트웨이 팀이 제공한 값으로 바꿉니다.

75 75 

76> [tab] Bash 또는 Zsh76> [tab] Bash or Zsh

77>77>

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

79> export ANTHROPIC_BASE_URL=https://llm-gateway.example.com79> export ANTHROPIC_BASE_URL=https://llm-gateway.example.com


87> $env:ANTHROPIC_AUTH_TOKEN = "sk-gateway-key"87> $env:ANTHROPIC_AUTH_TOKEN = "sk-gateway-key"

88> ```88> ```

89 89 

90셸 내보내기는 해당 터미널 세션과 그로부터 시작된 프로그램에만 적용됩니다. 도크 또는 시작 메뉴에서 시작된 편집기는 이를 볼 수 없습니다. 새 터미널에서 지속되도록 하려면 `~/.zshrc`, `~/.bashrc` 또는 PowerShell `$PROFILE`과 같은 셸 프로필에 동일한 줄을 추가하세요.90셸 export는 해당 터미널 세션과 그 세션에서 시작된 프로그램에만 적용됩니다. Dock이나 시작 메뉴에서 실행한 편집기에서는 이 값을 인식하지 못합니다. 새 터미널에서도 값이 유지되도록 하려면 `~/.zshrc`, `~/.bashrc` 또는 PowerShell `$PROFILE`과 같은 셸 프로필에 같은 줄을 추가합니다.

91 91 

92게이트웨이를 셸에서만 내보내면 [supervisor](https://code.claude.com/docs/ko/agent-view.md#how-background-sessions-are-hosted)에서 호스팅하는 백그라운드 에이전트에 안정적으로 도달하지 않습니다. [각 백그라운드 세션이 게이트웨이를 소싱하는 방식](https://code.claude.com/docs/ko/agent-view.md#llm-gateway)을 참조하세요. 백그라운드 에이전트가 항상 라우팅해야 하는 게이트웨이의 경우 설정 파일을 사용하세요.92게이트웨이를 셸에서만 export하면 [슈퍼바이저](https://code.claude.com/docs/ko/agent-view.md#how-background-sessions-are-hosted)가 호스팅하는 백그라운드 에이전트에 안정적으로 전달되지 않습니다. [각 백그라운드 세션이 게이트웨이를 가져오는 방식](https://code.claude.com/docs/ko/agent-view.md#llm-gateway)을 참조하세요. 백그라운드 에이전트가 항상 경유해야 하는 게이트웨이에는 설정 파일을 사용합니다.

93 93 

94#### 설정 파일에서 설정94#### 설정 파일에서 설정

95 95 

96Claude Code가 실행되는 모든 곳에서 구성이 적용되도록 하려면([백그라운드 에이전트](https://code.claude.com/docs/ko/agent-view.md#how-background-sessions-are-hosted) 포함), [설정 파일](https://code.claude.com/docs/ko/settings.md)의 `env` 블록에서 변수를 설정하세요. 설정 파일은 다양한 범위를 가집니다:96[백그라운드 에이전트](https://code.claude.com/docs/ko/agent-view.md#how-background-sessions-are-hosted)를 포함해 Claude Code가 실행되는 모든 곳에 구성을 적용하려면, 셸에 의존하는 대신 [설정 파일](https://code.claude.com/docs/ko/settings.md)의 `env` 블록에 변수를 설정합니다. 설정 파일마다 범위가 다릅니다.

97 97 

98* `~/.claude/settings.json`은 모든 프로젝트에 적용됩니다. Windows에서 경로는 `%USERPROFILE%\.claude\settings.json`입니다.98* `~/.claude/settings.json`은 모든 프로젝트에 적용됩니다. Windows에서의 경로는 `%USERPROFILE%\.claude\settings.json`입니다

99* `.claude/settings.local.json`은 한 프로젝트에 적용됩니다. Claude Code는 파일을 생성할 때 이를 gitignore에 추가합니다. 직접 생성하는 경우, 자격 증명을 실수로 커밋하지 않도록 먼저 gitignore에 수동으로 추가합니다.99* `.claude/settings.local.json`은 하나의 프로젝트에 적용됩니다. Claude Code가 이 파일에 설정을 저장할 때 전역 gitignore에 이 파일을 추가합니다. 파일을 직접 만들거나 Claude에게 작성하도록 하는 경우에는 실수로 자격 증명을 커밋하지 않도록 먼저 직접 gitignore에 추가합니다

100 100 

101> [!WARNING]101> [!WARNING]

102>102>

103> 프로젝트의 `.claude/settings.json`에 자격 증명을 넣지 마세요. 이 파일은 커밋되고 저장소를 복제하는 모든 사람과 공유됩니다.103> 프로젝트의 `.claude/settings.json`에 자격 증명을 넣지 마세요. 이 파일은 커밋되어 저장소를 클론하는 모든 사람과 공유됩니다.

104 104 

105`env` 블록은 두 파일 모두에서 동일하게 보입니다:105`env` 블록은 두 파일 모두에서 동일한 형태입니다.

106 106 

107```json theme={null}107```json theme={null}

108{108{


113}113}

114```114```

115 115 

116셸 내보내기와 설정 파일 `env` 블록이 동일한 변수를 설정할 때, 설정 파일 값이 적용됩니다. `/status`를 실행하여 Claude Code가 사용 중인 기본 URL과 자격 증명 소스를 확인합니다.116셸 export와 설정 파일의 `env` 블록이 같은 변수를 설정하면 설정 파일의 값이 적용됩니다. `/status`를 실행하면 Claude Code가 사용 중인 기본 URL과 자격 증명 소스를 확인할 수 있습니다.

117 117 

118### 연결 확인118### 연결 확인

119 119 

120셸에서 변수를 내보낸 상태에서, 게이트웨이에 한 토큰 요청을 직접 전송합니다. 이는 Claude Code를 열기 전에 URL과 자격 증명이 작동하는지 확인하므로, 실패는 구성이 아닌 게이트웨이를 가리킵니다. 아래 명령은 셸 변수를 읽으므로, 설정 파일에도 값을 넣었더라도 [셸 내보내기](#set-as-shell-environment-variables)가 필요합니다.120셸에 변수를 export한 상태에서 게이트웨이에 직접 1토큰 요청을 보냅니다. 이렇게 하면 Claude Code를 열기 전에 URL과 자격 증명이 작동하는지 확인할 수 있으므로, 실패할 경우 구성이 아닌 게이트웨이 쪽 문제임을 알 수 있습니다. 아래 명령은 셸 변수를 읽으므로, 설정 파일에도 값을 넣었더라도 [셸 export](#set-as-shell-environment-variables)가 필요합니다.

121 121 

122> [tab] Bash 또는 Zsh122> [tab] Bash or Zsh

123>123>

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

125> curl -sS -w '\n%{http_code}\n' -X POST "$ANTHROPIC_BASE_URL/v1/messages" \125> curl -sS -w '\n%{http_code}\n' -X POST "$ANTHROPIC_BASE_URL/v1/messages" \


138> -Body '{"model": "claude-sonnet-4-6", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'138> -Body '{"model": "claude-sonnet-4-6", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'

139> ```139> ```

140 140 

141게이트웨이가 `x-api-key` 헤더의 키를 예상하면, Bash 명령에서 `Authorization` 헤더를 `x-api-key: $ANTHROPIC_API_KEY`로 바꾸거나, PowerShell 명령에서 `"Authorization"` 해시테이블 항목을 `"x-api-key" = "$env:ANTHROPIC_API_KEY"`로 바꾸세요.141게이트웨이가 `x-api-key` 헤더로 키를 받는 경우, Bash 명령에서는 `Authorization` 헤더를 `x-api-key: $ANTHROPIC_API_KEY`로, PowerShell 명령에서는 `"Authorization"` 해시테이블 항목을 `"x-api-key" = "$env:ANTHROPIC_API_KEY"`로 바꿉니다.

142 142 

143`{"id":"msg_`로 시작하고 `"content":[...]` 필드를 포함하는 JSON 응답은 게이트웨이에 도달할 수 있고 자격 증명이 작동함을 의미합니다. 알 수 없는 모델을 명시하는 오류는 게이트웨이가 모델 이름을 거부하기 전에 요청을 인증했으므로 URL과 자격 증명이 작동함을 증명합니다. 게이트웨이가 제공하는 모델을 찾을 필요가 없습니다. `401`은 자격 증명이 거부되었음을 의미합니다. 변수를 추측했다면 다른 변수로 전환하고 다시 내보내세요.143`{"id":"msg_`로 시작하고 `"content":[...]` 필드를 포함하는 JSON 응답이 반환되면 게이트웨이에 연결할 수 있고 자격 증명이 작동한다는 의미입니다. 알 수 없는 모델이라는 오류가 반환되더라도 URL과 자격 증명이 작동한다는 것이 확인됩니다. 게이트웨이가 모델 이름을 거부하기 전에 요청을 인증했기 때문입니다. 이 테스트를 위해 게이트웨이가 제공하는 모델을 찾을 필요는 없습니다. `401`은 자격 증명이 거부되었다는 의미입니다. 변수를 추측해서 설정했다면 다른 변수로 바꾸고 다시 export합니다.

144 144 

145#### Claude Code에서 확인145#### Claude Code에서 확인

146 146 

147같은 셸에서 `claude`를 시작하여 내보내기를 상속받고, 메시지를 전송하고, `/status`를 실행합니다.147export가 상속되도록 같은 셸에서 `claude`를 시작하고, 메시지를 보낸 다음 `/status`를 실행합니다.

148 148 

149**상태** 탭에서 `Anthropic base URL` 줄은 게이트웨이 주소를 표시해야 하며, 이는 요청이 그곳으로 라우팅되고 있음을 확인합니다. 줄이 없으면 변수가 세션에 도달하지 않았습니다. `Auth token` 또는 `API key` 줄이 설정한 변수를 명시하면 저장된 claude.ai 로그인이 아닌 게이트웨이 자격 증명이 활성화되어 있음을 확인합니다.149**Status** 탭의 `Anthropic base URL` 줄에 게이트웨이 주소가 표시되어야 하며, 이는 요청이 해당 게이트웨이로 라우팅되고 있음을 확인해 줍니다. 이 줄이 없다면 변수가 세션에 전달되지 않은 것입니다. 설정한 변수를 나타내는 `Auth token` 또는 `API key` 줄은 저장된 claude.ai 로그인이 아닌 게이트웨이 자격 증명이 활성화되어 있음을 확인해 줍니다.

150 150 

151메시지가 실패하거나 `/status`가 게이트웨이 URL을 표시하지 않으면, 아래의 [문제 해결 표](#troubleshoot-gateway-errors)를 참조하세요.151메시지 전송이 실패하거나 `/status`에 게이트웨이 URL이 표시되지 않으면 아래의 [문제 해결 표](#troubleshoot-gateway-errors)를 참조하세요.

152 152 

153### 자격 증명 변수가 헤더에 매핑되는 방식153### 자격 증명 변수와 헤더의 대응 관계

154 154 

155각 변수는 자격 증명을 다른 HTTP 헤더로 전송합니다: `ANTHROPIC_AUTH_TOKEN`은 `Authorization: Bearer`로, `ANTHROPIC_API_KEY`는 `x-api-key`로, `apiKeyHelper`는 둘 다로 전송합니다. 잘못된 변수의 자격 증명은 게이트웨이가 읽지 않는 헤더에 도달하고, 요청은 `401`로 실패합니다. 확인 요청이 `401`을 반환했다면 다른 변수로 전환하고 다시 시도하세요.155각 변수는 서로 다른 HTTP 헤더로 자격 증명을 전송합니다. `ANTHROPIC_AUTH_TOKEN`은 `Authorization: Bearer`로, `ANTHROPIC_API_KEY`는 `x-api-key`로, `apiKeyHelper`는 두 헤더 모두로 전송합니다. 잘못된 변수에 넣은 자격 증명은 게이트웨이가 읽지 않는 헤더로 전달되므로 요청이 `401`로 실패합니다. 확인 요청이 `401`을 반환했다면 다른 변수로 바꿔서 다시 시도합니다.

156 156 

157### 기존 로그인과의 충돌157### 기존 로그인과의 충돌

158 158 

159게이트웨이 자격 증명 변수는 저장된 claude.ai 로그인 또는 Console 키보다 우선합니다. `ANTHROPIC_AUTH_TOKEN`을 사용하면 변수가 즉시 우선합니다. `ANTHROPIC_API_KEY`를 사용하면 대화형 모드에서 키가 인수하기 전에 한 번 승인하도록 요청받습니다.159요청에는 저장된 claude.ai 로그인이 아닌 게이트웨이 자격 증명 변수가 사용됩니다. `ANTHROPIC_AUTH_TOKEN`을 사용하면 변수가 즉시 우선 적용됩니다. `ANTHROPIC_API_KEY`를 사용하면 키가 적용되기 전에 대화형 모드에서 키를 승인하라는 메시지가 한 번 표시됩니다.

160 160 

161`/status`를 실행하여 어떤 자격 증명 소스가 활성화되어 있는지 확인합니다. 시작 시 두 소스를 명시하는 인증 충돌 경고가 표시되면, [문제 해결 표](#troubleshoot-gateway-errors)의 첫 번째 행을 참조하여 어느 것을 제거할지 확인합니다. 저장된 로그인을 지워 게이트웨이 자격 증명만 남기려면 `/logout`을 실행합니다.161`/status`를 실행하여 어떤 자격 증명 소스가 활성화되어 있는지 확인합니다. 시작 시 두 소스를 명시하는 인증 충돌 경고가 표시되면 [문제 해결 표](#troubleshoot-gateway-errors)의 첫 번째 행에서 어느 쪽을 제거해야 하는지 확인하세요. 게이트웨이 자격 증명만 남도록 저장된 로그인을 지우려면 `/logout`을 실행합니다.

162 162 

163## 각 표면 구성163## 각 표면 구성

164 164 


506 506 

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

508| :- | :- | :- |508| :- | :- | :- |

509| 두 개의 자격 증명 출처를 명시하고 `auth may not work as expected`로 끝나는 시작 시 경고. 이전 버전에서는 대신 `Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set`가 표시됩니다. | 게이트웨이 자격 증명과 저장된 로그인이 모두 활성화되어 있습니다. 요청에는 변수가 사용되지만, 오래된 로그인으로 인해 예기치 않은 인증 동작이 발생할 수 있습니다 | 저장된 로그인을 사용하려면 변수를 해제하고, 게이트웨이 자격 증명을 사용하려면 `/logout`을 실행합니다 |509| 두 개의 자격 증명 출처를 명시하고 `auth may not work as expected`로 끝나는 시작 시 경고. 이전 버전에서는 대신 `Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set`가 표시됩니다. | 게이트웨이 자격 증명과 저장된 로그인이 모두 활성화되어 있습니다 | 저장된 로그인을 사용하려면 변수를 해제하고, 게이트웨이 자격 증명을 사용하려면 `/logout`을 실행합니다 |

510| 유효하지 않거나 인식되지 않는 토큰을 명시하는 `401` 오류 | 자격 증명이 게이트웨이에서 발급한 것이 아니거나, 게이트웨이가 읽지 않는 헤더에 들어 있습니다 | [자격 증명 표](#set-the-credential-variable)에서 변수가 자격 증명 종류와 일치하는지 확인하고, 키가 폐기된 경우 게이트웨이에서 키를 다시 생성합니다 |510| 유효하지 않거나 인식되지 않는 토큰을 명시하는 `401` 오류 | 자격 증명이 게이트웨이에서 발급한 것이 아니거나, 게이트웨이가 읽지 않는 헤더에 들어 있습니다 | [자격 증명 표](#set-the-credential-variable)에서 변수가 자격 증명 종류와 일치하는지 확인하고, 키가 폐기된 경우 게이트웨이에서 키를 다시 생성합니다 |

511| `Your apiKeyHelper script is failing`, 또는 비대화형 모드에서 stderr에 출력되는 `apiKeyHelper failed:` | [`apiKeyHelper`](https://code.claude.com/docs/ko/settings-reference#apikeyhelper) 설정의 명령이 사용 가능한 키를 생성하지 못해 요청에 자리 표시자 키가 담깁니다 | 명령을 직접 실행하여 실패 원인을 확인하고, 세션 만료가 보고되면 자격 증명 제공자에서 다시 인증합니다. [오류 참조](https://code.claude.com/docs/ko/errors.md#your-apikeyhelper-script-is-failing)를 참조하세요 |511| `Your apiKeyHelper script is failing`, 또는 비대화형 모드에서 stderr에 출력되는 `apiKeyHelper failed:` | [`apiKeyHelper`](https://code.claude.com/docs/ko/settings-reference#apikeyhelper) 설정의 명령이 사용 가능한 키를 생성하지 못해 요청에 자리 표시자 키가 담깁니다 | 명령을 직접 실행하여 실패 원인을 확인하고, 세션 만료가 보고되면 자격 증명 제공자에서 다시 인증합니다. [오류 참조](https://code.claude.com/docs/ko/errors.md#your-apikeyhelper-script-is-failing)를 참조하세요 |

512| 주소에서 아무것도 응답하지 않을 때의 `Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)`, 또는 호스트 이름이 확인되지 않을 때의 `Can't reach the API server — check your internet or DNS (ENOTFOUND)`. Claude Code가 [백오프를 적용해 재시도](https://code.claude.com/docs/ko/errors.md#automatic-retries)하는 동안 아무 표시 없이 잠시 멈춘 후에 나타나는 경우가 많습니다. 괄호 안의 코드는 다를 수 있으며, [Unable to connect to API](https://code.claude.com/docs/ko/errors.md#unable-to-connect-to-api)에서 코드 표기와 이전 문구를 다룹니다 | 기본 URL에서 아무것도 응답하지 않았습니다. 주소가 잘못되었거나 VPN 또는 방화벽이 게이트웨이로 가는 경로를 차단하고 있습니다 | [위의 curl 테스트](#verify-the-connection)를 실행하면 같은 원인으로 즉시 실패합니다. 게이트웨이 팀과 함께 URL과 네트워크 경로를 확인합니다 |512| 주소에서 아무것도 응답하지 않을 때의 `Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)`, 또는 호스트 이름이 확인되지 않을 때의 `Can't reach the API server — check your internet or DNS (ENOTFOUND)`. Claude Code가 [백오프를 적용해 재시도](https://code.claude.com/docs/ko/errors.md#automatic-retries)하는 동안 아무 표시 없이 잠시 멈춘 후에 나타나는 경우가 많습니다. 괄호 안의 코드는 다를 수 있으며, [Unable to connect to API](https://code.claude.com/docs/ko/errors.md#unable-to-connect-to-api)에서 코드 표기와 이전 문구를 다룹니다 | 기본 URL에서 아무것도 응답하지 않았습니다. 주소가 잘못되었거나 VPN 또는 방화벽이 게이트웨이로 가는 경로를 차단하고 있습니다 | [위의 curl 테스트](#verify-the-connection)를 실행하면 같은 원인으로 즉시 실패합니다. 게이트웨이 팀과 함께 URL과 네트워크 경로를 확인합니다 |


520| 추론 요청은 작동하는데 `/fast`가 `Fast mode unavailable due to network connectivity issues`를 보고함 | [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md) 가용성 확인은 `api.anthropic.com`으로 직접 전송되며 `ANTHROPIC_BASE_URL`을 따르지 않으므로, 직접 송신이 차단되면 확인이 실패합니다 | 송신이 차단된 경우 `api.anthropic.com`을 허용 목록에 추가하거나 건너뛰기 변수를 설정합니다. [프록시 및 LLM 게이트웨이 뒤에서 빠른 모드 사용](https://code.claude.com/docs/ko/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)을 참조하세요 |520| 추론 요청은 작동하는데 `/fast`가 `Fast mode unavailable due to network connectivity issues`를 보고함 | [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md) 가용성 확인은 `api.anthropic.com`으로 직접 전송되며 `ANTHROPIC_BASE_URL`을 따르지 않으므로, 직접 송신이 차단되면 확인이 실패합니다 | 송신이 차단된 경우 `api.anthropic.com`을 허용 목록에 추가하거나 건너뛰기 변수를 설정합니다. [프록시 및 LLM 게이트웨이 뒤에서 빠른 모드 사용](https://code.claude.com/docs/ko/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)을 참조하세요 |

521| `ANTHROPIC_API_KEY`에 게이트웨이 발급 키를 사용해 인증하는 세션에서 `/fast`가 `Fast mode is currently unavailable`를 보고함 | `ANTHROPIC_BASE_URL`이 게이트웨이를 가리키고 키가 Anthropic API 키 형식이 아닌 동안에는 Claude Code가 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md) 가용성 확인을 보내지 않습니다. 이전에 성공한 확인이 캐시되어 있지 않으면 Claude Code는 빠른 모드를 사용할 수 없는 것으로 간주합니다 | `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`을 설정합니다. [프록시 및 LLM 게이트웨이 뒤에서 빠른 모드 사용](https://code.claude.com/docs/ko/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)을 참조하세요 |521| `ANTHROPIC_API_KEY`에 게이트웨이 발급 키를 사용해 인증하는 세션에서 `/fast`가 `Fast mode is currently unavailable`를 보고함 | `ANTHROPIC_BASE_URL`이 게이트웨이를 가리키고 키가 Anthropic API 키 형식이 아닌 동안에는 Claude Code가 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md) 가용성 확인을 보내지 않습니다. 이전에 성공한 확인이 캐시되어 있지 않으면 Claude Code는 빠른 모드를 사용할 수 없는 것으로 간주합니다 | `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`을 설정합니다. [프록시 및 LLM 게이트웨이 뒤에서 빠른 모드 사용](https://code.claude.com/docs/ko/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)을 참조하세요 |

522| 조직에서 빠른 모드를 활성화했는데도 `ANTHROPIC_AUTH_TOKEN`으로 인증한 세션에서 `/fast`가 `Fast mode has been disabled by your organization`를 보고함 | 가용성 확인에는 claude.ai 로그인 또는 API 키가 필요합니다. bearer 토큰만 있으면 Claude Code는 확인을 보내지 않고 빠른 모드를 비활성화된 것으로 간주합니다 | `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`을 설정합니다. [프록시 및 LLM 게이트웨이 뒤에서 빠른 모드 사용](https://code.claude.com/docs/ko/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)을 참조하세요 |522| 조직에서 빠른 모드를 활성화했는데도 `ANTHROPIC_AUTH_TOKEN`으로 인증한 세션에서 `/fast`가 `Fast mode has been disabled by your organization`를 보고함 | 가용성 확인에는 claude.ai 로그인 또는 API 키가 필요합니다. bearer 토큰만 있으면 Claude Code는 확인을 보내지 않고 빠른 모드를 비활성화된 것으로 간주합니다 | `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`을 설정합니다. [프록시 및 LLM 게이트웨이 뒤에서 빠른 모드 사용](https://code.claude.com/docs/ko/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)을 참조하세요 |

523| `ANTHROPIC_BASE_URL`을 사용하는 세션에서 `/feedback`이 로컬 파일을 저장함 | 게이트웨이 뒤에서는 `ANTHROPIC_AUTH_TOKEN`과 Anthropic API 키 형식이 아닌 키가 Anthropic 자격 증명이 아닙니다. Anthropic 자격 증명이 없으면 Claude Code는 보고서를 전송하지 않고 `~/.claude/feedback-bundles/` 아래의 로컬 아카이브에 기록합니다 | 파일을 Anthropic 계정 담당자에게 보내거나 지원 요청에 첨부합니다. [텔레메트리 서비스](https://code.claude.com/docs/ko/data-usage.md#telemetry-services)를 참조하세요 |

523| [curl 테스트](#verify-the-connection)가 성공하는데도 Claude Code가 로그인을 요청함 | CLI에 자체 자격 증명이 없습니다. 접근 가능한 기본 URL은 자격 증명이 아니며, 대화형 세션에서 프로젝트의 `.claude/settings.json` 또는 `.claude/settings.local.json`에 있는 `env` 블록은 최초 실행 마법사와 [신뢰 프롬프트](https://code.claude.com/docs/ko/permissions.md#what-runs-before-you-trust-a-folder) 이후에만 적용됩니다 | 최초 실행 설정 전에 Claude Code가 읽는 위치에 `ANTHROPIC_AUTH_TOKEN`을 설정합니다. 셸 export, `~/.claude/settings.json`의 `env` 블록 또는 관리형 설정을 사용할 수 있습니다 |524| [curl 테스트](#verify-the-connection)가 성공하는데도 Claude Code가 로그인을 요청함 | CLI에 자체 자격 증명이 없습니다. 접근 가능한 기본 URL은 자격 증명이 아니며, 대화형 세션에서 프로젝트의 `.claude/settings.json` 또는 `.claude/settings.local.json`에 있는 `env` 블록은 최초 실행 마법사와 [신뢰 프롬프트](https://code.claude.com/docs/ko/permissions.md#what-runs-before-you-trust-a-folder) 이후에만 적용됩니다 | 최초 실행 설정 전에 Claude Code가 읽는 위치에 `ANTHROPIC_AUTH_TOKEN`을 설정합니다. 셸 export, `~/.claude/settings.json`의 `env` 블록 또는 관리형 설정을 사용할 수 있습니다 |

524| `ANTHROPIC_API_KEY`가 설정되어 있지만 확인 요청 없이 무시됨 | 대화형 세션에서는 키에 대한 일회성 승인이 필요하며, 이전에 거부한 키는 다시 묻지 않고 무시됩니다 | `/config`에서 `Use custom API key` 옵션으로 활성화합니다 |525| `ANTHROPIC_API_KEY`가 설정되어 있지만 확인 요청 없이 무시됨 | 대화형 세션에서는 키에 대한 일회성 승인이 필요하며, 이전에 거부한 키는 다시 묻지 않고 무시됩니다 | `/config`에서 `Use custom API key` 옵션으로 활성화합니다 |

525| `This machine's managed settings require a first-party login`, 또는 관리형 설정이 `forceLoginMethod`를 `"gateway"`로 설정하거나 `forceLoginGatewayUrl`도 설정한 경우의 [`Administrator policy requires a Cloud gateway sign-in`](https://code.claude.com/docs/ko/errors#administrator-policy-requires-a-cloud-gateway-sign-in) | 관리형 설정에 `forceLoginMethod` 또는 `forceLoginOrgUUID`가 포함되어 있으며, 이는 `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` 또는 `apiKeyHelper`와 함께 사용할 수 없습니다 | 게이트웨이 자격 증명을 사용하려면 관리자가 관리형 설정에서 `forceLoginMethod`, `forceLoginOrgUUID`, `forceLoginGatewayUrl`을 제거해야 합니다. 또는 게이트웨이 자격 증명을 제거하고 관리형 설정이 요구하는 로그인을 사용합니다. 두 가지를 함께 사용할 수는 없습니다 |526| `This machine's managed settings require a first-party login`, 또는 관리형 설정이 `forceLoginMethod`를 `"gateway"`로 설정하거나 `forceLoginGatewayUrl`도 설정한 경우의 [`Administrator policy requires a Cloud gateway sign-in`](https://code.claude.com/docs/ko/errors#administrator-policy-requires-a-cloud-gateway-sign-in) | 관리형 설정에 `forceLoginMethod` 또는 `forceLoginOrgUUID`가 포함되어 있으며, 이는 `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` 또는 `apiKeyHelper`와 함께 사용할 수 없습니다 | 게이트웨이 자격 증명을 사용하려면 관리자가 관리형 설정에서 `forceLoginMethod`, `forceLoginOrgUUID`, `forceLoginGatewayUrl`을 제거해야 합니다. 또는 게이트웨이 자격 증명을 제거하고 관리형 설정이 요구하는 로그인을 사용합니다. 두 가지를 함께 사용할 수는 없습니다 |

Details

142claude -p "Reply with one word: connected"142claude -p "Reply with one word: connected"

143```143```

144 144 

145**체크포인트**: 프롬프트가 응답을 반환하고 요청이 게이트웨이 로그에 `/v1/messages` 경로에 대한 `POST`로 상태 `200`으로 나타납니다. Claude Code는 `?beta=true`와 같은 쿼리 문자열을 추가하므로 전체 URL이 아닌 경로와 일치합니다. 두 가지 실패 메시지는 다른 방향을 가리킵니다.145**체크포인트**: 프롬프트가 응답을 반환하고, 요청이 게이트웨이 로그에 `/v1/messages` 경로에 대한 상태 `200`의 `POST`로 나타납니다. Claude Code는 `?beta=true`와 같은 쿼리 문자열을 추가하므로 전체 URL이 아닌 경로로 일치 여부를 확인하십시오. 실패 메시지를 확인합니다.

146 146 

147* `Not logged in`: 게이트웨이 로그를 확인하여 두 가지 원인을 구분합니다. 비어 있으면 자격증명이 세션에 도달하지 않았고 요청이 머신을 떠나지 않았습니다. 테스트 중인 셸에서 내보내기를 다시 실행하십시오. `401` 본문에 `x-api-key`가 표시되면 게이트웨이가 대신 해당 헤더에서 키를 예상합니다. `ANTHROPIC_API_KEY`로 전환하십시오.147* `Not logged in`: 게이트웨이 로그를 확인합니다. 비어 있으면 자격 증명이 세션에 도달하지 않았고 요청이 머신을 떠나지 않은 것입니다. 테스트 중인 셸에서 export를 다시 실행하십시오. 게이트웨이가 `x-api-key`를 명시한 `401`을 보여 주면 게이트웨이가 대신 해당 헤더에서 키를 예상하는 것이므로 `ANTHROPIC_API_KEY`로 전환하십시오. `api.anthropic.com` 또는 공급자의 엔드포인트에서 온 `401`이 표시되면 게이트웨이가 보유한 공급자 자격 증명을 수정하십시오.

148* `Failed to authenticate. API Error: 401`은 자격증명이 전송되고 거부되었음을 의미하며, 게이트웨이 로그는 위치를 나타냅니다. `api.anthropic.com` 또는 공급자의 엔드포인트를 명명하는 `401`은 게이트웨이가 업스트림에 도달했지만 보유한 공급자 자격증명이 거부되었음을 의미하므로 개발자 키가 작동했고 게이트웨이가 보유한 공급자 자격증명이 잘못되었거나 자리 표시자입니다.148* `Failed to authenticate. API Error: 401`은 자격증명이 전송되고 거부되었음을 의미하며, 게이트웨이 로그는 위치를 나타냅니다. `api.anthropic.com` 또는 공급자의 엔드포인트를 명명하는 `401`은 게이트웨이가 업스트림에 도달했지만 보유한 공급자 자격증명이 거부되었음을 의미하므로 개발자 키가 작동했고 게이트웨이가 보유한 공급자 자격증명이 잘못되었거나 자리 표시자입니다.

149 149 

150잘못되었거나 도달할 수 없는 기본 URL은 다른 증상을 생성합니다. Claude Code는 [백오프를 사용하여 연결을 재시도](https://code.claude.com/docs/ko/errors.md#automatic-retries)하며 오류를 보고하기 전에 몇 분 동안 출력 없이 앉아 있을 수 있습니다. 명령이 중단된 것으로 보이면 대기하는 대신 게이트웨이 로그를 확인하십시오. 도착하는 요청이 없으면 `ANTHROPIC_BASE_URL`이 게이트웨이를 가리키지 않습니다.150잘못되었거나 도달할 수 없는 기본 URL은 다른 증상을 생성합니다. Claude Code는 [백오프를 사용하여 연결을 재시도](https://code.claude.com/docs/ko/errors.md#automatic-retries)하며 오류를 보고하기 전에 몇 분 동안 출력 없이 앉아 있을 수 있습니다. 명령이 중단된 것으로 보이면 대기하는 대신 게이트웨이 로그를 확인하십시오. 도착하는 요청이 없으면 `ANTHROPIC_BASE_URL`이 게이트웨이를 가리키지 않습니다.


247 247 

248`data:` 줄이 증분으로 도착하는 것을 볼 수 있습니다. 전체 응답이 일시 중지 후 한 번에 도착하면 게이트웨이가 버퍼링되고 있으며, 이는 Claude Code를 정체시킵니다. `404`는 모델 이름이 라우팅되지 않음을 의미합니다. 모델 이름당 반복합니다.248`data:` 줄이 증분으로 도착하는 것을 볼 수 있습니다. 전체 응답이 일시 중지 후 한 번에 도착하면 게이트웨이가 버퍼링되고 있으며, 이는 Claude Code를 정체시킵니다. `404`는 모델 이름이 라우팅되지 않음을 의미합니다. 모델 이름당 반복합니다.

249 249 

250그런 다음 `claude`를 시작하고 메시지를 보냅니다. 이 단계의 각 증상에는 하나의 원인이 있습니다.250그런 다음 `claude`를 시작하고 메시지를 보낸 후, 표시되는 내용과 대조합니다.

251 251 

252* 로그인 프롬프트는 자격증명 간격을 의미합니다. `/status`를 실행하고 **Status** 탭을 엽니다. `Setting sources` 줄에 관리되는 설정이 포함되지 않으면 배포가 머신에 도달하지 않았습니다. 포함되면 개발자 자격증명이 배포되지 않았으므로 `ANTHROPIC_AUTH_TOKEN` 또는 `apiKeyHelper`를 설정하십시오.252* 로그인 화면이 나타나거나, 게이트웨이 로그에 새 항목 없이 `Not logged in`이 표시되면 자격 증명이 누락된 것입니다. `/status`를 실행하고 **Status** 탭을 엽니다. `Setting sources` 줄에 관리형 설정이 포함되지 않으면 배포가 머신에 도달하지 않은 것이고, 포함되어 있으면 개발자 자격 증명이 전달되지 않은 것이므로 `ANTHROPIC_AUTH_TOKEN` 또는 `apiKeyHelper`를 설정하십시오.

253* `Failed to authenticate` 오류는 게이트웨이가 요청을 거부함을 의미합니다. 로그는 어느 자격증명이 실패했는지 나타냅니다. 게이트웨이가 자체 로그하는 거부는 개발자 키를 명명하는 반면, `api.anthropic.com` 또는 공급자의 엔드포인트의 `401`은 게이트웨이가 보유한 공급자 자격증명이 거부되었음을 의미합니다.253* 게이트웨이 로그에 `401`이 있는 상태에서 `Please run /login · API Error: 401`, `Not logged in` 또는 `Invalid API key`가 표시되는 경우: 누가 `401`을 기록했는지 확인하십시오. 게이트웨이가 기록했다면 개발자 키 또는 해당 헤더를 수정하고, `api.anthropic.com` 또는 공급자의 엔드포인트에서 온 것이라면 게이트웨이가 보유한 공급자 자격 증명을 수정하십시오.

254* 게이트웨이가 `x-api-key` 헤더에서 키를 예상하여 `ANTHROPIC_API_KEY`로 설정한 경우, 처음 사용할 때 키에 대한 일회성 승인 프롬프트가 나타나는 것은 정상입니다.254* 게이트웨이가 `x-api-key` 헤더에서 키를 예상하여 `ANTHROPIC_API_KEY`로 설정한 경우, 처음 사용할 때 키에 대한 일회성 승인 프롬프트가 나타나는 것은 정상입니다.

255 255 

256조직이 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)를 사용하는 경우 여기서 `/fast`도 실행하십시오. 가용성 확인은 게이트웨이 기본 URL을 따르지 않고 `api.anthropic.com`을 직접 호출하므로 게이트웨이 라우팅 세션은 추론이 작동하더라도 빠른 모드를 사용할 수 없거나 비활성화된 것으로 보고할 수 있습니다. [프록시 및 LLM 게이트웨이 뒤에서 빠른 모드 사용](https://code.claude.com/docs/ko/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)은 각 메시지를 복원하는 변수에 매핑하고, [구성의 나머지 부분](#distribute-the-configuration)과 함께 배포됩니다.256조직이 [빠른 모드](https://code.claude.com/docs/ko/fast-mode.md)를 사용하는 경우 여기서 `/fast`도 실행하십시오. 가용성 확인은 게이트웨이 기본 URL을 따르지 않고 `api.anthropic.com`을 직접 호출하므로 게이트웨이 라우팅 세션은 추론이 작동하더라도 빠른 모드를 사용할 수 없거나 비활성화된 것으로 보고할 수 있습니다. [프록시 및 LLM 게이트웨이 뒤에서 빠른 모드 사용](https://code.claude.com/docs/ko/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)은 각 메시지를 복원하는 변수에 매핑하고, [구성의 나머지 부분](#distribute-the-configuration)과 함께 배포됩니다.

mcp.md +0 −2

Details

835 835 

836조직이 [`managedMcpServers`](https://code.claude.com/docs/ko/managed-mcp#provide-servers-through-managed-settings) 관리형 설정을 통해 제공하는 서버는 이들 모두보다 우선순위가 높으므로, 이 중 하나가 해당 서버와 중복되면 Claude Code는 조직의 정의로 연결합니다. Claude Code v2.1.259 이상이 필요합니다.836조직이 [`managedMcpServers`](https://code.claude.com/docs/ko/managed-mcp#provide-servers-through-managed-settings) 관리형 설정을 통해 제공하는 서버는 이들 모두보다 우선순위가 높으므로, 이 중 하나가 해당 서버와 중복되면 Claude Code는 조직의 정의로 연결합니다. Claude Code v2.1.259 이상이 필요합니다.

837 837 

838`~/.claude.json`의 최상위(사용자 범위)와 `.mcp.json`에 동일한 이름의 stdio 서버가 있는 상태에서 [Desktop 앱의 Code 탭](https://code.claude.com/docs/ko/desktop.md#mcp-servers-from-the-claude-desktop-chat-app)으로 로컬 세션을 열면, Code 탭은 `~/.claude.json`의 정의를 사용합니다.

839 

840### `.mcp.json`의 환경 변수 확장838### `.mcp.json`의 환경 변수 확장

841 839 

842Claude Code는 `.mcp.json` 파일에서 환경 변수 확장을 지원하므로, 팀은 구성을 공유하면서도 머신별 경로와 API 키 같은 민감한 값에 대해 유연성을 유지할 수 있습니다.840Claude Code는 `.mcp.json` 파일에서 환경 변수 확장을 지원하므로, 팀은 구성을 공유하면서도 머신별 경로와 API 키 같은 민감한 값에 대해 유연성을 유지할 수 있습니다.

Details

147 147 

148## Azure RBAC 구성148## Azure RBAC 구성

149 149 

150`Azure AI User` 및 `Cognitive Services User` 기본 역할에는 Claude 모델을 호출하는 데 필요한 모든 권한이 포함됩니다.150Microsoft Entra ID 또는 Microsoft Entra ID에서 발급한 베어러 토큰으로 인증하는 경우, Foundry 리소스에서 해당 ID에 `Foundry User` 또는 `Cognitive Services User` 역할을 할당합니다. `Foundry User`는 이전 이름인 `Azure AI User`로 표시될 수도 있습니다.

151 151 

152더 제한적인 권한의 경우 다음을 포함하는 사용자 지정 역할을 만듭니다:152이러한 역할이 요구 사항을 충족하지 않는 경우 사용자 지정 역할에 대해서는 [Microsoft Foundry RBAC 설명서](https://learn.microsoft.com/en-us/azure/foundry/concepts/rbac-foundry)를 참조하세요.

153 

154```json theme={null}

155{

156 "permissions": [

157 {

158 "dataActions": [

159 "Microsoft.CognitiveServices/accounts/providers/*"

160 ]

161 }

162 ]

163}

164```

165 

166자세한 내용은 [Microsoft Foundry RBAC 설명서](https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/rbac-azure-ai-foundry)를 참조하세요.

167 153 

168## 1M 토큰 컨텍스트 윈도우154## 1M 토큰 컨텍스트 윈도우

169 155 

model-config.md +5 −3

Details

157 157 

158시작 시 활성 모델이 자신의 선택이 아닌 프로젝트 또는 관리형 설정에서 나오면 시작 헤더는 어떤 설정 파일이 설정했는지 표시합니다. `/model`을 실행하여 재정의합니다. 프로젝트 또는 관리형 설정은 다음 시작 시 다시 적용됩니다. Claude Code를 포함하고 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/ko/env-vars)를 설정하는 플랫폼에서 호스트의 모델 구성은 관리형 모델 설정보다 우선 적용되며, 호스트가 자체 허용 목록을 제공하지 않으면 관리형 `availableModels` 허용 목록이 계속 적용됩니다. [관리형 설정 우선순위의 예외](https://code.claude.com/docs/ko/settings.md#exceptions-to-managed-settings-precedence)는 호스트가 재정의하는 키 및 변수를 나타냅니다.158시작 시 활성 모델이 자신의 선택이 아닌 프로젝트 또는 관리형 설정에서 나오면 시작 헤더는 어떤 설정 파일이 설정했는지 표시합니다. `/model`을 실행하여 재정의합니다. 프로젝트 또는 관리형 설정은 다음 시작 시 다시 적용됩니다. Claude Code를 포함하고 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/ko/env-vars)를 설정하는 플랫폼에서 호스트의 모델 구성은 관리형 모델 설정보다 우선 적용되며, 호스트가 자체 허용 목록을 제공하지 않으면 관리형 `availableModels` 허용 목록이 계속 적용됩니다. [관리형 설정 우선순위의 예외](https://code.claude.com/docs/ko/settings.md#exceptions-to-managed-settings-precedence)는 호스트가 재정의하는 키 및 변수를 나타냅니다.

159 159 

160사용자 또는 조직이 [PreModelSwitch 훅](https://code.claude.com/docs/ko/hooks.md#premodelswitch)을 구성하면 요청된 전환이 적용되기 전에 실행되며 이를 차단하거나 확인을 요청할 수 있습니다.160사용자 또는 조직이 [PreModelSwitch 훅](https://code.claude.com/docs/ko/hooks.md#premodelswitch)을 구성하면 요청된 전환이 적용되기 전에 실행되며 이를 차단하거나 확인을 요청할 수 있습니다. 훅이 전환을 차단한 이유와 해결 방법은 [Model switch was blocked by a PreModelSwitch hook](https://code.claude.com/docs/ko/errors.md#model-switch-was-blocked-by-a-premodelswitch-hook)을 참조하십시오.

161 161 

162Claude Code가 조직의 [관리형 플러그인](https://code.claude.com/docs/ko/settings-reference.md#enabledplugins)이 제공하는 PreModelSwitch 훅을 알 수 없는 경우(예: 관리형 플러그인이 로드되지 않음), 확인되지 않은 상태로 적용하는 대신 전환을 거부하며, 각 새 시도에서 다시 확인합니다. [PreModelSwitch 훅에 의해 모델 전환이 차단되었습니다](https://code.claude.com/docs/ko/errors.md#model-switch-was-blocked-by-a-premodelswitch-hook)를 참조하여 메시지 및 복구를 확인합니다.162[관리형 플러그인](https://code.claude.com/docs/ko/settings-reference.md#enabledplugins) 또는 해당 훅이 로드되지 않더라도 모델을 전환할 수 있습니다. 해당 플러그인의 PreModelSwitch 훅은 실행되지 않으므로, 그중 하나가 차단했을 전환도 진행될 수 있습니다. 로드된 다른 PreModelSwitch 훅은 여전히 실행되며 전환을 차단할 수 있습니다. v2.1.323 이전의 Claude Code가 `so organization-managed PreModelSwitch hooks could not be checked` 메시지와 함께 전환을 거부하면 Claude Code를 업데이트하십시오.

163 

164무엇이 실패했는지 확인하려면 세션에서 `/plugin`을 실행하고 [**Errors** 탭](https://code.claude.com/docs/ko/plugins/troubleshooting.md#failed-to-load-hooks-from-and-hooks-that-dont-fire)을 엽니다. 그곳에 아무것도 나열되지 않으면 셸에서 `claude --debug`로 새 세션을 시작하고 다른 모델로 전환한 다음 [디버그 로그](https://code.claude.com/docs/ko/hooks.md#debug-hooks)를 확인합니다. 플러그인을 수정한 후, 또는 [플러그인 업데이트](https://code.claude.com/docs/ko/plugins/install.md#keep-plugins-updated)를 통해 관리자의 수정 사항이 사용자의 컴퓨터에 반영된 후, 세션에서 `/reload-plugins`를 실행하여 해당 훅이 실행되도록 합니다.

163 165 

164[Agent SDK](https://code.claude.com/docs/ko/agent-sdk/overview.md) `setModel()` 메서드를 통해 모델을 전환하거나 [Desktop 앱](https://code.claude.com/docs/ko/desktop.md)과 같은 앱에서, 또는 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)을 통해 연결된 장치에서 Claude Code는 값을 전환할 때 확인합니다:166[Agent SDK](https://code.claude.com/docs/ko/agent-sdk/overview.md) `setModel()` 메서드를 통해 모델을 전환하거나 [Desktop 앱](https://code.claude.com/docs/ko/desktop.md)과 같은 앱에서, 또는 [Remote Control](https://code.claude.com/docs/ko/remote-control.md)을 통해 연결된 장치에서 Claude Code는 값을 전환할 때 확인합니다:

165 167 


903 905 

904### 게이트웨이 또는 사용자 정의 모델 ID의 윈도우 수정906### 게이트웨이 또는 사용자 정의 모델 ID의 윈도우 수정

905 907 

906다음 시작 경고 중 하나가 표시되면 Claude Code가 세션의 모델 ID를 인식하지 못한다는 의미이며, 이 경우 Claude Code는 모델의 컨텍스트 윈도우를 파악할 수 없으므로 200K 토큰으로 가정합니다.908다음 경고 중 하나가 표시되면 Claude Code가 세션의 모델 ID를 인식하지 못한다는 의미이며, 이 경우 Claude Code는 모델의 컨텍스트 윈도우를 파악할 수 없으므로 200K 토큰으로 가정합니다.

907 909 

908```text theme={null}910```text theme={null}

909⚠ Model "my-gateway-opus" isn't recognized · context assumed to be 200k tokens · ...911⚠ Model "my-gateway-opus" isn't recognized · context assumed to be 200k tokens · ...

Details

110| `CLAUDE_CODE_ENABLE_TELEMETRY` | 텔레메트리 수집을 활성화합니다(필수) | `1` |110| `CLAUDE_CODE_ENABLE_TELEMETRY` | 텔레메트리 수집을 활성화합니다(필수) | `1` |

111| `OTEL_METRICS_EXPORTER` | 메트릭 익스포터 유형(쉼표로 구분). 비활성화하려면 `none` 사용 | `console`, `otlp`, `prometheus`, `none` |111| `OTEL_METRICS_EXPORTER` | 메트릭 익스포터 유형(쉼표로 구분). 비활성화하려면 `none` 사용 | `console`, `otlp`, `prometheus`, `none` |

112| `OTEL_LOGS_EXPORTER` | 로그/이벤트 익스포터 유형(쉼표로 구분). 비활성화하려면 `none` 사용 | `console`, `otlp`, `none` |112| `OTEL_LOGS_EXPORTER` | 로그/이벤트 익스포터 유형(쉼표로 구분). 비활성화하려면 `none` 사용 | `console`, `otlp`, `none` |

113| `OTEL_EXPORTER_OTLP_PROTOCOL` | OTLP 익스포터용 프로토콜로, 모든 신호에 적용됩니다. Claude Code에는 기본 프로토콜이 없으므로 활성화하는 각 `otlp` 익스포터에 대해 이 변수 또는 신호별 프로토콜 변수를 설정해야 합니다 | `grpc`, `http/json`, `http/protobuf` |113| `OTEL_EXPORTER_OTLP_PROTOCOL` | OTLP 익스포터용 프로토콜로, 모든 신호에 적용됩니다. 유효한 `http://` 또는 `https://` 엔드포인트의 경우 기본값은 `http/protobuf`입니다. `http://localhost:4317`과 같은 gRPC 엔드포인트의 경우 이 값을 `grpc`로 설정하세요. 이 기본값은 Claude Code v2.1.323 이상이 필요합니다 | `grpc`, `http/json`, `http/protobuf` |

114| `OTEL_EXPORTER_OTLP_ENDPOINT` | 모든 신호에 대한 OTLP 수집기 엔드포인트 | `http://localhost:4317` |114| `OTEL_EXPORTER_OTLP_ENDPOINT` | 모든 신호에 대한 OTLP 수집기 엔드포인트 | `http://localhost:4317` |

115| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | 메트릭용 프로토콜로, 일반 설정을 재정의합니다 | `grpc`, `http/json`, `http/protobuf` |115| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | 메트릭용 프로토콜로, 일반 설정을 재정의합니다 | `grpc`, `http/json`, `http/protobuf` |

116| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | OTLP 메트릭 엔드포인트로, 일반 설정을 재정의합니다 | `http://localhost:4318/v1/metrics` |116| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | OTLP 메트릭 엔드포인트로, 일반 설정을 재정의합니다 | `http://localhost:4318/v1/metrics` |


431> * **공백 허용 안 됨**: 값에 공백을 포함할 수 없습니다. 예를 들어 `user.organizationName=My Company`는 유효하지 않습니다431> * **공백 허용 안 됨**: 값에 공백을 포함할 수 없습니다. 예를 들어 `user.organizationName=My Company`는 유효하지 않습니다

432> * **형식**: 쉼표로 구분된 key=value 쌍이어야 합니다: `key1=value1,key2=value2`432> * **형식**: 쉼표로 구분된 key=value 쌍이어야 합니다: `key1=value1,key2=value2`

433> * **허용 문자**: 제어 문자, 공백, 큰따옴표, 쉼표, 세미콜론, 백슬래시를 제외한 US-ASCII 문자만 허용됩니다433> * **허용 문자**: 제어 문자, 공백, 큰따옴표, 쉼표, 세미콜론, 백슬래시를 제외한 US-ASCII 문자만 허용됩니다

434> * **특수 문자**: 허용 범위를 벗어난 문자는 퍼센트 인코딩해야 합니다434> * **특수 문자**: 허용 범위를 벗어난 문자는 퍼센트 인코딩해야 하며, 값 안의 `=`는 `%3D`로 작성해야 합니다

435>435>

436> 공백이 필요한 값에는 대신 밑줄이나 camelCase를 사용하세요. 다음 예시는 각 형식으로 `org.name`을 설정합니다.436> 공백이 필요한 값에는 대신 밑줄이나 camelCase를 사용하세요. 다음 예시는 각 형식으로 `org.name`을 설정합니다.

437>437>


475 475 

476* **Desktop을 실행하는 컴퓨터에서 설정한 경우**: Desktop은 그곳에서 설정한 값을 SSH 세션에 전달하지 않습니다476* **Desktop을 실행하는 컴퓨터에서 설정한 경우**: Desktop은 그곳에서 설정한 값을 SSH 세션에 전달하지 않습니다

477* **`/etc/profile` 또는 로그인 셸만 읽는 다른 파일에서 export한 경우**: 로그인 셸에서 `claude`를 실행하면 이름이 도착하지만 Desktop SSH 세션에서는 도착하지 않습니다. Desktop은 로그인 셸을 통해 Claude Code를 시작하지 않습니다. 대신 원격 머신의 [관리형 설정 파일](https://code.claude.com/docs/ko/desktop.md#managed-settings)에서 `env` 아래에 변수를 설정하세요.477* **`/etc/profile` 또는 로그인 셸만 읽는 다른 파일에서 export한 경우**: 로그인 셸에서 `claude`를 실행하면 이름이 도착하지만 Desktop SSH 세션에서는 도착하지 않습니다. Desktop은 로그인 셸을 통해 Claude Code를 시작하지 않습니다. 대신 원격 머신의 [관리형 설정 파일](https://code.claude.com/docs/ko/desktop.md#managed-settings)에서 `env` 아래에 변수를 설정하세요.

478* **값 안에 공백이 있는 경우**: 이때 Claude Code는 어떤 키도 이벤트나 데이터 포인트에 복사하지 않으며 오류도 보고하지 않습니다. [값에서 공백을 제거하세요](#multi-team-organization-support).478* **값 안에 공백이 있는 경우**: 이때 Claude Code는 어떤 키도 이벤트나 데이터 포인트에 복사하지 않습니다. 어느 값에 공백이 있는지 확인하려면 원격 머신의 세션에서 `/status`를 실행하세요. [값에서 공백을 제거하세요](#multi-team-organization-support).

479* **다른 무언가가 이미 변수를 설정한 경우**: 데스크톱 앱이 시작하는 세션에서는 실행 환경에 이미 설정된 변수가 [설정 파일보다 우선합니다](https://code.claude.com/docs/ko/settings-reference.md#how-env-values-interact-with-your-shell). [디버그 로그](https://code.claude.com/docs/ko/debug-your-config.md)에 무시된 각 변수의 이름이 표시됩니다. 서드파티 Desktop 배포가 제공하는 환경에서 [OTLP 엔드포인트를 지정](#how-managed-settings-lock-the-otlp-destination)하는 경우, 해당 환경에는 Desktop 자체의 `OTEL_RESOURCE_ATTRIBUTES`가 포함됩니다.479* **다른 무언가가 이미 변수를 설정한 경우**: 데스크톱 앱이 시작하는 세션에서는 실행 환경에 이미 설정된 변수가 [설정 파일보다 우선합니다](https://code.claude.com/docs/ko/settings-reference.md#how-env-values-interact-with-your-shell). [디버그 로그](https://code.claude.com/docs/ko/debug-your-config.md)에 무시된 각 변수의 이름이 표시됩니다. 서드파티 Desktop 배포가 제공하는 환경에서 [OTLP 엔드포인트를 지정](#how-managed-settings-lock-the-otlp-destination)하는 경우, 해당 환경에는 Desktop 자체의 `OTEL_RESOURCE_ATTRIBUTES`가 포함됩니다.

480 480 

481### 구성 예시481### 구성 예시

Details

304claude --permission-mode plan304claude --permission-mode plan

305```305```

306 306 

307플랜을 승인하지 않고 플랜 모드를 종료하려면 `Shift+Tab`을 다시 누릅니다.307승인 프롬프트가 열려 있지 않은 상태에서 `Shift+Tab`을 다시 누르면 플랜 모드가 종료됩니다. 승인 프롬프트에서는 `Shift+Tab`을 누르면 플랜이 승인되므로 먼저 `Esc`를 누릅니다.

308 308 

309### 플랜 검토 및 승인309### 플랜 검토 및 승인

310 310 


593> * Claude가 [다른 사람이 만든 아티팩트](https://code.claude.com/docs/ko/artifacts.md#read-an-artifact-shared-with-you)를 읽을 때는 해당 섹션에 나열된 승인 사례가 적용됩니다593> * Claude가 [다른 사람이 만든 아티팩트](https://code.claude.com/docs/ko/artifacts.md#read-an-artifact-shared-with-you)를 읽을 때는 해당 섹션에 나열된 승인 사례가 적용됩니다

594> * [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기는 확인을 요청합니다594> * [네트워크 경로](https://code.claude.com/docs/ko/permissions.md#network-paths)에서의 읽기는 확인을 요청합니다

595> 3. 기본 처리 방식이 적용되는 [핵심 경로 삭제](#critical-paths)를 제외한 나머지는 모두 분류기로 전달됩니다. 1단계에서 직접 확인을 요청하는 커넥터 도구와 `requiresUserInteraction` MCP 도구도 분류기에 도달하지 않으므로, 조직이 요구하는 승인이나 동의 단계가 자동으로 승인되는 일은 없습니다595> 3. 기본 처리 방식이 적용되는 [핵심 경로 삭제](#critical-paths)를 제외한 나머지는 모두 분류기로 전달됩니다. 1단계에서 직접 확인을 요청하는 커넥터 도구와 `requiresUserInteraction` MCP 도구도 분류기에 도달하지 않으므로, 조직이 요구하는 승인이나 동의 단계가 자동으로 승인되는 일은 없습니다

596> * [Code Mode](https://code.claude.com/docs/ko/code-mode.md#permission-checks)가 켜져 있으면 Claude의 코드는 실행되기 전에 한 번 분류기로 전달되며, 그 안의 도구 호출은 분류기로 전달되지 않습니다. 여전히 `deny` 규칙으로 호출을 차단하거나 `ask` 규칙으로 프롬프트를 요구할 수 있지만, Claude는 [규칙이 일치하지 않는 형태](https://code.claude.com/docs/ko/permissions.md#bash-rule-limits)로 Bash 명령을 실행할 수 있습니다

596> 4. 분류기가 차단하면 Claude가 그 이유를 받습니다. 대부분의 세션에서 이유는 서술형 설명이 아니라 `[Data Exfiltration]`처럼 분류기가 일치시킨 규칙의 이름으로 제공됩니다. [거부 검토](https://code.claude.com/docs/ko/auto-mode-config.md#review-denials)를 참조하십시오597> 4. 분류기가 차단하면 Claude가 그 이유를 받습니다. 대부분의 세션에서 이유는 서술형 설명이 아니라 `[Data Exfiltration]`처럼 분류기가 일치시킨 규칙의 이름으로 제공됩니다. [거부 검토](https://code.claude.com/docs/ko/auto-mode-config.md#review-denials)를 참조하십시오

597>598>

598> 설치한 [mod](https://code.claude.com/docs/ko/plugins/mods/overview.md)가 `tool.check`를 처리하는 경우 해당 mod도 작업을 승인할 수 있습니다. mod의 승인이 규칙과 훅을 통과하지 못하는 경우는 [훅으로 권한 확장](https://code.claude.com/docs/ko/permissions.md#precedence-among-rules-hooks-and-mods)을 참조하십시오.599> 설치한 [mod](https://code.claude.com/docs/ko/plugins/mods/overview.md)가 `tool.check`를 처리하는 경우 해당 mod도 작업을 승인할 수 있습니다. mod의 승인이 규칙과 훅을 통과하지 못하는 경우는 [훅으로 권한 확장](https://code.claude.com/docs/ko/permissions.md#precedence-among-rules-hooks-and-mods)을 참조하십시오.

permissions.md +1 −1

Details

784* 저장소 외부에서 Claude Code는 시작한 디렉터리를 기준으로 신뢰를 저장하며, 신뢰는 클론과 같은 중첩된 git 저장소를 제외한 해당 디렉터리의 모든 하위 디렉터리를 포함합니다. 포함된 각 하위 디렉터리는 상위 디렉터리를 신뢰한 폴더로 간주됩니다.784* 저장소 외부에서 Claude Code는 시작한 디렉터리를 기준으로 신뢰를 저장하며, 신뢰는 클론과 같은 중첩된 git 저장소를 제외한 해당 디렉터리의 모든 하위 디렉터리를 포함합니다. 포함된 각 하위 디렉터리는 상위 디렉터리를 신뢰한 폴더로 간주됩니다.

785* 홈 디렉터리에서 시작하면 Claude Code는 현재 세션에만 신뢰를 유지하며 디스크에 기록하지 않습니다. [추가 보안 조치](https://code.claude.com/docs/ko/security.md#additional-safeguards) 참고를 참조하세요.785* 홈 디렉터리에서 시작하면 Claude Code는 현재 세션에만 신뢰를 유지하며 디스크에 기록하지 않습니다. [추가 보안 조치](https://code.claude.com/docs/ko/security.md#additional-safeguards) 참고를 참조하세요.

786 786 

787Claude Code는 대화형 세션에서만 신뢰 대화상자를 표시합니다. `claude -p` 실행이나 SDK 세션은 절대 표시하지 않으며, 상위 폴더를 신뢰해도 이러한 규칙에는 적용되지 않으므로, [폴더를 신뢰하기 전에 실행되는 것](#what-runs-before-you-trust-a-folder)은 이 두 가지 상황 각각에서 Claude Code가 여전히 사용하는 저장소 콘텐츠를 설명합니다.787VS Code 확장 프로그램은 세션을 시작하기 전에 `Trust this folder in Claude Code?`라는 제목의 대화상자에서 동일한 신뢰를 요청합니다. Claude Code는 대화형 터미널 세션에서는 신뢰 대화상자를 표시하지만, `claude -p` 또는 SDK 세션에서는 표시하지 않습니다. 상위 폴더를 신뢰해도 이러한 규칙에는 적용되지 않습니다. [폴더를 신뢰하기 전에 실행되는 것](#what-runs-before-you-trust-a-folder)에서 각 경우에 Claude Code가 여전히 사용하는 저장소 콘텐츠를 설명합니다.

788 788 

789[배경 세션](https://code.claude.com/docs/ko/agent-view.md)을 시작하거나 다시 시작하기 전에, Claude Code는 세션이 실행되는 디렉터리에 대한 워크스페이스 신뢰도 확인합니다. 신뢰하지 않은 디렉터리의 터미널에서 `claude --bg`를 실행하면, 신뢰 대화상자가 먼저 나타나고 수락하면 세션이 시작됩니다. 스크립트와 같이 대화상자가 나타날 수 없는 곳에서는 명령이 대신 [`Workspace not trusted`](https://code.claude.com/docs/ko/errors#workspace-not-trusted-when-dispatching-a-background-session) 오류로 종료됩니다.789[배경 세션](https://code.claude.com/docs/ko/agent-view.md)을 시작하거나 다시 시작하기 전에, Claude Code는 세션이 실행되는 디렉터리에 대한 워크스페이스 신뢰도 확인합니다. 신뢰하지 않은 디렉터리의 터미널에서 `claude --bg`를 실행하면, 신뢰 대화상자가 먼저 나타나고 수락하면 세션이 시작됩니다. 스크립트와 같이 대화상자가 나타날 수 없는 곳에서는 명령이 대신 [`Workspace not trusted`](https://code.claude.com/docs/ko/errors#workspace-not-trusted-when-dispatching-a-background-session) 오류로 종료됩니다.

790 790 

Details

4 4 

5# 플러그인에 컴포넌트 추가하기5# 플러그인에 컴포넌트 추가하기

6 6 

7> Claude Code 플러그인에 skills, hooks, MCP 서버 및 다른 모든 컴포넌트 유형을 추가하고, 각각에 대해 검증하는 예제를 포함합니다.7> Claude Code 플러그인에 스킬, 훅, MCP 서버 및 기타 컴포넌트 유형을 추가하고, 각각에 대해 검증하는 예제를 포함합니다.

8 8 

9Claude Code 플러그인은 skills, agents, hooks, MCP 서버와 같은 컴포넌트로 구성됩니다. 각 컴포넌트는 플러그인의 기본 폴더, `.claude-plugin/plugin.json`의 선택적 manifest 키(해당 폴더를 대체하거나 추가함), 그리고 사용자가 보는 이름을 가집니다. 각 키의 전체 필드 테이블은 [manifest 참조](https://code.claude.com/docs/ko/plugins/manifest-reference.md#fields)를 참조하십시오.9Claude Code 플러그인은 skills, agents, hooks, MCP 서버와 같은 컴포넌트로 구성됩니다. 각 컴포넌트는 플러그인의 기본 폴더, `.claude-plugin/plugin.json`의 선택적 manifest 키(해당 폴더를 대체하거나 추가함), 그리고 사용자가 보는 이름을 가집니다. 각 키의 전체 필드 테이블은 [manifest 참조](https://code.claude.com/docs/ko/plugins/manifest-reference.md#fields)를 참조하십시오.

10 10 


22 22 

23## 플러그인 디렉토리 탐색23## 플러그인 디렉토리 탐색

24 24 

25탐색기는 기본 위치에 모든 종류의 구성 요소 중 하나씩 포함하는 예제 플러그인 `my-plugin`을 보여줍니다:25탐색기는 다음 구성 요소를 기본 위치에 포함하는 예제 플러그인 `my-plugin`을 보여줍니다:

26 26 

27* 검토 스킬과 `about` 명령27* 검토 스킬과 `about` 명령

28* 보안 검토 서브에이전트28* 보안 검토 서브에이전트


31* 출력 스타일과 색상 테마31* 출력 스타일과 색상 테마

32* 경로 감사 워크플로우32* 경로 감사 워크플로우

33* `hello-plugin` 실행 파일33* `hello-plugin` 실행 파일

34* 기본 설정

35* 로컬 MCP 서버와 Go 언어 서버34* 로컬 MCP 서버와 Go 언어 서버

36 35 

37각 파일은 해당 형식의 가장 작은 유효한 예제이며, 유용하기보다는 형태를 보여주기 위한 것입니다: 실제 스킬이나 에이전트는 전체 지침을 포함하고 종종 지원 파일을 포함하며, 실제 훅이나 모니터는 실제 작업을 수행합니다. 탐색기 이후의 섹션은 동일한 파일을 예제로 사용하고 더 완전한 파일로 연결됩니다. 파일이나 폴더를 선택하여 그 용도를 읽고, 그 안에 무엇이 들어가는지 확인하고, 그것을 다루는 섹션을 찾습니다.36각 파일은 해당 형식의 가장 작은 유효한 예제이며, 유용하기보다는 형태를 보여주기 위한 것입니다: 실제 스킬이나 에이전트는 전체 지침을 포함하고 종종 지원 파일을 포함하며, 실제 훅이나 모니터는 실제 작업을 수행합니다. 탐색기 이후의 섹션은 동일한 파일을 예제로 사용하고 더 완전한 파일로 연결됩니다. 파일이나 폴더를 선택하여 그 용도를 읽고, 그 안에 무엇이 들어가는지 확인하고, 그것을 다루는 섹션을 찾습니다.

38 37 

39What goes in a plugin38What goes in a plugin

40 39 

41This example plugin, `my-plugin`, has one of every kind of component, each in its default location. Select a file or folder to read what it’s for and see what goes in it.40This example plugin, `my-plugin`, has the components listed here, each in its default location. Select a file or folder to read what it’s for and see what goes in it.

42 41 

43Plugin directory42Plugin directory

44 43 


178npx prettier --write .177npx prettier --write .

179```178```

180 179 

181플러그인 루트의 `settings.json`은 플러그인이 활성화되어 있는 동안 적용되는 [설정](https://code.claude.com/docs/ko/settings-reference.md)을 보유하므로 플러그인은 세션의 동작 방식을 변경할 수 있고 구성 요소만 추가하는 것이 아닙니다. 플러그인에서 적용되는 키는 [`agent`](https://code.claude.com/docs/ko/settings-reference#agent)와 [`subagentStatusLine`](https://code.claude.com/docs/ko/settings-reference#subagentstatusline) 두 개뿐입니다; 다른 모든 키는 삭제됩니다. [기본 설정](#default-settings)을 참조합니다.

182 

183이 파일은 `agent`를 설정하며, 이는 세션의 주 스레드를 플러그인 자체의 `security-reviewer` 에이전트로 실행하므로 해당 에이전트의 시스템 프롬프트, 도구 제한 및 모델이 전체 세션에 적용됩니다:

184 

185```json theme={null}

186{

187 "agent": "security-reviewer"

188}

189```

190 

191[MCP 서버](https://code.claude.com/docs/ko/mcp.md)는 Claude에게 외부 시스템의 도구를 제공합니다. 플러그인 루트의 `.mcp.json`에서 선언합니다. 이 파일은 플러그인 내부의 스크립트에서 로컬 서버를 시작하며, `/mcp`에 `plugin:my-plugin:db`로 나타납니다:180[MCP 서버](https://code.claude.com/docs/ko/mcp.md)는 Claude에게 외부 시스템의 도구를 제공합니다. 플러그인 루트의 `.mcp.json`에서 선언합니다. 이 파일은 플러그인 내부의 스크립트에서 로컬 서버를 시작하며, `/mcp`에 `plugin:my-plugin:db`로 나타납니다:

192 181 

193```json theme={null}182```json theme={null}


484 473 

485claude.ai와 Cowork는 최상위 `bin/` 디렉터리가 있는 플러그인을 설치하지 않으며, [claude.ai 조직 설정을 통해 배포](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory)하는 플러그인도 마찬가지입니다.474claude.ai와 Cowork는 최상위 `bin/` 디렉터리가 있는 플러그인을 설치하지 않으며, [claude.ai 조직 설정을 통해 배포](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory)하는 플러그인도 마찬가지입니다.

486 475 

487### Default settings

488 

489플러그인이 활성화된 동안 적용되는 기본값을 설정하려면 플러그인 루트에 `settings.json`을 추가하거나, 같은 객체를 `settings` 매니페스트 키에 인라인으로 넣습니다. 적용되는 키는 `agent`와 `subagentStatusLine` 두 가지이며, 그 외의 키는 모두 제외됩니다.

490 

491플러그인 자체 에이전트 중 하나를 메인 스레드로 실행하려면 `agent`를 설정합니다.

492 

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

494{

495 "agent": "security-reviewer"

496}

497```

498 

499플러그인을 로드하고 세션을 시작합니다. 그러면 Claude가 메인 대화에서 `security-reviewer` 에이전트의 시스템 프롬프트와 모델로 응답합니다.

500 

501이 키가 제어하는 모든 항목은 [`agent` 설정](https://code.claude.com/docs/ko/settings-reference#agent)을 참조하십시오.

502 

503같은 키가 여러 곳에 설정된 경우 다음 규칙에 따라 적용할 값이 결정됩니다.

504 

505* **매니페스트보다 파일 우선**: 둘 다 존재하고 `settings.json`이 지원되는 키를 하나 이상 설정하면 `settings.json`이 적용되고 매니페스트의 `settings`는 무시됩니다

506* **플러그인 기본값보다 사용자 설정 우선**: 설정 소스 전체에서 플러그인 기본값이 가장 낮은 계층이므로, 사용자가 `~/.claude/settings.json`에 설정한 `agent`가 플러그인의 값을 재정의합니다

507* **두 플러그인이 같은 키를 설정하는 경우**: 마지막으로 로드된 플러그인의 값이 적용되며, `claude --debug`가 `overrides setting`을 로그에 기록합니다

508 

509`subagentStatusLine`의 형태는 [서브에이전트 상태줄](https://code.claude.com/docs/ko/statusline.md#subagent-status-lines)을 참조하십시오.

510 

511### Themes and output styles476### Themes and output styles

512 477 

513플러그인에는 색상 테마와 출력 스타일을 포함할 수 있습니다. 둘 다 사용자 자체의 항목과 같은 선택기에 표시됩니다. 두 경우 모두 매니페스트 키를 설정하면 폴더 스캔이 대체됩니다.478플러그인에는 색상 테마와 출력 스타일을 포함할 수 있습니다. 둘 다 사용자 자체의 항목과 같은 선택기에 표시됩니다. 두 경우 모두 매니페스트 키를 설정하면 폴더 스캔이 대체됩니다.

Details

72* **`version`**: 선택 사항입니다. 설정하면 사용자가 변경할 때까지 해당 버전에 유지됩니다. [새 버전 릴리스](https://code.claude.com/docs/ko/plugins/host-marketplace.md#release-a-new-version)는 설정하거나 생략할 시기를 설명합니다.72* **`version`**: 선택 사항입니다. 설정하면 사용자가 변경할 때까지 해당 버전에 유지됩니다. [새 버전 릴리스](https://code.claude.com/docs/ko/plugins/host-marketplace.md#release-a-new-version)는 설정하거나 생략할 시기를 설명합니다.

73* **`author`**: 누구에게 크레딧을 줄지입니다. 그 안에 `name`은 필수입니다. `email` 및 `url`은 선택 사항입니다.73* **`author`**: 누구에게 크레딧을 줄지입니다. 그 안에 `name`은 필수입니다. `email` 및 `url`은 선택 사항입니다.

74 74 

75다른 모든 필드는 [매니페스트 참조](https://code.claude.com/docs/ko/plugins/manifest-reference.md#fields)에 있습니다.75다른 필드는 [매니페스트 참조](https://code.claude.com/docs/ko/plugins/manifest-reference.md#fields)에 있습니다.

76 76 

77`.claude-plugin/` 안에는 `plugin.json`만 들어갑니다. 다음에 추가할 스킬은 `my-first-plugin/` 아래에 직접 들어가며, 해당 폴더 옆에 있습니다.77`.claude-plugin/` 안에는 `plugin.json`만 들어갑니다. 다음에 추가할 스킬은 `my-first-plugin/` 아래에 직접 들어가며, 해당 폴더 옆에 있습니다.

78 78 


344 "PostToolUse": [344 "PostToolUse": [

345 {345 {

346 "matcher": "Write|Edit",346 "matcher": "Write|Edit",

347 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]347 "hooks": [{ "type": "command", "command": "f=$(jq -r '.tool_input.file_path') && npm run lint:fix -- \"$f\"" }]

348 }348 }

349 ]349 ]

350 }350 }

Details

4 4 

5# 플러그인 매니페스트 참조5# 플러그인 매니페스트 참조

6 6 

7> plugin.json의 완전한 참조: 모든 필드의 타입과 기본값, 허용되는 경로 형식, userConfig 및 환경 변수 스키마.7> plugin.json에 대한 전체 참조입니다. 유형 및 기본값이 포함된 필드, 허용되는 경로 형식, userConfig 및 환경 변수 스키마를 다룹니다.

8 8 

9플러그인 매니페스트는 플러그인의 `.claude-plugin/` 디렉토리에 있는 `plugin.json` 파일입니다. 플러그인의 메타데이터와 Claude Code가 사용자에게 요청하는 [`userConfig`](#user-configuration) 값을 포함합니다. 또한 인라인으로 정의하거나 [기본 위치](#standard-layout) 외부에 유지하는 모든 컴포넌트를 선언합니다.9플러그인 매니페스트는 플러그인의 `.claude-plugin/` 디렉토리에 있는 `plugin.json` 파일입니다. 플러그인의 메타데이터와 Claude Code가 사용자에게 요청하는 [`userConfig`](#user-configuration) 값을 포함합니다. 또한 인라인으로 정의하거나 [기본 위치](#standard-layout) 외부에 유지하는 모든 컴포넌트를 선언합니다.

10 10 


117 117 

118## 필드118## 필드

119 119 

120테이블은 `plugin.json`의 최상위 키를 나열합니다. `name`은 유일한 필수 키입니다. 필드 이름이 링크인 경우 링크된 섹션에 전체 규칙이 있습니다.120이 표는 `plugin.json`의 최상위 키를 나열합니다. `name`만 유일한 필수 키입니다. 필드 이름이 링크로 되어 있는 경우, 연결된 섹션에서 전체 규칙을 확인할 수 있습니다.

121 121 

122`commands` 및 `hooks`와 같은 컴포넌트 키의 경우 [컴포넌트 경로 형식](#component-path-forms)은 예제와 함께 허용되는 각 형식을 보여주며, 모든 경로는 `./` 접두사, 확장자 및 포함에 대한 [경로 규칙](#path-rules)을 따릅니다.122`commands` 및 `hooks`와 같은 컴포넌트 키의 경우 [컴포넌트 경로 형식](#component-path-forms)은 예제와 함께 허용되는 각 형식을 보여주며, 모든 경로는 `./` 접두사, 확장자 및 포함에 대한 [경로 규칙](#path-rules)을 따릅니다.

123 123 


141| [`termsOfServiceUrl`](#directory-listing-fields) | String | Anthropic 디렉토리에 게시되는 플러그인 목록의 서비스 약관 링크. Claude Code는 이를 읽지 않습니다 |141| [`termsOfServiceUrl`](#directory-listing-fields) | String | Anthropic 디렉토리에 게시되는 플러그인 목록의 서비스 약관 링크. Claude Code는 이를 읽지 않습니다 |

142| [`defaultEnabled`](#defaultenabled) | Boolean | 사용자가 설정하지 않았을 때 플러그인이 활성화된 상태로 시작되는지 여부. 기본값은 `true`입니다 |142| [`defaultEnabled`](#defaultenabled) | Boolean | 사용자가 설정하지 않았을 때 플러그인이 활성화된 상태로 시작되는지 여부. 기본값은 `true`입니다 |

143| [`dependencies`](#dependencies) | Array of strings or objects | 이 플러그인이 작동하기 위해 활성화되어야 하는 플러그인 |143| [`dependencies`](#dependencies) | Array of strings or objects | 이 플러그인이 작동하기 위해 활성화되어야 하는 플러그인 |

144| [`settings`](#settings) | Object | 플러그인이 활성화된 동안 Claude Code가 적용하는 설정. `agent` 및 `subagentStatusLine`만 적용됩니다 |

145| [`userConfig`](#user-configuration) | Object | 플러그인이 활성화될 때 Claude Code가 사용자에게 요청하는 값 |144| [`userConfig`](#user-configuration) | Object | 플러그인이 활성화될 때 Claude Code가 사용자에게 요청하는 값 |

146| `types` | Path | [mod](https://code.claude.com/docs/ko/plugins/mods/reference.md#files)의 `$.state` 값 및 `$` 명사를 선언하는 `.d.ts` 파일 |145| `types` | Path | [mod](https://code.claude.com/docs/ko/plugins/mods/reference.md#files)의 `$.state` 값 및 `$` 명사를 선언하는 `.d.ts` 파일 |

147| [`channels`](#channels) | Array of objects | 플러그인이 제공하는 메시지 채널, 각각 MCP 서버 중 하나에 바인딩됨 |146| [`channels`](#channels) | Array of objects | 플러그인이 제공하는 메시지 채널, 각각 MCP 서버 중 하나에 바인딩됨 |


211 210 

212이 플러그인이 작동하기 위해 활성화되어야 하는 플러그인. 각 항목은 `"name"`, `"name@marketplace"` 또는 `{ "name": "...", "marketplace": "...", "version": "..." }`입니다. 베어 이름은 이 플러그인 자신의 마켓플레이스에 대해 해결됩니다. [의존성 제약](https://code.claude.com/docs/ko/plugins/dependencies.md)을 참조하세요.211이 플러그인이 작동하기 위해 활성화되어야 하는 플러그인. 각 항목은 `"name"`, `"name@marketplace"` 또는 `{ "name": "...", "marketplace": "...", "version": "..." }`입니다. 베어 이름은 이 플러그인 자신의 마켓플레이스에 대해 해결됩니다. [의존성 제약](https://code.claude.com/docs/ko/plugins/dependencies.md)을 참조하세요.

213 212 

214### `settings`

215 

216플러그인이 활성화된 동안 Claude Code가 적용하는 설정. `agent` 및 `subagentStatusLine`만 적용됩니다. 다른 키는 로드 시 제거됩니다. 플러그인 루트의 `settings.json`이 이 키보다 우선합니다. [기본 설정](https://code.claude.com/docs/ko/plugins/components.md#default-settings)을 참조하세요.

217 

218## 컴포넌트 경로 형식213## 컴포넌트 경로 형식

219 214 

220모든 컴포넌트 키는 플러그인 루트에 상대적인 경로를 허용합니다. `hooks`, `mcpServers`, `lspServers` 및 `experimental.monitors`는 또한 인라인 구성을 허용하고, `commands`는 또한 객체 맵을 허용하며, `mcpServers`는 또한 MCP 번들 경로 및 URL을 허용합니다. 다음 예제는 허용되는 각 형식을 한 번씩 보여줍니다. 각 컴포넌트가 런타임에 수행하는 작업은 [플러그인 컴포넌트](https://code.claude.com/docs/ko/plugins/components.md)를 참조하세요.215모든 컴포넌트 키는 플러그인 루트에 상대적인 경로를 허용합니다. `hooks`, `mcpServers`, `lspServers` 및 `experimental.monitors`는 또한 인라인 구성을 허용하고, `commands`는 또한 객체 맵을 허용하며, `mcpServers`는 또한 MCP 번들 경로 및 URL을 허용합니다. 다음 예제는 허용되는 각 형식을 한 번씩 보여줍니다. 각 컴포넌트가 런타임에 수행하는 작업은 [플러그인 컴포넌트](https://code.claude.com/docs/ko/plugins/components.md)를 참조하세요.


626| 테마 | `themes/` | 테마 JSON 파일 |621| 테마 | `themes/` | 테마 JSON 파일 |

627| 모니터 | `monitors/monitors.json` | 모니터 배열 |622| 모니터 | `monitors/monitors.json` | 모니터 배열 |

628| 실행 파일 | `bin/` | 여기의 파일은 플러그인이 활성화된 동안 Bash 도구의 `PATH`에 있으므로 Claude는 이들을 베어 명령으로 실행합니다. claude.ai 및 Cowork는 이 디렉토리가 있는 플러그인을 설치하지 않습니다. 여기에는 [claude.ai 조직 설정을 통해 배포](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory)하는 플러그인도 포함됩니다 |623| 실행 파일 | `bin/` | 여기의 파일은 플러그인이 활성화된 동안 Bash 도구의 `PATH`에 있으므로 Claude는 이들을 베어 명령으로 실행합니다. claude.ai 및 Cowork는 이 디렉토리가 있는 플러그인을 설치하지 않습니다. 여기에는 [claude.ai 조직 설정을 통해 배포](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory)하는 플러그인도 포함됩니다 |

629| 설정 | `settings.json` | 플러그인이 활성화된 동안 적용되는 `agent` 및 `subagentStatusLine` 기본값 |

630 624 

631모든 기본 위치를 사용하는 플러그인과 훅이 호출하는 `scripts/` 폴더는 다음과 같이 배치됩니다:625기본 위치를 사용하는 플러그인과 훅이 호출하는 `scripts/` 폴더는 다음과 같이 배치됩니다:

632 626 

633```text theme={null}627```text theme={null}

634deploy-tools/628deploy-tools/


655│ └── deploy-tool649│ └── deploy-tool

656├── scripts/650├── scripts/

657│ └── format.sh651│ └── format.sh

658├── settings.json

659├── .mcp.json652├── .mcp.json

660└── .lsp.json653└── .lsp.json

661```654```

Details

61 * 세션이 Team 또는 Enterprise 플랜의 [`/login` 자격 증명](https://code.claude.com/docs/ko/authentication#authentication-precedence)으로 실행되는 경우61 * 세션이 Team 또는 Enterprise 플랜의 [`/login` 자격 증명](https://code.claude.com/docs/ko/authentication#authentication-precedence)으로 실행되는 경우

62 62 

63 API 키로 인증하거나 Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry를 통해 인증하는 사용자는 관리형 설정 또는 `managed-mcp.json`이 있는 머신에서만 가드가 적용됩니다. 장기 [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/ko/authentication#generate-a-long-lived-token)으로 실행되는 세션도 머신에 Team 또는 Enterprise 로그인이 저장되어 있더라도 해당 로그인으로 간주되지 않습니다.63 API 키로 인증하거나 Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry를 통해 인증하는 사용자는 관리형 설정 또는 `managed-mcp.json`이 있는 머신에서만 가드가 적용됩니다. 장기 [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/ko/authentication#generate-a-long-lived-token)으로 실행되는 세션도 머신에 Team 또는 Enterprise 로그인이 저장되어 있더라도 해당 로그인으로 간주되지 않습니다.

64* **가드는 관리 대상을 보호합니다.** 사용자의 mod는 관리형 훅이 받는 내용이나 결정하는 내용, 시스템 프롬프트, 관리형 `CLAUDE.md` 및 기타 관리형 지침, 모든 mod가 설정으로 읽는 내용, 관리형 MCP 서버의 도구와 설명을 변경할 수 없습니다.64* **가드는 관리 대상을 보호합니다.** 사용자의 mod는 관리형 훅이 받는 내용이나 결정하는 내용, 시스템 프롬프트, 관리형 `CLAUDE.md` 및 기타 관리형 지침을 변경할 수 없습니다. 또한 모든 mod가 설정으로 읽는 내용이나, 연결된 후의 관리형 MCP 서버의 도구와 설명도 변경할 수 없습니다.

65* **관리 대상 밖에서는 사용자의 mod가 해당 사용자로서 동작합니다.** mod는 해당 사용자의 권한을 유지합니다. 여전히 파일을 읽고 쓰고, 프로세스를 시작하고, 네트워크 요청을 보낼 수 있습니다. 또한 도구 호출과 프롬프트를 다시 작성하고, 도구 호출을 거부하고, 인터페이스에 그릴 수 있습니다.65* **v2.1.323 이상에서는 사용자의 mod가 관리형 MCP 서버의 연결을 막을 수 있습니다.** 해당 사용자의 세션에서 `/mcp`는 이 서버를 해당 mod가 보류한 것으로 표시합니다. 이를 방지하려면 [사용자가 설치한 mod가 로드되지 않도록 하십시오](#stop-user-installed-mods-from-loading).

66* **관리 대상 밖에서는 사용자의 mod가 해당 사용자로서 동작합니다.** mod는 해당 사용자의 권한을 유지합니다. 여전히 파일을 읽고 쓰고, 프로세스를 시작하고, 네트워크 요청을 보낼 수 있습니다. 또한 도구 호출과 프롬프트를 다시 작성하고, 도구 호출을 거부하고, 도구를 추가하거나 제거하고, 인터페이스에 그릴 수 있습니다.

66* **권한 규칙과 `PreToolUse` 훅이 사용자의 mod보다 우선합니다.** 가드가 로드된 환경에서는 기본적으로 규칙이 어느 설정 파일에 있든 사용자의 mod가 `deny` 규칙이 거부하는 호출이나 `ask` 규칙이 확인을 요청하는 호출을 승인할 수 없습니다. 또한 mod는 어떤 `PreToolUse` 훅이든 차단한 호출을 승인할 수 없습니다.67* **권한 규칙과 `PreToolUse` 훅이 사용자의 mod보다 우선합니다.** 가드가 로드된 환경에서는 기본적으로 규칙이 어느 설정 파일에 있든 사용자의 mod가 `deny` 규칙이 거부하는 호출이나 `ask` 규칙이 확인을 요청하는 호출을 승인할 수 없습니다. 또한 mod는 어떤 `PreToolUse` 훅이든 차단한 호출을 승인할 수 없습니다.

67 68 

68 권한 규칙과 `PreToolUse` 훅은 Claude의 도구 호출에 적용되며, mod의 [`$.fs` 및 `$.process` 호출](https://code.claude.com/docs/ko/plugins/mods/api#reach-files-processes-and-the-network)에는 적용되지 않습니다. `Read(.env)`가 거부되어 있어도 mod는 여전히 `$.fs.read`로 해당 파일을 읽거나 파일을 읽는 프로그램을 시작할 수 있습니다. mod 자체의 `$.fs` 및 `$.process` 호출을 제한하려면 [mod가 로드되지 않도록 하거나](#stop-user-installed-mods-from-loading) [정책 mod](#enforce-a-policy-with-a-mod-of-your-own)에서 호출을 처리하십시오.69 권한 규칙과 `PreToolUse` 훅은 Claude의 도구 호출에 적용되며, mod의 [`$.fs` 및 `$.process` 호출](https://code.claude.com/docs/ko/plugins/mods/api#reach-files-processes-and-the-network)에는 적용되지 않습니다. `Read(.env)`가 거부되어 있어도 mod는 여전히 `$.fs.read`로 해당 파일을 읽거나 파일을 읽는 프로그램을 시작할 수 있습니다. mod 자체의 `$.fs` 및 `$.process` 호출을 제한하려면 [mod가 로드되지 않도록 하거나](#stop-user-installed-mods-from-loading) [정책 mod](#enforce-a-policy-with-a-mod-of-your-own)에서 호출을 처리하십시오.


159출력의 `hooks:` 및 `calls:` 줄이 mod의 코드를 설명합니다.160출력의 `hooks:` 및 `calls:` 줄이 mod의 코드를 설명합니다.

160 161 

161```text theme={null}162```text theme={null}

162 ❯ ./register.js hooks: session.start, tool.call, ui.render{component=Pane}163 ❯ ./register.js hooks: session.start, tool.call, ui.render{component=Pane} (default matcher key: plugin)

163 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open164 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open

164```165```

165 166 

166`hooks:` 줄은 mod가 수신하는 이벤트를 나열합니다. `calls:` 줄은 mod 코드가 호출하는 mods API 메서드를 나열합니다. mod 코드에서 `$`로 표기되는 [mods API](https://code.claude.com/docs/ko/plugins/mods/api.md)는 mod가 파일, 프로세스, 네트워크에 접근하는 수단입니다. Claude Code는 이 명령으로 읽을 수 없는 방식으로 mods API를 사용하는 mod의 로드를 거부합니다.167* **`hooks:`**: mod가 수신하는 이벤트입니다. `default matcher key: plugin` 표기는 그 앞의 훅이 [다른 mod의 컨트롤과 그리기 결과를 건너뛴다는](https://code.claude.com/docs/ko/plugins/mods/events.md#hook-other-mods-drawings-and-controls) 것을 의미합니다.

168* **`calls:`**: mod 코드가 호출하는 mods API 메서드입니다

167 169 

168`calls:` 줄에서 다음 항목을 확인하십시오.170mod 코드에서 `$`로 표기되는 [mods API](https://code.claude.com/docs/ko/plugins/mods/api.md)는 mod가 파일, 프로세스, 네트워크에 접근하는 수단입니다. Claude Code는 이 명령으로 읽을 수 없는 방식으로 mods API를 사용하는 mod의 로드를 거부합니다.

171 

172이 명령에서 실패하는 mod는 승인하지 마십시오. 일부 실패는 mod의 로드를 막지 않기 때문입니다. Claude Code v2.1.323 이상에서 명령을 실행하고(이 버전에서는 긴 목록이 같은 레이블로 여러 줄에 걸쳐 이어집니다), 모든 `hooks:` 및 `calls:` 줄을 읽으십시오. `calls:` 줄에서 다음 항목을 확인하십시오.

169 173 

170| 호출 | 의미 |174| 호출 | 의미 |

171| :- | :- |175| :- | :- |


174| `$.http.fetch` | 네트워크 요청을 보냅니다 |178| `$.http.fetch` | 네트워크 요청을 보냅니다 |

175| `$.env.get`, `$.settings.read` | API 키가 포함될 수 있는 환경 변수와 설정을 읽습니다. 출력의 `env reads:` 줄에 각 변수의 이름이 표시됩니다. |179| `$.env.get`, `$.settings.read` | API 키가 포함될 수 있는 환경 변수와 설정을 읽습니다. 출력의 `env reads:` 줄에 각 변수의 이름이 표시됩니다. |

176| `$.env.set` | Claude Code와 이후 Claude Code가 시작하는 모든 명령 및 MCP 서버에 환경 변수를 설정하며, 이로 인해 해당 프로그램이 실행하는 내용이 바뀔 수 있습니다. `env writes:` 줄에 각 변수의 이름이 표시됩니다. |180| `$.env.set` | Claude Code와 이후 Claude Code가 시작하는 모든 명령 및 MCP 서버에 환경 변수를 설정하며, 이로 인해 해당 프로그램이 실행하는 내용이 바뀔 수 있습니다. `env writes:` 줄에 각 변수의 이름이 표시됩니다. |

177| `$.mcp.call` | 세션의 권한 규칙에 따라 연결된 MCP 서버의 도구를 호출합니다 |181| `$.mcp.call` | 권한 프롬프트 없이 연결된 MCP 서버의 도구를 호출합니다. Claude Code는 거부 규칙 또는 관리형 ask 규칙에 해당하는 호출을 거부합니다. 또한 [`requiresUserInteraction`](https://code.claude.com/docs/ko/mcp#require-approval-for-a-specific-tool)으로 표시된 도구에 대한 호출이나, 조직에서 [`ask`로 설정한](https://code.claude.com/docs/ko/mcp#organization-controls-on-connector-tools) 도구에 대한 호출도 해당 설정이 Claude Code에 적용되는 경우 거부합니다. |

178| `$.model.complete` | 모델 호출에 사용자의 플랜 또는 API 키를 사용합니다 |182| `$.model.complete` | 모델 호출에 사용자의 플랜 또는 API 키를 사용합니다 |

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

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


316 320 

317Claude Code는 도구 실행과 같은 작업을 수행하려 할 때마다 이벤트를 발생시키고 이를 각 mod에 차례로 전달합니다. 조직의 것으로 간주되는 mod는 어디에도 나열하지 않더라도 [사용자 mod보다 먼저 실행됩니다](https://code.claude.com/docs/ko/plugins/mods/events.md#the-order-mods-run-in). 실행 위치를 지정하려면 두 설정 중 하나에 해당 ID를 나열하십시오. ID는 플러그인 이름, `@`, 마켓플레이스 이름으로 구성되며, 예를 들어 `acme-guard@acme-tools`와 같습니다.321Claude Code는 도구 실행과 같은 작업을 수행하려 할 때마다 이벤트를 발생시키고 이를 각 mod에 차례로 전달합니다. 조직의 것으로 간주되는 mod는 어디에도 나열하지 않더라도 [사용자 mod보다 먼저 실행됩니다](https://code.claude.com/docs/ko/plugins/mods/events.md#the-order-mods-run-in). 실행 위치를 지정하려면 두 설정 중 하나에 해당 ID를 나열하십시오. ID는 플러그인 이름, `@`, 마켓플레이스 이름으로 구성되며, 예를 들어 `acme-guard@acme-tools`와 같습니다.

318 322 

319* **`prependPlugins`**: mod가 모든 이벤트를 어떤 사용자 mod보다 먼저 보고 모든 결과를 마지막에 봅니다. 이벤트를 변경하거나, 거부하거나, 사용자 mod를 건너뛸 수 있습니다.323* **`prependPlugins`**: mod가 이벤트를 어떤 사용자 mod보다 먼저 보고, 이벤트의 결과는 사용자 mod 이후에 봅니다. 이벤트를 변경하거나, 거부하거나, 사용자 mod를 건너뛸 수 있습니다. v2.1.323 이상에서는 훅이 여전히 [다른 mod의 컨트롤과 드로잉에 도달하는지](https://code.claude.com/docs/ko/plugins/mods/events.md#hook-other-mods-drawings-and-controls) 확인하십시오.

320* **`appendPlugins`**: mod가 모든 사용자 mod 이후에 실행되므로, 해당 mod들이 전달하는 이벤트만 전달된 형태 그대로 봅니다324* **`appendPlugins`**: mod가 모든 사용자 mod 이후에 실행되므로, 해당 mod들이 전달하는 이벤트만 전달된 형태 그대로 봅니다

321 325 

322다음 예시는 `/opt/acme/claude-plugins`에 `acme-tools` 마켓플레이스를 선언하고, 여기서 `acme-guard`를 활성화한 뒤, 해당 mod를 가장 먼저 실행하고 그다음에 기본 제공 가드를 실행합니다.326다음 예시는 `/opt/acme/claude-plugins`에 `acme-tools` 마켓플레이스를 선언하고, 여기서 `acme-guard`를 활성화한 뒤, 해당 mod를 가장 먼저 실행하고 그다음에 기본 제공 가드를 실행합니다.


359 363 

360다른 mod가 로드되려 할 때마다 mod는 [`plugin.register`](https://code.claude.com/docs/ko/plugins/mods/reference#other-mods)라는 이벤트를 통해 `claude plugin validate`가 출력하는 목록을 받습니다. `prependPlugins`에 있는 mod는 해당 목록을 읽고 mod를 거부할 수 있습니다. 또한 [모든 mods API 호출을 이름으로 처리](https://code.claude.com/docs/ko/plugins/mods/api.md#reach-files-processes-and-the-network)하여 다른 모든 mod에 대해 해당 호출을 기록하거나 거부할 수 있습니다. 이름은 `$.`를 제외한 메서드이므로, `fs.write`에 대한 훅은 모든 `$.fs.write` 호출을 봅니다.364다른 mod가 로드되려 할 때마다 mod는 [`plugin.register`](https://code.claude.com/docs/ko/plugins/mods/reference#other-mods)라는 이벤트를 통해 `claude plugin validate`가 출력하는 목록을 받습니다. `prependPlugins`에 있는 mod는 해당 목록을 읽고 mod를 거부할 수 있습니다. 또한 [모든 mods API 호출을 이름으로 처리](https://code.claude.com/docs/ko/plugins/mods/api.md#reach-files-processes-and-the-network)하여 다른 모든 mod에 대해 해당 호출을 기록하거나 거부할 수 있습니다. 이름은 `$.`를 제외한 메서드이므로, `fs.write`에 대한 훅은 모든 `$.fs.write` 호출을 봅니다.

361 365 

366> [!NOTE]

367>

368> v2.1.323 이상에서 `ui.focus` 훅이 다른 mod의 `$.ui.focus` 호출을 받으려면 더 넓은 matcher가 필요합니다. [다른 mod의 드로잉과 컨트롤 훅하기](https://code.claude.com/docs/ko/plugins/mods/events.md#hook-other-mods-drawings-and-controls)를 참조하십시오.

369 

362이 정책 mod는 자체 코드에서 `$.process.run` 또는 `$.process.spawn`을 호출하는 모든 사용자 mod를 거부합니다. 또한 각 도구 호출과 mod가 쓰는 각 파일을 디버그 로그에 기록하여 감사 로그를 유지합니다. 가장 먼저 실행되므로, 로그에는 사용자 mod가 변경하기 전에 요청된 내용이 기록됩니다. 이를 `acme-guard/hooks/register.js`로 저장하십시오.370이 정책 mod는 자체 코드에서 `$.process.run` 또는 `$.process.spawn`을 호출하는 모든 사용자 mod를 거부합니다. 또한 각 도구 호출과 mod가 쓰는 각 파일을 디버그 로그에 기록하여 감사 로그를 유지합니다. 가장 먼저 실행되므로, 로그에는 사용자 mod가 변경하기 전에 요청된 내용이 기록됩니다. 이를 `acme-guard/hooks/register.js`로 저장하십시오.

363 371 

364```javascript acme-guard/hooks/register.js theme={null}372```javascript acme-guard/hooks/register.js theme={null}


403* **`e.tier`**: mod가 실행될 위치로, `prepend`, `user`, `append`, `builtin` 중 하나입니다. 사용자가 설치하는 모든 mod는 `user`입니다.411* **`e.tier`**: mod가 실행될 위치로, `prepend`, `user`, `append`, `builtin` 중 하나입니다. 사용자가 설치하는 모든 mod는 `user`입니다.

404* **`e.uses.calls`**: mod가 호출하는 mods API 메서드로, 각각 `process.run`과 같이 `namespace.method` 형식으로 작성되며 `claude plugin validate`가 출력하는 `$.`는 포함하지 않습니다412* **`e.uses.calls`**: mod가 호출하는 mods API 메서드로, 각각 `process.run`과 같이 `namespace.method` 형식으로 작성되며 `claude plugin validate`가 출력하는 `$.`는 포함하지 않습니다

405 413 

406사용자가 `$.process.run`을 호출하는 mod를 설치하면 해당 mod는 로드되지 않으며, 사용자의 디버그 로그에는 `refused by acme-guard:`와 지정한 사유로 끝나는 줄이 기록됩니다. 거부 내용은 [플러그인 디렉터리를 핫 리로드하는 세션](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)의 트랜스크립트에도 표시됩니다. mod 전체를 거부하지 않고 특정 호출만 차단하려면 해당 호출 이름에 대한 훅에서 `{ deny: 'your reason' }`을 반환하십시오.414사용자가 `$.process.run`을 호출하는 mod를 설치하면 해당 mod는 로드되지 않으며, 사용자의 디버그 로그에는 `refused by acme-guard:`와 지정한 사유로 끝나는 줄이 기록됩니다. 거부 내용은 [플러그인 디렉터리를 핫 리로드하는 세션](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)의 트랜스크립트에도 표시됩니다.

415 

416mod 전체를 거부하지 않고 특정 호출만 차단하려면, [호출한 주체를 확인](https://code.claude.com/docs/ko/plugins/mods/reference.md#mods-api-calls)한 후 해당 호출 이름에 대한 훅에서 `{ deny: 'your reason' }`을 반환하십시오.

407 417 

408감사 로그 줄을 디버그 로그가 아닌 다른 곳으로 보내려면 같은 훅에서 `$.http.fetch`를 호출하십시오.418감사 로그 줄을 디버그 로그가 아닌 다른 곳으로 보내려면 같은 훅에서 `$.http.fetch`를 호출하십시오.

409 419 

Details

21 21 

22대화형 Claude Code 세션에서 원하는 mod를 설명하면 Claude가 작성합니다. Claude는 `plugin-authoring`이라는 내장 [스킬](https://code.claude.com/docs/ko/skills.md)을 기반으로 작업하며, 이 스킬은 mod를 작성할 위치, 현재 버전에서 사용할 수 있는 이벤트와 메서드, mod가 로드되는 방식을 Claude에게 알려 줍니다. mod를 요청하면 Claude가 스킬을 로드할 수 있으며, Claude Code 프롬프트에서 `/plugin-authoring`을 실행하여 직접 로드할 수도 있습니다.22대화형 Claude Code 세션에서 원하는 mod를 설명하면 Claude가 작성합니다. Claude는 `plugin-authoring`이라는 내장 [스킬](https://code.claude.com/docs/ko/skills.md)을 기반으로 작업하며, 이 스킬은 mod를 작성할 위치, 현재 버전에서 사용할 수 있는 이벤트와 메서드, mod가 로드되는 방식을 Claude에게 알려 줍니다. mod를 요청하면 Claude가 스킬을 로드할 수 있으며, Claude Code 프롬프트에서 `/plugin-authoring`을 실행하여 직접 로드할 수도 있습니다.

23 23 

24`auto` 및 `bypassPermissions` [권한 모드](https://code.claude.com/docs/ko/permission-modes.md)에서는 턴이 끝날 때 mod가 실행될 수 있습니다. 그 외의 경우에는 승인한 후에 실행됩니다. 단, [Claude가 작성한 mod를 로드할 수 없는 세션](#sessions-that-skip-the-approval)은 예외입니다.24`auto` 및 `bypassPermissions` [권한 모드](https://code.claude.com/docs/ko/permission-modes.md)에서는 Claude Code가 [확인을 요청하지 않고 mod를 로드할 수 있습니다](#sessions-that-skip-the-approval). 먼저 확인을 요청받으려면 `default` 또는 `acceptEdits` 모드로 새 세션을 시작하거나, 세션의 첫 번째 mod를 요청하기 전에 두 모드 중 하나로 [전환](https://code.claude.com/docs/ko/permission-modes.md#switch-permission-modes)하십시오. [일부 세션](#sessions-that-cant-load)에서는 mod를 로드할 수 없습니다.

25 25 

26**1. mod 설명하기**26**1. mod 설명하기**

27 27 


33 33 

34**2. mod 승인하기**34**2. mod 승인하기**

35 35 

36Claude가 첫 번째 파일을 저장하면 Claude Code가 해당 세션에서 핫 리로딩을 활성화할지 묻습니다. 핫 리로딩은 이 세션에서 Claude가 작성한 mod를 실행하고 이후의 각 변경 사항을 반영합니다. 질문이 표시되지 않으면 이 단계를 건너뛰십시오.36Claude가 첫 번째 파일을 저장하면 Claude Code가 해당 세션에서 핫 리로딩을 활성화할지 묻습니다. 핫 리로딩은 이 세션에서 Claude가 작성한 mod를 실행하고 이후의 각 변경 사항을 반영합니다. [확인을 요청하지 않고 새 mod를 로드하는](#sessions-that-skip-the-approval) 세션이나 [mod를 로드할 수 없는](#sessions-that-cant-load) 세션에서는 이 질문이 표시되지 않습니다.

37 37 

38다음 중 하나를 선택합니다.38다음 중 하나를 선택합니다.

39 39 


57* **직접 시작하는 세션에서**: 셸에서 `claude --plugin-dir ~/mods/git-branch`를 실행합니다57* **직접 시작하는 세션에서**: 셸에서 `claude --plugin-dir ~/mods/git-branch`를 실행합니다

58* **다른 사람을 위해**: 다른 사람이 설치할 수 있도록 [마켓플레이스에 추가](#share-your-mod)합니다58* **다른 사람을 위해**: 다른 사람이 설치할 수 있도록 [마켓플레이스에 추가](#share-your-mod)합니다

59 59 

60### 확인 요청 없이 mod를 로드하는 세션

61 

62`auto` 및 `bypassPermissions` 모드에서는 Claude Code가 확인을 요청하지 않고 핫 리로딩을 활성화할 수 있으며, 턴이 끝날 때 mod가 로드됩니다.

63 

64대화형으로 또는 `claude -p`로 세션을 재개하면, 해당 세션의 mod 폴더에 이미 있는 mod가 확인 요청 없이 [로드될 수 있습니다](#sessions-that-cant-load). 세션을 재개할 때 mod가 로드되지 않도록 하려면 해당 디렉터리를 삭제하십시오.

65 

60### Claude가 작성한 mod를 로드할 수 없는 세션66### Claude가 작성한 mod를 로드할 수 없는 세션

61 67 

62Claude가 작성한 mod는 mod 실행이 허용된 신뢰할 수 있는 워크스페이스에서 로드되며, 확인을 요청하는 모드에서는 사용자가 승인한 후에 로드됩니다. 다음 세션에서는 로드되지 않습니다.68다음과 같은 경우에는 Claude가 작성한 mod가 로드되지 않으며, Claude Code도 로드할지 묻지 않습니다.

63 69 

64* **승인할 사람이 없는 경우**: `auto` 및 `bypassPermissions` 모드 이외의 모드에서 `claude -p`를 실행하는 경우나 [`dontAsk` 모드](https://code.claude.com/docs/ko/permission-modes)처럼 세션에서 프롬프트를 표시할 수 없는 경우70* **승인할 사람이 없는 경우**: 세션이 [`dontAsk` 모드](https://code.claude.com/docs/ko/permission-modes)이거나, `default` 또는 `acceptEdits` 모드에서 mod를 작성하는 `claude -p` 실행이어서 핫 리로딩 질문을 표시할 수 없는 경우

65* **워크스페이스를 신뢰하지 않는 경우**: 해당 디렉터리에 대한 신뢰 프롬프트를 수락하지 않은 경우71* **워크스페이스를 신뢰하지 않는 대화형 세션**: 해당 디렉터리에 대한 신뢰 프롬프트를 수락하지 않은 경우

66* **mod가 비활성화된 경우**: `--safe-mode` 또는 `--bare`로 시작했거나, `disableAllHooks`를 설정했거나, 조직의 [관리형 설정에서 차단한](https://code.claude.com/docs/ko/plugins/mods/admin.md#choose-how-much-to-allow) 경우72* **mod가 비활성화된 경우**: `--safe-mode` 또는 `--bare`로 시작했거나, `disableAllHooks`를 설정했거나, 조직의 [관리형 설정에서 차단한](https://code.claude.com/docs/ko/plugins/mods/admin.md#choose-how-much-to-allow) 경우

67 73 

68## 직접 mod 작성하기74## 직접 mod 작성하기


292 298 

293`hooks:` 줄에는 모듈이 훅하는 이벤트가 중괄호 안의 필터와 함께 나열됩니다. `calls:` 줄에는 모듈이 호출하는 모든 mods API 메서드가 나열됩니다. 환경 변수를 읽거나 설정하는 모듈에는 `env reads:` 및 `env writes:` 줄도 표시되고, [`$.state`](https://code.claude.com/docs/ko/plugins/mods/interface#keep-state)를 사용하는 모듈에는 `state reads:` 및 `state writes:` 줄이 표시됩니다. 또한 작업을 거부할 수 있는 훅마다 `gating hook without .catch: tool.call`과 같은 줄이 하나씩 표시되며, 이 줄은 해당 훅에 [`.catch` 핸들러](https://code.claude.com/docs/ko/plugins/mods/events#handle-a-hook-that-fails)가 있는지 여부를 알려 줍니다.299`hooks:` 줄에는 모듈이 훅하는 이벤트가 중괄호 안의 필터와 함께 나열됩니다. `calls:` 줄에는 모듈이 호출하는 모든 mods API 메서드가 나열됩니다. 환경 변수를 읽거나 설정하는 모듈에는 `env reads:` 및 `env writes:` 줄도 표시되고, [`$.state`](https://code.claude.com/docs/ko/plugins/mods/interface#keep-state)를 사용하는 모듈에는 `state reads:` 및 `state writes:` 줄이 표시됩니다. 또한 작업을 거부할 수 있는 훅마다 `gating hook without .catch: tool.call`과 같은 줄이 하나씩 표시되며, 이 줄은 해당 훅에 [`.catch` 핸들러](https://code.claude.com/docs/ko/plugins/mods/events#handle-a-hook-that-fails)가 있는지 여부를 알려 줍니다.

294 300 

295처리하려던 이벤트가 첫 번째 줄에 없다면 Claude Code도 해당 훅을 호출하지 않습니다. 일반적인 원인은 이벤트 이름의 오타이며, 이 명령은 이를 `"tool.calls" is not an event`와 같은 오류로 보고합니다.301처리하려던 이벤트가 `hooks:` 줄에 없다면 Claude Code도 해당 훅을 호출하지 않습니다. 일반적인 원인은 이벤트 이름의 오타이며, 이 명령은 이를 `"tool.calls" is not an event`와 같은 오류로 보고합니다.

296 302 

297정적 분석이 모든 훅과 호출을 찾을 수 있도록 다음 규칙을 따르세요.303정적 분석이 모든 훅과 호출을 찾을 수 있도록 다음 규칙을 따르세요.

298 304 

Details

91 91 

92각 이벤트는 matcher당 한 번씩 등록합니다. matcher 없이 `session.start`에 대해 `on`을 두 번 호출하면 모듈이 `on("session.start") is registered twice without a matcher` 오류와 함께 로드에 실패합니다. 세션 시작 시 mod가 수행하는 모든 작업은 하나의 훅에 넣으십시오.92각 이벤트는 matcher당 한 번씩 등록합니다. matcher 없이 `session.start`에 대해 `on`을 두 번 호출하면 모듈이 `on("session.start") is registered twice without a matcher` 오류와 함께 로드에 실패합니다. 세션 시작 시 mod가 수행하는 모든 작업은 하나의 훅에 넣으십시오.

93 93 

94#### 다른 mod의 그리기 요소와 컨트롤에 훅 걸기

95 

96다른 mod의 컨트롤, 창 또는 프롬프트 위의 행에 훅을 걸려면 `plugin`이 포함된 matcher를 전달합니다. `{ plugin: 'other-mod' }`처럼 마켓플레이스를 제외한 mod 이름을 사용하거나, 모든 mod를 대상으로 하려면 `{ plugin: '*' }`를 사용합니다. `plugin`이 없으면 `ui.press`, `ui.input`, `ui.select` 또는 `ui.focus`에 대한 훅은 다른 mod의 컨트롤에 대해 실행되지 않으며, `ui.render` 훅은 다른 mod의 창과 프롬프트 위의 행을 건너뜁니다.

97 

98`on('*', hook)` 또는 `on('ui.*', hook)`처럼 matcher 없이 와일드카드에 건 훅은 여전히 모든 mod에 대해 실행됩니다. matcher가 있는 와일드카드에도 `plugin`이 필요합니다.

99 

100> [!NOTE]

101>

102> `{ plugin: '*' }`는 Claude Code v2.1.323 이상이 필요합니다. v2.1.323 이전에는 `plugin`이 없는 훅이 모든 mod에 대해 실행되었고, `{ plugin: '*' }`가 있는 훅은 실행되지 않았습니다. 두 버전 모두에서 모든 mod와 일치시키려면 `ui.press`, `ui.input`, `ui.select`에는 `{ plugin: /./ }`를 사용합니다. `ui.focus`와 `ui.render`의 경우 `on('ui.*', hook)`을 사용하고, `if (next.event !== 'ui.focus') return next(e)`처럼 `next.event`에서 이벤트 이름을 확인합니다.

103 

94## Claude가 하는 작업에 훅 연결하기104## Claude가 하는 작업에 훅 연결하기

95 105 

96이 이벤트들을 처리하면 도구 호출, 프롬프트, 턴, 설정 읽기가 진행되는 동안 이를 확인하거나 변경할 수 있습니다. 모든 이벤트와 훅이 반환할 수 있는 값은 [이벤트 레퍼런스](https://code.claude.com/docs/ko/plugins/mods/reference.md#events)를 참조하세요.106이 이벤트들을 처리하면 도구 호출, 프롬프트, 턴, 설정 읽기가 진행되는 동안 이를 확인하거나 변경할 수 있습니다. 모든 이벤트와 훅이 반환할 수 있는 값은 [이벤트 레퍼런스](https://code.claude.com/docs/ko/plugins/mods/reference.md#events)를 참조하세요.

Details

177 177 

178## 그릴 위치 선택하기178## 그릴 위치 선택하기

179 179 

180`ui.render` 훅은 그리려는 렌더링 지점 하나로 범위를 좁히지 않으면 모든 렌더링 지점에서 실행됩니다. 렌더링 지점을 선택하려면 [matcher](https://code.claude.com/docs/ko/plugins/mods/events.md#filter-which-events-a-hook-handles)라고 하는 필터를 `on`의 두 번째 인수로 전달합니다. `{ component: 'Pane' }`은 pane에서만 훅을 실행합니다. 훅 안에서 `e.component`는 지점의 이름을, `e.surface`는 어느 앱이 그리고 있는지를 나타내며, `e.props`에는 해당 지점 고유의 데이터가 담깁니다. pane의 경우 `e.requestId`는 pane을 열 때 사용한 `id`입니다.180`ui.render` 훅이 그릴 렌더링 지점을 선택하려면 [matcher](https://code.claude.com/docs/ko/plugins/mods/events.md#filter-which-events-a-hook-handles)라고 하는 필터를 `on`의 두 번째 인수로 전달합니다. `{ component: 'Pane' }`은 pane에서만 훅을 실행합니다. 훅 안에서 `e.component`는 지점의 이름을, `e.surface`는 어느 앱이 그리고 있는지를 나타내며, `e.props`에는 해당 지점 고유의 데이터가 담깁니다. pane의 경우 `e.requestId`는 pane을 열 때 사용한 `id`입니다.

181 181 

182pane과 band는 mod가 채우기 전까지 비어 있습니다. 탭을 선택하여 각각이 무엇이며 어떻게 그리는지 확인하십시오.182pane과 band는 mod가 채우기 전까지 비어 있습니다. 탭을 선택하여 각각이 무엇이며 어떻게 그리는지 확인하십시오.

183 183 


191 191 

192> [tab] 프롬프트 위의 band192> [tab] 프롬프트 위의 band

193>193>

194> band는 프롬프트 입력란 바로 위에 있는 띠 영역입니다. 항상 존재하며 모든 mod가 공유합니다.194> band는 프롬프트 입력란 바로 위에 있는 띠 영역입니다. 그곳에 그리는 각 mod는 자체 행을 가지며, 행은 [mod가 실행되는 순서](https://code.claude.com/docs/ko/plugins/mods/events.md#the-order-mods-run-in)대로 위에서부터 쌓입니다.

195>195>

196> band에 무언가를 표시하려면 훅이 트리를 반환하고, 아무것도 표시하지 않으려면 `next(e)`를 반환합니다. 트리는 [뒤에 실행되는](https://code.claude.com/docs/ko/plugins/mods/events.md#the-order-mods-run-in) mod가 그곳에 그리는 내용을 대체합니다. 다른 mod의 내용을 유지하려면 `await next(e)`의 결과를 트리 안 [`Box`](#build-a-tree-from-elements)의 children에 넣으십시오.196> mod의 행을 그리려면 `{ component: 'AbovePrompt' }`로 필터링하고 [트리](#build-a-tree-from-elements)를 반환합니다. 아무것도 그리지 않으려면 `next(e)`를 반환합니다.

197>197>

198> band에 그리려면 `{ component: 'AbovePrompt' }`로 필터링합니다.198> v2.1.323 이전에는 모든 mod가 band에서 하나의 그리기를 공유했으며, 트리가 뒤에 실행되는 mod가 그린 내용을 대체했습니다. 이러한 릴리스도 지원하려면 `await next(e)`의 결과를 [유효한 상태로 유지되는 `Box`](https://code.claude.com/docs/ko/plugins/mods/troubleshoot#another-mods-band-shows-and-yours-doesnt)의 children에 넣으십시오. v2.1.323 이상에서는 그 자식이 다른 mod의 행을 그리지 않습니다.

199 199 

200mod는 [트랜스크립트에 자체 행을 배치](#place-a-row-in-the-transcript)할 수도 있습니다.200mod는 [트랜스크립트에 자체 행을 배치](#place-a-row-in-the-transcript)할 수도 있습니다.

201 201 


281 281 

282Claude가 작업하는 동안 스피너는 이전처럼 애니메이션되고, 그 아래에 `under the spinner`가 나타납니다.282Claude가 작업하는 동안 스피너는 이전처럼 애니메이션되고, 그 아래에 `under the spinner`가 나타납니다.

283 283 

284권한 프롬프트는 렌더링 지점이 아니므로 mod가 표시 내용을 변경할 수 없습니다. 질문 대화 상자인 `AskUserQuestion`은 렌더링 지점이므로 mod가 변경할 수 있습니다. 대화 상자용 트리는 참조를 정확히 한 번 포함해야 하며, 직접 만든 요소는 그 위에 있어야 합니다. 그렇지 않으면 Claude Code가 자체 대화 상자를 그립니다.284권한 프롬프트는 렌더링 지점이 아니므로 mod가 표시 내용을 변경할 수 없습니다. 질문 대화 상자인 `AskUserQuestion`은 렌더링 지점이므로, Claude가 질문할 때 mod가 해당 대화 상자를 변경할 수 있습니다. 대화 상자용 트리에는 참조가 정확히 한 번 포함되어야 하며, 추가하는 요소는 그 위에 있어야 합니다. 그렇지 않으면 Claude Code가 자체 대화 상자를 그립니다.

285 285 

286### 적절한 시점에 pane 열기286### 적절한 시점에 pane 열기

287 287 

288pane은 mod가 열 때만 나타납니다. pane을 여는 방법과 시점에 따라 키보드 포커스를 가져가는지, 얼마만큼의 공간을 요청하는지, 좁은 터미널에서 표시되는지 여부가 결정됩니다.288pane은 mod가 열 때만 나타납니다. pane을 여는 방법과 시점에 따라 키보드 포커스를 가져가는지, 얼마만큼의 공간을 요청하는지, 좁은 터미널에서 표시되는지 여부가 결정됩니다.

289 289 

290pane을 열려면 직접 정한 `id`로 [`$.ui.open`](https://code.claude.com/docs/ko/plugins/mods/reference#mods-api-methods)을 호출합니다. `id`는 pane의 이름입니다. `ui.render` 훅이 이 값을 확인하며, pane을 닫을 때도 다시 전달합니다.290pane을 열려면 직접 정한 `id`로 [`$.ui.open`](https://code.claude.com/docs/ko/plugins/mods/reference#mods-api-methods)을 호출합니다. `id`는 pane의 이름입니다. `ui.render` 훅이 이 값을 확인하며, pane을 닫을 때도 다시 전달합니다. 다른 mod가 해당 `id`로 pane을 열어 두었다면 호출은 reject됩니다.

291 291 

292```javascript theme={null}292```javascript theme={null}

293await $.ui.open({ id: 'hello-tabs', title: 'Hello tabs', focus: true })293await $.ui.open({ id: 'hello-tabs', title: 'Hello tabs', focus: true })


399 399 

400> [!NOTE]400> [!NOTE]

401>401>

402> `$.theme.set`과 `$.theme.clear`는 Claude Code v2.1.319에서 제거된 `$.ui.backdrop`을 대체합니다. `$.ui.backdrop({ id: 'your-backdrop' })`은 `$.theme.set({ backdrop: { id: 'your-backdrop' } })`로, `$.ui.backdrop(undefined)`는 모든 mod의 배경을 제거하는 `$.theme.clear()`로 변경하십시오.402> `$.theme.set`과 `$.theme.clear`는 Claude Code v2.1.319에서 제거된 `$.ui.backdrop`을 대체합니다. `$.ui.backdrop({ id: 'your-backdrop' })`은 이 섹션의 예제와 같은 `$.theme.set` 호출로, `$.ui.backdrop(undefined)`는 모든 mod의 배경을 제거하는 `$.theme.clear()`로 변경하십시오.

403 403 

404Desktop 앱이나 모바일 앱에서 대화 뒤에 배경을 두려면 `backdrop`과 함께 [`$.theme.set`](https://code.claude.com/docs/ko/plugins/mods/reference#mods-api-methods)을 호출한 다음 [`Backdrop`](https://code.claude.com/docs/ko/plugins/mods/reference#render-sites) 렌더링 지점에서 배경을 그립니다. 배경을 없애려면 `$.theme.clear()`를 호출합니다. 터미널은 배경을 그리지 않습니다. `$.theme.set`과 `$.theme.clear`에는 Claude Code v2.1.319 이상이 필요합니다.404Desktop 앱이나 모바일 앱에서 대화 뒤에 배경을 두려면 `backdrop`과 함께 [`$.theme.set`](https://code.claude.com/docs/ko/plugins/mods/reference#mods-api-methods)을 호출한 다음 [`Backdrop`](https://code.claude.com/docs/ko/plugins/mods/reference#render-sites) 렌더링 지점에서 배경을 그립니다. 배경을 없애려면 `$.theme.clear()`를 호출합니다. 터미널은 배경을 그리지 않습니다. `$.theme.set`과 `$.theme.clear`에는 Claude Code v2.1.319 이상이 필요합니다.

405 405 

406다음 mod는 세션이 시작될 때 배경을 설정하고, 배경을 그리며, 배경을 없애는 `/plain` 명령을 추가합니다.406이 예제에는 Claude Code v2.1.323 이상이 필요하므로 먼저 [버전을 확인](https://code.claude.com/docs/ko/plugins/mods/overview.md#turn-mods-on-or-off)하십시오. 이 mod는 세션이 시작될 때 배경을 설정하고, 배경을 그리며, 배경을 없애는 `/plain` 명령을 추가합니다.

407 407 

408```javascript theme={null}408```javascript theme={null}

409export function register(on) {409export function register(on) {

410 // Neither a reload of this mod nor --resume keeps the backdrop, so set it here410 // Neither a reload of this mod nor --resume keeps the backdrop, so set it here

411 on('session.start', async ($, e, next) => {411 on('session.start', async ($, e, next) => {

412 await $.theme.set({ backdrop: { id: 'night-sky', colorScheme: 'dark' } })412 await $.theme.set({ backdrop: { scene: 'night-sky' }, overrideColorScheme: 'dark' })

413 await $.command.register({ name: 'plain', description: 'Take the backdrop off' })413 await $.command.register({ name: 'plain', description: 'Take the backdrop off' })

414 return next(e)414 return next(e)

415 })415 })

416 416 

417 on('ui.render', { component: 'Backdrop' }, async ($, e, next) => {417 on('ui.render', { component: 'Backdrop' }, async ($, e, next) => {

418 // This hook runs for every mod's backdrop, and another mod can use the same id418 // This hook runs for every mod's backdrop, and another mod can use the same scene

419 if (e.props.plugin !== $.plugin.name || e.props.id !== 'night-sky') return next(e)419 if (e.props.plugin !== $.plugin.name || e.props.scene !== 'night-sky') return next(e)

420 const { Box, Text } = $.ui.resolve(e)420 const { Box, Text } = $.ui.resolve(e)

421 return Box({ backgroundColor: 'blue', children: [Text({ children: ['Night sky'] })] })421 return Box({ backgroundColor: 'blue', children: [Text({ children: ['Night sky'] })] })

422 })422 })


428}428}

429```429```

430 430 

431> [!NOTE]

432>

433> v2.1.323 이전에는 `$.theme.set` 호출과 `e.props`에서 `scene` 대신 `id`를 쓰고, `overrideColorScheme`을 `colorScheme`으로 바꿔 `backdrop` 안으로 옮기십시오.

434 

431예제를 사용해 보려면 이 코드를 [mod](https://code.claude.com/docs/ko/plugins/mods/create.md)에 넣고 Desktop 앱이나 모바일 앱에서 세션을 시작하십시오. 배경을 없애려면 Claude Code 프롬프트에서 `/plain`을 실행합니다. 트랜스크립트에는 mod 이름 뒤에 `the theme is cleared`가 표시됩니다. 예를 들어 이름이 `night-sky`인 mod의 경우 `night-sky: the theme is cleared`로 표시됩니다.435예제를 사용해 보려면 이 코드를 [mod](https://code.claude.com/docs/ko/plugins/mods/create.md)에 넣고 Desktop 앱이나 모바일 앱에서 세션을 시작하십시오. 배경을 없애려면 Claude Code 프롬프트에서 `/plain`을 실행합니다. 트랜스크립트에는 mod 이름 뒤에 `the theme is cleared`가 표시됩니다. 예를 들어 이름이 `night-sky`인 mod의 경우 `night-sky: the theme is cleared`로 표시됩니다.

432 436 

433`backdrop`이 받는 값, 호출 결과가 알려 주는 내용, 다른 mod가 변경할 수 있는 내용을 확인하십시오.437`backdrop`이 받는 값, 호출 결과가 알려 주는 내용, 다른 mod가 변경할 수 있는 내용을 확인하십시오.

434 438 

435* **`backdrop` 필드**: 직접 정하는 [이름](https://code.claude.com/docs/ko/plugins/mods/reference.md#limits)인 `id`는 필수이며, 다른 필드는 선택 사항입니다. `colorScheme`은 `'light'` 또는 `'dark'`이며 그리는 내용이 밝은지 어두운지를 나타냅니다. `glass`에 대해서는 [빌드에 맞는 타입](https://code.claude.com/docs/ko/plugins/mods/create.md#get-the-types-for-your-build)을 참조하십시오.439* **`backdrop` 필드**: `scene`은 훅이 그리는 배경에 대해 직접 정하는 [이름](https://code.claude.com/docs/ko/plugins/mods/reference.md#limits)입니다. 다른 필드와 `overrideColorScheme`에 대해서는 [빌드에 맞는 타입](https://code.claude.com/docs/ko/plugins/mods/create.md#get-the-types-for-your-build)을 참조하십시오.

436* **배경이 그려지는지 여부**: 세션에 연결된 Desktop 또는 모바일 앱이 배경을 그린다고 응답하면 `$.theme.set`은 `isDrawn: true`로 resolve됩니다. 그렇지 않으면 `isDrawn`은 `false`이고 `reason`은 그 이유를 설명합니다.440* **배경이 그려지는지 여부**: 세션에 연결된 Desktop 또는 모바일 앱이 배경을 그린다고 응답하면 `$.theme.set`은 `isDrawn: true`로 resolve됩니다. 그렇지 않으면 `isDrawn`은 `false`이고 `reason`은 그 이유를 설명합니다.

437* **세션당 하나의 배경**: `$.theme.set` 호출은 어느 mod가 설정했든 세션의 배경을 대체하고, `$.theme.clear()`는 그 배경을 제거합니다. `$.theme.clear()`는 사용자가 요청할 때만 호출하십시오.441* **세션당 하나의 배경**: `$.theme.set` 호출은 어느 mod가 설정했든 세션의 배경을 대체하고, `$.theme.clear()`는 그 배경을 제거합니다. `$.theme.clear()`는 사용자가 요청할 때만 호출하십시오.

438 442 


510>514>

511> `rows`를 2 이상으로 설정하면 [여러 줄을 담는 필드](https://code.claude.com/docs/ko/plugins/mods/gallery.md#input)를 만들 수 있습니다.515> `rows`를 2 이상으로 설정하면 [여러 줄을 담는 필드](https://code.claude.com/docs/ko/plugins/mods/gallery.md#input)를 만들 수 있습니다.

512 516 

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

514 518 

515| 요소 | 그리는 내용 | 사용 위치 |519| 요소 | 그리는 내용 | 사용 위치 |

516| :- | :- | :- |520| :- | :- | :- |


606테스트와 다른 mod는 키로 컨트롤을 식별합니다.610테스트와 다른 mod는 키로 컨트롤을 식별합니다.

607 611 

608* **테스트**: [테스트](https://code.claude.com/docs/ko/plugins/mods/test.md#test-a-drawing)는 키를 통해 컨트롤을 누르거나 컨트롤에 입력합니다.612* **테스트**: [테스트](https://code.claude.com/docs/ko/plugins/mods/test.md#test-a-drawing)는 키를 통해 컨트롤을 누르거나 컨트롤에 입력합니다.

609* **다른 mod**: Claude Code는 컨트롤의 콜백을 실행하기 전에 `e.element`에 컨트롤의 키를 담아 [`ui.press`, `ui.input` 또는 `ui.select`](https://code.claude.com/docs/ko/plugins/mods/reference#interface)를 발생시킵니다. 해당 이벤트에 대한 다른 mod의 훅은 사용자가 `Input`에 입력한 내용을 볼 수 있으며, 그 텍스트를 변경하거나 콜백이 실행되지 않도록 할 수 있습니다. mods API는 해당 mod에 이 mod의 버튼을 누르는 메서드를 제공하지 않습니다.613* **다른 mod**: Claude Code는 컨트롤의 콜백을 실행하기 전에 `e.element`에 컨트롤의 키를 담아 [`ui.press`, `ui.input` 또는 `ui.select`](https://code.claude.com/docs/ko/plugins/mods/reference#interface)를 발생시킵니다. 다른 mod의 훅도 [해당 이벤트에 대해 실행](https://code.claude.com/docs/ko/plugins/mods/events.md#hook-other-mods-drawings-and-controls)될 수 있습니다. 그 훅은 사용자가 `Input`에 입력한 내용을 볼 수 있으며, 그 텍스트를 변경하거나 콜백이 실행되지 않도록 할 수 있습니다. mods API는 해당 mod에 이 mod의 버튼을 누르는 메서드를 제공하지 않습니다.

610 614 

611`needs a key` 또는 `is drawn twice`라는 메시지가 표시되면 [해당 메시지로 원인을 찾습니다](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#needs-a-key).615`needs a key` 또는 `is drawn twice`라는 메시지가 표시되면 [해당 메시지로 원인을 찾습니다](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#needs-a-key).

612 616 

Details

208 208 

209### Mods API 호출209### Mods API 호출

210 210 

211모든 [mods API 메서드](#mods-api-methods)는 `fs.read`, `model.complete`, `ui.open`처럼 네임스페이스와 메서드 이름을 딴 이벤트이기도 합니다. 이러한 이벤트의 훅은 그 뒤에 실행되는 mod의 호출을 가로채며, `next(e)`, `{ deny: reason }` 또는 `{ value }`를 반환할 수 있습니다.211모든 [mods API 메서드](#mods-api-methods)는 `fs.read`, `model.complete`, `ui.open`처럼 네임스페이스와 메서드 이름을 딴 이벤트이기도 합니다. 이러한 이벤트의 훅은 `next(e)`, `{ deny: reason }` 또는 `{ value }`를 반환할 수 있습니다.

212 

213이 이벤트 중 일부는 Claude Code 자체의 동작에 대해서도 발생하므로, 이벤트를 거부하기 전에 `next.origin.plugin`이 `engine`인지 확인하세요.

212 214 

213## Mods API 메서드215## Mods API 메서드

214 216 


249| :- | :- | :- | :- |251| :- | :- | :- | :- |

250| [`Pane`](https://code.claude.com/docs/ko/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | 창의 `id` | 터미널, Desktop, VS Code |252| [`Pane`](https://code.claude.com/docs/ko/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | 창의 `id` | 터미널, Desktop, VS Code |

251| [`AbovePrompt`](https://code.claude.com/docs/ko/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | 단일 인스턴스 | 터미널, Desktop |253| [`AbovePrompt`](https://code.claude.com/docs/ko/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | 단일 인스턴스 | 터미널, Desktop |

254| `AbovePromptList`, 즉 `AbovePrompt` 행의 스택 | 각 mod의 행마다 `{ plugin, tree }` 하나씩을 담은 목록인 `rows`, 그리고 `AbovePrompt` prop | 단일 인스턴스 | 터미널, Desktop. Claude Code v2.1.323 이상이 필요합니다. |

252| [`Placed`](https://code.claude.com/docs/ko/plugins/mods/interface#place-a-row-in-the-transcript) | `id`, `plugin`, `onScreen` | `$.ui.place`가 반환한 `requestId` | 터미널 |255| [`Placed`](https://code.claude.com/docs/ko/plugins/mods/interface#place-a-row-in-the-transcript) | `id`, `plugin`, `onScreen` | `$.ui.place`가 반환한 `requestId` | 터미널 |

253| [`Backdrop`](https://code.claude.com/docs/ko/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `id`, `plugin`, `glass`, `colorScheme` | `backdrop` | `desktop` 및 `mobile` 사용 환경. Desktop 또는 모바일 앱이 배경 그리기를 요청할 때 훅이 실행됩니다. |256| [`Backdrop`](https://code.claude.com/docs/ko/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `scene`, `plugin`, `glass`, `overrideColorScheme`. v2.1.323 이전에는 `scene`이 `id`였고 `overrideColorScheme`이 `colorScheme`이었습니다. | `backdrop` | `desktop` 및 `mobile` 사용 환경. Desktop 또는 모바일 앱이 배경 그리기를 요청할 때 훅이 실행됩니다. |

254| `UserMessage` | `text`, `origin`, `isExpanded`, 그리고 origin에 따라 `task` 또는 `from` | 그려진 행의 id | 터미널, Desktop, VS Code |257| `UserMessage` | `text`, `origin`, `isExpanded`, 그리고 origin에 따라 `task` 또는 `from` | 그려진 행의 id | 터미널, Desktop, VS Code |

255| `AssistantMessage` | 응답의 텍스트 | 그려진 행의 id | 터미널, Desktop, VS Code |258| `AssistantMessage` | 응답의 텍스트 | 그려진 행의 id | 터미널, Desktop, VS Code |

256| `ToolUse`, `ToolResult`, `ToolGroup` | 도구의 이름, 입력, 결과 | 도구 호출 id | 터미널, Desktop, VS Code |259| `ToolUse`, `ToolResult`, `ToolGroup` | 도구의 이름, 입력, 결과 | 도구 호출 id | 터미널, Desktop, VS Code |


297* **`action`**: Claude Code 자체의 [키보드 단축키 액션](https://code.claude.com/docs/ko/keybindings.md) 중 하나를 지정하며, 해당 액션에 대한 사용자의 바인딩이 코드(chord) 또는 수정자 키 조합인 경우 그 바인딩으로 버튼이 눌립니다300* **`action`**: Claude Code 자체의 [키보드 단축키 액션](https://code.claude.com/docs/ko/keybindings.md) 중 하나를 지정하며, 해당 액션에 대한 사용자의 바인딩이 코드(chord) 또는 수정자 키 조합인 경우 그 바인딩으로 버튼이 눌립니다

298* **밴드의 숫자 단축키**: 밴드에 있는 버튼의 숫자 `hotkey`는 사용자가 빈 프롬프트에 해당 숫자만 입력하고 잠시 멈출 때도 실행됩니다301* **밴드의 숫자 단축키**: 밴드에 있는 버튼의 숫자 `hotkey`는 사용자가 빈 프롬프트에 해당 숫자만 입력하고 잠시 멈출 때도 실행됩니다

299* **접힌 밴드**: 밴드가 [접혀 있는](https://code.claude.com/docs/ko/plugins/mods/interface.md#when-the-user-collapses-the-band) 동안에는 `action` 바인딩과 단축키 모두 밴드 안의 버튼을 누르지 않습니다302* **접힌 밴드**: 밴드가 [접혀 있는](https://code.claude.com/docs/ko/plugins/mods/interface.md#when-the-user-collapses-the-band) 동안에는 `action` 바인딩과 단축키 모두 밴드 안의 버튼을 누르지 않습니다

300* **하나의 단축키를 지정한 두 버튼**: 하나의 그리기에서 두 버튼이 동일한 `hotkey`를 지정하면 나중의 버튼이 이를 가져갑니다303* **하나의 단축키를 지정한 두 버튼**: 하나의 그리기에서 두 버튼이 동일한 `hotkey`를 지정하면 나중의 버튼이 이를 가져갑니다. 다른 mod의 버튼이 동일한 키를 사용하는 경우는 [단축키가 작동하지 않음](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#hotkeys-do-nothing)을 참조하십시오.

301* **`variant`**: `primary` 또는 `secondary`이며, 그 밖의 값은 오류를 발생시킵니다. 터미널에서 `primary` 버튼은 `plain`이 아닌 한 강조 색상으로 그려집니다.304* **`variant`**: `primary` 또는 `secondary`이며, 그 밖의 값은 오류를 발생시킵니다. 터미널에서 `primary` 버튼은 `plain`이 아닌 한 강조 색상으로 그려집니다.

302* **`role`**: `dismiss`는 닫기 버튼임을 표시하며, 그 밖의 값은 오류를 발생시킵니다. 닫기 동작은 `onPress`에서 직접 처리하십시오. 텍스트와 버튼 행을 포함하는 밴드에서 데스크톱 앱은 해당 행의 첫 번째 `dismiss` 버튼을 자체 닫기 컨트롤로 그릴 수 있습니다. 터미널은 `role`이 없을 때와 동일하게 버튼을 그립니다.305* **`role`**: `dismiss`는 닫기 버튼임을 표시하며, 그 밖의 값은 오류를 발생시킵니다. 닫기 동작은 `onPress`에서 직접 처리하십시오. 텍스트와 버튼 행을 포함하는 밴드에서 데스크톱 앱은 해당 행의 첫 번째 `dismiss` 버튼을 자체 닫기 컨트롤로 그릴 수 있습니다. 터미널은 `role`이 없을 때와 동일하게 버튼을 그립니다.

303 306 


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

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

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

407| 프롬프트 위에 쌓인 행 | 요소, `Raster` 셀, `Image` 바이트는 모든 행에 걸쳐 합산되어 하나의 트리에 대한 제한과 비교됩니다 |

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

405| `$.store` | JSON 총 4 MiB |409| `$.store` | JSON 총 4 MiB |

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


412| `turn.step`의 훅과 같은 [비동기 제너레이터 훅](#events) 외부에서 `next`에 전달되는 변경된 이벤트의 중첩 깊이 | 28,000단계. 이를 넘으면 `next`가 `nesting deeper than 28000 levels is not supported`로 끝나는 메시지와 함께 거부됩니다. Claude Code v2.1.299 이상이 필요합니다. |416| `turn.step`의 훅과 같은 [비동기 제너레이터 훅](#events) 외부에서 `next`에 전달되는 변경된 이벤트의 중첩 깊이 | 28,000단계. 이를 넘으면 `next`가 `nesting deeper than 28000 levels is not supported`로 끝나는 메시지와 함께 거부됩니다. Claude Code v2.1.299 이상이 필요합니다. |

413| `ui.render`, `ui.resolve`, 비동기 제너레이터 훅 외부에서 훅 반환 값의 중첩 깊이 | 28,000단계. 이를 넘으면 훅의 결과가 거부되며, [이를 보고하는 알림](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)에 `nesting deeper than 28000 levels is not supported`가 포함됩니다. Claude Code v2.1.299 이상이 필요합니다. |417| `ui.render`, `ui.resolve`, 비동기 제너레이터 훅 외부에서 훅 반환 값의 중첩 깊이 | 28,000단계. 이를 넘으면 훅의 결과가 거부되며, [이를 보고하는 알림](https://code.claude.com/docs/ko/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)에 `nesting deeper than 28000 levels is not supported`가 포함됩니다. Claude Code v2.1.299 이상이 필요합니다. |

414| 훅 모듈의 한 파일 안에서 서로 중첩된 함수, 블록, 루프 등의 범위 | 2,000 |418| 훅 모듈의 한 파일 안에서 서로 중첩된 함수, 블록, 루프 등의 범위 | 2,000 |

415| 명령, 도구, 서브에이전트 유형 및 창 이름, 그리고 배치된 행 또는 백드롭의 `id` | 문자, 숫자, `_`, `-`로 구성되며 최대 64자 |419| 명령, 도구, 서브에이전트 유형 및 창 이름, 배치된 행의 `id`, 그리고 백드롭의 `scene` | 문자, 숫자, `_`, `-`로 구성되며 최대 64자 |

416| 하나의 `claude plugin test` 테스트 | 테스트에서 `timeoutMs`를 설정하지 않으면 5초 |420| 하나의 `claude plugin test` 테스트 | 테스트에서 `timeoutMs`를 설정하지 않으면 5초 |

417 421 

418## 설정 및 환경 변수422## 설정 및 환경 변수

Details

139 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))139 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))

140 ```140 ```

141 141 

142 스텁을 등록하면 마운트가 성공하며, 훅이 `next(e)`를 반환할 때마다 `ui.find({ type: 'Text' })`가 그 요소를 반환합니다.142 스텁을 등록하면 마운트가 성공하며, 훅이 `next(e)`를 반환할 때마다 `ui.find({ type: 'Text' })`가 그 요소를 반환합니다. v2.1.323 이상에서 밴드의 경우, `{ plugin: 'my-mod' }`처럼 mod 이름을 `on`의 두 번째 인수로 전달합니다. 이 인수가 없으면 스텁이 `next(e)`에 응답하지 않습니다.

143 143 

144* **`turn.step`에 대한 스텁은 비동기 제너레이터**이며, 테스트는 결과를 얻기 위해 스트림을 끝까지 읽습니다.144* **`turn.step`에 대한 스텁은 비동기 제너레이터**이며, 테스트는 결과를 얻기 위해 스트림을 끝까지 읽습니다.

145 145 


192| `$.session.id`, `$.agent.list` | `() => ({ value: 'abc123' })`, `() => ({ value: [] })` |192| `$.session.id`, `$.agent.list` | `() => ({ value: 'abc123' })`, `() => ({ value: [] })` |

193| `session.send` | `() => ({ isDelivered: true })`. mod가 `{ sessionId }`를 전달했더라도 `e.to`는 문자열로 전달됩니다. |193| `session.send` | `() => ({ isDelivered: true })`. mod가 `{ sessionId }`를 전달했더라도 `e.to`는 문자열로 전달됩니다. |

194| `session.receive` | `($, e) => ({ text: e.text })`. `$.session.receive({ origin: { kind: 'peer-send-message' }, text })`로 발생시킵니다. |194| `session.receive` | `($, e) => ({ text: e.text })`. `$.session.receive({ origin: { kind: 'peer-send-message' }, text })`로 발생시킵니다. |

195| `ui.render` | `() => ({ type: 'Text', props: {}, children: ['...'] })` |195| `ui.render` | `() => ({ type: 'Text', props: {}, children: ['...'] })`. 밴드의 경우 [테스트 키트의 규칙 따르기](#follow-the-test-kit’s-rules)의 matcher를 참조하세요. |

196 196 

197### `expect`로 결과 확인하기197### `expect`로 결과 확인하기

198 198 

199키트에는 다음 어설션이 있으며, 선택한 어설션은 `expect(answer.text).toBe('ok')`처럼 확인할 값 뒤에 붙입니다.199`expect`에는 `toEqual`, `toHaveLength` 같은 자체 어설션 세트가 있으며, 어설션은 `expect(answer.text).toBe('ok')`처럼 확인할 값 뒤에 붙입니다. 전체 목록은 [빌드에 맞는 타입](https://code.claude.com/docs/ko/plugins/mods/create.md#get-the-types-for-your-build)의 `claude-code/index.d.ts`에서 `type Matchers`를 검색하여 확인할 수 있습니다. 반대 조건을 확인하려면 어설션 앞에 `.not`을 붙입니다. 프로미스가 어떤 값으로 처리되는지 확인하려면 `expect(...)` 바로 뒤에 `.resolves`나 `.rejects`를 붙이고, `await expect(promise).rejects.toThrow()`처럼 해당 줄을 `await`합니다.

200 

201* **동등성**: 같은 값 또는 객체에는 `toBe`, 구조에는 `toEqual`, 구조와 함께 `undefined` 필드 및 프로토타입까지 확인하려면 `toStrictEqual`, 지정한 필드만 확인하려면 `toMatchObject`

202* **텍스트**: 정규 표현식이나 부분 문자열을 받는 `toMatch`, `toStartWith`, `toEndWith`

203* **숫자**: `toBeGreaterThan`, `toBeGreaterThanOrEqual`, `toBeLessThan`, `toBeLessThanOrEqual`

204* **포함 내용**: 부분 문자열이나 멤버에는 `toContain`, 구조로 비교하는 멤버에는 `toContainEqual`, 그리고 `toHaveLength`, `toHaveProperty`

205* **존재 여부와 타입**: `toBeDefined`, `toBeUndefined`, `toBeNull`, `toBeTruthy`, `toBeFalsy`, `toBeNaN`, `toBeInstanceOf`

206* **예외 발생**: `expect`가 호출하는 함수 또는 `.rejects`로 확인하는 프로미스에 대한 `toThrow`

207 

208반대 조건을 확인하려면 어설션 앞에 `.not`을 붙이고, 프로미스가 어떤 값으로 처리되는지 확인하려면 `.resolves`나 `.rejects`를 붙입니다.

209 200 

210비동기 제너레이터가 아닌 일반 함수로 `on`에 전달한 스텁이나 훅 안에서 `expect`가 실패하면 테스트가 실패합니다. 엔진은 해당 훅을 건너뛰며, 실패 출력에는 `in the test's store.set hook`처럼 그 훅의 이름이 표시됩니다.201비동기 제너레이터가 아닌 일반 함수로 `on`에 전달한 스텁이나 훅 안에서 `expect`가 실패하면 테스트가 실패합니다. 엔진은 해당 훅을 건너뛰며, 실패 출력에는 `in the test's store.set hook`처럼 그 훅의 이름이 표시됩니다.

211 202 

Details

223 223 

224### 다른 mod의 band는 표시되지만 사용자의 mod band는 표시되지 않음224### 다른 mod의 band는 표시되지만 사용자의 mod band는 표시되지 않음

225 225 

226프롬프트 위에는 band가 하나만 있으며 모든 mod가 이를 공유합니다. [사용자의 mod보다 먼저](https://code.claude.com/docs/ko/plugins/mods/events.md#the-order-mods-run-in) 실행되는 mod가 `next(e)`의 결과를 포함하지 않은 트리를 반환하면 사용자의 band를 대체합니다. 두 band를 모두 표시하려면 해당 mod의 훅을 변경하거나 작성자에게 변경을 요청합니다.226프롬프트 위에 그리는 각 mod는 자체 행을 가지므로, 다른 mod의 행은 표시되는데 사용자의 mod 행이 없다면 다음 원인을 확인합니다.

227 227 

228* **뒤에 오는 band 유지**: [그릴 위치 선택](https://code.claude.com/docs/ko/plugins/mods/interface.md#pick-where-to-draw)의 Band above the prompt 탭처럼, `await next(e)`의 결과를 트리 안 `Box`의 자식 중 하나로 넣습니다228* **트리가 유효성 검사를 통과하지 못하는 경우**: [디버그 로그를 작성](#read-the-debug-log)하고 로그에서 [`ui.render hook skipped`](#a-pane-or-band-is-empty) 또는 [`does not validate`](#ui-render-refused)를 검색한 다음, 해당 줄에 명시된 내용을 수정합니다.

229* **트리를 유효하게 유지**: 해당 `Box` 또는 이를 감싸는 어떤 `Box`에도 `width`, `height`, `minWidth`, `minHeight`, `position`, `top`, `left`, `right`, `bottom`, `display`, `overflow` prop을 지정하지 않습니다229* **행을 합친 크기가 제한을 초과하는 경우**: [디버그 로그를 작성](#read-the-debug-log)하고 로그에서 `past the limits of the band`를 검색합니다. 행들은 [하나의 트리 제한을 공유](https://code.claude.com/docs/ko/plugins/mods/reference.md#limits)하므로, 더 작은 트리를 그리거나 다른 mod의 작성자에게 그렇게 하도록 요청합니다.

230* **다른 mod가 사용자의 행을 숨기거나 그 위에 그리는 경우**: 로그에 이러한 줄이 하나도 없다면 다른 mod를 하나씩 [끕니다](https://code.claude.com/docs/ko/plugins/mods/overview.md#turn-mods-on-or-off). 사용자의 행이 다시 나타나면 해당 mod의 작성자에게 변경을 요청합니다.

230 231 

231해당 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보다 앞선 훅도 확인합니다.232v2.1.323 이전에는 모든 mod가 band에서 하나의 그림을 공유했습니다. [사용자의 mod보다 먼저](https://code.claude.com/docs/ko/plugins/mods/events.md#the-order-mods-run-in) 실행된 mod가 `next(e)`의 결과를 포함하지 않은 트리를 반환하면 사용자의 그림을 대체했습니다. Claude Code를 업데이트하거나 해당 mod의 작성자에게 다음과 같이 변경하도록 요청합니다.

232 233 

233mod의 band는 해당 mod의 훅이 반환한 트리가 유효성 검사를 통과하지 못할 때도 표시되지 않으며, 이때 다른 mod의 band는 그대로 유지됩니다. 어떤 mod인지와 그 이유를 확인하려면 [디버그 로그를 작성](#read-the-debug-log)하고 로그에서 [`ui.render hook skipped`](#a-pane-or-band-is-empty)를 검색합니다.234* **뒤에 오는 mod의 그림 유지**: `await next(e)`의 결과를 트리 안 `Box`의 자식 중 하나로 넣습니다

235* **트리를 유효하게 유지**: 해당 `Box` 또는 이를 감싸는 어떤 `Box`에도 `width`, `height`, `minWidth`, `minHeight`, `position`, `top`, `left`, `right`, `bottom`, `display`, `overflow` prop을 지정하지 않습니다

234 236 

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

236 238 


246 248 

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

248 250 

249`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)을 명시한 다음 이유를 표시하며, 이유에는 해당 제한이 명시됩니다.251`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)을 명시한 다음 이유를 표시합니다.

250 252 

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

252 254 

253```text theme={null}255```text theme={null}

254hooks: ui.render (AbovePrompt) refused: deeper than 32; nothing was drawn256hooks: ui.render (AbovePrompt) refused: a row past the limits of the band; nothing was drawn

255```257```

256 258 

259이렇게 끝나더라도 제한에 맞는 행은 그대로 그려집니다.

260 

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

258 262 

259### `needs a key`, `is drawn twice` 또는 `key each once`263### `needs a key`, `is drawn twice` 또는 `key each once`


307 311 

308### 단축키가 작동하지 않음312### 단축키가 작동하지 않음

309 313 

310pane 또는 band에 키보드 포커스가 없거나, 버튼이 접힌 band 안에 있거나, 버튼에 단축키가 없는 VS Code 확장에서 그림이 표시되고 있습니다. 해당하는 방법을 따릅니다.314pane 또는 band에 키보드 포커스가 없거나, 버튼이 접힌 band 안에 있거나, 다른 mod가 같은 키를 사용하거나, VS Code 확장에서 그림이 표시되고 있습니다.

311 315 

312* **키보드 포커스가 없는 경우**: Ctrl+X를 누른 다음 Tab을 누르거나, [전체 화면 렌더링](https://code.claude.com/docs/ko/fullscreen.md)에서는 pane 또는 band를 클릭합니다. pane이 열릴 때 포커스를 받도록 하려면 명령에서 `focus: true`로 pane을 엽니다.316* **키보드 포커스가 없는 경우**: Ctrl+X를 누른 다음 Tab을 누르거나, [전체 화면 렌더링](https://code.claude.com/docs/ko/fullscreen.md)에서는 pane 또는 band를 클릭합니다. pane이 열릴 때 포커스를 받도록 하려면 명령에서 `focus: true`로 pane을 엽니다.

313* **버튼이 접힌 band 안에 있는 경우**: band에 `▸ plugin panel hidden`으로 시작하는 흐린 행 하나가 표시됩니다. 해당 행에 표시된 키(기본값은 Ctrl+X 다음 Ctrl+A)를 눌러 [band를 펼칩니다](#plugin-panel-hidden).317* **버튼이 접힌 band 안에 있는 경우**: band에 `▸ plugin panel hidden`으로 시작하는 흐린 행 하나가 표시됩니다. 해당 행에 표시된 키(기본값은 Ctrl+X 다음 Ctrl+A)를 눌러 [band를 펼칩니다](#plugin-panel-hidden).

314* **VS Code 확장에서**: 버튼을 클릭하거나, 버튼에 포커스가 있을 때 Enter를 누릅니다318* **band에서 다른 mod의 행이 같은 단축키를 사용하는 경우**: 터미널에서 해당 키는 어느 버튼도 누르지 않습니다. 확인하려면 행을 그리는 다른 mod를 키가 작동할 때까지 하나씩 [끕니다](https://code.claude.com/docs/ko/plugins/mods/overview.md#turn-mods-on-or-off). 버튼의 `hotkey`를 변경하거나 해당 mod의 작성자에게 변경을 요청합니다.

319* **버튼에 단축키가 없는 VS Code 확장에서**: 버튼을 클릭하거나, 버튼에 포커스가 있을 때 Enter를 누릅니다

315 320 

316### 그림이 터미널에서는 작동하지만 Desktop 앱이나 VS Code에서는 작동하지 않음321### 그림이 터미널에서는 작동하지만 Desktop 앱이나 VS Code에서는 작동하지 않음

317 322 

Details

36 36 

37![Diagram in two columns joined by five straight arrows. Left, the directory of a plugin named my-plugin, holding a manifest at .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json, and other components. Right, what each file gives you in your session: the manifest sets the plugin name, my-plugin; the skill runs as /my-plugin:review; the agent file is a subagent Claude can delegate to; the hooks file holds hooks that run on lifecycle events; and .mcp.json adds an MCP server that gives Claude tools.](https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max\&auto=format\&n=2Q_GtOEovg5qaBem\&q=85\&s=f623b64e82713b830e48174f0a922888)37![Diagram in two columns joined by five straight arrows. Left, the directory of a plugin named my-plugin, holding a manifest at .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json, and other components. Right, what each file gives you in your session: the manifest sets the plugin name, my-plugin; the skill runs as /my-plugin:review; the agent file is a subagent Claude can delegate to; the hooks file holds hooks that run on lifecycle events; and .mcp.json adds an MCP server that gives Claude tools.](https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max\&auto=format\&n=2Q_GtOEovg5qaBem\&q=85\&s=f623b64e82713b830e48174f0a922888)

38 38 

39플러그인이 보유할 수 있는 모든 구성 요소 유형과 각각의 예시는 [플러그인 구성 요소](https://code.claude.com/docs/ko/plugins/components.md)를 참조하세요. 플러그인의 디렉토리에서 각 부분이 위치한 곳을 확인하려면 해당 페이지의 [플러그인 탐색기](https://code.claude.com/docs/ko/plugins/components.md#explore-the-plugin-directory)를 사용하세요.39플러그인이 보유할 수 있는 구성 요소 유형과 각각의 예시는 [플러그인 구성 요소](https://code.claude.com/docs/ko/plugins/components.md)를 참조하세요. 플러그인의 디렉토리에서 각 부분이 위치한 곳을 확인하려면 해당 페이지의 [플러그인 탐색기](https://code.claude.com/docs/ko/plugins/components.md#explore-the-plugin-directory)를 사용하세요.

40 40 

41### 플러그인이 필요한지 결정하기41### 플러그인이 필요한지 결정하기

42 42 

Details

59 59 

60**5. 사용자가 보는 메타데이터 채우기**60**5. 사용자가 보는 메타데이터 채우기**

61 61 

62`plugin.json`에서 `description`, `author`, `homepage` 및 `repository`를 설정하고, 플러그인 루트에 `README.md`를 추가하세요. `homepage`는 URL로 구문 분석되어야 합니다. [매니페스트 참조](https://code.claude.com/docs/ko/plugins/manifest-reference.md#fields)는 모든 필드를 나열합니다.62`plugin.json`에서 `description`, `author`, `homepage` 및 `repository`를 설정하고, 플러그인 루트에 `README.md`를 추가하세요. `homepage`는 URL로 구문 분석되어야 합니다. 각 필드에 허용되는 값은 [매니페스트 참조](https://code.claude.com/docs/ko/plugins/manifest-reference.md#fields)를 참조하세요.

63 63 

64**6. eval 스위트 실행**64**6. eval 스위트 실행**

65 65 

Details

67> | `--capacity <N>` | 최대 동시 세션 수입니다. 기본값은 32입니다. `--spawn=session`과 함께 사용할 수 없습니다. |67> | `--capacity <N>` | 최대 동시 세션 수입니다. 기본값은 32입니다. `--spawn=session`과 함께 사용할 수 없습니다. |

68> | `--[no-]create-session-in-dir` | 서버가 시작될 때 현재 디렉터리에 세션 하나를 미리 생성하여 즉시 입력할 수 있도록 합니다. `worktree` 모드에서는 이 세션이 현재 디렉터리에 유지되고, 요청 시 생성되는 세션은 격리된 워크트리를 갖습니다. 기본적으로 켜져 있습니다. `--no-create-session-in-dir`을 전달하여 세션 없이 시작하면, 서버를 중지할 때 Claude Code가 서버의 세션을 보관 처리하므로 [재개](#resume-sessions-after-stopping-the-server)할 세션이 남지 않습니다. |68> | `--[no-]create-session-in-dir` | 서버가 시작될 때 현재 디렉터리에 세션 하나를 미리 생성하여 즉시 입력할 수 있도록 합니다. `worktree` 모드에서는 이 세션이 현재 디렉터리에 유지되고, 요청 시 생성되는 세션은 격리된 워크트리를 갖습니다. 기본적으로 켜져 있습니다. `--no-create-session-in-dir`을 전달하여 세션 없이 시작하면, 서버를 중지할 때 Claude Code가 서버의 세션을 보관 처리하므로 [재개](#resume-sessions-after-stopping-the-server)할 세션이 남지 않습니다. |

69> | `--permission-mode <mode>` | 서버 세션의 시작 [권한 모드](https://code.claude.com/docs/ko/permission-modes.md)를 `acceptEdits` 등으로 설정합니다. `manual`을 `default`의 별칭으로 허용합니다. 인식할 수 없는 모드를 지정하면 시작 시 서버가 중지되고 유효한 모드 목록이 표시됩니다. |69> | `--permission-mode <mode>` | 서버 세션의 시작 [권한 모드](https://code.claude.com/docs/ko/permission-modes.md)를 `acceptEdits` 등으로 설정합니다. `manual`을 `default`의 별칭으로 허용합니다. 인식할 수 없는 모드를 지정하면 시작 시 서버가 중지되고 유효한 모드 목록이 표시됩니다. |

70> | `--settings <file>` | JSON 설정 파일을 `claude --settings`와 같은 [우선순위](https://code.claude.com/docs/ko/settings.md#settings-precedence)로 서버의 세션에 적용합니다. JSON 문자열이 아닌 파일 경로를 지정합니다. Claude Code v2.1.321 이상이 필요합니다. |

70> | `--chrome` / `--no-chrome` | 서버가 생성하는 세션에서 [Chrome 통합](https://code.claude.com/docs/ko/chrome.md)을 켜거나 꺼, 다른 기기에서 작업하는 동안 Claude가 사용자 머신의 Chrome을 사용할 수 있도록 합니다. 두 플래그 모두 없으면, [Chrome을 기본으로 활성화](https://code.claude.com/docs/ko/chrome.md#enable-chrome-by-default)한 경우에도 서버가 미리 생성하는 세션과 claude.ai/code 또는 Claude 앱에서 직접 시작하는 세션은 Chrome이 꺼진 상태로 시작합니다. 서버가 [프로젝트](https://code.claude.com/docs/ko/claude-projects.md) 스레드 중 하나를 위해 시작하는 세션은 대신 해당 설정을 따르며, `bypassPermissions` 모드에서는 예외입니다. Claude Code v2.1.273 이상이 필요합니다. |71> | `--chrome` / `--no-chrome` | 서버가 생성하는 세션에서 [Chrome 통합](https://code.claude.com/docs/ko/chrome.md)을 켜거나 꺼, 다른 기기에서 작업하는 동안 Claude가 사용자 머신의 Chrome을 사용할 수 있도록 합니다. 두 플래그 모두 없으면, [Chrome을 기본으로 활성화](https://code.claude.com/docs/ko/chrome.md#enable-chrome-by-default)한 경우에도 서버가 미리 생성하는 세션과 claude.ai/code 또는 Claude 앱에서 직접 시작하는 세션은 Chrome이 꺼진 상태로 시작합니다. 서버가 [프로젝트](https://code.claude.com/docs/ko/claude-projects.md) 스레드 중 하나를 위해 시작하는 세션은 대신 해당 설정을 따르며, `bypassPermissions` 모드에서는 예외입니다. Claude Code v2.1.273 이상이 필요합니다. |

71> | `-d`, `--debug[=<filter>]` | 서버의 디버그 로깅을 켜며, 선택적으로 카테고리별로 필터링할 수 있습니다. 필터는 `--debug=api,hooks`와 같이 `=` 형식으로만 전달합니다. Claude Code v2.1.282 이상이 필요합니다. |72> | `-d`, `--debug[=<filter>]` | 서버의 디버그 로깅을 켜며, 선택적으로 카테고리별로 필터링할 수 있습니다. 필터는 `--debug=api,hooks`와 같이 `=` 형식으로만 전달합니다. Claude Code v2.1.282 이상이 필요합니다. |

72> | `--debug-file <path>` | 디버그 로그를 지정한 파일에 기록합니다. |73> | `--debug-file <path>` | 디버그 로그를 지정한 파일에 기록합니다. |

73> | `--verbose` | 자세한 연결 및 세션 로그를 표시합니다. |74> | `--verbose` | 자세한 연결 및 세션 로그를 표시합니다. |

74> | `--sandbox`, `--no-sandbox` | v2.1.300에서 제거되었습니다. 두 플래그 중 하나를 전달하면 서버가 시작되지 않고 [오류와 함께 종료](https://code.claude.com/docs/ko/errors.md#sandbox-is-not-supported-by-claude-remote-control)됩니다. |75> | `--sandbox`, `--no-sandbox` | v2.1.300에서 제거되었습니다. 두 플래그 중 하나를 전달하면 서버가 시작되지 않고 [오류와 함께 종료](https://code.claude.com/docs/ko/errors.md#sandbox-is-not-supported-by-claude-remote-control)됩니다. |

75>76>

76> `remote-control` 앞에 전역 `claude` 플래그를 전달하거나 래퍼 스크립트가 이를 추가하는 경우, Claude Code는 해당 플래그를 서버가 생성하는 세션으로 전달하지 않습니다. Claude Code는 `--verbose`나 `--model`처럼 플래그를 제외해도 해당 세션이 할 수 있는 일이 바뀌지 않는 것으로 알려진 경우에만 플래그를 허용합니다. `--settings` 등 그 외의 플래그에 대해서는 Claude Code가 [시작을 거부](https://code.claude.com/docs/ko/errors.md#not-carried-over-to-the-sessions-remote-control-starts)하고 제거해야 할 플래그 이름을 알려 줍니다.77> `remote-control` 앞에 전역 `claude` 플래그를 전달하거나 래퍼 스크립트가 이를 추가하는 경우, Claude Code는 해당 플래그를 서버가 생성하는 세션으로 전달하지 않습니다. `--verbose`나 `--model` 등 일부 플래그를 사용하면 서버는 그래도 시작됩니다. 그 외의 플래그를 사용하면 서버가 [시작되지 않습니다](https://code.claude.com/docs/ko/errors.md#not-carried-over-to-the-sessions-remote-control-starts). 설정 파일을 전달하려면 `remote-control` 뒤에 `--settings`를 넣습니다.

77>78>

78> 서버가 시작하는 세션을 샌드박스로 격리하려면 설정 파일에서 [샌드박싱](https://code.claude.com/docs/ko/sandboxing.md)을 켭니다.79> 서버가 시작하는 세션을 샌드박스로 격리하려면 설정 파일에서 [샌드박싱](https://code.claude.com/docs/ko/sandboxing.md)을 켭니다.

79>80>


375* **전달된 대화 상자의 만료**: Claude Code는 권한 프롬프트와 `AskUserQuestion` 질문을 사용자가 응답할 때까지 열어 둡니다. 안전 거부 후 표시되는 모델 선택 프롬프트처럼 다른 종류의 대화 상자를 원격 세션으로 전달할 때는 기본적으로 5분 동안 기다린 다음 대화 상자를 닫고 해당 대화 상자의 무동작 기본값으로 계속 진행합니다. 기한을 조정하거나 비활성화하려면 [`dialogExpiry`](https://code.claude.com/docs/ko/settings-reference#dialogexpiry)를 설정합니다. Claude Code v2.1.224 이상이 필요합니다.376* **전달된 대화 상자의 만료**: Claude Code는 권한 프롬프트와 `AskUserQuestion` 질문을 사용자가 응답할 때까지 열어 둡니다. 안전 거부 후 표시되는 모델 선택 프롬프트처럼 다른 종류의 대화 상자를 원격 세션으로 전달할 때는 기본적으로 5분 동안 기다린 다음 대화 상자를 닫고 해당 대화 상자의 무동작 기본값으로 계속 진행합니다. 기한을 조정하거나 비활성화하려면 [`dialogExpiry`](https://code.claude.com/docs/ko/settings-reference#dialogexpiry)를 설정합니다. Claude Code v2.1.224 이상이 필요합니다.

376* **Fable 사용량 크레딧 동의 프롬프트는 전달되지 않음**: Claude Code는 세션 도중의 [Fable 사용량 크레딧 동의 프롬프트](https://code.claude.com/docs/ko/model-config.md#fable-and-usage-credits)를 사용자의 기기가 아닌 세션이 실행되는 곳에만 표시합니다. 세션이 터미널에서 실행되고 Claude Code가 프롬프트를 닫기 전에 그곳에서 아무도 응답하지 않으면, 요청을 보내지 않고 턴이 종료됩니다. [The prompt to confirm went unanswered](https://code.claude.com/docs/ko/errors.md#the-prompt-to-confirm-went-unanswered)를 참조하세요.377* **Fable 사용량 크레딧 동의 프롬프트는 전달되지 않음**: Claude Code는 세션 도중의 [Fable 사용량 크레딧 동의 프롬프트](https://code.claude.com/docs/ko/model-config.md#fable-and-usage-credits)를 사용자의 기기가 아닌 세션이 실행되는 곳에만 표시합니다. 세션이 터미널에서 실행되고 Claude Code가 프롬프트를 닫기 전에 그곳에서 아무도 응답하지 않으면, 요청을 보내지 않고 턴이 종료됩니다. [The prompt to confirm went unanswered](https://code.claude.com/docs/ko/errors.md#the-prompt-to-confirm-went-unanswered)를 참조하세요.

377* **일부 명령은 로컬 전용**: `/plugin`이나 `/resume`처럼 터미널 인터페이스에서만 실행되는 명령은 인수 전달 여부와 관계없이 로컬 CLI에서만 작동합니다. `/claude-api`도 모바일이나 웹에서 입력하면 사용할 수 없습니다. 다만 그곳에서도 Claude가 [해당 스킬을 스스로 로드](https://code.claude.com/docs/ko/skills.md#work-on-claude-api-projects)할 수는 있습니다. 다음은 모바일과 웹에서 작동합니다.378* **일부 명령은 로컬 전용**: `/plugin`이나 `/resume`처럼 터미널 인터페이스에서만 실행되는 명령은 인수 전달 여부와 관계없이 로컬 CLI에서만 작동합니다. `/claude-api`도 모바일이나 웹에서 입력하면 사용할 수 없습니다. 다만 그곳에서도 Claude가 [해당 스킬을 스스로 로드](https://code.claude.com/docs/ko/skills.md#work-on-claude-api-projects)할 수는 있습니다. 다음은 모바일과 웹에서 작동합니다.

378 * 텍스트 출력 명령: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, `/reload-plugins`. `/usage-credits`는 브라우저를 여는 대신 청구 URL을 출력합니다. `/reload-plugins`는 세션이 대화형 터미널에서 실행될 때만 작동하며, 대화형 터미널이 없는 세션은 이를 거부합니다.379 * 텍스트 출력 명령: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, `/reload-plugins`. `/usage-credits`는 사용량 크레딧을 관리할 수 있는 위치 등을 텍스트로 응답합니다. `/reload-plugins`는 세션이 대화형 터미널에서 실행될 때만 작동하며, 대화형 터미널이 없는 세션은 이를 거부합니다.

379 * `/model`, `/effort`, `/fast`, `/color`, `/rename`: 값을 인수로 전달합니다. 예를 들어 `/model sonnet` 또는 `/effort high`와 같습니다. 모바일과 웹에서 `/model`과 `/effort`는 터미널의 선택기나 슬라이더 대신 인수를 받습니다.380 * `/model`, `/effort`, `/fast`, `/color`, `/rename`: 값을 인수로 전달합니다. 예를 들어 `/model sonnet` 또는 `/effort high`와 같습니다. 모바일과 웹에서 `/model`과 `/effort`는 터미널의 선택기나 슬라이더 대신 인수를 받습니다.

380 * `/mcp`: 모바일 앱에서는 선택기를 여는 대신 서버 상태의 텍스트 요약을 반환합니다. 웹에서는 `/mcp`만 입력하면 요약을 반환하는 대신 [claude.ai 커넥터](https://code.claude.com/docs/ko/mcp.md#use-mcp-servers-from-claude-ai) 디렉터리가 열립니다. `reconnect`, `enable`, `disable` [하위 명령](https://code.claude.com/docs/ko/commands.md#all-commands)은 세션이 대화형 터미널에서 실행될 때 양쪽 모두에서 작동합니다. 서버 이름 없이 `/mcp reconnect`를 실행하면 실패했거나 인증이 필요한 모든 서버를 재시도합니다. 선택기 없이 claude.ai 커넥터를 인가하려면 [Authorize a connector again from your shell](#authorize-a-connector-again-from-your-shell)을 참조하세요.381 * `/mcp`: 모바일 앱에서는 선택기를 여는 대신 서버 상태의 텍스트 요약을 반환합니다. 웹에서는 `/mcp`만 입력하면 요약을 반환하는 대신 [claude.ai 커넥터](https://code.claude.com/docs/ko/mcp.md#use-mcp-servers-from-claude-ai) 디렉터리가 열립니다. `reconnect`, `enable`, `disable` [하위 명령](https://code.claude.com/docs/ko/commands.md#all-commands)은 세션이 대화형 터미널에서 실행될 때 양쪽 모두에서 작동합니다. 서버 이름 없이 `/mcp reconnect`를 실행하면 실패했거나 인증이 필요한 모든 서버를 재시도합니다. 선택기 없이 claude.ai 커넥터를 인가하려면 [Authorize a connector again from your shell](#authorize-a-connector-again-from-your-shell)을 참조하세요.

381 * `/config`: 모바일 앱에서는 `key=value`를 전달하여 설정을 지정하거나, 인수 없이 실행하여 설정할 수 있는 키 목록을 확인합니다. 웹에서는 `/config`가 대신 **Settings > Code** 또는 **Settings > Claude Code**를 엽니다.382 * `/config`: 모바일 앱에서는 `key=value`를 전달하여 설정을 지정하거나, 인수 없이 실행하여 설정할 수 있는 키 목록을 확인합니다. 웹에서는 `/config`가 대신 **Settings > Code** 또는 **Settings > Claude Code**를 엽니다.

routines.md +1 −1

Details

431 431 

432각 예약 작업은 네트워크 액세스, 환경 변수 및 설정 스크립트를 제어하는 [클라우드 환경](https://code.claude.com/docs/ko/cloud-environments.md)을 사용합니다. 작업은 모든 실행에서 환경의 네트워크 정책을 상속합니다.432각 예약 작업은 네트워크 액세스, 환경 변수 및 설정 스크립트를 제어하는 [클라우드 환경](https://code.claude.com/docs/ko/cloud-environments.md)을 사용합니다. 작업은 모든 실행에서 환경의 네트워크 정책을 상속합니다.

433 433 

434**Default** 환경은 **Allow package managers**가 선택된 **Limited** 액세스를 사용하므로, 실행은 [기본 허용 목록](https://code.claude.com/docs/ko/cloud-environments.md#default-allowed-domains)에 접근할 수 있습니다. 차단된 호스트로 보내는 요청은 `403` 및 `x-deny-reason: host_not_allowed`로 실패합니다. MCP 커넥터 트래픽은 Anthropic의 서버를 통해 라우팅되므로, 작업에 추가한 커넥터는 **Allowed domains**에 호스트를 추가하지 않아도 작동합니다. 필요하지 않은 커넥터는 [커넥터](#connectors)에서 제거하십시오.434**Default** 환경은 **Allow package managers**가 선택된 **Limited** 액세스를 사용하므로, 실행은 [기본 허용 목록](https://code.claude.com/docs/ko/cloud-environments.md#default-allowed-domains)에 접근할 수 있습니다. 차단된 호스트로 보내는 요청은 [`403` 또는 `ENOTFOUND`와 같은 오류](https://code.claude.com/docs/ko/errors#host-not-allowed-in-a-cloud-session)로 실패합니다. MCP 커넥터 트래픽은 Anthropic의 서버를 통해 라우팅되므로, 작업에 추가한 커넥터는 **Allowed domains**에 호스트를 추가하지 않아도 작동합니다. 필요하지 않은 커넥터는 [커넥터](#connectors)에서 제거하십시오.

435 435 

436자신의 환경 중 하나에서 추가 도메인을 허용하려면 다음 단계를 따릅니다. [조직 공유 환경](https://code.claude.com/docs/ko/cloud-environments.md#organization-shared-environments)은 여기서 읽기 전용으로 열리므로, Owner가 대신 [관리자 설정](https://claude.ai/admin-settings)의 **Cloud environments** 페이지에서 네트워크 액세스를 변경합니다.436자신의 환경 중 하나에서 추가 도메인을 허용하려면 다음 단계를 따릅니다. [조직 공유 환경](https://code.claude.com/docs/ko/cloud-environments.md#organization-shared-environments)은 여기서 읽기 전용으로 열리므로, Owner가 대신 [관리자 설정](https://claude.ai/admin-settings)의 **Cloud environments** 페이지에서 네트워크 액세스를 변경합니다.

437 437 

sandboxing.md +5 −3

Details

276 276 

277이 경로들은 OS 수준에서 적용되므로 샌드박스 내부에서 실행되는 모든 명령과 그 하위 프로세스가 이를 따릅니다. 도구에 특정 위치에 대한 쓰기 권한이 필요한 경우, `excludedCommands`로 해당 도구를 샌드박스에서 완전히 제외하는 대신 이 방법을 사용하는 것이 권장됩니다.277이 경로들은 OS 수준에서 적용되므로 샌드박스 내부에서 실행되는 모든 명령과 그 하위 프로세스가 이를 따릅니다. 도구에 특정 위치에 대한 쓰기 권한이 필요한 경우, `excludedCommands`로 해당 도구를 샌드박스에서 완전히 제외하는 대신 이 방법을 사용하는 것이 권장됩니다.

278 278 

279Linux 및 WSL2에서는 아직 존재하지 않는 경로에 대한 항목은 효과가 없으므로, 먼저 경로를 생성하세요.

280 

279동일한 파일 시스템 배열을 여러 [설정 범위](https://code.claude.com/docs/ko/settings.md#settings-precedence)에서 정의하면 Claude Code는 이를 병합하며, 한 범위의 배열을 다른 범위의 배열로 대체하는 대신 모든 범위의 경로를 결합합니다. Claude Code는 [개발자가 정책을 넓히지 못하도록 하기](#keep-developers-from-widening-the-policy)의 잠금이 적용되는 항목은 병합에서 제외합니다.281동일한 파일 시스템 배열을 여러 [설정 범위](https://code.claude.com/docs/ko/settings.md#settings-precedence)에서 정의하면 Claude Code는 이를 병합하며, 한 범위의 배열을 다른 범위의 배열로 대체하는 대신 모든 범위의 경로를 결합합니다. Claude Code는 [개발자가 정책을 넓히지 못하도록 하기](#keep-developers-from-widening-the-policy)의 잠금이 적용되는 항목은 병합에서 제외합니다.

280 282 

281CLI에서 [`--setting-sources`](https://code.claude.com/docs/ko/cli-reference)로, 또는 Agent SDK에서 [`settingSources`](https://code.claude.com/docs/ko/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)로 특정 소스를 제외하면, Claude Code는 샌드박스 구성을 만들 때 해당 소스의 `sandbox.filesystem` 항목, `Edit` 권한 규칙, `Read` 거부 규칙을 무시합니다. Claude Code v2.1.246 이상이 필요합니다.283CLI에서 [`--setting-sources`](https://code.claude.com/docs/ko/cli-reference)로, 또는 Agent SDK에서 [`settingSources`](https://code.claude.com/docs/ko/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)로 특정 소스를 제외하면, Claude Code는 샌드박스 구성을 만들 때 해당 소스의 `sandbox.filesystem` 항목, `Edit` 권한 규칙, `Read` 거부 규칙을 무시합니다. Claude Code v2.1.246 이상이 필요합니다.


376 378 

377파일 시스템 격리를 끄면 샌드박스 처리된 명령이 할 수 있는 작업이 넓어지므로, Claude Code는 다음 설정 소스의 `filesystem.disabled`만 적용합니다:379파일 시스템 격리를 끄면 샌드박스 처리된 명령이 할 수 있는 작업이 넓어지므로, Claude Code는 다음 설정 소스의 `filesystem.disabled`만 적용합니다:

378 380 

379* 사용자 설정, 관리형 설정, `--settings` CLI 플래그에서 설정할 수 있습니다. `.claude/settings.json` 및 `.claude/settings.local.json`의 프로젝트 설정에서는 설정할 수 없으므로, 체크아웃한 프로젝트가 파일 시스템 격리를 끌 수 없습니다.381* 사용자 설정, 관리형 설정, `--settings` CLI 플래그에서 설정할 수 있습니다. `.claude/settings.json` 및 `.claude/settings.local.json`의 프로젝트 설정에서는 설정할 수 없습니다.

380* 관리형 설정이 `sandbox.filesystem`을 조금이라도 구성하거나 `"mode": "deny"`인 `sandbox.credentials.files` 항목을 하나라도 나열하는 경우, 관리형 설정만 이 키를 설정할 수 있습니다. 이를 통해 개발자가 이러한 배포에서 파일 시스템 격리를 끌 수 없게 됩니다. 모든 사용자에 대해 파일 시스템 격리를 끄려면 관리형 설정에서 `"disabled": true`를 설정합니다.382* 관리형 설정이 `sandbox.filesystem`을 조금이라도 구성하거나 `"mode": "deny"`인 `sandbox.credentials.files` 항목을 하나라도 나열하는 경우, 관리형 설정만 이 키를 설정할 수 있습니다. 모든 사용자에 대해 파일 시스템 격리를 끄려면 관리형 설정에서 `"disabled": true`를 설정합니다.

381* [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/ko/env-vars)이 설정된 경우, Claude Code는 관리형 설정을 포함한 모든 소스의 `filesystem.disabled`를 무시하고 파일 시스템 격리를 켜 둡니다.383* [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/ko/env-vars)이 설정된 경우, Claude Code는 관리형 설정을 포함한 모든 소스의 `filesystem.disabled`를 무시합니다.

382 384 

383[유효한](https://code.claude.com/docs/ko/settings-reference.md#invalid-credential-entries-in-managed-settings) `mask` 항목은 Claude Code가 시작 시 해당 항목을 [`deny`로 폴백](#mask-credential-files)하더라도 키를 고정하지 않습니다. 자격 증명 디렉터리처럼 마스킹할 수 없는 경로는 관리형 설정에서 명시적인 `deny` 항목으로 나열하면 키가 고정됩니다.385[유효한](https://code.claude.com/docs/ko/settings-reference.md#invalid-credential-entries-in-managed-settings) `mask` 항목은 Claude Code가 시작 시 해당 항목을 [`deny`로 폴백](#mask-credential-files)하더라도 키를 고정하지 않습니다. 자격 증명 디렉터리처럼 마스킹할 수 없는 경로는 관리형 설정에서 명시적인 `deny` 항목으로 나열하면 키가 고정됩니다.

384 386 

Details

117 117 

118* **리스너**: 리스너는 `127.0.0.1`의 포워드 프록시입니다. runner는 컨트롤 플레인에 등록하기 전에 리스너를 시작하며, 리스너를 시작할 수 없으면 시작 시 종료됩니다.118* **리스너**: 리스너는 `127.0.0.1`의 포워드 프록시입니다. runner는 컨트롤 플레인에 등록하기 전에 리스너를 시작하며, 리스너를 시작할 수 없으면 시작 시 종료됩니다.

119* **프록시 변수**: runner는 설정된 `HTTPS_PROXY` 및 `HTTP_PROXY`를 리스너를 가리키도록 다시 씁니다. 다시 쓴 값은 runner 자체, 수명 주기 훅, runner가 실행하는 모든 세션에 전달됩니다.119* **프록시 변수**: runner는 설정된 `HTTPS_PROXY` 및 `HTTP_PROXY`를 리스너를 가리키도록 다시 씁니다. 다시 쓴 값은 runner 자체, 수명 주기 훅, runner가 실행하는 모든 세션에 전달됩니다.

120* **토큰 교체**: 교체된 토큰은 재시작 없이 적용됩니다. 리스너가 프록시로 여는 각 연결마다 runner는 명령을 다시 실행하거나 파일을 다시 읽고, 그 결과를 헤더로 추가합니다.120* **토큰 교체**: 토큰을 교체하면 runner를 재시작하지 않아도 새 연결에는 새 토큰이 사용됩니다. 리스너가 프록시로 여는 각 연결마다 runner는 명령을 다시 실행하거나 파일을 다시 읽고, 그 결과를 헤더로 추가합니다. 이미 열려 있는 연결은 프록시가 해당 연결을 닫거나 runner가 종료될 때까지 이전 토큰으로 계속 사용할 수 있습니다.

121* **세션 환경**: 세션은 리스너를 통해서만 프록시에 도달합니다. 각 세션의 환경에서 runner는 `ALL_PROXY`를 제거하고, 설정하지 않은 모든 표기의 `HTTPS_PROXY` 또는 `HTTP_PROXY`를 제거하며, `NO_PROXY`를 runner 자체의 값으로 고정합니다.121* **세션 환경**: 세션은 리스너를 통해서만 프록시에 도달합니다. 각 세션의 환경에서 runner는 `ALL_PROXY`를 제거하고, 설정하지 않은 모든 표기의 `HTTPS_PROXY` 또는 `HTTP_PROXY`를 제거하며, `NO_PROXY`를 runner 자체의 값으로 고정합니다.

122* **로그**: runner는 헤더 값을 로그에 기록하지 않습니다.122* **로그**: runner는 헤더 값을 로그에 기록하지 않습니다.

123 123 


840 840 

841### 일부 세션이 유휴 상태로 계산되지 않음841### 일부 세션이 유휴 상태로 계산되지 않음

842 842 

843계속 실행되는 백그라운드 작업을 보유한 세션은 유휴 상태로 계산되지 않으므로 `--release-idle-session-min`은 해당 세션의 슬롯을 해제하지 않습니다. 실행 중인 도구 호출 내에서 요청된 승인을 기다리는 세션도 유휴 상태로 계산되지 않습니다. 하드 백스톱으로 `--kill-session-after-min`을 함께 설정합니다.843세션이 유휴 상태로 계산되지 않는 동안에는 `--release-idle-session-min` 제한을 넘어서도 슬롯을 유지하므로 `--kill-session-after-min`도 함께 설정합니다.

844 

845세션은 턴이 끝난 후 또는 턴이 사용자를 기다리는 동안 유휴 상태로 계산되지만, 다음과 같은 경우에는 그렇지 않습니다:

846 

847* 턴이 끝났고 사용자를 기다리고 있지 않지만 백그라운드 작업이 계속 실행되는 경우

848* 턴이 MCP가 아닌 도구가 실행되는 동안 해당 도구가 요청한 승인을 기다리는 경우

849* 턴이 MCP 서버의 [`elicitation/create` 요청](https://code.claude.com/docs/ko/mcp#respond-to-mcp-elicitation-requests)을 기다리는 경우

844 850 

845`--kill-session-after-min`은 폭주 세션에 대한 백스톱입니다. v2.1.260 이상의 러너에서 제한에 도달한 세션은 즉시 종료되지 않습니다. 러너는 기본값 15분의 유예 기간을 제공하며, [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](https://code.claude.com/docs/ko/self-hosted-environments-reference#environment-variable-only-settings)로 변경할 수 있습니다:851`--kill-session-after-min`은 폭주 세션에 대한 백스톱입니다. v2.1.260 이상의 러너에서 제한에 도달한 세션은 즉시 종료되지 않습니다. 러너는 기본값 15분의 유예 기간을 제공하며, [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](https://code.claude.com/docs/ko/self-hosted-environments-reference#environment-variable-only-settings)로 변경할 수 있습니다:

846 852 

847* 세션이 사용자를 기다리고 있으면, 러너는 이를 해제합니다. 턴이 끝났으며 백그라운드 작업만 보유하고 있으면, 러너는 해당 작업이 완료될 때까지 최대 60초 동안 기다린 후 이를 해제합니다. 세션은 사용자가 다음 메시지를 보낼 때 재개됩니다.853* 세션이 사용자를 기다리고 있으면, 러너는 이를 해제합니다. 턴이 끝났으며 백그라운드 작업만 보유하고 있으면, 러너는 해당 작업이 완료될 때까지 최대 60초 동안 기다린 후 이를 해제합니다. 세션은 사용자가 다음 메시지를 보낼 때 재개됩니다.

848* 턴이 여전히 실행 중이면, 러너는 턴이 완료될 때까지 또는 세션이 다음으로 사용자를 기다릴 때까지 기다린 후 해제합니다.854* 턴이 여전히 실행 중이면, 러너는 턴이 완료될 때까지 또는 세션이 다음으로 사용자를 기다릴 때까지 기다린 후 해제합니다.

849* 유예 기간이 끝났을 때 세션이 여전히 러너에 있으면, 러너는 이를 종료하고 실행 중인 턴의 작업은 손실됩니다. 실행 중인 도구 호출 내에서 요청된 승인을 기다리는 턴은 세션이 기간을 초과하는 한 가지 방법입니다.855* 유예 기간이 끝났을 때 세션이 여전히 러너에 있으면, 러너는 이를 종료하고 실행 중인 턴의 작업은 손실됩니다. 예를 들어 턴이 MCP가 아닌 도구가 실행되는 동안 해당 도구가 요청한 승인을 기다리는 경우, 세션은 그때까지 러너에 남아 있을 수 있습니다. 턴이 MCP 서버의 `elicitation/create` 요청을 기다리는 동안에도 세션이 러너에 남아 있을 수 있습니다.

850 856 

851해제된 세션은 새로운 클론에서 재개되므로 푸시하지 않은 작업은 어느 쪽이든 손실됩니다. [재개된 세션이 푸시되지 않은 작업을 손실함](#resumed-sessions-lose-unpushed-work)을 참조합니다. v2.1.260 이전에는 러너가 제한에 도달한 모든 세션을 종료했으며, 실행 중인 턴이 완료될 때까지 최대 유예 기간 동안 기다렸습니다.857해제된 세션은 새로운 클론에서 재개되므로 푸시하지 않은 작업은 어느 쪽이든 손실됩니다. [재개된 세션이 푸시되지 않은 작업을 손실함](#resumed-sessions-lose-unpushed-work)을 참조합니다. v2.1.260 이전에는 러너가 제한에 도달한 모든 세션을 종료했으며, 실행 중인 턴이 완료될 때까지 최대 유예 기간 동안 기다렸습니다.

852 858 

Details

252 252 

253캐시된 `env` 블록의 다른 모든 키는 시작 시 적용됩니다. 서버가 페이로드를 확인한 후, 그리고 [보안 승인](#security-approval-dialogs)이 필요한 경우 승인하면, 보류된 변수는 세션의 나머지 동안 적용됩니다.253캐시된 `env` 블록의 다른 모든 키는 시작 시 적용됩니다. 서버가 페이로드를 확인한 후, 그리고 [보안 승인](#security-approval-dialogs)이 필요한 경우 승인하면, 보류된 변수는 세션의 나머지 동안 적용됩니다.

254 254 

255조직이 `api.anthropic.com`에 도달하기 위해 프록시가 필요한 경우, 보류는 서버에서 전달된 `env` 블록 자체에만 영향을 미칩니다. MDM 또는 `managed-settings.json`을 통해 [엔드포인트 관리](https://code.claude.com/docs/ko/managed-settings.md#delivery-mechanisms) `env` 블록에 설정된 프록시, 셸 환경, 또는 [사용자 설정](https://code.claude.com/docs/ko/settings.md#where-settings-live)에 설정된 프록시는 설정 가져오기에 도달합니다. 엔드포인트 관리 소스에는 Claude Code v2.1.223 이상이 필요합니다. 캐시된 서버 관리 프록시 값은 가져오기가 이를 확인할 때까지 보류되므로, 엔드포인트 관리 값은 키별로 채우고 가져오기 자체에 도달합니다. v2.1.223 이전에는 셸 환경 또는 사용자 설정을 사용하여 프록시가 캐시된 서버 페이로드와 함께 적용되도록 하세요. 첫 시작에는 캐시가 없으므로 초기 가져오기를 위해 엔드포인트 관리 소스, 셸 환경, 또는 사용자 설정이 여전히 필요합니다.255가져오기에 프록시가 필요한 경우, 다음 중 하나에 `HTTPS_PROXY`를 설정하세요:

256 

257* MDM 또는 `managed-settings.json`을 통한 [엔드포인트 관리형](https://code.claude.com/docs/ko/managed-settings.md#delivery-mechanisms) `env` 블록. 이 소스에는 Claude Code v2.1.223 이상이 필요합니다. v2.1.223 이전에는 프록시가 [캐시된 서버 페이로드와 함께 적용되도록](#per-key-exceptions-across-managed-sources) 셸 환경 또는 사용자 설정을 사용하세요.

258* 셸 환경

259* [사용자 설정](https://code.claude.com/docs/ko/settings.md#where-settings-live)

260 

261`ALL_PROXY`가 이미 프록시를 지정하고 있더라도 `HTTPS_PROXY`를 설정하세요.

256 262 

257Claude Code는 대부분의 설정 업데이트를 재시작 없이 실행 중인 세션에 적용합니다. 일부 업데이트는 다음 시작 시에만 적용되며, OpenTelemetry 내보내기 구성, `model` 키, `env` 블록에서 변수 제거를 포함합니다.263Claude Code는 대부분의 설정 업데이트를 재시작 없이 실행 중인 세션에 적용합니다. 일부 업데이트는 다음 시작 시에만 적용되며, OpenTelemetry 내보내기 구성, `model` 키, `env` 블록에서 변수 제거를 포함합니다.

258 264 

settings.md +40 −40

Details

107 107 

108관리자라면 [조직을 위한 Claude Code 설정](https://code.claude.com/docs/ko/admin-setup.md)에서 적용할 항목을 선택하는 과정을 안내하며, [관리형 설정 배포](https://code.claude.com/docs/ko/managed-settings.md)에서 전달 방법과 정책이 적용되었는지 확인하는 방법을 다룹니다. claude.ai 관리자 콘솔의 관리형 설정 편집기에 표시될 수 있는 경고에 대해서는 [서버 관리형 설정 구성](https://code.claude.com/docs/ko/server-managed-settings.md#configure-server-managed-settings)을 참조하세요.108관리자라면 [조직을 위한 Claude Code 설정](https://code.claude.com/docs/ko/admin-setup.md)에서 적용할 항목을 선택하는 과정을 안내하며, [관리형 설정 배포](https://code.claude.com/docs/ko/managed-settings.md)에서 전달 방법과 정책이 적용되었는지 확인하는 방법을 다룹니다. claude.ai 관리자 콘솔의 관리형 설정 편집기에 표시될 수 있는 경고에 대해서는 [서버 관리형 설정 구성](https://code.claude.com/docs/ko/server-managed-settings.md#configure-server-managed-settings)을 참조하세요.

109 109 

110## 설정 변경110## 설정 변경하기

111 111 

112`/config` 메뉴, 설정 파일 편집, 또는 한 세션에 대해 명령줄에서 설정을 변경할 수 있습니다.112설정은 `/config` 메뉴에서 변경하거나, 설정 파일을 편집하여 변경하거나, 명령줄에서 한 세션에 한해 변경할 수 있습니다.

113 113 

114Claude Code의 시스템 프롬프트는 게시되지 않습니다. Claude에 지속적인 지침을 제공하려면 [`CLAUDE.md` 파일](https://code.claude.com/docs/ko/memory) 또는 `--append-system-prompt` 플래그를 사용합니다.114Claude Code의 시스템 프롬프트는 공개되어 있지 않습니다. Claude에게 지속적인 지침을 제공하려면 [`CLAUDE.md` 파일](https://code.claude.com/docs/ko/memory) 또는 `--append-system-prompt` 플래그를 사용합니다.

115 115 

116### /config 메뉴 사용116### /config 메뉴 사용하기

117 117 

118Claude Code 내에서 `/config`를 실행하고 **Config** 탭을 엽니다. 테마, 편집기 모드, 상세 출력과 같은 짧은 개인 옵션 집합을 나열하며, 모든 설정 키는 아닙니다. 옵션을 선택하여 변경합니다. Claude Code가 저장합니다:118Claude Code 안에서 `/config`를 실행하고 **Config** 탭을 엽니다. 이 탭에는 모든 설정 키가 아니라 테마, 에디터 모드, 상세 출력과 같은 소수의 개인 옵션이 나열됩니다. 옵션을 선택하여 변경하면 Claude Code가 다음 위치에 자동으로 저장합니다.

119 119 

120* **대부분의 옵션**: `~/.claude/settings.json`120* **대부분의 옵션**: `~/.claude/settings.json`

121* **팁 표시와 같은 몇 가지 옵션**: `.claude/settings.local.json`121* **Show tips와 같은 일부 옵션**: `.claude/settings.local.json`

122* **[전역 구성 옵션](https://code.claude.com/docs/ko/settings-reference.md#global-config-settings)**: `~/.claude.json`122* **[전역 구성 옵션](https://code.claude.com/docs/ko/settings-reference.md#global-config-settings)**: `~/.claude.json`

123 123 

124메뉴 없이 한 옵션을 설정하려면 `/config verbose=true`와 같이 `key=value`를 전달합니다.124메뉴 없이 옵션 하나를 설정하려면 `/config verbose=true`와 같이 `key=value`를 전달합니다.

125 125 

126> [!NOTE]126> [!NOTE]

127>127>

128> `/config`는 터미널 인터페이스의 일부입니다. [VS Code](https://code.claude.com/docs/ko/vs-code.md) 채팅 패널 및 [데스크톱 앱](https://code.claude.com/docs/ko/desktop.md)은 열지 않습니다. 설정 파일을 편집하거나 해당 앱의 자체 설정을 통해 변경합니다.128> `/config`는 터미널 인터페이스의 일부입니다. [VS Code](https://code.claude.com/docs/ko/vs-code.md) 채팅 패널과 [데스크톱 앱](https://code.claude.com/docs/ko/desktop.md)에서는 이를 열 수 없으므로, 해당 환경에서는 설정 파일을 편집하거나 각 앱 자체의 설정을 통해 설정을 변경합니다.

129 129 

130### 설정 파일 편집130### 설정 파일 편집하기

131 131 

132원하는 범위의 설정 파일을 편집기에서 열고 키를 추가하거나 변경합니다. 설정 파일은 엄격한 JSON입니다: `//` 주석이나 후행 쉼표는 구문 오류이며, Claude Code는 다음 시작에서 파일을 [설정 오류](#fix-a-broken-settings-file)로 보고합니다. 예를 들어 Claude Code가 lint 및 테스트 명령을 묻지 않고 실행하고 `.env` 파일 읽기를 중지하도록 하려면 `~/.claude/settings.json`에 다음을 추가합니다:132원하는 범위의 설정 파일을 에디터에서 열고 키를 추가하거나 변경합니다. 설정 파일은 엄격한 JSON입니다. `//` 주석이나 후행 쉼표는 구문 오류이며, Claude Code는 다음 시작 시 해당 파일을 [Settings Error](#fix-a-broken-settings-file)로 보고합니다. 예를 들어 Claude Code가 묻지 않고 lint 및 test 명령을 실행하도록 허용하고 `.env` 파일을 읽지 못하도록 하려면 `~/.claude/settings.json`에 다음을 추가합니다.

133 133 

134```json ~/.claude/settings.json theme={null}134```json ~/.claude/settings.json theme={null}

135{135{


147}147}

148```148```

149 149 

150`permissions` 아래의 각 항목은 도구와 수행할 수 있는 것을 명명하는 규칙입니다. [권한 구성](https://code.claude.com/docs/ko/permissions.md)은 구문을 설명합니다. `$schema` 줄은 Claude Code 설정에 대한 [게시된 JSON 스키마](https://json.schemastore.org/claude-code-settings.json)를 가리키며, VS Code, Cursor 및 JSON 스키마를 지원하는 다른 편집기에서 자동 완성 및 인라인 검증을 제공합니다. 스키마는 최신 CLI 릴리스보다 뒤떨어질 수 있으므로 최근에 문서화된 키에 대한 검증 경고는 구성이 유효하지 않음을 의미하지 않습니다.150`permissions` 아래의 각 항목은 도구와 해당 도구가 수행할 수 있는 작업을 지정하는 규칙이며, 구문은 [권한 구성하기](https://code.claude.com/docs/ko/permissions.md)에서 설명합니다. `$schema` 줄은 Claude Code 설정용 [공개 JSON 스키마](https://json.schemastore.org/claude-code-settings.json)를 가리키며, 이를 통해 VS Code, Cursor 및 JSON 스키마를 지원하는 기타 에디터에서 자동 완성과 인라인 유효성 검사를 사용할 수 있습니다. 스키마는 최신 CLI 릴리스보다 늦게 반영될 수 있으므로, 최근 문서화된 키에 대한 유효성 검사 경고가 구성이 잘못되었다는 의미는 아닙니다.

151 151 

152저장한 후 Claude Code 내에서 `/status`를 실행하여 파일이 로드되었는지 확인합니다. [로드된 것 확인](#check-what-loaded)은 `Setting sources` 줄이 표시하는 것과 손상된 파일이 보고되는 방식을 설명합니다.152저장한 후 Claude Code 안에서 `/status`를 실행하여 파일이 로드되었는지 확인합니다. `Setting sources` 줄에 표시되는 내용과 손상된 파일이 보고되는 방식은 [로드된 항목 확인하기](#check-what-loaded)에서 설명합니다.

153 153 

154완전한 개인 파일, 팀 파일, 조직 파일은 각각 설정하는 모든 키에 대한 주석과 함께 [예제 설정 파일](https://code.claude.com/docs/ko/settings-example.md)을 참조하세요.154설정하는 모든 키에 주석이 달린 완전한 개인 파일, 팀 파일, 조직 파일은 [예제 설정 파일](https://code.claude.com/docs/ko/settings-example.md)을 참조하세요.

155 155 

156### 한 세션에 대해 설정 변경156### 한 세션에 한해 설정 변경하기

157 157 

158값을 저장하지 않고 시도하려면 Claude Code를 시작할 때 설정합니다. 값은 해당 세션에 적용되고 설정 파일은 그대로 유지됩니다. 3가지 방법이 있습니다:158값을 저장하지 않고 시험해 보려면 Claude Code를 시작할 때 설정합니다. 해당 값은 그 세션에만 적용되며 설정 파일은 그대로 유지됩니다. 방법은 세 가지입니다.

159 159 

160* **`--settings`**: JSON으로 키를 전달하거나 파일 경로로. Claude Code는 사용자, 프로젝트, 로컬 파일 위에 적용하고 관리되는 설정 아래에 적용합니다. 사용자 설정 파일이 설정할 수 있는 모든 키를 설정할 수 있습니다. `Managed` 또는 `Global config` 키는 설정할 수 없습니다.160* **`--settings`**: 키를 JSON으로 인라인 또는 파일 경로로 전달합니다. Claude Code는 이를 사용자, 프로젝트, 로컬 파일보다 위에, 관리형 설정보다 아래에 적용합니다. 사용자 설정 파일에서 설정할 수 있는 모든 키를 설정할 수 있지만, `Managed` 또는 `Global config` 키는 설정할 수 없습니다.

161* **해당 키에 대한 플래그**: 일부 키에는 `model`에 대한 `--model`, `effortLevel` 및 `modelSettings`에 대한 `--effort`와 같은 자체 플래그가 있습니다.161* **해당 키 전용 플래그**: 일부 키에는 `model`에 대한 `--model`, `effortLevel` 및 `modelSettings`에 대한 `--effort`처럼 자체 플래그가 있습니다.

162* **환경 변수**: `model`에 대해 `ANTHROPIC_MODEL`과 같이 `claude`를 실행하기 전에 키의 쌍을 이루는 변수를 내보냅니다.162* **환경 변수**: `claude`를 실행하기 전에 `model`에 대한 `ANTHROPIC_MODEL`처럼 키와 짝을 이루는 변수를 export합니다.

163 163 

164각 키의 [설정 참조](https://code.claude.com/docs/ko/settings-reference.md) 항목은 세션별 재정의 및 우선순위를 나열하므로 변경하려는 키의 항목을 확인합니다.164[설정 참조](https://code.claude.com/docs/ko/settings-reference.md)의 각 키 항목에는 세션별 재정의 방법과 어느 것이 우선하는지가 나와 있으므로, 변경하려는 키의 항목을 확인하세요.

165 165 

166세션 내에서 실행하는 명령은 대부분 선택을 저장합니다: `/config`에서 설정을 변경하면 Claude Code가 설정 파일에 작성하고, `/model`은 새 세션의 기본값으로 값을 저장합니다.166세션 안에서 실행하는 명령은 대부분 선택 사항을 저장합니다. `/config`에서 설정을 변경하면 Claude Code가 이를 설정 파일에 기록하고, `/model`은 해당 값을 새 세션의 기본값으로 저장합니다.

167 167 

168`/model` 선택기에서 `s`를 누르면 Claude Code는 기본값으로 저장하지 않고 모델을 전환합니다. [노력 수준 조정](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)은 `/effort`가 사용 중인 모델의 기본값으로 저장하는 것과 현재 세션에만 적용하는 것을 설명합니다.168`/model` 선택기에서 `s`를 누르면 Claude Code는 모델을 사용자 기본값으로 저장하지 않고 전환합니다. [effort 수준 조정하기](https://code.claude.com/docs/ko/model-config.md#adjust-effort-level)에서는 어떤 `/effort` 선택을 Claude Code가 사용 중인 모델의 기본값으로 저장하고 어떤 선택이 현재 세션에만 적용되는지 설명합니다.

169 169 

170예를 들어 기본값을 변경하지 않고 한 세션을 Opus에서 시작하려면:170예를 들어 기본값을 변경하지 않고 Opus로 세션 하나를 시작하려면 다음과 같이 합니다.

171 171 

172```bash theme={null}172```bash theme={null}

173claude --settings '{"model": "claude-opus-5-5"}'173claude --settings '{"model": "claude-opus-5-5"}'

174```174```

175 175 

176### 편집이 적용되는 시기176### 편집 사항이 적용되는 시점

177 177 

178Claude Code는 설정 파일을 감시하고 변경될 때 다시 로드하므로 대부분의 편집이 재시작 없이 실행 중인 세션에 적용됩니다. 여기에는 `permissions`, `hooks`, `apiKeyHelper`와 같은 자격 증명 도우미에 대한 편집이 포함됩니다. Claude Code는 또한 세션 중에 생성한 설정 파일을 로드합니다. 해당 폴더가 세션 시작 시 존재했다면 말입니다. 프로젝트의 `.claude/` 폴더의 경우 같은 세션에서 폴더를 생성할 때도 파일을 로드합니다.178Claude Code는 설정 파일을 감시하고 변경되면 다시 로드하므로, `permissions`, `hooks` 및 `apiKeyHelper`와 같은 자격 증명 헬퍼에 대한 편집을 포함하여 대부분의 편집 사항을 재시작 없이 실행 중인 세션에 적용합니다. 또한 세션 시작 시 폴더가 존재했다면 세션 도중에 생성한 설정 파일도 로드합니다. 프로젝트의 `.claude/` 폴더의 경우, 같은 세션에서 폴더를 생성하더라도 파일을 로드합니다.

179 179 

180다시 로드는 사용자, 프로젝트, 로컬, 관리되는 설정을 다룹니다. Claude Code는 감지된 각 설정 파일 변경에 대해 [`ConfigChange` hook](https://code.claude.com/docs/ko/hooks#configchange)을 실행하며, MDM 또는 claude.ai 콘솔에서 도착하는 관리되는 설정에 대해서는 실행하지 않습니다. MDM 또는 claude.ai 콘솔에서 도착하는 관리되는 설정은 일정에 따라 실행 중인 세션에 도달합니다. [전달 테이블](https://code.claude.com/docs/ko/managed-settings.md#choose-a-delivery-mechanism)은 소스별로 제공합니다.180다시 로드는 사용자, 프로젝트, 로컬 및 관리형 설정을 대상으로 합니다. Claude Code는 설정 파일을 직접 편집한 경우 [`ConfigChange` 훅](https://code.claude.com/docs/ko/hooks#configchange)을 실행하며, MDM 또는 claude.ai 콘솔에서 전달되는 관리형 설정에 대해서는 실행하지 않습니다. MDM을 통해 또는 claude.ai 콘솔에서 전달되는 관리형 설정은 저장 시점이 아니라 일정에 따라 실행 중인 세션에 반영되며, 소스별 일정은 [전달 표](https://code.claude.com/docs/ko/managed-settings.md#choose-a-delivery-mechanism)에 나와 있습니다.

181 181 

182Claude Code는 일부 키를 세션 시작 시에만 한 번 읽으므로 편집이 실행 중인 세션에 도달하지 않습니다. 관리자 측 키도 `requiredMinimumVersion`과 같이 재시작을 기다립니다. [정책이 적용되는 위치와 시기](https://code.claude.com/docs/ko/managed-settings.md#where-and-when-a-policy-applies)에 나열됩니다. 세션 중에 편집할 가능성이 가장 높은 것:182Claude Code는 일부 키를 세션 시작 시 한 번만 읽으므로, 이러한 키를 편집해도 실행 중인 세션에는 반영되지 않습니다. `requiredMinimumVersion`처럼 재시작을 기다려야 하는 관리자 측 키는 [정책이 적용되는 위치와 시점](https://code.claude.com/docs/ko/managed-settings.md#where-and-when-a-policy-applies)에 나와 있습니다. 세션 도중에 편집할 가능성이 가장 높은 키는 다음과 같습니다.

183 183 

184* [`model`](https://code.claude.com/docs/ko/settings-reference#model): 세션 중에 전환하려면 [`/model`](https://code.claude.com/docs/ko/model-config#setting-your-model)을 사용합니다. 각 모델에는 자체 프롬프트 캐시가 있으므로 전환 후 첫 요청은 전체 대화를 캐시되지 않은 상태로 다시 읽습니다. [모델 전환](https://code.claude.com/docs/ko/prompt-caching.md#switching-models)을 참조하세요184* [`model`](https://code.claude.com/docs/ko/settings-reference#model): 세션 도중에 전환하려면 [`/model`](https://code.claude.com/docs/ko/model-config#setting-your-model)을 사용합니다. 각 모델에는 자체 프롬프트 캐시가 있으므로, 전환 후 첫 번째 요청은 전체 대화를 캐시 없이 다시 읽습니다. [모델 전환](https://code.claude.com/docs/ko/prompt-caching.md#switching-models)을 참조하세요

185* [`effortLevel`](https://code.claude.com/docs/ko/settings-reference#effortlevel) 및 [`modelSettings`](https://code.claude.com/docs/ko/settings-reference#modelsettings): 세션 중에 변경하려면 [`/effort`](https://code.claude.com/docs/ko/model-config#adjust-effort-level)를 사용합니다185* [`effortLevel`](https://code.claude.com/docs/ko/settings-reference#effortlevel) 및 [`modelSettings`](https://code.claude.com/docs/ko/settings-reference#modelsettings): 세션 도중에 effort를 변경하려면 [`/effort`](https://code.claude.com/docs/ko/model-config#adjust-effort-level)를 사용합니다

186 186 

187세션 중에 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ko/settings-reference#permissions-blockreadsoutsideworkingdirectories)를 제거해도 파일 도구는 실행 중인 세션에서 차단을 유지합니다. 차단을 해제하려면 이 키를 설정하는 모든 설정 파일에서 키를 제거한 다음 실행 중인 각 세션을 다시 시작합니다.187세션 도중에 [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ko/settings-reference#permissions-blockreadsoutsideworkingdirectories)를 제거하더라도 파일 도구는 실행 중인 세션에서 차단을 유지합니다. 차단을 해제하려면 해당 키를 설정하는 모든 설정 파일에서 키를 제거한 다음, 실행 중인 각 세션을 재시작합니다.

188 188 

189### 로드된 것 확인189### 로드된 항목 확인하기

190 190 

191Claude Code 내에서 `/status`를 실행하여 활성 설정 소스를 확인합니다. **Status** 탭에는 Claude Code가 현재 세션에 로드한 각 설정 파일을 나열하는 `Setting sources` 줄이 포함됩니다. 예: `User settings` 또는 `Project local settings`. [관리되는 설정](https://code.claude.com/docs/ko/admin-setup.md#decide-how-settings-reach-devices)이 적용되면 관리되는 설정 항목은 괄호에 도달 방식을 표시합니다.191Claude Code 안에서 `/status`를 실행하면 어떤 설정 소스가 활성 상태인지 확인할 수 있습니다. **Status** 탭에는 `User settings` 또는 `Project local settings`처럼 Claude Code가 현재 세션에 로드한 각 설정 파일을 나열하는 `Setting sources` 줄이 있습니다. [관리형 설정](https://code.claude.com/docs/ko/admin-setup.md#decide-how-settings-reach-devices)이 적용 중인 경우, 관리형 설정 항목에는 해당 설정이 컴퓨터에 전달된 방식이 괄호 안에 표시됩니다.

192 192 

193줄은 Claude Code가 읽은 파일을 확인합니다. 각 키를 제공한 파일은 표시하지 않습니다. Claude Code가 거부한 항목을 나열하려면 [`claude doctor`](https://code.claude.com/docs/ko/debug-your-config)를 실행합니다. 프로젝트 또는 관리되는 설정이 설정한 모델의 경우 시작 헤더가 설정한 파일의 이름을 지정합니다. `/status`와 `/config`는 다른 탭에서 동일한 대화를 엽니다. **Config** 탭은 `settings.json` 내용의 보기가 아닙니다.193이 줄은 Claude Code가 어떤 파일을 읽었는지 확인해 줄 뿐, 각 키를 어느 파일이 제공했는지는 표시하지 않습니다. Claude Code가 거부한 항목을 나열하려면 [`claude doctor`](https://code.claude.com/docs/ko/debug-your-config)를 실행합니다. 프로젝트 또는 관리형 설정에서 설정한 모델의 경우, 시작 헤더에 해당 모델을 설정한 파일이 표시됩니다. `/status`와 `/config`는 같은 대화 상자를 서로 다른 탭으로 열며, **Config** 탭은 `settings.json` 내용을 보여 주는 화면이 아닙니다.

194 194 

195### 손상된 설정 파일 수정195### 손상된 설정 파일 수정하기

196 196 

197JSON을 잘못 입력하거나 Claude Code가 수락하지 않는 값으로 키를 설정하면 Claude Code는 대화형 세션 시작 시 알려줍니다. 표시되는 것은 파일의 얼마나 많은 부분이 영향을 받는지에 따라 다릅니다:197JSON을 잘못 입력하거나 Claude Code가 허용하지 않는 값으로 키를 설정하면, Claude Code는 대화형 세션을 시작할 때 이를 알려 줍니다. 표시되는 내용은 파일이 영향을 받은 정도에 따라 다릅니다.

198 198 

199* **설정 오류**: 사용자, 프로젝트 또는 로컬 파일에 유효하지 않은 JSON 또는 스키마가 거부하는 값이 있습니다. 대화형 세션 시작 시 Claude Code는 Claude의 도움으로 파일을 수정하거나, 종료하거나, 손상된 설정 없이 계속할 수 있는 대화를 표시합니다.199* **Settings Error**: 사용자, 프로젝트 또는 로컬 파일에 잘못된 JSON이나 스키마가 거부하는 값이 있습니다. 대화형 세션을 시작할 때 Claude Code는 Claude의 도움을 받아 파일을 수정하거나, 종료하거나, 손상된 설정 없이 계속할 수 있는 대화 상자를 표시합니다.

200* **설정 경고**: 개별 항목만 실패합니다. 예: 잘못된 형식의 권한 규칙 또는 알 수 없는 hook 이벤트 이름. Claude Code는 해당 값을 건너뛰고 파일의 나머지를 유지합니다.200* **Settings Warning**: 잘못된 형식의 권한 규칙이나 알 수 없는 훅 이벤트 이름처럼 개별 항목만 실패한 경우입니다. Claude Code는 해당 값을 건너뛰고 파일의 나머지 부분은 계속 적용합니다.

201* **관리되는 설정**: Claude Code는 파일의 나머지를 적용합니다. [관리되는 설정의 유효하지 않은 항목](https://code.claude.com/docs/ko/managed-settings.md#invalid-entries-in-managed-settings)은 삭제되는 것과 유효하지 않은 항목을 수정할 때까지 폴백하는 키를 설명합니다. 유효한 JSON이 아닌 관리되는 설정 문서는 [관리되는 설정 문서를 파싱할 수 없음](https://code.claude.com/docs/ko/errors.md#managed-settings-document-could-not-be-parsed)을 참조하세요.201* **관리형 설정**: Claude Code는 파일의 나머지 부분을 계속 적용합니다. [관리형 설정의 잘못된 항목](https://code.claude.com/docs/ko/managed-settings.md#invalid-entries-in-managed-settings)에서는 무엇이 제외되는지, 그리고 수정할 때까지 어떤 키가 더 엄격한 값으로 대체되는지 설명합니다. 유효한 JSON이 아닌 관리형 설정 문서에 대해서는 [Managed settings document could not be parsed](https://code.claude.com/docs/ko/errors.md#managed-settings-document-could-not-be-parsed)를 참조하세요.

202* **구성 오류**: [`~/.claude.json`](https://code.claude.com/docs/ko/claude-directory#ce-claude-json)을 파싱할 수 없습니다. `claude -p` 실행은 종료됩니다. 이전 사본을 복원하려면 [\~/.claude.json의 구성 오류](https://code.claude.com/docs/ko/errors.md#configuration-error-in-claude-json)를 참조하세요. Claude Code는 손상된 파일을 `~/.claude/backups/.claude.json.corrupted.<timestamp>`에 복사하고, 대화형 세션에서는 종료하고 수정할지 기본 구성으로 재설정할지 묻습니다. 파일이 비어 있고 복원할 백업이 없으면 Claude Code는 기본 설정으로 시작합니다.202* **Configuration error**: [`~/.claude.json`](https://code.claude.com/docs/ko/claude-directory#ce-claude-json)을 구문 분석할 수 없습니다. `claude -p` 실행은 종료됩니다. 이전 사본을 복원하려면 [Configuration error in \~/.claude.json](https://code.claude.com/docs/ko/errors.md#configuration-error-in-claude-json)을 참조하세요. Claude Code는 손상된 파일을 `~/.claude/backups/.claude.json.corrupted.<timestamp>`에 복사하고, 대화형 세션에서는 종료하여 파일을 수정할지 기본 구성으로 재설정할지 묻습니다. 파일이 비어 있고 복원할 백업이 없으면 Claude Code는 기본 설정으로 시작합니다.

203 203 

204계속한 후 `/status`를 실행하여 영향을 받는 파일을 확인하고 각 오류의 세부 사항을 보려면 `claude doctor`를 실행합니다.204계속한 후에는 `/status`를 실행하여 영향을 받은 파일을 확인하고, `claude doctor`를 실행하여 각 오류의 세부 정보를 확인합니다.

205 205 

206`-p` 실행은 대화 상자를 표시하지 않습니다. [관리형 설정 문서를 파싱할 수 없는](https://code.claude.com/docs/ko/errors.md#managed-settings-document-could-not-be-parsed) 경우가 아니면 Claude Code는 손상된 사용자, 프로젝트 또는 로컬 파일이나 그 손상된 값을 건너뛰고 나머지로 계속합니다. 설정을 무시한 `-p` 실행 후에는 터미널에서 `claude doctor`를 실행하여 삭제된 항목을 확인합니다.206`-p` 실행에서는 대화 상자가 표시되지 않습니다. [관리형 설정 문서를 구문 분석할 수 없는 경우](https://code.claude.com/docs/ko/errors.md#managed-settings-document-could-not-be-parsed)를 제외하고, Claude Code는 손상된 사용자, 프로젝트 또는 로컬 파일이나 그 안의 손상된 값을 건너뛰고 나머지로 계속 진행합니다. 설정을 무시한 `-p` 실행 후에는 터미널에서 `claude doctor`를 실행하여 무엇이 제외되었는지 확인합니다.

207 207 

208## 설정 우선순위208## 설정 우선순위

209 209 

Details

235| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | 사용자 및 프로젝트 소스의 [MCP 서버](https://code.claude.com/docs/ko/mcp.md)를 차단합니다 | 플러그인 및 스킬 | 관리형 |235| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | 사용자 및 프로젝트 소스의 [MCP 서버](https://code.claude.com/docs/ko/mcp.md)를 차단합니다 | 플러그인 및 스킬 | 관리형 |

236| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | 사용자 및 프로젝트 소스의 [스킬](https://code.claude.com/docs/ko/skills.md)을 차단합니다 | 플러그인 및 스킬 | 관리형 |236| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | 사용자 및 프로젝트 소스의 [스킬](https://code.claude.com/docs/ko/skills.md)을 차단합니다 | 플러그인 및 스킬 | 관리형 |

237| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | 서브에이전트 및 기본 대화 외부의 기타 요청에 대한 [프롬프트 캐시 수명](https://code.claude.com/docs/ko/prompt-caching.md#cache-lifetime)을 선택합니다 | 모델 및 응답 | 모든 파일 |237| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | 서브에이전트 및 기본 대화 외부의 기타 요청에 대한 [프롬프트 캐시 수명](https://code.claude.com/docs/ko/prompt-caching.md#cache-lifetime)을 선택합니다 | 모델 및 응답 | 모든 파일 |

238| [`subagentStatusLine`](#subagentstatusline) | 직접 지정한 명령으로 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md) 작업 표시의 행을 다시 작성합니다 | 인터페이스 및 터미널 | 모든 파일 |

239| [`switchModelsOnFlag`](#switchmodelsonflag) | [안전 분류기](https://code.claude.com/docs/ko/model-config.md#ask-before-switching)가 요청에 플래그를 지정하면 모델을 자동으로 전환하거나 일시 중지합니다 | 모델 및 응답 | 모든 파일 |238| [`switchModelsOnFlag`](#switchmodelsonflag) | [안전 분류기](https://code.claude.com/docs/ko/model-config.md#ask-before-switching)가 요청에 플래그를 지정하면 모델을 자동으로 전환하거나 일시 중지합니다 | 모델 및 응답 | 모든 파일 |

240| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | [claude.ai 계정에서 활성화된 플러그인](https://code.claude.com/docs/ko/plugins/loading.md#synced-plugins) 로드를 중지하고 새 플러그인 다운로드를 중지합니다 | 플러그인 및 스킬 | 사용자, 로컬 또는 관리형 |239| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | [claude.ai 계정에서 활성화된 플러그인](https://code.claude.com/docs/ko/plugins/loading.md#synced-plugins) 로드를 중지하고 새 플러그인 다운로드를 중지합니다 | 플러그인 및 스킬 | 사용자, 로컬 또는 관리형 |

241| [`syncClaudeAiSkills`](#syncclaudeaiskills) | [claude.ai 계정에서 활성화된 스킬](https://code.claude.com/docs/ko/skills.md#how-synced-skills-behave) 로드를 중지하고 새 스킬 다운로드를 중지합니다 | 플러그인 및 스킬 | 사용자, 로컬 또는 관리형 |240| [`syncClaudeAiSkills`](#syncclaudeaiskills) | [claude.ai 계정에서 활성화된 스킬](https://code.claude.com/docs/ko/skills.md#how-synced-skills-behave) 로드를 중지하고 새 스킬 다운로드를 중지합니다 | 플러그인 및 스킬 | 사용자, 로컬 또는 관리형 |


885}884}

886```885```

887 886 

888[모든 셸 명령을 분류기로 라우팅](https://code.claude.com/docs/ko/auto-mode-config.md#route-all-shell-commands-through-the-classifier)을 참조하십시오.887이 키는 Code Mode 세션에서 다르게 작동합니다. [모든 셸 명령을 분류기로 라우팅](https://code.claude.com/docs/ko/auto-mode-config.md#route-all-shell-commands-through-the-classifier)을 참조하십시오.

889 888 

890### `disableAutoMode`889### `disableAutoMode`

891 890 


1533}1532}

1534```1533```

1535 1534 

1535Linux와 WSL2에서는 아직 존재하지 않는 경로에 대한 항목은 효과가 없으므로 먼저 경로를 만드십시오.

1536 

1536Claude Code는 세션이 로드하는 설정 범위 전체에서 `allowWrite` 항목과 `Edit(...)` 허용 권한 규칙의 경로를 병합하며, [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block)가 켜져 있는 동안 저장소 설정의 항목을 제외합니다. [저장소 잠금](https://code.claude.com/docs/ko/sandboxing.md#repository-settings-under-an-admin-required-sandbox)도 저장소의 항목을 제외할 수 있습니다. `allowWrite` 항목은 [보호된 경로](https://code.claude.com/docs/ko/sandboxing.md#protected-paths)를 해제할 수 없습니다.1537Claude Code는 세션이 로드하는 설정 범위 전체에서 `allowWrite` 항목과 `Edit(...)` 허용 권한 규칙의 경로를 병합하며, [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block)가 켜져 있는 동안 저장소 설정의 항목을 제외합니다. [저장소 잠금](https://code.claude.com/docs/ko/sandboxing.md#repository-settings-under-an-admin-required-sandbox)도 저장소의 항목을 제외할 수 있습니다. `allowWrite` 항목은 [보호된 경로](https://code.claude.com/docs/ko/sandboxing.md#protected-paths)를 해제할 수 없습니다.

1537 1538 

1538### `sandbox.filesystem.denyWrite`1539### `sandbox.filesystem.denyWrite`


2453 2454 

2454#### `env` 값이 셸과 상호작용하는 방식2455#### `env` 값이 셸과 상호작용하는 방식

2455 2456 

2456* 여기의 값은 셸에서 내보낸 동일한 변수를 덮어쓰며, 둘 이상의 설정 파일이 변수를 설정할 때 [가장 높은 우선순위](https://code.claude.com/docs/ko/settings.md#settings-precedence)가 적용됩니다. [Claude Code가 `env`에서 무시하는 변수](#variables-claude-code-ignores-in-env)는 프로젝트 및 로컬 설정의 예외를 나열합니다.2457* 여기의 값은 셸에서 내보낸 동일한 변수를 덮어쓰며, 둘 이상의 설정 파일이 변수를 설정할 때 [가장 높은 우선순위](https://code.claude.com/docs/ko/settings.md#settings-precedence)가 적용됩니다. [Claude Code가 `env`에서 무시하는 변수](#variables-claude-code-ignores-in-env)에 예외가 나열되어 있습니다.

2457* Claude Desktop 앱 또는 [자체 호스팅 환경](https://code.claude.com/docs/ko/self-hosted-environments) 러너가 세션을 시작할 때, 빌드하는 시작 환경이 대신 우선합니다. Claude Code는 시작 환경이 이미 설정한 변수에 대해 설정 파일의 `env` 값을 무시합니다. [디버그 로그](https://code.claude.com/docs/ko/debug-your-config.md)는 무시된 각 변수의 이름을 지정합니다.2458* Claude Desktop 앱 또는 [자체 호스팅 환경](https://code.claude.com/docs/ko/self-hosted-environments) 러너가 세션을 시작할 때, 빌드하는 시작 환경이 대신 우선합니다. Claude Code는 시작 환경이 이미 설정한 변수에 대해 설정 파일의 `env` 값을 무시합니다. [디버그 로그](https://code.claude.com/docs/ko/debug-your-config.md)는 무시된 각 변수의 이름을 지정합니다.

2458* 셸 내보내기를 취소하려면 변수를 `""`로 설정합니다. Claude Code는 공 값을 공급자 선택에 대해 설정되지 않은 것으로 취급하며, 서브프로세스는 공 값을 상속합니다.2459* 셸 내보내기를 취소하려면 변수를 `""`로 설정합니다. Claude Code는 공 값을 공급자 선택에 대해 설정되지 않은 것으로 취급하며, 서브프로세스는 공 값을 상속합니다.

2459* `NO_COLOR` 및 `FORCE_COLOR`는 여기에서 설정하면 서브프로세스에만 도달합니다. Claude Code 자체 인터페이스 색상을 변경하려면 `claude`를 시작하기 전에 셸에서 설정합니다.2460* `NO_COLOR` 및 `FORCE_COLOR`는 여기에서 설정하면 서브프로세스에만 도달합니다. Claude Code 자체 인터페이스 색상을 변경하려면 `claude`를 시작하기 전에 셸에서 설정합니다.


2494 * Claude Code가 파일 및 디렉토리의 `@` 멘션을 확장하지 않도록 하는 [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](https://code.claude.com/docs/ko/env-vars#variables).2495 * Claude Code가 파일 및 디렉토리의 `@` 멘션을 확장하지 않도록 하는 [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](https://code.claude.com/docs/ko/env-vars#variables).

2495 2496 

2496 v2.1.251 이전에는 프로젝트 및 로컬 설정이 Claude Code가 파일을 쓰는 위치를 선택하거나 세션 콘텐츠를 내보내는 이 목록의 변수를 설정할 수도 있었습니다. `HOME` 및 `XDG_CONFIG_HOME` 제외. v2.1.290 이전에는 대화 상자 타이머 변수와 `CLAUDE_CODE_DISABLE_ATTACHMENTS`도 설정할 수 있었습니다.2497 v2.1.251 이전에는 프로젝트 및 로컬 설정이 Claude Code가 파일을 쓰는 위치를 선택하거나 세션 콘텐츠를 내보내는 이 목록의 변수를 설정할 수도 있었습니다. `HOME` 및 `XDG_CONFIG_HOME` 제외. v2.1.290 이전에는 대화 상자 타이머 변수와 `CLAUDE_CODE_DISABLE_ATTACHMENTS`도 설정할 수 있었습니다.

2498* [`CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`](https://code.claude.com/docs/ko/env-vars#variables)로 [Code Mode](https://code.claude.com/docs/ko/code-mode.md)를 켜는 것은 셸, 사용자 설정 또는 `--settings` 파일에서 가능하며, 관리형 설정, 프로젝트 설정 또는 로컬 설정에서는 불가능합니다. 처음 세 곳 중 어느 곳에서든 또는 관리형 설정에서 `0`으로 설정하면 다른 곳에서 무엇을 설정하든 Code Mode는 꺼진 상태로 유지됩니다. 관리형 설정에 `1`이 포함된 경우 셸의 `1`은 무시되므로 사용자 설정에 직접 `1`을 설정합니다

2497* Claude Code의 호스팅 환경이 소유하는 ID 변수, 예: `CLAUDE_CODE_REMOTE` 및 `CLAUDE_CODE_ACCOUNT_UUID`는 모든 파일에서 무시됩니다.2499* Claude Code의 호스팅 환경이 소유하는 ID 변수, 예: `CLAUDE_CODE_REMOTE` 및 `CLAUDE_CODE_ACCOUNT_UUID`는 모든 파일에서 무시됩니다.

2498* [`CLAUDE_CODE_MESSAGING_SOCKET` 및 `CLAUDE_CODE_MESSAGING_TOKEN`](https://code.claude.com/docs/ko/env-vars#variables)는 Claude Code가 자체 내보내는 것이므로 모든 파일에서 무시됩니다. 소켓 변수를 무시하려면 Claude Code v2.1.224 이상이 필요하고, 토큰을 무시하려면 v2.1.228 이상이 필요합니다.2500* [`CLAUDE_CODE_MESSAGING_SOCKET` 및 `CLAUDE_CODE_MESSAGING_TOKEN`](https://code.claude.com/docs/ko/env-vars#variables)는 Claude Code가 자체 내보내는 것이므로 모든 파일에서 무시됩니다. 소켓 변수를 무시하려면 Claude Code v2.1.224 이상이 필요하고, 토큰을 무시하려면 v2.1.228 이상이 필요합니다.

2499* [`CLAUDE_CODE_PROJECT_DIR_NAME`](https://code.claude.com/docs/ko/sessions#name-the-project-directory-yourself)는 Claude Code가 시작 환경에서만 읽으므로 모든 파일에서 무시됩니다. v2.1.234 이상이 필요합니다.2501* [`CLAUDE_CODE_PROJECT_DIR_NAME`](https://code.claude.com/docs/ko/sessions#name-the-project-directory-yourself)는 Claude Code가 시작 환경에서만 읽으므로 모든 파일에서 무시됩니다. v2.1.234 이상이 필요합니다.


3173 3175 

3174이 예시는 [`jq`](https://jqlang.org/)가 설치되어 있어야 하며 셸에서 실행됩니다. PowerShell 및 Git Bash용 동등한 예시는 [Windows 구성](https://code.claude.com/docs/ko/statusline.md#windows-configuration)을, 전체 설정 방법은 [상태줄 수동 구성](https://code.claude.com/docs/ko/statusline.md#manually-configure-a-status-line)을 참조하십시오.3176이 예시는 [`jq`](https://jqlang.org/)가 설치되어 있어야 하며 셸에서 실행됩니다. PowerShell 및 Git Bash용 동등한 예시는 [Windows 구성](https://code.claude.com/docs/ko/statusline.md#windows-configuration)을, 전체 설정 방법은 [상태줄 수동 구성](https://code.claude.com/docs/ko/statusline.md#manually-configure-a-status-line)을 참조하십시오.

3175 3177 

3176### `subagentStatusLine`

3177 

3178Claude가 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md)를 실행하면 Claude Code는 프롬프트 아래의 작업 표시에 서브에이전트당 한 행씩 `name · description · token count`를 표시하여 나열합니다. 이 키를 사용하면 자체 명령을 실행하여 이러한 행을 다시 작성할 수 있습니다. 예를 들어 각 서브에이전트의 컨텍스트 사용량을 백분율로 표시할 수 있습니다. 새로 고칠 때마다 Claude Code는 각 서브에이전트의 `id`, `name`, `status`, `model`, `tokenCount` 등을 담은 `tasks` 배열이 포함된 하나의 JSON 객체로 표시된 행을 stdin에 보내고, `{"id", "content"}` 줄로 다시 작성한 각 `id`의 행을 대체합니다. 다시 작성하지 않은 행은 기본 렌더링을 유지합니다.

3179 

3180* **범위**: [`Any file`](#scopes). [`allowManagedHooksOnly`](#allowmanagedhooksonly)가 켜져 있거나 [`disableAllHooks`](#disableallhooks)가 관리형 설정 외부에서 설정된 경우 관리형 설정 값만 실행됩니다.

3181* **유형**: `"command"`로 설정된 `type`과 `command` 문자열이 있는 객체

3182* **기본값**: 설정되지 않음, 따라서 Claude Code가 기본 행을 렌더링합니다

3183 

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

3185{

3186 "subagentStatusLine": {

3187 "type": "command",

3188 "command": "jq -c '.tasks[] | {id, content: \"\\(.name): \\(.tokenCount) tokens\"}'"

3189 }

3190}

3191```

3192 

3193[서브에이전트 상태줄](https://code.claude.com/docs/ko/statusline.md#subagent-status-lines)을 참조하십시오.

3194 

3195### `syntaxHighlightingDisabled`3178### `syntaxHighlightingDisabled`

3196 3179 

3197Claude Code는 터미널에 표시하는 diff, 코드 블록, 파일 미리 보기의 코드를 기본 제공 하이라이터로 언어별로 색상을 입힙니다. 색상이 터미널 테마와 어울리지 않거나 스크린 리더를 느리게 하는 경우 등에는 이 키를 `true`로 설정하여 일반 텍스트로 표시합니다.3180Claude Code는 터미널에 표시하는 diff, 코드 블록, 파일 미리 보기의 코드를 기본 제공 하이라이터로 언어별로 색상을 입힙니다. 색상이 터미널 테마와 어울리지 않거나 스크린 리더를 느리게 하는 경우 등에는 이 키를 `true`로 설정하여 일반 텍스트로 표시합니다.


3648* **다른 모든 것은 차단됨**: 사용자, 프로젝트 및 로컬 훅, 다른 설치된 플러그인의 훅 및 mod, 에이전트 frontmatter에 선언된 훅. [Claude Code에 내장된 mod](https://code.claude.com/docs/ko/plugins/mods/overview.md#mods-built-into-claude-code)는 계속 실행됩니다. 사용자의 mod만 차단하려면 [`allowManagedModsOnly`](https://code.claude.com/docs/ko/plugins/mods/admin#set-options-on-the-built-in-guard)를 대신 설정합니다.3631* **다른 모든 것은 차단됨**: 사용자, 프로젝트 및 로컬 훅, 다른 설치된 플러그인의 훅 및 mod, 에이전트 frontmatter에 선언된 훅. [Claude Code에 내장된 mod](https://code.claude.com/docs/ko/plugins/mods/overview.md#mods-built-into-claude-code)는 계속 실행됩니다. 사용자의 mod만 차단하려면 [`allowManagedModsOnly`](https://code.claude.com/docs/ko/plugins/mods/admin#set-options-on-the-built-in-guard)를 대신 설정합니다.

3649* **명령 소스 플러그인 비활성화**: Claude Code는 또한 [`disableCommandPluginSources`](#disablecommandpluginsources)를 명시적으로 `false`로 설정하지 않는 한 [`command` 소스](https://code.claude.com/docs/ko/plugins/marketplace-reference#command-plugin-source)가 있는 플러그인(관리형 `enabledPlugins`에서 강제로 활성화된 플러그인 포함)을 비활성화합니다.3632* **명령 소스 플러그인 비활성화**: Claude Code는 또한 [`disableCommandPluginSources`](#disablecommandpluginsources)를 명시적으로 `false`로 설정하지 않는 한 [`command` 소스](https://code.claude.com/docs/ko/plugins/marketplace-reference#command-plugin-source)가 있는 플러그인(관리형 `enabledPlugins`에서 강제로 활성화된 플러그인 포함)을 비활성화합니다.

3650* **마켓플레이스 `headersHelper` 명령 차단**: Claude Code는 또한 [`disableCommandPluginSources`](#disablecommandpluginsources)가 명시적으로 `false`로 설정되지 않는 한 마켓플레이스 [`headersHelper` 명령](https://code.claude.com/docs/ko/plugins/host-marketplace#authenticate-archive-downloads)을 차단합니다. 단, 관리형 설정 자체가 선언하는 마켓플레이스는 제외됩니다. Claude Code v2.1.238 이상이 필요합니다.3633* **마켓플레이스 `headersHelper` 명령 차단**: Claude Code는 또한 [`disableCommandPluginSources`](#disablecommandpluginsources)가 명시적으로 `false`로 설정되지 않는 한 마켓플레이스 [`headersHelper` 명령](https://code.claude.com/docs/ko/plugins/host-marketplace#authenticate-archive-downloads)을 차단합니다. 단, 관리형 설정 자체가 선언하는 마켓플레이스는 제외됩니다. Claude Code v2.1.238 이상이 필요합니다.

3651* **상태줄 및 파일 제안이 관리형 설정으로 좁혀짐**: Claude Code는 [상태줄 및 파일 제안 게이트](#status-line-and-file-suggestion-gates)를 따르면서 관리형 설정에서만 [`statusLine`](https://code.claude.com/docs/ko/statusline), [`fileSuggestion`](#filesuggestion), [`subagentStatusLine`](https://code.claude.com/docs/ko/statusline#subagent-status-lines)을 읽습니다.3634* **상태줄 및 파일 제안이 관리형 설정으로 좁혀짐**: Claude Code는 [상태줄 및 파일 제안 게이트](#status-line-and-file-suggestion-gates)를 따르면서 관리형 설정에서만 [`statusLine`](https://code.claude.com/docs/ko/statusline)과 [`fileSuggestion`](#filesuggestion)을 읽습니다.

3652 3635 

3653[`/goal`](https://code.claude.com/docs/ko/goal) 명령은 이 키가 설정된 동안 실행할 수 없습니다. 훅에 따라 달라지기 때문입니다.3636[`/goal`](https://code.claude.com/docs/ko/goal) 명령은 이 키가 설정된 동안 실행할 수 없습니다. 훅에 따라 달라지기 때문입니다.

3654 3637 


3687 3670 

3688#### 상태줄 및 파일 제안 게이트3671#### 상태줄 및 파일 제안 게이트

3689 3672 

3690Claude Code는 `statusLine`, `fileSuggestion`, `subagentStatusLine`에 대해 다음 순서로 두 가지 결정을 내립니다:3673Claude Code는 `statusLine`과 `fileSuggestion`에 대해 다음 순서로 두 가지 결정을 내립니다:

3691 3674 

3692* **완전히 끔**: 관리형 설정이 `disableAllHooks`를 설정하거나, 폴더가 [설정 파일의 훅과 동일한 워크스페이스 신뢰 규칙](https://code.claude.com/docs/ko/permissions.md#what-runs-before-you-trust-a-folder) 아래에서 신뢰되지 않을 때3675* **완전히 끔**: 관리형 설정이 `disableAllHooks`를 설정하거나, 폴더가 [설정 파일의 훅과 동일한 워크스페이스 신뢰 규칙](https://code.claude.com/docs/ko/permissions.md#what-runs-before-you-trust-a-folder) 아래에서 신뢰되지 않을 때

3693* **관리형 설정으로 좁혀짐**: [`allowManagedHooksOnly`](#allowmanagedhooksonly)가 설정되었을 때, `disableAllHooks`가 [설정 우선순위](https://code.claude.com/docs/ko/hooks.md#disable-or-remove-hooks)가 적용된 후 관리형 설정 외부에서 `true`일 때, 또는 `--safe-mode`로 Claude Code를 시작할 때3676* **관리형 설정으로 좁혀짐**: [`allowManagedHooksOnly`](#allowmanagedhooksonly)가 설정되었을 때, `disableAllHooks`가 [설정 우선순위](https://code.claude.com/docs/ko/hooks.md#disable-or-remove-hooks)가 적용된 후 관리형 설정 외부에서 `true`일 때, 또는 `--safe-mode`로 Claude Code를 시작할 때


4659 4642 

4660* **Scope**: [`Any file`](#scopes)4643* **Scope**: [`Any file`](#scopes)

4661* **Type**: string, 기본 제공 또는 사용자 정의 에이전트의 이름4644* **Type**: string, 기본 제공 또는 사용자 정의 에이전트의 이름

4662* **Default**: 설정되지 않음. 메인 스레드는 Claude Code의 기본 에이전트로 실행됩니다4645* **Default**: 설정되지 않음

4663* **Per-session overrides**: `--agent`는 한 세션에 대해 이 키보다 우선합니다4646* **Per-session overrides**: `--agent`는 한 세션에 대해 이 키보다 우선합니다

4664 4647 

4665```json settings.json theme={null}4648```json settings.json theme={null}


4668}4651}

4669```4652```

4670 4653 

4671플러그인의 자체 `settings.json`도 이 키를 제공할 수 있습니다. [플러그인과 함께 기본 설정 제공](https://code.claude.com/docs/ko/plugins/components.md#default-settings)을 참조하세요.

4672 

4673### `crossSessionInbound`4654### `crossSessionInbound`

4674 4655 

4675이 세션이 [다른 Claude Code 세션에서 도착하는 메시지](https://code.claude.com/docs/ko/cross-session-messaging.md#control-inbound-messages)로 수행할 작업을 선택합니다. 적용되는 값이 없으면 Claude Code는 두 세션의 권한 모드 클래스에서 메시지별로 결정합니다.4656이 세션이 [다른 Claude Code 세션에서 도착하는 메시지](https://code.claude.com/docs/ko/cross-session-messaging.md#control-inbound-messages)로 수행할 작업을 선택합니다. 적용되는 값이 없으면 Claude Code는 두 세션의 권한 모드 클래스에서 메시지별로 결정합니다.


5207 5188 

5208* **범위**: [`관리됨`](#scopes). 머신 자신의 관리자 소스인 MDM 정책 및 관리형 설정 파일이 설정한 목록은 서버 관리형 설정도 하나를 전달할 때 계속 적용됩니다: 세션은 두 목록 모두에 있는 공급자만 사용할 수 있으므로 서버 관리형 목록은 머신이 허용하는 것을 좁힐 수 있지만 절대 확장할 수 없습니다. 어느 머신 소스의 `allowedProviders`가 계산되는지는 [Claude Code가 관리 소스를 결합하는 방법](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)을 따릅니다. 서버 관리형 설정만을 통해 전달된 목록은 [서버 관리형 설정을 가져오는](https://code.claude.com/docs/ko/server-managed-settings.md#platform-availability) 세션에만 도달합니다.5189* **범위**: [`관리됨`](#scopes). 머신 자신의 관리자 소스인 MDM 정책 및 관리형 설정 파일이 설정한 목록은 서버 관리형 설정도 하나를 전달할 때 계속 적용됩니다: 세션은 두 목록 모두에 있는 공급자만 사용할 수 있으므로 서버 관리형 목록은 머신이 허용하는 것을 좁힐 수 있지만 절대 확장할 수 없습니다. 어느 머신 소스의 `allowedProviders`가 계산되는지는 [Claude Code가 관리 소스를 결합하는 방법](https://code.claude.com/docs/ko/managed-settings.md#how-claude-code-combines-managed-sources)을 따릅니다. 서버 관리형 설정만을 통해 전달된 목록은 [서버 관리형 설정을 가져오는](https://code.claude.com/docs/ko/server-managed-settings.md#platform-availability) 세션에만 도달합니다.

5209* **유형**: 문자열 배열, 각각 다음 중 하나:5190* **유형**: 문자열 배열, 각각 다음 중 하나:

5210 * `"anthropic"`: Anthropic의 자체 호스트의 Anthropic API, claude.ai 또는 Console 로그인 또는 API 키를 통해. [`forceLoginMethod`](#forceloginmethod) 또는 [`forceLoginOrgUUID`](#forceloginorguuid)와 쌍을 이루어 로그인도 제한합니다.5191 * `"anthropic"`: Anthropic의 자체 호스트의 Anthropic API, claude.ai 또는 Console 로그인 또는 API 키를 통해. [`forceLoginMethod`](#forceloginmethod) 또는 [`forceLoginOrgUUID`](#forceloginorguuid)와 쌍을 이루어 로그인도 제한합니다. [사용자의 머신에서](https://code.claude.com/docs/ko/managed-settings.md#where-and-when-a-policy-applies) 실행되는 Desktop의 Cowork는 claude.ai에 로그인한 경우 `"anthropic"`으로 간주되므로, 머신의 목록에 이 항목이 없으면 Cowork는 [시작 시 거부됩니다](https://code.claude.com/docs/ko/errors.md#managed-settings-dont-allow-this-api-provider). Cowork를 시작할 수 있게 하려면 이 항목을 추가하세요. 이렇게 하면 이 목록이 직접 Anthropic 세션에도 열립니다.

5211 * `"bedrock"`: [Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md)5192 * `"bedrock"`: [Amazon Bedrock](https://code.claude.com/docs/ko/amazon-bedrock.md)

5212 * `"vertex"`: [Google Cloud의 Agent Platform](https://code.claude.com/docs/ko/google-vertex-ai.md), 이전의 Vertex AI5193 * `"vertex"`: [Google Cloud의 Agent Platform](https://code.claude.com/docs/ko/google-vertex-ai.md), 이전의 Vertex AI

5213 * `"foundry"`: [Microsoft Foundry](https://code.claude.com/docs/ko/microsoft-foundry.md)5194 * `"foundry"`: [Microsoft Foundry](https://code.claude.com/docs/ko/microsoft-foundry.md)

setup.md +5 −23

Details

141 141 

142### Alpine Linux 및 musl 기반 배포판142### Alpine Linux 및 musl 기반 배포판

143 143 

144Alpine 및 기타 musl/uClibc 기반 배포판에 Claude Code를 설치하려면 설치 명령을 위해 `bash` 및 `curl`이 필요하며, 런타임에는 `libgcc`, `libstdc++` 및 `ripgrep`이 필요합니다. Alpine은 기본적으로 `bash` 또는 `curl`을 포함하지 않으므로 문서화된 설치 명령은 이들을 설치할 때까지 `not found` 오류로 실패합니다. 배포판의 패키지 관리자를 사용하여 이들 패키지를 설치한 후 `USE_BUILTIN_RIPGREP=0`을 설정하세요.144Alpine 및 기타 musl 기반 배포판에서 [설치 명령](#install-claude-code)을 실행하려면 `bash` 및 `curl`이 필요하며, Claude Code 자체에는 `bash` 또는 `zsh`가 필요합니다. Alpine은 기본적으로 `bash` 또는 `curl`을 포함하지 않으므로 문서화된 설치 명령은 이들을 설치할 때까지 `not found` 오류로 실패합니다.

145 145 

146이 예제는 Alpine에 필요한 패키지를 설치합니다:146이 예제는 Alpine에 필요한 패키지를 설치합니다:

147 147 

148```bash theme={null}148```bash theme={null}

149apk add bash curl libgcc libstdc++ ripgrep149apk add bash curl

150```

151 

152Alpine에서 `ripgrep`은 커뮤니티 저장소에 있습니다. `apk`가 패키지가 누락되었다고 보고하면 Alpine 버전을 사용하여 `/etc/apk/repositories`에 커뮤니티 저장소를 추가하세요:

153 

154```bash theme={null}

155echo "https://dl-cdn.alpinelinux.org/alpine/v3.22/community" >> /etc/apk/repositories

156```

157 

158`apk update`를 실행하여 패키지 인덱스를 새로 고친 후 `apk add` 명령을 다시 시도하세요.

159 

160그런 다음 [`settings.json`](https://code.claude.com/docs/ko/settings-reference#all-settings) 파일에서 `USE_BUILTIN_RIPGREP`을 `0`으로 설정하세요:

161 

162```json theme={null}

163{

164 "env": {

165 "USE_BUILTIN_RIPGREP": "0"

166 }

167}

168```150```

169 151 

170## 설치 확인152## 설치 확인


443> wget -O /etc/apk/keys/claude-code.rsa.pub \425> wget -O /etc/apk/keys/claude-code.rsa.pub \

444> https://downloads.claude.ai/keys/claude-code.rsa.pub426> https://downloads.claude.ai/keys/claude-code.rsa.pub

445> echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories427> echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories

446> apk add claude-code428> apk add bash claude-code

447> ```429> ```

448>430>

449> `latest` 채널로 전환하려면 `stable` 저장소 줄을 제거하고 `latest` 저장소를 추가하세요:431> `latest` 채널로 전환하려면 `stable` 저장소 줄을 제거하고 `latest` 저장소를 추가하세요:


463>445>

464> 셸에서 `npm --version`이 `12`로 시작하는 버전을 출력하면 대신 [npm 12 설치 문제 해결](https://code.claude.com/docs/ko/troubleshoot-install.md#fix-an-npm-12-install)을 따르세요. `sudo`로 설치하지 마세요. Claude Code는 자체 업데이트 시 `sudo` 없이 npm을 실행하므로, `sudo`가 필요한 설치는 자동으로 업데이트될 수 없습니다.446> 셸에서 `npm --version`이 `12`로 시작하는 버전을 출력하면 대신 [npm 12 설치 문제 해결](https://code.claude.com/docs/ko/troubleshoot-install.md#fix-an-npm-12-install)을 따르세요. `sudo`로 설치하지 마세요. Claude Code는 자체 업데이트 시 `sudo` 없이 npm을 실행하므로, `sudo`가 필요한 설치는 자동으로 업데이트될 수 없습니다.

465 447 

466Claude Code를 전역 npm 패키지로 설치할 수도 있습니다. npm 패키지에는 [Node.js 22 이상](https://nodejs.org/en/download)이 필요합니다. 이전 Node.js 버전에서는 npm이 설치 중에 실패하는 대신 `EBADENGINE` 경고를 인쇄합니다. 설치가 완료되고 `claude`는 여전히 실행됩니다. 패키지가 런타임에 Node.js를 사용하지 않는 네이티브 바이너리를 다운로드하기 때문입니다.448Claude Code를 전역 npm 패키지로 설치할 수도 있습니다. npm 패키지에는 [Node.js 22 이상](https://nodejs.org/en/download)이 필요합니다. 이전 Node.js 버전에서는 npm이 기본적으로 실패하는 대신 `EBADENGINE` 경고를 출력하고 설치를 완료합니다. 패키지가 런타임에 Node.js를 사용하지 않는 네이티브 바이너리를 다운로드하므로 설치된 `claude`는 여전히 실행됩니다.

467 449 

468```bash theme={null}450```bash theme={null}

469npm install -g @anthropic-ai/claude-code451npm install -g @anthropic-ai/claude-code@latest

470```452```

471 453 

472npm 패키지는 독립 실행형 설치 프로그램과 동일한 네이티브 바이너리를 설치합니다. npm은 `@anthropic-ai/claude-code-darwin-arm64`와 같은 플랫폼별 선택적 종속성을 통해 바이너리를 가져오고 설치 후 단계가 이를 제자리에 연결합니다. 설치된 `claude` 바이너리는 자체적으로 Node를 호출하지 않습니다.454npm 패키지는 독립 실행형 설치 프로그램과 동일한 네이티브 바이너리를 설치합니다. npm은 `@anthropic-ai/claude-code-darwin-arm64`와 같은 플랫폼별 선택적 종속성을 통해 바이너리를 가져오고 설치 후 단계가 이를 제자리에 연결합니다. 설치된 `claude` 바이너리는 자체적으로 Node를 호출하지 않습니다.

skills.md +5 −1

Details

787 787 

788주입된 명령은 스킬이 렌더링되는 동안 절대 권한을 요청하지 않습니다. Claude Code는 각 명령을 [권한 규칙](https://code.claude.com/docs/ko/permissions.md)에 대해 먼저 확인합니다. 거부 규칙이 일치하는 명령은 호출을 중단하고 `Shell command permission check failed for pattern "..."`를 표시합니다.788주입된 명령은 스킬이 렌더링되는 동안 절대 권한을 요청하지 않습니다. Claude Code는 각 명령을 [권한 규칙](https://code.claude.com/docs/ko/permissions.md)에 대해 먼저 확인합니다. 거부 규칙이 일치하는 명령은 호출을 중단하고 `Shell command permission check failed for pattern "..."`를 표시합니다.

789 789 

790[자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode) 외부에서 명령의 권한 확인이 허용 이외의 것을 반환하면 Claude Code는 동일한 오류와 함께 호출을 중단합니다. 여기에는 일반적으로 확인을 요청할 규칙이 포함됩니다. 일치하지 않는 명령이 여기서 중단되지 않도록 하려면 [`allowed-tools`](#pre-approve-tools-for-a-skill)로 미리 승인합니다. 조직이 권한 규칙을 관리형 설정으로 제한하는 경우 [관리형 권한 규칙만 적용되는 경우](#when-only-managed-permission-rules-apply)를 참조합니다. 거부 및 확인 규칙은 여전히 `allowed-tools`를 재정의합니다. [권한 관리](https://code.claude.com/docs/ko/permissions.md#manage-permissions)를 참조합니다.790[자동 모드](https://code.claude.com/docs/ko/permission-modes.md#eliminate-prompts-with-auto-mode) 외부에서 명령의 권한 확인이 허용 이외의 것을 반환하면 Claude Code는 호출을 중단합니다. 일치하지 않는 명령이 중단되지 않도록 하려면 다음 제한 내에서 [`allowed-tools`](#pre-approve-tools-for-a-skill)로 미리 승인합니다:

791 

792* **거부 및 확인 규칙**: 이 중 하나가 일치하는 명령은 여전히 호출을 중단합니다. 해당 규칙을 찾으려면 [권한 관리](https://code.claude.com/docs/ko/permissions.md#manage-permissions)를 참조합니다.

793* **관리형 전용 규칙**: 세션의 `/status`가 `allowed-tools ignored this session` 아래에 스킬을 나열하는 경우 [관리형 권한 규칙만 적용되는 경우](#when-only-managed-permission-rules-apply)를 참조합니다.

794* **확인되지 않은 Git 폴더**: `HEAD` 또는 `.git` 파일이 사용자 소유가 아닐 수 있는 경우, Claude Code는 `git`을 포함하거나 Claude Code가 구문 분석할 수 없는 Bash 명령에 대해 `allowed-tools`를 무시합니다. 예를 들어 자체 bare 저장소의 worktree처럼 해당 폴더를 신뢰한다면 세션에서 [`/permissions`](https://code.claude.com/docs/ko/permissions#manage-permissions)로 명령을 허용합니다.

791 795 

792자동 모드에서 그렇지 않으면 승인이 필요한 명령은 호출을 중단하지 않습니다. 스킬은 Claude에게 먼저 명령을 실행하도록 지시하는 지침과 함께 로드되고 Claude의 자체 호출은 [자동 모드의 일반적인 확인](https://code.claude.com/docs/ko/permission-modes.md#how-the-classifier-evaluates-actions)을 통과합니다. 호출은 여전히 `agent`를 설정하는 [포크된 스킬](#run-skills-in-a-subagent)에서 중단되고, Claude가 [주입된 명령을 실행하는 셸 도구](#how-injected-commands-run)를 갖지 않은 세션에서 중단됩니다.796자동 모드에서 그렇지 않으면 승인이 필요한 명령은 호출을 중단하지 않습니다. 스킬은 Claude에게 먼저 명령을 실행하도록 지시하는 지침과 함께 로드되고 Claude의 자체 호출은 [자동 모드의 일반적인 확인](https://code.claude.com/docs/ko/permission-modes.md#how-the-classifier-evaluates-actions)을 통과합니다. 호출은 여전히 `agent`를 설정하는 [포크된 스킬](#run-skills-in-a-subagent)에서 중단되고, Claude가 [주입된 명령을 실행하는 셸 도구](#how-injected-commands-run)를 갖지 않은 세션에서 중단됩니다.

793 797 

statusline.md +0 −40

Details

1084echo "$dirname [$model]"1084echo "$dirname [$model]"

1085```1085```

1086 1086 

1087## 서브에이전트 상태 표시줄

1088 

1089`subagentStatusLine` 설정은 [서브에이전트](https://code.claude.com/docs/ko/sub-agents.md) 패널에 표시된 각 서브에이전트에 대한 사용자 정의 행 본문을 렌더링합니다. 기본 `name · description · token count` 행을 자신의 형식으로 바꾸는 데 사용합니다.

1090 

1091```json theme={null}

1092{

1093 "subagentStatusLine": {

1094 "type": "command",

1095 "command": "~/.claude/subagent-statusline.sh"

1096 }

1097}

1098```

1099 

1100명령은 새로 고침 틱마다 한 번 실행되며 표시되는 모든 서브에이전트 행을 stdin의 단일 JSON 객체로 전달받습니다. 입력에는 [기본 훅 필드](https://code.claude.com/docs/ko/hooks.md#common-input-fields), 사용 가능한 행 너비를 담은 `columns` 필드, 그리고 행마다 하나의 항목을 갖는 `tasks` 배열이 포함되며, 이는 [작업 필드](#task-fields)에 설명되어 있습니다.

1101 

1102재정의하려는 각 행에 대해 stdout에 한 줄의 JSON을 작성합니다: `{"id": "<task id>", "content": "<row body>"}`. `content` 문자열은 ANSI 색상 및 OSC 8 하이퍼링크를 포함하여 그대로 렌더링됩니다. 작업의 `id`를 생략하여 해당 행의 기본 렌더링을 유지합니다. 빈 `content` 문자열을 내보내 숨깁니다.

1103 

1104`statusLine`에 적용되는 동일한 신뢰, `disableAllHooks` 및 [`allowManagedHooksOnly`](https://code.claude.com/docs/ko/settings-reference#allowmanagedhooksonly) 게이트가 여기에 적용됩니다. 플러그인은 [`settings.json`](https://code.claude.com/docs/ko/plugins/manifest-reference#standard-layout)에서 기본 `subagentStatusLine`을 제공할 수 있지만, 훅과 달리 플러그인이 관리 설정 `enabledPlugins`에서 강제 활성화되어 있을 때도 플러그인 값은 `allowManagedHooksOnly` 아래에서 실행되지 않습니다.

1105 

1106### 작업 필드

1107 

1108`tasks` 배열의 각 항목은 아래 필드로 하나의 서브에이전트 행을 설명합니다. 선택 사항으로 표시된 필드는 값이 없으면 생략되므로 스크립트에서 해당 필드가 없는 경우를 처리해야 합니다.

1109 

1110| 필드 | 유형 | 설명 |

1111| :- | :- | :- |

1112| `id` | string | 작업의 식별자입니다. 이 행에 대해 다시 작성하는 줄에 `id`로 그대로 전달합니다 |

1113| `name` | string, 선택 사항 | 서브에이전트에 이름이 있는 경우 [호출할 때 사용하는](https://code.claude.com/docs/ko/sub-agents.md#subagent-names) 이름입니다 |

1114| `type` | string | 작업의 종류: `local_agent` |

1115| `agentType` | string | 작업이 실행되는 서브에이전트 유형으로, 기본 제공 [`Explore`](https://code.claude.com/docs/ko/sub-agents#built-in-subagents) 또는 사용자 정의 `code-reviewer` 등이 있습니다. 훅이 [`agent_type`](https://code.claude.com/docs/ko/hooks#subagentstart)으로 받는 값과 동일한 값을 담습니다. Claude Code v2.1.293 이상이 필요합니다 |

1116| `status` | string | 작업의 상태로, `running`, `completed`, `failed` 또는 `killed` 등이 있습니다 |

1117| `description` | string | 작업에 대한 짧은 설명으로, Claude가 서브에이전트를 생성할 때 제공한 설명 등이 있습니다 |

1118| `label` | string | Claude Code에 작업의 짧은 진행 요약이 있으면 그 요약이며, 없으면 `description`과 동일한 텍스트입니다 |

1119| `startTime` | number | 작업이 시작된 시각으로, Unix epoch 이후의 밀리초 단위입니다 |

1120| `model` | string, 선택 사항 | 작업이 실행되는 확인된 모델의 ID입니다. 모델이 확인될 때까지 생략됩니다 |

1121| `effort` | string 또는 number, 선택 사항 | 서브에이전트의 [정의 frontmatter](https://code.claude.com/docs/ko/sub-agents.md#supported-frontmatter-fields) 또는 개별 호출에서 설정된 추론 effort로, `low`, `medium`, `high`, `xhigh`, `max` 또는 숫자 토큰 예산입니다. 이는 구성된 값이며, 모델이 해당 수준을 지원하지 않으면 Claude Code가 실제로 적용하는 effort가 다를 수 있습니다. effort가 설정되지 않으면 생략됩니다 |

1122| `contextWindowSize` | number, 선택 사항 | `model`의 컨텍스트 윈도우(토큰 단위)로, 메인 상태줄의 [`context_window.context_window_size`](#context-window-fields)와 동일한 방식으로 계산되므로 `tokenCount`에서 행별 백분율을 렌더링할 수 있습니다. `model`이 생략되면 함께 생략됩니다 |

1123| `tokenCount` | number | 서브에이전트의 누적 토큰 수로, 기본 행에 표시되는 수치입니다 |

1124| `tokenSamples` | array of numbers | 최근 최대 16개의 `tokenCount` 측정값으로, 새로 고침 틱마다 하나씩 기록되며 가장 오래된 값부터 시작해 현재 값으로 끝납니다 |

1125| `cwd` | string | 서브에이전트의 작업 디렉터리입니다. 격리된 worktree처럼 자체 디렉터리에서 실행되는 경우 해당 디렉터리이며, 그렇지 않으면 세션의 작업 디렉터리입니다 |

1126 

1127## 팁1087## 팁

1128 1088 

1129* **모의 입력으로 테스트**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`1089* **모의 입력으로 테스트**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`

Details

26 26 

27| 터미널 | 줄바꿈을 위한 Shift+Enter |27| 터미널 | 줄바꿈을 위한 Shift+Enter |

28| :- | :- |28| :- | :- |

29| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, Windows Terminal | 설정 없이 작동 |29| Ghostty, Kitty, iTerm2, WezTerm, Warp, Windows Terminal | 설정 없이 작동 |

30| kitty 키보드 프로토콜을 지원하는 기타 터미널(예: foot 및 Alacritty 0.16 이상) | 설정 없이 작동합니다. Claude Code v2.1.269 이상 필요 |30| kitty 키보드 프로토콜을 지원하는 기타 터미널(예: foot 및 Alacritty 0.16 이상) | 설정 없이 작동합니다. Claude Code v2.1.269 이상 필요 |

31| VS Code, Cursor, Devin Desktop, Alacritty 0.16 이전, Zed | 한 번 `/terminal-setup` 실행 |31| VS Code, Cursor, Devin Desktop, Alacritty 0.16 이전, Zed | 한 번 `/terminal-setup` 실행 |

32| gnome-terminal, PyCharm 및 Android Studio와 같은 JetBrains IDE | 사용 불가; Ctrl+J 또는 `\` 다음 Enter 사용 |32| gnome-terminal, PyCharm 및 Android Studio와 같은 JetBrains IDE | 사용 불가; Ctrl+J 또는 `\` 다음 Enter 사용 |

Details

173 173 

174배포 옵션 중 관리형 머신이 사용할 수 있는 옵션을 제한하려면 관리형 설정에서 [`allowedProviders`](https://code.claude.com/docs/ko/settings-reference#allowedproviders)를 설정합니다. 예를 들어 `["bedrock"]`은 Amazon Bedrock만 허용하고 다른 것은 허용하지 않습니다. Mantle 엔드포인트도 활성화하는 Bedrock 플릿은 `"mantle"`도 나열합니다. 항목은 어떤 엔드포인트 변수도 관리형 `env` 핀이 필요한지를 나타냅니다. Claude Code v2.1.285 이상이 필요합니다.174배포 옵션 중 관리형 머신이 사용할 수 있는 옵션을 제한하려면 관리형 설정에서 [`allowedProviders`](https://code.claude.com/docs/ko/settings-reference#allowedproviders)를 설정합니다. 예를 들어 `["bedrock"]`은 Amazon Bedrock만 허용하고 다른 것은 허용하지 않습니다. Mantle 엔드포인트도 활성화하는 Bedrock 플릿은 `"mantle"`도 나열합니다. 항목은 어떤 엔드포인트 변수도 관리형 `env` 핀이 필요한지를 나타냅니다. Claude Code v2.1.285 이상이 필요합니다.

175 175 

176> [!NOTE]

177>

178> Desktop이 claude.ai에 로그인된 상태에서는 사용자 머신의 Cowork 세션이 [`"anthropic"`](https://code.claude.com/docs/ko/settings-reference#allowedproviders)으로 간주됩니다. MDM 정책 또는 관리형 설정 파일에서 이 목록에 이를 포함하지 않으면 해당 세션은 거부됩니다. 이를 포함하면 Anthropic으로 직접 전송되는 세션도 이 목록을 통과합니다.

179 

176### MCP를 통합에 활용180### MCP를 통합에 활용

177 181 

178MCP는 Claude Code에 더 많은 정보를 제공하는 좋은 방법입니다. 예를 들어 티켓 관리 시스템 또는 오류 로그에 연결할 수 있습니다. 하나의 중앙 팀이 MCP 서버를 구성하고 `.mcp.json` 구성을 코드베이스에 체크인하여 모든 사용자가 이점을 얻을 수 있도록 하십시오. [자세히 알아봅니다](https://code.claude.com/docs/ko/mcp.md).182MCP는 Claude Code에 더 많은 정보를 제공하는 좋은 방법입니다. 예를 들어 티켓 관리 시스템 또는 오류 로그에 연결할 수 있습니다. 하나의 중앙 팀이 MCP 서버를 구성하고 `.mcp.json` 구성을 코드베이스에 체크인하여 모든 사용자가 이점을 얻을 수 있도록 하십시오. [자세히 알아봅니다](https://code.claude.com/docs/ko/mcp.md).

Details

127 127 

128Claude는 결정이나 명확화가 필요할 때 `AskUserQuestion`을 사용하여 객관식 질문을 제시합니다. 옵션을 선택하거나 `Other` 행 또는 메모 필드를 통해 직접 텍스트를 입력하여 답변합니다.128Claude는 결정이나 명확화가 필요할 때 `AskUserQuestion`을 사용하여 객관식 질문을 제시합니다. 옵션을 선택하거나 `Other` 행 또는 메모 필드를 통해 직접 텍스트를 입력하여 답변합니다.

129 129 

130직접 텍스트를 입력하여 답변하면, Claude Code는 중립적인 표현으로 답변을 전달하므로 Claude는 먼저 대기하거나 설명해 달라는 요청을 포함하여 사용자가 작성한 내용을 따릅니다.

131 

132### 질문 자동 계속 타임아웃130### 질문 자동 계속 타임아웃

133 131 

134질문은 답변할 때까지 열려 있습니다. 답변하지 않은 질문이 결국 닫혀서 Claude가 사용자 없이 계속 진행되도록 하려면, [`askUserQuestionTimeout`](https://code.claude.com/docs/ko/settings-reference#askuserquestiontimeout) 설정을 `60s`, `5m`, 또는 `10m`으로 설정합니다. 사용자 `settings.json`에서 또는 `/config`의 **Question auto-continue timeout** 행에서 설정할 수 있습니다.132질문은 답변할 때까지 열려 있습니다. 답변하지 않은 질문이 결국 닫혀서 Claude가 사용자 없이 계속 진행되도록 하려면, [`askUserQuestionTimeout`](https://code.claude.com/docs/ko/settings-reference#askuserquestiontimeout) 설정을 `60s`, `5m`, 또는 `10m`으로 설정합니다. 사용자 `settings.json`에서 또는 `/config`의 **Question auto-continue timeout** 행에서 설정할 수 있습니다.


525 523 

526## Read 도구 동작524## Read 도구 동작

527 525 

528Read 도구는 파일 경로를 받아 줄 번호와 함께 내용을 반환합니다. Claude는 항상 절대 경로를 전달하도록 지시됩니다.526Read 도구는 파일 경로를 받아 줄 번호와 함께 내용을 반환합니다.

529 527 

530빈 파일을 읽으면 파일이 존재하지만 내용이 비어 있다는 공지가 반환되고, 마지막 줄을 지난 `offset`은 파일의 줄 수를 나타내는 공지를 반환합니다.528빈 파일을 읽으면 파일이 존재하지만 내용이 비어 있다는 공지가 반환되고, 마지막 줄을 지난 `offset`은 파일의 줄 수를 나타내는 공지를 반환합니다.

531 529 

Details

388> Get-Command claude | Select-Object Source388> Get-Command claude | Select-Object Source

389> ```389> ```

390 390 

391Linux에서 누락된 공유 라이브러리를 확인하세요. `ldd`가 누락된 라이브러리를 표시하면 시스템 패키지를 설치해야 할 수 있습니다. Alpine Linux 및 기타 musl 기반 배포판의 경우 [Alpine Linux 설정](https://code.claude.com/docs/ko/setup.md#alpine-linux-and-musl-based-distributions)을 참조하세요.391Linux에서 누락된 공유 라이브러리를 확인하세요. `ldd`가 누락된 라이브러리를 표시하면 시스템 패키지를 설치해야 할 수 있습니다. Alpine Linux 및 기타 musl 기반 배포판의 경우 [Linux musl 또는 glibc 바이너리 불일치](#linux-musl-or-glibc-binary-mismatch)를 참조하세요.

392 392 

393```bash theme={null}393```bash theme={null}

394ldd "$(command -v claude)" | grep "not found"394ldd "$(command -v claude)" | grep "not found"


906 906 

907### Linux musl 또는 glibc 바이너리 불일치907### Linux musl 또는 glibc 바이너리 불일치

908 908 

909설치 후 `libstdc++.so.6` 또는 `libgcc_s.so.1`과 같은 누락된 공유 라이브러리에 대한 오류가 표시되면 설치 프로그램이 시스템에 대해 잘못된 바이너리 변형을 다운로드했을 수 있습니다.909설치 후 `ld-linux-x86-64.so.2` 또는 `ld-linux-aarch64.so.1`과 같은 누락된 공유 라이브러리에 대한 오류가 표시되면 설치 프로그램이 시스템에 대해 잘못된 바이너리 변형을 다운로드했을 수 있습니다.

910 910 

911```text theme={null}911```text theme={null}

912Error loading shared library libstdc++.so.6: No such file or directory912Error loading shared library ld-linux-x86-64.so.2: No such file or directory

913```913```

914 914 

915이는 musl 교차 컴파일 패키지가 설치된 glibc 기반 시스템에서 발생할 수 있으며, 설치 프로그램이 시스템을 musl로 잘못 감지하게 합니다.

916 

917**해결 방법:**915**해결 방법:**

918 916 

9191. **시스템이 사용하는 libc 확인**:9171. **시스템이 사용하는 libc 확인**:


924 922 

9252. **glibc에 있지만 musl 바이너리를 받은 경우** 설치를 제거하고 다시 설치합니다. `https://downloads.claude.ai/claude-code-releases/{VERSION}/manifest.json`의 매니페스트를 사용하여 올바른 바이너리를 수동으로 다운로드할 수도 있습니다. `ldd --version` 및 `ls /lib/libc.musl*`의 출력으로 [GitHub 이슈](https://github.com/anthropics/claude-code/issues)를 제출합니다.9232. **glibc에 있지만 musl 바이너리를 받은 경우** 설치를 제거하고 다시 설치합니다. `https://downloads.claude.ai/claude-code-releases/{VERSION}/manifest.json`의 매니페스트를 사용하여 올바른 바이너리를 수동으로 다운로드할 수도 있습니다. `ldd --version` 및 `ls /lib/libc.musl*`의 출력으로 [GitHub 이슈](https://github.com/anthropics/claude-code/issues)를 제출합니다.

926 924 

9273. **실제로 Alpine Linux와 같은 musl에 있으면** 필요한 패키지를 설치합니다.9253. **musl에 있지만 glibc 바이너리를 받은 경우** [설치를 제거](https://code.claude.com/docs/ko/setup.md#uninstall-claude-code)합니다. Alpine Linux에서는 먼저 [Alpine Linux 설정](https://code.claude.com/docs/ko/setup.md#alpine-linux-and-musl-based-distributions)에 명시된 패키지를 설치합니다. 그런 다음 musl 바이너리를 설치하는 [설치 명령](https://code.claude.com/docs/ko/setup.md#install-claude-code)을 실행합니다.

928 ```bash theme={null}

929 apk add libgcc libstdc++ ripgrep

930 ```

931 Alpine에서 `ripgrep`은 커뮤니티 저장소에 있습니다. `apk`가 패키지가 누락되었다고 보고하면 [Alpine Linux 설정](https://code.claude.com/docs/ko/setup.md#alpine-linux-and-musl-based-distributions)을 참조하세요.

932 926 

933### `Illegal instruction`927### `Illegal instruction`

934 928 


1001 995 

1002이러한 문제는 WSL 내에서 `npm install -g`로 Claude Code를 설치한 경우 적용됩니다. [네이티브 설치 프로그램](https://code.claude.com/docs/ko/setup.md)을 사용한 경우 이 섹션을 건너뜁니다. npm 12에서는 [npm 12 설치 수정](#fix-an-npm-12-install)에 설명된 대로 설치합니다.996이러한 문제는 WSL 내에서 `npm install -g`로 Claude Code를 설치한 경우 적용됩니다. [네이티브 설치 프로그램](https://code.claude.com/docs/ko/setup.md)을 사용한 경우 이 섹션을 건너뜁니다. npm 12에서는 [npm 12 설치 수정](#fix-an-npm-12-install)에 설명된 대로 설치합니다.

1003 997 

1004**OS 또는 플랫폼 감지 문제.** npm이 설치 중에 플랫폼 불일치를 보고하면 WSL이 Windows `npm`을 선택하고 있을 가능성이 높습니다. 먼저 `npm config set os linux`를 실행한 다음 `npm install -g @anthropic-ai/claude-code --force`로 설치합니다. `sudo`를 사용하지 마세요.998**OS 또는 플랫폼 감지 문제.** npm이 설치 중에 플랫폼 불일치를 보고하면 먼저 `npm config set os linux`를 실행한 다음 `npm install -g @anthropic-ai/claude-code@latest --force`로 설치합니다. `sudo`를 사용하지 마세요.

1005 999 

1006**`claude` 실행 시 `exec: node: not found`.** WSL 환경이 Node.js의 Windows 설치를 사용하고 있을 가능성이 높습니다. `which npm` 및 `which node`로 확인합니다. `/mnt/c/`로 시작하는 경로는 Windows 바이너리이고 Linux 경로는 `/usr/`로 시작합니다. 이를 수정하려면 Linux 배포판의 패키지 관리자 또는 [`nvm`](https://github.com/nvm-sh/nvm)을 통해 Node를 설치합니다.1000**`claude` 실행 시 `exec: node: not found`.** WSL 환경이 Node.js의 Windows 설치를 사용하고 있을 가능성이 높습니다. `which npm` 및 `which node`로 확인합니다. `/mnt/c/`로 시작하는 경로는 Windows 바이너리이고 Linux 경로는 `/usr/`로 시작합니다. 이를 수정하려면 Linux 배포판의 패키지 관리자 또는 [`nvm`](https://github.com/nvm-sh/nvm)을 통해 Node를 설치합니다.

1007 1001 


1088 3. 다시 설치합니다.1082 3. 다시 설치합니다.

1089 1083 

1090 ```bash theme={null}1084 ```bash theme={null}

1091 npm install -g @anthropic-ai/claude-code1085 npm install -g @anthropic-ai/claude-code@latest

1092 ```1086 ```

1093 1087 

1094 이 단계나 1단계가 `EACCES`로 실패하면 `sudo`로 다시 실행하지 말고 네이티브 설치 프로그램으로 전환합니다. Claude Code는 자체 업데이트 시 `sudo` 없이 npm을 실행하므로 자동 업데이트도 같은 방식으로 실패하게 됩니다.1088 이 단계나 1단계가 `EACCES`로 실패하면 `sudo`로 다시 실행하지 말고 네이티브 설치 프로그램으로 전환합니다. Claude Code는 자체 업데이트 시 `sudo` 없이 npm을 실행하므로 자동 업데이트도 같은 방식으로 실패하게 됩니다.


1099 1093 

1100### npm 업데이트 또는 재설치 중 `ENOTEMPTY` 오류1094### npm 업데이트 또는 재설치 중 `ENOTEMPTY` 오류

1101 1095 

1102기존 설치에 대해 `npm install -g @anthropic-ai/claude-code`를 실행하면 npm이 이전 패키지 디렉터리를 옆으로 이동하는 동안 실패할 수 있습니다.1096기존 설치에 대해 `npm install -g @anthropic-ai/claude-code@latest`를 실행하면 npm이 이전 패키지 디렉터리를 옆으로 이동하는 동안 실패할 수 있습니다.

1103 1097 

1104```text theme={null}1098```text theme={null}

1105npm error code ENOTEMPTY1099npm error code ENOTEMPTY


1133그런 다음 다시 설치합니다. npm 12에서는 [npm 12 설치 수정](#fix-an-npm-12-install)을 따릅니다. 그 외의 경우 다음을 실행합니다.1127그런 다음 다시 설치합니다. npm 12에서는 [npm 12 설치 수정](#fix-an-npm-12-install)을 따릅니다. 그 외의 경우 다음을 실행합니다.

1134 1128 

1135```bash theme={null}1129```bash theme={null}

1136npm install -g @anthropic-ai/claude-code1130npm install -g @anthropic-ai/claude-code@latest

1137```1131```

1138 1132 

1139`claude --version`으로 확인합니다. 이는 `2.1.211 (Claude Code)`와 같은 버전 번호를 출력합니다.1133`claude --version`으로 확인합니다. 이는 `2.1.211 (Claude Code)`와 같은 버전 번호를 출력합니다.

Details

152> apk add ripgrep152> apk add ripgrep

153> ```153> ```

154>154>

155> `ripgrep`은 Alpine의 커뮤니티 저장소에 있습니다. `apk`가 패키지가 누락되었다고 보고하면 [Alpine Linux 설정](https://code.claude.com/docs/ko/setup.md#alpine-linux-and-musl-based-distributions)을 참조합니다.155> `ripgrep`은 Alpine의 커뮤니티 저장소에 있습니다.

156 156 

157> [tab] Arch157> [tab] Arch

158>158>

vs-code.md +10 −0

Details

202 이미 있는 사고 블록은 비어 있는 상태로 유지됩니다. 다시 로드한 후의 응답에서는 블록을 클릭하거나 `Ctrl+O`를 눌러 모두 펼칠 수 있습니다.202 이미 있는 사고 블록은 비어 있는 상태로 유지됩니다. 다시 로드한 후의 응답에서는 블록을 클릭하거나 `Ctrl+O`를 눌러 모두 펼칠 수 있습니다.

203* **여러 줄 입력**: `Shift+Enter`를 누르면 전송하지 않고 새 줄을 추가합니다. 이는 질문 대화 상자의 "Other" 자유 텍스트 입력에서도 작동합니다.203* **여러 줄 입력**: `Shift+Enter`를 누르면 전송하지 않고 새 줄을 추가합니다. 이는 질문 대화 상자의 "Other" 자유 텍스트 입력에서도 작동합니다.

204 204 

205### 제안된 프롬프트 사용하거나 끄기

206 

207Claude가 응답한 후, 패널은 비어 있는 프롬프트 상자에 제안된 다음 프롬프트를 회색 기울임꼴 텍스트로 표시할 수 있습니다. 각 제안은 플랜의 사용 한도 또는 API 비용에 포함되는 [짧은 백그라운드 요청](https://code.claude.com/docs/ko/interactive-mode.md#prompt-suggestions)을 사용합니다.

208 

209* **제안 사용하기**: `Tab`을 눌러 편집 가능한 텍스트로 바꾼 다음 전송합니다. 제안을 수락하기 전에 `Enter`를 눌러도 제안은 전송되지 않습니다.

210* **직접 프롬프트 작성하기**: 입력을 시작하면 제안이 숨겨집니다.

211 

212제안을 끄려면 `~/.claude/settings.json`에서 [`promptSuggestionEnabled`](https://code.claude.com/docs/ko/settings-reference#promptsuggestionenabled)를 `false`로 설정합니다. 새 대화에서는 제안이 더 이상 표시되지 않으며, 열려 있는 대화에서는 명령 팔레트에서 **Developer: Reload Window**를 실행한 후부터 표시되지 않습니다. [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](https://code.claude.com/docs/ko/env-vars)을 `true`로 설정했다면 설정한 곳에서 `false`로 변경하세요. 그렇지 않으면 제안이 계속 표시됩니다.

213 

205### 파일 및 폴더 참조하기214### 파일 및 폴더 참조하기

206 215 

207@-멘션을 사용하여 특정 파일이나 폴더에 대한 컨텍스트를 Claude에 제공합니다. `@` 뒤에 파일 또는 폴더 이름을 입력하면 Claude가 해당 내용을 읽고 이에 대한 질문에 답하거나 변경할 수 있습니다. Claude Code는 퍼지 매칭을 지원하므로 이름의 일부만 입력해도 원하는 항목을 찾을 수 있습니다.216@-멘션을 사용하여 특정 파일이나 폴더에 대한 컨텍스트를 Claude에 제공합니다. `@` 뒤에 파일 또는 폴더 이름을 입력하면 Claude가 해당 내용을 읽고 이에 대한 질문에 답하거나 변경할 수 있습니다. Claude Code는 퍼지 매칭을 지원하므로 이름의 일부만 입력해도 원하는 항목을 찾을 수 있습니다.


936| `SSL certificate verification failed` 또는 `Self-signed certificate detected` | [SSL 인증서 오류](https://code.claude.com/docs/ko/errors.md#ssl-certificate-errors) |945| `SSL certificate verification failed` 또는 `Self-signed certificate detected` | [SSL 인증서 오류](https://code.claude.com/docs/ko/errors.md#ssl-certificate-errors) |

937| `Dictation error: WebSocket error:` 뒤에 `unable to get local issuer certificate` 같은 인증서 오류가 표시되거나, Web 탭에 `Remote server is not connected`가 표시됨 | [TLS 검사 프록시 뒤에서 받아쓰기 또는 Web 탭이 실패하는 경우](#dictation-or-the-web-tab-fails-behind-a-tls-inspecting-proxy) |946| `Dictation error: WebSocket error:` 뒤에 `unable to get local issuer certificate` 같은 인증서 오류가 표시되거나, Web 탭에 `Remote server is not connected`가 표시됨 | [TLS 검사 프록시 뒤에서 받아쓰기 또는 Web 탭이 실패하는 경우](#dictation-or-the-web-tab-fails-behind-a-tls-inspecting-proxy) |

938| `Claude Code process exited with code 1` 또는 다른 코드 | [Claude Code process exited with code N](https://code.claude.com/docs/ko/errors.md#claude-code-process-exited-with-code-n) |947| `Claude Code process exited with code 1` 또는 다른 코드 | [Claude Code process exited with code N](https://code.claude.com/docs/ko/errors.md#claude-code-process-exited-with-code-n) |

948| `Claude Code did not finish starting` 또는 `Subprocess initialization did not complete within 60000ms` | [Subprocess initialization did not complete within 60000ms](https://code.claude.com/docs/ko/errors.md#subprocess-initialization-did-not-complete-within-60000ms) |

939| `Could not locate the Claude CLI on PATH` | [Could not locate the Claude CLI on PATH](https://code.claude.com/docs/ko/errors.md#could-not-locate-the-claude-cli-on-path) |949| `Could not locate the Claude CLI on PATH` | [Could not locate the Claude CLI on PATH](https://code.claude.com/docs/ko/errors.md#could-not-locate-the-claude-cli-on-path) |

940| `The connection to Claude Code ended before this message completed` | [The connection to Claude Code ended before this message completed](https://code.claude.com/docs/ko/errors.md#the-connection-to-claude-code-ended-before-this-message-completed) |950| `The connection to Claude Code ended before this message completed` | [The connection to Claude Code ended before this message completed](https://code.claude.com/docs/ko/errors.md#the-connection-to-claude-code-ended-before-this-message-completed) |

941| `The Claude Code program for this computer, the <build> build, could not be found` | [The Claude Code program for this computer could not be found](https://code.claude.com/docs/ko/errors.md#the-claude-code-program-for-this-computer-could-not-be-found) |951| `The Claude Code program for this computer, the <build> build, could not be found` | [The Claude Code program for this computer could not be found](https://code.claude.com/docs/ko/errors.md#the-claude-code-program-for-this-computer-could-not-be-found) |

workflows.md +0 −2

Details

75| :- | :- |75| :- | :- |

76| `/deep-research <question>` | 질문에 대해 여러 각도에서 웹 검색을 확산시키고, 찾은 소스를 가져와 교차 검증하며, 각 주장에 투표하고, 교차 검증을 통과하지 못한 주장이 필터링된 인용된 보고서를 반환합니다. [WebSearch 도구](https://code.claude.com/docs/ko/tools-reference.md#websearch-tool-behavior)를 사용할 수 있어야 합니다 |76| `/deep-research <question>` | 질문에 대해 여러 각도에서 웹 검색을 확산시키고, 찾은 소스를 가져와 교차 검증하며, 각 주장에 투표하고, 교차 검증을 통과하지 못한 주장이 필터링된 인용된 보고서를 반환합니다. [WebSearch 도구](https://code.claude.com/docs/ko/tools-reference.md#websearch-tool-behavior)를 사용할 수 있어야 합니다 |

77 77 

78`/deep-research`는 사용자가 호출할 때만 실행됩니다.

79 

80[직접 저장](#save-the-workflow-for-reuse)한 워크플로우는 같은 방식으로 명령이 되며 번들된 워크플로우와 함께 `/` 자동 완성에 나타납니다.78[직접 저장](#save-the-workflow-for-reuse)한 워크플로우는 같은 방식으로 명령이 되며 번들된 워크플로우와 함께 `/` 자동 완성에 나타납니다.

81 79 

82### 실행 확인80### 실행 확인