539| 속성 | 유형 | 기본값 | 설명 |539| 속성 | 유형 | 기본값 | 설명 |
540| :- | :- | :- | :- |540| :- | :- | :- | :- |
541| `abortController` | `AbortController` | `new AbortController()` | 작업 취소를 위한 컨트롤러 |541| `abortController` | `AbortController` | `new AbortController()` | 작업 취소를 위한 컨트롤러 |
542| `additionalDirectories` | `string[]` | `[]` | Claude가 접근할 수 있는 추가 디렉토리입니다. SDK는 각 항목을 Claude Code에 `--add-dir`로 전달하므로, `project` 설정이 있는 Claude Code 소스도 [디렉토리의 스킬, 명령어 및 서브에이전트를 로드합니다](/docs/ko/permissions#additional-directories-grant-file-access-not-configuration) |542| `additionalDirectories` | `string[]` | `[]` | Claude가 접근할 수 있는 추가 디렉토리입니다. SDK는 각 항목을 Claude Code에 `--add-dir`로 전달하므로, `project` 설정 소스를 사용하면 Claude Code도 [디렉토리의 스킬, 명령어 및 서브에이전트를 로드합니다](/docs/ko/permissions#additional-directories-grant-file-access-not-configuration) |
543| `agent` | `string` | `undefined` | 메인 스레드의 에이전트 이름입니다. 에이전트는 `agents` 옵션 또는 설정에서 정의되어야 합니다 |543| `agent` | `string` | `undefined` | 메인 스레드의 에이전트 이름입니다. 에이전트는 `agents` 옵션이나 설정에서 정의되어야 합니다 |
544| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | 프로그래밍 방식으로 서브에이전트를 정의합니다 |544| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | 프로그래밍 방식으로 서브에이전트를 정의합니다 |
545| `agentProgressSummaries` | `boolean` | `false` | `true`일 때, 서브에이전트에 대한 한 줄 진행 상황 요약을 생성하고 [`task_progress`](#sdktaskprogressmessage) 이벤트의 `summary` 필드를 통해 전달합니다. 포그라운드 및 백그라운드 서브에이전트에 적용됩니다 |545| `agentProgressSummaries` | `boolean` | `false` | `true`일 때, 서브에이전트에 대한 한 줄 진행 요약을 생성하고 [`task_progress`](#sdktaskprogressmessage) 이벤트의 `summary` 필드를 통해 전달합니다. 포그라운드 및 백그라운드 서브에이전트에 적용됩니다 |
546| `allowDangerouslySkipPermissions` | `boolean` | `false` | 권한 우회를 활성화합니다. `permissionMode: 'bypassPermissions'`를 사용할 때 필요하며, 시작 시 또는 나중에 `setPermissionMode()`를 통해 설정할 수 있습니다. [플랜 모드](/docs/ko/agent-sdk/permissions#plan-mode-plan)에서 `permissionMode: 'plan'`과 상호작용하는 방식을 참조하세요 |546| `allowDangerouslySkipPermissions` | `boolean` | `false` | 권한 우회를 활성화합니다. `permissionMode: 'bypassPermissions'`를 사용할 때 필요하며, 시작 시 또는 나중에 `setPermissionMode()`를 통해 설정할 수 있습니다. [플랜 모드](/docs/ko/agent-sdk/permissions#plan-mode-plan)에서 `permissionMode: 'plan'`과 상호작용하는 방식을 참조하세요 |
547| `allowedTools` | `string[]` | `[]` | 프롬프트 없이 자동 승인할 도구입니다. 이는 Claude를 이 도구들로만 제한하지 않습니다. [작업 추적 도구](/docs/ko/agent-sdk/todo-tracking#model-availability) 중 하나를 여기에 명시하면, Claude Code도 세션을 옵트인합니다. 나열되지 않은 다른 도구는 `permissionMode` 및 `canUseTool`로 전달됩니다. 도구를 차단하려면 `disallowedTools`를 사용하세요. [권한](/docs/ko/agent-sdk/permissions#allow-and-deny-rules)을 참조하세요 |547| `allowedTools` | `string[]` | `[]` | 프롬프트 없이 자동 승인할 도구입니다. 이것은 Claude를 이 도구들로만 제한하지 않습니다. [작업 추적 도구](/docs/ko/agent-sdk/todo-tracking#model-availability) 중 하나를 여기에 명시하면 Claude Code도 세션을 옵트인합니다. 나열되지 않은 다른 도구는 `permissionMode` 및 `canUseTool`로 전달됩니다. `disallowedTools`를 사용하여 도구를 차단합니다. [권한](/docs/ko/agent-sdk/permissions#allow-and-deny-rules)을 참조하세요 |
548| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | 베타 기능을 활성화합니다 |548| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | 베타 기능을 활성화합니다 |
549| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | 사용자 정의 권한 함수로, [권한 흐름](/docs/ko/agent-sdk/permissions#how-permissions-are-evaluated)이 프롬프트로 전달될 때만 호출됩니다. `allowedTools`, 허용 규칙 또는 `permissionMode`에 의해 자동 승인된 호출에 대해서는 호출되지 않습니다. 허용 규칙은 [모든 모드가 자동 승인하지 않는 작업](/docs/ko/permission-modes#actions-no-mode-auto-approves)을 사전 승인하지 않습니다. [`CanUseTool`](#canusetool)의 세부 정보를 참조하세요 |549| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | 사용자 정의 권한 함수로, [권한 흐름](/docs/ko/agent-sdk/permissions#how-permissions-are-evaluated)이 프롬프트로 전달될 때만 호출됩니다. `allowedTools`, 허용 규칙 또는 `permissionMode`에 의해 자동 승인된 호출에 대해서는 호출되지 않습니다. 허용 규칙은 [모드가 자동 승인하지 않는 작업](/docs/ko/permission-modes#actions-no-mode-auto-approves)을 사전 승인하지 않습니다. 자세한 내용은 [`CanUseTool`](#canusetool)을 참조하세요 |
550| `continue` | `boolean` | `false` | 가장 최근 대화를 계속합니다 |550| `continue` | `boolean` | `false` | 가장 최근 대화를 계속합니다 |
551| `cwd` | `string` | `process.cwd()` | 현재 작업 디렉토리 |551| `cwd` | `string` | `process.cwd()` | 현재 작업 디렉토리 |
552| `debug` | `boolean` | `false` | Claude Code 프로세스에 대한 디버그 모드를 활성화합니다 |552| `debug` | `boolean` | `false` | Claude Code 프로세스에 대한 디버그 모드를 활성화합니다 |
553| `debugFile` | `string` | `undefined` | 디버그 로그를 특정 파일 경로에 작성합니다. 암묵적으로 디버그 모드를 활성화합니다 |553| `debugFile` | `string` | `undefined` | 디버그 로그를 특정 파일 경로에 작성합니다. 암묵적으로 디버그 모드를 활성화합니다 |
554| `disallowedTools` | `string[]` | `[]` | 거부할 도구입니다. `"Bash"`와 같은 단순 이름은 Claude의 컨텍스트에서 도구를 제거합니다. `"Bash(rm *)"` 같은 범위 지정 규칙은 도구를 사용 가능하게 두고 [작성된 대로](/docs/ko/permissions#bash-rule-limits) 모든 권한 모드(예: `bypassPermissions`)에서 일치하는 호출을 거부합니다. [권한](/docs/ko/agent-sdk/permissions#allow-and-deny-rules)을 참조하세요 |554| `disallowedTools` | `string[]` | `[]` | 거부할 도구입니다. `"Bash"`와 같은 단순 이름은 Claude의 컨텍스트에서 도구를 제거합니다. `"Bash(rm *)"` 같은 범위 지정 규칙은 도구를 사용 가능하게 두고 [작성된 대로](/docs/ko/permissions#bash-rule-limits) 모든 권한 모드(bypassPermissions 포함)에서 일치하는 호출을 거부합니다. [권한](/docs/ko/agent-sdk/permissions#allow-and-deny-rules)을 참조하세요 |
555| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `undefined` | Claude가 응답에 투입하는 노력의 정도를 제어합니다. 적응형 사고와 함께 작동하여 사고 깊이를 안내합니다. [노력 수준 조정](/docs/ko/model-config#adjust-effort-level)을 참조하세요 |555| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `undefined` | Claude가 응답에 투입하는 노력의 정도를 제어합니다. 적응형 사고와 함께 작동하여 사고 깊이를 안내합니다. [노력 수준 조정](/docs/ko/model-config#adjust-effort-level)을 참조하세요 |
556| `enableFileCheckpointing` | `boolean` | `false` | 되감기를 위한 파일 변경 추적을 활성화합니다. [파일 체크포인팅](/docs/ko/agent-sdk/file-checkpointing)을 참조하세요 |556| `enableFileCheckpointing` | `boolean` | `false` | 되감기를 위한 파일 변경 추적을 활성화합니다. [파일 체크포인팅](/docs/ko/agent-sdk/file-checkpointing)을 참조하세요 |
557| `env` | `Record<string, string \| undefined>` | `process.env` | 환경 변수입니다. 설정하면 `process.env`와 병합하는 대신 서브프로세스 환경을 대체하므로, `{ ...process.env, YOUR_VAR: 'value' }`를 전달하여 `PATH`와 같은 상속된 변수를 유지하세요. 이 패턴의 예는 [느리거나 정지된 API 응답 처리](#handle-slow-or-stalled-api-responses)를 참조하고, 기본 CLI가 읽는 변수는 [환경 변수](/docs/ko/env-vars)를 참조하세요. User-Agent 헤더에서 앱을 식별하려면 `CLAUDE_AGENT_SDK_CLIENT_APP`을 설정하세요 |557| `env` | `Record<string, string \| undefined>` | `process.env` | 환경 변수입니다. 설정하면 `process.env`와 병합하는 대신 서브프로세스 환경을 대체하므로, 상속된 변수(예: `PATH`)를 유지하려면 `{ ...process.env, YOUR_VAR: 'value' }`를 전달하세요. 이 패턴의 예는 [느리거나 정지된 API 응답 처리](#handle-slow-or-stalled-api-responses)를 참조하고, 기본 CLI가 읽는 변수는 [환경 변수](/docs/ko/env-vars)를 참조하세요. User-Agent 헤더에서 앱을 식별하려면 `CLAUDE_AGENT_SDK_CLIENT_APP`을 설정하세요 |
558| `executable` | `'bun' \| 'deno' \| 'node'` | 자동 감지 | 사용할 JavaScript 런타임입니다 |558| `executable` | `'bun' \| 'deno' \| 'node'` | 자동 감지 | 사용할 JavaScript 런타임 |
559| `executableArgs` | `string[]` | `[]` | 실행 파일에 전달할 인수입니다 |559| `executableArgs` | `string[]` | `[]` | 실행 파일에 전달할 인수 |
560| `extraArgs` | `Record<string, string \| null>` | `{}` | 추가 인수입니다 |560| `extraArgs` | `Record<string, string \| null>` | `{}` | 추가 인수 |
561| `fallbackModel` | `string` | `undefined` | 기본 모델이 실패할 경우 사용할 모델입니다. 쉼표로 구분된 목록을 허용합니다. 순서 및 상한에 대해서는 [폴백 모델 체인](/docs/ko/model-config#fallback-model-chains)을 참조하세요. 지침은 [모델 선택](/docs/ko/agent-sdk/configuration#choose-a-model)을 참조하세요 |561| `fallbackModel` | `string` | `undefined` | 기본 모델이 실패할 경우 사용할 모델입니다. 쉼표로 구분된 목록을 허용합니다. 순서 및 상한에 대해서는 [폴백 모델 체인](/docs/ko/model-config#fallback-model-chains)을 참조하세요. 지침은 [모델 선택](/docs/ko/agent-sdk/configuration#choose-a-model)을 참조하세요 |
562| `forkSession` | `boolean` | `false` | `resume`으로 재개할 때 원본 세션을 계속하는 대신 새 세션 ID로 포크합니다 |562| `forkSession` | `boolean` | `false` | `resume`으로 재개할 때 원래 세션을 계속하는 대신 새 세션 ID로 포크합니다 |
563| `forwardSubagentText` | `boolean` | `false` | 서브에이전트 텍스트 및 사고 블록을 `parent_tool_use_id`가 설정된 어시스턴트 및 사용자 메시지로 전달하여 소비자가 중첩된 대화록을 렌더링할 수 있도록 합니다. 이 옵션이 없으면 Claude Code는 서브에이전트 `tool_use` 및 `tool_result` 블록을 내보내지만 텍스트나 사고는 내보내지 않습니다. 모든 중첩 깊이의 서브에이전트 메시지는 Claude Code v2.1.219 이상에서 전달됩니다. v2.1.219 이전에는 깊이 1의 서브에이전트 메시지만 나타났습니다. 포크된 스킬이 생성하는 서브에이전트의 메시지와 중첩된 포크된 스킬의 메시지는 v2.1.275 이상이 필요합니다 |563| `forwardSubagentText` | `boolean` | `false` | 서브에이전트 텍스트 및 사고 블록을 `parent_tool_use_id`가 설정된 어시스턴트 및 사용자 메시지로 전달하여 소비자가 중첩된 대화를 렌더링할 수 있도록 합니다. 이 옵션이 없으면 Claude Code는 서브에이전트 `tool_use` 및 `tool_result` 블록을 내보내지만 텍스트나 사고는 내보내지 않습니다. Claude Code v2.1.219 이상에서는 모든 중첩 깊이의 서브에이전트 메시지가 전달됩니다. v2.1.219 이전에는 깊이 1의 서브에이전트 메시지만 나타났습니다. 포크된 스킬이 생성하는 서브에이전트의 메시지 및 중첩된 포크된 스킬은 v2.1.275 이상이 필요합니다 |
564| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | 이벤트에 대한 훅 콜백입니다 |564| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | 이벤트에 대한 훅 콜백 |
565| `includeHookEvents` | `boolean` | `false` | 훅 라이프사이클 이벤트를 메시지 스트림에 [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage) 및 [`SDKHookResponseMessage`](#sdkhookresponsemessage)로 포함합니다. `SessionStart` 및 `Setup` 훅의 라이프사이클 이벤트는 항상 포함되며 이 옵션이 필요하지 않습니다. `Notification`, `SessionEnd`, `PreCompact` 및 `PostCompact` 같은 일부 훅 이벤트는 이 옵션이 있어도 `SDKHookStartedMessage`를 생성하지 않습니다. 이러한 이벤트의 경우 Claude Code는 여전히 `SDKHookProgressMessage`를 내보내고, 1초 이상 실행되는 명령어 훅은 출력을 내보내며, [백그라운드에서 실행되는](/docs/ko/hooks#run-hooks-in-the-background) 훅이 완료될 때만 `SDKHookResponseMessage`를 내보냅니다 |565| `includeHookEvents` | `boolean` | `false` | 훅 라이프사이클 이벤트를 메시지 스트림에 [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage) 및 [`SDKHookResponseMessage`](#sdkhookresponsemessage)로 포함합니다. `SessionStart` 및 `Setup` 훅의 라이프사이클 이벤트는 항상 포함되며 이 옵션이 필요하지 않습니다. `Notification`, `SessionEnd`, `PreCompact` 및 `PostCompact` 같은 일부 훅 이벤트는 이 옵션을 사용하더라도 `SDKHookStartedMessage`를 생성하지 않습니다. 이러한 이벤트의 경우 Claude Code는 여전히 1초 이상 실행되는 명령어 훅이 출력을 생성하는 동안 `SDKHookProgressMessage`를 내보내고, [백그라운드에서 실행되는](/docs/ko/hooks#run-hooks-in-the-background) 훅이 완료될 때만 `SDKHookResponseMessage`를 내보냅니다 |
566| `includePartialMessages` | `boolean` | `false` | 부분 메시지 이벤트를 포함합니다 |566| `includePartialMessages` | `boolean` | `false` | 부분 메시지 이벤트를 포함합니다 |
567| `loadTimeoutMs` | `number` | `60000` | *알파.* 재개 구체화 중 각 `sessionStore.load()` 및 `sessionStore.listSubkeys()` 호출에 대한 밀리초 단위 시간 초과입니다. 어댑터가 이 창 내에서 정착하지 않으면 쿼리가 중단되는 대신 실패합니다. `sessionStore`가 설정되지 않으면 무시됩니다 |567| `loadTimeoutMs` | `number` | `60000` | *알파.* 재개 구체화 중 각 `sessionStore.load()` 및 `sessionStore.listSubkeys()` 호출에 대한 밀리초 단위 시간 초과입니다. 어댑터가 이 창 내에 정착하지 않으면 쿼리가 중단되는 대신 실패합니다. `sessionStore`가 설정되지 않으면 무시됩니다 |
568| `managedSettings` | `Settings` | `undefined` | 호스트 프로세스가 생성된 세션에 제공하는 정책 계층 설정입니다. 관리자가 배포한 관리 설정이 있는 머신에서 Claude Code는 관리자의 최우선 관리 소스가 `parentSettingsBehavior: 'merge'`를 설정하지 않으면 이를 무시하고, [`policyHelper`](/docs/ko/settings-reference#policyhelper)가 관리 설정을 제공하는 동안 절대 병합하지 않습니다. 병합된 값은 제한적 필터를 통과합니다. [부모 설정 제한](/docs/ko/claude-apps-gateway#restrict-parent-settings)은 필터가 허용하는 것과 `allowManaged*Only` 잠금을 다룹니다. [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/ko/env-vars)를 설정한 호스트는 이 페이로드에서 직접 읽은 세 가지 키를 가집니다. Claude Code v2.1.222 이상의 [모델 구성](/docs/ko/model-config#restrict-model-selection), 관리 소스가 v2.1.246 이상에서 설정하지 않을 때 [`modelPricing`](/docs/ko/settings-reference#modelpricing), v2.1.247 이상에서 `ENABLE_TOOL_SEARCH` env 항목입니다 |568| `managedSettings` | `Settings` | `undefined` | 호스트 프로세스가 생성된 세션에 제공하는 정책 계층 설정입니다. 관리자가 배포한 관리 설정이 있는 머신에서 Claude Code는 관리자의 최우선 관리 소스가 `parentSettingsBehavior: 'merge'`를 설정하지 않는 한 이를 무시하며, [`policyHelper`](/docs/ko/settings-reference#policyhelper)가 관리 설정을 제공하는 동안 병합하지 않습니다. 병합된 값은 제한적 필터를 통과합니다. [부모 설정 제한](/docs/ko/claude-apps-gateway#restrict-parent-settings)은 필터가 허용하는 것과 `allowManaged*Only` 잠금을 다룹니다. [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/ko/env-vars)를 설정하는 호스트는 이 페이로드에서 직접 읽는 세 가지 키가 있습니다. Claude Code v2.1.222 이상의 [모델 구성](/docs/ko/model-config#restrict-model-selection), 관리 소스가 v2.1.246 이상에서 설정하지 않을 때 [`modelPricing`](/docs/ko/settings-reference#modelpricing), v2.1.247 이상에서 `ENABLE_TOOL_SEARCH` env 항목 |
569| `maxBudgetUsd` | `number` | `undefined` | 클라이언트 측 비용 추정이 이 USD 값에 도달하면 쿼리를 중지합니다. 호출 자체의 지출만 계산합니다. 재개된 세션에서 복원된 합계는 계산되지 않습니다. 정확도 주의 사항 및 재설정 동작은 [비용 및 사용량 추적](/docs/ko/agent-sdk/cost-tracking)을 참조하세요 |569| `maxBudgetUsd` | `number` | `undefined` | 클라이언트 측 비용 추정이 이 USD 값에 도달하면 쿼리를 중지합니다. 호출 자체의 지출만 계산합니다. 재개된 세션에서 복원된 합계는 계산되지 않습니다. 정확도 주의사항 및 재설정 동작은 [비용 및 사용량 추적](/docs/ko/agent-sdk/cost-tracking)을 참조하세요 |
570| `maxThinkingTokens` | `number` | `undefined` | *더 이상 사용되지 않음:* 대신 `thinking`을 사용하세요. 사고 프로세스의 최대 토큰 |570| `maxThinkingTokens` | `number` | `undefined` | *더 이상 사용되지 않음:* 대신 `thinking`을 사용하세요. 사고 프로세스의 최대 토큰 |
571| `maxTurns` | `number` | `undefined` | 최대 에이전트 턴(도구 사용 왕복) |571| `maxTurns` | `number` | `undefined` | 최대 에이전트 턴(도구 사용 왕복) |
572| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | MCP 서버 구성입니다 |572| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | MCP 서버 구성 |
573| `model` | `string` | CLI의 기본값 | Claude 모델 별칭 또는 전체 모델 이름입니다. [허용되는 값 및 공급자별 ID](/docs/ko/model-config#available-models)를 참조하세요 |573| `model` | `string` | CLI의 기본값 | Claude 모델 별칭 또는 전체 모델 이름입니다. [허용되는 값 및 공급자별 ID](/docs/ko/model-config#available-models)를 참조하세요 |
574| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | MCP 유도 요청 처리를 위한 콜백입니다. MCP 서버가 사용자 입력을 요청하고 훅이 먼저 처리하지 않을 때 호출됩니다. 제공되지 않으면 처리되지 않은 유도 요청이 자동으로 거부됩니다 |574| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | MCP 유도 요청 처리를 위한 콜백입니다. MCP 서버가 사용자 입력을 요청하고 훅이 먼저 처리하지 않을 때 호출됩니다. 제공되지 않으면 처리되지 않은 유도 요청이 자동으로 거부됩니다 |
575| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | 에이전트 결과의 출력 형식을 정의합니다. [구조화된 출력](/docs/ko/agent-sdk/structured-outputs)의 세부 정보를 참조하세요 |575| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | 에이전트 결과의 출력 형식을 정의합니다. 자세한 내용은 [구조화된 출력](/docs/ko/agent-sdk/structured-outputs)을 참조하세요 |
576| `outputStyle` | `string` | `undefined` | `Options` 필드가 아닙니다. 인라인 [`settings`](/docs/ko/settings) 객체 또는 설정 파일에서 `outputStyle`을 설정하세요. [출력 스타일 활성화](/docs/ko/agent-sdk/modifying-system-prompts#activate-an-output-style)를 참조하세요 |576| `outputStyle` | `string` | `undefined` | `Options` 필드가 아닙니다. 인라인 [`settings`](/docs/ko/settings) 객체 또는 설정 파일에서 `outputStyle`을 설정하세요. [출력 스타일 활성화](/docs/ko/agent-sdk/modifying-system-prompts#activate-an-output-style)를 참조하세요 |
577| `pathToClaudeCodeExecutable` | `string` | 번들된 네이티브 바이너리에서 자동 해결됨 | Claude Code 실행 파일의 경로입니다. 설치 중 선택적 종속성을 건너뛰었거나 플랫폼이 지원되는 집합에 없을 때만 필요합니다 |577| `pathToClaudeCodeExecutable` | `string` | 번들된 네이티브 바이너리에서 자동 해결 | Claude Code 실행 파일의 경로입니다. 설치 중에 선택적 종속성을 건너뛰었거나 플랫폼이 지원되는 집합에 없는 경우에만 필요합니다 |
578| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | 세션의 권한 모드입니다 |578| `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | 세션의 권한 모드입니다. 생략하면 세션이 자동 모드로 시작될 수 있습니다. Claude Code가 시작 권한 모드를 선택하는 방식은 [권한 모드](/docs/ko/agent-sdk/permissions#permission-modes)를 참조하세요 |
579| `permissionPromptToolName` | `string` | `undefined` | 권한 프롬프트의 MCP 도구 이름입니다 |579| `permissionPromptToolName` | `string` | `undefined` | 권한 프롬프트의 MCP 도구 이름 |
580| `permissionPrompts` | `'host' \| 'none'` | `'host'` | 권한 프롬프트에 응답하는 사람입니다. `'host'`는 [`canUseTool`](#canusetool) 콜백 또는 `permissionPromptToolName` 도구로 라우팅하고, `'none'`은 [프롬프트가 표시되었을 호출을 거부합니다](/docs/ko/agent-sdk/permissions#how-permissions-are-evaluated). Claude Code v2.1.259 이상이 필요합니다 |580| `permissionPrompts` | `'host' \| 'none'` | `'host'` | 권한 프롬프트에 응답하는 사람: `'host'`는 [`canUseTool`](#canusetool) 콜백 또는 `permissionPromptToolName` 도구로 라우팅하고, `'none'`은 [프롬프트가 표시되었을 호출을 거부합니다](/docs/ko/agent-sdk/permissions#how-permissions-are-evaluated). Claude Code v2.1.259 이상이 필요합니다 |
581| `persistSession` | `boolean` | `true` | `false`일 때, 디스크에 대한 세션 지속성을 비활성화합니다. 세션을 나중에 재개할 수 없습니다 |581| `persistSession` | `boolean` | `true` | `false`일 때, 디스크에 대한 세션 지속성을 비활성화합니다. 세션을 나중에 재개할 수 없습니다 |
582| `planModeInstructions` | `string` | `undefined` | 플랜 모드의 사용자 정의 워크플로우 지침입니다. `permissionMode`가 `'plan'`일 때, 이 문자열은 기본 플랜 모드 워크플로우 본문을 대체합니다. CLI는 여전히 읽기 전용 적용 프리앰블과 ExitPlanMode 프로토콜 바닥글로 래핑합니다 |582| `planModeInstructions` | `string` | `undefined` | 플랜 모드의 사용자 정의 워크플로우 지침입니다. `permissionMode`가 `'plan'`일 때, 이 문자열은 기본 플랜 모드 워크플로우 본문을 대체합니다. CLI는 여전히 읽기 전용 적용 프리앰블과 ExitPlanMode 프로토콜 바닥글로 래핑합니다 |
583| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | 로컬 경로에서 사용자 정의 플러그인을 로드합니다. [플러그인](/docs/ko/agent-sdk/plugins)의 세부 정보를 참조하세요 |583| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | 로컬 경로에서 사용자 정의 플러그인을 로드합니다. 자세한 내용은 [플러그인](/docs/ko/agent-sdk/plugins)을 참조하세요 |
584| `projectConfigRoot` | `string` | `undefined` | `cwd`가 worktree인 신뢰할 수 있는 체크아웃의 절대 경로입니다. Claude Code는 프로젝트 설정, `.mcp.json` 및 프로젝트의 `.claude/` 명령어, 에이전트, 스킬, 워크플로우, 루틴 및 출력 스타일을 `cwd` 대신 이 디렉토리에서 읽고 `CLAUDE_PROJECT_DIR`을 설정합니다. `CLAUDE.md` 파일 및 `.claude/rules/`는 여전히 `cwd`에서 로드됩니다. `apiKeyHelper` 같은 훅, 도우미 스크립트 및 stdio MCP 서버는 이 디렉토리를 작업 디렉토리로 시작합니다. Claude Code v2.1.275 이상이 필요합니다 |584| `projectConfigRoot` | `string` | `undefined` | `cwd`가 워크트리인 신뢰할 수 있는 체크아웃의 절대 경로입니다. Claude Code는 프로젝트 설정, `.mcp.json` 및 프로젝트의 `.claude/` 명령어, 에이전트, 스킬, 워크플로우, 루틴 및 출력 스타일을 `cwd` 대신 이 디렉토리에서 읽고 `CLAUDE_PROJECT_DIR`을 설정합니다. 훅, `apiKeyHelper` 같은 도우미 스크립트 및 stdio MCP 서버는 이 디렉토리를 작업 디렉토리로 시작합니다. `CLAUDE.md` 파일 및 `.claude/rules/`는 여전히 `cwd`에서 로드됩니다. Claude Code v2.1.275 이상이 필요합니다 |
585| `promptSuggestions` | `boolean` | `false` | 프롬프트 제안을 활성화합니다. 턴 후 Claude Code는 예측된 다음 사용자 프롬프트를 전달하는 `prompt_suggestion` 메시지를 내보냅니다. Claude Code는 계정이 사용량 한계에 가깝거나 도달했을 때와 같은 일부 턴에 대해 제안을 생성하지 않습니다. [Claude Code가 제안을 건너뛸 때](/docs/ko/interactive-mode#when-claude-code-skips-suggestions)를 참조하세요 |585| `promptSuggestions` | `boolean` | `false` | 프롬프트 제안을 활성화합니다. 턴 후 Claude Code는 예측된 다음 사용자 프롬프트를 전달하는 `prompt_suggestion` 메시지를 내보냅니다. Claude Code는 계정이 사용량 한계에 가깝거나 도달했을 때와 같은 일부 턴에 대해 제안을 생성하지 않습니다. [Claude Code가 제안을 건너뛸 때](/docs/ko/interactive-mode#when-claude-code-skips-suggestions)를 참조하세요 |
586| `resume` | `string` | `undefined` | 재개할 세션 ID입니다 |586| `resume` | `string` | `undefined` | 재개할 세션 ID |
587| `resumeDropsTurn` | `string` | `undefined` | `resumeSessionAt`과 함께: 자르기 재개가 버릴 의도가 있는 턴의 프롬프트 UUID입니다. Claude Code는 버려진 범위에 해당 턴에 귀속될 수 없는 것(예: 흡수된 대기 메시지 또는 작업 알림)이 포함되면 재개를 거부하고 거부 메시지에서 `--resume-drops-turn` 플래그를 명시합니다. 에이전트 SDK 및 인쇄 모드 재개만 쌍을 읽습니다. Claude Code v2.1.223 이상이 필요합니다 |587| `resumeDropsTurn` | `string` | `undefined` | `resumeSessionAt`과 함께: 자르는 재개가 버릴 의도의 턴의 프롬프트 UUID입니다. Claude Code는 버려진 범위에 해당 턴에 귀속될 수 없는 것(예: 흡수된 대기 메시지 또는 작업 알림)이 포함되면 재개를 거부하고 거부 메시지에서 `--resume-drops-turn` 플래그를 명시합니다. Agent SDK 및 인쇄 모드 재개만 쌍을 읽습니다. Claude Code v2.1.223 이상이 필요합니다 |
588| `resumeSessionAt` | `string` | `undefined` | 특정 메시지 UUID에서 세션을 재개합니다 |588| `resumeSessionAt` | `string` | `undefined` | 특정 메시지 UUID에서 세션을 재개합니다 |
589| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | 프로그래밍 방식으로 샌드박스 동작을 구성합니다. [샌드박스 설정](#sandboxsettings)의 세부 정보를 참조하세요 |589| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | 프로그래밍 방식으로 샌드박스 동작을 구성합니다. 자세한 내용은 [샌드박스 설정](#sandboxsettings)을 참조하세요 |
590| `sessionId` | `string` | 자동 생성됨 | 자동 생성하는 대신 세션에 특정 UUID를 사용합니다 |590| `sessionId` | `string` | 자동 생성 | 자동 생성하는 대신 세션에 특정 UUID를 사용합니다 |
591| `sessionStore` | [`SessionStore`](/docs/ko/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | 세션 대화록을 외부 백엔드로 미러링하여 다른 호스트가 재개할 수 있도록 합니다. [외부 저장소에 세션 지속](/docs/ko/agent-sdk/session-storage)을 참조하세요 |591| `sessionStore` | [`SessionStore`](/docs/ko/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | 세션 대화를 외부 백엔드로 미러링하여 다른 호스트가 재개할 수 있도록 합니다. [외부 저장소에 세션 지속](/docs/ko/agent-sdk/session-storage)을 참조하세요 |
592| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *알파.* `sessionStore`의 플러시 모드입니다. `sessionStore`가 설정되지 않으면 무시됩니다 |592| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *알파.* `sessionStore`의 플러시 모드입니다. `sessionStore`가 설정되지 않으면 무시됩니다 |
593| `settings` | `string \| Settings` | `undefined` | 인라인 [설정](/docs/ko/settings) 객체, 설정 파일 경로 또는 인라인 JSON 문자열입니다. [우선 순위 순서](/docs/ko/settings#settings-precedence)에서 플래그 설정 계층을 채웁니다. [`applyFlagSettings()`](#applyflagsettings)로 런타임에 변경하세요 |593| `settings` | `string \| Settings` | `undefined` | 인라인 [설정](/docs/ko/settings) 객체, 설정 파일 경로 또는 인라인 JSON 문자열입니다. [우선순위 순서](/docs/ko/settings#settings-precedence)에서 플래그 설정 계층을 채웁니다. [`applyFlagSettings()`](#applyflagsettings)로 런타임에 변경합니다 |
594| `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI 기본값(모든 소스) | 로드할 파일 시스템 설정을 제어합니다. 사용자, 프로젝트 및 로컬 설정을 비활성화하려면 `[]`를 전달하세요. [엔드포인트 관리 정책](/docs/ko/managed-settings#delivery-mechanisms)은 관계없이 로드됩니다. 서버 관리 설정은 세션이 [적격 구성](/docs/ko/server-managed-settings#platform-availability)에서 조직 자격증명으로 인증할 때 가져옵니다. [Claude Code 기능 사용](/docs/ko/agent-sdk/claude-code-features#what-settingsources-does-not-control)을 참조하세요 |594| `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI 기본값(모든 소스) | 로드할 파일 시스템 설정을 제어합니다. `[]`를 전달하여 사용자, 프로젝트 및 로컬 설정을 비활성화합니다. [엔드포인트 관리 정책](/docs/ko/managed-settings#delivery-mechanisms)은 관계없이 로드됩니다. 서버 관리 설정은 세션이 [적격 구성](/docs/ko/server-managed-settings#platform-availability)에서 조직 자격증으로 인증할 때 가져옵니다. [Claude Code 기능 사용](/docs/ko/agent-sdk/claude-code-features#what-settingsources-does-not-control)을 참조하세요 |
595| `skills` | `string[] \| 'all'` | `undefined` | 세션에서 사용 가능한 스킬입니다. 모든 발견된 스킬을 활성화하려면 `'all'`을 전달하거나 스킬 이름 목록을 전달하세요. 정확한 이름만 전달하세요. 에이전트 SDK v0.3.221 이상에서 SDK는 Claude Code 프로세스를 시작하기 전에 잘못된 형식 및 와일드카드 형식 이름을 오류로 거부합니다. 설정하면 SDK는 Skill 도구를 `allowedTools`에 자동으로 추가합니다. `tools`도 전달하면 해당 목록에 `'Skill'`을 포함하세요. [스킬](/docs/ko/agent-sdk/skills)을 참조하세요 |595| `skills` | `string[] \| 'all'` | `undefined` | 세션에서 사용 가능한 스킬입니다. 모든 발견된 스킬을 활성화하려면 `'all'`을 전달하거나 스킬 이름 목록을 전달합니다. 정확한 이름만 전달하세요. Agent SDK v0.3.221 이상에서 SDK는 Claude Code 프로세스를 시작하기 전에 잘못된 형식 및 와일드카드 형식 이름을 오류로 거부합니다. 설정하면 SDK는 Skill 도구를 `allowedTools`에 자동으로 추가합니다. `tools`도 전달하면 해당 목록에 `'Skill'`을 포함하세요. [스킬](/docs/ko/agent-sdk/skills)을 참조하세요 |
596| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Claude Code 프로세스를 생성하는 사용자 정의 함수입니다. VM, 컨테이너 또는 원격 환경에서 Claude Code를 실행하는 데 사용합니다 |596| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Claude Code 프로세스를 생성하는 사용자 정의 함수입니다. VM, 컨테이너 또는 원격 환경에서 Claude Code를 실행하는 데 사용합니다 |
597| `stderr` | `(data: string) => void` | `undefined` | stderr 출력에 대한 콜백입니다 |597| `stderr` | `(data: string) => void` | `undefined` | stderr 출력에 대한 콜백 |
598| `strictMcpConfig` | `boolean` | `false` | `mcpServers`에 전달된 서버만 사용하고 프로젝트 `.mcp.json`, 사용자 설정, 플러그인 제공 MCP 서버 및 [claude.ai 커넥터](/docs/ko/mcp#use-mcp-servers-from-claude-ai)를 무시합니다 |598| `strictMcpConfig` | `boolean` | `false` | `mcpServers`에 전달된 서버만 사용하고 프로젝트 `.mcp.json`, 사용자 설정, 플러그인 제공 MCP 서버 및 [claude.ai 커넥터](/docs/ko/mcp#use-mcp-servers-from-claude-ai)를 무시합니다 |
599| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined` (최소 프롬프트) | 시스템 프롬프트 구성입니다. 사용자 정의 프롬프트의 경우 문자열을 전달하거나, Claude Code의 시스템 프롬프트를 사용하려면 `{ type: 'preset', preset: 'claude_code' }`를 전달하세요. 내보낸 `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` 상수를 정적 및 요청별 부분 사이에 포함하여 [사용자 정의 프롬프트의 정적 부분을 캐시](/docs/ko/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt)하는 문자열 배열을 전달하세요. 프리셋 객체 형식을 사용할 때 추가 지침으로 확장하려면 `append`를 추가하고, [머신 간 더 나은 프롬프트 캐시 재사용](/docs/ko/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines)을 위해 세션별 컨텍스트를 첫 번째 사용자 메시지로 이동하려면 `excludeDynamicSections: true`를 설정하세요. 세션이 첫 번째 요청에서 기록한 프롬프트를 재사용하는 대신 [모든 요청에서 프롬프트를 다시 빌드](/docs/ko/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session)하려면 `snapshot: false`를 설정하세요. 사용자 정의 프롬프트에서 `snapshot`을 설정하려면 `{ type: 'custom', prompt }` 형식을 전달하세요. `{ type: 'custom' }` 형식과 `snapshot` 필드는 TypeScript 에이전트 SDK v0.3.257 이상이 필요합니다 |599| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined`(최소 프롬프트) | 시스템 프롬프트 구성입니다. 사용자 정의 프롬프트의 경우 문자열을 전달하거나, Claude Code의 시스템 프롬프트를 사용하려면 `{ type: 'preset', preset: 'claude_code' }`를 전달합니다. 내보낸 `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` 상수를 정적 및 요청별 부분 사이에 포함하는 문자열 배열을 전달하여 [사용자 정의 프롬프트의 정적 부분을 캐시합니다](/docs/ko/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt). 프리셋 객체 형식을 사용할 때 추가 지침으로 확장하려면 `append`를 추가하고, [머신 간 더 나은 프롬프트 캐시 재사용](/docs/ko/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines)을 위해 세션별 컨텍스트를 첫 번째 사용자 메시지로 이동하려면 `excludeDynamicSections: true`를 설정합니다. 세션이 첫 번째 요청에서 기록한 프롬프트를 재사용하는 대신 [모든 요청에서 프롬프트를 다시 빌드](/docs/ko/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session)하려면 `snapshot: false`를 설정합니다. 사용자 정의 프롬프트에서 `snapshot`을 설정하려면 `{ type: 'custom', prompt }` 형식을 전달합니다. `{ type: 'custom' }` 형식과 `snapshot` 필드는 TypeScript Agent SDK v0.3.257 이상이 필요합니다 |
600| `taskBudget` | `{ total: number }` | `undefined` | *알파.* API 측 작업 예산(토큰 단위)입니다. 설정하면 모델에 남은 토큰 예산이 알려져 도구 사용을 조절하고 한계 전에 마무리할 수 있습니다 |600| `taskBudget` | `{ total: number }` | `undefined` | *알파.* API 측 작업 예산(토큰 단위)입니다. 설정하면 모델에 남은 토큰 예산이 알려져 도구 사용 속도를 조절하고 한계 전에 마무리할 수 있습니다 |
601| `thinking` | [`ThinkingConfig`](#thinkingconfig) | 지원되는 모델의 경우 `{ type: 'adaptive' }` | Claude의 사고/추론 동작을 제어합니다. 옵션은 [`ThinkingConfig`](#thinkingconfig)를 참조하세요 |601| `thinking` | [`ThinkingConfig`](#thinkingconfig) | 지원되는 모델의 경우 `{ type: 'adaptive' }` | Claude의 사고/추론 동작을 제어합니다. 옵션은 [`ThinkingConfig`](#thinkingconfig)를 참조하세요 |
602| `title` | `string` | `undefined` | 세션의 표시 제목입니다. `resume` 또는 `continue`를 통해 재개할 때 재개된 세션의 지속된 제목이 우선합니다. 기존 세션의 제목을 변경하려면 [`renameSession()`](#renamesession)을 사용하세요 |602| `title` | `string` | `undefined` | 세션의 표시 제목입니다. `resume` 또는 `continue`를 통해 재개할 때 재개된 세션의 지속된 제목이 우선합니다. [`renameSession()`](#renamesession)을 사용하여 기존 세션의 제목을 변경합니다 |
603| `toolAliases` | `Record<string, string>` | `undefined` | 기본 제공 도구 이름을 MCP 도구 이름으로 매핑하여 Claude가 기본 제공 대신 MCP 구현을 호출하도록 합니다. 예를 들어 `{ Bash: 'mcp__workspace__bash' }` |603| `toolAliases` | `Record<string, string>` | `undefined` | 기본 제공 도구 이름을 MCP 도구 이름으로 매핑하여 Claude가 기본 제공 대신 MCP 구현을 호출하도록 합니다. 예를 들어 `{ Bash: 'mcp__workspace__bash' }` |
604| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | 기본 제공 도구 동작의 구성입니다. 세부 정보는 [`ToolConfig`](#toolconfig)를 참조하세요 |604| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | 기본 제공 도구 동작의 구성입니다. 자세한 내용은 [`ToolConfig`](#toolconfig)를 참조하세요 |
605| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | 도구 구성입니다. 도구 이름 배열을 전달하거나 프리셋을 사용하여 Claude Code의 기본 도구를 가져옵니다 |605| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | 도구 구성입니다. 도구 이름 배열을 전달하거나 프리셋을 사용하여 Claude Code의 기본 도구를 가져옵니다 |
606| `verbatimPrompts` | `boolean` | `false` | 작성된 대로 모든 프롬프트를 전달합니다. SDK는 각 사용자 메시지를 `client_composed: true`로 보냅니다. [`client_composed`](#sdkusermessage)에서 Claude Code가 이 메시지들을 건너뛰는 것을 참조하세요. 최종 사용자가 입력하지 않은 콘텐츠를 프롬프트 텍스트에 포함할 때 이 옵션을 사용하세요. 턴별 제어의 경우 이를 끄고 대신 스트리밍된 개별 메시지에서 `client_composed`를 설정하세요. TypeScript 에이전트 SDK v0.3.280 이상 및 Claude Code v2.1.248 이상이 필요합니다. 해당 SDK 버전과 함께 번들된 Claude Code 버전이 Claude Code 요구 사항을 충족합니다 |606| `verbatimPrompts` | `boolean` | `false` | 모든 프롬프트를 작성된 대로 전달합니다. SDK는 각 사용자 메시지를 `client_composed: true`로 보냅니다. Claude Code가 이러한 메시지에서 건너뛰는 것은 [`client_composed`](#sdkusermessage)를 참조하세요. 프롬프트 텍스트에 최종 사용자가 입력하지 않은 콘텐츠가 포함될 때 이 옵션을 사용합니다. 턴별 제어의 경우 이를 끄고 대신 스트리밍된 개별 메시지에서 `client_composed`를 설정합니다. TypeScript Agent SDK v0.3.280 이상 및 Claude Code v2.1.248 이상이 필요합니다. 이러한 SDK 버전과 함께 번들된 Claude Code 버전이 Claude Code 요구사항을 충족합니다 |
607 607
608<h4 id="handle-slow-or-stalled-api-responses">608<h4 id="handle-slow-or-stalled-api-responses">
609 느리거나 정지된 API 응답 처리609 느리거나 정지된 API 응답 처리
610</h4>610</h4>
611 611
612CLI 서브프로세스는 API 시간 초과 및 정지 감지를 제어하는 여러 환경 변수를 읽습니다. `env` 옵션을 통해 전달하세요:612CLI 서브프로세스는 API 시간 초과 및 정지 감지를 제어하는 여러 환경 변수를 읽습니다. `env` 옵션을 통해 전달합니다:
613 613
614```typescript theme={null}614```typescript theme={null}
615import { query } from "@anthropic-ai/claude-agent-sdk";615import { query } from "@anthropic-ai/claude-agent-sdk";
627});627});
628```628```
629 629
630* `API_TIMEOUT_MS`: Anthropic 클라이언트의 요청별 시간 초과(밀리초 단위)입니다. 기본값 `600000`입니다. 메인 루프 및 모든 서브에이전트에 적용됩니다.630* `API_TIMEOUT_MS`: Anthropic 클라이언트의 요청별 시간 초과(밀리초 단위). 기본값 `600000`. 메인 루프 및 모든 서브에이전트에 적용됩니다.
631* `CLAUDE_CODE_MAX_RETRIES`: 최대 API 재시도입니다. 기본값 `10`, 상한 `15`입니다. 각 재시도는 자체 `API_TIMEOUT_MS` 창을 가지므로 최악의 경우 벽시간은 대략 `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` 더하기 백오프입니다. 더 긴 중단을 기다려야 하는 무인 실행의 경우 [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/ko/errors#tune-retry-behavior)을 설정하세요. 일시적 용량 오류를 무한정 재시도하고, Claude Code v2.1.199 이상에서 다른 일시적 오류의 기본값을 `300`으로 올리고 이 변수의 상한을 제거합니다.631* `CLAUDE_CODE_MAX_RETRIES`: 최대 API 재시도 횟수. 기본값 `10`, 상한 `15`. 각 재시도는 자체 `API_TIMEOUT_MS` 창을 가지므로 최악의 경우 벽시간은 대략 `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` 더하기 백오프입니다. 더 긴 중단을 기다려야 하는 무인 실행의 경우 [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/ko/errors#tune-retry-behavior)을 설정합니다. 일시적 용량 오류를 무한정 재시도하고, Claude Code v2.1.199 이상에서는 다른 일시적 오류의 기본값을 `300`으로 올리고 이 변수의 상한을 제거합니다.
632* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: 서브에이전트의 정지 감시입니다. 스트림 감시가 켜져 있는 동안 기본값은 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 더하기 5분이며, 이는 해당 변수를 올리지 않으면 `600000`입니다. 스트림 감시가 꺼져 있으면 기본값은 `600000`입니다. v2.1.257 이전에는 기본값이 항상 `600000`이었습니다.632* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: 서브에이전트의 정지 감시견입니다. 스트림 감시견이 켜져 있는 동안 기본값은 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 더하기 5분이며, 이는 해당 변수를 올리지 않는 한 `600000`입니다. 스트림 감시견이 꺼져 있으면 기본값은 `600000`입니다. v2.1.257 이전에는 기본값이 항상 `600000`이었습니다.
633 633
634 타이머는 각 스트림 이벤트에서 재설정됩니다. 정지 시 Claude Code는 서브에이전트를 중단하고 정지를 부모에 보고합니다. 백그라운드 서브에이전트의 경우 작업도 실패로 표시하고 부분 결과를 첨부합니다.634 타이머는 각 스트림 이벤트에서 재설정됩니다. 정지 시 Claude Code는 서브에이전트를 중단하고 정지를 부모에 보고합니다. 백그라운드 서브에이전트의 경우 작업을 실패로 표시하고 부분 결과를 첨부합니다.
635* `CLAUDE_ENABLE_STREAM_WATCHDOG`과 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: 헤더가 도착했지만 응답 본문이 스트리밍을 중지할 때 요청을 중단하는 스트림 감시입니다. 감시는 모든 공급자에 대해 기본적으로 켜져 있습니다. 비활성화하려면 `CLAUDE_ENABLE_STREAM_WATCHDOG=0`을 설정하세요. `CLAUDE_STREAM_IDLE_TIMEOUT_MS`는 기본값 `300000`이고 해당 최소값으로 고정됩니다. 중단 후 [자동 재시도](/docs/ko/errors#automatic-retries)는 응답이 진행된 정도에 따라 Claude Code가 수행하는 작업을 다룹니다.635* `CLAUDE_ENABLE_STREAM_WATCHDOG`과 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: 헤더가 도착했지만 응답 본문이 스트리밍을 중지할 때 요청을 중단하는 스트림 감시견입니다. 감시견은 모든 공급자에 대해 기본적으로 켜져 있습니다. `CLAUDE_ENABLE_STREAM_WATCHDOG=0`으로 설정하여 비활성화합니다. `CLAUDE_STREAM_IDLE_TIMEOUT_MS`는 기본값 `300000`이고 해당 최소값으로 고정됩니다. 중단 후 [자동 재시도](/docs/ko/errors#automatic-retries)는 응답이 얼마나 진행되었는지에 따라 Claude Code가 수행하는 작업을 다룹니다.
636 636
637 감시가 `ANTHROPIC_BASE_URL` 뒤의 게이트웨이가 keep-alive 핑으로 열어 두는 응답을 기다리는 동안, `includePartialMessages`를 설정한 호스트는 계속 `ping` [스트림 이벤트](#sdkpartialassistantmessage)를 수신하므로 이 프레임을 생존성으로 읽고 마지막 실제 스트림 이벤트 후 5분 동안 세션 시간 초과를 하지 마세요. v2.1.257 이전에는 프레임이 5분 후에 중지되었습니다.637 감시견이 `ANTHROPIC_BASE_URL` 뒤의 게이트웨이가 keep-alive 핑으로 열어두는 응답을 기다리는 동안, `includePartialMessages`를 설정하는 호스트는 계속 `ping` [스트림 이벤트](#sdkpartialassistantmessage)를 수신하므로 이러한 프레임을 생존성으로 읽고 침묵에 대한 세션 시간 초과를 하지 마세요. v2.1.257 이전에는 마지막 실제 스트림 이벤트 후 5분 후에 프레임이 중지되었습니다.
638 638
639<h3 id="query-object">639<h3 id="query-object">
640 `Query` 객체640 `Query` 객체
641</h3>641</h3>
642 642
643`query()` 함수에서 반환된 인터페이스입니다.643`query()` 함수에서 반환하는 인터페이스입니다.
644 644
645```typescript theme={null}645```typescript theme={null}
646interface Query extends AsyncGenerator<SDKMessage, void> {646interface Query extends AsyncGenerator<SDKMessage, void> {
696 696
697| 메서드 | 설명 |697| 메서드 | 설명 |
698| :- | :- |698| :- | :- |
699| `interrupt()` | 쿼리를 중단합니다. 스트리밍 입력 모드에서만 사용 가능합니다. CLI가 [`SDKSystemMessage.capabilities`](#sdksystemmessage)에서 `interrupt_receipt_v1` 기능을 광고할 때 중단이 도착했을 때 대기 중이던 메시지를 나열하는 [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse)로 해결됩니다. v2.1.205 이전의 CLI에서는 `undefined`로 해결됩니다 |699| `interrupt()` | 쿼리를 중단합니다. 스트리밍 입력 모드에서만 사용 가능합니다. CLI가 [`SDKSystemMessage.capabilities`](#sdksystemmessage)에서 `interrupt_receipt_v1` 기능을 광고할 때, 중단이 도착했을 때 대기 중이던 메시지를 나열하는 [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse)로 해결됩니다. v2.1.205 이전의 CLI에서는 `undefined`로 해결됩니다 |
700| `rewindFiles(userMessageId, options?)` | 파일을 지정된 사용자 메시지의 상태로 복원합니다. 변경 사항을 미리 보려면 `{ dryRun: true }`를 전달하세요. `enableFileCheckpointing: true`가 필요합니다. [파일 체크포인팅](/docs/ko/agent-sdk/file-checkpointing)을 참조하세요 |700| `rewindFiles(userMessageId, options?)` | 파일을 지정된 사용자 메시지의 상태로 복원합니다. 변경 사항을 미리 보려면 `{ dryRun: true }`를 전달합니다. `enableFileCheckpointing: true`가 필요합니다. [파일 체크포인팅](/docs/ko/agent-sdk/file-checkpointing)을 참조하세요 |
701| `setPermissionMode()` | 권한 모드를 변경합니다(스트리밍 입력 모드에서만 사용 가능) |701| `setPermissionMode()` | 권한 모드를 변경합니다(스트리밍 입력 모드에서만 사용 가능) |
702| `setModel()` | 모델을 변경합니다(스트리밍 입력 모드에서만 사용 가능). `undefined` 또는 문자열 `"default"`를 전달하면 [Claude Code의 기본 모델](/docs/ko/model-config)로 재설정됩니다 |702| `setModel()` | 모델을 변경합니다(스트리밍 입력 모드에서만 사용 가능). `undefined` 또는 문자열 `"default"`를 전달하면 [Claude Code의 기본 모델](/docs/ko/model-config)로 재설정됩니다 |
703| `setMaxThinkingTokens()` | *더 이상 사용되지 않음:* 대신 `thinking` 옵션을 사용하세요. 최대 사고 토큰을 변경합니다. `null`을 전달하면 사고를 세션 기본값으로 재설정합니다. 중간 세션 재정의가 지워지고, 사고가 비활성화된 세션의 경우 사고는 꺼진 상태로 유지됩니다 |703| `setMaxThinkingTokens()` | *더 이상 사용되지 않음:* 대신 `thinking` 옵션을 사용하세요. 최대 사고 토큰을 변경합니다. `null`을 전달하면 사고를 세션 기본값으로 재설정합니다. 중간 세션 재정의가 지워지고, 사고가 비활성화된 세션의 경우 사고가 비활성화된 상태로 유지됩니다 |
704| `applyFlagSettings(settings)` | 런타임에 설정을 세션의 플래그 설정 계층으로 병합합니다(스트리밍 입력 모드에서만 사용 가능). [`applyFlagSettings()`](#applyflagsettings)를 참조하세요 |704| `applyFlagSettings(settings)` | 런타임에 세션의 플래그 설정 계층에 설정을 병합합니다(스트리밍 입력 모드에서만 사용 가능). [`applyFlagSettings()`](#applyflagsettings)를 참조하세요 |
705| `updateSettings(source, settings)` | 프로젝트의 로컬 설정 파일 또는 사용자 설정 파일에 허용 목록 키를 작성하여 값이 나중 세션에 지속되도록 합니다. [`updateSettings()`](#updatesettings)를 참조하세요. TypeScript SDK v0.3.257 이상이 필요하며, Claude Code v2.1.257을 번들합니다 |705| `updateSettings(source, settings)` | 프로젝트의 로컬 설정 파일 또는 사용자 설정 파일에 허용 목록에 있는 하나의 키를 작성하여 값이 나중 세션에 지속되도록 합니다. [`updateSettings()`](#updatesettings)를 참조하세요. TypeScript SDK v0.3.257 이상이 필요하며, Claude Code v2.1.257을 번들합니다 |
706| `initializationResult()` | 지원되는 명령어, 모델, 계정 정보 및 출력 스타일 구성을 포함한 전체 초기화 결과를 반환합니다 |706| `initializationResult()` | 지원되는 명령어, 모델, 계정 정보 및 출력 스타일 구성을 포함한 전체 초기화 결과를 반환합니다 |
707| `reinitialize()` | 실행 중인 CLI에 `initialize` 제어 요청을 다시 보내고 캐시된 첫 연결 결과 대신 새로운 결과를 반환합니다. 연결 해제 후 세션에 다시 연결하는 것과 같은 전송 간격 후 사용하여 대기 중인 권한 요청이 `canUseTool` 콜백에 다시 도달하도록 합니다. 응답이 손실된 요청이 다시 전달되므로 요청 ID당 콜백을 멱등성으로 만드세요. Claude Code v2.1.195 이상이 필요합니다 |707| `reinitialize()` | 실행 중인 CLI에 `initialize` 제어 요청을 다시 보내고 캐시된 첫 연결 결과 대신 새로운 결과를 반환합니다. 재연결 후 세션에 다시 연결하는 것과 같은 전송 간격 후에 사용하여 대기 중인 권한 요청이 `canUseTool` 콜백에 다시 도달하도록 합니다. 응답이 손실된 요청은 다시 발송되므로 요청 ID별로 콜백을 멱등성으로 만듭니다. Claude Code v2.1.195 이상이 필요합니다 |
708| `supportedCommands()` | 사용 가능한 명령어를 반환합니다. 에이전트 SDK v0.3.216부터 목록은 중간 세션 명령어 변경을 반영합니다. [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage)를 참조하세요 |708| `supportedCommands()` | 사용 가능한 명령어를 반환합니다. Agent SDK v0.3.216부터 목록은 중간 세션 명령어 변경을 반영합니다. [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage)를 참조하세요 |
709| `supportedModels()` | 표시 정보가 있는 사용 가능한 모델을 반환합니다 |709| `supportedModels()` | 표시 정보가 있는 사용 가능한 모델을 반환합니다 |
710| `supportedAgents()` | [`AgentInfo`](#agentinfo)`[]`로 사용 가능한 서브에이전트를 반환합니다 |710| `supportedAgents()` | [`AgentInfo`](#agentinfo)`[]`로 사용 가능한 서브에이전트를 반환합니다 |
711| `mcpServerStatus()` | 연결된 MCP 서버의 상태를 [`McpServerStatus`](#mcpserverstatus)`[]`로 반환합니다 |711| `mcpServerStatus()` | [`McpServerStatus`](#mcpserverstatus)`[]`로 연결된 MCP 서버의 상태를 반환합니다 |
712| `getContextUsage(opts?)` | 세션의 컨텍스트 창 사용량을 카테고리, 스킬 및 도구별로 분류하는 [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse)를 반환합니다. 기본 `detail`을 사용하면 대화형 세션에서 `/context`가 표시하는 것과 동일한 데이터이므로 토큰 수와 함께 Claude Code가 `/context` 사용량 그리드를 그리는 데 사용하는 `color` 및 `gridRows` 같은 표시 필드를 전달합니다. [`detail` 옵션](#sdkcontrolgetcontextusageresponse)은 에이전트 SDK v0.3.257 이상이 필요합니다 |712| `getContextUsage(opts?)` | 세션의 컨텍스트 창 사용량을 카테고리, 스킬 및 도구별로 분류하는 [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse)를 반환합니다. 기본 `detail`을 사용하면 대화형 세션에서 `/context`가 표시하는 것과 동일한 데이터이며, 메시지 스트림에 나타나지 않는 토큰 계산 API 요청으로 계산됩니다. [이러한 요청이 처리되는 방식](#sdkcontrolgetcontextusageresponse)을 참조하세요. [`detail` 옵션](#sdkcontrolgetcontextusageresponse)은 Agent SDK v0.3.257 이상이 필요합니다 |
713| `readFile(path, options?)` | 세션의 파일 시스템에서 파일을 읽습니다. Claude Code는 경로를 `cwd`에 대해 해결합니다. [readFile()이 읽을 수 있는 것](#what-readfile-can-read)은 제공하는 파일을 나열합니다. 읽기 상한을 변경하려면 `{ maxBytes }`를 전달하세요(기본값 1 MB, 상한 10 MB). 이미지 같은 바이너리 파일의 경우 `{ encoding: 'base64' }`를 전달하세요. 권한 거부, 누락된 파일 또는 전송 오류 시 [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse) 또는 `null`로 해결됩니다. TypeScript SDK v0.2.121 이상이 필요합니다 |713| `readFile(path, options?)` | 세션의 파일 시스템에서 파일을 읽습니다. Claude Code는 `cwd`에 대해 경로를 해결합니다. [readFile()이 읽을 수 있는 것](#what-readfile-can-read)은 제공하는 파일을 나열합니다. `{ maxBytes }`를 전달하여 읽기 상한을 변경하고(기본값 1 MB, 상한 10 MB) `{ encoding: 'base64' }`를 이미지 같은 바이너리 파일에 전달합니다. [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse)로 해결하거나, 권한 거부, 누락된 파일 또는 전송 오류 시 `null`로 해결합니다. TypeScript SDK v0.2.121 이상이 필요합니다 |
714| `reloadPlugins(options?)` | 디스크에서 플러그인을 다시 로드하여 중간 세션에서 설치하거나 편집한 플러그인이 실행 중인 세션에 도달하도록 합니다. 세션의 명령어, 서브에이전트, 플러그인 및 MCP 서버 상태를 나열하는 [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse)로 해결됩니다. 에이전트 SDK v0.2.85 이상이 필요합니다. [`holdOnCacheImpact` 옵션](#sdkcontrolreloadpluginsresponse)은 에이전트 SDK v0.3.268 이상이 필요합니다 |714| `reloadPlugins(options?)` | 디스크에서 플러그인을 다시 로드하여 중간 세션에 설치하거나 편집한 플러그인이 실행 중인 세션에 도달하도록 합니다. 세션의 명령어, 서브에이전트, 플러그인 및 MCP 서버 상태를 나열하는 [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse)로 해결합니다. Agent SDK v0.2.85 이상이 필요합니다. [`holdOnCacheImpact` 옵션](#sdkcontrolreloadpluginsresponse)은 Agent SDK v0.3.268 이상이 필요합니다 |
715| `reloadSkills()` | 디스크에서 스킬을 다시 로드하여 중간 세션에서 추가하거나 편집한 스킬을 실행 중인 세션에서 사용할 수 있도록 합니다. 다시 로드 후 사용 가능한 스킬을 나열하는 [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse)로 해결됩니다. 에이전트 SDK v0.3.163 이상이 필요합니다 |715| `reloadSkills()` | 디스크에서 스킬을 다시 로드하여 중간 세션에 추가하거나 편집한 스킬이 실행 중인 세션에서 사용 가능하게 됩니다. 다시 로드 후 사용 가능한 스킬을 나열하는 [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse)로 해결합니다. Agent SDK v0.3.163 이상이 필요합니다 |
716| `reloadOutputStyles()` | [출력 스타일](/docs/ko/output-styles)을 디스크에서 다시 읽어 중간 세션에서 추가하거나 편집한 스타일 파일을 실행 중인 세션에서 사용할 수 있도록 합니다. 다시 로드 후 사용 가능한 스타일 이름을 나열하는 [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse)로 해결됩니다. 에이전트 SDK v0.3.261 이상이 필요합니다 |716| `reloadOutputStyles()` | 디스크에서 [출력 스타일](/docs/ko/output-styles)을 다시 읽어 중간 세션에 추가하거나 편집한 스타일 파일이 실행 중인 세션에서 사용 가능하게 됩니다. 다시 로드 후 사용 가능한 스타일 이름을 나열하는 [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse)로 해결합니다. Agent SDK v0.3.261 이상이 필요합니다 |
717| `accountInfo()` | 계정 정보를 반환합니다 |717| `accountInfo()` | 계정 정보를 반환합니다 |
718| `reconnectMcpServer(serverName)` | 이름으로 MCP 서버를 다시 연결합니다. 이름이 `.mcp.json` 또는 `~/.claude.json` 같은 설정 파일의 항목과도 일치하면 Claude Code는 설정 파일 항목이 아닌 [`mcpServers`](#options) 또는 `setMcpServers()`를 통해 구성한 서버를 다시 연결합니다. 해당 해결 순서는 Claude Code v2.1.257 이상이 필요합니다 |718| `reconnectMcpServer(serverName)` | MCP 서버를 이름으로 다시 연결합니다. 이름이 `.mcp.json` 또는 `~/.claude.json` 같은 설정 파일의 항목과도 일치하면 Claude Code는 [`mcpServers`](#options) 또는 `setMcpServers()`를 통해 구성한 서버를 다시 연결하며, 설정 파일 항목은 아닙니다. 해당 해결 순서는 Claude Code v2.1.257 이상이 필요합니다 |
719| `toggleMcpServer(serverName, enabled)` | `reconnectMcpServer()`와 동일한 이름 해결을 사용하여 이름으로 MCP 서버를 활성화 또는 비활성화합니다. 비활성화하면 서버를 연결 해제합니다 |719| `toggleMcpServer(serverName, enabled)` | `reconnectMcpServer()`와 동일한 이름 해결을 사용하여 MCP 서버를 이름으로 활성화 또는 비활성화합니다. stdio, SSE 또는 HTTP 서버를 비활성화하면 연결을 끊고 도구를 제거합니다. 중간 세션에서 `setMcpServers()`로 추가한 서버의 경우 도구 제거에 Claude Code v2.1.285 이상이 필요합니다 |
720| `setMcpServers(servers)` | 이 세션의 MCP 서버 집합을 동적으로 대체합니다. 추가되고 제거된 서버 및 오류를 명시하는 [`McpSetServersResult`](#mcpsetserversresult)로 해결됩니다 |720| `setMcpServers(servers)` | 이 세션의 MCP 서버 집합을 동적으로 대체합니다. 추가되고 제거된 서버를 명시하고 오류가 있는 [`McpSetServersResult`](#mcpsetserversresult)로 해결합니다 |
721| `readMcpResource(serverName, uri)` | *알파.* 연결된 MCP 서버에서 하나의 MCP Apps `ui://` 리소스를 읽어 애플리케이션이 도구의 위젯을 렌더링할 수 있도록 합니다. [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse)로 해결됩니다. TypeScript 에이전트 SDK v0.3.280 이상이 필요합니다 |721| `readMcpResource(serverName, uri)` | *알파.* 연결된 MCP 서버에서 하나의 MCP Apps `ui://` 리소스를 읽어 애플리케이션이 도구의 위젯을 렌더링할 수 있도록 합니다. [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse)로 해결합니다. TypeScript Agent SDK v0.3.280 이상이 필요합니다 |
722| `streamInput(stream)` | 다중 턴 대화를 위해 쿼리에 입력 메시지를 스트리밍합니다 |722| `streamInput(stream)` | 다중 턴 대화를 위해 쿼리에 입력 메시지를 스트리밍합니다 |
723| `stopTask(taskId)` | ID로 실행 중인 백그라운드 작업을 중지합니다 |723| `stopTask(taskId)` | ID별로 실행 중인 백그라운드 작업을 중지합니다 |
724| `close()` | 쿼리를 닫고 기본 프로세스를 종료합니다. 쿼리를 강제로 종료하고 모든 리소스를 정리합니다 |724| `close()` | 쿼리를 닫고 기본 프로세스를 종료합니다. 쿼리를 강제로 종료하고 모든 리소스를 정리합니다 |
725 725
726<h4 id="applyflagsettings">726<h4 id="applyflagsettings">
727 `applyFlagSettings()`727 `applyFlagSettings()`
728</h4>728</h4>
729 729
730실행 중인 세션에서 [설정](/docs/ko/settings)을 변경하고 쿼리를 다시 시작하지 않습니다. 신뢰할 수 없는 입력을 읽은 후 `permissions`를 강화하는 것처럼 전용 설정자가 없는 설정이 중간 세션에서 변경되어야 할 때 사용합니다. `setModel()` 및 `setPermissionMode()`는 이 두 키에 대한 전용 설정자입니다. `applyFlagSettings()`는 설정 키의 모든 부분 집합을 허용하는 일반 형식이며, 여기에 `model`을 전달하는 것은 `setModel()`과 동일하게 동작합니다.730실행 중인 세션에서 [설정](/docs/ko/settings)을 변경하고 쿼리를 다시 시작하지 않습니다. 전용 설정자가 없는 설정이 중간 세션에서 변경되어야 할 때(예: 에이전트가 신뢰할 수 없는 입력을 읽은 후 `permissions`를 강화할 때) 사용합니다. `setModel()` 및 `setPermissionMode()`는 이 두 키에 대한 전용 설정자입니다. `applyFlagSettings()`는 설정 키의 모든 부분 집합을 허용하는 일반 형식이며, 여기에서 `model`을 전달하는 것은 `setModel()`과 동일하게 동작합니다.
731 731
732일부 키만 중간 세션에서 적용됩니다:732일부 키만 중간 세션에서 적용됩니다:
733 733
734* **다음 턴에 적용됨**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. `agent`를 전환하면 해당 에이전트의 모델 재정의 및 훅도 다음 턴에 적용됩니다. 시스템 프롬프트는 다음 턴에 적용되거나, [기록된 시스템 프롬프트를 재사용](/docs/ko/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session)하는 세션에서 세션이 압축되면 적용됩니다.734* **다음 턴에 적용됨**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. `agent`를 전환하면 해당 에이전트의 모델 재정의 및 훅도 다음 턴에 적용됩니다. 시스템 프롬프트는 다음 턴에 적용되거나, [기록된 시스템 프롬프트를 재사용](/docs/ko/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session)하는 세션에서는 세션이 압축된 후에 적용됩니다.
735* **현재 턴 중에 적용됨**: `model`. Claude가 턴에서 작업 중일 때 `model`을 전환하면 Claude가 이미 생성 중인 응답은 이전 모델에서 완료되고 Claude Code가 모델에 수행하는 다음 호출부터 시작하는 턴의 나머지는 새 모델을 사용합니다. 서브에이전트는 자신의 모델을 유지합니다. v2.1.212 이전에는 중간 턴 전환이 다음 턴을 기다렸습니다.735* **현재 턴 중에 적용됨**: `model`. Claude가 턴에서 작업 중일 때 `model`을 전환하면, Claude가 이미 생성 중인 응답은 이전 모델에서 완료되고, 나머지 턴(Claude Code가 모델에 대해 수행하는 다음 호출부터 시작)은 새 모델을 사용합니다. 서브에이전트는 자신의 모델을 유지합니다. v2.1.212 이전에는 중간 턴 전환이 다음 턴을 기다렸습니다.
736* **중간 세션에 영향 없음**: 시스템 프롬프트 옵션입니다. 이는 시작 시 한 번 해결되므로 실행 중인 세션은 호출이 성공하더라도 원본 값을 유지합니다. 변경하려면 새 세션을 시작하세요.736* **중간 세션에서 효과 없음**: 시스템 프롬프트 옵션입니다. 이들은 시작 시 한 번 해결되므로 실행 중인 세션은 호출이 성공하더라도 원래 값을 유지합니다. 변경하려면 새 세션을 시작합니다.
737 737
738`effortLevel`은 [노력 수준](/docs/ko/model-config#adjust-effort-level) 이름을 허용합니다. 또한 `"ultracode"`를 허용하며, 이는 [ultracode](/docs/ko/workflows#let-claude-decide-with-ultracode)가 켜진 `xhigh` 노력을 요청합니다. `applyFlagSettings()`는 해당 값 없이 `effortLevel`을 선언하므로 TypeScript에서 동등한 `{ ultracode: true, effortLevel: "xhigh" }`를 전달하거나 [`ultracode`](/docs/ko/settings-reference#ultracode) 키 단독으로 세션의 현재 노력 수준에서 ultracode를 켜세요. `ultracode` 값은 Claude Code v2.1.203 이상이 필요하며 설정 파일의 `effortLevel` 키가 아닌 `applyFlagSettings()`에서만 허용됩니다. v2.1.284 이전에는 `ultracode` 키 단독도 수준을 `xhigh`로 설정했습니다.738`effortLevel`은 [노력 수준](/docs/ko/model-config#adjust-effort-level) 이름을 허용합니다. 또한 `"ultracode"`를 허용하며, 이는 [ultracode](/docs/ko/workflows#let-claude-decide-with-ultracode)를 사용하여 `xhigh` 노력을 요청합니다. `applyFlagSettings()`는 `effortLevel`을 해당 값 없이 선언하므로 TypeScript에서 동일한 결과를 위해 `{ ultracode: true, effortLevel: "xhigh" }`를 전달하거나, 세션의 현재 노력 수준에서 ultracode를 켜려면 [`ultracode`](/docs/ko/settings-reference#ultracode) 키만 전달합니다. `ultracode` 값은 Claude Code v2.1.203 이상이 필요하며 설정 파일의 `effortLevel` 키가 아닌 `applyFlagSettings()`에서만 허용됩니다. v2.1.284 이전에는 `ultracode` 키만으로도 수준을 `xhigh`로 설정했습니다.
739 739
740값은 플래그 설정 계층에 작성되며, 이는 시작 시 `query()`의 인라인 `settings` 옵션이 채우는 계층과 동일합니다. 이는 [온페이지 우선 순위 섹션](#settings-precedence)이 프로그래밍 옵션이라고 부르는 계층과 동일합니다.740값은 플래그 설정 계층에 작성되며, `query()`의 인라인 `settings` 옵션이 시작 시 설정한 것 위에 병합됩니다. 이는 [페이지 우선순위 섹션](#settings-precedence)이 프로그래밍 옵션이라고 부르는 것과 동일한 계층입니다.
741 741
742연속 호출은 최상위 키를 얕게 병합합니다. `{ permissions: {...} }` 포함 두 번째 호출은 이전 호출의 전체 `permissions` 객체를 깊게 병합하는 대신 대체합니다.742연속 호출은 최상위 키를 얕게 병합합니다. `{ permissions: {...} }`를 사용한 두 번째 호출은 이전 호출의 전체 `permissions` 객체를 깊게 병합하는 대신 대체합니다.
743 743
744플래그 계층에서 키를 지우려면 해당 키에 `null`을 전달하세요. 그러면 대부분의 키가 먼저 시작 시 `query()`의 `settings` 옵션이 설정한 값으로 폴백한 다음 낮은 우선 순위 소스로 폴백합니다. 지워진 `model`은 설정 파일이 `model`을 설정하더라도 [Claude Code의 기본 모델](/docs/ko/model-config)로 재설정됩니다. `undefined`를 전달하면 JSON 직렬화가 이를 삭제하므로 효과가 없습니다.744`applyFlagSettings()`로 설정한 키를 지우려면 해당 키에 `null`을 전달합니다. 대부분의 키는 먼저 `query()`의 `settings` 옵션이 시작 시 설정한 값으로 폴백한 다음 낮은 우선순위 소스로 폴백합니다. 지워진 `model`은 설정 파일이 `model`을 설정하더라도 [Claude Code의 기본 모델](/docs/ko/model-config)로 재설정됩니다. `undefined`를 전달하면 JSON 직렬화가 이를 삭제하므로 효과가 없습니다.
745 745
746`model` 외에 세 가지 키는 폴백하는 대신 세션 상태를 재설정합니다:746`model` 외에 세 가지 키는 폴백하는 대신 세션 상태를 재설정합니다:
747 747
748* `effortLevel: null`은 설정 파일의 `effortLevel`이 아닌 모델의 기본 노력 수준으로 세션을 반환합니다. `query()`의 `effort` 옵션도 복원하지 않습니다.748* `effortLevel: null`은 `query()`의 `effort` 옵션이나 설정 파일의 `effortLevel`이 아닌 모델의 기본 노력 수준으로 세션을 반환합니다.
749* `agent: null`은 다음 턴부터 메인 스레드를 에이전트 없이 실행합니다. 설정 파일의 `agent`도 복원하지 않습니다. 지워진 에이전트가 자신의 모델을 적용했으면 세션은 시작 시 해결한 모델로 돌아갑니다.749* `agent: null`은 다음 턴부터 메인 스레드를 에이전트 없이 실행하며, `query()`의 `agent` 옵션이나 설정 파일의 `agent`를 복원하는 대신입니다. 지워진 에이전트가 자신의 모델을 적용했다면 세션은 시작 시 해결한 모델로 돌아갑니다.
750* `ultracode: null`은 `false`처럼 ultracode를 끕니다. 설정 파일의 `ultracode` 값을 복원하지 않습니다. 세션은 현재 노력 수준을 유지하므로 같은 호출에서 `effortLevel`을 전달하여 변경하세요.750* `ultracode: null`은 `false`처럼 ultracode를 끕니다. 설정 파일의 `ultracode` 값을 복원하는 대신입니다. 세션은 현재 노력 수준을 유지하므로 같은 호출에서 `effortLevel`을 전달하여 변경합니다.
751 751
752스트리밍 입력 모드에서만 사용 가능하며, 이는 `setModel()` 및 `setPermissionMode()`와 동일한 제약입니다.752스트리밍 입력 모드에서만 사용 가능하며, `setModel()` 및 `setPermissionMode()`와 동일한 제약입니다.
753 753
754아래 예제는 중간 세션에서 활성 모델을 전환한 다음 재정의를 지워 모델이 [Claude Code의 기본 모델](/docs/ko/model-config)로 재설정되도록 합니다.754아래 예제는 중간 세션에서 활성 모델을 전환한 다음 재정의를 지워 모델이 [Claude Code의 기본 모델](/docs/ko/model-config)로 재설정되도록 합니다.
755 755
758 758
759const q = query({ prompt: messageStream });759const q = query({ prompt: messageStream });
760 760
761// 세션의 나머지 부분에 대해 모델을 재정의합니다761// Override the model for the rest of the session
762await q.applyFlagSettings({ model: "claude-opus-4-6" });762await q.applyFlagSettings({ model: "claude-opus-4-6" });
763 763
764// 나중에: 재정의를 지웁니다. 모델이 Claude Code의 기본값으로 재설정됩니다764// Later: clear the override; the model resets to Claude Code's default
765await q.applyFlagSettings({ model: null });765await q.applyFlagSettings({ model: null });
766```766```
767 767
773 `updateSettings()`773 `updateSettings()`
774</h4>774</h4>
775 775
776설정을 디스크의 설정 파일에 작성하여 값이 나중 세션에 지속되도록 합니다. 각 소스는 하나의 키를 허용하며, 문자열 값을 가집니다:776설정 파일의 허용 목록에 있는 하나의 키를 디스크에 작성하여 값이 해당 소스를 로드하는 나중 세션에 지속되도록 합니다. 각 소스는 하나의 키를 문자열 값으로 허용합니다:
777 777
778* **`"localSettings"`**: `outputStyle`을 허용하고 프로젝트의 로컬 설정 파일 `.claude/settings.local.json`에 병합합니다. 새 스타일은 세션의 다음 요청에서 적용됩니다.778* **`"localSettings"`**: `outputStyle`을 허용하고 프로젝트의 로컬 설정 파일 `.claude/settings.local.json`에 병합합니다. 새 스타일은 세션의 다음 요청에서 적용됩니다.
779* **`"userSettings"`**: `effortLevel`을 허용하고 세션의 현재 모델에 대한 기본 [노력 수준](/docs/ko/model-config#adjust-effort-level)으로 사용자 설정 파일의 [`modelSettings`](/docs/ko/settings-reference#modelsettings) 아래에 저장합니다. `max`를 전달하면 아무것도 작성되지 않습니다. `max`는 세션 전용이기 때문입니다. 실행 중인 세션은 어느 쪽이든 현재 노력 수준을 유지하므로 변경하려면 [`applyFlagSettings()`](#applyflagsettings)를 호출하세요. 이 소스는 TypeScript SDK v0.3.277 이상이 필요하며, Claude Code v2.1.277을 번들합니다.779* **`"userSettings"`**: `effortLevel`을 허용하고 사용자 설정 파일의 [`modelSettings`](/docs/ko/settings-reference#modelsettings) 아래 세션의 현재 모델에 대한 기본 [노력 수준](/docs/ko/model-config#adjust-effort-level)으로 저장합니다. `max`를 전달하면 아무것도 작성하지 않습니다. `max`는 세션 전용이기 때문입니다. 실행 중인 세션은 어느 쪽이든 현재 노력 수준을 유지하므로 변경하려면 [`applyFlagSettings()`](#applyflagsettings)를 호출합니다. 이 소스는 TypeScript SDK v0.3.277 이상이 필요하며, Claude Code v2.1.277을 번들합니다.
780 780
781호출은 요청이 다른 키를 전달할 때, 세션이 원격 전송을 통해 실행될 때, 세션의 [`settingSources`](#options)가 명시한 소스를 제외할 때 거부됩니다. 키 삭제는 지원되지 않습니다.781호출은 다른 키를 전달할 때, 세션이 원격 전송을 통해 실행될 때, 세션의 [`settingSources`](#options)가 명시한 소스를 제외할 때 거부합니다. 키 삭제는 지원되지 않습니다.
782 782
783<h3 id="warmquery">783<h3 id="warmquery">
784 `WarmQuery`784 `WarmQuery`
785</h3>785</h3>
786 786
787[`startup()`](#startup)에서 반환된 핸들입니다. 서브프로세스가 이미 생성되고 초기화되었으므로 이 핸들에서 `query()`를 호출하면 시작 지연 없이 준비된 프로세스에 프롬프트를 직접 작성합니다.787[`startup()`](#startup)에서 반환하는 핸들입니다. 서브프로세스가 이미 생성되고 초기화되었으므로 이 핸들에서 `query()`를 호출하면 시작 지연 없이 준비된 프로세스에 프롬프트를 직접 작성합니다.
788 788
789```typescript theme={null}789```typescript theme={null}
790interface WarmQuery extends AsyncDisposable {790interface WarmQuery extends AsyncDisposable {
800| 메서드 | 설명 |800| 메서드 | 설명 |
801| :- | :- |801| :- | :- |
802| `query(prompt)` | 사전 준비된 서브프로세스에 프롬프트를 보내고 [`Query`](#query-object)를 반환합니다. `WarmQuery`당 한 번만 호출할 수 있습니다 |802| `query(prompt)` | 사전 준비된 서브프로세스에 프롬프트를 보내고 [`Query`](#query-object)를 반환합니다. `WarmQuery`당 한 번만 호출할 수 있습니다 |
803| `close()` | 프롬프트를 보내지 않고 서브프로세스를 닫습니다. 더 이상 필요하지 않은 준비된 쿼리를 버릴 때 사용합니다 |803| `close()` | 프롬프트를 보내지 않고 서브프로세스를 닫습니다. 더 이상 필요하지 않은 준비된 쿼리를 버리는 데 사용합니다 |
804 804
805`WarmQuery`는 `AsyncDisposable`을 구현하므로 자동 정리를 위해 `await using`과 함께 사용할 수 있습니다.805`WarmQuery`는 `AsyncDisposable`을 구현하므로 자동 정리를 위해 `await using`과 함께 사용할 수 있습니다.
806 806
808 `SpareProcess`808 `SpareProcess`
809</h3>809</h3>
810 810
811*알파.* [`prewarm()`](#prewarm)에서 반환된 핸들입니다. 시작된 Claude Code 프로세스로, 아직 세션에 바인딩되지 않았으며 한 번 청구할 수 있습니다. TypeScript 에이전트 SDK v0.3.282 이상이 필요합니다.811*알파.* [`prewarm()`](#prewarm)에서 반환하는 핸들: 아직 세션에 바인딩되지 않은 시작된 Claude Code 프로세스로, 한 번 청구할 수 있습니다. TypeScript Agent SDK v0.3.282 이상이 필요합니다.
812 812
813```typescript theme={null}813```typescript theme={null}
814interface SpareProcess extends AsyncDisposable {814interface SpareProcess extends AsyncDisposable {
828 828
829| 멤버 | 설명 |829| 멤버 | 설명 |
830| :- | :- |830| :- | :- |
831| `claim({ prompt, options })` | 스페어를 `options.cwd`의 세션에 바인딩하고 첫 번째 메시지를 보냅니다. [`Query`](#query-object)를 동기적으로 반환합니다. `query()`처럼 한 번만 호출할 수 있습니다 |831| `claim({ prompt, options })` | 스페어를 `options.cwd`의 세션에 바인딩하고 첫 번째 메시지를 보냅니다. `query()`처럼 동기적으로 [`Query`](#query-object)를 반환합니다. `SpareProcess`당 한 번만 호출할 수 있습니다 |
832| `claimed` | Claude Code가 청구를 수락하면 세션의 작업 디렉토리 및 ID로 해결됩니다. Claude Code가 청구를 거부할 때, 프로세스가 종료되거나 먼저 닫혔을 때, 그리고 `option_not_applied`로 시작하는 메시지로 세션이 요청한 `model` 또는 `maxThinkingTokens` 없이 실행 중일 때 거부됩니다 |832| `claimed` | Claude Code가 청구를 수락하면 세션의 작업 디렉토리 및 ID로 해결됩니다. Claude Code가 청구를 거부할 때, 프로세스가 종료되거나 먼저 닫혔을 때, 그리고 `option_not_applied`로 시작하는 메시지와 함께 세션이 요청한 `model` 또는 `maxThinkingTokens` 없이 실행 중일 때 거부합니다 |
833| `exited` | 프로세스가 종료되면 정착합니다. 청구 전에 종료되는 스페어를 교체하세요 |833| `exited` | 프로세스가 종료되면 청구 여부와 관계없이 정착합니다. 청구 전에 종료되는 스페어를 교체합니다 |
834| `close()` | 프로세스를 종료합니다. 청구 전에 스페어를 버리고 `claimed`를 거부합니다 |834| `close()` | 프로세스를 종료합니다. 청구 전에 스페어를 버리고 `claimed`를 거부합니다 |
835 835
836`options.cwd`는 필수입니다. 청구는 또한 `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, `settings`의 플래그 설정 오버레이, `appendSystemPrompt`, `title`, `agents` 및 `env`의 세션별 토큰을 설정할 수 있습니다.836`options.cwd`는 필수입니다. 청구는 또한 `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, `settings`의 플래그 설정 오버레이, `appendSystemPrompt`, `title`, `agents` 및 `env`의 세션별 토큰을 설정할 수 있습니다.
837 837
838Claude Code는 청구를 거부할 수 있습니다. 예를 들어 존재하지 않는 폴더 또는 프로젝트 설정이 `env`, `agent` 또는 `model`을 설정하는 폴더의 경우입니다. `claimed`가 `option_not_applied`로 시작하는 메시지로 거부되면 세션이 요청한 `model` 또는 `maxThinkingTokens` 없이 실행 중입니다. 다른 거부 후 프롬프트가 실행되지 않았으므로 대신 `query()`로 세션을 시작하세요.838Claude Code는 청구를 거부할 수 있습니다. 예를 들어 존재하지 않는 폴더나 프로젝트 설정이 `env`, `agent` 또는 `model`을 설정하는 폴더의 경우입니다. `claimed`가 `option_not_applied`로 시작하는 메시지와 함께 거부할 때, 세션은 요청한 `model` 또는 `maxThinkingTokens` 없이 실행 중입니다. 다른 거부 후 프롬프트가 실행되지 않았으므로 대신 `query()`로 세션을 시작합니다.
839 839
840<h3 id="sdkcontrolinitializeresponse">840<h3 id="sdkcontrolinitializeresponse">
841 `SDKControlInitializeResponse`841 `SDKControlInitializeResponse`
857};857};
858```858```
859 859
860`hooks_applied`는 Claude Code가 `initialize` 요청이 전달한 `hooks`를 등록했는지 보고합니다. SDK는 세션이 시작될 때 한 번 해당 요청을 보내고 각 [`reinitialize()`](#query-object) 호출에서 다시 보냅니다. 필드는 에이전트 SDK v0.3.238 이상이 필요합니다.860`hooks_applied`는 Claude Code가 `initialize` 요청이 전달한 `hooks`를 등록했는지 보고합니다. SDK는 세션이 시작될 때 해당 요청을 한 번 보내고 각 [`reinitialize()`](#query-object) 호출에서 다시 보냅니다. 필드는 Agent SDK v0.3.238 이상이 필요합니다.
861 861
862요청이 훅을 전달하지 않으면 Claude Code는 필드를 생략합니다. 요청이 훅을 전달하면 값은 요청이 세션의 첫 번째 초기화인지 여부와 반복된 요청의 경우 세션에 도달한 방식에 따라 달라집니다:862요청이 훅을 전달하지 않으면 Claude Code는 필드를 생략합니다. 요청이 훅을 전달할 때, 값은 요청이 세션의 첫 번째 초기화인지, 반복된 요청의 경우 세션에 도달한 방식에 따라 달라집니다:
863 863
864* `true`: Claude Code가 훅을 등록했습니다. 세션의 첫 번째 초기화는 이 값을 반환합니다. CLI의 stdin을 통해 전송된 반복 초기화도 `true`를 반환합니다. 이 경우 새 요청의 훅이 이전에 등록된 훅을 대체합니다.864* `true`: Claude Code가 훅을 등록했습니다. 세션의 첫 번째 초기화는 이 값을 반환합니다. CLI의 stdin을 통해 전송된 반복 초기화도 `true`를 반환합니다. 이 경우 새 요청의 훅이 이전에 등록된 훅을 대체합니다.
865* `false`: Claude Code가 훅을 무시했습니다. 원격 세션으로 전송된 반복 초기화는 이 값을 반환하므로 세션에 참여하는 두 번째 클라이언트는 첫 번째 클라이언트가 등록한 훅을 대체할 수 없습니다.865* `false`: Claude Code가 훅을 무시했습니다. 원격 세션으로 전송된 반복 초기화는 이 값을 반환하므로 세션에 참여하는 두 번째 클라이언트는 첫 번째 클라이언트가 등록한 훅을 대체할 수 없습니다.
866 866
867에이전트 SDK v0.3.238 이전에는 응답이 필드를 전달하지 않았고 Claude Code는 모든 반복 초기화에서 `hooks`를 무시했습니다.867Agent SDK v0.3.238 이전에는 응답이 필드를 전달하지 않았고, Claude Code는 모든 반복 초기화에서 `hooks`를 무시했습니다.
868 868
869응답은 항상 `fast_mode_state`를 보고하고, [빠른 모드](/docs/ko/fast-mode)를 차단하는 것이 있으면 `fast_mode_disabled_reason`은 이유 코드를 함께 전달하므로 가용성을 다시 파생시키는 대신 차단된 상태를 설명할 수 있습니다. 두 동작 모두 Claude Code v2.1.219 이상이 필요합니다. v2.1.219 이전에는 빠른 모드를 사용할 수 없을 때 응답이 `fast_mode_state`를 생략했고 절대 이유를 전달하지 않았습니다. 이유 코드 및 의미는 결과 메시지의 [`fast_mode_disabled_reason`](#sdkresultmessage)을 참조하세요.869응답은 항상 `fast_mode_state`를 보고하며, [빠른 모드](/docs/ko/fast-mode)를 차단하는 것이 있으면 `fast_mode_disabled_reason`은 이유 코드를 함께 전달하여 차단된 상태를 설명할 수 있습니다. 두 동작 모두 Claude Code v2.1.219 이상이 필요합니다. v2.1.219 이전에는 빠른 모드를 사용할 수 없을 때 응답이 `fast_mode_state`를 생략했고 이유를 전달하지 않았습니다. 이유 코드 및 의미는 결과 메시지의 [`fast_mode_disabled_reason`](#sdkresultmessage)을 참조하세요.
870 870
871성공적인 `initialize`에 대한 제어 응답 래퍼는 `pending_permission_requests` 배열도 전달합니다. 필드는 위의 `SDKControlInitializeResponse` 페이로드가 아닌 응답 래퍼 자체에 있습니다. 각 항목은 세션이 실행 중일 때 권한 요청에 대해 스트리밍하는 것과 동일한 `{ type: "control_request", request_id, request }` 형태의 완전한 `control_request` 메시지입니다.871성공한 `initialize`의 제어 응답 래퍼는 또한 `pending_permission_requests` 배열을 전달합니다. 필드는 위의 `SDKControlInitializeResponse` 페이로드가 아닌 응답 래퍼 자체에 있습니다. 각 항목은 세션이 실행 중일 때 권한 요청에 대해 스트리밍하는 것과 동일한 `{ type: "control_request", request_id, request }` 형태의 완전한 `control_request` 메시지입니다.
872 872
873배열은 이 Claude Code 프로세스가 발행했고 아직 해결하지 않은 권한 요청을 나열합니다. SDK는 배열을 읽고 각 항목을 [`canUseTool`](#canusetool) 콜백으로 전달하며, 이는 전송 간격 후 [`reinitialize()`](#query-object)가 트리거하는 동일한 재전달입니다. 연결이 끊어지기 전에 콜백이 이미 수신한 요청을 반복할 수 있으므로 반복된 요청 ID를 멱등성으로 처리하세요.873배열은 이 Claude Code 프로세스가 발행했고 아직 해결하지 않은 권한 요청을 나열합니다. SDK는 배열을 읽고 각 항목을 [`canUseTool`](#canusetool) 콜백으로 발송하며, 이는 전송 간격 후 [`reinitialize()`](#query-object)가 트리거하는 것과 동일한 재전달입니다. 반복된 요청 ID를 멱등성으로 처리합니다. 항목은 콜백이 연결이 끊어지기 전에 이미 받은 요청을 반복할 수 있기 때문입니다.
874 874
875배열은 성공적인 `initialize` 응답에서 항상 존재하며 이 프로세스에 미해결 권한 요청이 없으면 비어 있습니다. Claude Code v2.1.268 이상이 필요합니다. 이전 버전은 필드를 생략할 수 있으므로 와이어 프로토콜을 직접 구문 분석하면 누락된 필드를 이전 CLI로 취급하고 아무것도 대기 중이 아니라는 증거로 취급하지 마세요.875배열은 성공한 `initialize` 응답에서 항상 존재하며 이 프로세스에 미해결 권한 요청이 없으면 비어 있습니다. Claude Code v2.1.268 이상이 필요합니다. 이전 버전은 필드를 생략할 수 있으므로 와이어 프로토콜을 직접 파싱하면 누락된 필드를 더 오래된 CLI로 취급하고 아무것도 대기 중이 아니라는 증거로 취급하지 마세요.
876 876
877<h3 id="sdkcontrolinterruptresponse">877<h3 id="sdkcontrolinterruptresponse">
878 `SDKControlInterruptResponse`878 `SDKControlInterruptResponse`
879</h3>879</h3>
880 880
881중단 수신: [`interrupt()`](#query-object)가 [`SDKSystemMessage.capabilities`](#sdksystemmessage)에서 `interrupt_receipt_v1` 기능을 광고하는 CLI에서 해결되는 값입니다. Claude Code v2.1.205 이상이 필요합니다. 이전 CLI는 빈 성공 페이로드로 중단에 응답하므로 `interrupt()`는 `undefined`로 해결됩니다.881중단 수신: [`interrupt()`](#query-object)가 [`SDKSystemMessage.capabilities`](#sdksystemmessage)에서 `interrupt_receipt_v1` 기능을 광고하는 CLI에서 해결하는 값입니다. Claude Code v2.1.205 이상이 필요합니다. 이전 CLI는 빈 성공 페이로드로 중단에 응답하므로 `interrupt()`는 `undefined`로 해결됩니다.
882 882
883```typescript theme={null}883```typescript theme={null}
884type SDKControlInterruptResponse = {884type SDKControlInterruptResponse = {
887};887};
888```888```
889 889
890`still_queued`는 중단이 도착했을 때 대기 중이던 사용자 메시지의 UUID를 나열합니다. 대기열에 여전히 있는 메시지와 Claude Code가 이미 다음 턴을 위해 대기열에서 꺼낸 메시지입니다. 세션의 첫 턴이 시작된 후 Claude Code는 중단하지 않으면 나열된 메시지를 처리하고 여러 메시지를 한 턴으로 병합할 수 있습니다. 첫 턴이 시작되기 전에 중단하면 Claude Code는 시작되는 즉시 해당 턴을 중단하고 해당 턴의 나열된 메시지는 응답을 받지 않습니다.890`still_queued`는 중단이 도착했을 때 대기 중이던 사용자 메시지의 UUID를 나열합니다. 대기열에 여전히 있는 메시지와 Claude Code가 이미 다음 턴을 위해 대기열에서 꺼낸 메시지입니다. 세션의 첫 턴이 시작된 후 Claude Code는 중단하지 않는 한 나열된 메시지를 처리하고 여러 메시지를 하나의 턴으로 병합할 수 있습니다. 첫 턴이 시작되기 전에 중단하면 Claude Code는 시작되는 즉시 해당 턴을 중단하고 해당 턴의 나열된 메시지는 응답을 받지 않습니다.
891 891
892수신을 사용하여 다시 보낼 것을 결정하세요. 나열된 메시지를 취소하지 않으면 응답을 받는지 여부에 관계없이 대화에 들어가므로 다시 보내면 Claude에 두 번 전달됩니다.892수신을 사용하여 다시 보낼 것을 결정합니다. 나열된 메시지를 취소하지 않으면 응답을 받는지 여부와 관계없이 대화에 들어가므로 다시 보내면 Claude에 두 번 전달됩니다.
893 893
894이 주의 사항으로 목록을 해석하세요:894이러한 주의사항으로 목록을 해석합니다:
895 895
896* UUID가 있는 메시지만 나타납니다. 빈 배열은 다른 것도 실행되지 않는다는 의미가 아닙니다.896* UUID로 대기열에 들어간 메시지만 나타납니다. 빈 배열은 다른 것이 실행되지 않음을 의미하지 않습니다.
897* 메인 스레드 메시지만 나열됩니다. 서브에이전트로 주소 지정된 메시지는 범위를 벗어납니다.897* 메인 스레드 메시지만 나열됩니다. 서브에이전트로 주소 지정된 메시지는 범위를 벗어납니다.
898* 목록에는 클라이언트가 보낸 적 없는 UUID(예: [예약된 작업](/docs/ko/scheduled-tasks) 트리거)가 포함될 수 있습니다. 오류로 취급하는 대신 인식하지 못하는 UUID를 무시하세요.898* 목록에는 클라이언트가 보내지 않은 UUID(예: [예약된 작업](/docs/ko/scheduled-tasks) 트리거)가 포함될 수 있습니다. 오류로 취급하는 대신 인식하지 못하는 UUID를 무시합니다.
899 899
900제어 프로토콜을 `interrupt()` 대신 직접 구동하는 클라이언트는 `interrupt` 제어 요청에서 `cancel_queued: true`를 설정할 수 있습니다. Claude Code v2.1.219 이상은 [`SDKSystemMessage.capabilities`](#sdksystemmessage)에서 `interrupt_cancel_queued_v1` 기능으로 지원을 광고합니다. 이전 CLI는 필드를 무시하고 대기 중인 메시지를 평소대로 실행합니다. 이러한 중단은 `still_queued` 아래에 나열될 모든 메시지를 취소합니다. 수신은 `cancelled` 아래에 나열하고, `still_queued`는 비어 있으며, 아무것도 실행되지 않습니다.900CLI의 제어 프로토콜을 `interrupt()` 대신 직접 구동하는 클라이언트는 `interrupt` 제어 요청에서 `cancel_queued: true`를 설정할 수 있습니다. Claude Code v2.1.219 이상은 [`SDKSystemMessage.capabilities`](#sdksystemmessage)에서 `interrupt_cancel_queued_v1` 기능으로 지원을 광고합니다. 이전 CLI는 필드를 무시하고 대기 중인 메시지를 평소대로 실행합니다. 그러한 중단은 또한 `still_queued` 아래에 나열되었을 모든 메시지를 취소합니다. 대신 `cancelled` 아래에 나열되고, `still_queued`는 비어 있으며, 아무것도 실행되지 않습니다.
901 901
902`cancelled` 목록은 `still_queued`와 동일한 주의 사항을 전달합니다. `interrupt()` 메서드는 절대 `cancel_queued`를 보내지 않으므로 해결되는 수신은 `cancelled`를 전달하지 않습니다.902`cancelled` 목록은 `still_queued`와 동일한 주의사항을 전달합니다. `interrupt()` 메서드는 `cancel_queued`를 보내지 않으므로 해결하는 수신은 `cancelled`를 전달하지 않습니다.
903 903
904수신은 중단이 처리되는 순간의 스냅샷이며 깨끗한 중단에서 중단된 턴의 [`SDKResultMessage`](#sdkresultmessage) 전에 도착합니다. 해당 결과 후 수신을 읽으세요. 루프는 즉시 다음 대기 중인 턴을 시작하므로 결과 후 검사하는 대기열이 이미 변경되었습니다.904수신은 중단이 처리되는 순간의 스냅샷이며, 깨끗한 중단에서 중단된 턴의 [`SDKResultMessage`](#sdkresultmessage) 전에 도착합니다. 해당 결과 후 수신을 읽습니다. 루프는 즉시 다음 대기 중인 턴을 시작하므로 결과 후 검사하는 대기열이 이미 변경되었습니다.
905 905
906<h3 id="sdkcontrolgetcontextusageresponse">906<h3 id="sdkcontrolgetcontextusageresponse">
907 `SDKControlGetContextUsageResponse`907 `SDKControlGetContextUsageResponse`
908</h3>908</h3>
909 909
910[`getContextUsage()`](#query-object)의 반환 유형입니다. 기본 `detail`을 사용하면 이는 Claude Code가 대화형 세션에서 `/context` 명령어에 대해 렌더링하는 것과 동일한 페이로드이므로 토큰 수와 함께 Claude Code가 `/context` 사용량 그리드를 그리는 데 사용하는 `color` 및 `gridRows` 같은 표시 필드를 전달합니다.910[`getContextUsage()`](#query-object)의 반환 유형입니다. 기본 `detail`을 사용하면 이는 대화형 세션에서 `/context` 명령어가 렌더링하는 것과 동일한 페이로드이므로 토큰 계산과 함께 Claude Code가 `/context` 사용량 그리드를 그리는 데 사용하는 `color` 및 `gridRows` 같은 표시 필드를 전달합니다.
911 911
912메서드의 선택적 `detail` 인수는 Claude Code가 각 카테고리를 계산하는 방식을 선택합니다. 기본값 `'full'`을 사용하면 Claude Code는 토큰 계산 API 요청으로 각 카테고리를 계산합니다. 대신 `{ detail: 'summary' }`를 전달하여 마지막 응답의 사용량 및 로컬 추정에서 답변을 가져옵니다. 토큰 계산 요청이 나가지 않으며 카테고리별 숫자는 대략적입니다. `detail` 인수는 에이전트 SDK v0.3.257 이상이 필요합니다.912메서드의 선택적 `detail` 인수는 Claude Code가 각 카테고리를 계산하는 방식을 선택합니다. `detail` 인수는 Agent SDK v0.3.257 이상이 필요합니다.
913 913
914프롬프트 대신 `/context`를 메서드로 보내면 Claude Code는 결과를 전달하는 어시스턴트 메시지의 `context_usage` 필드에 [`SDKContextUsage`](#sdkcontextusage) 페이로드를 첨부합니다. 해당 필드는 에이전트 SDK v0.3.232 이상이 필요합니다.914* **`'full'`**: 기본값입니다. Claude Code는 [토큰 계산](https://platform.claude.com/docs/en/build-with-claude/token-counting) API 요청으로 각 카테고리를 계산합니다. 이러한 요청은 메시지 스트림에 나타나지 않으므로 스트림을 읽는 비용 추적이 이를 보지 못합니다. Anthropic API에서 토큰 계산은 청구되지 않습니다.
915* **`'summary'`**: 대신 마지막 응답의 사용량 및 로컬 추정에서 답변을 얻으려면 `{ detail: 'summary' }`를 전달합니다. 토큰 계산 요청이 나가지 않으며 카테고리별 숫자는 대략적입니다.
916
917메서드를 호출하는 대신 `/context`를 프롬프트로 보내면 Claude Code는 결과를 전달하는 어시스턴트 메시지의 `context_usage` 필드에 [`SDKContextUsage`](#sdkcontextusage) 페이로드를 첨부합니다. 해당 필드는 Agent SDK v0.3.232 이상이 필요합니다.
915 918
916```typescript theme={null}919```typescript theme={null}
917type SDKControlGetContextUsageResponse = {920type SDKControlGetContextUsageResponse = {
1008};1011};
1009```1012```
1010 1013
1011컬렉션 필드에서 토큰 귀속을 읽으세요:1014토큰 귀속을 수집 필드에서 읽습니다:
1012 1015
1013* `categories`는 카테고리별 합계를 보유합니다. 각 항목의 `kind`는 [`SDKContextUsageCategory`](#sdkcontextusagecategory)와 동일한 값으로 행을 분류합니다. 표시 `name`이 아닌 `kind`에서 행을 분류하세요. 필드는 에이전트 SDK v0.3.268 이상이 필요합니다.1016* `categories`는 카테고리별 합계를 보유합니다. 각 항목의 `kind`는 [`SDKContextUsageCategory`](#sdkcontextusagecategory)와 동일한 값으로 행을 분류합니다. 표시 `name` 대신 이를 기반으로 행을 분류합니다. 필드는 Agent SDK v0.3.268 이상이 필요합니다.
1014* `mcpTools` 및 `agents`는 개별 MCP 도구 및 서브에이전트에 토큰을 귀속합니다.1017* `mcpTools` 및 `agents`는 개별 MCP 도구 및 서브에이전트에 토큰을 귀속합니다.
1015* `memoryFiles`는 각 로드된 메모리 파일을 비용과 함께 나열합니다.1018* `memoryFiles`는 각 로드된 메모리 파일을 비용과 함께 나열합니다.
1016* `skills.skillFrontmatter`는 포함된 각 스킬에 스킬 목록의 토큰을 귀속합니다. 스킬별 수는 Claude Code가 실제로 보내는 각 스킬의 목록 항목을 측정하며, 스킬의 전체 프론트매터보다 짧을 수 있습니다. `skills.totalSkills`를 `skills.includedSkills`와 비교하여 발견된 모든 스킬이 목록에 포함되었는지 확인하세요.1019* `skills.skillFrontmatter`는 스킬 목록의 토큰을 포함된 각 스킬에 귀속합니다. 스킬별 계산은 각 스킬의 목록 항목을 Claude Code가 실제로 보내는 대로 측정하며, 스킬의 전체 프론트매터보다 짧을 수 있습니다. `skills.totalSkills`를 `skills.includedSkills`와 비교하여 발견된 모든 스킬이 목록에 들어갔는지 확인합니다.
1017 1020
1018`totalTokens`는 세션의 현재 컨텍스트 사용량이고 `maxTokens`는 사용량이 측정되는 창입니다. 해당 창은 모델의 컨텍스트 창이거나 적용되는 낮은 자동 압축 창입니다. `rawMaxTokens`는 `maxTokens`와 동일한 값을 전달하고 `percentage`는 해당 창의 반올림된 백분율로 `totalTokens`입니다.1021`totalTokens`는 세션의 현재 컨텍스트 사용량이고 `maxTokens`는 사용량이 측정되는 창입니다. 해당 창은 모델의 컨텍스트 창이거나 적용되는 경우 더 낮은 자동 압축 창입니다. `rawMaxTokens`는 `maxTokens`와 동일한 값을 전달하고 `percentage`는 해당 창의 반올림된 백분율로 `totalTokens`입니다. `apiUsage`는 세션의 실행 합계가 아닌 최신 API 응답의 사용량을 보유합니다.
1019 1022
1020Claude Code는 선택적 `deferredBuiltinTools`, `systemTools` 및 `systemPromptSections` 진단을 설정하지 않으므로 유형이 선언하더라도 없을 것으로 예상하세요.1023Claude Code는 선택적 `deferredBuiltinTools`, `systemTools` 및 `systemPromptSections` 진단을 설정하지 않으므로 유형이 선언하더라도 없을 것으로 예상합니다.
1021 1024
1022<h3 id="sdkcontrolreadfileresponse">1025<h3 id="sdkcontrolreadfileresponse">
1023 `SDKControlReadFileResponse`1026 `SDKControlReadFileResponse`
1034};1037};
1035```1038```
1036 1039
1037`contents`는 파일 텍스트 또는 `encoding: 'base64'`를 요청했을 때 base64 데이터를 보유합니다. 응답의 `encoding` 필드는 해당 경우 `'base64'`로 설정됩니다. `absPath`는 해결된 절대 경로입니다. `truncated`는 파일이 `maxBytes` 상한보다 길고 내용이 해당 한계에서 잘렸을 때 설정됩니다.1040`contents`는 파일 텍스트를 보유하거나 `encoding: 'base64'`를 요청했을 때 base64 데이터를 보유합니다. 응답의 `encoding` 필드는 그 경우 `'base64'`로 설정됩니다. `absPath`는 해결된 절대 경로입니다. `truncated`는 파일이 `maxBytes` 상한보다 길었고 내용이 해당 한계에서 잘렸을 때 설정됩니다.
1038 1041
1039<h4 id="what-readfile-can-read">1042<h4 id="what-readfile-can-read">
1040 readFile()이 읽을 수 있는 것1043 readFile()이 읽을 수 있는 것
1043`readFile()`은 Read 도구보다 더 좁은 파일 집합을 제공합니다:1046`readFile()`은 Read 도구보다 더 좁은 파일 집합을 제공합니다:
1044 1047
1045* `cwd` 및 `additionalDirectories` 같은 세션의 작업 디렉토리 중 하나 내의 일반 파일1048* `cwd` 및 `additionalDirectories` 같은 세션의 작업 디렉토리 중 하나 내의 일반 파일
1046* 세션의 도구 결과 같은 Claude Code 자체 파일 중 일부1049* 세션의 도구 결과 같은 Claude Code 자체의 몇 가지 파일
1047 1050
1048Read 거부 및 요청 규칙은 여전히 일치하는 경로를 차단하고, 광범위한 Read 허용 규칙은 `readFile()`에 나머지 파일 시스템을 열지 않습니다. 다른 것의 경우 호출은 `null`로 해결됩니다.1051Read 거부 및 요청 규칙은 여전히 일치하는 경로를 차단하고, 광범위한 Read 허용 규칙은 나머지 파일 시스템을 `readFile()`에 열지 않습니다. 다른 것의 경우 호출은 `null`로 해결됩니다.
1049 1052
1050<h3 id="sdkcontrolreloadpluginsresponse">1053<h3 id="sdkcontrolreloadpluginsresponse">
1051 `SDKControlReloadPluginsResponse`1054 `SDKControlReloadPluginsResponse`
1074};1077};
1075```1078```
1076 1079
1077컬렉션 필드는 호출 후 세션을 설명합니다:1080수집 필드는 호출 후 세션을 설명합니다:
1078 1081
1079* `commands`, `agents` 및 `mcpServers`: 세션의 명령어, 서브에이전트 및 MCP 서버 상태(동일한 형태로 `supportedCommands()`, `supportedAgents()` 및 `mcpServerStatus()`가 반환). `supportedAgents()`는 초기화 시 캡처된 목록을 계속 반환하므로 다시 로드 후 집합에 대해 여기서 `agents`를 읽으세요1082* `commands`, `agents` 및 `mcpServers`: 세션의 명령어, 서브에이전트 및 MCP 서버 상태(동일한 형태로 `supportedCommands()`, `supportedAgents()` 및 `mcpServerStatus()`가 반환). `supportedAgents()`는 초기화 시 캡처된 목록을 계속 반환하므로 다시 로드 후 집합에 대해 여기서 `agents`를 읽습니다
1080* `plugins`: 각 로드된 플러그인의 `name` 및 설치 `path`입니다. `version`은 플러그인의 매니페스트가 선언하는 것을 반복하며 플러그인 작성자가 제어하므로 신뢰하기 전에 검증하세요. 매니페스트가 선언하지 않으면 생략됩니다1083* `plugins`: 각 로드된 플러그인의 `name` 및 설치 `path`입니다. `version`은 플러그인의 매니페스트가 선언하는 것을 반복하며 플러그인 작성자가 제어하므로 신뢰하기 전에 검증합니다. 매니페스트가 선언하지 않으면 생략됩니다
1081* `error_count`: 플러그인 로드의 오류 수1084* `error_count`: 플러그인 로드의 오류 수
1082 1085
1083`reloadPlugins()`에 `{ holdOnCacheImpact: true }`를 전달하여 대화의 프롬프트 캐시를 무효화할 다시 로드를 적용하는 대신 보류합니다. Claude Code는 대화형 `/reload-plugins` 명령어가 [캐시 비용에 대해 경고](/docs/ko/prompt-caching#enabling-or-disabling-a-plugin)하기 전에 수행하는 검사를 실행합니다. 옵션은 에이전트 SDK v0.3.268 이상이 필요합니다. `pathToClaudeCodeExecutable`이 가리키는 것과 같은 v2.1.268보다 오래된 Claude Code 실행 파일은 옵션을 무시하고 다시 로드를 적용합니다.1086`reloadPlugins()`에 `{ holdOnCacheImpact: true }`를 전달하여 대화의 프롬프트 캐시를 무효화할 다시 로드를 적용하는 대신 보류합니다. Claude Code는 대화형 `/reload-plugins` 명령어가 [캐시 비용에 대해 경고](/docs/ko/prompt-caching#enabling-or-disabling-a-plugin)하기 전에 수행하는 검사를 실행합니다. 옵션은 Agent SDK v0.3.268 이상이 필요합니다. v2.1.268보다 오래된 Claude Code 실행 파일(예: `pathToClaudeCodeExecutable`이 가리키는 것)은 옵션을 무시하고 다시 로드를 적용합니다.
1084 1087
1085옵션을 전달하면 `held`를 읽어 발생한 일을 알아보세요:1088옵션을 전달하면 `held`를 읽어 무슨 일이 일어났는지 알아봅니다:
1086 1089
1087* `true`: 다시 로드가 적용되지 않았으며 컬렉션 필드는 여전히 세션을 설명합니다. `cache_impact`는 적용이 변경할 것을 말합니다. 어쨌든 적용하려면 옵션 없이 `reloadPlugins()`를 다시 호출하세요.1090* `true`: 다시 로드가 적용되지 않았고 수집 필드는 여전히 세션을 설명합니다. `cache_impact`는 적용이 변경할 것을 말합니다. 어쨌든 적용하려면 옵션 없이 `reloadPlugins()`를 다시 호출합니다.
1088* `false`: 검사에서 캐시 영향을 찾지 못했으며 다시 로드가 적용되었습니다.1091* `false`: 검사가 캐시 영향을 찾지 못했고 다시 로드가 적용되었습니다.
1089* 없음: 옵션을 전달하지 않았거나 Claude Code 실행 파일이 v2.1.268보다 오래되어 다시 로드를 적용했습니다.1092* 없음: 옵션을 전달하지 않았거나 Claude Code 실행 파일이 v2.1.268보다 오래되어 다시 로드를 적용했습니다.
1090 1093
1091`cache_impact`는 `held: true`와 함께만 존재합니다. `mcp_servers_added` 및 `mcp_servers_removed`는 다시 로드가 등록하거나 삭제할 플러그인 MCP 서버를 범위 지정된 `plugin:<plugin>:<server>` 이름으로 명시합니다. 이름은 플러그인 작성자가 작성했으므로 표시하기 전에 검증하세요. `lsp_tool_change`는 적용이 LSP 도구를 추가하거나 제거할지 또는 둘 다 하지 않을지 `null`을 말합니다. `may-` 형식은 검사가 대기 중인 플러그인 집합을 완전히 볼 수 없음을 의미합니다.1094`cache_impact`는 `held: true`와 함께만 존재합니다. `mcp_servers_added` 및 `mcp_servers_removed`는 다시 로드가 등록하거나 삭제할 플러그인 MCP 서버를 범위 지정된 `plugin:<plugin>:<server>` 이름으로 명시합니다. 이름은 플러그인 작성자가 작성했으므로 표시하기 전에 검증합니다. `lsp_tool_change`는 적용이 LSP 도구를 추가하거나 제거할지, 또는 둘 다 하지 않을 때 `null`을 말합니다. `may-` 형식은 검사가 대기 중인 플러그인 집합을 완전히 볼 수 없음을 의미합니다.
1092 1095
1093<h3 id="sdkcontrolreloadskillsresponse">1096<h3 id="sdkcontrolreloadskillsresponse">
1094 `SDKControlReloadSkillsResponse`1097 `SDKControlReloadSkillsResponse`
1102};1105};
1103```1106```
1104 1107
1105`skills`는 다시 로드 후 사용 가능한 스킬을 나열하며, `supportedCommands()`가 반환하는 것과 동일한 [`SlashCommand`](#slashcommand) 형태입니다.1108`skills`는 다시 로드 후 사용 가능한 스킬을 `supportedCommands()`가 반환하는 것과 동일한 [`SlashCommand`](#slashcommand) 형태로 나열합니다.
1106 1109
1107<h3 id="sdkcontrolreloadoutputstylesresponse">1110<h3 id="sdkcontrolreloadoutputstylesresponse">
1108 `SDKControlReloadOutputStylesResponse`1111 `SDKControlReloadOutputStylesResponse`
1122 `SDKControlMcpReadResourceResponse`1125 `SDKControlMcpReadResourceResponse`
1123</h3>1126</h3>
1124 1127
1125[`readMcpResource()`](#query-object)의 반환 유형으로, MCP 서버의 `resources/read` 결과를 전달합니다. TypeScript 에이전트 SDK v0.3.280 이상이 필요합니다.1128[`readMcpResource()`](#query-object)의 반환 유형으로, MCP 서버의 `resources/read` 결과를 전달합니다. TypeScript Agent SDK v0.3.280 이상이 필요합니다.
1126 1129
1127```typescript theme={null}1130```typescript theme={null}
1128type SDKControlMcpReadResourceResponse = {1131type SDKControlMcpReadResourceResponse = {
1136};1139};
1137```1140```
1138 1141
1139`readMcpResource()`에 `mcpServerStatus()`가 보고하는 서버 이름과 `ui://` URI(예: 도구가 [`_meta`](#mcpserverstatus)에서 선언하는 `ui.resourceUri`)를 전달하세요. 호출은 다른 URI 스킴, 애플리케이션이 자체 호스팅하는 [SDK MCP 서버](#createsdkmcpserver), 연결되지 않은 서버에 대해 거부됩니다. init 메시지의 [`capabilities`](#sdksystemmessage)에 `mcp_read_resource_v1`이 포함될 때 사용 가능합니다.1142`readMcpResource()`에 `mcpServerStatus()`가 보고하는 서버 이름과 `ui://` URI(예: 도구가 [`_meta`](#mcpserverstatus)에서 선언하는 `ui.resourceUri`)를 전달합니다. 호출은 다른 URI 스킴, 애플리케이션이 자체 호스팅하는 [SDK MCP 서버](#createsdkmcpserver) 및 연결되지 않은 서버에 대해 거부합니다. 초기화 메시지의 [`capabilities`](#sdksystemmessage)에 `mcp_read_resource_v1`이 포함될 때 사용 가능합니다.
1143
1144각 `contents` 항목은 서버가 보낸 하나의 콘텐츠 항목이며, `com.anthropic/` 접두사 아래의 `_meta` 키는 제외합니다. 이는 Claude Code용으로 예약되어 있습니다. `blob`은 바이너리 항목의 base64 데이터를 보유하고 `_meta`는 항목 자체의 `_meta`이며, MCP Apps 서버는 리소스의 `ui.csp` 및 `ui.permissions`를 여기에 넣습니다.
1140 1145
1141각 `contents` 항목은 서버가 보낸 하나의 콘텐츠 항목입니다. `com.anthropic/` 접두사 아래의 `_meta` 키는 Claude Code용으로 예약되어 있으므로 제외됩니다. `blob`은 바이너리 항목의 base64 데이터를 보유하고, `_meta`는 항목 자체의 `_meta`이며, MCP Apps 서버는 리소스의 `ui.csp` 및 `ui.permissions`를 여기에 넣습니다. 콘텐츠는 신뢰할 수 없는 제3자 HTML이므로 샌드박스에서 렌더링하세요.1146콘텐츠는 신뢰할 수 없는 제3자 HTML이므로 샌드박스에서 렌더링합니다.
1142 1147
1143<h3 id="agentdefinition">1148<h3 id="agentdefinition">
1144 `AgentDefinition`1149 `AgentDefinition`
1168 1173
1169| 필드 | 필수 | 설명 |1174| 필드 | 필수 | 설명 |
1170| :- | :- | :- |1175| :- | :- | :- |
1171| `description` | 예 | 이 에이전트를 사용할 때를 설명하는 자연어 설명 |1176| `description` | 예 | 이 에이전트를 사용할 때를 설명하는 자연어 |
1172| `tools` | 아니오 | 허용된 도구 이름의 배열입니다. 생략하면 [서브에이전트에서 사용 가능한 모든 도구](/docs/ko/sub-agents#available-tools)를 상속합니다. 스킬을 에이전트의 컨텍스트에 미리 로드하려면 여기에 `'Skill'`을 나열하는 대신 `skills` 필드를 사용하세요 |1177| `tools` | 아니오 | 허용된 도구 이름의 배열입니다. 생략하면 [서브에이전트에서 사용 가능한 모든 도구](/docs/ko/sub-agents#available-tools)를 상속합니다. 스킬을 에이전트의 컨텍스트에 미리 로드하려면 여기에 `'Skill'`을 나열하는 대신 `skills` 필드를 사용합니다 |
1173| `disallowedTools` | 아니오 | 이 에이전트에 대해 명시적으로 거부할 도구 이름의 배열입니다. MCP 서버 수준 패턴도 허용됩니다. `mcp__server` 또는 `mcp__server__*`는 해당 서버의 모든 도구를 제거하고 `mcp__*`는 모든 서버의 모든 MCP 도구를 제거합니다 |1178| `disallowedTools` | 아니오 | 이 에이전트에 대해 명시적으로 허용하지 않을 도구 이름의 배열입니다. MCP 서버 수준 패턴도 허용됩니다: `mcp__server` 또는 `mcp__server__*`는 해당 서버의 모든 도구를 제거하고 `mcp__*`는 모든 서버의 모든 MCP 도구를 제거합니다 |
1174| `prompt` | 예 | 에이전트의 시스템 프롬프트 |1179| `prompt` | 예 | 에이전트의 시스템 프롬프트 |
1175| `model` | 아니오 | 이 에이전트의 모델 재정의입니다. `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'` 같은 별칭 또는 전체 모델 ID를 허용합니다. `'inherit'`는 메인 모델을 사용합니다. 생략하면 Claude Code는 [서브에이전트 모델 순서](/docs/ko/sub-agents#choose-a-model)에서 모델을 선택합니다 |1180| `model` | 아니오 | 이 에이전트의 모델 재정의입니다. `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'` 같은 별칭 또는 전체 모델 ID를 허용합니다. `'inherit'`는 메인 모델을 사용합니다. 생략하면 Claude Code는 [서브에이전트 모델 순서](/docs/ko/sub-agents#choose-a-model)에서 모델을 선택합니다 |
1176| `mcpServers` | 아니오 | 이 에이전트의 MCP 서버 사양입니다 |1181| `mcpServers` | 아니오 | 이 에이전트의 MCP 서버 사양 |
1177| `skills` | 아니오 | 에이전트 컨텍스트에 미리 로드할 스킬 이름의 배열 |1182| `skills` | 아니오 | 에이전트 컨텍스트에 미리 로드할 스킬 이름의 배열 |
1178| `initialPrompt` | 아니오 | 이 에이전트가 메인 스레드 에이전트로 실행될 때 첫 번째 사용자 턴으로 자동 제출됩니다 |1183| `initialPrompt` | 아니오 | 이 에이전트가 메인 스레드 에이전트로 실행될 때 첫 번째 사용자 턴으로 자동 제출됩니다 |
1179| `maxTurns` | 아니오 | 중지하기 전 최대 에이전트 턴(API 왕복) 수 |1184| `maxTurns` | 아니오 | 중지하기 전의 최대 에이전트 턴(API 왕복) 수 |
1180| `background` | 아니오 | 호출될 때 이 에이전트를 비차단 백그라운드 작업으로 실행합니다 |1185| `background` | 아니오 | 호출될 때 이 에이전트를 비차단 백그라운드 작업으로 실행합니다 |
1181| `omitClaudeMd` | 아니오 | 이 에이전트가 서브에이전트로 실행될 때 사용자, 프로젝트 및 로컬 CLAUDE.md 파일 없이 실행합니다. 관리 정책 파일은 여전히 로드됩니다. 에이전트 도구 프롬프트에서 필요한 모든 것을 가져오는 에이전트에 사용합니다. 이 에이전트가 메인 스레드 에이전트로 실행될 때는 무시됩니다. TypeScript 에이전트 SDK v0.3.271 이상이 필요합니다 |1186| `omitClaudeMd` | 아니오 | 이 에이전트가 서브에이전트로 실행될 때 사용자, 프로젝트 및 로컬 CLAUDE.md 파일 없이 실행합니다. 관리 정책 파일은 여전히 로드됩니다. Agent 도구 프롬프트에서 필요한 모든 것을 가져오는 에이전트에 사용합니다. 이 에이전트가 메인 스레드 에이전트로 실행될 때는 무시됩니다. TypeScript Agent SDK v0.3.271 이상이 필요합니다 |
1182| `memory` | 아니오 | 이 에이전트의 메모리 소스: `'user'`, `'project'` 또는 `'local'` |1187| `memory` | 아니오 | 이 에이전트의 메모리 소스: `'user'`, `'project'` 또는 `'local'` |
1183| `effort` | 아니오 | 이 에이전트의 추론 노력 수준입니다. 명명된 수준 또는 정수를 허용합니다 |1188| `effort` | 아니오 | 이 에이전트의 추론 노력 수준입니다. 명명된 수준 또는 정수를 허용합니다 |
1184| `permissionMode` | 아니오 | 이 에이전트 내 도구 실행의 권한 모드입니다. [서브에이전트 상속 규칙](/docs/ko/agent-sdk/permissions#available-modes)은 적용 시기를 결정합니다. [`PermissionMode`](#permissionmode)를 참조하세요 |1189| `permissionMode` | 아니오 | 이 에이전트 내의 도구 실행을 위한 권한 모드입니다. [서브에이전트 상속 규칙](/docs/ko/agent-sdk/permissions#available-modes)은 적용 시기를 결정합니다. [`PermissionMode`](#permissionmode)를 참조하세요 |
1185| `criticalSystemReminder_EXPERIMENTAL` | 아니오 | 실험적: 시스템 프롬프트에 추가된 중요 알림 |1190| `criticalSystemReminder_EXPERIMENTAL` | 아니오 | 실험적: 시스템 프롬프트에 추가된 중요 알림 |
1186 1191
1187<h3 id="agentmcpserverspec">1192<h3 id="agentmcpserverspec">
1188 `AgentMcpServerSpec`1193 `AgentMcpServerSpec`
1189</h3>1194</h3>
1190 1195
1191서브에이전트에서 사용 가능한 MCP 서버를 지정합니다. 서버 이름(부모의 `mcpServers` 구성에서 서버를 참조하는 문자열) 또는 서버 이름을 구성으로 매핑하는 인라인 서버 구성 레코드일 수 있습니다.1196서브에이전트에서 사용 가능한 MCP 서버를 지정합니다. 서버 이름(부모의 `mcpServers` 구성에서 서버를 참조하는 문자열) 또는 서버 이름을 구성에 매핑하는 인라인 서버 구성 레코드일 수 있습니다.
1192 1197
1193```typescript theme={null}1198```typescript theme={null}
1194type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;1199type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;
1200 `SettingSource`1205 `SettingSource`
1201</h3>1206</h3>
1202 1207
1203SDK가 설정을 로드할 파일 시스템 기반 구성 소스를 제어합니다.1208SDK가 설정을 로드하는 파일 시스템 기반 구성 소스를 제어합니다.
1204 1209
1205```typescript theme={null}1210```typescript theme={null}
1206type SettingSource = "user" | "project" | "local";1211type SettingSource = "user" | "project" | "local";
1216 기본 동작1221 기본 동작
1217</h4>1222</h4>
1218 1223
1219`settingSources`가 생략되거나 `undefined`일 때 `query()`는 Claude Code CLI와 동일한 파일 시스템 설정을 로드합니다. 사용자, 프로젝트 및 로컬입니다. [settingSources가 제어하지 않는 것](/docs/ko/agent-sdk/claude-code-features#what-settingsources-does-not-control)을 참조하여 이 옵션에 관계없이 읽는 입력과 비활성화 방법을 확인하세요.1224`settingSources`가 생략되거나 `undefined`일 때 `query()`는 Claude Code CLI와 동일한 파일 시스템 설정을 로드합니다: 사용자, 프로젝트 및 로컬. [settingSources가 제어하지 않는 것](/docs/ko/agent-sdk/claude-code-features#what-settingsources-does-not-control)을 참조하여 이 옵션과 관계없이 읽히는 입력과 비활성화 방법을 확인하세요.
1220 1225
1221<h4 id="why-use-settingsources">1226<h4 id="why-use-settingsources">
1222 settingSources를 사용하는 이유1227 settingSources를 사용하는 이유
1227```typescript theme={null}1232```typescript theme={null}
1228import { query } from "@anthropic-ai/claude-agent-sdk";1233import { query } from "@anthropic-ai/claude-agent-sdk";
1229 1234
1230// 디스크에서 사용자, 프로젝트 또는 로컬 설정을 로드하지 마세요1235// Do not load user, project, or local settings from disk
1231const result = query({1236const result = query({
1232 prompt: "Analyze this code",1237 prompt: "Analyze this code",
1233 options: { settingSources: [] }1238 options: { settingSources: [] }
1239```typescript theme={null}1244```typescript theme={null}
1240import { query } from "@anthropic-ai/claude-agent-sdk";1245import { query } from "@anthropic-ai/claude-agent-sdk";
1241 1246
1242// 프로젝트 설정만 로드, 사용자 및 로컬 무시1247// Load only project settings, ignore user and local
1243const result = query({1248const result = query({
1244 prompt: "Run CI checks",1249 prompt: "Run CI checks",
1245 options: {1250 options: {
1246 settingSources: ["project"] // .claude/settings.json만1251 settingSources: ["project"] // Only .claude/settings.json
1247 }1252 }
1248});1253});
1249```1254```
1250 1255
1251CLAUDE.md 프로젝트 지침을 로드하려면 `settingSources`에 `"project"`를 포함하세요. CLAUDE.md 로드가 시스템 프롬프트 옵션과 상호작용하는 방식은 [시스템 프롬프트 수정](/docs/ko/agent-sdk/modifying-system-prompts#claude-md-files-for-project-level-instructions)을 참조하세요.1256CLAUDE.md 프로젝트 지침을 로드하려면 `settingSources`에 `"project"`를 포함합니다. CLAUDE.md 로드가 시스템 프롬프트 옵션과 상호작용하는 방식은 [시스템 프롬프트 수정](/docs/ko/agent-sdk/modifying-system-prompts#claude-md-files-for-project-level-instructions)을 참조하세요.
1252 1257
1253<h4 id="settings-precedence">1258<h4 id="settings-precedence">
1254 설정 우선 순위1259 설정 우선순위
1255</h4>1260</h4>
1256 1261
1257여러 소스가 로드될 때 설정은 이 우선 순위(높음에서 낮음)로 병합됩니다:1262여러 소스가 로드될 때 설정은 이 우선순위(높음에서 낮음)로 병합됩니다:
1258 1263
12591. 로컬 설정 (`.claude/settings.local.json`)12641. 로컬 설정(`.claude/settings.local.json`)
12602. 프로젝트 설정 (`.claude/settings.json`)12652. 프로젝트 설정(`.claude/settings.json`)
12613. 사용자 설정 (`~/.claude/settings.json`)12663. 사용자 설정(`~/.claude/settings.json`)
1262 1267
1263`agents`, `allowedTools` 및 `settings` 같은 프로그래밍 옵션은 사용자, 프로젝트 및 로컬 파일 시스템 설정을 재정의합니다. 관리 정책 설정은 프로그래밍 옵션보다 우선합니다.1268`agents`, `allowedTools` 및 `settings` 같은 프로그래밍 옵션은 사용자, 프로젝트 및 로컬 파일 시스템 설정을 재정의합니다. 관리 정책 설정은 프로그래밍 옵션보다 우선합니다.
1264 1269
1272 | "acceptEdits" // 파일 편집 자동 수락1277 | "acceptEdits" // 파일 편집 자동 수락
1273 | "bypassPermissions" // 권한 검사 우회; 명시적 요청 규칙은 여전히 프롬프트1278 | "bypassPermissions" // 권한 검사 우회; 명시적 요청 규칙은 여전히 프롬프트
1274 | "plan" // 계획 모드 - 편집 없이 탐색1279 | "plan" // 계획 모드 - 편집 없이 탐색
1275 | "dontAsk" // 권한에 대해 프롬프트하지 마세요, 사전 승인되지 않으면 거부1280 | "dontAsk" // 권한에 대해 프롬프트하지 않음, 사전 승인되지 않으면 거부
1276 | "auto"; // 모델 분류기가 권한 프롬프트를 승인 또는 거부1281 | "auto"; // 모델 분류자가 셸 명령어 및 네트워크 요청 같은 작업을 검토
1277```1282```
1278 1283
1279<h3 id="canusetool">1284<h3 id="canusetool">
1282 1287
1283도구 사용을 제어하기 위한 사용자 정의 권한 함수 유형입니다.1288도구 사용을 제어하기 위한 사용자 정의 권한 함수 유형입니다.
1284 1289
1285함수는 대화형 권한 프롬프트의 SDK 대체입니다. [권한 평가 흐름](/docs/ko/agent-sdk/permissions#how-permissions-are-evaluated)이 프롬프트로 해결될 때만 호출됩니다. `allowedTools` 항목, 설정 허용 규칙 또는 `acceptEdits` 또는 `bypassPermissions` 같은 권한 모드에 의해 이미 승인된 도구 호출은 절대 호출하지 않습니다. 모든 도구 호출을 게이트하려면 [`PreToolUse` 훅](/docs/ko/agent-sdk/hooks)을 대신 사용하세요.1290함수는 대화형 권한 프롬프트의 SDK 대체입니다. [권한 평가 흐름](/docs/ko/agent-sdk/permissions#how-permissions-are-evaluated)이 프롬프트로 해결될 때만 호출됩니다. `allowedTools` 항목, 설정 허용 규칙 또는 `acceptEdits` 또는 `bypassPermissions` 같은 권한 모드에 의해 이미 승인된 도구 호출은 호출하지 않습니다. 모든 도구 호출을 게이트하려면 [`PreToolUse` 훅](/docs/ko/agent-sdk/hooks)을 대신 사용합니다.
1286 1291
1287허용 규칙은 [모든 모드가 자동 승인하지 않는 작업](/docs/ko/permission-modes#actions-no-mode-auto-approves)을 사전 승인하지 않습니다. [권한이 평가되는 방식](/docs/ko/agent-sdk/permissions#how-permissions-are-evaluated)을 참조하여 콜백에 도달하는 것과 `dontAsk` 및 `auto` 모드에서 발생하는 것을 확인하세요.1292허용 규칙은 [모드가 자동 승인하지 않는 작업](/docs/ko/permission-modes#actions-no-mode-auto-approves)을 사전 승인하지 않습니다. [권한이 평가되는 방식](/docs/ko/agent-sdk/permissions#how-permissions-are-evaluated)을 참조하여 콜백에 도달하는 것과 `dontAsk` 및 `auto` 모드에서 발생하는 것을 확인하세요.
1288 1293
1289```typescript theme={null}1294```typescript theme={null}
1290type CanUseTool = (1295type CanUseTool = (
1308| 옵션 | 유형 | 설명 |1313| 옵션 | 유형 | 설명 |
1309| :- | :- | :- |1314| :- | :- | :- |
1310| `signal` | `AbortSignal` | 작업을 중단해야 하면 신호됩니다 |1315| `signal` | `AbortSignal` | 작업을 중단해야 하면 신호됩니다 |
1311| `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | 사용자가 이 도구에 대해 다시 프롬프트되지 않도록 제안된 권한 업데이트입니다. Bash 프롬프트는 `localSettings` [대상](#permissionupdatedestination)이 있는 제안을 포함하므로 `updatedPermissions`에서 반환하면 규칙을 `.claude/settings.local.json`에 작성하고 세션 간에 지속됩니다. |1316| `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | 사용자가 이 도구에 대해 다시 프롬프트되지 않도록 제안된 권한 업데이트입니다. Bash 프롬프트는 `localSettings` [대상](#permissionupdatedestination)을 사용하는 제안을 포함하므로 `updatedPermissions`에서 반환하면 규칙을 `.claude/settings.local.json`에 작성하고 세션 간에 지속됩니다. |
1312| `blockedPath` | `string` | 해당하는 경우 권한 요청을 트리거한 파일 경로입니다 |1317| `blockedPath` | `string` | 해당하는 경우 권한 요청을 트리거한 파일 경로입니다 |
1313| `mcpServer` | `{ name: string; source: string }` | MCP 도구의 경우 해당 도구를 제공하는 MCP 서버 및 해당 서버의 정의가 나온 위치([`McpServerProvenance`](#mcpserverprovenance)의 필드 포함). 다른 도구의 경우 없습니다. 에이전트 SDK v0.3.274 이상이 필요합니다 |1318| `mcpServer` | `{ name: string; source: string }` | `mcp__*` 도구의 경우 해당 도구를 제공하는 MCP 서버 및 해당 서버의 정의가 나온 위치([`McpServerProvenance`](#mcpserverprovenance)의 필드 포함). 다른 도구의 경우 없습니다. Agent SDK v0.3.274 이상이 필요합니다 |
1314| `decisionReason` | `string` | 이 권한 요청이 트리거된 이유를 설명합니다 |1319| `decisionReason` | `string` | 이 권한 요청이 트리거된 이유를 설명합니다 |
1315| `defaultToNo` | `boolean` | 이 `true`일 때 단일 오류 키 입력이 이 요청을 승인하면 안 됩니다. 승인 옵션에서 프롬프트를 열고 사전 선택하지 마세요. 일회성 승인 바로 가기를 제공하지 마세요. 에이전트 SDK v0.3.268 이상이 필요합니다 |1320| `defaultToNo` | `boolean` | true\`일 때, 단일 잘못된 키 입력이 이 요청을 승인하면 안 됩니다. 거부 옵션에서 프롬프트를 열고 승인을 사전 선택하지 않으며 일회성 승인 바로가기를 제공하지 마세요. Agent SDK v0.3.268 이상이 필요합니다 |
1316| `suppressAlwaysAllowRule` | `boolean` | 이 `true`일 때 이 요청에 대한 영구적 항상 허용 선택을 제공하지 마세요. 규칙이 요청 자체의 작업보다 더 많이 부여하기 때문입니다. 에이전트 SDK v0.3.268 이상이 필요합니다 |1321| `suppressAlwaysAllowRule` | `boolean` | true\`일 때, 이 요청에 대한 영구적 항상 허용 선택을 제공하지 마세요. 작성할 규칙이 요청 자체의 작업보다 더 많이 부여하기 때문입니다. Agent SDK v0.3.268 이상이 필요합니다 |
1317| `toolUseID` | `string` | 어시스턴트 메시지 내 이 특정 도구 호출의 고유 식별자 |1322| `toolUseID` | `string` | 어시스턴트 메시지 내 이 특정 도구 호출의 고유 식별자 |
1318| `agentID` | `string` | 서브에이전트 내에서 실행 중인 경우 서브에이전트의 ID |1323| `agentID` | `string` | 서브 에이전트 내에서 실행 중인 경우 서브 에이전트의 ID |
1319| `requestId` | `string` | `control_request` 봉투의 `request_id`입니다. 애플리케이션이 SDK 외부의 자체 채널(예: 서명된 HTTP POST)을 통해 보내는 `control_response`는 이 값을 에코해야 Claude Code 프로세스가 응답을 요청과 일치시킬 수 있습니다 |1324| `requestId` | `string` | `control_request` 봉투의 `request_id`입니다. 애플리케이션이 자신의 채널(예: 서명된 HTTP POST)을 통해 보내는 `control_response`는 이 값을 에코해야 하므로 Claude Code 프로세스가 회신을 요청과 일치시킬 수 있습니다 |
1320 1325
1321콜백은 일반적으로 [`PermissionResult`](#permissionresult)를 반환하여 요청을 해결하며, SDK는 이를 전송을 통해 `control_response`로 다시 작성합니다. 애플리케이션이 이미 이 요청에 대해 자체 채널을 통해 `control_response`를 보낸 경우에만 `null`을 반환하고 `requestId`를 에코합니다. SDK는 전송에 응답을 작성하는 것을 건너뜁니다. 다른 경우에 `null`을 반환하면 `control_response`가 절대 보내지지 않고 권한 프롬프트가 시간 초과되지 않으므로 도구 호출이 무한정 차단됩니다.1326콜백은 일반적으로 [`PermissionResult`](#permissionresult)를 반환하여 요청을 해결하며, SDK는 이를 전송으로 `control_response`로 다시 작성합니다. 애플리케이션이 이미 자신의 채널을 통해 이 요청에 대한 `control_response`를 보냈고 `requestId`를 에코할 때만 `null`을 반환합니다. 그러면 SDK는 전송에 응답을 작성하는 것을 건너뜁니다. 다른 경우에 `null`을 반환하면 `control_response`가 보내지지 않고 권한 프롬프트가 시간 초과되지 않으므로 도구 호출이 무한정 차단됩니다.
1322 1327
1323`requestId` 옵션과 `null` 반환 값은 Claude Code v2.1.199 이상이 필요합니다.1328`requestId` 옵션과 `null` 반환 값은 Claude Code v2.1.199 이상이 필요합니다.
1324 1329
1360 1365
1361| 필드 | 유형 | 설명 |1366| 필드 | 유형 | 설명 |
1362| :- | :- | :- |1367| :- | :- | :- |
1363| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | [`AskUserQuestion`](/docs/ko/agent-sdk/user-input#question-format) 옵션의 `preview` 필드를 옵트인하고 콘텐츠 형식을 설정합니다. 설정하지 않으면 Claude는 미리 보기를 내보내지 않습니다 |1368| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | [`AskUserQuestion`](/docs/ko/agent-sdk/user-input#question-format) 옵션의 `preview` 필드를 옵트인하고 콘텐츠 형식을 설정합니다. 설정하지 않으면 Claude는 미리보기를 내보내지 않습니다 |
1364 1369
1365<h3 id="mcpserverconfig">1370<h3 id="mcpserverconfig">
1366 `McpServerConfig`1371 `McpServerConfig`
1456| :- | :- | :- |1461| :- | :- | :- |
1457| `type` | `'local'` | `'local'`이어야 합니다(현재 로컬 플러그인만 지원됨) |1462| `type` | `'local'` | `'local'`이어야 합니다(현재 로컬 플러그인만 지원됨) |
1458| `path` | `string` | 플러그인 디렉토리의 절대 또는 상대 경로 |1463| `path` | `string` | 플러그인 디렉토리의 절대 또는 상대 경로 |
1459| `skipMcpDiscovery` | `boolean` | `true`일 때 SDK는 이 플러그인에서 스킬, 훅, 에이전트 및 명령어를 로드하지만 `.mcp.json` 또는 매니페스트 `mcpServers`를 읽지 않습니다. 애플리케이션이 플러그인의 MCP 연결을 소유할 때 설정하세요. |1464| `skipMcpDiscovery` | `boolean` | `true`일 때 SDK는 이 플러그인에서 스킬, 훅, 에이전트 및 명령어를 로드하지만 `.mcp.json` 또는 매니페스트 `mcpServers`를 읽지 않습니다. 애플리케이션이 플러그인의 MCP 연결을 소유할 때 설정합니다. |
1460 1465
1461**예제:**1466**예제:**
1462 1467
1549* `'model_not_found'`: 선택한 모델이 존재하지 않거나 계정이나 배포에서 사용할 수 없음1554* `'model_not_found'`: 선택한 모델이 존재하지 않거나 계정이나 배포에서 사용할 수 없음
1550* `'overloaded'`: API가 서버가 용량에 도달했기 때문에 529를 반환했으며, 할당량에 대한 429인 `'rate_limit'`과는 다름1555* `'overloaded'`: API가 서버가 용량에 도달했기 때문에 529를 반환했으며, 할당량에 대한 429인 `'rate_limit'`과는 다름
1551* `'account_on_hold'`: [계정이 보류 중](/docs/ko/errors#your-account-is-on-hold)1556* `'account_on_hold'`: [계정이 보류 중](/docs/ko/errors#your-account-is-on-hold)
1552* `'cloud_credential_error'`: Claude Code가 실행되는 머신에서 사용 가능한 AWS 또는 Google Cloud 자격증명을 얻을 수 없어서 클라우드 제공자에게 요청이 도달하지 않았습니다. 일반적인 원인은 해당 머신에서 만료되었거나 완료되지 않은 클라우드 로그인이지만, 일시적으로 도달할 수 없는 자격증명 서비스도 동일한 값을 보고합니다. [AWS 또는 Google Cloud 자격증명을 로드할 수 없음](/docs/ko/errors#could-not-load-aws-or-google-cloud-credentials)을 참조하세요. TypeScript Agent SDK v0.3.267 이상 필요하며, Claude Code v2.1.267을 번들로 포함합니다.1557* `'cloud_credential_error'`: Claude Code가 실행되는 머신에서 사용 가능한 AWS 또는 Google Cloud 자격증명을 얻을 수 없어서 클라우드 제공자에게 요청이 도달하지 않았습니다. 일반적인 원인은 해당 머신에서 만료되었거나 완료되지 않은 클라우드 로그인이지만, 일시적으로 도달할 수 없는 자격증명 서비스도 동일한 값을 보고합니다. [AWS 또는 Google Cloud 자격증명을 로드할 수 없음](/docs/ko/errors#could-not-load-aws-or-google-cloud-credentials)을 참조하세요. TypeScript Agent SDK v0.3.267 이상이 필요하며, Claude Code v2.1.267을 번들로 포함합니다.
1553 1558
1554`aborted`는 인터럽트 또는 중단이 스트림이 완료되기 전에 어시스턴트 메시지를 잘랐을 때 `true`입니다: 메시지에는 `stop_reason`이 없고 콘텐츠가 단어 중간에 끝날 수 있습니다. 이 필드는 정상적으로 완료된 메시지에는 없습니다. Agent SDK v0.3.214 이상이 필요합니다.1559`aborted`는 중단이나 중지가 스트림이 완료되기 전에 어시스턴트 메시지를 자를 때 `true`입니다: 메시지에는 `stop_reason`이 없고 콘텐츠가 단어 중간에 끝날 수 있습니다. 이 필드는 정상적으로 완료된 메시지에는 없습니다. Agent SDK v0.3.214 이상이 필요합니다.
1555 1560
1556Claude Code는 [`user_message_uuid`](#user_message_uuid)의 조건에 따라 턴의 첫 번째 어시스턴트 메시지에 `user_message_uuid`와 `user_message_uuids`를 설정합니다. Claude Code가 재시작으로 인해 중단된 턴을 다시 실행할 때, 다시 실행의 어시스턴트 메시지가 이러한 필드를 전달하면 [`resume_reason`](#resume_reason)도 전달합니다.1561Claude Code는 [`user_message_uuid`](#user_message_uuid)의 조건에 따라 턴의 첫 번째 어시스턴트 메시지에 `user_message_uuid`와 `user_message_uuids`를 설정합니다. Claude Code가 재시작으로 중단된 턴을 다시 실행할 때, 이러한 필드를 전달하는 다시 실행된 어시스턴트 메시지도 [`resume_reason`](#resume_reason)을 전달합니다.
1557 1562
1558`timestamp`는 메시지의 콘텐츠가 생성을 완료한 ISO 8601 시간입니다. 값은 해당 머신의 시계에서 나오므로 표시 목적으로만 사용하고 메시지를 순서대로 정렬하지 마세요. 하나의 API 턴은 동일한 `message.id`를 공유하지만 각각 고유한 `timestamp`를 가진 여러 어시스턴트 메시지를 생성할 수 있습니다. 필드가 없으면 메시지를 받은 시간으로 돌아가세요.1563`timestamp`는 메시지의 콘텐츠가 생성을 완료한 ISO 8601 시간입니다. 값은 해당 머신의 시계에서 나오므로 표시 목적으로만 사용하고 메시지를 순서대로 정렬하지 마세요. 하나의 API 턴은 동일한 `message.id`를 공유하는 여러 어시스턴트 메시지를 생성할 수 있으며, 각각 자신의 `timestamp`를 가집니다. 필드가 없으면 메시지를 받은 시간으로 돌아가세요.
1559 1564
1560`context_usage`는 `/context` 보고서의 구조화된 복사본이며, [`SDKContextUsage`](#sdkcontextusage)로 입력되고 Agent SDK v0.3.232 이상이 필요합니다. 프롬프트로 `/context`를 보낼 때, Claude Code는 보고서를 어시스턴트 메시지로 전달하며, 그 `message.content`는 마크다운 테이블을 보유하고, 동일한 메시지에 `context_usage`를 첨부합니다. Claude Code는 다른 어시스턴트 메시지에는 필드를 설정하지 않으며, 이전 버전은 `/context` 테이블을 없이 전달하므로, 필드가 있을 때 분석을 읽고 없을 때 마크다운 텍스트로 돌아가세요.1565`context_usage`는 `/context` 보고서의 구조화된 복사본이며, [`SDKContextUsage`](#sdkcontextusage)로 입력되고 Agent SDK v0.3.232 이상이 필요합니다. 프롬프트로 `/context`를 보낼 때, Claude Code는 보고서를 어시스턴트 메시지로 전달하며, 그 `message.content`는 마크다운 테이블을 보유하고, `context_usage`를 동일한 메시지에 첨부합니다. Claude Code는 다른 어시스턴트 메시지에는 필드를 설정하지 않으며, 이전 버전은 `/context` 테이블을 없이 전달하므로, 필드가 있을 때는 분석을 읽고 없을 때는 마크다운 텍스트로 돌아가세요.
1561 1566
1562<h3 id="sdkusermessage">1567<h3 id="sdkusermessage">
1563 `SDKUserMessage`1568 `SDKUserMessage`
1582};1587};
1583```1588```
1584 1589
1585사용자가 입력 UI에 붙여넣은 콘텐츠를 입력한 것이 아니라 보내도록 `pasted_content`를 설정하고, 붙여넣기당 하나의 항목을 설정하며, 각각은 문자열 또는 콘텐츠 블록의 배열입니다. Claude Code는 각 항목의 텍스트를 입력된 텍스트 뒤에 순서대로 추가하고, 각 붙여넣기를 `<pasted_content>` 태그로 감쌀 수 있습니다. 텍스트 이외의 블록은 무시되므로 이미지와 문서는 `message.content`에서 보내세요. Agent SDK v0.3.277 이상이 필요합니다.1590사용자가 프롬프트 UI에 붙여넣은 콘텐츠를 보내려면 `pasted_content`를 설정하세요. 입력한 것이 아니라 붙여넣은 것이며, 붙여넣기당 하나의 항목이고, 각각 문자열 또는 콘텐츠 블록 배열입니다. Claude Code는 각 항목의 텍스트를 입력된 텍스트 뒤에 순서대로 추가하며, 각 붙여넣기를 `<pasted_content>` 태그로 감쌀 수 있습니다. 텍스트 이외의 블록은 무시되므로 이미지와 문서는 `message.content`에서 보내세요. Agent SDK v0.3.277 이상이 필요합니다.
1586 1591
1587`shouldQuery` 또는 `client_composed`를 설정하여 Claude Code가 메시지를 처리하는 방식을 변경합니다:1592Claude Code가 보낸 메시지를 처리하는 방식을 변경하려면 `shouldQuery` 또는 `client_composed`를 설정하세요:
1588 1593
1589* `shouldQuery`: 어시스턴트 턴을 트리거하지 않고 메시지를 트랜스크립트에 추가하려면 `false`로 설정합니다. 메시지는 보류되고 턴을 트리거하는 다음 사용자 메시지로 병합됩니다. 이를 사용하여 모델 호출을 소비하지 않고 대역 외에서 실행한 명령의 출력과 같은 컨텍스트를 주입합니다.1594* `shouldQuery`: 어시스턴트 턴을 트리거하지 않고 메시지를 트랜스크립트에 추가하려면 `false`로 설정하세요. 메시지는 보류되고 턴을 트리거하는 다음 사용자 메시지로 병합됩니다. 이를 사용하여 모델 호출을 소비하지 않고 대역 외에서 실행한 명령의 출력과 같은 컨텍스트를 주입하세요.
1590* `client_composed`: Claude Code가 메시지 텍스트를 작성된 대로 전달하도록 `true`로 설정합니다. Claude Code는 `@path` 또는 [`@server:resource`](/docs/ko/mcp#use-mcp-resources) 언급을 확장하지 않으며, `/`로 시작하는 텍스트를 명령으로 실행하지 않습니다. [`verbatimPrompts`](#options) 옵션이 켜져 있는 동안 SDK는 모든 메시지에 필드를 설정합니다. TypeScript Agent SDK v0.3.280 이상 및 Claude Code v2.1.248 이상이 필요합니다.1595* `client_composed`: Claude Code가 작성된 대로 메시지 텍스트를 전달하도록 하려면 `true`로 설정하세요. Claude Code는 `@path` 또는 [`@server:resource`](/docs/ko/mcp#use-mcp-resources) 언급을 확장하지 않으며, `/`로 시작하는 텍스트를 명령으로 실행하지 않습니다. [`verbatimPrompts`](#options) 옵션이 켜져 있는 동안 SDK는 모든 메시지에 필드를 설정합니다. TypeScript Agent SDK v0.3.280 이상과 Claude Code v2.1.248 이상이 필요합니다.
1591 1596
1592`tool_result` 블록을 전달하는 메시지에서 `tool_use_result`는 모델로 전송된 텍스트가 아니라 도구의 구조화된 출력 객체입니다. 해당 형태는 일치하는 `tool_use` 블록으로 명명된 도구에 따라 다르므로 필드는 `unknown`으로 입력됩니다. 기본 제공 형태는 [도구 출력 타입](#tool-output-types) 아래에 나열되어 있습니다.1597`tool_result` 블록을 전달하는 메시지에서 `tool_use_result`는 모델로 전송된 텍스트가 아니라 도구의 구조화된 출력 객체입니다. 해당 형태는 일치하는 `tool_use` 블록으로 명명된 도구에 따라 다르므로 필드는 `unknown`으로 입력됩니다. 기본 제공 형태는 [도구 출력 타입](#tool-output-types)에 나열되어 있습니다.
1593 1598
1594`Agent` 도구의 경우 `tool_use_result`는 [`AgentOutput`](#agent-2)입니다. `completed` 결과에서 `content`는 Claude Code가 `tool_result` 텍스트에 추가하는 에이전트 ID 및 사용량 트레일러 없이 서브에이전트의 보고서를 보유하므로 해당 텍스트를 구문 분석하는 대신 `tool_use_result`에서 렌더링합니다.1599`Agent` 도구의 경우 `tool_use_result`는 [`AgentOutput`](#agent-2)입니다. `completed` 결과에서 `content`는 Claude Code가 `tool_result` 텍스트에 추가하는 에이전트 ID 및 사용량 트레일러 없이 서브에이전트의 보고서를 보유하므로, 해당 텍스트를 구문 분석하는 대신 `tool_use_result`에서 렌더링하세요.
1595 1600
1596결과에 `resource_link` 블록이 포함된 MCP 도구의 경우 `tool_use_result`는 [`SDKMcpResourceLink`](#sdkmcpresourcelink) 항목의 `resourceLinks` 배열을 가진 객체입니다. Claude는 각 링크를 `tool_result` 블록의 텍스트 줄로 받으므로 해당 텍스트를 구문 분석하는 대신 `resourceLinks`를 읽어 서버가 반환한 파일을 렌더링합니다. Claude Code는 결과에 링크가 없을 때 `resourceLinks`를 생략하고 서브에이전트의 결과에서 생략하며, 결과당 최대 50개의 링크를 유지하고, 배열이 64 KiB의 직렬화된 JSON에 도달하면 링크 추가를 중지합니다. `resourceLinks`는 Agent SDK v0.3.257 이상이 필요합니다.1601결과에 `resource_link` 블록이 포함된 MCP 도구의 경우, `tool_use_result`는 [`SDKMcpResourceLink`](#sdkmcpresourcelink) 항목의 `resourceLinks` 배열을 가진 객체입니다. Claude는 각 링크를 `tool_result` 블록의 텍스트 줄로 받으므로, 해당 텍스트를 구문 분석하는 대신 `resourceLinks`를 읽어 서버가 반환한 파일을 렌더링하세요. Claude Code는 결과에 링크가 없을 때 `resourceLinks`를 생략하고, 서브에이전트의 결과에서 생략하며, 결과당 최대 50개의 링크를 유지하고, 배열이 64 KiB의 직렬화된 JSON에 도달하면 링크 추가를 중지합니다. `resourceLinks`는 Agent SDK v0.3.257 이상이 필요합니다.
1597 1602
1598사용자가 입력한 것이 아니라 붙여넣은 `message.content`의 부분을 알려주도록 `inline_pastes`를 설정하고, 붙여넣기당 하나의 문자열을 설정합니다. 프롬프트 텍스트는 사용자가 배치한 위치에 유지됩니다. Claude Code는 각 나열된 붙여넣기를 `<pasted_content>` 태그로 감쌀 수 있으므로 Claude는 붙여넣은 자료를 사용자 자신의 단어와 구별할 수 있습니다. 프롬프트의 마지막 텍스트 블록의 붙여넣기만 래핑됩니다. TypeScript Agent SDK v0.3.280 이상이 필요합니다.1603Claude Code에 `message.content`의 어느 부분을 사용자가 붙여넣었는지 알려주려면 `inline_pastes`를 설정하세요. 입력한 것이 아니라 붙여넣은 것이며, 붙여넣기당 하나의 문자열입니다. 프롬프트 텍스트는 사용자가 배치한 위치에 유지됩니다. Claude Code는 각 나열된 붙여넣기를 `<pasted_content>` 태그로 감쌀 수 있으므로 Claude는 붙여넣은 자료를 사용자 자신의 단어와 구별할 수 있습니다. 프롬프트의 마지막 텍스트 블록의 붙여넣기만 감싸집니다. TypeScript Agent SDK v0.3.280 이상이 필요합니다.
1599 1604
1600<h3 id="sdkusermessagereplay">1605<h3 id="sdkusermessagereplay">
1601 `SDKUserMessageReplay`1606 `SDKUserMessageReplay`
1618};1623};
1619```1624```
1620 1625
1621세션 외부에서 주입된 사용자 턴으로, [`origin`](#sdkmessageorigin) 종류가 `peer` 또는 `channel`인 턴은 활성 턴 중에 전달되었는지 또는 세션이 유휴 상태일 때 새 턴을 시작했는지 여부에 관계없이 재생으로 스트림에 도달합니다. v2.1.207 이전에는 세션이 유휴 상태일 때 전달된 주입된 턴이 스트림에 메시지를 생성하지 않았고 트랜스크립트를 다시 읽을 때만 나타났습니다.1626세션 외부에서 주입된 사용자 턴(해당 [`origin`](#sdkmessageorigin) 종류가 `peer` 또는 `channel`인 경우)은 활성 턴 중에 전달되었는지 또는 세션이 유휴 상태일 때 새 턴을 시작했는지 여부에 관계없이 재생으로 스트림에 도달합니다. v2.1.207 이전에는 세션이 유휴 상태일 때 전달된 주입된 턴이 스트림에 메시지를 생성하지 않았으며 트랜스크립트를 다시 읽을 때만 나타났습니다.
1622 1627
1623<h3 id="sdkresultmessage">1628<h3 id="sdkresultmessage">
1624 `SDKResultMessage`1629 `SDKResultMessage`
1698 1703
1699결과의 여러 필드는 `subtype` 이상의 진단 세부 정보를 전달합니다:1704결과의 여러 필드는 `subtype` 이상의 진단 세부 정보를 전달합니다:
1700 1705
1701* `api_error_status`: 대화를 종료한 API 오류의 HTTP 상태 코드입니다. 턴이 API 오류 없이 끝났을 때 없거나 `null`입니다.1706* `api_error_status`: 대화를 종료한 API 오류의 HTTP 상태 코드입니다. 턴이 API 오류 없이 끝났을 때는 없거나 `null`입니다.
1702* `ttft_ms`: 첫 번째 완전한 어시스턴트 메시지가 도착할 때 측정된 밀리초 단위의 첫 번째 토큰까지의 시간입니다. 성공 분기에만 있습니다.1707* `ttft_ms`: 첫 번째 완전한 어시스턴트 메시지가 도착할 때 측정된 밀리초 단위의 첫 번째 토큰까지의 시간입니다. 성공 팔에만 있습니다.
1703* `ttft_stream_ms`: 응답 스트림이 열릴 때 첫 번째 `message_start` 스트림 이벤트까지의 밀리초 단위 시간입니다. `ttft_ms`보다 낮습니다. 두 사이의 간격은 첫 번째 메시지를 스트리밍하는 데 소요된 시간입니다. 성공 분기에만 있습니다.1708* `ttft_stream_ms`: 응답 스트림이 열릴 때 첫 번째 `message_start` 스트림 이벤트까지의 밀리초 단위 시간입니다. `ttft_ms`보다 낮습니다. 두 사이의 간격은 첫 번째 메시지를 스트리밍하는 데 소요된 시간입니다. 성공 팔에만 있습니다.
1704* `user_message_uuid`: 이 턴이 답변한 메시지의 `uuid`입니다. 어떤 결과가 이를 전달하는지는 [`user_message_uuid`](#user_message_uuid)를 참조하세요.1709* `user_message_uuid`: 이 턴이 답변한 메시지의 `uuid`입니다. 어느 결과가 이를 전달하는지는 [`user_message_uuid`](#user_message_uuid)를 참조하세요.
1705* `user_message_uuids`: Claude Code가 이 턴에서 답변한 모든 메시지의 `uuid`입니다. [`user_message_uuids`](#user_message_uuids)를 참조하세요.1710* `user_message_uuids`: Claude Code가 이 턴에서 답변한 모든 메시지의 `uuid`입니다. [`user_message_uuids`](#user_message_uuids)를 참조하세요.
1706* `resume_reason`: Claude Code가 재시작으로 인해 중단된 턴을 다시 실행한 이유입니다. 양쪽 분기에 있으며, 그러한 다시 실행에만 있습니다. [`resume_reason`](#resume_reason)을 참조하세요.1711* `resume_reason`: Claude Code가 재시작으로 중단된 후 이 턴을 다시 실행한 이유입니다. 두 팔에 모두 있으며, 이러한 다시 실행에만 있습니다. [`resume_reason`](#resume_reason)을 참조하세요.
1707*1712* `local_command`: 턴이 디스패치한 명령의 이름이며, `/compact` 같은 에이전트 루프에 들어가지 않고 명령이 완료된 턴의 성공 결과에 있습니다. 이름은 소문자 문자와 밑줄로 접혀 있으므로 `/reload-plugins`는 `reload_plugins`를 보고합니다. MCP 서버가 제공하는 명령과 기본 제공 `/mcp`는 `mcp`를 보고합니다. 직접 정의한 명령은 `custom`을 보고합니다. 인수는 절대 포함되지 않습니다. 에이전트 루프에 들어간 모든 턴과 명령을 실행하지 않은 전송에는 없습니다. Agent SDK v0.3.268 이상이 필요합니다.
1708 1713* `request_sent_wall_ms`: Claude Code가 API 요청을 디스패치한 에포크 밀리초이며, 서버 측 타임스탬프에 대한 조인입니다. [`user_message_uuid`](#user_message_uuid)와 함께만 있으며, `is_error` false인 성공 결과에서 API 요청을 보낸 턴에만 있습니다.
1709`local_command`: 턴이 발송한 명령의 이름으로, `/compact`와 같이 에이전트 루프에 들어가지 않고 명령이 완료된 턴의 성공 결과에서만 있습니다. 이름은 소문자 문자와 밑줄로 접혀 있으므로 `/reload-plugins`는 `reload_plugins`를 보고합니다. MCP 서버가 제공하는 명령과 기본 제공 `/mcp`는 `mcp`를 보고합니다. 자신이 정의한 명령은 `custom`을 보고합니다. 인수는 절대 포함되지 않습니다. 에이전트 루프에 들어간 모든 턴과 명령을 실행하지 않은 전송에서 없습니다. Agent SDK v0.3.268 이상이 필요합니다.1714* `first_content_frame_ms`: 첫 번째 `content_block_start` 또는 `content_block_delta` 스트림 이벤트까지의 밀리초 단위 시간이며, 생각 블록을 콘텐츠로 계산합니다. 성공 팔에만 있으며, `is_error`가 false일 때만 있습니다. Agent SDK v0.3.260 이상이 필요합니다.
1710 1715* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: 턴의 첫 번째 스트림 이벤트를 업로드하기 위한 타이밍입니다. Claude Code는 [클라우드 세션](/docs/ko/claude-code-on-the-web) 같은 claude.ai로 스트리밍하는 세션에서만 기록하며, `query()`가 생성하는 결과는 이를 전달하지 않습니다. Agent SDK v0.3.260 이상이 필요합니다.
1711* `request_sent_wall_ms`: Claude Code가 API 요청을 발송한 에포크 밀리초로, 서버 측 타임스탬프와 조인하기 위한 것입니다. [`user_message_uuid`](#user_message_uuid)와 함께만 있으며, `is_error` false인 성공 결과에서 턴이 API 요청을 보냈을 때만 있습니다.1716* `usage`: 메인 에이전트 루프만 해당합니다. 서브에이전트 및 보조 모델 호출을 제외하며, 스트리밍 입력 세션에서는 턴당입니다. 토큰/비용 회계에는 `modelUsage`를 선호하세요.
1712*1717* `modelUsage`: 이 `query()` 호출 중에 쿼리 파이프라인을 통해 수행된 모든 모델 호출에 대한 모델별 합계이며, 메인 루프, 서브에이전트, 압축 및 Workflow 에이전트 같은 내부 호출을 포함합니다. 권한 분류자 및 토큰 계산 요청 같은 해당 파이프라인 외부의 도우미 호출은 제외됩니다. 세션을 재개하는 호출도 [세션의 이전 호출에서 복원된 모델별 합계](/docs/ko/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls)를 계산합니다. 스트리밍 입력 세션에서 합계는 턴 전체에 누적되므로 결과 전체에서 합산하는 대신 최신 결과를 읽으세요. 재설정에 대해서는 [스트리밍 입력 모드에서 비용 추적](/docs/ko/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode)을 참조하고, 0으로 설정된 결과에 대해서는 [세션 충돌 후 합계 복구](/docs/ko/agent-sdk/cost-tracking#recover-totals-after-a-session-crash)를 참조하세요.
1713 1718* `total_cost_usd`: `modelUsage`와 동일한 호출을 포함하고 동일한 지점에서 재설정되는 누적 예상 비용(USD)입니다. 세션을 재개하는 호출도 [세션의 이전 호출에서 복원된 합계](/docs/ko/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls)를 계산합니다. 이는 추정치이지 청구 명세서가 아닙니다. 정확도 주의 사항은 [비용 및 사용량 추적](/docs/ko/agent-sdk/cost-tracking)을 참조하세요.
1714`first_content_frame_ms`: 첫 번째 `content_block_start` 또는 `content_block_delta` 스트림 이벤트까지의 밀리초 단위 시간으로, 생각 블록을 콘텐츠로 계산합니다. 성공 분기에만 있으며, `is_error`가 false일 때만 있습니다. Agent SDK v0.3.260 이상이 필요합니다.1719* `queued_turn_count`: Claude Code가 결과를 생성했을 때 `origin: { kind: "human" }`으로 보낸 메시지 중 여전히 대기 중인 메시지의 수입니다. `0`과 없는 필드가 무엇을 의미하는지는 [`queued_turn_count`](#queued_turn_count)를 참조하세요.
1715 1720* `result_index`: 이 결과가 프로세스가 작성하는 모든 결과에서 0부터 계산하여 실행의 전달 순서에서 어디에 떨어지는지입니다. 두 팔에 모두 있습니다. 쓰기가 실패한 결과도 여전히 번호를 소비하므로 시퀀스의 간격은 결과가 손실되었음을 의미합니다. Agent SDK v0.3.268 이상이 필요합니다.
1716*1721* `startup_failure_reason`: Claude Code가 알려진 시작 실패로 종료하기 전에 작성하는 `error_during_execution` 결과에서 Claude Code가 시작을 거부한 이유입니다. 값과 어느 실패가 이를 전달하는지는 [`startup_failure_reason`](#startup_failure_reason)을 참조하세요. Agent SDK v0.3.274 이상이 필요합니다.
1717
1718`first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: 턴의 첫 번째 스트림 이벤트를 업로드하기 위한 타이밍입니다. Claude Code는 [클라우드 세션](/docs/ko/claude-code-on-the-web)과 같이 claude.ai로 스트리밍하는 세션에서만 기록하며, `query()`가 생성하는 결과는 이를 전달하지 않습니다. Agent SDK v0.3.260 이상이 필요합니다.
1719
1720* `usage`: 메인 에이전트 루프만 해당합니다. 서브에이전트 및 보조 모델 호출을 제외하며, 스트리밍 입력 세션에서는 턴당입니다. 토큰/비용 회계를 위해 `modelUsage`를 선호합니다.
1721* `modelUsage`: 이 `query()` 호출 중에 쿼리 파이프라인을 통해 수행된 모든 모델 호출에 대한 모델별 합계로, 메인 루프, 서브에이전트, 압축 및 Workflow 에이전트와 같은 내부 호출을 포함합니다. 권한 분류자 및 토큰 계산 요청과 같은 해당 파이프라인 외부의 도우미 호출은 제외됩니다. 세션을 재개하는 호출은 [세션의 이전 호출에서 복원된 모델별 합계](/docs/ko/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls)도 계산합니다. 스트리밍 입력 세션에서 합계는 턴 전체에 누적되므로 결과 전체에서 합산하는 대신 최신 결과를 읽으세요. 재설정에 대해서는 [스트리밍 입력 모드에서 비용 추적](/docs/ko/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode)을 참조하고 0으로 설정된 결과에 대해서는 [세션 충돌 후 합계 복구](/docs/ko/agent-sdk/cost-tracking#recover-totals-after-a-session-crash)를 참조하세요.
1722* `total_cost_usd`: USD의 누적 예상 비용으로, `modelUsage`와 동일한 호출을 포함하고 동일한 지점에서 재설정됩니다. 세션을 재개하는 호출은 [세션의 이전 호출에서 복원된 합계](/docs/ko/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls)도 계산합니다. 이는 청구 명세서가 아닌 추정치입니다. 정확도 주의 사항은 [비용 및 사용량 추적](/docs/ko/agent-sdk/cost-tracking)을 참조하세요.
1723* `queued_turn_count`: Claude Code가 결과를 생성했을 때 여전히 대기 중인 `origin: { kind: "human" }`으로 보낸 메시지의 수입니다. `0`과 없는 필드가 무엇을 의미하는지는 [`queued_turn_count`](#queued_turn_count)를 참조하세요.
1724*
1725
1726`result_index`: 이 결과가 실행의 전달 순서에서 어디에 떨어지는지로, 프로세스가 작성하는 모든 결과에서 0부터 계산합니다. 양쪽 분기에 있습니다. 쓰기가 실패한 결과도 번호를 소비하므로 시퀀스의 간격은 결과가 손실되었음을 의미합니다. Agent SDK v0.3.268 이상이 필요합니다.
1727
1728*
1729
1730`startup_failure_reason`: Claude Code가 시작을 거부한 이유로, 알려진 시작 실패 전에 작성하는 `error_during_execution` 결과에서 확인할 수 있습니다. 값과 어떤 실패가 이를 전달하는지는 [`startup_failure_reason`](#startup_failure_reason)을 참조하세요. Agent SDK v0.3.274 이상이 필요합니다.
1731
1732* `terminal_reason`: 루프가 끝난 이유입니다. `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, 또는 `"turn_setup_failed"` 중 하나입니다.1722* `terminal_reason`: 루프가 끝난 이유입니다. `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, 또는 `"turn_setup_failed"` 중 하나입니다.
1733* `fast_mode_state`: `"on"`, `"off"`, 또는 `"cooldown"` 중 하나입니다.1723* `fast_mode_state`: `"on"`, `"off"`, 또는 `"cooldown"` 중 하나입니다.
1734* `fast_mode_disabled_reason`: [빠른 모드](/docs/ko/fast-mode)를 지금 사용할 수 없는 이유입니다. 빠른 모드를 차단하는 것이 없을 때는 없지만, 요청이 여전히 표준 속도로 실행될 수 있습니다. 빠른 모드 속도 제한 후 쿨다운 중에 Claude Code는 이유 코드 없이 `fast_mode_state: "cooldown"`을 보고하고 쿨다운이 만료되면 빠른 모드를 다시 활성화합니다. Claude Code v2.1.219 이상이 필요합니다.1724* `fast_mode_disabled_reason`: [빠른 모드](/docs/ko/fast-mode)를 지금 사용할 수 없는 이유입니다. 빠른 모드를 차단하는 것이 없을 때는 없지만, 요청이 여전히 표준 속도로 실행될 수 있습니다. 빠른 모드 속도 제한 후 쿨다운 중에 Claude Code는 `fast_mode_state: "cooldown"`을 보고하며 이유 코드 없이 쿨다운이 만료되면 빠른 모드를 다시 활성화합니다. Claude Code v2.1.219 이상이 필요합니다.
1735 1725
1736이유 코드를 사용하여 자신의 UI에서 빠른 모드가 꺼진 이유를 설명하는 대신 가용성을 다시 도출합니다. 각 코드는 빠른 모드를 차단한 검사의 이름을 지정합니다:1726이유 코드를 사용하여 자신의 UI에서 빠른 모드가 꺼진 이유를 설명하는 대신 가용성을 다시 도출하세요. 각 코드는 빠른 모드를 차단한 검사의 이름을 지정합니다:
1737 1727
1738| 이유 코드 | 의미 |1728| 이유 코드 | 의미 |
1739| - | - |1729| - | - |
1745| `not_first_party` | 세션이 Anthropic API 이외의 제공자를 사용함 |1735| `not_first_party` | 세션이 Anthropic API 이외의 제공자를 사용함 |
1746| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/ko/env-vars)이 설정됨 |1736| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/ko/env-vars)이 설정됨 |
1747| `model_not_allowed` | 빠른 모드 Opus 모델이 조직의 [`availableModels`](/docs/ko/model-config#restrict-model-selection) 허용 목록에 없음 |1737| `model_not_allowed` | 빠른 모드 Opus 모델이 조직의 [`availableModels`](/docs/ko/model-config#restrict-model-selection) 허용 목록에 없음 |
1748| `sdk_opt_in_required` | 세션이 빠른 모드에 옵트인하지 않음: [`settings`](#options) 옵션 또는 [`applyFlagSettings()`](#applyflagsettings)를 통해 `fastMode: true`를 전달합니다 |1738| `sdk_opt_in_required` | 세션이 빠른 모드에 옵트인하지 않음: [`settings`](#options) 옵션 또는 [`applyFlagSettings()`](#applyflagsettings)를 통해 `fastMode: true`를 전달하세요 |
1749| `pending` | 가용성 검사가 아직 완료되지 않음 |1739| `pending` | 가용성 검사가 아직 완료되지 않음 |
1750 1740
1751동일한 필드 쌍이 [`SDKSystemMessage`](#sdksystemmessage)와 [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse)에 나타나므로 첫 번째 턴 전에 빠른 모드 상태를 읽을 수 있습니다.1741동일한 필드 쌍이 [`SDKSystemMessage`](#sdksystemmessage)와 [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse)에 나타나므로 첫 번째 턴 전에 빠른 모드 상태를 읽을 수 있습니다.
1752 1742
1753`origin` 필드는 이 결과를 트리거한 사용자 메시지의 [`SDKMessageOrigin`](#sdkmessageorigin)을 전달합니다. SDK가 완료된 백그라운드 작업과 같은 합성 후속 턴을 주입할 때, 결과 `SDKResultMessage`는 `origin: { kind: "task-notification" }`을 전달합니다. 트리거가 발생하고 서버 검증 메시지가 다른 세션에서 도착하는 루틴은 [작업 알림 서브종류](#task-notification-subkinds)에 설명된 `subkind`와 함께 이 종류도 도착합니다. `kind`를 확인하여 프롬프트에 답변하는 결과를 라우팅하거나 억제하기 전에 주입된 후속 작업과 구별합니다. 애플리케이션이 [예약된 실행을 선언](#declare-a-scheduled-run)하면 해당 결과도 `kind: "task-notification"`을 전달하므로 `kind`만으로 억제하지 마세요.1743`origin` 필드는 이 결과를 트리거한 사용자 메시지의 [`SDKMessageOrigin`](#sdkmessageorigin)을 전달합니다. SDK가 완료된 배경 작업 같은 합성 후속 턴을 주입할 때, 결과 `SDKResultMessage`는 `origin: { kind: "task-notification" }`을 전달합니다. 트리거가 발생하고 서버 검증 메시지가 다른 세션에서 도착하는 루틴도 이 종류와 함께 도착하며, 각각 [작업 알림 서브종류](#task-notification-subkinds)에 설명된 `subkind`를 가집니다. `kind`를 확인하여 프롬프트에 답변하는 결과를 주입된 후속 조치와 구별한 후 라우팅하거나 억제하세요. 애플리케이션이 [예약된 실행을 선언](#declare-a-scheduled-run)하면, 해당 결과도 `kind: "task-notification"`을 전달하므로 `kind`만으로 억제하지 마세요.
1754 1744
1755여러 백그라운드 작업 완료가 함께 대기 중일 때, Claude Code는 각각 하나의 턴이 아니라 하나의 턴에서 답변할 수 있습니다. 각 완료는 여전히 이 원점으로 자신의 결과를 생성합니다. Claude Code가 함께 답변하는 완료 중 마지막을 제외한 모든 것은 순서대로 `num_turns: 0`인 빈 결과를 생성하고, 마지막 것의 결과는 모두에 답변하는 턴을 전달합니다.1745여러 배경 작업 완료가 함께 대기 중일 때, Claude Code는 각 턴이 아니라 하나의 턴에서 답변할 수 있습니다. 각 완료는 여전히 이 원점을 가진 자신의 결과를 생성합니다. Claude Code가 함께 답변하는 완료 중 마지막을 제외한 모든 것은 순서대로 `num_turns: 0`인 빈 결과를 생성하며, 마지막 것의 결과는 모두에 답변하는 턴을 전달합니다.
1756 1746
1757필드는 시작 오류와 같이 사용자 턴 전에 내보낸 결과에는 없습니다.1747필드는 시작 오류 같은 사용자 턴 전에 내보낸 결과에는 없습니다.
1758 1748
1759`PreToolUse` 훅이 `permissionDecision: "defer"`를 반환할 때, 결과는 `stop_reason: "tool_deferred"`를 가지며 `deferred_tool_use`는 보류 중인 도구의 `id`, `name`, `input`을 전달합니다. 이 필드를 읽어 자신의 UI에서 요청을 표시한 다음 동일한 `session_id`로 재개하여 계속합니다. 전체 왕복은 [나중을 위해 도구 호출 연기](/docs/ko/hooks#defer-a-tool-call-for-later)를 참조하세요.1749`PreToolUse` 훅이 `permissionDecision: "defer"`를 반환할 때, 결과는 `stop_reason: "tool_deferred"`를 가지며 `deferred_tool_use`는 보류 중인 도구의 `id`, `name`, `input`을 전달합니다. 이 필드를 읽어 자신의 UI에서 요청을 표시한 다음 동일한 `session_id`로 재개하여 계속하세요. 전체 왕복은 [나중에 도구 호출 연기](/docs/ko/hooks#defer-a-tool-call-for-later)를 참조하세요.
1760 1750
1761<h4 id="user_message_uuid">1751<h4 id="user_message_uuid">
1762 `user_message_uuid`1752 `user_message_uuid`
1763</h4>1753</h4>
1764 1754
1765턴이 답변하는 [`SDKUserMessage`](#sdkusermessage)의 `uuid`로, Claude Code의 회신을 보낸 메시지와 일치시킬 수 있도록 에코됩니다. Claude Code는 메시지에 하나를 설정한 경우에만 `uuid`를 에코합니다. 필드는 `SDKUserMessage`에서 선택 사항이며, `query()`에 전달된 문자열 프롬프트는 없습니다.1755턴이 답변하는 [`SDKUserMessage`](#sdkusermessage)의 `uuid`이며, Claude Code의 회신을 보낸 메시지와 일치시킬 수 있도록 에코됩니다. Claude Code는 메시지에 설정한 경우에만 `uuid`를 에코합니다. 필드는 `SDKUserMessage`에서 선택 사항이며, `query()`에 전달된 문자열 프롬프트는 없습니다.
1766 1756
1767턴이 답변하는 메시지는 턴이 시작된 방식에 따라 다릅니다:1757턴이 답변하는 메시지는 턴이 시작된 방식에 따라 다릅니다:
1768 1758
1769* **보낸 일반 메시지**, 즉 `isSynthetic: true` 없음: 턴은 전체 실행 동안 해당 메시지에 답변합니다. 여러 메시지를 가깝게 보내면 Claude Code는 이를 하나의 턴으로 병합할 수 있으며, 필드는 마지막 메시지의 `uuid`만 전달합니다. 병합된 메시지 중 하나에 회신을 일치시키려면 [`user_message_uuids`](#user_message_uuids)를 사용합니다.1759* **보낸 일반 메시지**(즉, `isSynthetic: true` 없음): 턴은 전체 실행 동안 해당 메시지에 답변합니다. 여러 메시지를 가깝게 보낼 때, Claude Code는 이를 하나의 턴으로 병합할 수 있으며, 필드는 마지막 메시지의 `uuid`만 전달합니다. 병합된 메시지 중 하나와 회신을 일치시키려면 [`user_message_uuids`](#user_message_uuids)를 사용하세요.
1770*1760* **`isSynthetic: true`로 보낸 메시지**: 턴은 처음에 해당 메시지에 답변합니다. Claude Code가 도구 호출 사이에 일반 메시지를 선택하면, 턴은 그 이후로 선택된 메시지에 답변합니다. 합성 메시지의 `uuid`를 에코하려면 Agent SDK v0.3.265 이상이 필요합니다. 이전 버전은 합성 턴에서 아무것도 에코하지 않습니다.
1771 1761* **Claude Code가 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ko/env-vars) 아래에서 중단된 턴을 다시 실행하기 위해 생성하는 프롬프트**: 중단된 턴의 마지막 프롬프트가 보낸 일반 메시지일 때, 턴을 열었는지 또는 Claude Code가 턴 중에 선택했는지 여부에 관계없이, 다시 실행은 처음에 해당 메시지에 답변합니다. [`resume_reason`](#resume_reason)은 중단된 시도의 다시 실행 프레임을 알려줍니다. 마지막 프롬프트가 보낸 일반 메시지가 아닐 때, 다시 실행은 처음에 보낸 메시지에 답변하지 않습니다. Claude Code가 도구 호출 사이에 일반 메시지를 선택하면, 턴은 그 이후로 선택된 메시지에 답변합니다. 중단된 턴의 프롬프트를 에코하려면 Agent SDK v0.3.268 이상이 필요합니다.
1772**`isSynthetic: true`로 보낸 메시지**: 턴은 처음에 해당 메시지에 답변합니다. Claude Code가 도구 호출 사이에 일반 메시지를 선택하면 턴은 그 이후로 선택된 메시지에 답변합니다. 합성 메시지의 `uuid` 에코는 Agent SDK v0.3.265 이상이 필요합니다. 이전 버전은 합성 턴에서 아무것도 에코하지 않습니다.1762* **Claude Code가 자체적으로 생성한 다른 프롬프트**: 턴은 처음에 보낸 메시지에 답변하지 않으며 프레임은 에코를 전달하지 않습니다. Claude Code가 도구 호출 사이에 일반 메시지를 선택하면, 턴은 그 이후로 해당 메시지에 답변합니다. 선택 에코는 Agent SDK v0.3.265 이상이 필요합니다. 이전 버전은 이러한 턴에서 아무것도 에코하지 않습니다.
1773
1774*
1775
1776**Claude Code가 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ko/env-vars) 아래에서 다시 실행하기 위해 생성하는 프롬프트**: 중단된 턴의 마지막 프롬프트가 보낸 일반 메시지일 때, 턴을 열었는지 또는 Claude Code가 턴 중에 선택했는지 여부에 관계없이 다시 실행은 처음에 해당 메시지에 답변합니다. [`resume_reason`](#resume_reason)은 중단된 시도의 다시 실행 프레임을 말합니다. 마지막 프롬프트가 보낸 일반 메시지가 아닐 때, 다시 실행은 처음에 보낸 메시지에 답변하지 않습니다. Claude Code가 도구 호출 사이에 보낸 일반 메시지를 선택하면 턴은 그 이후로 선택된 메시지에 답변합니다. 중단된 턴의 프롬프트 에코는 Agent SDK v0.3.268 이상이 필요합니다.
1777
1778*
1779
1780**Claude Code가 자체 생성한 다른 프롬프트**: 턴은 처음에 보낸 메시지에 답변하지 않으며 프레임은 에코를 전달하지 않습니다. Claude Code가 도구 호출 사이에 보낸 일반 메시지를 선택하면 턴은 그 이후로 해당 메시지에 답변합니다. 픽업 에코는 Agent SDK v0.3.265 이상이 필요합니다. 이전 버전은 이러한 턴에서 아무것도 에코하지 않습니다.
1781 1763
1782Claude Code는 세 가지 종류의 프레임에서 답변된 메시지의 `uuid`를 에코합니다:1764Claude Code는 세 가지 종류의 프레임에서 답변된 메시지의 `uuid`를 에코합니다:
1783 1765
1784* **결과**: 메시지에 답변한 턴의 모든 결과입니다. Agent SDK v0.3.265 이상에서 모든 그러한 결과가 이를 전달합니다. v0.3.265 이전에는 일반 메시지가 시작한 턴의 성공 결과가 턴이 API 요청을 보내지 않았거나 연기된 도구 호출로 끝났을 때 이를 전달하지 않았습니다. v0.3.246 이전에는 오류 결과도 이를 전달하지 않았으며, v0.3.216 이전에는 모든 결과가 이를 전달하지 않았습니다.1766* **결과**: 보낸 메시지에 답변한 턴의 모든 결과입니다. Agent SDK v0.3.265 이상에서 모든 이러한 결과가 이를 전달합니다. v0.3.265 이전에는 일반 메시지가 시작한 턴의 성공 결과가 턴이 API 요청을 보내지 않았거나 연기된 도구 호출로 끝났을 때 이를 전달하지 않았습니다. v0.3.246 이전에는 오류 결과도 이를 전달하지 않았으며, v0.3.216 이전에는 모든 결과가 이를 전달하지 않았습니다.
1785*1767* **턴의 첫 번째 회신**: 첫 번째 [어시스턴트 메시지](#sdkassistantmessage) 또는 `includePartialMessages`를 사용하면 `event.type`이 `ping`이 아닌 첫 번째 [스트림 이벤트](#sdkpartialassistantmessage)이므로 결과가 도착하기 전에 회신을 바인딩할 수 있습니다. 턴이 아무것도 스트리밍하지 않을 때, Claude Code는 대신 첫 번째 어시스턴트 메시지에 설정합니다. 첫 번째 회신 에코는 Agent SDK v0.3.246 이상이 필요합니다. 턴 중에 턴이 답변하는 메시지가 변경될 때, 변경 후 첫 번째 회신도 필드를 전달하며, Agent SDK v0.3.265 이상에서 필드를 전달합니다. 이전 버전은 턴당 하나의 회신 프레임에 설정합니다.
1786 1768* **턴의 모든 [`thinking_tokens`](#sdkthinkingtokensmessage) 프레임**: 턴의 첫 번째 회신을 기다리지 않고 보낸 메시지에 생각 진행을 귀속시킬 수 있습니다. Agent SDK v0.3.260 이상이 필요합니다.
1787**턴의 첫 번째 회신**: 첫 번째 [어시스턴트 메시지](#sdkassistantmessage) 또는 `includePartialMessages`를 사용하면 `event.type`이 `ping`이 아닌 첫 번째 [스트림 이벤트](#sdkpartialassistantmessage)로, 결과가 도착하기 전에 회신을 바인드할 수 있습니다. 턴이 아무것도 스트리밍하지 않으면 Claude Code는 대신 첫 번째 어시스턴트 메시지에 설정합니다. 첫 번째 회신 에코는 Agent SDK v0.3.246 이상이 필요합니다. 턴이 답변하는 메시지가 중간에 변경되면 변경 후 첫 번째 회신이 필드를 전달하며, Agent SDK v0.3.265 이상에서 필요합니다. 이전 버전은 턴당 하나의 회신 프레임에 설정합니다.
1788
1789*
1790
1791**턴의 모든 [`thinking_tokens`](#sdkthinkingtokensmessage) 프레임**: 턴의 첫 번째 회신을 기다리지 않고 보낸 메시지에 생각 진행을 귀속시킬 수 있습니다. Agent SDK v0.3.260 이상이 필요합니다.
1792 1769
1793Claude Code는 다음 경우에 필드를 생략합니다:1770Claude Code는 다음 경우에 필드를 생략합니다:
1794 1771
1795* 첫 번째 회신 이외의 회신 프레임1772* 첫 번째 회신 이외의 회신 프레임
1796* 서브에이전트 프레임1773* 서브에이전트 프레임
1797* `uuid`가 있는 메시지에 답변하지 않는 턴: 턴이 하나 없이 보낸 메시지에 답변했거나 Claude Code가 턴을 시작했고 하나가 있는 일반 메시지를 선택하지 않았습니다1774* 보낸 메시지에 답변하지 않거나 `uuid` 없이 보낸 메시지에 답변하는 턴
1798* 보낸 메시지에 답변하지 않는 결과로, 충돌한 워커 프로세스 후 0으로 설정된 결과와 같습니다1775* 충돌한 워커 프로세스 후 0으로 설정된 결과 같은 보낸 메시지에 답변하지 않는 결과
1799 1776
1800<h4 id="user_message_uuids">1777<h4 id="user_message_uuids">
1801 `user_message_uuids`1778 `user_message_uuids`
1802</h4>1779</h4>
1803 1780
1804Claude Code가 이 턴에서 답변한 모든 메시지의 `uuid`입니다. 여러 메시지를 가깝게 보내면 Claude Code는 이를 하나의 턴으로 병합할 수 있으며, `user_message_uuid`는 마지막 메시지만 명명합니다. 병합된 메시지 중 하나에 회신을 일치시키려면 이 목록의 어디든지 해당 메시지의 `uuid`를 찾으세요. Agent SDK v0.3.259 이상이 필요합니다.1781Claude Code가 이 턴에서 답변한 모든 메시지의 `uuid`입니다. 여러 메시지를 가깝게 보낼 때, Claude Code는 이를 하나의 턴으로 병합할 수 있으며, `user_message_uuid`는 마지막 메시지만 명명합니다. 병합된 메시지 중 하나와 회신을 일치시키려면, 이 목록의 어디든 해당 메시지의 `uuid`를 찾으세요. Agent SDK v0.3.259 이상이 필요합니다.
1805 1782
1806Claude Code는 해당 필드를 전달하는 각 회신 프레임과 결과에서 `user_message_uuid`와 함께 목록을 설정합니다. `user_message_uuid`를 전달하는 전체 프레임 세트와 각각이 필요로 하는 버전은 [`user_message_uuid`](#user_message_uuid)를 참조하세요. 목록은 항상 `user_message_uuid`를 포함하고 최대 64개 항목을 보유합니다.1783Claude Code는 해당 필드를 전달하는 각 회신 프레임과 결과에서 `user_message_uuid`와 함께 목록을 설정합니다. 답변된 메시지의 `uuid`를 에코하는 턴 프레임의 전체 집합과 각각이 필요로 하는 버전은 [`user_message_uuid`](#user_message_uuid)를 참조하세요. 목록은 항상 `user_message_uuid`를 포함하며 최대 64개 항목을 보유합니다.
1807 1784
1808Claude Code가 턴이 실행되는 동안 보낸 일반 메시지를 선택하면 해당 메시지의 `uuid`를 결과의 목록에 추가합니다.1785Claude Code가 턴이 실행되는 동안 보낸 일반 메시지를 선택할 때, 해당 메시지의 `uuid`를 결과의 목록에 추가합니다.
1809 1786
1810첫 번째 회신 또는 결과가 목록 없이 `user_message_uuid`를 전달하면 이전 Claude Code 버전에서 나온 것이므로 단일 필드로 돌아가세요.1787첫 번째 회신이나 결과가 목록 없이 `user_message_uuid`를 전달할 때, 이전 Claude Code 버전에서 나온 것이므로 단일 필드로 돌아가세요.
1811 1788
1812<h4 id="resume_reason">1789<h4 id="resume_reason">
1813 `resume_reason`1790 `resume_reason`
1814</h4>1791</h4>
1815 1792
1816Claude Code가 재시작으로 인해 중단된 턴을 다시 실행한 이유입니다. Claude Code는 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ko/env-vars) 아래에서 다시 실행한 턴에 이 필드를 설정하므로 다시 실행의 회신과 결과를 중단된 시도의 것과 구별할 수 있습니다. Agent SDK v0.3.268 이상이 필요합니다.1793Claude Code가 재시작 후 이 턴을 다시 실행한 이유입니다. Claude Code는 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ko/env-vars) 아래에서 다시 실행한 턴에 이 필드를 설정하므로 다시 실행의 회신과 결과를 중단된 시도와 구별할 수 있습니다. Agent SDK v0.3.268 이상이 필요합니다.
1817 1794
1818Claude Code는 두 가지 종류의 프레임에 필드를 설정합니다:1795Claude Code는 두 가지 종류의 프레임에 필드를 설정합니다:
1819 1796
1820* **다시 실행의 결과**: 성공 및 오류 분기 모두에서, 결과가 `user_message_uuid`를 전달하는지 여부에 관계없이.1797* **다시 실행의 결과**: 성공 및 오류 팔 모두에서, 결과가 `user_message_uuid`를 전달하는지 여부에 관계없이.
1821* **다시 실행의 회신 프레임**: [`user_message_uuid`](#user_message_uuid)를 전달하는 것들.1798* **다시 실행의 회신 프레임**: [`user_message_uuid`](#user_message_uuid)를 전달하는 것들.
1822 1799
1823값은 `interrupted_turn`과 같이 턴이 다시 실행된 이유를 명명하는 짧은 소문자 토큰입니다. 필드는 다른 모든 턴에는 없습니다.1800값은 `interrupted_turn` 같은 턴이 다시 실행된 이유를 명명하는 짧은 소문자 토큰입니다. 필드는 다른 모든 턴에는 없습니다.
1824 1801
1825<h4 id="queued_turn_count">1802<h4 id="queued_turn_count">
1826 `queued_turn_count`1803 `queued_turn_count`
1827</h4>1804</h4>
1828 1805
1829Claude Code가 결과를 생성했을 때 [`origin: { kind: "human" }`](#sdkmessageorigin)으로 보낸 메시지 중 여전히 명령 큐에서 대기 중인 메시지의 수입니다. Agent SDK v0.3.242 이상이 필요합니다.1806Claude Code가 결과를 생성했을 때 [`origin: { kind: "human" }`](#sdkmessageorigin)으로 보낸 메시지 중 명령 큐에서 여전히 대기 중인 메시지의 수입니다. Agent SDK v0.3.242 이상이 필요합니다.
1830 1807
1831`0`과 없는 필드가 무엇을 의미하는지:1808`0`과 없는 필드가 무엇을 의미하는지:
1832 1809
1833* **`0`**: Claude Code는 해당 `origin` 없이 보낸 메시지를 계산하지 않으며, 작업 알림을 계산하지 않으므로 턴이 여전히 따를 수 있습니다.1810* **`0`**: Claude Code는 해당 `origin` 없이 보낸 메시지를 계산하지 않으며, 작업 알림을 계산하지 않으므로 턴이 여전히 따를 수 있습니다.
1834* **없음**: Claude Code가 충돌 또는 치명적 시작 오류 후 내보내는 최종 결과는 필드를 생략하며, [0으로 설정된 합계를 전달할 수 있습니다](/docs/ko/agent-sdk/cost-tracking#recover-totals-after-a-session-crash).1811* **없음**: Claude Code가 충돌이나 치명적 시작 오류 후 내보내는 최종 결과는 필드를 생략하며, [0으로 설정된 합계를 전달할 수 있습니다](/docs/ko/agent-sdk/cost-tracking#recover-totals-after-a-session-crash).
1835 1812
1836<h4 id="startup_failure_reason">1813<h4 id="startup_failure_reason">
1837 `startup_failure_reason`1814 `startup_failure_reason`
1838</h4>1815</h4>
1839 1816
1840Claude Code가 시작을 거부한 이유로, 애플리케이션이 재시도 대신 수정을 제공할 수 있습니다. Claude Code는 알려진 시작 실패 전에 종료하기 전에 작성하는 `error_during_execution` 결과에 설정합니다. 해당 결과는 0으로 설정된 합계를 전달하며, 해당 `errors` 배열은 stderr와 동일한 텍스트를 전달합니다. 필드는 다른 모든 결과에는 없습니다. Agent SDK v0.3.274 이상이 필요합니다.1817Claude Code가 시작을 거부한 이유이므로 애플리케이션이 재시도 대신 수정을 제공할 수 있습니다. Claude Code는 알려진 시작 실패로 종료하기 전에 작성하는 `error_during_execution` 결과에 설정합니다. 해당 결과는 0으로 설정된 합계를 전달하며, 해당 `errors` 배열은 stderr과 동일한 텍스트를 전달합니다. 필드는 다른 모든 결과에는 없습니다. Agent SDK v0.3.274 이상이 필요합니다.
1841 1818
1842모든 `SDKStartupFailureReason` 값에 대해 이 결과를 받으려면 [`env`](#options)에서 `CLAUDE_CODE_STARTUP_FAILURE_RESULTS`를 `1`로 설정합니다. 해당 변수 없이 Claude Code는 이러한 실패에 대해서만 결과를 작성하고 나머지는 stderr 출력, 0이 아닌 종료, 결과 메시지 없음으로 끝납니다:1819모든 `SDKStartupFailureReason` 값에 대해 이 결과를 받으려면 [`env`](#options)에서 `CLAUDE_CODE_STARTUP_FAILURE_RESULTS`를 `1`로 설정하세요. 해당 변수 없이, Claude Code는 이러한 실패에 대해서만 결과를 작성하며, 나머지는 stderr 출력, 0이 아닌 종료, 결과 메시지 없음으로 끝납니다:
1843 1820
1844* Claude Code가 [세션을 워크트리로 반환할 수 없기](/docs/ko/worktrees#the-session-resumes-outside-its-worktree) 때문에 중지하는 재개로, `worktree_unverified` 또는 `worktree_resume_refused`입니다. 해당 섹션은 어떤 오류가 어떤 값을 전달하는지 말합니다.1821* Claude Code가 [세션을 워크트리로 반환할 수 없기 때문에](/docs/ko/worktrees#the-session-resumes-outside-its-worktree) 중지하는 재개이며, `worktree_unverified` 또는 `worktree_resume_refused`입니다. 해당 섹션은 어느 오류가 어느 값을 전달하는지 말합니다.
1845* 백그라운드 세션이 보유하는 대화의 거부된 [`continue`](#options)로, `session_held_by_background`입니다. 그러한 대화의 거부된 [`resume`](#options)의 경우 Claude Code는 변수가 설정되었을 때만 결과를 작성합니다.1822* 배경 세션이 보유하는 대화의 거부된 [`continue`](#options)이며, `session_held_by_background`입니다. 이러한 대화의 거부된 [`resume`](#options)의 경우, Claude Code는 변수가 설정되었을 때만 결과를 작성합니다.
1846 1823
1847```typescript theme={null}1824```typescript theme={null}
1848type SDKStartupFailureReason =1825type SDKStartupFailureReason =
1849 | "org_pin_api_key_conflict"1826 | "org_pin_api_key_conflict"
1827 | "provider_not_allowed"
1850 | "org_verify_failed"1828 | "org_verify_failed"
1851 | "org_pin_mismatch"1829 | "org_pin_mismatch"
1852 | "managed_settings_invalid"1830 | "managed_settings_invalid"
1868 1846
1869| 값 | 세션을 중지한 것 |1847| 값 | 세션을 중지한 것 |
1870| :- | :- |1848| :- | :- |
1871| `org_pin_api_key_conflict` | 관리 설정이 [첫 번째 당사자 또는 Cloud 게이트웨이 로그인](/docs/ko/authentication#restrict-login-to-your-organization)을 요구하며, Anthropic API 키, 인증 토큰 또는 `apiKeyHelper`가 대신 구성됨 |1849| `org_pin_api_key_conflict` | 관리 설정이 [첫 번째 당사자 또는 Cloud 게이트웨이 로그인](/docs/ko/authentication#restrict-login-to-your-organization)을 요구하며, Anthropic API 키, 인증 토큰, 또는 `apiKeyHelper`가 대신 구성됨 |
1850| `provider_not_allowed` | 관리 설정이 [이 머신이 사용할 수 있는 API 제공자를 나열](/docs/ko/settings-reference#allowedproviders)하며, 세션이 나열되지 않은 제공자 또는 설정이 고정하지 않은 엔드포인트에 대해 설정됨. Claude Code v2.1.285 이상이 필요함 |
1872| `org_verify_failed` | 로그인의 조직을 핀에 대해 확인할 수 없음(예: 네트워크 실패 또는 취소된 토큰) |1851| `org_verify_failed` | 로그인의 조직을 핀에 대해 확인할 수 없음(예: 네트워크 실패 또는 취소된 토큰) |
1873| `org_pin_mismatch` | 로그인이 핀이 허용하지 않는 조직에 속함 |1852| `org_pin_mismatch` | 로그인이 핀이 허용하지 않는 조직에 속함 |
1874| `managed_settings_invalid` | 관리 정책 설정을 읽을 수 없거나 핀이 조직을 명명하지 않음 또는 [관리 모델 제한](/docs/ko/errors#managed-settings-block-the-default-model)이 기본 옵션에 대해 허용된 모델을 남기지 않음 |1853| `managed_settings_invalid` | 관리 정책 설정을 읽을 수 없음, 핀이 조직을 명명하지 않음, 또는 [관리 모델 제한](/docs/ko/errors#managed-settings-block-the-default-model)이 기본 옵션에 대해 허용된 모델을 남기지 않음 |
1875| `remote_settings_required_unavailable` | 조직이 요구하는 관리 설정을 로드할 수 없음 |1854| `remote_settings_required_unavailable` | 조직이 요구하는 관리 설정을 로드할 수 없음 |
1876| `gateway_signin_required` | [Cloud 게이트웨이](/docs/ko/claude-apps-gateway)가 이 로그인을 종료함 |1855| `gateway_signin_required` | [Cloud 게이트웨이](/docs/ko/claude-apps-gateway)가 이 로그인을 종료함 |
1877| `gateway_access_denied` | Cloud 게이트웨이에 대한 관리 설정 요청이 403으로 돌아왔으며, 게이트웨이의 [문제 해결 테이블](/docs/ko/claude-apps-gateway-deploy#troubleshooting)이 이를 다룹니다 |1856| `gateway_access_denied` | Cloud 게이트웨이에 대한 관리 설정 요청이 403으로 돌아옴(게이트웨이의 [문제 해결 테이블](/docs/ko/claude-apps-gateway-deploy#troubleshooting)이 다룸) |
1878| `proxy_invalid` | 프록시 설정이 완전한 URL이 아님 |1857| `proxy_invalid` | 프록시 설정이 완전한 URL이 아님 |
1879| `temp_dir_unusable` | 사용자별 임시 디렉토리가 안전하지 않거나 생성할 수 없음 |1858| `temp_dir_unusable` | 사용자별 임시 디렉토리가 안전하지 않거나 생성할 수 없음 |
1880| `cwd_unavailable` | 작업 디렉토리가 삭제되었거나 이동되었거나 읽을 수 없음 |1859| `cwd_unavailable` | 작업 디렉토리가 삭제되었거나, 이동되었거나, 읽을 수 없음 |
1881| `shell_tool_missing` | Windows에서 사용 가능한 셸 도구가 없음: Git Bash가 없고 PowerShell이 없거나 `CLAUDE_CODE_USE_POWERSHELL_TOOL`로 꺼짐 |1860| `shell_tool_missing` | Windows에서 사용 가능한 셸 도구가 없음: Git Bash가 없으며, PowerShell이 없거나 `CLAUDE_CODE_USE_POWERSHELL_TOOL`로 꺼짐 |
1882| `session_held_by_background` | 재개하거나 계속할 대화가 [백그라운드 세션](/docs/ko/agent-view)으로 실행 중 |1861| `session_held_by_background` | 재개하거나 계속할 대화가 [배경 세션](/docs/ko/agent-view)으로 실행 중 |
1883| `worktree_resume_refused` | 세션의 워크트리가 안전 검사에 실패했거나 재개가 내부에서 시작됨. `errors`는 동일한 재개를 다시 실행하면 워크트리 없이 계속되는지 여부를 말합니다 |1862| `worktree_resume_refused` | 세션의 워크트리가 안전 검사에 실패했거나, 재개가 내부에서 시작됨. `errors`는 동일한 재개를 다시 실행하면 워크트리 없이 계속되는지 말함 |
1884| `worktree_unverified` | 세션의 워크트리를 지금 확인할 수 없으며 재시도하면 성공할 수 있음 |1863| `worktree_unverified` | 세션의 워크트리를 지금 확인할 수 없으며, 재시도하면 성공할 수 있음 |
1885| `cli_version_too_old` | 이 Claude Code 버전이 Anthropic이 요구하는 최소값 아래 |1864| `cli_version_too_old` | 이 Claude Code 버전이 Anthropic이 요구하는 최소값 아래 |
1886| `bypass_root` | 루트로 실행하는 동안 바이패스 권한 모드가 요청됨 |1865| `bypass_root` | 루트로 실행하는 동안 바이패스 권한 모드가 요청됨 |
1887 1866
1928};1907};
1929```1908```
1930 1909
1931`fast_mode_state`는 세션의 [빠른 모드](/docs/ko/fast-mode) 상태를 보고합니다. 무언가가 빠른 모드를 차단할 때 `fast_mode_disabled_reason`은 이를 차단한 검사의 이름을 지정합니다. 필드는 Claude Code v2.1.219 이상이 필요합니다. 이유 코드와 그 의미는 결과 메시지의 [`fast_mode_disabled_reason`](#sdkresultmessage)을 참조하세요.1910`fast_mode_state`는 세션의 [빠른 모드](/docs/ko/fast-mode) 상태를 보고합니다. 빠른 모드를 차단하는 것이 있을 때, `fast_mode_disabled_reason`은 차단한 검사의 이름을 지정합니다. 필드는 Claude Code v2.1.219 이상이 필요합니다. 이유 코드와 의미는 결과 메시지의 [`fast_mode_disabled_reason`](#sdkresultmessage)을 참조하세요.
1932
1933`terminal_slash_commands`는 `exit`와 같은 로컬 터미널에 바인드된 인터페이스를 가진 `slash_commands`의 항목을 명명합니다. 다른 `slash_commands` 항목처럼 보낼 수 있습니다. 필드는 원격 또는 모바일 클라이언트가 명령 메뉴에서 이를 숨길 수 있도록 존재합니다. 필드는 비어 있지 않을 때만 있으며 Agent SDK v0.3.229 이상이 필요합니다.
1934 1911
1935* 각 `mcp_servers` 항목의 `source`: 서버 정의가 어디에서 나왔는지로, [`McpServerStatus`](#mcpserverstatus)의 `source`와 동일한 값입니다. Agent SDK v0.3.274 이상이 필요합니다.1912`terminal_slash_commands`는 `slash_commands`의 항목 중 인터페이스가 로컬 터미널에 바인딩된 것들의 이름을 지정합니다(예: `exit`). 다른 `slash_commands` 항목처럼 보낼 수 있습니다. 필드는 원격 또는 모바일 클라이언트가 명령 메뉴에서 이를 숨길 수 있도록 존재합니다. 필드는 비어 있지 않을 때만 있으며, Agent SDK v0.3.229 이상이 필요합니다.
1936*
1937 1913
1938`effort`: [노력 수준](/docs/ko/model-config#adjust-effort-level) Claude Code가 세션의 다음 요청에서 보내거나 보내지 않을 때 `null`입니다. Claude Code는 [Remote Control](/docs/ko/remote-control) 클라이언트로 보내는 초기화 메시지에만 필드를 설정하고 애플리케이션이 읽는 초기화 메시지에서 생략합니다. Agent SDK v0.3.234 이상이 필요합니다.1914* 각 `mcp_servers` 항목의 `source`: 서버의 정의가 어디에서 나왔는지이며, [`McpServerStatus`](#mcpserverstatus)의 `source`와 동일한 값입니다. Agent SDK v0.3.274 이상이 필요합니다.
1915* `effort`: [노력 수준](/docs/ko/model-config#adjust-effort-level) Claude Code가 세션의 다음 요청에서 보내거나, 보내지 않을 때 `null`입니다. Claude Code는 [Remote Control](/docs/ko/remote-control) 클라이언트로 보내는 초기화 메시지에만 필드를 설정하며, 애플리케이션이 읽는 초기화 메시지에서 생략합니다. Agent SDK v0.3.234 이상이 필요합니다.
1939 1916
1940`capabilities` 배열은 이 CLI가 구현하는 프로토콜 동작의 이름을 지정하므로 `claude_code_version` 문자열을 비교하는 대신 기능을 감지할 수 있습니다. 이는 열린 집합입니다: 인식하지 못하는 값을 무시하고 동작이 의존하는 특정 기능을 확인합니다. 필드는 Claude Code v2.1.205 이상이 필요하며 이전 CLI에는 없습니다.1917`capabilities` 배열은 이 CLI가 구현하는 프로토콜 동작의 이름을 지정하므로 `claude_code_version` 문자열을 비교하는 대신 기능을 감지할 수 있습니다. 이는 열린 집합입니다: 인식하지 못하는 값은 무시하고, 동작이 의존하는 특정 기능을 확인하세요. 필드는 Claude Code v2.1.205 이상이 필요하며 이전 CLI에는 없습니다.
1941 1918
1942| 기능 | 의미 |1919| 기능 | 의미 |
1943| - | - |1920| - | - |
1944| `interrupt_receipt_v1` | [`interrupt()`](#query-object)는 인터럽트가 도착했을 때 보류 중인 메시지를 나열하는 [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) 영수증으로 해결됩니다 |1921| `interrupt_receipt_v1` | [`interrupt()`](#query-object)는 중단이 도착했을 때 보류 중이던 메시지를 나열하는 [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) 영수증으로 해결됨 |
1945| `interrupt_cancel_queued_v1` | |1922| `interrupt_cancel_queued_v1` | `interrupt` 제어 요청이 `cancel_queued: true`를 준수하여 영수증이 `still_queued` 아래에 나열할 메시지를 취소하고 대신 `cancelled` 아래에 나열합니다. [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse)를 참조하세요. Claude Code v2.1.219 이상이 필요함 |
1946| `interrupt` 제어 요청이 `cancel_queued: true`를 준수하여 영수증이 `still_queued` 아래에 나열할 메시지를 취소하고 대신 `cancelled` 아래에 나열합니다. [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse)를 참조하세요. Claude Code v2.1.219 이상이 필요합니다 | |
1947 1923
1948`plugin_errors` 배열은 플러그인 로드 실패를 나열합니다. 항목은 로드되지 않은 플러그인을 설명하고 `plugins`에서 없거나 훅 파일과 같은 부분 없이 로드된 플러그인을 설명합니다. 아무것도 실패하지 않으면 키가 생략됩니다. `SDKSystemMessage`는 Agent SDK v0.3.283 이상에서 `plugin_errors`를 선언합니다.1924`plugin_errors` 배열은 플러그인 로드 실패를 나열합니다. 항목은 로드되지 않았으며 `plugins`에서 없는 플러그인이거나, 훅 파일 같은 부분 없이 로드된 플러그인을 설명합니다. 아무것도 실패하지 않았을 때 키는 생략됩니다. `SDKSystemMessage`는 Agent SDK v0.3.283 이상에서 `plugin_errors`를 선언합니다.
1949 1925
1950[`plugins` 옵션](#options)의 디렉토리 또는 아카이브 자체가 로드되지 않으면 항목의 `plugin` 필드는 플러그인 이름 대신 `inline[0]`과 같은 위치 태그를 보유합니다. 이는 예를 들어 경로가 존재하지 않거나 매니페스트가 유효하지 않을 때 발생합니다. 그러한 항목을 `path` 필드로 옵션과 일치시킵니다.1926[`plugins` 옵션](#options)의 디렉토리 또는 아카이브 자체가 로드되지 않을 때, 항목의 `plugin` 필드는 플러그인 이름 대신 `inline[0]` 같은 위치 태그를 보유합니다. 이는 예를 들어 경로가 존재하지 않거나 매니페스트가 유효하지 않을 때 발생합니다. 이러한 항목을 `path` 필드로 옵션과 일치시키세요.
1951 1927
1952아래 테이블은 각 `plugin_errors` 항목의 필드를 나열합니다.1928아래 테이블은 각 `plugin_errors` 항목의 필드를 나열합니다.
1953 1929
1954| 필드 | 타입 | 설명 |1930| 필드 | 타입 | 설명 |
1955| - | - | - |1931| - | - | - |
1956| `plugin` | `string` | 실패한 플러그인의 ID 또는 플러그인 디렉토리나 아카이브 자체가 로드되지 않았을 때 `inline[0]`과 같은 위치 태그 |1932| `plugin` | `string` | 실패한 플러그인의 ID 또는 플러그인 디렉토리나 아카이브 자체가 로드되지 않았을 때 `inline[0]` 같은 위치 태그 |
1957| `type` | `string` | `path-not-found` 또는 `manifest-validation-error`와 같은 열린 집합의 오류 카테고리입니다. 인식하지 못하는 값을 일반 실패로 취급합니다 |1933| `type` | `string` | `path-not-found` 또는 `manifest-validation-error` 같은 열린 집합의 오류 범주. 인식하지 못하는 값을 일반 실패로 취급 |
1958| `message` | `string` | 실패를 설명하는 표시 텍스트 |1934| `message` | `string` | 실패를 설명하는 표시 텍스트 |
1959| `path` | `string` | 플러그인 디렉토리 또는 아카이브 자체가 로드되지 않았을 때만 있습니다. 절대 경로로, [`cwd`](#options) 옵션에 대해 해결된 `plugins` 옵션의 상대 경로 |1935| `path` | `string` | 플러그인 디렉토리나 아카이브 자체가 로드되지 않았을 때만 있음. 절대 경로이며, `plugins` 옵션의 상대 경로는 [`cwd`](#options) 옵션에 대해 해결됨 |
1960 1936
1961<h3 id="sdkpartialassistantmessage">1937<h3 id="sdkpartialassistantmessage">
1962 `SDKPartialAssistantMessage`1938 `SDKPartialAssistantMessage`
1963</h3>1939</h3>
1964 1940
1965스트리밍 부분 메시지(`includePartialMessages`가 true일 때만). `parent_tool_use_id` 필드는 항상 `null`입니다: 스트림 이벤트는 메인 세션에만 내보내집니다. 서브에이전트 귀속의 경우 완전한 메시지를 사용하거나 [`forwardSubagentText`](#options)를 활성화하여 서브에이전트 텍스트 및 생각을 완전한 메시지로 받습니다.1941스트리밍 부분 메시지(`includePartialMessages`가 true일 때만). `parent_tool_use_id` 필드는 항상 `null`입니다: 스트림 이벤트는 메인 세션에만 내보내집니다. 서브에이전트 귀속의 경우 완전한 메시지를 사용하거나(이는 `parent_tool_use_id`를 전달함), [`forwardSubagentText`](#options)를 활성화하여 서브에이전트 텍스트와 생각을 완전한 메시지로 받으세요.
1966 1942
1967```typescript theme={null}1943```typescript theme={null}
1968type SDKPartialAssistantMessage = {1944type SDKPartialAssistantMessage = {
1978};1954};
1979```1955```
1980 1956
1981Claude Code는 턴의 첫 번째 비핑 스트림 이벤트에 `user_message_uuid`와 `user_message_uuids`를 설정하고, 턴이 답변하는 메시지가 변경될 때 [`user_message_uuid`](#user_message_uuid)의 조건에 따라 다시 설정합니다. Claude Code가 재시작으로 인해 중단된 턴을 다시 실행할 때, 다시 실행의 스트림 이벤트가 이러한 필드를 전달하면 [`resume_reason`](#resume_reason)도 전달합니다.1957Claude Code는 [`user_message_uuid`](#user_message_uuid)의 조건에 따라 턴의 첫 번째 비핑 스트림 이벤트에 `user_message_uuid`와 `user_message_uuids`를 설정하며, 턴이 답변하는 메시지가 변경될 때 다시 설정합니다. Claude Code가 재시작으로 중단된 턴을 다시 실행할 때, 이러한 필드를 전달하는 다시 실행된 스트림 이벤트도 [`resume_reason`](#resume_reason)을 전달합니다.
1982 1958
1983<h3 id="sdkcompactboundarymessage">1959<h3 id="sdkcompactboundarymessage">
1984 `SDKCompactBoundaryMessage`1960 `SDKCompactBoundaryMessage`
2003 `SDKInformationalMessage`1979 `SDKInformationalMessage`
2004</h3>1980</h3>
2005 1981
2006루프에서 내보낸 일반 텍스트 배너입니다. 비오류 상태 줄, `UserPromptSubmit` 훅의 블록 이유와 같은 훅 피드백, 명령 출력을 전달합니다. Claude Code v2.1.227 이상에서 훅의 [`systemMessage`](/docs/ko/hooks#json-output)는 이 메시지로 도착할 수 있으며, 각 줄은 `PostToolUse:Bash says:`와 같은 훅의 이름으로 접두사가 붙습니다. 각 [이벤트의 섹션](/docs/ko/hooks#hook-events)은 훅 페이지에서 출력이 어떻게 표시되는지 말합니다. `content`를 주어진 `level`에서 일반 텍스트로 렌더링합니다.1982루프에서 내보낸 일반 텍스트 배너입니다. Claude Code가 발생시키는 경고, 공지, 기타 비오류 상태 줄과 `UserPromptSubmit` 훅의 블록 이유 같은 훅 피드백을 전달합니다.
1983
1984Claude Code v2.1.227 이상에서 훅의 [`systemMessage`](/docs/ko/hooks#json-output)는 이 메시지로 도착할 수 있으며, 각 줄은 훅의 이름으로 접두사가 붙습니다(예: `PostToolUse:Bash says:`). 각 [이벤트의 섹션](/docs/ko/hooks#hook-events)은 훅 페이지에서 출력이 어떻게 표시되는지 말합니다.
1985
1986`content`를 주어진 `level`에서 평문으로 렌더링하세요.
2007 1987
2008```typescript theme={null}1988```typescript theme={null}
2009type SDKInformationalMessage = {1989type SDKInformationalMessage = {
2022 `SDKWorkerShuttingDownMessage`2002 `SDKWorkerShuttingDownMessage`
2023</h3>2003</h3>
2024 2004
2025정상적인 워커 해제 시 내보내져서 원격 클라이언트가 하트비트 타임아웃을 기다리는 대신 워커가 종료된 이유를 표시할 수 있습니다. `reason`은 호스트 CLI에서 설정한 짧은 snake\_case 문자열로, `"host_exit"` 또는 `"remote_control_disabled"`와 같습니다. 라이브 스트리밍할 때만 이에 대해 조치합니다. 재개된 세션은 이 메시지의 과거 인스턴스를 재생하므로 그 경우 무시합니다.2005정상적인 워커 분해 시 내보내지므로 원격 클라이언트는 하트비트 타임아웃을 기다리는 대신 워커가 종료된 이유를 표시할 수 있습니다. `reason`은 호스트 CLI에서 설정한 짧은 snake\_case 문자열입니다(예: `"host_exit"` 또는 `"remote_control_disabled"`). 라이브 스트리밍할 때만 이에 대해 조치하세요. 재개된 세션은 이 메시지의 과거 인스턴스를 재생하므로 그 경우 무시하세요.
2026 2006
2027```typescript theme={null}2007```typescript theme={null}
2028type SDKWorkerShuttingDownMessage = {2008type SDKWorkerShuttingDownMessage = {
2038 `SDKPluginInstallMessage`2018 `SDKPluginInstallMessage`
2039</h3>2019</h3>
2040 2020
2041플러그인 설치 진행 이벤트입니다. [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/ko/env-vars)이 설정되었을 때 내보내져서 Agent SDK 애플리케이션이 첫 번째 턴 전에 마켓플레이스 플러그인 설치를 추적할 수 있습니다. `started`와 `completed` 상태는 전체 설치를 괄호로 묶습니다. `installed`와 `failed` 상태는 개별 마켓플레이스를 보고하고 `name`을 포함합니다.2021플러그인 설치 진행 이벤트입니다. [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/ko/env-vars)이 설정되었을 때 내보내지므로 Agent SDK 애플리케이션이 첫 번째 턴 전에 마켓플레이스 플러그인 설치를 추적할 수 있습니다. `started`와 `completed` 상태는 전체 설치를 괄호로 묶습니다. `installed`와 `failed` 상태는 개별 마켓플레이스를 보고하며 `name`을 포함합니다.
2042 2022
2043```typescript theme={null}2023```typescript theme={null}
2044type SDKPluginInstallMessage = {2024type SDKPluginInstallMessage = {
2056 `SDKPermissionDeniedMessage`2036 `SDKPermissionDeniedMessage`
2057</h3>2037</h3>
2058 2038
2059권한 시스템이 대화형 프롬프트 없이 도구 호출을 거부할 때 내보낸 스트림 이벤트입니다. 뒤따르는 `is_error` 도구 결과만 관찰하는 대신 거부를 실시간으로 UI에 렌더링하는 데 사용합니다. 어떤 거부를 보고하는지는 실행이 권한 프롬프트를 처리하는 방식에 따라 다릅니다:2039권한 시스템이 대화형 프롬프트 없이 도구 호출을 거부할 때 내보낸 스트림 이벤트입니다. 이를 사용하여 거부를 UI에서 렌더링하세요. 이는 뒤따르는 `is_error` 도구 결과만 관찰하는 것이 아니라 발생할 때입니다. 어느 거부를 보고하는지는 실행이 권한 프롬프트를 처리하는 방식에 따라 다릅니다:
2060 2040
2061* **[`canUseTool`](#canusetool) 콜백과 기본 [`permissionPrompts: 'host'`](#options)**: 권한 프롬프트는 콜백으로 이동하고, 이 이벤트는 Claude Code가 이를 호출하지 않고 자체적으로 결정한 거부를 보고합니다.2041* **[`canUseTool`](#canusetool) 콜백과 기본 [`permissionPrompts: 'host'`](#options)**: 권한 프롬프트는 콜백으로 가며, 이 이벤트는 Claude Code가 호출 없이 자체적으로 결정한 거부를 보고합니다.
2062* **둘 다 없음**: 베어 `-p` 실행 또는 `canUseTool`도 `permissionPromptToolName`도 설정하지 않는 `query()`는 프롬프트했을 모든 도구 호출을 거부하고, 이 이벤트는 그러한 거부와 Claude Code가 자체적으로 결정한 거부를 보고합니다. v2.1.223 이전에는 Claude Code가 콜백 없는 실행에서 이 이벤트를 내보내지 않았습니다.2042* **둘 다 없음**: 베어 `-p` 실행 또는 `canUseTool`도 `permissionPromptToolName`도 설정하지 않는 `query()`, 프롬프트했을 도구 호출을 거부하며, 이 이벤트는 이러한 거부와 Claude Code가 자체적으로 결정한 거부를 보고합니다. v2.1.223 이전에는 Claude Code가 콜백 없는 실행에서 이 이벤트를 내보내지 않았습니다.
2063* **MCP 프롬프트 도구**, `permissionPromptToolName` 또는 [`--permission-prompt-tool`](/docs/ko/cli-reference#cli-flags) 플래그로 설정하고 기본 `permissionPrompts: 'host'`: Claude Code는 이 이벤트를 전혀 내보내지 않으며, 규칙 거부를 포함하여 자체적으로 결정한 거부도 포함하지 않습니다.2043* **MCP 프롬프트 도구**(기본 `permissionPrompts: 'host'`와 함께 `permissionPromptToolName` 또는 [`--permission-prompt-tool`](/docs/ko/cli-reference#cli-flags) 플래그로 설정): Claude Code는 이 이벤트를 전혀 내보내지 않으며, 규칙 거부도 자체적으로 결정한 것도 아닙니다.
2064* **[`permissionPrompts: 'none'`](#options)**: Claude Code는 프롬프트했을 호출을 거부하며, `canUseTool` 또는 MCP 프롬프트 도구도 설정되어 있을 때도 거부하고, 이 이벤트는 그러한 거부와 Claude Code가 자체적으로 결정한 거부를 보고합니다. Claude Code v2.1.259 이상이 필요합니다.2044* **[`permissionPrompts: 'none'`](#options)**: Claude Code는 프롬프트했을 호출을 거부하며, `canUseTool` 또는 MCP 프롬프트 도구도 설정되었을 때도 마찬가지이며, 이 이벤트는 이러한 거부와 Claude Code가 자체적으로 결정한 거부를 보고합니다. Claude Code v2.1.259 이상이 필요합니다.
2065 2045
2066모든 구성에서 이 이벤트는 `PreToolUse` 훅 경로에서 결정된 거부를 건너뜁니다. 훅이 호출을 거부했는지 또는 거부 규칙이 훅의 허용 또는 요청 결정을 재정의했는지 여부입니다. 이벤트는 또한 최선의 노력입니다: 때때로 Claude Code는 이 이벤트를 내보내지 않고 거부를 기록하므로 [결과 메시지](#sdkresultmessage)의 `permission_denials`이 권위 있는 기록입니다.2046모든 구성에서 이 이벤트는 `PreToolUse` 훅 경로에서 결정된 거부를 건너뜁니다. 훅이 호출을 거부했는지 또는 거부 규칙이 훅의 허용 또는 요청 결정을 재정의했는지 여부에 관계없이. 이벤트는 또한 최선의 노력입니다: 가끔 Claude Code는 이 이벤트를 내보내지 않고 거부를 기록하므로 [결과 메시지](#sdkresultmessage)의 `permission_denials`이 권위 있는 기록입니다.
2067 2047
2068```typescript theme={null}2048```typescript theme={null}
2069type SDKPermissionDeniedMessage = {2049type SDKPermissionDeniedMessage = {
2084| - | - | - |2064| - | - | - |
2085| `tool_name` | `string` | 거부된 도구의 이름 |2065| `tool_name` | `string` | 거부된 도구의 이름 |
2086| `tool_use_id` | `string` | 이 거부가 답변하는 `tool_use` 블록의 ID |2066| `tool_use_id` | `string` | 이 거부가 답변하는 `tool_use` 블록의 ID |
2087| `agent_id` | `string` | 거부된 호출이 서브에이전트 내부에서 발생했을 때 서브에이전트 ID입니다. 호스트 측 라우팅을 위해 `can_use_tool`의 필드를 미러링합니다 |2067| `agent_id` | `string` | 거부된 호출이 서브에이전트 내부에서 발생했을 때 서브에이전트 ID. `can_use_tool`의 필드를 미러링하여 호스트 측 라우팅 |
2088| `decision_reason_type` | `string` | 결정한 구성 요소의 판별자로, `"rule"`, `"mode"`, `"classifier"`, 또는 `"asyncAgent"`와 같습니다 |2068| `decision_reason_type` | `string` | 결정한 구성 요소의 판별자(예: `"rule"`, `"mode"`, `"classifier"`, 또는 `"asyncAgent"`) |
2089| `decision_reason` | `string` | 사용 가능할 때 결정 구성 요소의 인간이 읽을 수 있는 이유 |2069| `decision_reason` | `string` | 사용 가능할 때 결정 구성 요소의 인간 읽을 수 있는 이유 |
2090| `message` | `string` | `tool_result`에서 모델로 반환된 거부 메시지 |2070| `message` | `string` | `tool_result`에서 모델로 반환된 거부 메시지 |
2091 2071
2092<h3 id="sdkpermissiondenial">2072<h3 id="sdkpermissiondenial">
2107 `SDKContextUsage`2087 `SDKContextUsage`
2108</h3>2088</h3>
2109 2089
2110`/context` 보고서의 구조화된 형태로, [`SDKAssistantMessage`](#sdkassistantmessage)에서 `/context` 결과를 전달하는 `context_usage`로 전달됩니다. Agent SDK v0.3.232 이상은 타입을 내보냅니다. [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse)와 달리 `color`와 `gridRows`와 같은 표시 필드 없이 사용량 분석을 렌더링하는 데 필요한 데이터만 전달합니다.2090`/context` 보고서의 구조화된 형태이며, [`SDKAssistantMessage`](#sdkassistantmessage)에서 `/context` 결과를 전달하는 것으로 `context_usage`로 전달됩니다. Agent SDK v0.3.232 이상은 타입을 내보냅니다. [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse)와 달리, 사용량 분석을 렌더링하는 데 필요한 데이터만 전달하며, `color`와 `gridRows` 같은 표시 필드는 없습니다. Claude Code는 메시지 스트림에 나타나지 않는 토큰 계산 API 요청으로 보고서를 계산합니다. [이러한 요청이 어떻게 처리되는지](#sdkcontrolgetcontextusageresponse)를 참조하세요.
2111 2091
2112```typescript theme={null}2092```typescript theme={null}
2113type SDKContextUsage = {2093type SDKContextUsage = {
2144};2124};
2145```2125```
2146 2126
2147테이블은 Claude Code가 각 필드에 넣는 것을 나열합니다. `model`에서 `over_limit`까지의 필드는 세션 전체를 설명하고, 수집 필드는 개별 항목에 토큰을 귀속시킵니다.2127테이블은 Claude Code가 각 필드에 넣는 것을 나열합니다. `model`에서 `over_limit`까지의 필드는 세션 전체를 설명하며, 수집 필드는 개별 항목에 토큰을 귀속시킵니다.
2148 2128
2149| 필드 | 타입 | 설명 |2129| 필드 | 타입 | 설명 |
2150| - | - | - |2130| - | - | - |
2151| `model` | `string` | Claude Code가 사용량을 계산한 메인 루프의 모델로, 서브에이전트의 모델이 아님 |2131| `model` | `string` | Claude Code가 사용량을 계산한 메인 루프의 모델이며, 서브에이전트의 모델이 아님 |
2152| `total_tokens` | `number` | Claude Code의 사용 중인 토큰 추정치입니다. 윈도우에 고정되지 않으므로 세션이 제한을 초과할 때 `raw_max_tokens`를 초과할 수 있습니다 |2132| `total_tokens` | `number` | Claude Code의 사용 중인 토큰 추정치. 윈도우에 고정되지 않으므로 세션이 제한을 초과할 때 `raw_max_tokens`를 초과할 수 있음 |
2153| `raw_max_tokens` | `number` | 모델의 컨텍스트 윈도우 또는 적용되는 낮은 [자동 압축 윈도우](/docs/ko/model-config#context-window-and-auto-compaction)로, 설정한 것 또는 1M 토큰 윈도우를 가진 일부 모델에 Claude Code가 적용하는 200K 경계와 같습니다. Claude Code는 이 윈도우에 대해 `total_tokens`를 측정합니다 |2133| `raw_max_tokens` | `number` | 모델의 컨텍스트 윈도우 또는 적용되는 낮은 [자동 압축 윈도우](/docs/ko/model-config#context-window-and-auto-compaction)(예: 설정한 것 또는 1M 토큰 윈도우가 있는 일부 모델에 Claude Code가 적용하는 200K 경계). Claude Code는 `total_tokens`를 이 윈도우에 대해 측정 |
2154| `percentage` | `number` | `total_tokens`를 `raw_max_tokens`의 반올림된 백분율로, 세션이 제한을 초과할 때 100을 초과할 수 있습니다 |2134| `percentage` | `number` | `total_tokens`를 `raw_max_tokens`의 반올림된 백분율로 표시하므로 세션이 제한을 초과할 때 100을 초과할 수 있음 |
2155| `over_limit` | `object` | `total_tokens`가 `raw_max_tokens`를 초과할 때만 있습니다. `tokens_over`는 초과 금액이고 `kind`는 Claude Code가 윈도우를 해결한 방식을 말합니다 |2135| `over_limit` | `object` | `total_tokens`가 `raw_max_tokens`를 초과할 때만 있음. `tokens_over`는 초과 금액이며, `kind`는 Claude Code가 윈도우를 해결한 방식을 말함 |
2156| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | 사용량별 카테고리 분석의 각 행당 하나의 항목 |2136| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | 사용량별 범주 분석의 각 행에 대한 하나의 항목 |
2157| `mcp_tools` | `object[]` | 각 MCP 도구에 귀속된 토큰으로, `mcp__linear__create_issue`와 같은 와이어 이름과 `server_name` |2137| `mcp_tools` | `object[]` | 각 MCP 도구에 귀속된 토큰이며, 와이어 이름(예: `mcp__linear__create_issue`)과 `server_name` |
2158| `memory_files` | `object[]` | 각 로드된 메모리 파일에 귀속된 토큰으로, `path`와 `Project` 또는 `User`와 같은 소스 레이블이 `type`에 있습니다 |2138| `memory_files` | `object[]` | 각 로드된 메모리 파일에 귀속된 토큰이며, `path`와 `Project` 또는 `User` 같은 소스 레이블이 `type`에 있음 |
2159| `agents` | `object[]` | 각 사용자 정의 서브에이전트 정의에 귀속된 토큰으로, `projectSettings`, `userSettings`, 또는 `plugin`과 같은 소스 식별자입니다. 기본 제공 서브에이전트는 나열되지 않습니다 |2139| `agents` | `object[]` | 각 사용자 정의 서브에이전트 정의에 귀속된 토큰이며, `projectSettings`, `userSettings`, 또는 `plugin` 같은 소스 식별자. 기본 제공 서브에이전트는 나열되지 않음 |
2160| `skills` | `object[]` | 기술 목록의 각 기술에 귀속된 토큰으로, 소스 식별자와 플러그인 기술의 경우 `plugin_name`의 플러그인 이름입니다. 기술이 토큰에 기여하지 않을 때 없습니다 |2140| `skills` | `object[]` | 기술 목록의 각 기술에 귀속된 토큰이며, 소스 식별자와 플러그인 기술의 경우 `plugin_name`의 플러그인 이름. 기술이 토큰에 기여하지 않을 때 없음 |
2161 2141
2162`over_limit.kind`는 Claude Code가 윈도우를 해결한 방식을 기록하며, 다음 요청을 API가 수락하는지 여부가 아닙니다:2142`over_limit.kind`는 Claude Code가 윈도우를 해결한 방식을 기록하며, 다음 요청을 API가 수락하는지 여부가 아닙니다:
2163 2143
2164* `hard_limit`: 윈도우는 Claude Code가 API가 요청을 거부하는 모델 자체의 제한이라고 믿는 것입니다2144* `hard_limit`: 윈도우는 Claude Code가 모델 자신의 제한이라고 믿는 것이며, 그 이상으로 API가 요청을 거부함
2165* `compaction_window`: 윈도우는 압축 정책 윈도우로, 모델의 제한과 일치할 수도 있고 아닐 수도 있습니다2145* `compaction_window`: 윈도우는 압축 정책 윈도우이며, 모델의 제한과 일치할 수도 있고 아닐 수도 있음
2166 2146
2167Claude Code는 타입을 추가적으로 진화시켜 기존 타입을 재구성하는 대신 새로운 데이터를 선택적 필드로 추가합니다. 알고 있는 필드를 읽고 인식하지 못하는 필드는 무시합니다.2147Claude Code는 기존 것을 재구성하는 대신 선택적 필드로 새 데이터를 추가하여 타입을 점진적으로 발전시킵니다. 알고 있는 필드를 읽고 인식하지 못하는 것은 무시하세요.
2168 2148
2169<h3 id="sdkcontextusagecategory">2149<h3 id="sdkcontextusagecategory">
2170 `SDKContextUsageCategory`2150 `SDKContextUsageCategory`
2171</h3>2151</h3>
2172 2152
2173`/context` 사용량별 카테고리 분석의 한 행입니다.2153`/context` 사용량별 범주 분석의 한 행입니다.
2174 2154
2175```typescript theme={null}2155```typescript theme={null}
2176type SDKContextUsageCategory = {2156type SDKContextUsageCategory = {
2180};2160};
2181```2161```
2182 2162
2183테이블은 Claude Code가 행의 각 필드에 넣는 것을 나열합니다.2163테이블은 행의 각 필드에 Claude Code가 넣는 것을 나열합니다.
2184 2164
2185| 필드 | 타입 | 설명 |2165| 필드 | 타입 | 설명 |
2186| - | - | - |2166| - | - | - |
2187| `name` | `string` | `/context`가 인쇄하는 행의 표시 이름으로, `Messages`와 같습니다. 이름으로 행을 분류하지 말고 `kind`로 분류합니다 |2167| `name` | `string` | `/context`가 인쇄하는 행의 표시 이름(예: `Messages`). 이름으로 행을 분류하지 말고 `kind`로 분류 |
2188| `tokens` | `number` | 행의 토큰 수입니다. 행은 0개의 토큰을 전달할 수 있습니다 |2168| `tokens` | `number` | 행의 토큰 수. 행은 0개의 토큰을 전달할 수 있음 |
2189| `kind` | `string` | 행이 나타내는 것: `used`, `free`, `buffer`, 또는 `deferred` |2169| `kind` | `string` | 행이 나타내는 것: `used`, `free`, `buffer`, 또는 `deferred` |
2190 2170
2191각 `kind` 값은 행의 토큰이 무엇인지 말합니다:2171각 `kind` 값은 행의 토큰이 무엇인지 말합니다:
2193* `used`: 컨텍스트 윈도우를 차지하는 콘텐츠2173* `used`: 컨텍스트 윈도우를 차지하는 콘텐츠
2194* `free`: 남은 윈도우2174* `free`: 남은 윈도우
2195* `buffer`: 압축 예약2175* `buffer`: 압축 예약
2196* `deferred`: Claude Code가 윈도우 밖에 보유하고 사용량 계산에서 제외하지만 인식을 위해 나열하는 도구 스키마2176* `deferred`: Claude Code가 윈도우 밖에 보유하고 사용량 계산에서 제외하는 도구 스키마이며, 인식을 위해 나열됨
2197 2177
2198<h3 id="sdkmessageorigin">2178<h3 id="sdkmessageorigin">
2199 `SDKMessageOrigin`2179 `SDKMessageOrigin`
2200</h3>2180</h3>
2201 2181
2202사용자 역할 메시지의 출처입니다. 이는 [`SDKUserMessage`](#sdkusermessage)에서 `origin`으로 나타나며 해당 [`SDKResultMessage`](#sdkresultmessage)로 전달되어 주어진 턴을 트리거한 것을 알 수 있습니다.2182사용자 역할 메시지의 출처입니다. 이는 [`SDKUserMessage`](#sdkusermessage)에서 `origin`으로 나타나며 해당 [`SDKResultMessage`](#sdkresultmessage)로 전달되므로 주어진 턴을 무엇이 트리거했는지 알 수 있습니다.
2203 2183
2204```typescript theme={null}2184```typescript theme={null}
2205type SDKMessageOrigin =2185type SDKMessageOrigin =
2227 2207
2228| `kind` | 의미 |2208| `kind` | 의미 |
2229| - | - |2209| - | - |
2230| `human` | 최종 사용자의 직접 입력입니다. 애플리케이션이 사용자가 입력한 것을 사용자 메시지로 전달하면 명시적으로 `origin`을 `{ kind: "human" }`으로 설정합니다: Claude Code는 `origin` 없는 사용자 메시지를 미귀속으로 취급하고, [`ultracode` 워크플로우 키워드](/docs/ko/workflows#ask-for-a-workflow-in-your-prompt)와 같이 인간이 입력한 프롬프트를 요구하는 검사는 이를 수락하지 않습니다. v2.1.210 이전에는 Claude Code가 사용자 메시지의 없는 `origin`을 인간 입력으로 취급했습니다. |2210| `human` | 최종 사용자의 직접 입력. 애플리케이션이 사용자가 입력한 것을 사용자 메시지로 전달하면, 명시적으로 `origin`을 `{ kind: "human" }`으로 설정하세요: Claude Code는 `origin` 없는 사용자 메시지를 미귀속으로 취급하며, [`ultracode` 워크플로우 키워드](/docs/ko/workflows#ask-for-a-workflow-in-your-prompt) 같은 인간 입력 프롬프트를 요구하는 검사는 이를 수락하지 않습니다. v2.1.210 이전에는 Claude Code가 사용자 메시지의 없는 `origin`을 인간 입력으로 취급했습니다. |
2231| `channel` | [채널](/docs/ko/channels)에 도착하는 메시지입니다. `server`는 소스 MCP 서버 이름입니다. |2211| `channel` | [채널](/docs/ko/channels)에 도착하는 메시지. `server`는 소스 MCP 서버 이름입니다. |
2232| `peer` | 다른 에이전트의 메시지: 프로세스 내 [팀원](/docs/ko/agent-teams) 또는 [교차 세션 피어](/docs/ko/cross-session-messaging), 다른 Claude Code 세션입니다. [피어 원점 필드](#peer-origin-fields)에서 필드별 의미와 신뢰 모델을 참조하세요. |2212| `peer` | 다른 에이전트의 메시지: 프로세스 내 [팀원](/docs/ko/agent-teams) 또는 [교차 세션 피어](/docs/ko/cross-session-messaging), 다른 Claude Code 세션. [피어 원점 필드](#peer-origin-fields)에서 필드별 의미와 신뢰 모델을 참조하세요. |
2233| `task-notification` | 완료된 백그라운드 작업과 같이 신선한 사용자 프롬프트 없이 도착하는 전달을 위해 주입된 합성 턴입니다. [`SDKTaskNotificationMessage`](#sdktasknotificationmessage)를 참조하세요. 애플리케이션이 [예약된 실행으로 선언](#declare-a-scheduled-run)하는 프롬프트도 이 종류를 전달합니다. 선택적 `subkind`는 알림을 발생시킨 것을 표시합니다. [작업 알림 서브종류](#task-notification-subkinds)를 참조하세요. |2213| `task-notification` | 신선한 사용자 프롬프트 없이 도착하는 전달(예: 완료된 배경 작업)을 위해 주입된 합성 턴. [`SDKTaskNotificationMessage`](#sdktasknotificationmessage)에서 해당 팔을 참조하세요. 애플리케이션이 [예약된 실행으로 선언](#declare-a-scheduled-run)하는 프롬프트도 이 종류를 전달합니다. 선택적 `subkind`는 알림을 발생시킨 것을 표시합니다. [작업 알림 서브종류](#task-notification-subkinds)를 참조하세요. |
2234| `coordinator` | [에이전트 팀](/docs/ko/agent-teams)의 팀 코디네이터의 메시지입니다. |2214| `coordinator` | [에이전트 팀](/docs/ko/agent-teams)의 팀 코디네이터의 메시지입니다. |
2235| `auto-continuation` | 명령 결과가 후속 프롬프트를 트리거하는 것과 같이 신선한 사용자 입력 없이 세션이 계속될 때 주입된 합성 턴입니다. |2215| `auto-continuation` | 신선한 사용자 입력 없이 세션이 계속될 때 주입된 합성 턴(예: 후속 프롬프트를 트리거하는 명령 결과). |
2236| `unclassified` | 출처를 결정할 수 없는 주입된 턴입니다. Claude Code가 [`SDKUserMessage`](#sdkusermessage)를 `isSynthetic: true`로 받고 다른 `kind`로 분류할 수 없으면 메시지가 도착할 때 이 종류를 설정하고 턴을 모델에 인간 입력이 아닌 비사용자 소스로 프레임합니다. 애플리케이션은 이 값을 설정하지 않아야 합니다. |2216| `unclassified` | 출처를 결정할 수 없는 주입된 턴. Claude Code v2.1.223 이상이 필요합니다. Claude Code가 `isSynthetic: true`와 다른 `kind`로 분류할 수 없는 [`SDKUserMessage`](#sdkusermessage)를 받을 때, 메시지가 도착할 때 이 종류를 설정하고 턴을 인간 입력으로 취급하는 대신 비사용자 소스로 모델에 프레임합니다. 애플리케이션은 이 값을 설정하지 않아야 합니다. |
2237 2217
2238<h3 id="task-notification-subkinds">2218<h3 id="task-notification-subkinds">
2239 작업 알림 서브종류2219 작업 알림 서브종류
2240</h3>2220</h3>
2241 2221
2242Claude Code가 작업 알림을 세션에 전달할 때, Anthropic 서버가 해당 알림이 어디에서 나왔는지 확인했으면 알림의 `origin`에 `subkind`를 설정합니다. 또한 애플리케이션이 [메시지를 예약된 실행으로 선언](#declare-a-scheduled-run)할 때 `subkind`를 설정하며, TypeScript Agent SDK v0.3.280 이상이 필요합니다. `subkind`는 Claude Code v2.1.213 이상이 필요하며 두 가지 값 중 하나를 취합니다:2222Claude Code가 작업 알림을 세션에 전달할 때, Anthropic 서버가 해당 알림이 어디에서 나왔는지 확인했으면 `origin`에 `subkind`를 설정합니다. 또한 애플리케이션이 [예약된 실행으로 메시지를 선언](#declare-a-scheduled-run)할 때 `subkind`를 설정하며, TypeScript Agent SDK v0.3.280 이상이 필요합니다. `subkind`는 Claude Code v2.1.213 이상이 필요하며, 두 가지 값 중 하나를 취합니다:
2243 2223
2244* `scheduled-trigger`: 알림은 [루틴](/docs/ko/routines)의 저장된 프롬프트로, 루틴의 트리거 중 하나가 발생했기 때문에 전달됩니다: 일정, [API 트리거](/docs/ko/routines#add-an-api-trigger), [GitHub 트리거](/docs/ko/routines#add-a-github-trigger), 또는 **지금 실행**. 애플리케이션이 [예약된 실행으로 선언](#declare-a-scheduled-run)하는 프롬프트도 이 값을 전달합니다. Claude Code는 이를 세션의 할당된 작업으로 모델에 프레임하며, [다른 작업 알림이 전달하는 알림](#sdktasknotificationmessage)과 다른 알림입니다.2224* `scheduled-trigger`: 알림은 [루틴](/docs/ko/routines)의 저장된 프롬프트이며, 루틴의 트리거 중 하나가 발생했기 때문에 전달됩니다: 일정, [API 트리거](/docs/ko/routines#add-an-api-trigger), [GitHub 트리거](/docs/ko/routines#add-a-github-trigger), 또는 **지금 실행**. 애플리케이션이 [예약된 실행으로 선언](#declare-a-scheduled-run)하는 프롬프트도 이 값을 전달합니다. Claude Code는 이를 세션의 할당된 작업으로 모델에 프레임하며, [다른 작업 알림이 전달하는 공지](#sdktasknotificationmessage)와 다른 공지를 사용합니다.
2245*2225* `peer-send-message`: 알림은 [클라우드 세션](/docs/ko/claude-code-on-the-web)이 서로 메시지를 보내는 데 사용하는 서버 측 `send_message` 도구의 메시지이며, [교차 세션 `SendMessage` 도구](/docs/ko/cross-session-messaging)가 아니며, Anthropic 서버가 두 세션이 동일한 비공개 세션 그룹에 속한다고 확인했습니다. Claude Code v2.1.224 이상이 필요합니다. 서버가 그 방식으로 확인하지 않은 `send_message` 전달은 `subkind`를 얻지 못합니다.
2246 2226
2247`peer-send-message`: 알림은 [교차 세션 `SendMessage` 도구](/docs/ko/cross-session-messaging)가 아니라 [클라우드 세션](/docs/ko/claude-code-on-the-web)이 서로 메시지를 보내는 데 사용하는 서버 측 `send_message` 도구로 다른 세션이 보낸 메시지이며, Anthropic 서버가 두 세션이 동일한 비공개 세션 그룹에 속한다고 확인했습니다. Claude Code v2.1.224 이상이 필요합니다. 서버가 그런 식으로 확인하지 않은 `send_message` 전달은 `subkind`를 얻지 못합니다.2227다른 모든 작업 알림에는 `subkind`가 없습니다. 여기에는 [PR 활동](/docs/ko/claude-code-on-the-web#how-claude-responds-to-pr-activity)이 세션에 전달되고 완료된 작업 같은 배경 이벤트가 포함됩니다. [교차 세션 `SendMessage` 도구](/docs/ko/cross-session-messaging)의 메시지는 작업 알림이 아닙니다: 동일한 머신의 세션에서 오든 다른 머신의 Anthropic 서버를 통해 오든, Claude Code는 이들에게 `kind: "peer"`를 제공하고 [피어 원점 필드](#peer-origin-fields)를 제공합니다.
2248 2228
2249다른 모든 작업 알림에는 `subkind`가 없습니다. 여기에는 [PR 활동](/docs/ko/claude-code-on-the-web#how-claude-responds-to-pr-activity)이 세션에 전달되고 완료된 작업과 같은 백그라운드 이벤트가 포함됩니다. [교차 세션 `SendMessage` 도구](/docs/ko/cross-session-messaging)의 메시지는 작업 알림이 아닙니다: 동일한 머신의 세션에서 오든 다른 머신의 Anthropic 서버를 통해 오든 Claude Code는 `kind: "peer"`를 제공하고 [피어 원점 필드](#peer-origin-fields)를 제공합니다.2229`fireReason`은 `scheduled-trigger` 알림이 발생한 이유를 `scheduled`, `manual`, `retry`, `catch_up`, 또는 `api` 같은 짧은 소문자 토큰으로 말합니다. Anthropic 서버는 [루틴](/docs/ko/routines)의 전달에 설정하며, 애플리케이션은 예약된 실행을 선언할 때 설정합니다. 어느 것도 보내지 않았을 때는 없습니다. TypeScript Agent SDK v0.3.280 이상이 필요합니다.
2250
2251`fireReason`은 `scheduled-trigger` 알림이 발생한 이유를 `scheduled`, `manual`, `retry`, `catch_up`, 또는 `api`와 같은 짧은 소문자 토큰으로 말합니다. Anthropic 서버는 [루틴](/docs/ko/routines)의 전달에 설정하고 애플리케이션은 예약된 실행을 선언할 때 설정합니다. 어느 쪽도 보내지 않으면 없습니다. TypeScript Agent SDK v0.3.280 이상이 필요합니다.
2252 2230
2253<h4 id="declare-a-scheduled-run">2231<h4 id="declare-a-scheduled-run">
2254 예약된 실행 선언2232 예약된 실행 선언
2255</h4>2233</h4>
2256 2234
2257애플리케이션이 자신의 일정에 따라 프롬프트를 실행하면 각 실행을 선언하여 Claude Code가 턴을 라이브 사용자 입력이 아니라 예약된 작업으로 모델에 프레임하도록 합니다. [`env`](#options)에서 `CLAUDE_CODE_HOST_SCHEDULED_RUN`을 `1`로 설정하여 세션을 시작한 다음 실행의 [`SDKUserMessage`](#sdkusermessage)를 `origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" }`로 보내고 `isSynthetic` 없이 보냅니다. Claude Code는 해당 변수 없이 시작된 프로세스에서 선언을 무시합니다. 또한 환경이 [`CLAUDECODE`](/docs/ko/env-vars) 또는 `CLAUDE_CODE_CHILD_SESSION`을 전달하는 프로세스에서도 무시합니다. Claude Code는 값이 1\~32개의 소문자 또는 밑줄일 때만 `fireReason`을 유지합니다. TypeScript Agent SDK v0.3.280 이상이 필요합니다.2235애플리케이션이 자신의 일정에 따라 프롬프트를 실행하면, 각 실행을 선언하여 Claude Code가 턴을 라이브 사용자 입력이 아니라 예약된 작업으로 모델에 프레임하도록 하세요. [`env`](#options)에서 `CLAUDE_CODE_HOST_SCHEDULED_RUN`을 `1`로 설정하여 세션을 시작한 다음, 실행의 [`SDKUserMessage`](#sdkusermessage)를 `origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" }`와 `isSynthetic` 없이 보내세요. Claude Code는 해당 변수 없이 시작된 프로세스에서 선언을 무시합니다. 또한 환경이 [`CLAUDECODE`](/docs/ko/env-vars) 또는 `CLAUDE_CODE_CHILD_SESSION`을 전달하는 프로세스에서도 무시합니다. Claude Code는 값이 1\~32개의 소문자 문자 또는 밑줄일 때만 `fireReason`을 유지합니다. TypeScript Agent SDK v0.3.280 이상이 필요합니다.
2258 2236
2259<h3 id="peer-origin-fields">2237<h3 id="peer-origin-fields">
2260 피어 원점 필드2238 피어 원점 필드
2261</h3>2239</h3>
2262 2240
2263`peer` 원점은 메시지를 보낸 에이전트를 식별합니다: `SendMessage`로 `main`에 보내는 프로세스 내 [팀원](/docs/ko/agent-teams) 또는 [교차 세션 피어](/docs/ko/cross-session-messaging), 다른 Claude Code 세션입니다. 교차 세션 피어는 macOS 및 Linux에서 Claude Code v2.1.224 이상이 필요합니다. [교차 세션 메시징 가용성](/docs/ko/cross-session-messaging#availability)에서 네이티브 Windows 요구 사항을 참조하세요. 교차 세션 피어는 동일한 머신에서 실행되거나 [다른 머신](/docs/ko/cross-session-messaging#message-sessions-on-other-machines)에서 또는 [클라우드](/docs/ko/claude-code-on-the-web)에서 Remote Control을 통해 메시지가 도착할 때 실행될 수 있습니다. 두 종류의 발신자는 필드를 다르게 채웁니다:2241`peer` 원점은 메시지를 보낸 에이전트를 식별합니다: `SendMessage`를 사용하여 `main`으로 보내는 프로세스 내 [팀원](/docs/ko/agent-teams) 또는 [교차 세션 피어](/docs/ko/cross-session-messaging), 다른 Claude Code 세션. 교차 세션 피어는 macOS 및 Linux에서 Claude Code v2.1.224 이상이 필요합니다. [교차 세션 메시징 가용성](/docs/ko/cross-session-messaging#availability)에서 네이티브 Windows 요구 사항을 참조하세요. 교차 세션 피어는 동일한 머신에서 실행되거나, [다른 머신](/docs/ko/cross-session-messaging#message-sessions-on-other-machines)에서 또는 [클라우드](/docs/ko/claude-code-on-the-web)에서 Remote Control을 통해 메시지가 도착할 때 실행될 수 있습니다. 두 종류의 발신자는 필드를 다르게 채웁니다:
2264
2265* `from`: 팀원의 이름 또는 교차 세션 피어의 발신자 주소입니다. [일방향 교차 머신 메시지](/docs/ko/cross-session-messaging#message-sessions-on-other-machines)의 경우 발신자는 회신 주소가 없고 `from`은 `"unknown"`입니다. 값은 발신자가 작성한 것입니다. `verifiedPeerPid`는 확인된 신원입니다.
2266*
2267
2268`fromMode`: 발신 세션의 권한 클래스로, `bypass` 또는 `prompting`이며, [데스크톱 앱](/docs/ko/desktop#work-across-sessions)과 같이 세션 간에 피어 메시지를 중계하는 호스트에서 선언합니다. Claude Code는 [인바운드 제어](/docs/ko/cross-session-messaging#control-inbound-messages)를 적용할 때 수신 세션에서 읽습니다. Agent SDK v0.3.234 이상이 필요합니다.
2269
2270* `senderTaskId`: 팀원의 작업 ID입니다. 교차 세션 피어의 경우 없습니다.
2271*
2272
2273`name`: 발신자의 표시 이름으로, Claude Code에서 정규화됩니다: Unicode 제어, 형식, 대리, 줄 또는 단락 구분 기호 코드 포인트를 제거한 다음 결과를 자르고 64개 코드 포인트로 제한하고 줄임표를 추가합니다. Claude Code v2.1.205 이상이 필요합니다.
2274
2275*
2276
2277`body`: 피어 봉투가 제거된 디코딩된 메시지 본문로, 모델이 보는 것과 바이트 정확합니다. 팀원 메시지의 경우 항상 있습니다. 교차 세션 피어의 경우 턴이 정확히 Claude Code에서 형성한 하나의 피어 봉투일 때만 있습니다. 메시지 텍스트를 다시 구문 분석하는 대신 `name`과 `body`를 렌더링합니다. Claude Code v2.1.205 이상이 필요합니다.
2278
2279*
2280
2281`fromSession`: 발신자의 호스트 열기 가능 세션 ID로, 발신자의 호스트에서 설정하여 UI가 발신 세션으로 다시 링크할 수 있습니다. `from`과 마찬가지로 발신자가 주장한 것입니다: 네비게이션 대상으로만 사용하고 발신자의 신원 증명으로 취급하지 마세요. Claude Code v2.1.216 이상이 필요합니다.
2282
2283*
2284 2242
2285`verifiedPeerPid`: 이 세션의 교차 세션 메시징 소켓에 연결된 프로세스의 프로세스 ID로, 커널에서 확인하고 페이로드가 아닌 연결 자체에서 읽습니다. 발신자를 식별하려면 `from`이 아니라 이를 사용합니다: `from`은 동일한 사용자 프로세스에서 위조 가능합니다. 필드는 Claude Code가 확인할 수 없을 때 없으며, 예를 들어 Windows 또는 비소켓 수신에서 없으므로 없는 값은 발신자가 확인되지 않음을 의미합니다. 중계된 트래픽의 경우 메시지의 작성자가 아니라 중계를 식별하고 프로세스 ID는 재활용 가능하므로 인증 토큰이 아니라 출처로 취급합니다. Claude Code v2.1.216 이상이 필요합니다.2243* `from`: 팀원의 이름 또는 교차 세션 피어의 발신자 주소. [일방향 교차 머신 메시지](/docs/ko/cross-session-messaging#message-sessions-on-other-machines)의 경우, 발신자는 회신 주소가 없으며 `from`은 `"unknown"`입니다. 값은 발신자가 작성한 것입니다. `verifiedPeerPid`는 확인된 신원입니다.
2244* `fromMode`: 발신 세션의 권한 클래스이며, `bypass` 또는 `prompting`이며, 세션 간에 피어 메시지를 중계하는 호스트(예: [데스크톱 앱](/docs/ko/desktop#work-across-sessions))에서 선언됩니다. Claude Code는 [인바운드 제어](/docs/ko/cross-session-messaging#control-inbound-messages)를 적용할 때 수신 세션에서 읽습니다. Agent SDK v0.3.234 이상이 필요합니다.
2245* `senderTaskId`: 팀원의 작업 ID. 교차 세션 피어에는 없습니다.
2246* `name`: 발신자의 표시 이름이며, Claude Code에서 정규화됩니다: Unicode 제어, 형식, 대리, 줄 또는 단락 구분자 코드 포인트를 제거한 다음 결과를 자르고 64개 코드 포인트로 제한하며 줄임표를 추가합니다. Claude Code v2.1.205 이상이 필요합니다.
2247* `body`: 피어 봉투가 제거된 디코딩된 메시지 본문이며, 모델이 보는 것과 바이트 정확합니다. 팀원 메시지에는 항상 있습니다. 교차 세션 피어의 경우, 턴이 정확히 Claude Code에서 형성한 하나의 피어 봉투일 때만 있습니다. 메시지 텍스트를 다시 구문 분석하는 대신 `name`과 `body`를 렌더링하세요. Claude Code v2.1.205 이상이 필요합니다.
2248* `fromSession`: 발신자의 호스트 열기 가능 세션 ID이며, 발신자의 호스트에서 설정되므로 UI가 발신 세션으로 다시 링크할 수 있습니다. `from`처럼, 발신자가 주장한 것입니다: 발신자의 신원 증명으로 취급하지 말고 네비게이션 대상으로만 사용하세요. Claude Code v2.1.216 이상이 필요합니다.
2249* `verifiedPeerPid`: 이 세션의 교차 세션 메시징 소켓에 연결된 프로세스의 프로세스 ID이며, 커널에서 확인되고 페이로드가 아니라 연결 자체에서 읽습니다. 발신자를 식별하려면 `from`이 아니라 이를 사용하세요: `from`은 동일한 사용자 프로세스에서 위조 가능합니다. 필드는 Claude Code가 확인할 수 없을 때(예: Windows 또는 비소켓 수신)는 없으므로 없는 값은 발신자가 확인되지 않음을 의미합니다. 중계된 트래픽의 경우 메시지의 작성자가 아니라 중계를 식별하며, 프로세스 ID는 재사용 가능하므로 인증 토큰이 아니라 출처로 취급하세요. Claude Code v2.1.216 이상이 필요합니다.
2286 2250
2287<h2 id="hook-types">2251<h2 id="hook-types">
2288 훅 타입2252 훅 타입
3222};3186};
3223```3187```
3224 3188
3225선택적 타임아웃 및 백그라운드 실행을 포함한 Bash 명령을 실행합니다. 작업 디렉터리는 다중 턴 세션의 이후 턴에서 실행되는 명령을 포함하여 명령 간에 유지됩니다. 내보낸 환경 변수와 같은 셸 상태는 유지되지 않습니다. 어느 디렉터리 변경이 유지되는지에 대한 제한 사항은 [명령 간에 유지되는 것](/docs/ko/tools-reference#what-persists-between-commands)을 참조하세요. 포그라운드 상한을 설정하는 것에 대해서는 [타임아웃 및 출력 제한](/docs/ko/tools-reference#timeout-and-output-limits)을 참조하세요. 백그라운드 시간 제한에 대해서는 [백그라운드 명령](/docs/ko/tools-reference#background-commands)을 참조하세요.3189선택적 타임아웃 및 백그라운드 실행을 포함한 Bash 명령을 실행합니다. 작업 디렉터리는 다중 턴 세션의 이후 턴에서 실행되는 명령을 포함하여 명령 간에 유지됩니다. 내보낸 환경 변수와 같은 셸 상태는 유지되지 않습니다. 어느 디렉터리 변경이 유지되는지에 대한 제한 사항은 [명령 간에 유지되는 것](/docs/ko/tools-reference#what-persists-between-commands)을 참조하세요. 포그라운드 상한을 설정하는 것에 대해서는 [타임아웃 및 출력 제한](/docs/ko/tools-reference#timeout-and-output-limits)을 참조하세요. 백그라운드 시간 제한에 대해서는 [백그라운드 명령의 시간 제한](/docs/ko/tools-reference#time-limit-for-background-commands)을 참조하세요.
3226 3190
3227<h3 id="monitor">3191<h3 id="monitor">
3228 Monitor3192 Monitor
4126 4090
4127`timedOutAfterMs`는 밀리초 단위의 타임아웃이며, 명령이 타임아웃에 도달하고 명시적으로 시작하지 않고 백그라운드로 이동했을 때 설정됩니다. `backgroundCwdHint`는 백그라운드 명령에 `cd`, `pushd`, `popd` 또는 `chdir`과 같은 디렉토리 변경 내장이 포함되어 있을 때 설정되며, 세션 작업 디렉토리가 변경되지 않았음을 나타냅니다. 두 필드 모두 Claude Code v2.1.210 이상이 필요합니다.4091`timedOutAfterMs`는 밀리초 단위의 타임아웃이며, 명령이 타임아웃에 도달하고 명시적으로 시작하지 않고 백그라운드로 이동했을 때 설정됩니다. `backgroundCwdHint`는 백그라운드 명령에 `cd`, `pushd`, `popd` 또는 `chdir`과 같은 디렉토리 변경 내장이 포함되어 있을 때 설정되며, 세션 작업 디렉토리가 변경되지 않았음을 나타냅니다. 두 필드 모두 Claude Code v2.1.210 이상이 필요합니다.
4128 4092
4129포그라운드에서 실행 중인 서브에이전트가 백그라운드 명령을 소유할 때, 명령은 [해당 서브에이전트의 실행이 끝날 때 종료됩니다](/docs/ko/tools-reference#background-commands). Claude Code는 이러한 명령에 `backgroundEndsWithFinalResponse`를 `true`로 설정하고, 명령이 턴을 유지할 때 필드를 생략합니다. 주 대화 또는 백그라운드 서브에이전트에서 시작한 명령처럼 필드는 Claude Code v2.1.227 이상이 필요합니다.4093포그라운드에서 실행 중인 서브에이전트가 백그라운드 명령을 소유할 때, 명령은 [해당 서브에이전트의 실행이 끝날 때 종료됩니다](/docs/ko/tools-reference#when-a-background-command-stops). Claude Code는 이러한 명령에 `backgroundEndsWithFinalResponse`를 `true`로 설정하고, 명령이 턴을 유지할 때 필드를 생략합니다. 주 대화 또는 백그라운드 서브에이전트에서 시작한 명령처럼 필드는 Claude Code v2.1.227 이상이 필요합니다.
4130 4094
4131Claude Code는 `gitOperation.commit.branch`를 git의 커밋 요약 줄에 명명된 분기로 설정하고, 분리된 HEAD에서 만든 커밋의 경우 생략합니다. 이 필드는 Agent SDK v0.3.227 이상이 필요합니다. Claude Code는 `gh pr reopen` 명령을 `reopened` PR 작업으로 보고하며, 이는 Agent SDK v0.3.234 이상이 필요합니다.4095Claude Code는 `gitOperation.commit.branch`를 git의 커밋 요약 줄에 명명된 분기로 설정하고, 분리된 HEAD에서 만든 커밋의 경우 생략합니다. 이 필드는 Agent SDK v0.3.227 이상이 필요합니다. Claude Code는 `gh pr reopen` 명령을 `reopened` PR 작업으로 보고하며, 이는 Agent SDK v0.3.234 이상이 필요합니다.
4132 4096