255| `duration_ms` | 재시도를 포함한 벽시계 지속 시간 | |255| `duration_ms` | 재시도를 포함한 벽시계 지속 시간 | |
256| `ttft_ms` | 첫 번째 토큰까지의 시간(밀리초) | |256| `ttft_ms` | 첫 번째 토큰까지의 시간(밀리초) | |
257| `first_content_ms` | 요청 시작부터 성공한 시도의 첫 번째 콘텐츠 블록까지의 시간(밀리초). 비스트리밍 경로로 폴백한 요청에서는 없음. Claude Code v2.1.268 이상 필요 | |257| `first_content_ms` | 요청 시작부터 성공한 시도의 첫 번째 콘텐츠 블록까지의 시간(밀리초). 비스트리밍 경로로 폴백한 요청에서는 없음. Claude Code v2.1.268 이상 필요 | |
258| `input_tokens` | API 사용 블록의 입력 토큰 수 | |258| `input_tokens` | API 사용 블록의 입력 토큰 수. 프롬프트 캐시에서 읽거나 프롬프트 캐시에 기록된 토큰은 제외되며, 이는 `cache_read_tokens` 및 `cache_creation_tokens`에 보고됩니다 | |
259| `output_tokens` | 출력 토큰 수 | |259| `output_tokens` | 출력 토큰 수 | |
260| `cache_read_tokens` | 프롬프트 캐시에서 읽은 토큰 | |260| `cache_read_tokens` | 프롬프트 캐시에서 읽은 토큰 | |
261| `cache_creation_tokens` | 프롬프트 캐시에 기록된 토큰 | |261| `cache_creation_tokens` | 프롬프트 캐시에 기록된 토큰 | |
305* Read, Edit, Write, Bash, WebFetch, WebSearch 및 MCP 도구 이외의 도구에 대한 호출305* Read, Edit, Write, Bash, WebFetch, WebSearch 및 MCP 도구 이외의 도구에 대한 호출
306* 이미지, PDF 또는 콘텐츠가 변경되지 않은 파일의 재읽기와 같이 파일 텍스트 이외의 것을 반환하는 Read306* 이미지, PDF 또는 콘텐츠가 변경되지 않은 파일의 재읽기와 같이 파일 텍스트 이외의 것을 반환하는 Read
307* `OTEL_LOG_TOOL_DETAILS=1`도 설정하지 않으면 Edit 또는 Write 호출307* `OTEL_LOG_TOOL_DETAILS=1`도 설정하지 않으면 Edit 또는 Write 호출
308* Claude Code가 [즉시 대기열에 있는 메시지를 보내기](/docs/ko/interactive-mode#when-claude-code-sends-what-you-queued) 위해 호출을 실행하는 동안 턴을 중단했기 때문에 백그라운드로 이동한 WebFetch 또는 WebSearch 호출. Claude는 도구 범위가 끝난 후 해당 결과를 나중에 받습니다.308* 대기 중인 메시지가 Claude에 전달될 수 있도록 Claude Code가 실행 중에 백그라운드로 옮긴 WebFetch 또는 WebSearch 호출. 나중에 도착하는 결과도 기록되지 않습니다. Claude Code가 호출을 옮기는 시점은 터미널의 경우 [Claude Code가 대기열에 넣은 항목을 보내는 시점](/docs/ko/interactive-mode#when-claude-code-sends-what-you-queued)을, Agent SDK 세션의 경우 [`priority` 필드](/docs/ko/agent-sdk/typescript#sdkusermessage)를 참조하세요
309 309
310이벤트는 각각 콘텐츠 제한(기본값 60KB)에서 잘린 이러한 속성을 전달합니다. `Gated by`는 `OTEL_LOG_TOOL_CONTENT=1` 위에 속성이 필요한 변수의 이름을 지정하고, Edit 및 Write의 경우 해당 변수는 속성이 아닌 이벤트 자체를 게이트합니다.310이벤트는 각각 콘텐츠 제한(기본값 60KB)에서 잘린 이러한 속성을 전달합니다. `Gated by`는 `OTEL_LOG_TOOL_CONTENT=1` 위에 속성이 필요한 변수의 이름을 지정하고, Edit 및 Write의 경우 해당 변수는 속성이 아닌 이벤트 자체를 게이트합니다.
311 311
358 358
359<span id="new-context-gates" />359<span id="new-context-gates" />
360 360
361**상세 베타 추적의 콘텐츠 속성**
362
361<Note>363<Note>
362 `new_context`, `system_prompt_preview`, `user_system_prompt`, `tool_input` 및 `response.model_output`과 같은 추가 콘텐츠 포함 속성은 상세 베타 추적이 활성화되었을 때만 내보내집니다. 이들은 안정적인 범위 스키마의 일부가 아닙니다.364 `new_context`, `system_reminders`, `system_prompt_preview`, `user_system_prompt`, `tool_input` 및 `response.model_output`과 같은 추가 콘텐츠 포함 속성은 상세 베타 추적이 활성화되었을 때만 내보내집니다. 이들은 안정적인 범위 스키마의 일부가 아닙니다.
365</Note>
363 366
364 `new_context`의 게이트는 이를 전달하는 범위에 따라 다르며, 각 복사본은 콘텐츠 제한(기본값 60KB)에서 잘립니다. `claude_code.tool` 범위에서 도구에 관계없이 해당 도구 호출의 결과를 전달하며 `OTEL_LOG_TOOL_CONTENT=1`이 필요합니다. `claude_code.interaction` 범위에서 사용자 프롬프트를 전달하고, `claude_code.llm_request` 범위에서 해당 요청의 새 사용자 메시지 및 도구 결과를 전달합니다. 둘 다 `OTEL_LOG_USER_PROMPTS=1`이 필요합니다.367이러한 속성은 아래 범위에 나타나며, `Gated by`는 상세 베타 추적 외에 속성에 필요한 변수의 이름을 지정합니다. 콘텐츠 제한(기본값 60KB)보다 긴 값은 잘립니다.
365 368
366 `user_system_prompt`는 추가로 `OTEL_LOG_USER_PROMPTS=1`이 필요합니다. `systemPrompt` SDK 옵션 또는 `--system-prompt` 및 `--append-system-prompt` 플래그를 통해 제공하는 시스템 프롬프트 텍스트만 전달하며, 콘텐츠 제한(기본값 60KB)에서 잘리고, 요청당이 아닌 세션당 한 번 내보내집니다.369| 속성 | 범위 | 설명 | 게이트 |
367</Note>370| - | - | - | - |
371| `new_context` | `claude_code.interaction` | 사용자 프롬프트 | `OTEL_LOG_USER_PROMPTS` |
372| `new_context` | `claude_code.llm_request` | 요청과 함께 전송된 새 사용자 메시지 및 도구 결과 | `OTEL_LOG_USER_PROMPTS` |
373| `system_reminders` | `claude_code.llm_request` | 요청의 새 메시지 중 [시스템 리마인더](/docs/ko/glossary#system-reminder)의 텍스트 | `OTEL_LOG_USER_PROMPTS` |
374| `system_prompt_preview` | `claude_code.llm_request` | 요청과 함께 전송된 전체 시스템 프롬프트의 처음 500자 | `OTEL_LOG_USER_PROMPTS` |
375| `user_system_prompt` | `claude_code.llm_request` | `systemPrompt` SDK 옵션 또는 `--system-prompt` 및 `--append-system-prompt` 플래그를 통해 제공하는 시스템 프롬프트 텍스트만 해당. 요청당이 아닌 세션당 한 번 내보내짐 | `OTEL_LOG_USER_PROMPTS` |
376| `response.model_output` | `claude_code.llm_request` | 요청에 대한 모델 응답의 텍스트 | `OTEL_LOG_USER_PROMPTS` |
377| `new_context` | `claude_code.tool` | 도구에 관계없이 해당 도구 호출의 결과 | `OTEL_LOG_TOOL_CONTENT` |
378| `tool_input` | `claude_code.tool` | 도구 호출의 직렬화된 입력 | `OTEL_LOG_TOOL_DETAILS` |
379
380`OTEL_LOG_USER_PROMPTS=1`을 설정한 상세 베타 추적에서 Claude Code는 콘텐츠 제한에서 잘린 전체 시스템 프롬프트를 전달하는 `claude_code.system_prompt` 이벤트도 내보냅니다. 이 이벤트는 세션이 각각의 고유한 시스템 프롬프트를 처음 보낼 때 도착하며, 압축 후에 다시 도착합니다.
368 381
369<h3 id="dynamic-headers">382<h3 id="dynamic-headers">
370 동적 헤더383 동적 헤더
584| `OTEL_RESOURCE_ATTRIBUTES`의 키 | 설정한 사용자 정의 속성, 예: `department` 또는 `team.id`. [다중 팀 조직 지원](#multi-team-organization-support) 참조 | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (기본값: true) |597| `OTEL_RESOURCE_ATTRIBUTES`의 키 | 설정한 사용자 정의 속성, 예: `department` 또는 `team.id`. [다중 팀 조직 지원](#multi-team-organization-support) 참조 | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (기본값: true) |
585| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | 세션 저장소의 ID, `origin` 원격에서 파생됨. [저장소 속성](#repository-attributes) 참조 | `OTEL_METRICS_INCLUDE_REPOSITORY` (기본값: false). Claude Code v2.1.269 이상 필요 |598| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | 세션 저장소의 ID, `origin` 원격에서 파생됨. [저장소 속성](#repository-attributes) 참조 | `OTEL_METRICS_INCLUDE_REPOSITORY` (기본값: false). Claude Code v2.1.269 이상 필요 |
586 599
587Claude Code가 [Claude 앱 게이트웨이](/docs/ko/claude-apps-gateway)에 로그인되어 있으면, CLI는 게이트웨이 세션의 인증된 ID로 내보내기를 스탬프합니다: `user.id`는 익명 설치 식별자가 아닌 IdP 주체이고, `user.email`은 로그인한 이메일이며, `user.groups`는 쉼표로 구분된 문자열로 IdP 그룹 멤버십을 전달합니다. 각 내보내기는 또한 `identity.source: gateway-oidc`를 전달합니다. 게이트웨이 ID가 마지막에 적용되므로 `OTEL_RESOURCE_ATTRIBUTES`를 통해 설정된 `user.*` 및 `identity.*` 키는 게이트웨이 세션에서 무시됩니다.600`/login`을 통해 [Claude 앱 게이트웨이](/docs/ko/claude-apps-gateway)에 로그인한 세션에서 CLI는 인증된 ID로 내보내기를 스탬프합니다: `user.id`는 IdP 주체, `user.email`은 로그인한 이메일, `user.groups`는 IdP 그룹 멤버십을 쉼표로 구분된 문자열로 전달합니다. 각 내보내기는 또한 `identity.source: gateway-oidc`를 전달합니다. 게이트웨이 ID가 마지막에 적용되므로 `OTEL_RESOURCE_ATTRIBUTES`를 통해 설정된 `user.*` 및 `identity.*` 키는 해당 세션에서 무시됩니다.
588 601
589이벤트는 추가로 다음 속성을 포함합니다. 이들은 무한 카디널리티를 유발하므로 메트릭에 절대 첨부되지 않습니다:602게이트웨이를 통해 연결되는 Claude Desktop 및 Cowork 세션의 ID 속성에 대해서는 [게이트웨이 `telemetry` 참조](/docs/ko/claude-apps-gateway-config#telemetry)를 참조하세요.
603
604이벤트는 추가로 다음 속성을 포함합니다. 이들은 무제한 카디널리티를 야기할 수 있으므로 메트릭에 절대 첨부되지 않습니다:
590 605
591* `prompt.id`: 사용자 프롬프트를 다음 프롬프트까지의 모든 후속 이벤트와 연관시키는 UUID. [이벤트 상관 속성](#event-correlation-attributes) 참조.606* `prompt.id`: 사용자 프롬프트를 다음 프롬프트까지의 모든 후속 이벤트와 연관시키는 UUID. [이벤트 상관 속성](#event-correlation-attributes) 참조.
592* `workspace.host_paths`: 데스크톱 앱에서 선택한 호스트 작업 공간 디렉토리, 문자열 배열로607* `workspace.host_paths`: 데스크톱 앱에서 선택한 호스트 작업 공간 디렉토리, 문자열 배열로
593* `workflow.run_id`: [Workflow](/docs/ko/workflows) 도구 실행에 속하는 에이전트가 내보낸 API 및 도구 이벤트에서 `wf_` 접두사가 붙은 실행 식별자. 하나의 `workflow.run_id`로 이벤트를 필터링하면 해당 실행의 API 요청 및 도구 결과를 재구성합니다. 식별자는 워크플로우 스크립트가 생성하는 에이전트와 그 에이전트가 차례로 생성하는 모든 에이전트(예: 스킬 호출)를 포함합니다. Workflow 도구 결과에서 보고된 실행 식별자와 일치합니다. 다른 모든 이벤트에는 없습니다. Claude Code v2.1.202 이상 필요608* `workflow.run_id`: 실행 식별자, `wf_` 접두사가 붙음, API 및 [Workflow](/docs/ko/workflows) 도구 실행에 속하는 에이전트가 내보낸 도구 이벤트. 하나의 `workflow.run_id`로 이벤트를 필터링하면 해당 실행의 API 요청 및 도구 결과를 재구성합니다. 식별자는 워크플로우 스크립트가 생성하는 에이전트 및 해당 에이전트가 차례로 생성하는 모든 에이전트(예: 스킬 호출)를 포함합니다. Workflow 도구 결과에서 보고된 실행 식별자와 일치합니다. 다른 모든 이벤트에는 없습니다. Claude Code v2.1.202 이상 필요
594* `workflow.name`: 워크플로우의 이름, 스크립트의 `meta.name`, `workflow.run_id`와 함께 내보냄. 기본 제공 워크플로우 이름은 수정되지 않은 기본 제공 스크립트를 실행할 때 그대로 나타납니다. 사용자 작성 이름(기본 제공 스크립트의 편집된 복사본 포함)은 `OTEL_LOG_TOOL_DETAILS=1`이 설정되지 않으면 `custom`으로 대체됩니다. Claude Code v2.1.202 이상 필요609* `workflow.name`: 워크플로우의 이름, 스크립트의 `meta.name`, `workflow.run_id`와 함께 내보냄. 기본 제공 워크플로우 이름은 수정되지 않은 기본 제공 스크립트를 실행할 때 그대로 나타납니다. 사용자 작성 이름(기본 제공 스크립트의 편집된 복사본 포함)은 `OTEL_LOG_TOOL_DETAILS=1`이 설정되지 않은 경우 `custom`으로 대체됩니다. Claude Code v2.1.202 이상 필요
595 610
596<h4 id="repository-attributes">611<h4 id="repository-attributes">
597 저장소 속성612 저장소 속성
598</h4>613</h4>
599 614
600`OTEL_METRICS_INCLUDE_REPOSITORY=true`를 설정하여 메트릭 및 이벤트에 세션의 저장소 ID를 태그하면, 공유 수집기가 저장소별로 사용량을 속성화할 수 있습니다. Claude Code v2.1.269 이상 필요.615`OTEL_METRICS_INCLUDE_REPOSITORY=true`를 설정하여 메트릭 및 이벤트에 세션의 저장소 ID를 태그하면 공유 수집기가 저장소별 사용량을 속성화할 수 있습니다. Claude Code v2.1.269 이상 필요.
601 616
602Claude Code는 저장소의 `origin` 원격에서 세션당 한 번 이러한 속성을 파생합니다. 저장소의 HTTPS 및 SSH 원격이 GitHub, GitLab, Bitbucket Cloud에서처럼 동일한 호스트와 동일한 경로를 지정할 때, 둘 다 동일한 값을 생성합니다:617Claude Code는 저장소의 `origin` 원격에서 세션당 한 번 이러한 속성을 파생합니다. 저장소의 HTTPS 및 SSH 원격이 GitHub, GitLab, Bitbucket Cloud에서처럼 동일한 호스트와 동일한 경로를 지정할 때 둘 다 동일한 값을 생성합니다:
603 618
604| 속성 | 값 |619| 속성 | 값 |
605| - | - |620| - | - |
606| `vcs.repository.url.full` | 저장소의 브라우저 URL, `.git` 제외, 예: `https://github.com/example-org/example-repo` |621| `vcs.repository.url.full` | 저장소의 브라우저 URL, `.git` 제외, 예: `https://github.com/example-org/example-repo` |
607| `vcs.owner.name` | 소유자 또는 그룹 경로, 예: `example-org`; 원격 경로가 단일 세그먼트를 가질 때 생략됨 |622| `vcs.owner.name` | 소유자 또는 그룹 경로, 예: `example-org`; 원격 경로가 단일 세그먼트일 때 생략됨 |
608| `vcs.repository.name` | 기본 저장소 이름, 예: `example-repo` |623| `vcs.repository.name` | 기본 저장소 이름, 예: `example-repo` |
609| `vcs.provider.name` | Claude Code가 원격의 호스트 또는 URL 형태를 이러한 공급자 중 하나로 인식할 때 `github`, `gitlab`, `bitbucket`, 또는 `gitea`; 그 외의 경우 생략됨 |624| `vcs.provider.name` | Claude Code가 원격의 호스트 또는 URL 형태를 해당 공급자 중 하나로 인식할 때 `github`, `gitlab`, `bitbucket`, 또는 `gitea`; 그 외의 경우 생략됨 |
610 625
611값은 소문자로 변환되며, 원격 URL의 자격 증명, 쿼리 문자열, 조각은 절대 나타나지 않습니다. 세션에 `origin` 원격이 없거나, 원격이 URL 형태가 아니거나, 유일한 포함 저장소가 홈 디렉토리일 때 속성은 생략됩니다.626값은 소문자로 변환되며, 원격 URL의 자격 증명, 쿼리 문자열, 조각은 절대 나타나지 않습니다. 세션에 `origin` 원격이 없을 때, 원격이 URL 형태가 아닐 때, 또는 유일한 포함 저장소가 홈 디렉토리일 때 속성이 생략됩니다.
612 627
613[클라우드 세션](/docs/ko/claude-code-on-the-web)에서 이러한 속성을 얻으려면, `OTEL_METRICS_INCLUDE_REPOSITORY`를 포함한 원격 측정 변수를 [클라우드 환경](/docs/ko/cloud-environments#set-environment-variables)에 설정합니다. 또한 환경의 [네트워크 액세스](/docs/ko/cloud-environments#network-access)에서 수집기의 도메인을 허용합니다.628[클라우드 세션](/docs/ko/claude-code-on-the-web)에서 이러한 속성을 얻으려면 `OTEL_METRICS_INCLUDE_REPOSITORY`를 포함한 원격 측정 변수를 [클라우드 환경](/docs/ko/cloud-environments#set-environment-variables)에 설정하세요. 또한 환경의 [네트워크 액세스](/docs/ko/cloud-environments#network-access)에서 수집기의 도메인을 허용하세요.
614 629
615[`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support)에서 선언한 `vcs.*` 키는 해당 키의 파생된 값을 대체합니다. `vcs.repository.url.full`을 선언하면, Claude Code는 절대 원격을 읽지 않으며 선언한 키만 보고합니다.630[`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support)에서 선언한 `vcs.*` 키는 해당 키의 파생된 값을 대체합니다. `vcs.repository.url.full`을 선언하면 Claude Code는 절대 원격을 읽지 않으며 선언한 키만 보고합니다.
616 631
617HTTPS 및 SSH 클론이 서로 다른 값을 보고하는 경우, 예를 들어 HTTPS 클론 URL이 SSH URL에 없는 경로 접두사를 전달하는 자체 호스팅 설치의 경우, `OTEL_RESOURCE_ATTRIBUTES`에서 `vcs.repository.url.full`을 보고하려는 다른 모든 `vcs.*` 키와 함께 선언합니다. 그러면 모든 클론이 선언한 ID를 보고합니다.632하나의 저장소의 HTTPS 및 SSH 클론이 서로 다른 값을 보고할 경우, 예를 들어 HTTPS 클론 URL이 SSH URL에 없는 경로 접두사를 전달하는 자체 호스팅 설치의 경우, `OTEL_RESOURCE_ATTRIBUTES`에서 `vcs.repository.url.full`을 보고하려는 다른 모든 `vcs.*` 키와 함께 선언하세요. 그러면 모든 클론이 선언한 ID를 보고합니다.
618 633
619속성은 자신의 내보내기로만 흐릅니다; Anthropic의 원격 측정은 모든 `vcs.*` 키를 삭제합니다.634속성은 자신의 내보내기로만 흐릅니다; Anthropic의 원격 측정은 모든 `vcs.*` 키를 삭제합니다.
620 635
622 메트릭637 메트릭
623</h3>638</h3>
624 639
625Claude Code는 다음 메트릭을 내보냅니다. 단위 열은 각 메트릭에 첨부된 OpenTelemetry 단위 문자열을 보여줍니다; 카운트 메트릭은 없습니다.640Claude Code는 다음 메트릭을 내보냅니다. Unit 열은 각 메트릭에 첨부된 OpenTelemetry 단위 문자열을 보여줍니다; 카운트 메트릭은 없습니다.
626 641
627| 메트릭 이름 | 설명 | 단위 |642| 메트릭 이름 | 설명 | 단위 |
628| - | - | - |643| - | - | - |
635| `claude_code.code_edit_tool.decision` | 코드 편집 도구 권한 결정 수 | 없음 |650| `claude_code.code_edit_tool.decision` | 코드 편집 도구 권한 결정 수 | 없음 |
636| `claude_code.active_time.total` | 총 활성 시간 | s |651| `claude_code.active_time.total` | 총 활성 시간 | s |
637 652
638`prometheus`가 `OTEL_METRICS_EXPORTER`에 나열된 유일한 내보내기일 때, Claude Code는 스크래이프가 유효한 Prometheus 텍스트 형식으로 유지되도록 내보낸 메트릭에서 `USD`, `tokens`, `s` 단위를 생략합니다. 메트릭 이름은 변경되지 않으며, `otlp,prometheus`와 같이 내보내기를 결합하는 구성은 단위를 유지합니다. v2.1.216 이전에는 Prometheus 스크래이프에 일부 스크래이퍼가 거부한 OpenMetrics 전용 `# UNIT` 라인이 포함되었습니다.653`prometheus`가 `OTEL_METRICS_EXPORTER`에 나열된 유일한 내보내기일 때 Claude Code는 스크래이프가 유효한 Prometheus 텍스트 형식으로 유지되도록 내보낸 메트릭에서 `USD`, `tokens`, `s` 단위를 생략합니다. 메트릭 이름은 변경되지 않으며, `otlp,prometheus`와 같이 내보내기를 결합하는 구성은 단위를 유지합니다. v2.1.216 이전에는 Prometheus 스크래이프에 일부 스크래이퍼가 거부한 OpenMetrics 전용 `# UNIT` 라인이 포함되었습니다.
639 654
640<h3 id="metric-details">655<h3 id="metric-details">
641 메트릭 세부 정보656 메트릭 세부 정보
652**속성**:667**속성**:
653 668
654* 모든 [표준 속성](#standard-attributes)669* 모든 [표준 속성](#standard-attributes)
655* `start_type`: 세션이 시작된 방식. `"fresh"`, `"resume"`, `"continue"`, 또는 `"agents_view"` 중 하나. `"agents_view"` 값은 `claude agents` 대시보드 프로세스, 대화형 세션이 아닌 사용자 시작 로컬 UI를 식별합니다. 대시보드에서 UI 프로세스 시작을 대화형 세션과 분리하려면 이 값으로 필터링합니다.670* `start_type`: 세션이 시작된 방식. `"fresh"`, `"resume"`, `"continue"`, 또는 `"agents_view"` 중 하나. `"agents_view"` 값은 `claude agents` 대시보드 프로세스, 대화형 세션이 아닌 사용자 시작 로컬 UI를 식별합니다. 대시보드에서 UI 프로세스 시작을 대화형 세션과 분리하려면 이 값으로 필터링하세요.
656 671
657<h4 id="lines-of-code-counter">672<h4 id="lines-of-code-counter">
658 코드 라인 카운터673 코드 라인 카운터
703* `effort`: 요청에 적용된 [노력 수준](/docs/ko/model-config#adjust-effort-level): `"low"`, `"medium"`, `"high"`, `"xhigh"`, 또는 `"max"`. Claude Code가 노력 수준을 보내지 않을 때 없음, 예를 들어 노력을 지원하지 않는 모델에서.718* `effort`: 요청에 적용된 [노력 수준](/docs/ko/model-config#adjust-effort-level): `"low"`, `"medium"`, `"high"`, `"xhigh"`, 또는 `"max"`. Claude Code가 노력 수준을 보내지 않을 때 없음, 예를 들어 노력을 지원하지 않는 모델에서.
704* `agent.name`: 요청을 발급한 하위 에이전트 유형. 기본 제공 에이전트 이름과 공식 마켓플레이스 플러그인의 에이전트는 그대로 나타납니다. 다른 사용자 정의 에이전트 이름은 `"custom"`으로 대체됩니다. 요청이 명명된 하위 에이전트 유형에 의해 발급되지 않았을 때 없음.719* `agent.name`: 요청을 발급한 하위 에이전트 유형. 기본 제공 에이전트 이름과 공식 마켓플레이스 플러그인의 에이전트는 그대로 나타납니다. 다른 사용자 정의 에이전트 이름은 `"custom"`으로 대체됩니다. 요청이 명명된 하위 에이전트 유형에 의해 발급되지 않았을 때 없음.
705* `skill.name`: 요청에 대해 활성화된 스킬, Skill 도구 또는 `/` 명령으로 설정되거나 생성된 하위 에이전트에 의해 상속됨. 기본 제공, 번들, 사용자 정의, 공식 마켓플레이스 플러그인 스킬 이름은 그대로 나타납니다. 타사 플러그인 스킬 이름은 `"third-party"`로 대체됩니다. 활성 스킬이 없을 때 없음.720* `skill.name`: 요청에 대해 활성화된 스킬, Skill 도구 또는 `/` 명령으로 설정되거나 생성된 하위 에이전트에 의해 상속됨. 기본 제공, 번들, 사용자 정의, 공식 마켓플레이스 플러그인 스킬 이름은 그대로 나타납니다. 타사 플러그인 스킬 이름은 `"third-party"`로 대체됩니다. 활성 스킬이 없을 때 없음.
706* `plugin.name`: 활성 스킬 또는 하위 에이전트가 플러그인에 의해 제공될 때 소유 플러그인. 공식 마켓플레이스 플러그인 이름은 그대로 나타납니다. 타사 플러그인 이름은 `"third-party"`로 대체됩니다. 스킬과 하위 에이전트 모두 소유 플러그인을 가지지 않을 때 없음.721* `plugin.name`: 활성 스킬 또는 하위 에이전트가 플러그인에 의해 제공될 때 소유 플러그인. 공식 마켓플레이스 플러그인 이름은 그대로 나타납니다. 타사 플러그인 이름은 `"third-party"`로 대체됩니다. 스킬과 하위 에이전트 모두 소유 플러그인이 없을 때 없음.
707* `marketplace.name`: 소유 플러그인이 설치된 마켓플레이스. `OTEL_LOG_TOOL_DETAILS=1`이 설정되어 있어도 공식 마켓플레이스 플러그인에 대해서만 내보내집니다. 그 외의 경우 없음.722* `marketplace.name`: 소유 플러그인이 설치된 마켓플레이스. `OTEL_LOG_TOOL_DETAILS=1`이 설정되어 있어도 공식 마켓플레이스 플러그인에 대해서만 내보냄. 그 외의 경우 없음.
708* `mcp_server.name`: 이 요청이 소비한 도구 결과의 MCP 서버. 기본 제공, claude.ai 프록시, 공식 레지스트리 서버 이름은 그대로 나타납니다. 사용자 구성 서버 이름은 `"custom"`으로 대체됩니다. 요청이 MCP 도구 결과를 소비하지 않았을 때 없음. v2.1.222 이전에는 Claude Code가 MCP 도구 호출 후 모든 요청에 이 속성을 설정했으며, 도구 결과를 소비한 요청에만 설정하지 않았으므로 이를 집계하는 대시보드는 업그레이드 후 단계 감소를 보입니다.723* `mcp_server.name`: 이 요청이 소비한 도구 결과의 MCP 서버. 기본 제공, claude.ai 프록시, 공식 레지스트리 서버 이름은 그대로 나타납니다. 사용자 구성 서버 이름은 `"custom"`으로 대체됩니다. 요청이 MCP 도구 결과를 소비하지 않았을 때 없음. v2.1.222 이전에는 Claude Code가 MCP 도구 호출 후 모든 요청에 이 속성을 설정했으며, 도구 결과를 소비한 요청에만 설정하지 않았으므로 이를 집계하는 대시보드는 업그레이드 후 단계 감소를 보여줍니다.
709* `mcp_tool.name`: 이 요청이 소비한 도구 결과의 MCP 도구, `mcp_server.name`과 동일한 수정 및 버전 동작. 요청이 MCP 도구 결과를 소비하지 않았을 때 없음.724* `mcp_tool.name`: 이 요청이 소비한 도구 결과의 MCP 도구, `mcp_server.name`과 동일한 수정 및 버전 동작. 요청이 MCP 도구 결과를 소비하지 않았을 때 없음.
710 725
711<h4 id="token-counter">726<h4 id="token-counter">
717**속성**:732**속성**:
718 733
719* 모든 [표준 속성](#standard-attributes)734* 모든 [표준 속성](#standard-attributes)
720* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)735* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`). `"input"` 유형은 프롬프트 캐시에서 읽거나 캐시에 쓴 토큰을 제외하며, 이러한 토큰은 `"cacheRead"` 및 `"cacheCreation"`으로 집계됩니다
721* `model`: 모델 식별자 (예: "claude-sonnet-5")736* `model`: 모델 식별자 (예: "claude-sonnet-5")
722* `query_source`: 요청을 발급한 하위 시스템의 범주. `"main"`, `"subagent"`, 또는 `"auxiliary"` 중 하나737* `query_source`: 요청을 발급한 하위 시스템의 범주. `"main"`, `"subagent"`, 또는 `"auxiliary"` 중 하나
723* `speed`: 요청이 빠른 모드를 사용했을 때 `"fast"`. 그 외의 경우 없음738* `speed`: 요청이 빠른 모드를 사용했을 때 `"fast"`. 그 외의 경우 없음
724* `effort`: 요청에 적용된 [노력 수준](/docs/ko/model-config#adjust-effort-level). 세부 정보는 [비용 카운터](#cost-counter) 참조.739* `effort`: 요청에 적용된 [노력 수준](/docs/ko/model-config#adjust-effort-level). 세부 정보는 [비용 카운터](#cost-counter)를 참조하세요.
725* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: 요청에 대한 스킬, 플러그인, 에이전트, MCP 속성. 정의 및 수정 동작은 [비용 카운터](#cost-counter) 참조.740* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: 요청에 대한 스킬, 플러그인, 에이전트, MCP 속성. 정의 및 수정 동작은 [비용 카운터](#cost-counter)를 참조하세요.
726 741
727<h4 id="code-edit-tool-decision-counter">742<h4 id="code-edit-tool-decision-counter">
728 코드 편집 도구 결정 카운터743 코드 편집 도구 결정 카운터
735* 모든 [표준 속성](#standard-attributes)750* 모든 [표준 속성](#standard-attributes)
736* `tool_name`: 도구 이름 (`"Edit"`, `"Write"`, `"NotebookEdit"`)751* `tool_name`: 도구 이름 (`"Edit"`, `"Write"`, `"NotebookEdit"`)
737* `decision`: 사용자 결정 (`"accept"`, `"reject"`)752* `decision`: 사용자 결정 (`"accept"`, `"reject"`)
738* `source`: 결정이 나온 위치. `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, 또는 `"user_reject"` 중 하나. 각 값의 의미는 [도구 결정 이벤트](#tool-decision-event) 참조.753* `source`: 결정이 나온 위치. `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, 또는 `"user_reject"` 중 하나. 각 값의 의미는 [도구 결정 이벤트](#tool-decision-event)를 참조하세요.
739* `language`: 편집된 파일의 프로그래밍 언어, 예: `"TypeScript"`, `"Python"`, `"JavaScript"`, 또는 `"Markdown"`. 인식되지 않는 파일 확장자의 경우 `"unknown"` 반환.754* `language`: 편집된 파일의 프로그래밍 언어, 예: `"TypeScript"`, `"Python"`, `"JavaScript"`, 또는 `"Markdown"`. 인식되지 않은 파일 확장자에 대해 `"unknown"`을 반환합니다.
740 755
741<h4 id="active-time-counter">756<h4 id="active-time-counter">
742 활성 시간 카운터757 활성 시간 카운터
759 이벤트 상관 속성774 이벤트 상관 속성
760</h4>775</h4>
761 776
762사용자가 프롬프트를 제출하면, Claude Code는 여러 API 호출을 수행하고 여러 도구를 실행할 수 있습니다. `prompt.id` 속성을 사용하면 해당 이벤트를 모두 트리거한 단일 프롬프트에 연결할 수 있습니다.777사용자가 프롬프트를 제출하면 Claude Code는 여러 API 호출을 수행하고 여러 도구를 실행할 수 있습니다. `prompt.id` 속성을 사용하면 해당 이벤트를 모두 트리거한 단일 프롬프트에 연결할 수 있습니다.
763 778
764| 속성 | 설명 |779| 속성 | 설명 |
765| - | - |780| - | - |
766| `prompt.id` | 단일 사용자 프롬프트 처리 중에 생성된 모든 이벤트를 연결하는 UUID v4 식별자 |781| `prompt.id` | 단일 사용자 프롬프트 처리 중에 생성된 모든 이벤트를 연결하는 UUID v4 식별자 |
767| `event.sequence` | 이벤트 순서 지정을 위한 0 기반 카운터, 세션당가 아닌 Claude Code 프로세스당 계산됨 |782| `event.sequence` | 이벤트 순서 지정을 위한 0 기반 카운터, 세션당이 아닌 Claude Code 프로세스당 계산됨 |
768| `message.uuid` | 세션 기록에 유지되는 메시지의 UUID, `~/.claude/projects/*/*.jsonl` 파일. `assistant_response`, `api_response_body`, 및 명령 디스패치를 제외한 `user_prompt`에 존재하며, 이는 0개 이상의 메시지를 생성할 수 있습니다. `assistant_response` 및 `api_response_body`에서 이는 응답의 최종 기록 항목이며, 다음 턴의 `parentUuid`가 이로부터 체인됩니다. Claude Code v2.1.214 이상 필요, 또는 `api_response_body`에서 v2.1.274 이상 |783| `message.uuid` | 세션 기록에 유지되는 메시지의 UUID, `~/.claude/projects/*/*.jsonl` 파일. `assistant_response`, `api_response_body`, 및 명령 디스패치를 제외한 `user_prompt`에 있음, 이는 0개 이상의 메시지를 생성할 수 있음. `assistant_response` 및 `api_response_body`에서 이는 응답의 최종 기록 항목이며, 다음 턴의 `parentUuid`가 이로부터 체인됩니다. Claude Code v2.1.214 이상 필요, 또는 `api_response_body`에서 v2.1.274 이상 |
769| `request_id` | `request-id` 응답 헤더에서 읽은 서버 할당 API 요청 ID, 예: `req_011...`. [Amazon Bedrock](/docs/ko/amazon-bedrock)과 같이 `request-id` 헤더가 없는 응답의 경우, 값은 `x-amzn-requestid` 헤더에서 대신 옵니다. `api_request`, `api_error`, `api_refusal`, `assistant_response`, 및 응답이 헤더 중 하나를 전달할 때 `api_response_body`에 존재합니다. `llm_request` 추적 스팬의 동일한 속성과 일치합니다. `x-amzn-requestid` 소스는 Claude Code v2.1.282 이상 필요 |784| `request_id` | `request-id` 응답 헤더에서 읽은 서버 할당 API 요청 ID, 예: `req_011...`. `request-id` 헤더가 없는 응답의 경우, [Amazon Bedrock](/docs/ko/amazon-bedrock)과 같이 값은 `x-amzn-requestid` 헤더에서 대신 옵니다. `api_request`, `api_error`, `api_refusal`, `assistant_response`, `api_response_body`에 있음, 응답이 헤더 중 하나를 전달할 때. `llm_request` 추적 스팬의 동일한 속성과 일치합니다. `x-amzn-requestid` 소스는 Claude Code v2.1.282 이상 필요 |
770| `client_request_id` | `x-client-request-id` 요청 헤더로 전송된 클라이언트 생성 UUID. 자사 API 연결의 `api_request` 및 `api_error`에 존재; 타사 공급자 백엔드 및 요청이 비스트리밍 폴백을 통해 재시도되었을 때 없음. 요청을 응답과 쌍으로 만들고 타임아웃과 같이 서버 `request_id`를 생성하지 않은 실패에 대해 사용 가능하게 유지합니다. `llm_request` 추적 스팬의 동일한 속성과 일치합니다. Claude Code v2.1.214 이상 필요 |785| `client_request_id` | `x-client-request-id` 요청 헤더로 전송된 클라이언트 생성 UUID. 첫 번째 당사자 API 연결에서 `api_request` 및 `api_error`에 있음; 타사 공급자 백엔드 및 요청이 비스트리밍 폴백을 통해 재시도되었을 때 없음. 요청을 응답과 쌍으로 만들고 서버 `request_id`를 생성하지 않은 시간 초과와 같은 실패에 대해 사용 가능하게 유지합니다. `llm_request` 추적 스팬의 동일한 속성과 일치합니다. Claude Code v2.1.214 이상 필요 |
771 786
772단일 프롬프트로 트리거된 모든 활동을 추적하려면, 특정 `prompt.id` 값으로 이벤트를 필터링합니다. 이는 user\_prompt 이벤트, 모든 api\_request 이벤트, 그리고 해당 프롬프트 처리 중에 발생한 모든 tool\_result 이벤트를 반환합니다.787단일 프롬프트로 트리거된 모든 활동을 추적하려면 특정 `prompt.id` 값으로 이벤트를 필터링하세요. 이는 user\_prompt 이벤트, 모든 api\_request 이벤트, 해당 프롬프트 처리 중에 발생한 모든 tool\_result 이벤트를 반환합니다.
773 788
774`event.sequence`는 Claude Code 프로세스가 시작될 때마다 0에서 시작하고 해당 프로세스의 수명 동안 증가합니다. `/clear`를 통해 계속 계산되며, 이는 새로운 `session.id`를 할당합니다. [세션을 포크하지 않고 재개](/docs/ko/how-claude-code-works#resume-or-fork-sessions)하면, 세션은 `session.id`를 유지하지만 `event.sequence` 값을 재개한 프로세스에서 가져오므로, 한 세션 내에서 나중 이벤트가 이전 이벤트보다 낮은 값을 전달하거나 하나를 반복할 수 있습니다. 세션의 이벤트를 순서대로 정렬하려면, `event.timestamp`로 정렬하고 `event.sequence`를 사용하여 타임스탬프를 공유하는 이벤트를 순서대로 정렬합니다.789`event.sequence`는 Claude Code 프로세스가 시작될 때마다 0에서 시작하고 해당 프로세스의 수명 동안 증가합니다. `/clear`를 통해 계속 계산되며, 이는 새로운 `session.id`를 할당합니다. [세션을 포크하지 않고 재개](/docs/ko/how-claude-code-works#resume-or-fork-sessions)하면 세션은 `session.id`를 유지하지만 `event.sequence` 값을 재개한 프로세스에서 가져오므로 한 세션 내에서 나중 이벤트가 이전 이벤트보다 낮은 값을 전달하거나 반복할 수 있습니다. 세션의 이벤트를 순서대로 정렬하려면 `event.timestamp`로 정렬하고 `event.sequence`를 사용하여 타임스탬프를 공유하는 이벤트를 순서대로 정렬하세요.
775 790
776메시지 수준 재구성의 경우, 각 이벤트 클래스는 세션 기록의 필드와 일치하는 키를 전달합니다. 기록 항목 형식은 [Claude Code 내부](/docs/ko/sessions#where-transcripts-are-stored)이며 버전 간에 변경되므로, 이러한 필드에 조인하는 파이프라인은 모든 릴리스에서 중단될 수 있습니다; 조인을 안정적인 계약이 아닌 버전별 조인으로 취급합니다:791메시지 수준 재구성의 경우 각 이벤트 클래스는 세션 기록의 필드와 일치하는 키를 전달합니다. 기록 항목 형식은 [Claude Code 내부](/docs/ko/sessions#where-transcripts-are-stored)이며 버전 간에 변경되므로 이러한 필드에 조인하는 파이프라인은 모든 릴리스에서 중단될 수 있습니다; 조인을 안정적인 계약이 아닌 버전별 조인으로 취급하세요:
777 792
778* `user_prompt`, `assistant_response`, 및 `api_response_body`의 `message.uuid`793* `user_prompt`, `assistant_response`, `api_response_body`의 `message.uuid`
779* API 이벤트의 `request_id`, 기록의 어시스턴트 항목에 `requestId`로 유지됨794* API 이벤트의 `request_id`, 기록의 어시스턴트 항목에 `requestId`로 유지됨
780* `tool_result` 및 `tool_decision` 이벤트의 `tool_use_id`795* `tool_result` 및 `tool_decision` 이벤트의 `tool_use_id`
781 796
783 사용자 프롬프트 이벤트798 사용자 프롬프트 이벤트
784</h4>799</h4>
785 800
786사용자가 프롬프트를 제출할 때 기록됩니다.801Claude Code가 자체적으로 시작하는 턴을 포함하여 프롬프트가 제출될 때 로그에 기록됩니다.
787 802
788**이벤트 이름**: `claude_code.user_prompt`803**이벤트 이름**: `claude_code.user_prompt`
789 804
792* 모든 [표준 속성](#standard-attributes)807* 모든 [표준 속성](#standard-attributes)
793* `event.name`: `"user_prompt"`808* `event.name`: `"user_prompt"`
794* `event.timestamp`: ISO 8601 타임스탬프809* `event.timestamp`: ISO 8601 타임스탬프
795* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨810* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
796* `prompt_length`: 프롬프트의 길이811* `prompt_length`: 프롬프트의 길이
797* `prompt`: 프롬프트 내용. 기본적으로 수정됨. `OTEL_LOG_USER_PROMPTS=1`을 설정하여 포함812* `prompt`: 프롬프트 내용. 기본적으로 수정됨. `OTEL_LOG_USER_PROMPTS=1`을 설정하여 포함
798* `message.uuid`: 결과 사용자 메시지의 UUID, 유지된 기록 항목과 일치. 명령 디스패치에는 없으며, 이는 0개 이상의 메시지를 생성할 수 있습니다. Claude Code v2.1.214 이상 필요813* `prompt_text`: `prompt`와 동일한 값으로, 동일한 조건에서 가려집니다. 점으로 구분된 속성 이름을 중첩 객체로 저장하는 백엔드는 `prompt.id`를 `prompt`라는 객체 안의 `id`로 읽어 프롬프트 문자열을 잃을 수 있습니다. 이러한 백엔드에서는 `prompt_text`를 대신 읽으세요. Claude Code v2.1.287 이상이 필요합니다
799* `command_name`: 프롬프트가 명령을 호출할 때 명령 이름. `compact` 또는 `debug`와 같은 기본 제공 및 번들 명령 이름은 그대로 내보내집니다; `reset`과 같은 별칭은 정규 이름이 아닌 입력한 대로 내보냅니다. 사용자 정의, 플러그인, MCP 명령 이름은 `OTEL_LOG_TOOL_DETAILS=1`이 설정되지 않으면 `custom` 또는 `mcp`로 축소됩니다814* `message.uuid`: 결과 사용자 메시지의 UUID, 유지된 기록 항목과 일치. 명령 디스패치에서 없음, 0개 이상의 메시지를 생성할 수 있음. Claude Code v2.1.214 이상 필요
800* `command_source`: 명령이 존재할 때 명령의 출처: `builtin`, `custom`, 또는 `mcp`. 플러그인 제공 명령은 `custom`으로 보고합니다815* `command_name`: 프롬프트가 명령을 호출할 때 명령 이름. `compact` 또는 `debug`와 같은 기본 제공 및 번들 명령 이름은 그대로 내보냄; `reset`과 같은 별칭은 정규 이름이 아닌 입력한 대로 내보냄. 사용자 정의, 플러그인, MCP 명령 이름은 `OTEL_LOG_TOOL_DETAILS=1`이 설정되지 않은 경우 `custom` 또는 `mcp`로 축소됨
816* `command_source`: 명령이 있을 때 명령의 출처: `builtin`, `custom`, 또는 `mcp`. 플러그인 제공 명령은 `custom`으로 보고됨
801 817
802<h4 id="assistant-response-event">818<h4 id="assistant-response-event">
803 어시스턴트 응답 이벤트819 어시스턴트 응답 이벤트
812* 모든 [표준 속성](#standard-attributes)828* 모든 [표준 속성](#standard-attributes)
813* `event.name`: `"assistant_response"`829* `event.name`: `"assistant_response"`
814* `event.timestamp`: ISO 8601 타임스탬프830* `event.timestamp`: ISO 8601 타임스탬프
815* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨831* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
816* `response_length`: 응답 텍스트의 문자 길이832* `response_length`: 응답 텍스트의 길이 (문자)
817* `response`: 응답 텍스트, 콘텐츠 제한(기본값 60 KB)에서 잘림. 기본적으로 `<REDACTED>`로 수정됨. `OTEL_LOG_ASSISTANT_RESPONSES=1`을 설정하여 포함. `OTEL_LOG_ASSISTANT_RESPONSES`가 설정되지 않으면, `OTEL_LOG_USER_PROMPTS`가 대신 제어하므로 프롬프트 로깅이 켜져 있는 동안 응답을 수정된 상태로 유지하려면 `OTEL_LOG_ASSISTANT_RESPONSES=0`을 설정합니다833* `response`: 응답 텍스트, 콘텐츠 제한에서 잘림 (기본값 60 KB). 기본적으로 `<REDACTED>`로 수정됨. `OTEL_LOG_ASSISTANT_RESPONSES=1`을 설정하여 포함. `OTEL_LOG_ASSISTANT_RESPONSES`가 설정되지 않으면 `OTEL_LOG_USER_PROMPTS`가 대신 제어하므로 프롬프트 로깅이 켜져 있는 동안 응답을 수정된 상태로 유지하려면 `OTEL_LOG_ASSISTANT_RESPONSES=0`을 설정하세요
818* `model`: 모델 식별자 (예: "claude-sonnet-5")834* `model`: 모델 식별자 (예: "claude-sonnet-5")
819* `request_id`: API 요청 ID, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨835* `request_id`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 API 요청 ID
820* `message.uuid`: 응답의 최종 기록 항목의 UUID. API 응답은 콘텐츠 블록당 하나의 기록 항목으로 유지됩니다; 이는 마지막 항목이며, 다음 턴의 `parentUuid`가 이로부터 체인됩니다. Claude Code v2.1.214 이상 필요836* `message.uuid`: 응답의 최종 기록 항목의 UUID. API 응답은 콘텐츠 블록당 하나의 기록 항목으로 유지됩니다; 이는 마지막 항목이며, 다음 턴의 `parentUuid`가 이로부터 체인됩니다. Claude Code v2.1.214 이상 필요
821* `query_source`: 요청을 발급한 하위 시스템, 예: `"repl_main_thread"`, `"compact"`, 또는 하위 에이전트 이름837* `query_source`: 요청을 발급한 하위 시스템, 예: `"repl_main_thread"`, `"compact"`, 또는 하위 에이전트 이름
822 838
824 도구 결과 이벤트840 도구 결과 이벤트
825</h4>841</h4>
826 842
827도구가 실행을 완료할 때 기록됩니다. 도구 호출이 거부된 경우 내보내지지 않습니다; 거부에 대해서는 [도구 결정 이벤트](#tool-decision-event) 참조.843도구가 실행을 완료할 때 기록됩니다. 도구 호출이 거부된 경우 내보내지지 않습니다; 거부에 대해서는 [도구 결정 이벤트](#tool-decision-event)를 참조하세요.
828 844
829**이벤트 이름**: `claude_code.tool_result`845**이벤트 이름**: `claude_code.tool_result`
830 846
833* 모든 [표준 속성](#standard-attributes)849* 모든 [표준 속성](#standard-attributes)
834* `event.name`: `"tool_result"`850* `event.name`: `"tool_result"`
835* `event.timestamp`: ISO 8601 타임스탬프851* `event.timestamp`: ISO 8601 타임스탬프
836* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨852* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
837* `tool_name`: 도구의 이름853* `tool_name`: 도구의 이름
838* `tool_use_id`: 이 도구 호출의 고유 식별자. 훅에 전달된 `tool_use_id`와 일치하여 OTel 이벤트와 훅 캡처 데이터 간의 상관 관계를 허용합니다.854* `tool_use_id`: 이 도구 호출의 고유 식별자. 훅에 전달된 `tool_use_id`와 일치하여 OTel 이벤트와 훅 캡처 데이터 간의 상관 관계를 허용합니다.
839* `success`: `"true"` 또는 `"false"`855* `success`: `"true"` 또는 `"false"`
840* `duration_ms`: 밀리초 단위의 실행 시간856* `duration_ms`: 실행 시간 (밀리초)
841* `error_type`: 도구가 실패했을 때 오류 범주 문자열, 예: `"Error:ENOENT"` 또는 `"ShellError"`857* `error_type`: 도구가 실패했을 때 오류 범주 문자열, 예: `"Error:ENOENT"` 또는 `"ShellError"`
842* `error` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 도구가 실패했을 때 전체 오류 메시지858* `error` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 도구가 실패했을 때 전체 오류 메시지
843* `decision_type`: 항상 `"accept"`, 이 이벤트는 도구 실행 후에만 내보내지기 때문입니다. 거부된 호출은 도구 결과를 생성하지 않습니다859* `decision_type`: 항상 `"accept"`, 이 이벤트는 도구가 실행된 후에만 내보내지기 때문. 거부된 호출은 도구 결과를 생성하지 않음
844* `decision_source`: 권한 결정이 나온 위치. `"config"`, `"hook"`, `"user_permanent"`, 또는 `"user_temporary"` 중 하나. 각 값의 의미는 [도구 결정 이벤트](#tool-decision-event) 참조. 거부 전용 소스 `"user_abort"` 및 `"user_reject"`는 이 이벤트에 절대 나타나지 않습니다.860* `decision_source`: 권한 결정이 나온 위치. `"config"`, `"hook"`, `"user_permanent"`, 또는 `"user_temporary"` 중 하나. 각 값의 의미는 [도구 결정 이벤트](#tool-decision-event)를 참조하세요. 거부 전용 소스 `"user_abort"` 및 `"user_reject"`는 이 이벤트에 절대 나타나지 않습니다.
845* `tool_input_size_bytes`: JSON 직렬화된 도구 입력의 바이트 크기861* `tool_input_size_bytes`: JSON 직렬화된 도구 입력의 크기 (바이트)
846* `tool_result_size_bytes`: 도구 결과의 바이트 크기862* `tool_result_size_bytes`: 도구 결과의 크기 (바이트)
847* `mcp_server_scope`: MCP 서버 범위 식별자 (MCP 도구의 경우)863* `mcp_server_scope`: MCP 서버 범위 식별자 (MCP 도구의 경우)
848* `vcs.ref.head.revision`, `vcs.ref.head.name`, `vcs.ref.head.type` (`OTEL_LOG_TOOL_DETAILS=1`일 때): Bash 또는 PowerShell 도구에 의해 실행된 성공적인 `git commit`의 커밋 ID. `vcs.ref.head.revision`은 커밋 SHA, `vcs.ref.head.name`은 커밋된 브랜치, `vcs.ref.head.type`은 `branch`. 커밋이 분리된 HEAD에서 이루어진 경우 이름과 유형은 생략됩니다. Claude Code v2.1.269 이상 필요864* `vcs.ref.head.revision`, `vcs.ref.head.name`, `vcs.ref.head.type` (`OTEL_LOG_TOOL_DETAILS=1`일 때): Bash 또는 PowerShell 도구에 의해 실행된 성공적인 `git commit`의 커밋 ID. `vcs.ref.head.revision`은 커밋 SHA, `vcs.ref.head.name`은 커밋된 브랜치, `vcs.ref.head.type`은 `branch`. 커밋이 분리된 HEAD에서 이루어진 경우 이름과 유형이 생략됩니다. Claude Code v2.1.269 이상 필요
849* `tool_parameters` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 도구별 매개변수를 포함하는 JSON 문자열. Claude Desktop의 기본 제공 서버의 경우, Claude Desktop이 소유한 세션에서, `mcp_server_name`/`mcp_tool_name` 쌍은 플래그가 꺼져 있어도 포함되며, [도구 결정 이벤트](#tool-decision-event)와 동일한 호스트 작성 예외입니다, Claude Code v2.1.214 이상 필요. 매개변수는 도구에 따라 다릅니다:865* `tool_parameters` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 도구별 매개변수를 포함하는 JSON 문자열. Claude Desktop의 기본 제공 서버의 경우, Claude Desktop이 소유한 세션에서 `mcp_server_name`/`mcp_tool_name` 쌍은 플래그가 꺼져 있어도 포함되며, [도구 결정 이벤트](#tool-decision-event)와 동일한 호스트 작성 예외, Claude Code v2.1.214 이상 필요. 매개변수는 도구에 따라 다릅니다:
850 * Bash 도구의 경우: `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox` 포함, 그리고 `git commit` 명령이 성공할 때 `git_commit_id` 및 `git_branch`. `git_commit_id`는 커밋이 세션의 작업 디렉토리의 HEAD일 때 전체 커밋 SHA이고, 그 외의 경우 git의 축약된 SHA입니다. `git_branch`는 커밋된 브랜치이며, 분리된 HEAD에서는 생략됨866 * Bash 도구의 경우: `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox` 포함, `git commit` 명령이 성공할 때 `git_commit_id` 및 `git_branch`. `git_commit_id`는 커밋이 세션의 작업 디렉토리의 HEAD일 때 전체 커밋 SHA, 그 외의 경우 git의 축약된 SHA. `git_branch`는 커밋된 브랜치, 분리된 HEAD에서 생략됨
851 * 데스크톱 앱의 작업 공간 Bash 도구의 경우, 또한 `tool_name`을 `Bash`로 보고합니다: `bash_command`, `full_command`, `timeout`만 포함867 * 데스크톱 앱의 작업 공간 Bash 도구의 경우, 또한 `tool_name`을 `Bash`로 보고: `bash_command`, `full_command`, `timeout`만 포함
852 * MCP 도구의 경우: `mcp_server_name`, `mcp_tool_name` 포함868 * MCP 도구의 경우: `mcp_server_name`, `mcp_tool_name` 포함
853 * Skill 도구의 경우: `skill_name` 포함869 * Skill 도구의 경우: `skill_name` 포함
854 * Agent 도구 또는 레거시 Task 도구의 경우: `subagent_type` 포함870 * Agent 도구 또는 레거시 Task 도구의 경우: `subagent_type` 포함
855* `tool_input` (`OTEL_LOG_TOOL_DETAILS=1`일 때): JSON 직렬화된 도구 인수. 512자를 초과하는 개별 값은 잘리고, 전체 페이로드는 약 4 K 문자로 제한됩니다. MCP 도구를 포함한 모든 도구에 적용됩니다.871* `tool_input` (`OTEL_LOG_TOOL_DETAILS=1`일 때): JSON 직렬화된 도구 인수. 512자를 초과하는 개별 값은 잘리며, 전체 페이로드는 약 4 K 문자로 제한됩니다. MCP 도구를 포함한 모든 도구에 적용됩니다.
856 872
857<h4 id="api-request-event">873<h4 id="api-request-event">
858 API 요청 이벤트874 API 요청 이벤트
867* 모든 [표준 속성](#standard-attributes)883* 모든 [표준 속성](#standard-attributes)
868* `event.name`: `"api_request"`884* `event.name`: `"api_request"`
869* `event.timestamp`: ISO 8601 타임스탬프885* `event.timestamp`: ISO 8601 타임스탬프
870* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨886* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
871* `model`: 사용된 모델 (예: "claude-sonnet-5")887* `model`: 사용된 모델 (예: "claude-sonnet-5")
872* `cost_usd`: USD 단위의 예상 비용888* `cost_usd`: USD 단위의 예상 비용
873* `cost_usd_micros`: 미국 달러의 백만분의 일 단위의 예상 비용, 정수로 내보내짐889* `cost_usd_micros`: 미국 달러의 백만분의 일 단위의 예상 비용, 정수로 내보냄
874* `duration_ms`: 밀리초 단위의 요청 기간890* `duration_ms`: 요청 지속 시간 (밀리초)
875* `input_tokens`: 입력 토큰 수891* `input_tokens`: 프롬프트 캐시에서 읽거나 캐시에 쓴 토큰을 제외한 입력 토큰 수
876* `output_tokens`: 출력 토큰 수892* `output_tokens`: 출력 토큰 수
877* `cache_read_tokens`: 캐시에서 읽은 토큰 수893* `cache_read_tokens`: 캐시에서 읽은 토큰 수
878* `cache_creation_tokens`: 캐시 생성에 사용된 토큰 수894* `cache_creation_tokens`: 캐시 생성에 사용된 토큰 수
879* `request_id`: `"req_011..."`과 같은 API 요청 ID, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨.895* `request_id`: `"req_011..."`과 같은 API 요청 ID, [이벤트 상관 속성](#event-correlation-attributes)에서 설명함.
880* `client_request_id`: `x-client-request-id` 요청 헤더로 전송된 클라이언트 생성 UUID; 존재할 때는 [이벤트 상관 속성](#event-correlation-attributes) 테이블 참조. Claude Code v2.1.214 이상 필요896* `client_request_id`: `x-client-request-id` 요청 헤더로 전송된 클라이언트 생성 UUID; 존재할 때는 [이벤트 상관 속성](#event-correlation-attributes) 테이블을 참조하세요. Claude Code v2.1.214 이상 필요
881* `speed`: 빠른 모드가 활성화되었는지 여부를 나타내는 `"fast"` 또는 `"normal"`897* `speed`: `"fast"` 또는 `"normal"`, 빠른 모드가 활성화되었는지 여부를 나타냄
882* `query_source`: 요청을 발급한 하위 시스템, 예: `"repl_main_thread"`, `"compact"`, 또는 하위 에이전트 이름898* `query_source`: 요청을 발급한 하위 시스템, 예: `"repl_main_thread"`, `"compact"`, 또는 하위 에이전트 이름
883* `effort`: 요청에 적용된 [노력 수준](/docs/ko/model-config#adjust-effort-level): `"low"`, `"medium"`, `"high"`, `"xhigh"`, 또는 `"max"`. Claude Code가 노력 수준을 보내지 않을 때 없음, 예를 들어 노력을 지원하지 않는 모델에서.899* `effort`: 요청에 적용된 [노력 수준](/docs/ko/model-config#adjust-effort-level): `"low"`, `"medium"`, `"high"`, `"xhigh"`, 또는 `"max"`. Claude Code가 노력 수준을 보내지 않을 때 없음, 예를 들어 노력을 지원하지 않는 모델에서.
884* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: 요청에 대한 스킬, 플러그인, 에이전트, MCP 속성. 정의 및 수정 동작은 [비용 카운터](#cost-counter) 참조.900* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: 요청에 대한 스킬, 플러그인, 에이전트, MCP 속성. 정의 및 수정 동작은 [비용 카운터](#cost-counter)를 참조하세요.
885 901
886<h4 id="api-error-event">902<h4 id="api-error-event">
887 API 오류 이벤트903 API 오류 이벤트
896* 모든 [표준 속성](#standard-attributes)912* 모든 [표준 속성](#standard-attributes)
897* `event.name`: `"api_error"`913* `event.name`: `"api_error"`
898* `event.timestamp`: ISO 8601 타임스탬프914* `event.timestamp`: ISO 8601 타임스탬프
899* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨915* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
900* `model`: 사용된 모델 (예: "claude-sonnet-5")916* `model`: 사용된 모델 (예: "claude-sonnet-5")
901* `error`: 오류 메시지917* `error`: 오류 메시지
902* `status_code`: HTTP 상태 코드를 숫자로. 연결 실패와 같은 비 HTTP 오류의 경우 없음.918* `status_code`: HTTP 상태 코드 (숫자). 연결 실패와 같은 비 HTTP 오류의 경우 없음.
903* `duration_ms`: 밀리초 단위의 요청 기간919* `duration_ms`: 요청 지속 시간 (밀리초)
904* `attempt`: 초기 요청을 포함한 총 시도 횟수 (`1`은 재시도가 발생하지 않았음을 의미)920* `attempt`: 초기 요청을 포함한 총 시도 횟수 (`1`은 재시도가 발생하지 않았음을 의미)
905* `request_id`: `"req_011..."`과 같은 API 요청 ID, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨.921* `request_id`: `"req_011..."`과 같은 API 요청 ID, [이벤트 상관 속성](#event-correlation-attributes)에서 설명함.
906* `client_request_id`: `x-client-request-id` 요청 헤더로 전송된 클라이언트 생성 UUID. 타임아웃 또는 연결 오류와 같은 실패가 서버 `request_id`를 생성하지 않았을 때도 사용 가능; 존재할 때는 [이벤트 상관 속성](#event-correlation-attributes) 테이블 참조. Claude Code v2.1.214 이상 필요922* `client_request_id`: `x-client-request-id` 요청 헤더로 전송된 클라이언트 생성 UUID. 시간 초과 또는 연결 오류와 같은 실패가 서버 `request_id`를 생성하지 않았을 때도 사용 가능; 존재할 때는 [이벤트 상관 속성](#event-correlation-attributes) 테이블을 참조하세요. Claude Code v2.1.214 이상 필요
907* `speed`: 빠른 모드가 활성화되었는지 여부를 나타내는 `"fast"` 또는 `"normal"`923* `speed`: `"fast"` 또는 `"normal"`, 빠른 모드가 활성화되었는지 여부를 나타냄
908* `query_source`: 요청을 발급한 하위 시스템, 예: `"repl_main_thread"`, `"compact"`, 또는 하위 에이전트 이름924* `query_source`: 요청을 발급한 하위 시스템, 예: `"repl_main_thread"`, `"compact"`, 또는 하위 에이전트 이름
909* `effort`: 요청에 적용된 [노력 수준](/docs/ko/model-config#adjust-effort-level). Claude Code가 노력 수준을 보내지 않을 때 없음, 예를 들어 노력을 지원하지 않는 모델에서.925* `effort`: 요청에 적용된 [노력 수준](/docs/ko/model-config#adjust-effort-level). Claude Code가 노력 수준을 보내지 않을 때 없음, 예를 들어 노력을 지원하지 않는 모델에서.
910* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: 요청에 대한 스킬, 플러그인, 에이전트, MCP 속성. 정의 및 수정 동작은 [비용 카운터](#cost-counter) 참조.926* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: 요청에 대한 스킬, 플러그인, 에이전트, MCP 속성. 정의 및 수정 동작은 [비용 카운터](#cost-counter)를 참조하세요.
911 927
912<h4 id="api-refusal-event">928<h4 id="api-refusal-event">
913 API 거부 이벤트929 API 거부 이벤트
922* 모든 [표준 속성](#standard-attributes)938* 모든 [표준 속성](#standard-attributes)
923* `event.name`: `"api_refusal"`939* `event.name`: `"api_refusal"`
924* `event.timestamp`: ISO 8601 타임스탬프940* `event.timestamp`: ISO 8601 타임스탬프
925* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨941* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
926* `model`: 요청의 모델 식별자942* `model`: 요청의 모델 식별자
927* `request_id`: `"req_011..."`과 같은 API 요청 ID, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨.943* `request_id`: `"req_011..."`과 같은 API 요청 ID, [이벤트 상관 속성](#event-correlation-attributes)에서 설명함.
928* `query_source`: 요청을 발급한 하위 시스템, 예: `"repl_main_thread"`, `"compact"`, 또는 하위 에이전트 이름. 정의는 [`api_request`](#api-request-event) 참조.944* `query_source`: 요청을 발급한 하위 시스템, 예: `"repl_main_thread"`, `"compact"`, 또는 하위 에이전트 이름. 정의는 [`api_request`](#api-request-event)를 참조하세요.
929* `speed`: [빠른 모드](/docs/ko/fast-mode)가 활성화되었을 때 `"fast"`, 또는 `"normal"`945* `speed`: [빠른 모드](/docs/ko/fast-mode)가 활성화되었을 때 `"fast"`, 또는 `"normal"`
930* `attempt`: 재시도 시도 번호. 첫 번째 시도는 `1`.946* `attempt`: 재시도 시도 번호. 첫 번째 시도는 `1`.
931* `effort`: 요청에 적용된 [노력 수준](/docs/ko/model-config#adjust-effort-level). Claude Code가 노력 수준을 보내지 않을 때 없음, 예를 들어 노력을 지원하지 않는 모델에서.947* `effort`: 요청에 적용된 [노력 수준](/docs/ko/model-config#adjust-effort-level). Claude Code가 노력 수준을 보내지 않을 때 없음, 예를 들어 노력을 지원하지 않는 모델에서.
932* `server_fallback_hop`: API의 서버 측 모델 폴백이 이미 이 거부를 다른 모델에서 재시도했을 때 `true`, 사용자가 이 특정 거부를 보지 못했습니다. 요청이 거부로 끝났을 때 `false`. 단일 턴은 폴백 모델도 거부할 때 나중의 `false` 최종 이벤트와 `true` 홉 이벤트를 모두 내보낼 수 있습니다.948* `server_fallback_hop`: API의 서버 측 모델 폴백이 이미 이 거부를 다른 모델에서 재시도했을 때 `true`, 사용자가 이 특정 거부를 보지 못했습니다. 요청이 거부로 끝났을 때 `false`. 단일 턴은 폴백 모델도 거부할 때 `true` 홉 이벤트와 나중의 `false` 최종 이벤트를 모두 내보낼 수 있습니다.
933* `has_category`: API 응답이 `"cyber"`, `"bio"`, `"frontier_llm"`, 또는 `"reasoning_extraction"`의 `stop_details.category`를 전달했을 때 `true`. 응답이 카테고리를 전달하지 않았거나 해당 집합 외의 값을 전달했을 때 `false`. `server_fallback_hop`이 `true`일 때 없음, 홉 블록은 `stop_details`를 전달하지 않기 때문입니다.949* `has_category`: API 응답이 `"cyber"`, `"bio"`, `"frontier_llm"`, 또는 `"reasoning_extraction"`의 `stop_details.category`를 전달했을 때 `true`. 응답이 카테고리를 전달하지 않았거나 해당 집합 외의 값을 전달했을 때 `false`. `server_fallback_hop`이 `true`일 때 없음, 홉 블록은 `stop_details`를 전달하지 않기 때문.
934* `has_explanation`: API 응답이 `stop_details.explanation`을 전달했을 때 `true`, 그 외의 경우 `false`. `server_fallback_hop`이 `true`일 때 없음.950* `has_explanation`: API 응답이 `stop_details.explanation`을 전달했을 때 `true`, 그 외의 경우 `false`. `server_fallback_hop`이 `true`일 때 없음.
935* `category`: API 응답의 `stop_details.category` 값. `"cyber"`, `"bio"`, `"frontier_llm"`, 또는 `"reasoning_extraction"` 중 하나. `OTEL_LOG_TOOL_DETAILS=1`이 설정되고 `has_category`가 `true`일 때만 존재합니다.951* `category`: API 응답의 `stop_details.category` 값. `"cyber"`, `"bio"`, `"frontier_llm"`, 또는 `"reasoning_extraction"` 중 하나. `OTEL_LOG_TOOL_DETAILS=1`이 설정되고 `has_category`가 `true`일 때만 존재.
936* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: 요청에 대한 스킬, 플러그인, 에이전트, MCP 속성. 정의 및 수정 동작은 [비용 카운터](#cost-counter) 참조.952* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: 요청에 대한 스킬, 플러그인, 에이전트, MCP 속성. 정의 및 수정 동작은 [비용 카운터](#cost-counter)를 참조하세요.
937 953
938<h4 id="api-request-body-event">954<h4 id="api-request-body-event">
939 API 요청 본문 이벤트955 API 요청 본문 이벤트
940</h4>956</h4>
941 957
942`OTEL_LOG_RAW_API_BODIES`가 설정되었을 때 각 API 요청 시도에 대해 기록됩니다. 조정된 매개변수로 재시도할 때마다 시도당 하나의 이벤트가 내보내집니다.958`OTEL_LOG_RAW_API_BODIES`가 설정되었을 때 각 API 요청 시도에 대해 기록됩니다. 시도당 하나의 이벤트가 내보내지므로 조정된 매개변수로 재시도할 때마다 자신의 이벤트를 생성합니다.
943 959
944**이벤트 이름**: `claude_code.api_request_body`960**이벤트 이름**: `claude_code.api_request_body`
945 961
948* 모든 [표준 속성](#standard-attributes)964* 모든 [표준 속성](#standard-attributes)
949* `event.name`: `"api_request_body"`965* `event.name`: `"api_request_body"`
950* `event.timestamp`: ISO 8601 타임스탬프966* `event.timestamp`: ISO 8601 타임스탬프
951* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨967* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
952* `body`: JSON 직렬화된 Messages API 요청 매개변수, 예: 시스템 프롬프트, 메시지, 도구, 콘텐츠 제한(기본값 60 KB)에서 잘림. 이전 어시스턴트 턴의 확장 사고 콘텐츠는 수정됨. 인라인 모드(`OTEL_LOG_RAW_API_BODIES=1`)에서만 내보내짐.968* `body`: JSON 직렬화된 Messages API 요청 매개변수, 예: 시스템 프롬프트, 메시지, 도구, 콘텐츠 제한에서 잘림 (기본값 60 KB). 이전 어시스턴트 턴의 확장 사고 콘텐츠는 수정됨. 인라인 모드에서만 내보냄 (`OTEL_LOG_RAW_API_BODIES=1`).
953* `body_ref`: 잘리지 않은 본문을 포함하는 `<dir>/<uuid>.request.json` 파일의 절대 경로. 파일 모드(`OTEL_LOG_RAW_API_BODIES=file:<dir>`)에서만 내보내짐.969* `body_ref`: 잘리지 않은 본문을 포함하는 `<dir>/<uuid>.request.json` 파일의 절대 경로. 파일 모드에서만 내보냄 (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).
954* `body_length`: 잘리지 않은 본문 길이. `OTEL_LOG_RAW_API_BODIES=file:<dir>`일 때 UTF-8 바이트, 또는 `=1`일 때 UTF-16 코드 단위970* `body_length`: 잘리지 않은 본문 길이. `OTEL_LOG_RAW_API_BODIES=file:<dir>`일 때 UTF-8 바이트, 또는 `=1`일 때 UTF-16 코드 단위
955* `body_truncated`: 인라인 잘림이 발생했을 때 `"true"`. 파일 모드 및 잘림이 발생하지 않았을 때 없음.971* `body_truncated`: 인라인 잘림이 발생했을 때 `"true"`. 파일 모드 및 잘림이 발생하지 않았을 때 없음.
956* `model`: 요청 매개변수의 모델 식별자972* `model`: 요청 매개변수의 모델 식별자
957* `query_source`: 요청을 발급한 하위 시스템 (예: `"compact"`)973* `query_source`: 요청을 발급한 하위 시스템 (예: `"compact"`)
958* `request_body_id`: 이 시도의 요청 본문을 식별하는 UUID. 성공한 시도의 [`api_response_body` 이벤트](#api-response-body-event)는 동일한 값을 전달하므로, 응답을 생성한 정확한 요청과 쌍으로 만들 수 있습니다. Claude Code v2.1.274 이상 필요974* `request_body_id`: 이 시도의 요청 본문을 식별하는 UUID. 성공한 시도의 [`api_response_body` 이벤트](#api-response-body-event)는 동일한 값을 전달하므로 응답을 생성한 정확한 요청과 쌍으로 만들 수 있습니다. Claude Code v2.1.274 이상 필요
959 975
960<h4 id="api-response-body-event">976<h4 id="api-response-body-event">
961 API 응답 본문 이벤트977 API 응답 본문 이벤트
963 979
964`OTEL_LOG_RAW_API_BODIES`가 설정되었을 때 각 성공적인 API 응답에 대해 기록됩니다.980`OTEL_LOG_RAW_API_BODIES`가 설정되었을 때 각 성공적인 API 응답에 대해 기록됩니다.
965 981
966파일 모드(`OTEL_LOG_RAW_API_BODIES=file:<dir>`)에서, Claude Code는 또한 각 성공적인 응답에 대해 `<dir>/index.jsonl`에 하나의 JSON 라인을 추가하며, `timestamp`, `session_id`, `query_source`, `model`, `request_id`, `message_id`, `message_uuid`, `request_file`, `response_file` 필드를 포함합니다. 이를 읽어 원격 측정 백엔드를 쿼리하지 않고 주어진 기록 메시지 뒤의 요청 및 응답 파일을 찾습니다. 인덱스 파일은 Claude Code v2.1.274 이상 필요.982파일 모드 (`OTEL_LOG_RAW_API_BODIES=file:<dir>`)에서 Claude Code는 또한 각 성공적인 응답에 대해 `<dir>/index.jsonl`에 하나의 JSON 라인을 추가하며, `timestamp`, `session_id`, `query_source`, `model`, `request_id`, `message_id`, `message_uuid`, `request_file`, `response_file` 필드를 포함합니다. 이를 읽어 원격 측정 백엔드를 쿼리하지 않고 주어진 기록 메시지 뒤의 요청 및 응답 파일을 찾으세요. 인덱스 파일은 Claude Code v2.1.274 이상 필요.
967 983
968**이벤트 이름**: `claude_code.api_response_body`984**이벤트 이름**: `claude_code.api_response_body`
969 985
972* 모든 [표준 속성](#standard-attributes)988* 모든 [표준 속성](#standard-attributes)
973* `event.name`: `"api_response_body"`989* `event.name`: `"api_response_body"`
974* `event.timestamp`: ISO 8601 타임스탬프990* `event.timestamp`: ISO 8601 타임스탬프
975* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨991* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
976* `body`: JSON 직렬화된 Messages API 응답, id, 콘텐츠 블록, 사용량, 중지 이유 포함, 콘텐츠 제한(기본값 60 KB)에서 잘림. 확장 사고 콘텐츠는 수정됨. 인라인 모드(`OTEL_LOG_RAW_API_BODIES=1`)에서만 내보내짐.992* `body`: JSON 직렬화된 Messages API 응답, id, 콘텐츠 블록, 사용량, 중지 이유 포함, 콘텐츠 제한에서 잘림 (기본값 60 KB). 확장 사고 콘텐츠는 수정됨. 인라인 모드에서만 내보냄 (`OTEL_LOG_RAW_API_BODIES=1`).
977* `body_ref`: 잘리지 않은 본문을 포함하는 `<dir>/<request_id>.response.json` 파일의 절대 경로. 파일 모드(`OTEL_LOG_RAW_API_BODIES=file:<dir>`)에서만 내보내짐.993* `body_ref`: 잘리지 않은 본문을 포함하는 `<dir>/<request_id>.response.json` 파일의 절대 경로. 파일 모드에서만 내보냄 (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).
978* `body_length`: 잘리지 않은 본문 길이. `OTEL_LOG_RAW_API_BODIES=file:<dir>`일 때 UTF-8 바이트, 또는 `=1`일 때 UTF-16 코드 단위994* `body_length`: 잘리지 않은 본문 길이. `OTEL_LOG_RAW_API_BODIES=file:<dir>`일 때 UTF-8 바이트, 또는 `=1`일 때 UTF-16 코드 단위
979* `body_truncated`: 인라인 잘림이 발생했을 때 `"true"`. 파일 모드 및 잘림이 발생하지 않았을 때 없음.995* `body_truncated`: 인라인 잘림이 발생했을 때 `"true"`. 파일 모드 및 잘림이 발생하지 않았을 때 없음.
980* `model`: 모델 식별자996* `model`: 모델 식별자
981* `query_source`: 요청을 발급한 하위 시스템997* `query_source`: 요청을 발급한 하위 시스템
982* `request_id`: `"req_011..."`과 같은 API 요청 ID, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨.998* `request_id`: `"req_011..."`과 같은 API 요청 ID, [이벤트 상관 속성](#event-correlation-attributes)에서 설명함.
983* `request_body_id`: 이 응답이 답변하는 [`api_request_body` 이벤트](#api-request-body-event)의 `request_body_id`. Claude Code v2.1.274 이상 필요999* `request_body_id`: 이 응답이 답변하는 [`api_request_body` 이벤트](#api-request-body-event)의 `request_body_id`. Claude Code v2.1.274 이상 필요
984* `message.id`: API가 응답에 할당한 메시지 ID, 응답 본문의 `id` 필드. Claude Code v2.1.274 이상 필요1000* `message.id`: API가 응답에 할당한 메시지 ID, 응답 본문의 `id` 필드. Claude Code v2.1.274 이상 필요
985* `message.uuid`: 응답의 최종 기록 항목의 UUID. `request_body_id`와 함께, 기록 메시지를 뒤의 요청 및 응답 본문에 연결합니다. Claude Code v2.1.274 이상 필요1001* `message.uuid`: 응답의 최종 기록 항목의 UUID. `request_body_id`와 함께 기록 메시지를 뒤의 요청 및 응답 본문에 연결합니다. Claude Code v2.1.274 이상 필요
986 1002
987<h4 id="tool-decision-event">1003<h4 id="tool-decision-event">
988 도구 결정 이벤트1004 도구 결정 이벤트
989</h4>1005</h4>
990 1006
991도구 권한 결정이 내려질 때 기록됩니다 (수락/거부).1007도구 권한 결정이 내려질 때 (수락/거부) 기록됩니다.
992 1008
993**이벤트 이름**: `claude_code.tool_decision`1009**이벤트 이름**: `claude_code.tool_decision`
994 1010
997* 모든 [표준 속성](#standard-attributes)1013* 모든 [표준 속성](#standard-attributes)
998* `event.name`: `"tool_decision"`1014* `event.name`: `"tool_decision"`
999* `event.timestamp`: ISO 8601 타임스탬프1015* `event.timestamp`: ISO 8601 타임스탬프
1000* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1016* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1001* `tool_name`: 도구의 이름 (예: "Read", "Edit", "Write", "NotebookEdit")1017* `tool_name`: 도구의 이름 (예: "Read", "Edit", "Write", "NotebookEdit")
1002* `tool_use_id`: 이 도구 호출의 고유 식별자. 훅에 전달된 `tool_use_id`와 일치하여 OTel 이벤트와 훅 캡처 데이터 간의 상관 관계를 허용합니다.1018* `tool_use_id`: 이 도구 호출의 고유 식별자. 훅에 전달된 `tool_use_id`와 일치하여 OTel 이벤트와 훅 캡처 데이터 간의 상관 관계를 허용합니다.
1003* `decision`: `"accept"` 또는 `"reject"`1019* `decision`: `"accept"` 또는 `"reject"`
1004* `tool_source`: 항상 존재합니다. 도구의 출처, CLI 작성 값의 폐쇄 집합으로. Claude Code v2.1.214 이상 필요1020* `tool_source`: 항상 존재. 도구의 출처, CLI 작성 값의 폐쇄 집합으로. Claude Code v2.1.214 이상 필요
1005 * `"builtin"`: CLI 자체의 도구1021 * `"builtin"`: CLI 자체의 도구
1006 * `"mcp"`: 일반적으로 MCP 서버1022 * `"mcp"`: 일반적으로 MCP 서버
1007 * `"sdk_host_builtin_mcp"`: Claude Desktop 자체에 내장된 프로세스 내 서버, Claude Desktop이 소유한 세션에서. Claude Desktop은 자신의 진입점 중 하나에서 시작한 세션을 소유합니다, `claude-desktop`, `claude-desktop-3p`, 또는 `local-agent`, 해당 세션이 중첩된 자식이 아닐 때; 중첩된 세션(Claude Code 자체가 생성하는 세션 포함)은 이러한 서버를 `"mcp"`로 보고합니다1023 * `"sdk_host_builtin_mcp"`: Claude Desktop 자체에 내장된 프로세스 내 서버, Claude Desktop이 소유한 세션에서. Claude Desktop은 자신의 진입점 중 하나에서 시작한 세션을 소유합니다, `claude-desktop`, `claude-desktop-3p`, 또는 `local-agent`, 해당 세션이 중첩된 자식이 아닐 때; 중첩된 세션(Claude Code 자체가 생성하는 세션 포함)은 이러한 서버를 `"mcp"`로 보고합니다
1008* `source`: 결정이 나온 위치:1024* `source`: 결정이 나온 위치:
1009 * `"config"`: 프롬프트 없이 자동으로 결정됨, 프로젝트 설정, 사용자의 개인 설정의 허용 또는 거부 규칙, 엔터프라이즈 관리 정책, `--allowedTools` 또는 `--disallowedTools` 플래그, 활성 권한 모드, 동일한 대화형 CLI 세션의 이전 프롬프트의 세션 범위 권한 부여, 또는 도구가 본질적으로 안전하기 때문에 기반합니다. 이벤트는 이러한 소스 중 어느 것이 일치했는지 나타내지 않습니다. Claude Code는 또한 권한 프롬프트 요청 자체가 실패할 때 `"config"`을 보고합니다, 예를 들어 Agent SDK의 [`canUseTool`](/docs/ko/agent-sdk/typescript#canusetool) 콜백 또는 [`--permission-prompt-tool`](/docs/ko/cli-reference#cli-flags) 도구가 잘못된 결과를 반환할 때, 또는 요청이 보류 중일 때 입력 스트림이 닫힐 때. v2.1.216 이전에는 Claude Code가 이러한 실패를 `"user_reject"`로 보고했습니다.1025 * `"config"`: 프롬프트 없이 자동으로 결정됨, 프로젝트 설정, 사용자의 개인 설정의 허용 또는 거부 규칙, 엔터프라이즈 관리 정책, `--allowedTools` 또는 `--disallowedTools` 플래그, 활성 권한 모드, 동일한 대화형 CLI 세션의 이전 프롬프트에서 세션 범위 부여, 또는 도구가 본질적으로 안전하기 때문에 기반. 이벤트는 이러한 소스 중 어느 것이 일치했는지 나타내지 않습니다. Claude Code는 또한 권한 프롬프트 요청 자체가 실패할 때 `"config"`을 보고합니다, 예를 들어 Agent SDK의 [`canUseTool`](/docs/ko/agent-sdk/typescript#canusetool) 콜백 또는 [`--permission-prompt-tool`](/docs/ko/cli-reference#cli-flags) 도구가 유효하지 않은 결과를 반환할 때, 또는 요청이 보류 중일 때 입력 스트림이 닫힐 때. v2.1.216 이전에는 Claude Code가 이러한 실패를 `"user_reject"`로 보고했습니다.
1010 * `"hook"`: `PreToolUse` 또는 `PermissionRequest` 훅이 결정을 반환했습니다.1026 * `"hook"`: `PreToolUse` 또는 `PermissionRequest` 훅이 결정을 반환했습니다.
1011 * `"user_permanent"`: 사용자가 권한 프롬프트에서 "예, 다시 묻지 마세요 ..." 를 선택했을 때 내보내짐, 이는 개인 설정에 허용 규칙을 저장합니다. 대화형 CLI에서 이는 해당 선택 자체에 대해서만 내보내집니다; 나중에 저장된 규칙과 일치하는 호출은 대신 `"config"`을 내보냅니다. Agent SDK 또는 비대화형 `-p` 세션에서, 초기 선택과 나중의 규칙 일치 모두 `"user_permanent"`를 내보냅니다. 수락으로 취급됩니다.1027 * `"user_permanent"`: 사용자가 권한 프롬프트에서 "Yes, and don't ask again for ..."을 선택했을 때 내보냄, 이는 개인 설정에 허용 규칙을 저장합니다. 대화형 CLI에서 이는 해당 선택 자체에 대해서만 내보냄; 나중의 호출이 저장된 규칙과 일치하면 `"config"`을 대신 내보냅니다. Agent SDK 또는 비대화형 `-p` 세션에서 초기 선택과 나중의 규칙 일치 모두 `"user_permanent"`를 내보냅니다. 수락으로 취급됨.
1012 * `"user_temporary"`: 사용자가 권한 프롬프트에서 "예"를 선택했을 때 내보내짐, 일회성 승인의 경우, 또는 파일 편집 또는 읽기 프롬프트에서 세션의 나머지 부분에 대한 액세스를 부여하는 옵션을 선택했을 때. 대화형 CLI에서 이는 선택 자체에 대해서만 내보내집니다; 나중에 해당 세션 범위 권한 부여와 일치하는 호출은 대신 `"config"`을 내보냅니다. Agent SDK 또는 비대화형 `-p` 세션에서, 선택과 나중의 일치 모두 `"user_temporary"`를 내보냅니다. 수락으로 취급됩니다.1028 * `"user_temporary"`: 사용자가 권한 프롬프트에서 "Yes"를 선택했을 때 또는 파일 편집 또는 읽기 프롬프트에서 세션의 나머지 부분에 대한 액세스를 부여하는 옵션을 선택했을 때 내보냄. 대화형 CLI에서 이는 선택 자체에 대해서만 내보냄; 나중의 호출이 해당 세션 범위 부여와 일치하면 `"config"`을 대신 내보냅니다. Agent SDK 또는 비대화형 `-p` 세션에서 선택과 나중의 일치 모두 `"user_temporary"`를 내보냅니다. 수락으로 취급됨.
1013 * `"user_abort"`: 사용자가 답변 없이 권한 프롬프트를 해제했을 때 내보내짐. Agent SDK 및 비대화형 `-p` 세션에서, 이는 `canUseTool` 또는 `--permission-prompt-tool` 권한 요청이 보류 중일 때 턴을 중단하는 것을 포함합니다; v2.1.216 이전에는 Claude Code가 해당 중단을 `"user_reject"`로 보고했습니다. 거부로 취급됩니다.1029 * `"user_abort"`: 사용자가 답변 없이 권한 프롬프트를 해제했을 때 내보냄. Agent SDK 및 비대화형 `-p` 세션에서 이는 `canUseTool` 또는 `--permission-prompt-tool` 권한 요청이 보류 중일 때 턴을 중단하는 것을 포함합니다; v2.1.216 이전에는 Claude Code가 해당 중단을 `"user_reject"`로 보고했습니다. 거부로 취급됨.
1014 * `"user_reject"`: 사용자가 프롬프트에서 "아니오"를 선택했을 때 내보내짐. 대화형 CLI에서 이는 해당 선택 자체에 대해서만 내보내집니다; 사용자의 개인 설정의 거부 규칙과 일치하는 호출은 대신 `"config"`을 내보냅니다. Agent SDK 또는 비대화형 `-p` 세션에서, 개인 설정의 거부 규칙과 일치하는 호출은 `"user_reject"`를 내보냅니다. 거부로 취급됩니다.1030 * `"user_reject"`: 사용자가 프롬프트에서 "No"를 선택했을 때 내보냄. 대화형 CLI에서 이는 해당 선택 자체에 대해서만 내보냄; 사용자의 개인 설정의 거부 규칙과 일치하는 호출은 `"config"`을 대신 내보냅니다. Agent SDK 또는 비대화형 `-p` 세션에서 개인 설정의 거부 규칙과 일치하는 호출은 `"user_reject"`를 내보냅니다. 거부로 취급됨.
1015* `tool_parameters` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 도구별 매개변수를 포함하는 JSON 문자열. [도구 결과 이벤트](#tool-result-event)와 동일한 형태, `git_commit_id`와 같은 실행 후 필드 제외. 권한 결정이 `updatedInput`을 통해 도구 입력을 다시 쓸 경우 수락된 호출의 `tool_result`와 값이 다를 수 있습니다. 이 속성을 사용하여 `decision`이 `"reject"`일 때 어느 명령이 거부되었는지 확인합니다.1031* `tool_parameters` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 도구별 매개변수를 포함하는 JSON 문자열. [도구 결과 이벤트](#tool-result-event)와 동일한 형태, `git_commit_id`와 같은 실행 후 필드 제외. 수락된 호출의 경우 `tool_result`와 다를 수 있습니다 (권한 결정이 `updatedInput`을 통해 도구 입력을 다시 쓸 경우). 이 속성을 사용하여 `decision`이 `"reject"`일 때 어느 명령이 거부되었는지 확인하세요.
1016 * `"sdk_host_builtin_mcp"` 도구의 경우: `mcp_server_name` 및 `mcp_tool_name`은 `OTEL_LOG_TOOL_DETAILS`가 꺼져 있어도 포함됩니다, 호스트 애플리케이션이 이러한 이름을 정의하기 때문입니다; 이들 없이, 이러한 기본 제공 서버 중 하나에 대한 거부된 호출은 기본 스트림에서 속성화할 수 없습니다. 사용자 구성 MCP 서버의 경우, 이벤트의 `tool_name`은 항상 리터럴 `"mcp_tool"`이고, 서버 및 도구 이름은 플래그가 켜져 있을 때만 `tool_parameters`에 나타납니다; 인수 콘텐츠는 어디서나 플래그가 필요합니다. Claude Code v2.1.214 이상 필요1032 * `"sdk_host_builtin_mcp"` 도구의 경우: `mcp_server_name` 및 `mcp_tool_name`은 `OTEL_LOG_TOOL_DETAILS`가 꺼져 있어도 포함됩니다, 호스트 애플리케이션이 이러한 이름을 정의하기 때문; 이들 없이 이러한 기본 제공 서버 중 하나에 대한 거부된 호출은 기본 스트림에서 속성화할 수 없습니다. 사용자 구성 MCP 서버의 경우 이벤트의 `tool_name`은 항상 리터럴 `"mcp_tool"`이며, 서버 및 도구 이름은 플래그가 켜져 있을 때만 `tool_parameters`에 나타납니다; 인수 콘텐츠는 어디서나 플래그가 필요합니다. Claude Code v2.1.214 이상 필요
1017 * Bash 도구의 경우: `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox` 포함. 데스크톱 앱의 작업 공간 bash 도구도 `tool_name`을 `Bash`로 보고하지만, `bash_command`, `full_command`, `timeout`만 포함합니다1033 * Bash 도구의 경우: `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox` 포함. 데스크톱 앱의 작업 공간 bash 도구도 `tool_name`을 `Bash`로 보고하지만 `bash_command`, `full_command`, `timeout`만 포함합니다
1018 * MCP 도구의 경우: `mcp_server_name`, `mcp_tool_name` 포함1034 * MCP 도구의 경우: `mcp_server_name`, `mcp_tool_name` 포함
1019 * Skill 도구의 경우: `skill_name` 포함1035 * Skill 도구의 경우: `skill_name` 포함
1020 * Agent 도구 또는 레거시 Task 도구의 경우: `subagent_type` 포함1036 * Agent 도구 또는 레거시 Task 도구의 경우: `subagent_type` 포함
1032* 모든 [표준 속성](#standard-attributes)1048* 모든 [표준 속성](#standard-attributes)
1033* `event.name`: `"permission_mode_changed"`1049* `event.name`: `"permission_mode_changed"`
1034* `event.timestamp`: ISO 8601 타임스탬프1050* `event.timestamp`: ISO 8601 타임스탬프
1035* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1051* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1036* `from_mode`: 이전 권한 모드, 예: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, 또는 `"bypassPermissions"`1052* `from_mode`: 이전 권한 모드, 예: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, 또는 `"bypassPermissions"`
1037* `to_mode`: 새로운 권한 모드1053* `to_mode`: 새로운 권한 모드
1038* `trigger`: 변경을 유발한 것. `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, 또는 `"auto_opt_in"` 중 하나. SDK 또는 브리지에서 전환이 시작될 때 없음.1054* `trigger`: 변경을 야기한 것. `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, 또는 `"auto_opt_in"` 중 하나. 전환이 SDK 또는 브리지에서 시작될 때 없음.
1039 1055
1040<h4 id="auth-event">1056<h4 id="auth-event">
1041 인증 이벤트1057 인증 이벤트
1050* 모든 [표준 속성](#standard-attributes)1066* 모든 [표준 속성](#standard-attributes)
1051* `event.name`: `"auth"`1067* `event.name`: `"auth"`
1052* `event.timestamp`: ISO 8601 타임스탬프1068* `event.timestamp`: ISO 8601 타임스탬프
1053* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1069* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1054* `action`: `"login"` 또는 `"logout"`1070* `action`: `"login"` 또는 `"logout"`
1055* `success`: `"true"` 또는 `"false"`1071* `success`: `"true"` 또는 `"false"`
1056* `auth_method`: 인증 방법, 예: `"oauth"`1072* `auth_method`: 인증 방법, 예: `"oauth"`
1057* `error_category`: 작업이 실패했을 때 범주별 오류 종류. 원시 오류 메시지는 절대 포함되지 않습니다1073* `error_category`: 작업이 실패했을 때 범주별 오류 종류. 원시 오류 메시지는 절대 포함되지 않습니다
1058* `status_code`: 작업이 HTTP 오류로 실패했을 때 HTTP 상태 코드를 문자열로1074* `status_code`: 작업이 HTTP 오류로 실패했을 때 HTTP 상태 코드 (문자열)
1059 1075
1060<h4 id="mcp-server-connection-event">1076<h4 id="mcp-server-connection-event">
1061 MCP 서버 연결 이벤트1077 MCP 서버 연결 이벤트
1070* 모든 [표준 속성](#standard-attributes)1086* 모든 [표준 속성](#standard-attributes)
1071* `event.name`: `"mcp_server_connection"`1087* `event.name`: `"mcp_server_connection"`
1072* `event.timestamp`: ISO 8601 타임스탬프1088* `event.timestamp`: ISO 8601 타임스탬프
1073* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1089* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1074* `status`: `"connected"`, `"failed"`, 또는 `"disconnected"`1090* `status`: `"connected"`, `"failed"`, 또는 `"disconnected"`
1075* `transport_type`: 서버 전송, 예: `"stdio"`, `"sse"`, 또는 `"http"`1091* `transport_type`: 서버 전송, 예: `"stdio"`, `"sse"`, 또는 `"http"`
1076* `server_scope`: 서버가 구성된 범위, 예: `"user"`, `"project"`, 또는 `"local"`1092* `server_scope`: 서버가 구성된 범위, 예: `"user"`, `"project"`, 또는 `"local"`
1077* `duration_ms`: 밀리초 단위의 연결 시도 기간1093* `duration_ms`: 연결 시도 지속 시간 (밀리초)
1078* `error_code`: 연결이 실패했을 때 오류 코드1094* `error_code`: 연결이 실패했을 때 오류 코드
1079* `is_plugin`: 서버가 플러그인에 의해 제공될 때 `true`, 그 외의 경우 `false`1095* `is_plugin`: 서버가 플러그인에 의해 제공될 때 `true`, 그 외의 경우 `false`
1080* `plugin_id_hash` (`is_plugin`이 `true`일 때): 플러그인 이름과 마켓플레이스의 안정적인 해시, 이름을 노출하지 않고 플러그인별로 이벤트를 그룹화합니다. Claude Code는 [플러그인 로드 이벤트](#plugin-loaded-event)에서 설명한 대로 계산합니다.1096* `plugin_id_hash` (`is_plugin`이 `true`일 때): 플러그인 이름과 마켓플레이스의 안정적인 해시, 이름을 노출하지 않고 플러그인별 이벤트를 그룹화하기 위해. Claude Code는 [플러그인 로드 이벤트](#plugin-loaded-event)에서 설명한 대로 계산합니다.
1081* `plugin.name` (`is_plugin`이 `true`일 때): 서버를 제공하는 플러그인의 이름. 타사 플러그인의 경우 `OTEL_LOG_TOOL_DETAILS=1`이 아니면 리터럴 문자열 `"third-party"`입니다; 이는 기본적으로 타사 플러그인 이름이 로그에 나타나는 것을 방지합니다. 공식 Anthropic 소스의 플러그인은 항상 이름으로 식별됩니다. `plugin_id_hash` 및 `plugin.name` 속성은 자신의 모니터링 백엔드로 흐르며 Anthropic으로 전송되지 않습니다1097* `plugin.name` (`is_plugin`이 `true`일 때): 서버를 제공하는 플러그인의 이름. 타사 플러그인의 경우 `OTEL_LOG_TOOL_DETAILS=1`이 아닌 경우 리터럴 문자열 `"third-party"`; 이는 기본적으로 로그에 나타나는 타사 플러그인 이름을 보호합니다. 공식 Anthropic 소스의 플러그인은 항상 이름으로 식별됩니다. `plugin_id_hash` 및 `plugin.name` 속성은 자신의 모니터링 백엔드로 흐르며 Anthropic으로 전송되지 않습니다
1082* `server_name` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 구성된 서버 이름1098* `server_name` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 구성된 서버 이름
1083* `error` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 연결이 실패했을 때 전체 오류 메시지1099* `error` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 연결이 실패했을 때 전체 오류 메시지
1084 1100
1095* 모든 [표준 속성](#standard-attributes)1111* 모든 [표준 속성](#standard-attributes)
1096* `event.name`: `"internal_error"`1112* `event.name`: `"internal_error"`
1097* `event.timestamp`: ISO 8601 타임스탬프1113* `event.timestamp`: ISO 8601 타임스탬프
1098* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1114* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1099* `error_name`: 오류 클래스 이름, 예: `"TypeError"` 또는 `"SyntaxError"`1115* `error_name`: 오류 클래스 이름, 예: `"TypeError"` 또는 `"SyntaxError"`
1100* `error_code`: 오류에 존재할 때 `"ENOENT"`와 같은 Node.js errno 코드1116* `error_code`: 오류에 있을 때 Node.js errno 코드, 예: `"ENOENT"`
1101 1117
1102<h4 id="plugin-installed-event">1118<h4 id="plugin-installed-event">
1103 플러그인 설치 이벤트1119 플러그인 설치 이벤트
1112* 모든 [표준 속성](#standard-attributes)1128* 모든 [표준 속성](#standard-attributes)
1113* `event.name`: `"plugin_installed"`1129* `event.name`: `"plugin_installed"`
1114* `event.timestamp`: ISO 8601 타임스탬프1130* `event.timestamp`: ISO 8601 타임스탬프
1115* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1131* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1116* `marketplace.is_official`: 마켓플레이스가 공식 Anthropic 마켓플레이스이면 `"true"`, 그 외의 경우 `"false"`1132* `marketplace.is_official`: 마켓플레이스가 공식 Anthropic 마켓플레이스일 때 `"true"`, 그 외의 경우 `"false"`
1117* `install.trigger`: `"cli"` 또는 `"ui"`1133* `install.trigger`: `"cli"` 또는 `"ui"`
1118* `plugin.name`: 설치된 플러그인의 이름. 타사 마켓플레이스의 경우 `OTEL_LOG_TOOL_DETAILS=1`일 때만 포함됨1134* `plugin.name`: 설치된 플러그인의 이름. 타사 마켓플레이스의 경우 `OTEL_LOG_TOOL_DETAILS=1`일 때만 포함됨
1119* `plugin.version`: 마켓플레이스 항목에서 선언된 경우 플러그인 버전. 타사 마켓플레이스의 경우 `OTEL_LOG_TOOL_DETAILS=1`일 때만 포함됨1135* `plugin.version`: 마켓플레이스 항목에서 선언된 경우 플러그인 버전. 타사 마켓플레이스의 경우 `OTEL_LOG_TOOL_DETAILS=1`일 때만 포함됨
1123 플러그인 로드 이벤트1139 플러그인 로드 이벤트
1124</h4>1140</h4>
1125 1141
1126세션 시작 시 활성화된 플러그인당 한 번 기록됩니다. 이 이벤트를 사용하여 플릿 전체에서 활성화된 플러그인을 인벤토리하세요, 설치 작업 자체를 기록하는 `plugin_installed`의 보완으로.1142세션 시작 시 활성화된 플러그인당 한 번 기록됩니다. 이 이벤트를 사용하여 설치 작업 자체를 기록하는 `plugin_installed`를 보완하여 플릿 전체에서 활성화된 플러그인을 인벤토리하세요.
1127 1143
1128**이벤트 이름**: `claude_code.plugin_loaded`1144**이벤트 이름**: `claude_code.plugin_loaded`
1129 1145
1132* 모든 [표준 속성](#standard-attributes)1148* 모든 [표준 속성](#standard-attributes)
1133* `event.name`: `"plugin_loaded"`1149* `event.name`: `"plugin_loaded"`
1134* `event.timestamp`: ISO 8601 타임스탬프1150* `event.timestamp`: ISO 8601 타임스탬프
1135* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1151* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1136* `plugin.name`: 플러그인의 이름. 공식 마켓플레이스 및 기본 제공 번들 외부의 플러그인의 경우 `OTEL_LOG_TOOL_DETAILS=1`이 아니면 `"third-party"`1152* `plugin.name`: 플러그인의 이름. 공식 마켓플레이스 및 기본 제공 번들 외부의 플러그인의 경우 `OTEL_LOG_TOOL_DETAILS=1`이 아닌 경우 값은 `"third-party"`
1137* `marketplace.name`: 플러그인이 설치된 마켓플레이스, 알려진 경우. `plugin.name`과 동일한 조건에서 `"third-party"`로 수정됨1153* `marketplace.name`: 플러그인이 설치된 마켓플레이스 (알려진 경우). `plugin.name`과 동일한 조건에서 `"third-party"`로 수정됨
1138* `plugin.version`: 플러그인 매니페스트의 버전. 이름이 수정되지 않고 매니페스트가 버전을 선언할 때만 포함됨1154* `plugin.version`: 플러그인 매니페스트의 버전. 이름이 수정되지 않고 매니페스트가 버전을 선언할 때만 포함됨
1139* `plugin.scope`: 플러그인의 출처 범주: `"official"`, `"community"`, `"org"`, `"user-local"`, 또는 `"default-bundle"`1155* `plugin.scope`: 플러그인의 출처 범주: `"official"`, `"community"`, `"org"`, `"user-local"`, 또는 `"default-bundle"`
1140* `enabled_via`: 플러그인이 활성화되는 방식: `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, 또는 `"user-install"`. `"admin-install"` 값은 플러그인이 [**조직 설정 > 플러그인 & 스킬**](https://claude.ai/admin-settings/skills?tab=inventory)에서 조직에 필수 또는 자동 설치로 설정되어 있음을 의미합니다. v2.1.246 이전에는 Claude Code가 이러한 플러그인을 `"user-install"` 또는 `"seed-mount"`로 보고했습니다1156* `enabled_via`: 플러그인이 활성화되게 된 방식: `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, 또는 `"user-install"`. `"admin-install"` 값은 플러그인이 [**조직 설정 > 플러그인 & 스킬**](https://claude.ai/admin-settings/skills?tab=inventory)에서 조직에 필수 또는 자동 설치로 설정되어 있음을 의미합니다. v2.1.246 이전에는 Claude Code가 이러한 플러그인을 `"user-install"` 또는 `"seed-mount"`로 보고했습니다
1141* `plugin_id_hash`: 플러그인 이름과 마켓플레이스의 결정적 해시, 구성된 내보내기로만 전송됨. 이름을 기록하지 않고 플릿 전체에서 로드된 서로 다른 플러그인을 계산할 수 있습니다. [claude.ai에서 동기화된 플러그인](/docs/ko/plugins/loading#synced-plugins)의 경우, Claude Code는 플러그인 이름을 claude.ai가 플러그인에 대해 보고하는 마켓플레이스 이름과 함께 해시하거나, 그 외의 경우 `synced`와 함께 해시합니다. v2.1.246 이전에는 Claude Code가 해시에서 claude.ai가 보고하는 마켓플레이스 이름을 사용하지 않았습니다1157* `plugin_id_hash`: 플러그인 이름과 마켓플레이스의 결정적 해시, 구성된 내보내기로만 전송됨. 이름을 기록하지 않고 플릿 전체에서 로드된 서로 다른 타사 플러그인을 계산할 수 있습니다. [claude.ai에서 동기화된 플러그인](/docs/ko/plugins/loading#synced-plugins)의 경우 Claude Code는 플러그인 이름을 claude.ai가 플러그인에 대해 보고하는 마켓플레이스 이름과 함께 해시하거나, 그 외의 경우 `synced`와 함께 해시합니다. v2.1.246 이전에는 Claude Code가 해시에서 claude.ai가 보고하는 마켓플레이스 이름을 사용하지 않았습니다
1142* `has_hooks`: 플러그인이 훅을 제공하는지 여부1158* `has_hooks`: 플러그인이 훅을 제공하는지 여부
1143* `has_mcp`: 플러그인이 MCP 서버를 제공하는지 여부1159* `has_mcp`: 플러그인이 MCP 서버를 제공하는지 여부
1144* `host_owned_mcp`: SDK 호스트가 이 플러그인의 MCP 연결을 관리하고 Claude Code가 플러그인의 MCP 서버 구성 읽기를 건너뛸 때 `true`, 그 외의 경우 `false`. Claude Code v2.1.172 이상 필요1160* `host_owned_mcp`: SDK 호스트가 이 플러그인의 MCP 연결을 관리하고 Claude Code가 플러그인의 MCP 서버 구성 읽기를 건너뛸 때 `true`, 그 외의 경우 `false`. Claude Code v2.1.172 이상 필요
1145* `skill_path_count`: 플러그인이 선언하는 스킬 디렉토리 수1161* `skill_path_count`: 플러그인이 선언하는 스킬 디렉토리 수
1146* `command_path_count`: 플러그인이 선언하는 명령 디렉토리 수1162* `command_path_count`: 플러그인이 선언하는 명령 디렉토리 수
1147* `agent_path_count`: 플러그인이 선언하는 에이전트 디렉토리 수1163* `agent_path_count`: 플러그인이 선언하는 에이전트 디렉토리 수
1148* `safe_mode`: [`--safe-mode`](/docs/ko/cli-reference)로 세션이 시작되었을 때 `"true"`, 그 외의 경우 `"false"`. 안전 모드에서 이 이벤트는 구성된 인벤토리만 보고합니다; 플러그인의 명령, 스킬, 훅, MCP 서버는 로드되지 않습니다. Claude Code v2.1.169 이상 필요1164* `safe_mode`: 세션이 [`--safe-mode`](/docs/ko/cli-reference)로 시작되었을 때 `"true"`, 그 외의 경우 `"false"`. 안전 모드에서 이 이벤트는 구성된 인벤토리만 보고합니다; 플러그인의 명령, 스킬, 훅, MCP 서버는 로드되지 않습니다. Claude Code v2.1.169 이상 필요
1149 1165
1150<h4 id="skill-activated-event">1166<h4 id="skill-activated-event">
1151 스킬 활성화 이벤트1167 스킬 활성화 이벤트
1160* 모든 [표준 속성](#standard-attributes)1176* 모든 [표준 속성](#standard-attributes)
1161* `event.name`: `"skill_activated"`1177* `event.name`: `"skill_activated"`
1162* `event.timestamp`: ISO 8601 타임스탬프1178* `event.timestamp`: ISO 8601 타임스탬프
1163* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1179* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1164* `skill.name`: 스킬의 이름. 사용자 정의 및 타사 플러그인 스킬의 경우 `OTEL_LOG_TOOL_DETAILS=1`이 아니면 자리 표시자 `"custom_skill"`1180* `skill.name`: 스킬의 이름. 사용자 정의 및 타사 플러그인 스킬의 경우 `OTEL_LOG_TOOL_DETAILS=1`이 아닌 경우 값은 자리 표시자 `"custom_skill"`
1165* `invocation_trigger`: 스킬이 트리거된 방식 (`"user-slash"`, `"claude-proactive"`, 또는 `"nested-skill"`)1181* `invocation_trigger`: 스킬이 트리거된 방식 (`"user-slash"`, `"claude-proactive"`, 또는 `"nested-skill"`)
1166* `skill.source`: 스킬이 로드된 위치 (예: `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)1182* `skill.source`: 스킬이 로드된 위치 (예: `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)
1167* `skill.kind`: 스킬이 워크플로우 스킬일 때 `"workflow"`. 그 외의 경우 없음.1183* `skill.kind`: 스킬이 워크플로우 스킬일 때 `"workflow"`. 그 외의 경우 없음.
1181* 모든 [표준 속성](#standard-attributes)1197* 모든 [표준 속성](#standard-attributes)
1182* `event.name`: `"at_mention"`1198* `event.name`: `"at_mention"`
1183* `event.timestamp`: ISO 8601 타임스탬프1199* `event.timestamp`: ISO 8601 타임스탬프
1184* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1200* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1185* `mention_type`: 멘션의 유형 (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). `"peer"` 값은 [다른 Claude Code 세션](/docs/ko/cross-session-messaging) 중 하나를 멘션했음을 의미합니다. Claude Code v2.1.232 이상 필요1201* `mention_type`: 멘션의 유형 (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). `"peer"` 값은 [다른 Claude Code 세션](/docs/ko/cross-session-messaging) 중 하나를 멘션했음을 의미합니다. Claude Code v2.1.232 이상 필요
1186* `success`: 멘션이 성공적으로 해결되었는지 여부 (`"true"` 또는 `"false"`)1202* `success`: 멘션이 성공적으로 해결되었는지 여부 (`"true"` 또는 `"false"`)
1187 1203
1189 API 재시도 소진 이벤트1205 API 재시도 소진 이벤트
1190</h4>1206</h4>
1191 1207
1192API 요청이 두 번 이상 시도 후 실패할 때 한 번 기록됩니다. 최종 `api_error` 이벤트와 함께 내보내집니다.1208API 요청이 둘 이상의 시도 후 실패할 때 한 번 기록됩니다. 최종 `api_error` 이벤트와 함께 내보냄.
1193 1209
1194**이벤트 이름**: `claude_code.api_retries_exhausted`1210**이벤트 이름**: `claude_code.api_retries_exhausted`
1195 1211
1198* 모든 [표준 속성](#standard-attributes)1214* 모든 [표준 속성](#standard-attributes)
1199* `event.name`: `"api_retries_exhausted"`1215* `event.name`: `"api_retries_exhausted"`
1200* `event.timestamp`: ISO 8601 타임스탬프1216* `event.timestamp`: ISO 8601 타임스탬프
1201* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1217* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1202* `model`: 사용된 모델1218* `model`: 사용된 모델
1203* `error`: 최종 오류 메시지1219* `error`: 최종 오류 메시지
1204* `status_code`: HTTP 상태 코드를 숫자로. 비 HTTP 오류의 경우 없음.1220* `status_code`: HTTP 상태 코드 (숫자). 비 HTTP 오류의 경우 없음.
1205* `total_attempts`: 수행된 총 시도 횟수1221* `total_attempts`: 수행된 총 시도 횟수
1206* `total_retry_duration_ms`: 모든 시도에 걸친 총 벽시계 시간1222* `total_retry_duration_ms`: 모든 시도에 걸친 총 벽시계 시간
1207* `speed`: `"fast"` 또는 `"normal"`1223* `speed`: `"fast"` 또는 `"normal"`
1210 훅 등록 이벤트1226 훅 등록 이벤트
1211</h4>1227</h4>
1212 1228
1213세션 시작 시 구성된 훅당 한 번 기록됩니다. 이 이벤트를 사용하여 플릿 전체에서 활성화된 훅을 인벤토리하세요, 실행별 `hook_execution_start` 및 `hook_execution_complete` 이벤트의 보완으로.1229세션 시작 시 구성된 훅당 한 번 기록됩니다. 이 이벤트를 사용하여 실행별 `hook_execution_start` 및 `hook_execution_complete` 이벤트를 보완하여 플릿 전체에서 활성화된 훅을 인벤토리하세요.
1214 1230
1215**이벤트 이름**: `claude_code.hook_registered`1231**이벤트 이름**: `claude_code.hook_registered`
1216 1232
1219* 모든 [표준 속성](#standard-attributes)1235* 모든 [표준 속성](#standard-attributes)
1220* `event.name`: `"hook_registered"`1236* `event.name`: `"hook_registered"`
1221* `event.timestamp`: ISO 8601 타임스탬프1237* `event.timestamp`: ISO 8601 타임스탬프
1222* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1238* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1223* `hook_event`: 훅 이벤트 유형, 예: `"PreToolUse"` 또는 `"PostToolUse"`1239* `hook_event`: 훅 이벤트 유형, 예: `"PreToolUse"` 또는 `"PostToolUse"`
1224* `hook_type`: 훅 구현 유형: `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, 또는 `"agent"`1240* `hook_type`: 훅 구현 유형: `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, 또는 `"agent"`
1225* `hook_source`: 훅이 정의된 위치: `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, 또는 `"pluginHook"`1241* `hook_source`: 훅이 정의된 위치: `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, 또는 `"pluginHook"`
1226* `safe_mode`: [`--safe-mode`](/docs/ko/cli-reference)로 세션이 시작되었을 때 `"true"`, 그 외의 경우 `"false"`. Claude Code v2.1.169 이상 필요1242* `safe_mode`: 세션이 [`--safe-mode`](/docs/ko/cli-reference)로 시작되었을 때 `"true"`, 그 외의 경우 `"false"`. Claude Code v2.1.169 이상 필요
1227* `hook_matcher` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 훅 구성에서 설정된 경우 훅 구성의 매처 문자열1243* `hook_matcher` (`OTEL_LOG_TOOL_DETAILS=1`일 때): 훅 구성에서 설정된 경우 훅 구성의 매처 문자열
1228* `plugin.name` (`hook_source`가 `"pluginHook"`일 때): 기여하는 플러그인의 이름. 공식 마켓플레이스 및 기본 제공 번들 외부의 플러그인의 경우 `OTEL_LOG_TOOL_DETAILS=1`이 아니면 `"third-party"`1244* `plugin.name` (`hook_source`가 `"pluginHook"`일 때): 기여하는 플러그인의 이름. 공식 마켓플레이스 및 기본 제공 번들 외부의 플러그인의 경우 `OTEL_LOG_TOOL_DETAILS=1`이 아닌 경우 값은 `"third-party"`
1229* `plugin_id_hash` (`hook_source`가 `"pluginHook"`일 때): 플러그인 이름과 마켓플레이스의 결정적 해시, 구성된 내보내기로만 전송됨. 이름을 기록하지 않고 기여하는 서로 다른 플러그인을 계산할 수 있습니다. Claude Code는 [플러그인 로드 이벤트](#plugin-loaded-event)에서 설명한 대로 계산합니다1245* `plugin_id_hash` (`hook_source`가 `"pluginHook"`일 때): 플러그인 이름과 마켓플레이스의 결정적 해시, 구성된 내보내기로만 전송됨. 이름을 기록하지 않고 서로 다른 기여 플러그인을 계산할 수 있습니다. Claude Code는 [플러그인 로드 이벤트](#plugin-loaded-event)에서 설명한 대로 계산합니다
1230 1246
1231<h4 id="hook-execution-start-event">1247<h4 id="hook-execution-start-event">
1232 훅 실행 시작 이벤트1248 훅 실행 시작 이벤트
1241* 모든 [표준 속성](#standard-attributes)1257* 모든 [표준 속성](#standard-attributes)
1242* `event.name`: `"hook_execution_start"`1258* `event.name`: `"hook_execution_start"`
1243* `event.timestamp`: ISO 8601 타임스탬프1259* `event.timestamp`: ISO 8601 타임스탬프
1244* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1260* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1245* `hook_event`: 훅 이벤트 유형, 예: `"PreToolUse"` 또는 `"PostToolUse"`1261* `hook_event`: 훅 이벤트 유형, 예: `"PreToolUse"` 또는 `"PostToolUse"`
1246* `hook_name`: 매처를 포함한 전체 훅 이름, 예: `"PreToolUse:Write"`1262* `hook_name`: 매처를 포함한 전체 훅 이름, 예: `"PreToolUse:Write"`
1247* `num_hooks`: 일치하는 훅 명령 수1263* `num_hooks`: 일치하는 훅 명령 수
1248* `managed_only`: 관리 정책 훅만 허용될 때 `"true"`1264* `managed_only`: 관리 정책 훅만 허용될 때 `"true"`
1249* `hook_source`: `"policySettings"` 또는 `"merged"`1265* `hook_source`: `"policySettings"` 또는 `"merged"`
1250* `safe_mode`: [`--safe-mode`](/docs/ko/cli-reference)로 세션이 시작되었을 때 `"true"`, 그 외의 경우 `"false"`. Claude Code v2.1.169 이상 필요1266* `safe_mode`: 세션이 [`--safe-mode`](/docs/ko/cli-reference)로 시작되었을 때 `"true"`, 그 외의 경우 `"false"`. Claude Code v2.1.169 이상 필요
1251* `hook_definitions`: JSON 직렬화된 훅 구성. 상세 베타 추적과 `OTEL_LOG_TOOL_DETAILS=1`이 모두 활성화되었을 때만 포함됨1267* `hook_definitions`: 훅 구성의 JSON 직렬화. 상세 베타 추적과 `OTEL_LOG_TOOL_DETAILS=1`이 모두 활성화되었을 때만 포함됨
1252 1268
1253<h4 id="hook-execution-complete-event">1269<h4 id="hook-execution-complete-event">
1254 훅 실행 완료 이벤트1270 훅 실행 완료 이벤트
1263* 모든 [표준 속성](#standard-attributes)1279* 모든 [표준 속성](#standard-attributes)
1264* `event.name`: `"hook_execution_complete"`1280* `event.name`: `"hook_execution_complete"`
1265* `event.timestamp`: ISO 8601 타임스탬프1281* `event.timestamp`: ISO 8601 타임스탬프
1266* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1282* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1267* `hook_event`: 훅 이벤트 유형1283* `hook_event`: 훅 이벤트 유형
1268* `hook_name`: 매처를 포함한 전체 훅 이름1284* `hook_name`: 매처를 포함한 전체 훅 이름
1269* `num_hooks`: 일치하는 훅 명령 수1285* `num_hooks`: 일치하는 훅 명령 수
1271* `num_blocking`: 차단 결정을 반환한 수1287* `num_blocking`: 차단 결정을 반환한 수
1272* `num_non_blocking_error`: 차단 없이 실패한 수1288* `num_non_blocking_error`: 차단 없이 실패한 수
1273* `num_cancelled`: 완료 전에 취소된 수1289* `num_cancelled`: 완료 전에 취소된 수
1274* `total_duration_ms`: 모든 일치하는 훅의 벽시계 기간1290* `total_duration_ms`: 모든 일치하는 훅의 벽시계 지속 시간
1275* `stdout_chars`: 성공한 일치하는 훅 전체의 stdout 총 문자 수. Claude Code v2.1.280 이상 필요1291* `stdout_chars`: 성공한 일치하는 훅 전체의 stdout 총 문자 수. Claude Code v2.1.280 이상 필요
1276* `additional_context_chars`: 일치하는 훅이 반환한 `additionalContext`의 총 문자 수. Claude Code v2.1.280 이상 필요1292* `additional_context_chars`: 일치하는 훅이 반환한 `additionalContext`의 총 문자 수. Claude Code v2.1.280 이상 필요
1277* `system_message_chars`: 일치하는 훅이 반환한 `systemMessage`의 총 문자 수. Claude Code v2.1.280 이상 필요1293* `system_message_chars`: 일치하는 훅이 반환한 `systemMessage`의 총 문자 수. Claude Code v2.1.280 이상 필요
1278* `initial_user_message_chars`: 일치하는 훅이 반환한 `initialUserMessage`의 총 문자 수. Claude Code v2.1.280 이상 필요1294* `initial_user_message_chars`: 일치하는 훅이 반환한 `initialUserMessage`의 총 문자 수. Claude Code v2.1.280 이상 필요
1279* `num_outputs_persisted`: [10,000자 상한](/docs/ko/hooks#json-output)을 초과한 훅 출력 수, Claude Code가 파일에 저장했습니다. Claude Code v2.1.280 이상 필요1295* `num_outputs_persisted`: [10,000자 상한](/docs/ko/hooks#json-output)을 초과한 훅 출력 수, Claude Code가 파일에 저장함. Claude Code v2.1.280 이상 필요
1280* `managed_only`: 관리 정책 훅만 허용될 때 `"true"`1296* `managed_only`: 관리 정책 훅만 허용될 때 `"true"`
1281* `hook_source`: `"policySettings"` 또는 `"merged"`1297* `hook_source`: `"policySettings"` 또는 `"merged"`
1282* `safe_mode`: [`--safe-mode`](/docs/ko/cli-reference)로 세션이 시작되었을 때 `"true"`, 그 외의 경우 `"false"`. Claude Code v2.1.169 이상 필요1298* `safe_mode`: 세션이 [`--safe-mode`](/docs/ko/cli-reference)로 시작되었을 때 `"true"`, 그 외의 경우 `"false"`. Claude Code v2.1.169 이상 필요
1283* `hook_definitions`: JSON 직렬화된 훅 구성. 상세 베타 추적과 `OTEL_LOG_TOOL_DETAILS=1`이 모두 활성화되었을 때만 포함됨1299* `hook_definitions`: 훅 구성의 JSON 직렬화. 상세 베타 추적과 `OTEL_LOG_TOOL_DETAILS=1`이 모두 활성화되었을 때만 포함됨
1284 1300
1285<h4 id="hook-plugin-metrics-event">1301<h4 id="hook-plugin-metrics-event">
1286 훅 플러그인 메트릭 이벤트1302 훅 플러그인 메트릭 이벤트
1287</h4>1303</h4>
1288 1304
1289공식 마켓플레이스 플러그인 훅이 호출별 메트릭을 내보낼 때 기록됩니다. 공식 Anthropic 마켓플레이스에서 설치된 플러그인만 이를 내보낼 수 있습니다. 타사 마켓플레이스 플러그인과 사용자 구성 훅은 이 이벤트로 내보내지 않습니다. 이 이벤트를 사용하여 자신의 관찰성 스택에서 찾기 비율, 비용, 기간과 같은 플러그인 동작을 모니터링합니다.1305공식 마켓플레이스 플러그인 훅이 호출별 메트릭을 내보낼 때 기록됩니다. 공식 Anthropic 마켓플레이스에서 설치된 플러그인만 이를 내보낼 수 있습니다. 타사 마켓플레이스 플러그인과 사용자 구성 훅은 이 이벤트로 내보내지 않습니다. 이 이벤트를 사용하여 자신의 관찰성 스택에서 찾기 비율, 비용, 지속 시간과 같은 플러그인 동작을 모니터링하세요.
1290 1306
1291**이벤트 이름**: `claude_code.hook_plugin_metrics`1307**이벤트 이름**: `claude_code.hook_plugin_metrics`
1292 1308
1295* 모든 [표준 속성](#standard-attributes)1311* 모든 [표준 속성](#standard-attributes)
1296* `event.name`: `"hook_plugin_metrics"`1312* `event.name`: `"hook_plugin_metrics"`
1297* `event.timestamp`: ISO 8601 타임스탬프1313* `event.timestamp`: ISO 8601 타임스탬프
1298* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1314* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1299* `plugin_id`: `<name>@<marketplace>` 형식의 플러그인 식별자1315* `plugin_id`: `<name>@<marketplace>` 형식의 플러그인 식별자
1300* `hook_event`: 메트릭을 내보낸 훅 이벤트 유형1316* `hook_event`: 메트릭을 내보낸 훅 이벤트 유형
1301* 최대 20개의 플러그인 내보낸 메트릭 키. 이름은 `^[a-z][a-z0-9_]{0,39}$`와 일치합니다. 값은 부울 또는 숫자입니다.1317* 최대 20개의 플러그인 내보낸 메트릭 키. 이름은 `^[a-z][a-z0-9_]{0,39}$`와 일치합니다. 값은 부울 또는 숫자입니다.
1313* 모든 [표준 속성](#standard-attributes)1329* 모든 [표준 속성](#standard-attributes)
1314* `event.name`: `"compaction"`1330* `event.name`: `"compaction"`
1315* `event.timestamp`: ISO 8601 타임스탬프1331* `event.timestamp`: ISO 8601 타임스탬프
1316* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1332* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1317* `trigger`: `"auto"` 또는 `"manual"`1333* `trigger`: `"auto"` 또는 `"manual"`
1318* `success`: `"true"` 또는 `"false"`1334* `success`: `"true"` 또는 `"false"`
1319* `duration_ms`: 압축 기간1335* `duration_ms`: 압축 지속 시간
1320* `pre_tokens`: 압축 전 대략적인 토큰 수1336* `pre_tokens`: 압축 전 대략적인 토큰 수
1321* `post_tokens`: 압축 후 대략적인 토큰 수1337* `post_tokens`: 압축 후 대략적인 토큰 수
1322* `error`: 압축이 실패했을 때 오류 메시지1338* `error`: 압축이 실패했을 때 오류 메시지
1323* `precompute_reuse`: `trigger`가 `"manual"`일 때만 설정됩니다. 자동 압축은 컨텍스트 윈도우가 채워지기 전에 백그라운드에서 요약을 준비할 수 있으며, 이 속성은 `/compact`가 해당 준비된 요약을 재사용했는지 기록합니다. `"hit"`은 재사용되었음을 의미합니다; `"miss_custom_instructions"`, `"miss_hook"`, `"miss_not_ready"`는 대신 새로운 요약이 계산된 이유를 제공합니다. Claude Code v2.1.153 이상 필요1339* `precompute_reuse`: `trigger`가 `"manual"`일 때만 설정됨. 자동 압축은 컨텍스트 윈도우가 채워지기 전에 백그라운드에서 요약을 준비할 수 있으며, 이 속성은 `/compact`가 준비된 요약을 재사용했는지 기록합니다. `"hit"`는 재사용되었음을 의미합니다; `"miss_custom_instructions"`, `"miss_hook"`, `"miss_not_ready"`는 대신 새로운 요약이 계산된 이유를 제공합니다. Claude Code v2.1.153 이상 필요
1324 1340
1325<h4 id="subagent-completed-event">1341<h4 id="subagent-completed-event">
1326 하위 에이전트 완료 이벤트1342 하위 에이전트 완료 이벤트
1327</h4>1343</h4>
1328 1344
1329[하위 에이전트](/docs/ko/sub-agents)가 완료되고 결과를 시작한 대화에 반환할 때 기록됩니다. 이를 사용하여 하위 에이전트 유형별로 도구 사용 및 실행 시간을 롤업합니다; 토큰 또는 비용 롤업의 경우, `query_source` `"subagent"`로 필터링된 [토큰 카운터](#token-counter) 및 [비용 카운터](#cost-counter)를 사용합니다, 이 이벤트의 `total_tokens`는 최종 요청만 포함하기 때문입니다. `"subagent"` 범주는 또한 하위 에이전트 이벤트를 내보내지 않는 에이전트 기반 훅의 요청을 계산합니다.1345[하위 에이전트](/docs/ko/sub-agents)가 완료되고 결과를 시작한 대화에 반환할 때 기록됩니다. 하위 에이전트 유형별로 도구 사용 및 실행 시간을 롤업하는 데 사용하세요; 토큰 또는 비용 롤업의 경우 이 이벤트의 `total_tokens`는 최종 요청만 포함하므로 `query_source` `"subagent"`로 필터링된 [토큰 카운터](#token-counter) 및 [비용 카운터](#cost-counter)를 사용하세요. `"subagent"` 범주는 또한 하위 에이전트 이벤트를 내보내지 않는 에이전트 기반 훅의 요청을 계산합니다.
1330 1346
1331**이벤트 이름**: `claude_code.subagent_completed`1347**이벤트 이름**: `claude_code.subagent_completed`
1332 1348
1335* 모든 [표준 속성](#standard-attributes)1351* 모든 [표준 속성](#standard-attributes)
1336* `event.name`: `"subagent_completed"`1352* `event.name`: `"subagent_completed"`
1337* `event.timestamp`: ISO 8601 타임스탬프1353* `event.timestamp`: ISO 8601 타임스탬프
1338* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1354* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1339* `agent_type`: 하위 에이전트 유형. 기본 제공 에이전트 이름과 공식 마켓플레이스 플러그인의 에이전트는 그대로 나타납니다; 다른 에이전트 이름은 `OTEL_LOG_TOOL_DETAILS=1`이 설정되지 않으면 `"custom"`으로 대체됩니다1355* `agent_type`: 하위 에이전트 유형. 기본 제공 에이전트 이름과 공식 마켓플레이스 플러그인의 에이전트는 그대로 나타납니다; 다른 에이전트 이름은 `OTEL_LOG_TOOL_DETAILS=1`이 설정되지 않은 경우 `"custom"`으로 대체됩니다
1340* `agent.source`: 에이전트 정의가 나온 위치: `built-in`, `plugin`, 또는 `userSettings` 또는 `projectSettings`와 같은 사용자 정의 에이전트를 정의한 설정 소스1356* `agent.source`: 에이전트 정의가 나온 위치: `built-in`, `plugin`, 또는 사용자 정의 에이전트를 정의한 설정 소스, 예: `userSettings` 또는 `projectSettings`
1341* `is_built_in`: 하위 에이전트가 기본 제공 에이전트 유형인지 여부1357* `is_built_in`: 하위 에이전트가 기본 제공 에이전트 유형인지 여부
1342* `is_async`: 하위 에이전트가 [백그라운드](/docs/ko/sub-agents#run-subagents-in-foreground-or-background)에서 실행되었는지 여부1358* `is_async`: 하위 에이전트가 [백그라운드](/docs/ko/sub-agents#run-subagents-in-foreground-or-background)에서 실행되었는지 여부
1343* `total_tokens`: 하위 에이전트의 최종 API 요청의 토큰 풋프린트: 해당 하나의 요청의 입력, 캐시 생성, 캐시 읽기, 출력 토큰, 대략 완료 시 하위 에이전트의 컨텍스트 크기. 실행 전체에 걸친 합계가 아님1359* `total_tokens`: 하위 에이전트의 최종 API 요청의 토큰 풋프린트: 해당 하나의 요청의 입력, 캐시 생성, 캐시 읽기, 출력 토큰, 대략 완료 시 하위 에이전트의 컨텍스트 크기. 실행 전체에 걸친 합계가 아님
1344* `total_tool_uses`: 하위 에이전트가 전체 실행에 걸쳐 수행한 도구 호출 수1360* `total_tool_uses`: 하위 에이전트가 전체 실행에 걸쳐 수행한 도구 호출 수
1345* `duration_ms`: 밀리초 단위의 실행 시간1361* `duration_ms`: 실행 시간 (밀리초)
1346* `model`: 하위 에이전트가 실행하도록 해결된 모델1362* `model`: 하위 에이전트가 실행하도록 해결된 모델
1347* `final_model`: 하위 에이전트의 최종 응답을 생성한 모델, 폴백과 같은 중간 실행 전환 후 `model`과 다릅니다. Claude Code v2.1.212 이상 필요1363* `final_model`: 하위 에이전트의 최종 응답을 생성한 모델, 폴백과 같은 중간 실행 전환 후 `model`과 다릅니다. Claude Code v2.1.212 이상 필요
1348* `model_swapped`: 둘 이상의 모델이 하위 에이전트의 요청을 제공했는지 여부. Claude Code v2.1.212 이상 필요1364* `model_swapped`: 둘 이상의 모델이 하위 에이전트의 요청을 제공했는지 여부. Claude Code v2.1.212 이상 필요
1349* `plugin_id_hash`, `plugin.name`: 플러그인 제공 에이전트에 대해 존재합니다. 공식 마켓플레이스 플러그인 이름은 그대로 나타납니다; 다른 플러그인 이름은 `OTEL_LOG_TOOL_DETAILS=1`이 설정되지 않으면 `"third-party"`로 대체됩니다1365* `plugin_id_hash`, `plugin.name`: 플러그인 제공 에이전트에 대해 존재. 공식 마켓플레이스 플러그인 이름은 그대로 나타납니다; 다른 플러그인 이름은 `OTEL_LOG_TOOL_DETAILS=1`이 설정되지 않은 경우 `"third-party"`로 대체됩니다
1350 1366
1351<h4 id="feedback-survey-event">1367<h4 id="feedback-survey-event">
1352 피드백 설문 이벤트1368 피드백 설문 이벤트
1353</h4>1369</h4>
1354 1370
1355세션 품질 설문이 표시되거나 답변될 때 기록됩니다. [세션 품질 설문](/docs/ko/data-usage#session-quality-surveys)에서 설문이 수집하는 내용과 제어 방법을 참조합니다.1371세션 품질 설문이 표시되거나 답변될 때 기록됩니다. [세션 품질 설문](/docs/ko/data-usage#session-quality-surveys)에서 설문이 수집하는 내용과 제어 방법을 참조하세요.
1356 1372
1357**이벤트 이름**: `claude_code.feedback_survey`1373**이벤트 이름**: `claude_code.feedback_survey`
1358 1374
1361* 모든 [표준 속성](#standard-attributes)1377* 모든 [표준 속성](#standard-attributes)
1362* `event.name`: `"feedback_survey"`1378* `event.name`: `"feedback_survey"`
1363* `event.timestamp`: ISO 8601 타임스탬프1379* `event.timestamp`: ISO 8601 타임스탬프
1364* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1380* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1365* `event_type`: 설문 수명 주기 이벤트, 예: `"appeared"`, `"responded"`, 또는 `"transcript_prompt_appeared"`1381* `event_type`: 설문 수명 주기 이벤트, 예: `"appeared"`, `"responded"`, 또는 `"transcript_prompt_appeared"`
1366* `appearance_id`: 하나의 설문 인스턴스에 대해 내보낸 이벤트를 연결하는 고유 ID1382* `appearance_id`: 하나의 설문 인스턴스에 대해 내보낸 이벤트를 연결하는 고유 ID
1367* `survey_type`: 이벤트를 생성한 설문. `"session"`은 "Claude가 어떻게 하고 있나요?" 평가 프롬프트입니다1383* `survey_type`: 이벤트를 생성한 설문. `"session"`은 "Claude가 어떻게 하고 있나요?" 평가 프롬프트
1368* `response`: `responded` 이벤트의 사용자 선택1384* `response`: `responded` 이벤트의 사용자 선택
1369* `enabled_via_override`: [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](/docs/ko/env-vars)이 설정되었을 때 `true`. 문자열이 아닌 부울로 내보내집니다. `session` 설문 이벤트에 존재합니다. 이 재정의가 플릿 전체에 적용되는지 확인하려면 이 속성으로 필터링합니다1385* `enabled_via_override`: [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](/docs/ko/env-vars)이 설정되었을 때 `true`. 부울로 내보냄, 문자열이 아님. `session` 설문 이벤트에 있음. 이 오버라이드가 플릿 전체에 적용되는지 확인하려면 이 속성으로 필터링하세요
1370 1386
1371<h4 id="retention-sweep-event">1387<h4 id="retention-sweep-event">
1372 보존 스윕 이벤트1388 보존 스윕 이벤트
1373</h4>1389</h4>
1374 1390
1375보존 정리 스윕의 실행당 한 번 기록되며, [세션 기록 및 기타 애플리케이션 데이터](/docs/ko/claude-directory#cleaned-up-automatically)를 [`cleanupPeriodDays`](/docs/ko/settings-reference#cleanupperioddays) 설정보다 오래된 것을 삭제합니다. Claude Code는 백그라운드에서 세션당 최대 한 번 스윕을 실행하며, 아무것도 삭제하지 않는 실행도 이벤트를 내보냅니다. Claude Code가 지난 24시간 동안 같은 머신의 모든 세션에서 스윕을 실행했다면, 이 세션의 스윕을 최소 10분 지연시키므로, 더 빨리 종료되는 세션은 아무것도 내보내지 않습니다. `claude -p`를 `--bare`로 실행할 때, Claude Code는 스윕을 실행하지 않으며 아무것도 내보내지 않습니다.1391보존 정리 스윕 실행당 한 번 기록되며, [세션 기록 및 기타 애플리케이션 데이터](/docs/ko/claude-directory#cleaned-up-automatically)를 [`cleanupPeriodDays`](/docs/ko/settings-reference#cleanupperioddays) 설정보다 오래된 것을 삭제합니다. Claude Code는 스윕을 백그라운드에서 세션당 최대 한 번 실행하며, 아무것도 삭제하지 않는 실행도 이벤트를 내보냅니다. Claude Code가 지난 24시간 동안 같은 머신의 모든 세션에서 스윕을 실행했다면 이 세션의 스윕을 최소 10분 이상 지연시키므로 더 빨리 종료되는 세션은 아무것도 내보내지 않습니다. `claude -p`를 `--bare`로 실행하면 Claude Code는 스윕을 실행하지 않으며 아무것도 내보내지 않습니다.
1376 1392
1377모든 OTel 이벤트처럼, 구성한 원격 측정 백엔드로만 이동합니다. Claude Code v2.1.227 이상 필요.1393모든 OTel 이벤트처럼 이 페이지의 이벤트는 구성한 원격 측정 백엔드로만 이동합니다. Claude Code v2.1.227 이상 필요.
1378 1394
1379Claude Code가 보존 기간을 안전하게 결정할 수 없을 때, 스윕을 일시 중지하고 `result`를 `"skipped"`로 설정하고 `skip_reason`을 포함하는 이벤트를 내보냅니다. [관리 설정](/docs/ko/server-managed-settings)이 `cleanupPeriodDays`를 설정할 때, 관리 값은 보존 기간을 고정하고 스윕은 낮은 우선순위 범위의 설정 파일이 손상되거나 유효하지 않을 때도 실행됩니다. `managed-settings.json` 자체를 읽을 수 없을 때, Claude Code는 [관리 계층](/docs/ko/managed-settings#how-claude-code-combines-managed-sources)이 서버 관리 설정과 같은 다른 곳에서 `cleanupPeriodDays`를 제공하지 않으면 스윕을 일시 중지합니다. 손상된 파일 옆의 `managed-settings.d/` 드롭인. 삭제 카운터 속성은 `result`가 `"complete"`일 때만 존재합니다.1395Claude Code가 보존 기간을 안전하게 결정할 수 없을 때 스윕을 일시 중지하고 `result`를 `"skipped"`로 설정하고 `skip_reason`을 포함하는 이벤트를 내보냅니다. [관리 설정](/docs/ko/server-managed-settings)이 `cleanupPeriodDays`를 설정할 때 관리 값은 보존 기간을 고정하고 스윕은 낮은 우선순위 범위의 설정 파일이 손상되거나 유효하지 않을 때도 실행됩니다. `managed-settings.json` 자체를 읽을 수 없을 때 Claude Code는 [관리 계층](/docs/ko/managed-settings#how-claude-code-combines-managed-sources)이 서버 관리 설정과 같은 다른 곳에서 `cleanupPeriodDays`를 제공하지 않는 한 스윕을 일시 중지합니다. 또는 손상된 파일 옆의 `managed-settings.d/` 드롭인. 삭제 카운터 속성은 `result`가 `"complete"`일 때만 존재합니다.
1380 1396
1381**이벤트 이름**: `claude_code.retention_sweep`1397**이벤트 이름**: `claude_code.retention_sweep`
1382 1398
1385* 모든 [표준 속성](#standard-attributes)1401* 모든 [표준 속성](#standard-attributes)
1386* `event.name`: `"retention_sweep"`1402* `event.name`: `"retention_sweep"`
1387* `event.timestamp`: ISO 8601 타임스탬프1403* `event.timestamp`: ISO 8601 타임스탬프
1388* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1404* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1389* `result`: 스윕이 실행되었을 때 `"complete"`, Claude Code가 일시 중지했을 때 `"skipped"`1405* `result`: 스윕이 실행되었을 때 `"complete"`, Claude Code가 일시 중지했을 때 `"skipped"`
1390* `period_days`: 병합된 설정의 `cleanupPeriodDays` 값, 일 단위, 또는 소스가 설정하지 않을 때 `30`. 건너뛴 이벤트에서, 스윕이 사용했을 값, Claude Code가 읽을 수 있는 설정 소스에서 계산됨1406* `period_days`: 병합된 설정의 `cleanupPeriodDays` 값 (일), 또는 소스가 설정하지 않을 때 `30`. 건너뛴 이벤트에서 스윕이 사용했을 값, Claude Code가 읽을 수 있는 설정 소스에서 계산됨
1391* `used_default`: 읽을 수 있는 설정 소스가 `cleanupPeriodDays`를 설정하지 않을 때 `"true"`, 그 외의 경우 `"false"`. 완료 이벤트에서, `"true"`는 30일 기본값이 적용되었음을 의미합니다1407* `used_default`: 읽을 수 있는 설정 소스가 `cleanupPeriodDays`를 설정하지 않을 때 `"true"`, 그 외의 경우 `"false"`. 완료 이벤트에서 `"true"`는 30일 기본값이 적용되었음을 의미합니다
1392* `skip_reason`: Claude Code가 스윕을 일시 중지한 이유. `result`가 `"skipped"`일 때만 존재:1408* `skip_reason`: Claude Code가 스윕을 일시 중지한 이유. `result`가 `"skipped"`일 때만 존재:
1393 * `"user_source_disabled"`: 사용자 설정이 제외되었습니다, 예를 들어 [`--setting-sources`](/docs/ko/cli-reference#cli-flags) 플래그 또는 SDK의 [`settingSources`](/docs/ko/agent-sdk/typescript#options) 옵션에 의해, 그리고 활성화된 소스가 `cleanupPeriodDays`를 제공하지 않습니다1409 * `"user_source_disabled"`: 사용자 설정이 제외됨, 예를 들어 [`--setting-sources`](/docs/ko/cli-reference#cli-flags) 플래그 또는 SDK의 [`settingSources`](/docs/ko/agent-sdk/typescript#options) 옵션에 의해, 활성화된 소스가 `cleanupPeriodDays`를 제공하지 않음
1394 * `"settings_unknowable"`: 설정 파일을 읽거나 구문 분석할 수 없어서, `cleanupPeriodDays` 또는 `desktopSessionCleanupPeriodDays`가 Claude Code가 볼 수 없는 값으로 설정될 수 있습니다1410 * `"settings_unknowable"`: 설정 파일을 읽거나 구문 분석할 수 없어 `cleanupPeriodDays` 또는 `desktopSessionCleanupPeriodDays`가 Claude Code가 볼 수 없는 값으로 설정될 수 있음
1395 * `"settings_invalid_key_set"`: 설정에 유효성 검사 오류가 있고 `cleanupPeriodDays` 또는 `desktopSessionCleanupPeriodDays`가 명시적으로 설정되어 있어서, 기본값으로 폴백하면 해당 설정에 대해 파일을 삭제하거나 유지할 수 있습니다1411 * `"settings_invalid_key_set"`: 설정에 유효성 검사 오류가 있고 `cleanupPeriodDays` 또는 `desktopSessionCleanupPeriodDays`가 명시적으로 설정되어 있어 기본값으로 폴백하면 해당 설정에 대해 파일을 삭제하거나 유지할 수 있음
1396* `transcripts_deleted`: 스윕이 삭제한 세션 기록 수, 최상위 `~/.claude/projects/*/*.jsonl` 파일1412* `transcripts_deleted`: 스윕이 삭제한 세션 기록 수, 최상위 `~/.claude/projects/*/*.jsonl` 파일
1397* `transcripts_exempted_desktop`: 보존 기간을 지난 기록 수, 스윕이 [Claude Desktop 및 Cowork 규칙](/docs/ko/claude-directory#cleaned-up-automatically)에 따라 유지했습니다. 이들은 `files_past_cutoff`에 계산되지 않습니다. Claude Code v2.1.248 이상 필요1413* `transcripts_exempted_desktop`: 보존 기간을 초과했지만 스윕이 [Claude Desktop 및 Cowork 규칙](/docs/ko/claude-directory#cleaned-up-automatically)에 따라 유지한 기록 수. 이들은 `files_past_cutoff`에 계산되지 않습니다. Claude Code v2.1.248 이상 필요
1398* `session_files_deleted`: 세션 파일 스윕이 삭제한 항목 수: 기록 및 사이드카, 녹음, 도구 결과와 같은 세션별 동반 파일1414* `session_files_deleted`: 세션 파일 스윕이 삭제한 아티팩트 수: 기록 및 사이드카, 녹음, 도구 결과와 같은 세션별 동반 파일
1399* `artifacts_deleted`: 데이터 디렉토리를 포함하여 스윕이 삭제한 총 항목 수. 일부 스윕은 제거된 전체 디렉토리 트리를 하나의 항목으로 계산하고 몇 가지 정리 통과는 카운터에 기여하지 않으므로, 값을 정확한 파일 수보다는 하한으로 취급합니다1415* `artifacts_deleted`: 데이터 디렉토리 전체에서 스윕이 삭제한 총 항목, 세션 파일 포함. 일부 스윕은 전체 제거된 디렉토리 트리를 하나의 항목으로 계산하고 몇 가지 정리 통과는 카운터에 기여하지 않으므로 값을 정확한 파일 수보다는 하한으로 취급하세요
1400* `files_retained_fresh`: 검사되고 보존 기간 내에 있기 때문에 제자리에 남겨진 파일. 파일별 스윕만 이들을 계산하므로, 값은 하한입니다; 0이 아닌 값은 정상적인 정상 상태입니다1416* `files_retained_fresh`: 검사되고 보존 기간 내에 있기 때문에 제자리에 남겨진 파일. 파일별 스윕만 이들을 계산하므로 값은 하한입니다; 0이 아닌 값은 정상적인 정상 상태입니다
1401* `files_past_cutoff`: 보존 기간보다 오래되었지만 스윕이 삭제하지 못한 파일, 예를 들어 권한 오류 또는 열린 파일 때문에. 0 이상의 값은 파일이 구성된 보존 기간을 초과했음을 의미합니다; 0은 없었다는 증거가 아닙니다, 전체 디렉토리 제거 실패가 대신 `error_count`에 계산되기 때문입니다1417* `files_past_cutoff`: 보존 기간보다 오래되었지만 스윕이 삭제하지 못한 파일, 예를 들어 권한 오류 또는 열린 파일 때문에. 0 이상의 값은 파일이 구성된 보존 기간을 초과했음을 의미합니다; 0은 아무것도 하지 않았다는 증거가 아닙니다, 전체 디렉토리 제거 실패는 대신 `error_count`에 계산되기 때문입니다
1402* `error_count`: 스윕이 파일을 나열하거나 삭제하는 동안 발생한 오류 수1418* `error_count`: 스윕이 파일을 나열하거나 삭제하는 동안 발생한 오류 수
1403 1419
1404<h4 id="managed-settings-resolved-event">1420<h4 id="managed-settings-resolved-event">
1405 관리 설정 해결 이벤트1421 관리 설정 해결 이벤트
1406</h4>1422</h4>
1407 1423
1408세션이 해결한 [관리 설정](/docs/ko/managed-settings)과 함께 기록됩니다: 세션 시작 시 한 번, 관리 설정 또는 [정책 도우미](/docs/ko/managed-settings#compute-the-policy-with-a-helper-program)의 상태가 세션 중에 변경될 때 다시, Claude Code가 이유 중 하나로 시작을 거부하거나 세션을 종료할 때 `error.type` 속성이 나열합니다.1424세션이 해결한 [관리 설정](/docs/ko/managed-settings)과 함께 기록됨: 세션 시작 시 한 번, 관리 설정 또는 [정책 도우미](/docs/ko/managed-settings#compute-the-policy-with-a-helper-program)의 상태가 세션 중에 변경될 때 다시, Claude Code가 거부하거나 `error.type` 속성이 나열하는 이유 중 하나로 세션을 종료할 때.
1409이 이벤트를 사용하여 예상치 못한 관리 소스에서 실행 중인 머신, 정책 도우미가 실패하는 머신, 머신이 시작을 거부한 이유를 찾습니다.1425이 이벤트를 사용하여 예상치 못한 관리 소스에서 실행 중인 머신, 정책 도우미가 실패하는 머신, 머신이 시작을 거부한 이유를 찾으세요.
1410Claude Code v2.1.274 이상 필요.1426Claude Code v2.1.274 이상 필요.
1411 1427
1412기본적으로, 이벤트는 관리 소스와 정책 도우미의 상태를 전달하지만 설정 자체는 전달하지 않습니다. 수정된 `managed_settings.settings` 속성과 `managed_settings.resolved_sha256` 다이제스트를 추가하려면, `OTEL_LOG_MANAGED_SETTINGS=1`을 설정합니다:1428기본적으로 이벤트는 관리 소스와 정책 도우미의 상태를 전달하지만 설정 자체는 전달하지 않습니다. 수정된 `managed_settings.settings` 속성과 `managed_settings.resolved_sha256` 다이제스트를 추가하려면 `OTEL_LOG_MANAGED_SETTINGS=1`을 설정하세요:
1413 1429
1414* 관리 설정, 사용자 설정, `--settings`의 `env` 블록, 또는 Claude Code를 시작하는 환경에서 설정합니다. 프로젝트 또는 로컬 설정의 값은 이를 켜지 않습니다, 복제된 저장소가 이들을 쓸 수 있기 때문입니다.1430* 관리 설정, 사용자 설정, `--settings`의 `env` 블록 또는 Claude Code를 시작하는 환경에서 설정하세요. 프로젝트 또는 로컬 설정의 값은 복제된 저장소가 이들을 쓸 수 있기 때문에 켜지 않습니다.
1415* 서버 관리 설정은 [보안 승인 대화](/docs/ko/server-managed-settings#security-approval-dialogs)를 표시하지 않고 이를 설정할 수 있습니다, 변수는 조직이 이미 받는 이벤트에 조직 자체의 수정된 정책만 추가하기 때문입니다.1431* 서버 관리 설정은 [보안 승인 대화](/docs/ko/server-managed-settings#security-approval-dialogs)를 표시하지 않고 설정할 수 있습니다, 변수는 조직이 이미 받는 이벤트에 조직 자체의 수정된 정책만 추가하기 때문입니다.
1416 1432
1417[신뢰하지 않은](/docs/ko/permissions#what-runs-before-you-trust-a-folder) 폴더의 대화형 세션에서, Claude Code는 거부 이벤트를 내보내지 않습니다.1433[신뢰하지 않은](/docs/ko/permissions#what-runs-before-you-trust-a-folder) 폴더의 대화형 세션에서 Claude Code는 거부 이벤트를 내보내지 않습니다.
1418 1434
1419**이벤트 이름**: `claude_code.managed_settings_resolved`1435**이벤트 이름**: `claude_code.managed_settings_resolved`
1420 1436
1423* 모든 [표준 속성](#standard-attributes)1439* 모든 [표준 속성](#standard-attributes)
1424* `event.name`: `"managed_settings_resolved"`1440* `event.name`: `"managed_settings_resolved"`
1425* `event.timestamp`: ISO 8601 타임스탬프1441* `event.timestamp`: ISO 8601 타임스탬프
1426* `event.sequence`: 이벤트 순서 지정을 위한 프로세스당 카운터, [이벤트 상관 속성](#event-correlation-attributes)에서 설명됨1442* `event.sequence`: [이벤트 상관 속성](#event-correlation-attributes)에서 설명한 이벤트 순서 지정을 위한 프로세스당 카운터
1427* `managed_settings.trigger`: 세션 시작 이벤트의 경우 `"startup"`, 관리 설정 또는 정책 도우미의 상태가 세션 후반에 변경되었을 때 `"change"`, 또는 관리 설정 정책이 세션을 중지했을 때 `"refused"`. Claude Code는 마지막 이벤트와 다른 속성이 있을 때만 `change` 이벤트를 보내며, 변경된 설정 값은 `OTEL_LOG_MANAGED_SETTINGS`가 꺼져 있어도 계산됩니다1443* `managed_settings.trigger`: 세션 시작 이벤트의 경우 `"startup"`, 관리 설정 또는 정책 도우미의 상태가 세션 후반에 변경되었을 때 `"change"`, 또는 관리 설정 정책이 세션을 중지했을 때 `"refused"`. Claude Code는 마지막 이벤트와 다른 속성이 있을 때만 `change` 이벤트를 전송하며, 변경된 설정 값은 `OTEL_LOG_MANAGED_SETTINGS`가 꺼져 있어도 계산됩니다
1428* `error.type`: Claude Code가 세션을 중지한 이유. `refused` 이벤트에만 존재:1444* `error.type`: Claude Code가 세션을 중지한 이유. `refused` 이벤트에만 존재:
1429 * `"helper_failed"`: [정책 도우미 실행이 실패했습니다](/docs/ko/settings-reference#helper-failures)1445 * `"helper_failed"`: [정책 도우미 실행이 실패함](/docs/ko/settings-reference#helper-failures)
1430 * `"policy_invalid"`: 관리 설정에 Claude Code가 시작되지 않도록 하는 오류가 포함되어 있거나, 관리 소스가 로드되지 못해서, Claude Code가 조직 로그인 적용을 확인할 수 없습니다1446 * `"policy_invalid"`: 관리 설정에 Claude Code가 시작하지 못하게 하는 오류가 포함되어 있거나 다른 이유로 관리 소스를 읽지 못해 Claude Code가 조직 로그인 또는 공급자 적용을 확인할 수 없음
1431 * `"consent_rejected"`: 사용자가 서버 관리 설정의 [보안 승인 대화](/docs/ko/server-managed-settings#security-approval-dialogs)를 거부했습니다1447 * `"provider_not_allowed"`: 세션이 API 공급자를 사용하거나 공급자의 트래픽을 관리 [`allowedProviders`](/docs/ko/settings-reference#allowedproviders) 목록이 허용하지 않는 호스트로 보낼 것입니다. Claude Code v2.1.285 이상 필요
1432 * `"force_refresh_failed"`: [`forceRemoteSettingsRefresh`](/docs/ko/settings-reference#forceremotesettingsrefresh)가 필요로 하는 설정 가져오기가 실패했습니다1448 * `"consent_rejected"`: 사용자가 서버 관리 설정의 [보안 승인 대화](/docs/ko/server-managed-settings#security-approval-dialogs)를 거부함
1433 * `"gateway_rejected"`: [Claude 앱 게이트웨이](/docs/ko/claude-apps-gateway)가 관리 설정 로드에 HTTP 403으로 응답했습니다1449 * `"force_refresh_failed"`: [`forceRemoteSettingsRefresh`](/docs/ko/settings-reference#forceremotesettingsrefresh)가 필요로 하는 설정 가져오기가 실패함
1450 * `"gateway_rejected"`: [Claude 앱 게이트웨이](/docs/ko/claude-apps-gateway)가 관리 설정 로드에 HTTP 403으로 답변함
1434 * `"version_below_minimum"`: 이 Claude Code 버전이 [`requiredMinimumVersion`](/docs/ko/settings-reference#requiredminimumversion) 아래이거나 [`requiredMaximumVersion`](/docs/ko/settings-reference#requiredmaximumversion) 위입니다1451 * `"version_below_minimum"`: 이 Claude Code 버전이 [`requiredMinimumVersion`](/docs/ko/settings-reference#requiredminimumversion) 아래이거나 [`requiredMaximumVersion`](/docs/ko/settings-reference#requiredmaximumversion) 위입니다
1435 * `"_OTHER"`: Claude 앱 게이트웨이 관리 설정 로드가 다른 이유로 실패했습니다1452 * `"_OTHER"`: Claude 앱 게이트웨이 관리 설정 로드가 다른 이유로 실패함
1436* `managed_settings.sources`: 최소 하나의 [정책 키](/docs/ko/managed-settings#how-claude-code-combines-managed-sources)를 전달하는 모든 관리 소스, 최고 우선순위 먼저, `first-wins`에서 효과를 갖지 않는 소스 포함. 값은 `"remote"`, MDM 또는 OS 수준 정책의 경우 `"plist"` 또는 `"hklm"`, 관리 설정 파일 및 드롭인의 경우 `"file"`, [포함 호스트](/docs/ko/managed-settings#let-an-embedding-host-add-policy)가 설정을 제공할 때 `"parent"`, [Windows HKCU 레지스트리 값](/docs/ko/managed-settings#where-each-mechanism-stores-the-policy)의 경우 `"hkcu"` Claude Code가 [읽을 때](/docs/ko/managed-settings#how-claude-code-combines-managed-sources). 제어 키만 전달하거나 Claude Code가 읽을 수 없는 소스는 나열되지 않습니다. 문자열 배열로 내보내짐, 관리 소스가 정책 키를 전달하지 않을 때 비어 있음1453* `managed_settings.sources`: 최소 하나의 [정책 키](/docs/ko/managed-settings#how-claude-code-combines-managed-sources)를 전달하는 모든 관리 소스, 최고 우선순위 먼저, `first-wins`에서 효과를 갖지 않는 소스 포함. 값은 `"remote"`, `"plist"` 또는 `"hklm"` (MDM 또는 OS 수준 정책), `"file"` (관리 설정 파일 및 드롭인), `"parent"` ([포함 호스트](/docs/ko/managed-settings#let-an-embedding-host-add-policy)가 설정을 제공할 때), `"hkcu"` ([Windows HKCU 레지스트리 값](/docs/ko/managed-settings#where-each-mechanism-stores-the-policy) Claude Code가 [읽을 때](/docs/ko/managed-settings#how-claude-code-combines-managed-sources)). 정책 키만 전달하거나 Claude Code가 읽을 수 없는 소스는 나열되지 않습니다. 관리 소스가 정책 키를 전달하지 않을 때 빈 배열로 내보냄
1437* `managed_settings.source_behavior`: Claude Code가 읽은 [`managedSourcesBehavior`](/docs/ko/settings-reference#managedsourcesbehavior) 값, `"first-wins"` 또는 `"merge"`. 소스가 키를 설정하지 않을 때 `"first-wins"`1454* `managed_settings.source_behavior`: Claude Code가 읽은 [`managedSourcesBehavior`](/docs/ko/settings-reference#managedsourcesbehavior) 값, `"first-wins"` 또는 `"merge"`. 소스가 키를 설정하지 않을 때 `"first-wins"`
1438* `managed_settings.helper.state`: 선택된 MDM 또는 파일 소스가 구성하는 정책 도우미의 상태:1455* `managed_settings.helper.state`: 선택된 MDM 또는 파일 소스가 구성하는 정책 도우미의 상태:
1439 * `"ok"`: 도우미의 출력이 관리 설정으로 제공됩니다1456 * `"ok"`: 도우미의 출력이 관리 설정으로 제공됨
1440 * `"bad_path"`, `"not_a_file"`, `"exit_nonzero"`, `"timed_out"`, `"oversize"`, `"parse_failed"`, `"envelope_invalid"`, 또는 `"schema_rejected"`: 도우미의 마지막 실행이 실패했습니다. [도우미 실패](/docs/ko/settings-reference#helper-failures)가 경우를 설명합니다1457 * `"bad_path"`, `"not_a_file"`, `"exit_nonzero"`, `"timed_out"`, `"oversize"`, `"parse_failed"`, `"envelope_invalid"`, 또는 `"schema_rejected"`: 도우미의 마지막 실행이 실패함. [도우미 실패](/docs/ko/settings-reference#helper-failures)가 경우를 설명합니다
1441 * `"none"`: 도우미가 구성되지 않았거나, 도우미를 구성하는 소스가 MDM 정책 또는 관리 설정 파일이 아닙니다1458 * `"none"`: 도우미가 구성되지 않았거나 도우미를 구성하는 소스가 MDM 정책 또는 관리 설정 파일이 아님
1442* `managed_settings.helper.applied`: 도우미의 자체 출력이 관리 설정으로 제공될 때 `"output"`, 그렇지 않을 때 `"none"`1459* `managed_settings.helper.applied`: 도우미의 자체 출력이 관리 설정으로 제공될 때 `"output"`, 그렇지 않을 때 `"none"`
1443* `managed_settings.helper.entry`: Claude Code가 [`policyHelper`](/docs/ko/settings-reference#policyhelper)를 선택했을 때 `"policyHelper"`. 도우미를 선택하지 않았을 때 없음1460* `managed_settings.helper.entry`: Claude Code가 [`policyHelper`](/docs/ko/settings-reference#policyhelper)를 선택했을 때 `"policyHelper"`. 도우미를 선택하지 않았을 때 없음
1444* `managed_settings.helper.path`: 도우미의 구성된 [`path`](/docs/ko/settings-reference#policyhelper-path). Claude Code가 도우미를 선택했을 때마다 존재, `OTEL_LOG_MANAGED_SETTINGS`이 설정되었는지 여부와 관계없이1461* `managed_settings.helper.path`: 도우미의 구성된 [`path`](/docs/ko/settings-reference#policyhelper-path). Claude Code가 도우미를 선택했을 때마다 존재, `OTEL_LOG_MANAGED_SETTINGS`이 설정되었는지 여부와 관계없이
1445* `managed_settings.resolved_sha256` (`OTEL_LOG_MANAGED_SETTINGS=1`일 때): 수정 전 해결된 관리 설정의 SHA-256, JSON으로 직렬화되고 키가 재귀적으로 정렬되고 공백이 없습니다. 동일한 다이제스트를 가진 머신은 동일한 정책을 실행합니다. Claude Code는 짧은 정책을 추측 해싱으로 복구할 수 있기 때문에 옵트인으로만 다이제스트를 보냅니다. 관리 설정이 해결되지 않았을 때 없고, `refused` 이벤트에서 없습니다.1462* `managed_settings.resolved_sha256` (`OTEL_LOG_MANAGED_SETTINGS=1`일 때): 수정 전 해결된 관리 설정의 SHA-256, JSON으로 직렬화되고 키가 재귀적으로 정렬되고 공백이 없음. 동일한 다이제스트를 실행하는 머신은 동일한 정책을 실행합니다. Claude Code는 짧은 정책을 추측 해싱으로 복구할 수 있기 때문에 옵트인으로만 다이제스트를 전송합니다. 관리 설정이 해결되지 않았을 때 없고, `refused` 이벤트에서 없음.
1446* `managed_settings.settings` (`OTEL_LOG_MANAGED_SETTINGS=1`일 때): 해결된 관리 설정의 이름과 형태, JSON 문자열로, 값이 수정됨. `refused` 이벤트에서 없습니다. Claude Code는 설정 스키마에서 이를 구축합니다:1463* `managed_settings.settings` (`OTEL_LOG_MANAGED_SETTINGS=1`일 때): 해결된 관리 설정의 이름과 형태, JSON 문자열로, 값이 수정됨. `refused` 이벤트에서 없음. Claude Code는 설정 스키마에서 빌드합니다:
1447 1464
1448 * 스키마가 내보내기를 선언하는 설정 이름, 스키마가 선언하지 않는 키는 생략됨1465 * 스키마가 선언하는 설정 이름은 내보내지고, 스키마가 선언하지 않는 키는 생략됨
1449 * 부울, 숫자, 문자열 값 스키마가 `permissions.defaultMode`와 같은 고정 옵션 집합으로 제한, 그대로 내보내짐. `sandbox.network.httpProxyPort` 및 `sandbox.network.socksProxyPort`는 `"[REDACTED]"`로 내보내짐1466 * 부울, 숫자, 스키마가 `permissions.defaultMode`와 같은 고정 옵션 집합으로 제한하는 문자열 값은 그대로 내보냄. `sandbox.network.httpProxyPort` 및 `sandbox.network.socksProxyPort`는 `"[REDACTED]"`로 내보냄
1450 * 다른 모든 문자열, 예: `model`, `apiKeyHelper`, 모든 `env` 값, 모든 URL, 모든 명령, `"[REDACTED]"`로 내보내짐1467 * 다른 모든 문자열, 예: `model`, `apiKeyHelper`, 모든 `env` 값, 모든 URL, 모든 명령은 `"[REDACTED]"`로 내보냄
1451 * 맵의 항목 이름, 예: `env` 변수 이름 및 플러그인 ID, 그대로 내보내짐. 스키마가 항목을 입력하지 않는 설정, 예: `vimInsertModeRemaps`, 단일 `"[REDACTED]"`로 내보내짐, `sandbox.ignoreViolations`는 명령 패턴 없이 경로 목록 목록으로 내보내짐1468 * 맵의 항목 이름, 예: `env` 변수 이름 및 플러그인 ID는 그대로 내보냄. 스키마가 항목을 입력하지 않는 설정, 예: `vimInsertModeRemaps`는 단일 `"[REDACTED]"`로 내보내지고, `sandbox.ignoreViolations`는 명령 패턴 없이 경로 목록 목록으로 내보냄
1452 * 목록은 길이를 유지하며, 각 항목은 동일한 규칙으로 수정됨1469 * 목록은 길이를 유지하며, 각 항목은 동일한 규칙으로 수정됨
1453 * `permissions.allow`, `permissions.deny`, 또는 `permissions.ask` 규칙은 콘텐츠가 수정된 도구 이름으로 내보내짐, 예: `Read([REDACTED])`, 도구가 이 Claude Code 버전에 기본 제공되거나 `mcp__jira__create_issue`와 같은 `mcp__` 참조일 때. 다른 규칙은 `"[REDACTED]"`로 내보내짐1470 * `permissions.allow`, `permissions.deny`, 또는 `permissions.ask` 규칙은 도구 이름으로 내보내지고 콘텐츠는 수정됨, 예: `Read([REDACTED])`, 도구가 이 Claude Code 버전에 기본 제공되거나 `mcp__jira__create_issue`와 같은 `mcp__` 참조일 때. 다른 규칙은 `"[REDACTED]"`로 내보냄
1454 * 훅은 동일한 규칙을 따르므로, `type` 및 `timeout`과 같은 고정 옵션 및 숫자 필드는 표시되고, 각 명령, URL, `matcher`, `if` 조건은 `"[REDACTED]"`로 내보내짐1471 * 훅은 동일한 규칙을 따르므로 고정 옵션 및 숫자 필드, 예: `type` 및 `timeout`은 표시되고, 각 명령, URL, `matcher`, `if` 조건은 `"[REDACTED]"`로 내보냄
1455 1472
1456 예를 들어, `apiKeyHelper`, 두 개의 `env` 변수, 거부 규칙이 있는 관리 설정은 `{"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}`.1473 예를 들어 `apiKeyHelper`, 두 개의 `env` 변수, 거부 규칙이 있는 관리 설정은 `{"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}`로 내보냄.
1457 1474
1458 Claude Code는 값을 8 KB UTF-8에서 자르며, 자른 값은 유효한 JSON이 아닙니다1475 Claude Code는 값을 8 KB UTF-8에서 자르고, 자른 값은 유효한 JSON이 아님
1459* `managed_settings.settings_truncated` (`managed_settings.settings`가 존재할 때): Claude Code가 `managed_settings.settings`를 8 KB에서 자를 때 `true`, 그 외의 경우 `false`. 부울로 내보내짐, 문자열이 아님1476* `managed_settings.settings_truncated` (`managed_settings.settings`가 있을 때): Claude Code가 `managed_settings.settings`를 8 KB에서 자를 때 `true`, 그 외의 경우 `false`. 부울로 내보냄, 문자열이 아님
1460 1477
1461<h2 id="interpret-metrics-and-events-data">1478<h2 id="interpret-metrics-and-events-data">
1462 메트릭 및 이벤트 데이터 해석1479 메트릭 및 이벤트 데이터 해석
1470 1487
1471| 메트릭 | 분석 기회 |1488| 메트릭 | 분석 기회 |
1472| - | - |1489| - | - |
1473| `claude_code.token.usage` | `type` (입력/출력), 사용자, 팀, 모델, `skill.name`, `plugin.name` 또는 `agent.name`별로 분류 |1490| `claude_code.token.usage` | 토큰 [`type`](#token-counter), 사용자, 팀, 모델, `skill.name`, `plugin.name` 또는 `agent.name`별로 분류 |
1474| `claude_code.session.count` | 시간 경과에 따른 채택 및 참여 추적 |1491| `claude_code.session.count` | 시간 경과에 따른 채택 및 참여 추적 |
1475| `claude_code.lines_of_code.count` | 코드 추가 및 제거를 추적하여 생산성 측정, 모델별로 분류 |1492| `claude_code.lines_of_code.count` | 코드 추가 및 제거를 추적하여 생산성 측정, 모델별로 분류 |
1476| `claude_code.commit.count` & `claude_code.pull_request.count` | 개발 워크플로우에 미치는 영향 이해 |1493| `claude_code.commit.count` & `claude_code.pull_request.count` | 개발 워크플로우에 미치는 영향 이해 |
1532 1549
1533**성능 모니터링**: API 요청 지속 시간 및 도구 실행 시간을 추적하여 성능 병목 현상을 식별합니다.1550**성능 모니터링**: API 요청 지속 시간 및 도구 실행 시간을 추적하여 성능 병목 현상을 식별합니다.
1534 1551
1552<h3 id="map-input-tokens-to-opentelemetry-genai-semantic-conventions">
1553 입력 토큰을 OpenTelemetry GenAI 시맨틱 규칙에 매핑
1554</h3>
1555
1556Claude Code는 입력 토큰 수를 API 응답의 usage 블록에 표시된 그대로 내보내므로, 이 값에는 [프롬프트 캐시](/docs/ko/prompt-caching)에서 읽거나 캐시에 기록한 토큰이 포함되지 않습니다:
1557
1558* [`claude_code.llm_request`](#span-attributes) 스팬과 [`api_request`](#api-request-event) 이벤트의 `input_tokens`
1559* [`claude_code.token.usage`](#token-counter) 메트릭의 `"input"` 유형
1560
1561Claude Code는 `gen_ai.usage.*` 속성을 설정하지 않습니다. [OpenTelemetry GenAI 시맨틱 규칙](https://github.com/open-telemetry/semantic-conventions-genai)에 따르면 `gen_ai.usage.input_tokens`에는 캐시에서 읽거나 캐시에 기록한 토큰이 포함되어야 합니다. 해당 합계를 계산하려면 다음과 같이 합니다:
1562
1563* 스팬 또는 이벤트에서: `input_tokens`, `cache_read_tokens`, `cache_creation_tokens`를 더합니다
1564* `claude_code.token.usage` 메트릭에서: `"input"`, `"cacheRead"`, `"cacheCreation"` 유형을 더합니다
1565
1566이 규칙은 캐시 읽기와 캐시 쓰기에 대한 별도의 속성도 정의합니다:
1567
1568* `cache_read_tokens`는 `gen_ai.usage.cache_read.input_tokens`에 매핑됩니다
1569* `cache_creation_tokens`는 `gen_ai.usage.cache_write.input_tokens`에 매핑됩니다. 이전 버전의 규칙에서는 캐시 쓰기 속성의 이름이 `gen_ai.usage.cache_creation.input_tokens`이므로, 백엔드에서 요구하는 이름을 사용하세요.
1570
1535<h2 id="audit-security-events">1571<h2 id="audit-security-events">
1536 감사 보안 이벤트1572 감사 보안 이벤트
1537</h2>1573</h2>
1542 속성 작업을 사용자에게 연결1578 속성 작업을 사용자에게 연결
1543</h3>1579</h3>
1544 1580
1545각 이벤트의 [표준 속성](#standard-attributes)에는 인증된 사용자의 ID가 포함됩니다: Claude 계정으로 로그인할 때 `user.email`, `user.account_uuid`, `user.account_id` 및 `organization.id`, [클라우드 세션](/docs/ko/claude-code-on-the-web)에서 세션 자체의 자격 증명이 이들을 전달할 때, 그리고 설치 범위 `user.id` 및 세션별 `session.id`. `user.id`는 설치 범위 식별자이며, [Claude 앱 게이트웨이](/docs/ko/claude-apps-gateway) 세션에서는 게이트웨이 발급 토큰의 IdP 주체입니다.1581각 이벤트의 [표준 속성](#standard-attributes)에는 인증된 사용자의 ID가 포함됩니다: Claude 계정으로 로그인할 때 `user.email`, `user.account_uuid`, `user.account_id` 및 `organization.id`, [클라우드 세션](/docs/ko/claude-code-on-the-web)에서 세션 자체의 자격 증명이 이들을 전달할 때, 그리고 설치 범위 `user.id` 및 세션별 `session.id`. `user.id`는 설치 범위 식별자이며, [Claude 앱 게이트웨이](/docs/ko/claude-apps-gateway)를 통해 `/login`으로 로그인한 세션에서는 게이트웨이 발급 토큰의 IdP 주체입니다.
1546 1582
1547개발자가 시작한 세션에서 MCP 도구 호출, Bash 명령 및 파일 편집은 따라서 해당 개발자에게 귀속됩니다. Claude Code는 별도의 서비스 계정으로 작동하지 않습니다. 각 이벤트에 기록된 ID는 개발자 자신의 Claude 계정이거나 [Claude 앱 게이트웨이](/docs/ko/claude-apps-gateway) 세션의 개발자 IdP 신원입니다. Claude Tag 채널 세션에서 Claude는 조직의 [공유 신원](/docs/ko/cloud-environments#set-the-environment-a-claude-tag-channel-uses) 대신 작동합니다.1583개발자가 시작한 세션에서 MCP 도구 호출, Bash 명령 및 파일 편집은 따라서 해당 개발자에게 귀속됩니다. Claude Code는 별도의 서비스 계정으로 작동하지 않습니다. 각 이벤트에 기록된 ID는 개발자 자신의 Claude 계정이거나 [Claude 앱 게이트웨이](/docs/ko/claude-apps-gateway) 세션의 개발자 IdP 신원입니다. Claude Tag 채널 세션에서 Claude는 조직의 [공유 신원](/docs/ko/cloud-environments#set-the-environment-a-claude-tag-channel-uses) 대신 작동합니다.
1548 1584
1549Claude Code가 직접 API 키로 인증하거나 Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry에 대해 인증할 때 세션에 Claude 계정이 없으며 `user.id` 및 `session.id`만 채워집니다. 이러한 배포에서는 `OTEL_RESOURCE_ATTRIBUTES`를 사용하여 사용자 ID를 직접 첨부하고, [관리 설정](#administrator-configuration) 파일 또는 시작 래퍼를 통해 사용자별로 설정합니다. Claude 앱 게이트웨이 세션은 이 중 어느 것도 필요하지 않습니다: CLI는 [표준 속성](#standard-attributes)에 설명된 대로 IdP 신원을 자동으로 스탬프합니다.1585Claude Code가 직접 API 키로 인증하거나 Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry에 대해 인증할 때 세션에 Claude 계정이 없으며 `user.id` 및 `session.id`만 채워집니다. 이러한 배포에서는 `OTEL_RESOURCE_ATTRIBUTES`를 사용하여 사용자 ID를 직접 첨부하고, [관리 설정](#administrator-configuration) 파일 또는 시작 래퍼를 통해 사용자별로 설정합니다. Claude 앱 게이트웨이 세션은 이 중 어느 것도 필요하지 않습니다: [표준 속성](#standard-attributes)을 참조하여 해당 내보내기가 전달하는 ID를 확인합니다.
1550 1586
1551```bash theme={null}1587```bash theme={null}
1552export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."1588export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."
1672* OpenTelemetry 내보내기는 선택 사항이며 명시적 구성이 필요합니다. Anthropic의 별도 운영 원격 측정 및 이를 비활성화하는 방법에 대해서는 [데이터 사용](/docs/ko/data-usage#telemetry-services)을 참조하세요1708* OpenTelemetry 내보내기는 선택 사항이며 명시적 구성이 필요합니다. Anthropic의 별도 운영 원격 측정 및 이를 비활성화하는 방법에 대해서는 [데이터 사용](/docs/ko/data-usage#telemetry-services)을 참조하세요
1673* 원본 파일 콘텐츠 및 코드 스니펫은 메트릭 또는 이벤트에 포함되지 않습니다. 추적 스팬은 별도의 데이터 경로입니다: 아래의 `OTEL_LOG_TOOL_CONTENT` 항목을 참조하세요1709* 원본 파일 콘텐츠 및 코드 스니펫은 메트릭 또는 이벤트에 포함되지 않습니다. 추적 스팬은 별도의 데이터 경로입니다: 아래의 `OTEL_LOG_TOOL_CONTENT` 항목을 참조하세요
1674* OAuth를 통해 인증된 경우 `user.email`이 원격 측정 속성에 포함되며, 구성한 OTel 엔드포인트로만 전송되고 Anthropic으로는 절대 전송되지 않습니다. 조직에서 이것이 우려 사항인 경우 원격 측정 백엔드와 함께 작업하여 이 필드를 필터링하거나 수정하세요1710* OAuth를 통해 인증된 경우 `user.email`이 원격 측정 속성에 포함되며, 구성한 OTel 엔드포인트로만 전송되고 Anthropic으로는 절대 전송되지 않습니다. 조직에서 이것이 우려 사항인 경우 원격 측정 백엔드와 함께 작업하여 이 필드를 필터링하거나 수정하세요
1675* 사용자 프롬프트 콘텐츠는 기본적으로 수집되지 않습니다. 프롬프트 길이만 기록됩니다. 프롬프트 콘텐츠를 포함하려면 `OTEL_LOG_USER_PROMPTS=1`을 설정하세요. 상세 베타 추적에서 이 변수는 프롬프트 텍스트보다 더 멀리 도달합니다: 또한 `claude_code.llm_request` 스팬의 도구 결과를 전달하는 [`new_context` 스팬 속성](#new-context-gates)을 제어합니다1711* 사용자 프롬프트 콘텐츠는 기본적으로 수집되지 않습니다. 프롬프트 길이만 기록됩니다. 프롬프트 콘텐츠를 포함하려면 `OTEL_LOG_USER_PROMPTS=1`을 설정하세요. 활성화되면:
1676* 어시스턴트 응답 텍스트는 기본적으로 수집되지 않습니다. 응답 길이만 기록됩니다. 응답 텍스트를 포함하려면 `OTEL_LOG_ASSISTANT_RESPONSES=1`을 설정하세요. Claude Code의 모든 OpenTelemetry 데이터와 마찬가지로 응답 텍스트는 구성한 OTel 엔드포인트로만 전송되며 Anthropic으로는 전송되지 않습니다. 이 변수가 설정되지 않으면 `OTEL_LOG_USER_PROMPTS`가 폴백으로 사용되므로 프롬프트 콘텐츠는 원하지만 응답 콘텐츠는 원하지 않는 경우 `OTEL_LOG_ASSISTANT_RESPONSES=0`을 설정하세요1712 * `user_prompt` 이벤트는 `prompt`와 [`prompt_text`](#user-prompt-event)라는 두 속성에 프롬프트 텍스트를 전달합니다. 수집기에서 속성 이름으로 이벤트의 프롬프트 텍스트를 삭제하거나 마스킹하는 경우 규칙에 두 속성을 모두 지정하세요
1677* 도구 입력 인수 및 매개변수는 기본적으로 기록되지 않습니다. 이를 포함하려면 `OTEL_LOG_TOOL_DETAILS=1`을 설정하세요. Claude Desktop의 기본 제공 서버의 경우, Claude Desktop이 소유한 세션에서 `tool_decision` 및 `tool_result`는 인수 콘텐츠가 아닌 호스트 작성 이름인 `mcp_server_name`/`mcp_tool_name` 쌍을 전달하며, 플래그가 꺼져 있어도 그렇습니다. 이 예외는 Claude Code v2.1.214 이상이 필요합니다. 이 데이터는 구성한 OTEL 엔드포인트로만 전송되며 Anthropic으로는 절대 전송되지 않습니다. 인수에는 여전히 민감한 값이 포함될 수 있으므로 필요에 따라 이러한 속성을 필터링하거나 수정하도록 원격 측정 백엔드를 구성하세요. 활성화되면:1713
1714 다음 OpenTelemetry Collector `attributes` 프로세서는 이를 나열하는 파이프라인에서 두 속성을 모두 삭제합니다:
1715
1716 ```yaml theme={null}
1717 processors:
1718 attributes/drop-prompt-text:
1719 actions:
1720 - key: prompt
1721 action: delete
1722 - key: prompt_text
1723 action: delete
1724 ```
1725
1726 * [추적](#traces-beta)이 켜져 있으면 `claude_code.interaction` 스팬은 `user_prompt` 속성에 프롬프트 텍스트를 전달합니다
1727
1728 * 상세 베타 추적에서는 스팬이 각 요청과 함께 전송되는 새 사용자 메시지, 도구 결과, 시스템 리마인더, 시스템 프롬프트 텍스트 및 모델 출력도 전달합니다. [상세 베타 추적의 콘텐츠 속성](#new-context-gates)에 각 속성이 나열되어 있습니다. `claude_code.system_prompt` 이벤트는 전체 시스템 프롬프트를 전달합니다
1729* 어시스턴트 응답 텍스트는 기본적으로 수집되지 않습니다. 응답 길이만 기록됩니다. 응답 텍스트를 포함하려면 `OTEL_LOG_ASSISTANT_RESPONSES=1`을 설정하세요. Claude Code의 모든 OpenTelemetry 데이터와 마찬가지로 응답 텍스트는 구성한 OTel 엔드포인트로만 전송되며 Anthropic으로는 전송되지 않습니다. 이 변수가 설정되지 않으면 `OTEL_LOG_USER_PROMPTS`가 폴백으로 사용되므로 이벤트에서 프롬프트 콘텐츠는 원하지만 응답 콘텐츠는 원하지 않는 경우 `OTEL_LOG_ASSISTANT_RESPONSES=0`을 설정하세요. 상세 베타 추적에서 `claude_code.llm_request` 스팬은 여전히 [`response.model_output`](#new-context-gates)에 모델 출력을 전달하며, 이는 이 변수가 아닌 `OTEL_LOG_USER_PROMPTS`를 따릅니다
1730* 도구 입력 인수 및 매개변수는 기본적으로 기록되지 않습니다. 이를 포함하려면 `OTEL_LOG_TOOL_DETAILS=1`을 설정하세요. Claude Desktop의 기본 제공 서버의 경우, Claude Desktop이 소유한 세션에서 `tool_decision` 및 `tool_result`는 인수 콘텐츠가 아닌 호스트 작성 이름인 `mcp_server_name`/`mcp_tool_name` 쌍을 전달하며, 플래그가 꺼져 있어도 그렇습니다. 이 예외는 Claude Code v2.1.214 이상이 필요합니다. 이 데이터는 구성한 OTEL 엔드포인트로만 전송되며 Anthropic으로는 절대 전송되지 않습니다. 인수에는 여전히 민감한 값이 포함될 수 있으므로 필요에 따라 이러한 속성을 필터링하거나 수정하도록 텔레메트리 백엔드를 구성하세요. 활성화되면:
1678 * `tool_result` 및 `tool_decision` 이벤트는 Bash 명령, MCP 서버 및 도구 이름, 스킬 이름이 포함된 `tool_parameters` 속성을 포함합니다. `full_command`와 같은 필드는 잘리지 않은 상태로 내보내집니다1731 * `tool_result` 및 `tool_decision` 이벤트는 Bash 명령, MCP 서버 및 도구 이름, 스킬 이름이 포함된 `tool_parameters` 속성을 포함합니다. `full_command`와 같은 필드는 잘리지 않은 상태로 내보내집니다
1679 * `tool_result` 이벤트는 추가로 파일 경로, URL, 검색 패턴 및 기타 인수가 포함된 `tool_input` 속성을 포함합니다. 512자를 초과하는 개별 값은 잘리고 전체는 약 4K 문자로 제한됩니다1732 * `tool_result` 이벤트는 추가로 파일 경로, URL, 검색 패턴 및 기타 인수가 포함된 `tool_input` 속성을 포함합니다. 512자를 초과하는 개별 값은 잘리고 전체는 약 4K 문자로 제한됩니다
1680 * `user_prompt` 이벤트는 사용자 정의, 플러그인 및 MCP 명령의 축자 `command_name`을 포함합니다1733 * `user_prompt` 이벤트는 사용자 정의, 플러그인 및 MCP 명령의 축자 `command_name`을 포함합니다
1681 * [비용 및 토큰 카운터](#cost-counter) 및 `api_request`, `api_error`, `api_refusal` 이벤트는 속성 귀속에서 실제 에이전트, 스킬, 플러그인, MCP 서버 및 도구 이름을 전달합니다1734 * [비용 및 토큰 카운터](#cost-counter) 및 `api_request`, `api_error`, `api_refusal` 이벤트는 속성 귀속에서 실제 에이전트, 스킬, 플러그인, MCP 서버 및 도구 이름을 전달합니다
1682 * 추적 스팬은 동일한 `tool_input` 속성 및 `file_path`와 같은 입력 파생 속성을 포함하며, `tool_input`과 동일한 잘림이 적용됩니다1735 * `claude_code.tool` 스팬은 `file_path`와 같은 입력 파생 속성을 전달합니다. 상세 베타 추적에서는 [`tool_input`](#new-context-gates) 속성도 전달합니다
1683* 도구 콘텐츠는 기본적으로 추적 스팬에 기록되지 않습니다. 이를 포함하려면 `OTEL_LOG_TOOL_CONTENT=1`을 설정하세요. 그러면 `claude_code.tool` 스팬은 원본 파일 콘텐츠, Bash 명령 출력, MCP 도구, WebFetch 및 WebSearch가 반환하는 것이 포함된 [`tool.output` 스팬 이벤트](#tool-output-span-event)를 전달하며, 속성당 콘텐츠 제한(기본값 60KB)에서 잘립니다. MCP 도구, WebFetch 및 WebSearch의 결과는 Claude Code v2.1.283 이상이 필요합니다. 도구 콘텐츠는 또한 [`new_context`를 통해 스팬에 도달하며, 그 제어는 스팬마다 다릅니다](#new-context-gates). 필요에 따라 이러한 속성을 필터링하거나 수정하도록 원격 측정 백엔드를 구성하세요1736* 도구 콘텐츠는 기본적으로 추적 스팬에 기록되지 않습니다. 이를 포함하려면 `OTEL_LOG_TOOL_CONTENT=1`을 설정하세요. 그러면 `claude_code.tool` 스팬은 원본 파일 콘텐츠, Bash 명령 출력, MCP 도구, WebFetch 및 WebSearch가 반환하는 것이 포함된 [`tool.output` 스팬 이벤트](#tool-output-span-event)를 전달하며, 속성당 콘텐츠 제한(기본값 60KB)에서 잘립니다. MCP 도구, WebFetch 및 WebSearch의 결과는 Claude Code v2.1.283 이상이 필요합니다. 도구 콘텐츠는 또한 [`new_context`를 통해 스팬에 도달하며, 그 제어는 스팬마다 다릅니다](#new-context-gates). 필요에 따라 이러한 속성을 필터링하거나 수정하도록 원격 측정 백엔드를 구성하세요
1684* 원본 Anthropic Messages API 요청 및 응답 본문은 기본적으로 기록되지 않습니다. 이를 포함하려면 셸, 사용자 설정 또는 관리 설정에서 `OTEL_LOG_RAW_API_BODIES`를 설정하세요. [프로젝트 및 로컬 설정](/docs/ko/settings-reference#variables-claude-code-ignores-in-env)에서는 무시됩니다. 본문에는 전체 대화 기록(시스템 프롬프트, 모든 이전 사용자 및 어시스턴트 턴, 도구 결과)이 포함되므로 이를 활성화하면 다른 `OTEL_LOG_*` 콘텐츠 플래그가 공개할 모든 것에 동의하는 것을 의미합니다. Claude Code는 다른 설정에 관계없이 항상 이러한 본문에서 Claude의 확장 사고 콘텐츠를 수정합니다. 설정한 값은 Claude Code가 본문을 전달하는 방식을 결정합니다:1737* 원본 Anthropic Messages API 요청 및 응답 본문은 기본적으로 기록되지 않습니다. 이를 포함하려면 셸, 사용자 설정 또는 관리 설정에서 `OTEL_LOG_RAW_API_BODIES`를 설정하세요. [프로젝트 및 로컬 설정](/docs/ko/settings-reference#variables-claude-code-ignores-in-env)에서는 무시됩니다. 본문에는 전체 대화 기록(시스템 프롬프트, 모든 이전 사용자 및 어시스턴트 턴, 도구 결과)이 포함되므로 이를 활성화하면 다른 `OTEL_LOG_*` 콘텐츠 플래그가 공개할 모든 것에 동의하는 것을 의미합니다. Claude Code는 다른 설정에 관계없이 항상 이러한 본문에서 Claude의 확장 사고 콘텐츠를 수정합니다. 설정한 값은 Claude Code가 본문을 전달하는 방식을 결정합니다:
1685 * `=1`일 때 Claude Code는 각 API 호출에 대해 `api_request_body` 및 `api_response_body` 로그 이벤트를 내보냅니다. 이벤트의 `body` 속성은 JSON 직렬화된 페이로드를 전달하며, 콘텐츠 제한(기본값 60KB)에서 잘립니다1738 * `=1`일 때 Claude Code는 각 API 호출에 대해 `api_request_body` 및 `api_response_body` 로그 이벤트를 내보냅니다. 이벤트의 `body` 속성은 JSON 직렬화된 페이로드를 전달하며, 콘텐츠 제한(기본값 60KB)에서 잘립니다