Перейти к основному содержанию
Отслеживайте использование Claude Code, затраты и активность инструментов в вашей организации, экспортируя данные телеметрии через OpenTelemetry (OTel). Claude Code экспортирует метрики как данные временных рядов через стандартный протокол метрик, события через протокол логов/событий и опционально распределенные трассировки через OpenTelemetry.
Сведения о Claude API или Managed Agents см. в разделе OpenTelemetry для Claude API.

Быстрый старт

Настройте OpenTelemetry с помощью переменных окружения:
Чтобы проверить настройку, которая экспортирует метрики, проверьте вашу систему на наличие метрики claude_code.session.count, которую Claude Code отправляет при запуске сеанса. Чтобы проверить настройку только логов, отправьте запрос и проверьте событие claude_code.user_prompt. Если ничего не поступает, запустите Claude Code с помощью claude --debug-file <path> и проверьте журнал, который он записывает в этот путь. Claude Code сообщает об ошибках от настроенных вами экспортеров как об ошибках [3P telemetry], где 3P означает third-party. Строки с префиксом [Anthropic telemetry] описывают отдельную операционную телеметрию Anthropic и не указывают на проблему с вашей настройкой. Для полного списка параметров конфигурации см. спецификацию OpenTelemetry.

Конфигурация администратора

Администраторы могут настраивать параметры OpenTelemetry для всех пользователей через файл управляемых параметров. Дополнительную информацию о том, как применяются параметры, см. в разделе приоритет параметров. Пример конфигурации управляемых параметров:
В приложении Claude Desktop сеансы вкладки Code читают эти управляемые параметры из источников, которые достигают каждого вида сеанса Desktop. Форма OpenTelemetry для Cowork в разделе Monitoring в параметрах конфиденциальности и данных консоли администратора применяется только к сеансам Cowork, поэтому ни терминальный CLI, ни вкладка Code не экспортируют на сборщик, который вы там установили. Claude Code игнорирует переменные экспортера OpenTelemetry в файлах .claude/settings.json и .claude/settings.local.json репозитория, поэтому репозиторий не может использовать их для включения телеметрии, выбора места её отправки или захвата содержимого. Установите их в управляемых параметрах или попросите каждого разработчика установить их в своей оболочке или в ~/.claude/settings.json. Репозиторий все ещё может отключить сигнал, установив его селектор экспортера, например OTEL_LOGS_EXPORTER, на none, если только управляемые параметры, файл --settings или окружение, из которого вы запускаете Claude Code, не устанавливают эту переменную. Claude Code не передает переменные окружения OTEL_* подпроцессам, которые он порождает, включая инструмент Bash, hooks, MCP серверы и языковые серверы. Приложение, инструментированное OpenTelemetry, которое вы запускаете через инструмент Bash, не наследует endpoint экспортера Claude Code или заголовки, поэтому установите эти переменные непосредственно в команде, если это приложение должно экспортировать свою собственную телеметрию.

Как управляемые параметры блокируют назначение OTLP

Когда вы устанавливаете переменную OTEL_EXPORTER_OTLP_* в управляемых параметрах, Claude Code удаляет конфликтующие переменные, установленные разработчиком при запуске, и регистрирует предупреждение в журнале отладки. То, что удаляется, зависит от того, какую переменную вы установили:
  • Endpoints: когда вы устанавливаете OTEL_EXPORTER_OTLP_ENDPOINT, Claude Code удаляет каждый endpoint для конкретного сигнала, установленный разработчиком. Разработчики не могут направить один сигнал на другой сборщик, поэтому вам не нужно также устанавливать переменные endpoint для конкретного сигнала в управляемых па��аметрах.
  • Протоколы: когда вы устанавливаете OTEL_EXPORTER_OTLP_PROTOCOL, Claude Code удаляет каждый протокол для конкретного сигнала, установленный разработчиком.
  • Учетные данные: когда вы устанавливаете OTEL_EXPORTER_OTLP_HEADERS, OTEL_EXPORTER_OTLP_CLIENT_KEY или OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE, Claude Code удаляет версии этой переменной для конкретного сигнала, установленные разработчиком, плюс каждую переменную endpoint, установленную разработчиком, общую или для конкретного сигнала, поскольку эти учетные данные в противном случае достигли бы сборщика, который не выбрали управляемые параметры.
  • Селекторы экспортера: OTEL_METRICS_EXPORTER, OTEL_LOGS_EXPORTER и бета-версия OTEL_TRACES_EXPORTER следуют обычному приоритету для каждого ключа. Параметр разработчика все еще может отключить сигнал или переключить его на экспортер консоли, поэтому установите селекторы в управляемых параметрах также, если вам нужно их заблокировать. Во всех источниках администратора, OTEL_LOGS_EXPORTER следует единице телеметрии, в то время как два других селектора объединяются для каждого ключа. Требуется Claude Code v2.1.223 или позже.
  • Бета-версия endpoints трассировки: с активной детальной бета-версией трассировки, Claude Code экспортирует логи и трассировки в BETA_TRACING_ENDPOINT вместо использования экспортеров логов и трассировок. Claude Code поэтому удаляет установленный разработчиком BETA_TRACING_ENDPOINT всякий раз, когда любой из этих управляемых параметров определяет назначение любого из этих сигналов:
    • Общий endpoint или endpoint логов/трассировок или учетные данные
    • otelHeadersHelper
    • Селектор экспортера логов или трассировок, установленный на none, console или пустой, значения, которые держат сигнал вне сборщика
    • CLAUDE_CODE_ENABLE_TELEMETRY отключен
    Endpoint или учетные данные только для метрик его не удаляют. До v2.1.251, установленный разработчиком BETA_TRACING_ENDPOINT перенаправлял логи и трассировки, которые экспортирует детальная бета-версия трассировки, даже когда управляемые параметры закрепили сборщик.
Claude Code не удаляет переменные для конкретного сигнала, которые вы устанавливаете в самих управляемых параметрах, поэтому вы можете направить один сигнал на другой сборщик, установив его переменную там, как это делает пример SIEM. Если вы установите там учетные данные для конкретного сигнала, Claude Code удалит установленный разработчиком endpoint для этого сигнала. Это поведение удаления изменяет то, где доставляется телеметрия, а не то, что собирает Claude Code. До v2.1.217, каждая переменная независимо следовала приоритету параметров для каждого ключа, поэтому endpoint для конкретного сигнала, установленный в параметрах пользователя или оболочке, перенаправлял этот сигнал от управляемого сборщика. Когда приложение для рабочего стола или запускатель самостоятельно размещаемой среды запускает Claude Code и называет endpoint OTLP в среде, которую он предоставляет, Claude Code закрепляет назначение таким же образом: переменные телеметрии запускателя удаляют переменные, установленные разработчиком, точно так же, как это делают управляемые параметры. Claude Code не удаляет переменные, которые сам установил запускатель. Требуется Claude Code v2.1.251 или позже.

Детали конфигурации

Общие переменные конфигурации

Эти переменные настраивают экспортеры, конечные точки и поведение экспорта для всех развертываний. Если вы установите переменную конечной точки или протокола для конкретного сигнала, такую как OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, Claude Code использует её вместо универсальной переменной для этого сигнала. Если вы установите переменную заголовков для конкретного сигнала, такую как OTEL_EXPORTER_OTLP_METRICS_HEADERS, Claude Code объединяет её с универсальной переменной OTEL_EXPORTER_OTLP_HEADERS для этого сигнала. На машинах с управляемыми параметрами см. Как управляемые параметры блокируют назначение OTLP, чтобы узнать, что Claude Code удаляет. Для протоколов http/protobuf и http/json Claude Code отправляет каждый запрос экспорта с заголовком Content-Length.

Аутентификация mTLS

Способ настройки сертификатов клиента для экспортера OTLP зависит от протокола OTLP, используемого для этого сигнала, установленного через OTEL_EXPORTER_OTLP_PROTOCOL или переопределение для конкретного сигнала. Одна и та же конфигурация применяется к метрикам, логам и трассировкам. Для grpc OpenTelemetry SDK читает стандартные переменные OTLP напрямую, поэтому существующие конфигурации, которые устанавливают переменные метрик для конкретного сигнала, продолжают работать. На машинах с управляемыми параметрами Claude Code может удалить установленные разработчиком учётные данные и конечные точки для конкретного сигнала при запуске.

Контроль кардинальности метрик

Следующие переменные окружения контролируют, какие атрибуты включены в метрики для управления кардинальностью: Более низкая кардинальность обычно означает лучшую производительность и более низкие затраты на хранилище, но менее детальные данные для анализа.

Traces (beta)

Распределённая трассировка экспортирует spans, которые связывают каждую пользовательскую подсказку с запросами API и выполнениями инструментов, которые она запускает, поэтому вы можете просмотреть полный запрос как одну трассировку в вашем бэкенде трассировки. Трассировка отключена по умолчанию. Чтобы включить её, установите оба CLAUDE_CODE_ENABLE_TELEMETRY=1 и CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1, затем установите OTEL_TRACES_EXPORTER, чтобы выбрать, куда отправляются spans. Трассировки повторно используют общую конфигурацию OTLP для конечной точки, протокола, заголовков и mTLS. На машинах с управляемыми параметрами Claude Code может удалить установленные разработчиком учётные данные и конечные точки для конкретного сигнала при запуске. Spans скрывают текст пользовательской подсказки, детали входных данных инструмента и содержимое инструмента по умолчанию. Установите OTEL_LOG_USER_PROMPTS=1, OTEL_LOG_TOOL_DETAILS=1 и OTEL_LOG_TOOL_CONTENT=1, чтобы включить их. Когда трассировка активна, подпроцессы Bash и PowerShell автоматически наследуют переменную окружения TRACEPARENT, содержащую контекст трассировки W3C активного span выполнения инструмента. Это позволяет любому подпроцессу, который читает TRACEPARENT, родить свои собственные spans под одной и той же трассировкой, обеспечивая сквозную распределённую трассировку через скрипты и команды, которые запускает Claude. Когда трассировка активна и Claude Code подключен непосредственно к API Anthropic, каждый запрос модели содержит заголовок W3C traceparent, установленный на контекст span claude_code.llm_request, и заголовок traceresponse API записывается как ссылка span. Вместе они соединяют spans Claude Code на стороне клиента с трассировкой на стороне сервера через любой совместимый посредник. Исходящие запросы HTTP MCP переносят traceparent таким же образом. Заголовок не отправляется сторонним поставщикам. По умолчанию заголовок traceparent на запросах модели и HTTP MCP отправляется только когда ANTHROPIC_BASE_URL не установлен или указывает на API Anthropic, так как некоторые прокси отклоняют неизвестные заголовки. Переменная подпроцесса TRACEPARENT контролируется тем же переключателем для согласованности. Если вы запускаете Claude Code через пользовательский прокси ANTHROPIC_BASE_URL и хотите распространять контекст трассировки, установите CLAUDE_CODE_PROPAGATE_TRACEPARENT=1. В Agent SDK и неинтерактивных сеансах, запущенных с -p, Claude Code также читает TRACEPARENT и TRACESTATE из своего собственного окружения при запуске каждого span взаимодействия. Это позволяет процессу встраивания передать свой активный контекст трассировки W3C в подпроцесс, чтобы spans Claude Code появились как дочерние элементы распределённой трассировки вызывающей стороны. Интерактивные сеансы игнорируют входящий TRACEPARENT, чтобы избежать случайного наследования значений окружения из CI или контейнерных сред. Входящий контекст трассировки также применяется к событиям. В сеансах Agent SDK и -p с установленным TRACEPARENT каждая запись логов OTLP события содержит значения trace_id и span_id, которые присоединяют её к трассировке вашего приложения, даже когда экспортер трассировок не настроен, поэтому ваш бэкенд логирования может коррелировать события с остальной частью трассировки. Запись, выданная во время активного взаимодействия, содержит ID span взаимодействия, даже когда Claude Code выдаёт её вне асинхронного контекста span, например в обратном вызове запроса разрешения или для записи, буферизованной при запуске и экспортированной позже. Запись, выданная без активного span взаимодействия, содержит ID входящего TRACEPARENT напрямую.

Иерархия span

Каждая пользовательская подск��зка запускает корневой span claude_code.interaction. Вызовы API, вызовы инструментов и выполнения hooks записываются как его дочерние элементы. Spans инструментов имеют два собственных дочерних span: один для времени, потраченного на ожидание решения разрешения, и один для самого выполнения. Когда инструмент Agent или устаревший инструмент Task порождает подагента, spans API и инструментов подагента вложены под span claude_code.tool родителя.
В сеансах Agent SDK и claude -p сам claude_code.interaction становится дочерним элементом span вызывающей стороны, когда TRACEPARENT установлен в окружении. Когда hook PreToolUse откладывает вызов инструмента, Claude Code сохраняет контекст трассировки хода, который отложил его. Когда вы возобновляете сеанс и инструмент повторно запускается, spans инструмента присоединяются к трассировке этого более раннего хода как дочерние элементы span claude_code.interaction хода.

Атрибуты span

Каждый span содержит стандартные атрибуты плюс атрибут span.type, соответствующий его имени. Таблицы ниже перечисляют дополнительные атрибуты, установленные на каждом span. Spans llm_request, tool.execution и hook устанавливают статус OpenTelemetry ERROR, когда они записывают сбой; другие spans всегда заканчиваются со статусом UNSET. claude_code.interaction claude_code.llm_request Каждая повторная попытка также записывается как событие span gen_ai.request.attempt с атрибутами attempt и client_request_id. claude_code.tool Событие span tool.output на claude_code.tool Если вы установите OTEL_LOG_TOOL_CONTENT=1, вызовы Read и Bash могут записать событие span tool.output на span claude_code.tool. Вызовы Edit и Write записывают его только когда вы также установите OTEL_LOG_TOOL_DETAILS=1. Эта переменная не ограничена этими двумя инструментами, поэтому проверьте её строку в таблице конфигурации для аргументов, которые она добавляет в другом месте. Инструменты MCP, WebFetch и WebSearch также записывают это событие на Claude Code v2.1.283 или позже. Claude Code записывает это событие из успешного возврата вызова инструмента, поэтому вызов, который вызывает ошибку, ничего не записывает, независимо от инструмента. Среди вызовов, которые действительно возвращаются, он не записывает событие tool.output для:
  • Вызова любого инструмента, отличного от Read, Edit, Write, Bash, WebFetch, WebSearch и инструментов MCP
  • Read, который возвращает что-либо, отличное от текста файла, такое как изображение, PDF или повторное чтение файла, содержимое которого не изменилось
  • Вызова Edit или Write, если вы также не установите OTEL_LOG_TOOL_DETAILS=1
  • Вызова WebFetch или WebSearch, который Claude Code перевёл в фоновый режим во время выполнения, чтобы ожидающее сообщение могло дойти до Claude. Результат, поступающий позже, также не записывается. Чтобы узнать, когда Claude Code переводит вызов в фон, см. Когда Claude Code отправляет то, что вы поставили в очередь для терминала и поле priority для сессий Agent SDK
Событие содержит эти атрибуты, каждый усечённый на лимите содержимого (60 КБ по умолчанию). Контролируется называет переменную, которая нужна атрибуту в дополнение к OTEL_LOG_TOOL_CONTENT=1, и для Edit и Write эта переменная контролирует само событие, а не атрибут. Атрибут tool_name родительского span говорит вам, из какого инструмента пришло событие. Атрибут, усечённый на лимите содержимого, сопровождается <attribute>_truncated и <attribute>_original_length. claude_code.tool.blocked_on_user Решение cancelled с source user_abort означает, что сообщение, требующее немедленной доставки, прервало ход, пока запрос разрешения или проверка авторежима ещё ожидали завершения. Например, во время проверки авторежима у пользователя было сообщение в очереди, и он отправил его немедленно. claude_code.tool.execution claude_code.hook Этот span появляется только когда активна детальная бета-трассировка, которая требует ENABLE_BETA_TRACING_DETAILED=1 и BETA_TRACING_ENDPOINT, пару, которая также изменяет, куда идут ваши логи и трассировки. Установите пару в вашей оболочке, пользовательских параметрах или управляемых параметрах; обе переменные игнорируются в параметрах проекта и локальных параметрах. CLAUDE_CODE_ENHANCED_TELEMETRY_BETA один не производит его. В интерактивных сеансах CLI детальная бета-трассировка также требует, чтобы ваша организация была в списке разрешений для функции. Сеансы Agent SDK и неинтерактивные сеансы -p не требуют списка разрешений. Атрибуты с содержимым при детальной бета-трассировке
Дополнительные атрибуты с содержимым, такие как new_context, system_reminders, system_prompt_preview, user_system_prompt, tool_input и response.model_output, выдаются, только когда активна детальная бета-трассировка. Они не являются частью стабильной схемы span.
Эти атрибуты появляются на перечисленных ниже spans, а в столбце Контролируется указана переменная, которая нужна атрибуту в дополнение к детальной бета-трассировке. Значения длиннее лимита содержимого (60 КБ по умолчанию) усекаются. При детальной бета-трассировке с OTEL_LOG_USER_PROMPTS=1 Claude Code также выдаёт событие claude_code.system_prompt, которое содержит полный системный промпт, усечённый на лимите содержимого. Оно поступает, когда сессия впервые отправляет каждый отличающийся системный промпт, и повторно после сжатия контекста.

Динамические заголовки

Для корпоративных сред, требующих динамической аутентификации, вы можете настроить скрипт для динамического создания заголовков. Динамические заголовки применяются только к протоколам http/protobuf и http/json. С протоколом grpc Claude Code использует только переменные статических заголовков, OTEL_EXPORTER_OTLP_HEADERS и его варианты для конкретного сигнала.

Конфигурация параметров

Добавьте в ваш .claude/settings.json, заменив путь на ваш собственный скрипт:
Значение может быть путём к исполняемому файлу, включая путь, содержащий пробелы, или строкой команды оболочки с аргументами. На Windows значение всегда запускается через оболочку, поэтому заключите путь, содержащий пробелы, в кавычки внутри значения JSON.

Требования к скрипту

Скрипт должен выводить действительный JSON с парами ключ-значение строк, представляющими заголовки HTTP:
Если помощник не удаётся или выводит вывод, который не соответствует этим требованиям, экспорты не удаются и ваш бэкенд телеметрии не получает ничего из сеанса, пока помощник снова не заработает. Claude Code сообщает об ошибке в:
  • Уведомление предупреждения в интерактивных сеансах, otelHeadersHelper failed; telemetry is not being exported, показано один раз за сеанс, когда помощник впервые не удаётся
  • Вывод /status
  • Журнал отладки, при запуске с --debug или после запуска /debug в сеансе
  • stderr, в неинтерактивных сеансах, запущенных с -p

Поведение обновления

Скрипт помощника заголовков запускается при запуске и периодически после этого для поддержки обновления токена. По умолчанию скрипт запускается каждые 29 минут. Настройте интервал с переменной окружения CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS.

Поддержка организаций с несколькими командами

Организации с несколькими командами или отделами могут добавлять пользовательские атрибуты для различия между разными группами, используя переменную окружения OTEL_RESOURCE_ATTRIBUTES:
Эти пользовательские атрибуты включены во все метрики и события, позволяя вам:
  • Фильтровать метрики по команде или отделу
  • Отслеживать затраты по центру затрат
  • Создавать панели мониторинга для конкретных команд
  • Настраивать оповещения для конкретных команд
Claude Code присоединяет эти значения как атрибуты на каждой точке данных метрики и записи события, в дополнение к отправке их в блоке ресурсов OTLP. Поскольку большинство бэкендов метрик предоставляют атрибуты точек данных как запрашиваемые метки, вы можете группировать и фильтровать метрики по вашим пользовательским ключам напрямую. За исключением атрибутов репозитория vcs.* repository attributes, пользовательские ключи никогда не переопределяют стандартные атрибуты, такие как user.id или session.id: когда ключ конфликтует, Claude Code сохраняет встроенное значение. Каждый пользовательский ключ становится меткой на каждой серии метрик, поэтому значения высокой кардинальности увеличивают затраты на хранилище в вашем бэкенде метрик. Чтобы отправлять пользовательские атрибуты только в блоке ресурсов и опускать их из меток точек данных, установит�� OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false. См. Контроль кардинальности метрик.
Переменная окружения OTEL_RESOURCE_ATTRIBUTES использует пары ключ=значение, разделённые запятыми, со строгими требованиями к форматированию:
  • Пробелы не допускаются: значения не могут содержать пробелы. Например, user.organizationName=My Company недействительно
  • Формат: должны быть пары ключ=значение, разделённые запятыми: key1=value1,key2=value2
  • Допустимые символы: только символы US-ASCII, исключая управляющие символы, пробелы, двойные кавычки, запятые, точки с запятой и обратные косые черты
  • Специальные символы: символы вне допустимого диапазона должны быть процентно-кодированы
Для значения, которому нужен пробел, используйте подчёркивания или camelCase вместо этого. Следующие примеры устанавливают org.name с каждой формой:
Вы можете процентно-кодировать любой символ, не только исключённые. Этот пример кодирует как пробел, так и апостроф:
Обёртывание значений в кавычки не экранирует пробелы. Например, org.name="My Company" приводит к буквальному значению "My Company" с включёнными кавычками, а не My Company.

Привязка телеметрии к сессиям Desktop SSH

Чтобы видеть, на какой удалённой машине выполнялась сессия Desktop SSH, укажите имя каждой машины в пользовательском атрибуте. Метрики и события не содержат имени машины, на которой выполнялась сессия. На каждой удалённой машине добавьте OTEL_RESOURCE_ATTRIBUTES в блок env, который включает телеметрию, в файле управляемых настроек, который читает сессия. Запишите имя явно в файле каждой машины. Claude Code не раскрывает значение, поэтому host.name=$(hostname) поступает именно в виде этих символов. В следующем примере машине присваивается имя build-7:
Если переменную больше ничто не задаёт, host.name поступает в блоке ресурсов — как в сессиях Desktop SSH, так и в CLI на этой машине. О том, где ещё появляются пользовательские атрибуты, см. Поддержка организаций с несколькими командами. Если имя не поступает, проверьте, нет ли одной из следующих причин:
  • Вы задали её на компьютере, где запущен Desktop: Desktop не передаёт заданное там значение в сессию SSH
  • Вы экспортировали её в /etc/profile или другом файле, который читают только оболочки входа (login shell): имя поступает, когда вы запускаете claude из оболочки входа, но не в сессии Desktop SSH. Desktop запускает Claude Code не через оболочку входа. Вместо этого задайте переменную в env в файле управляемых настроек на удалённой машине.
  • Значение содержит пробел: в этом случае Claude Code не копирует ни один из ключей в события или точки данных и не сообщает об ошибке. Уберите пробел из значения.
  • Переменную уже задаёт что-то другое: в сессии, запускаемой десктопным приложением, переменная, уже заданная в окружении запуска, имеет приоритет над файлами настроек. В логе отладки указывается каждая проигнорированная переменная. Когда стороннее развёртывание Desktop указывает эндпоинт OTLP в предоставляемом им окружении, это окружение содержит собственную OTEL_RESOURCE_ATTRIBUTES Desktop.

Примеры конфигураций

Установите эти переменные окружения перед запуском claude. Каждый сценарий ниже показывает полную конфигурацию, и каждая переменная описана в разделе Общие переменные конфигурации. Чтобы подтвердить, что конфигурация вступила в силу, проверьте ваш бэкенд на наличие метрики claude_code.session.count после запуска сеанса; Быстрый старт охватывает проверку только логов и что проверить, когда ничего не приходит. Для отладки консоли с интервалом экспорта 1 секунда:
Для OTLP через gRPC:
Для Prometheus, скрепленного с http://localhost:9464/metrics:
В самостоятельно размещённой среде сеанс привязывает порт 9464 только при мощности по умолчанию в один. При более высокой мощности бегун повторно выставляет счётчики и датчики сеанса на своей собственной конечной точке /metrics вместо этого. Для отправки метрик нескольким экспортерам:
Для отправки метрик и логов на разные конечные точки или бэкенды:
Для экспорта только метрик, без событий или логов:
Для экспорта только событий и логов, без метрик:

Телеметрия из облачных сеансов и Claude Tag

Облачные сеансы, включая сеансы канала Claude Tag, работают в облачных окружениях вместо устройств ваших пользователей, поэтому управляемый файл параметров или профиль оболочки на этих устройствах не настраивает их телеметрию. Для сеансов в окружениях, размещённых Anthropic, этот раздел охватывает, где устанавливать переменные телеметрии, как сделать ваш сборщик доступным из окружения и как различать облачные сеансы и сеансы Claude Tag в экспортированных данных. Чтобы экспортировать телеметрию из этих сеансов, установите CLAUDE_CODE_ENABLE_TELEMETRY и переменные OTEL_*, используя те же ключи, что и в примере конфигурации администратора, в одном из двух мест:
  • Параметры, управляемые сервером: добавьте их в блок env параметров, управляемых сервером вашей организации. Claude Code получает эти параметры при запуске везде, где применяются параметры, управляемые сервером, что включает машины ваших пользователей и облачные сеансы, кроме сеансов канала Claude Tag. Сеансы Claude Tag не получают ваши параметры, управляемые сервером, поэтому этот способ их не настраивает.
  • Переменные окружения: добавьте их в переменные окружения облачного окружения, чтобы настроить только сеансы, работающие в этом окружении. Это способ, который достигает сеансов Claude Tag.
Любой, кто использует окружение, может читать его переменные, поэтому не помещайте туда учётные данные, например токен сборщика в OTEL_EXPORTER_OTLP_HEADERS. Сетевой секрет в окружении тоже не поможет, потому что собственный экспорт телеметрии Claude Code — это один из запросов, которые никогда не получают секрет. Если ваш сборщик требует учётные данные, вместо этого настройте весь экспорт через настройки, управляемые сервером, потому что когда вы задаёте учётные данные там, Claude Code удаляет переменные эндпоинта, заданные вне управляемых настроек. Помните об этих ограничениях при настройке телеметрии для облачных сеансов:
  • Позвольте сеансам достичь сборщика: Claude Code отправляет экспорт через сеть сеанса, поэтому достигнет ли он хоста в вашем OTEL_EXPORTER_OTLP_ENDPOINT, зависит от уровня сетевого доступа окружения. Если сеансы не могут достичь домена сборщика на выбранном вами уровне, добавьте домен в список разрешений окружения, потому что ни один параметр, управляемый сервером, не добавляет домены в список разрешений сети окружения.
  • Каналы Claude Tag: вносите изменения в список разрешённых доменов и любые переменные окружения в общем окружении, установленном как окружение по умолчанию для вашей организации или закреплённом за каналом.
  • Cowork настраивается отдельно: сеансы Cowork не получают параметры, управляемые сервером, как показывает таблица охвата поверхности, поэтому блок env, управляемый сервером, не настраивает их телеметрию.

Атрибутирование телеметрии облачным сеансам

По умолчанию метрики и события из облачного сеанса содержат стандартные атрибуты, включая session.id, ccr.session.id и organization.id, поэтому вы можете фильтровать по сеансу или организации без дополнительной настройки. Значение ccr.session.id — это CLAUDE_CODE_REMOTE_SESSION_ID сеанса. Чтобы преобразовать его в URL транскрипта сеанса, см. Связать вывод обратно с сеансом. Чтобы различать облачные сессии, группируйте или фильтруйте по ccr.session.id, а не по session.id. Чтобы атрибутировать телеметрию более подробно, используйте эти параметры:
  • Определить сеансы Claude Tag: установите OTEL_METRICS_INCLUDE_ENTRYPOINT=true, как описано в разделе Контроль кардинальности метрик. Метрики затем содержат app.entrypoint, значение которого — claude-in-slack для сеансов Claude Tag.
  • Добавить пользовательские атрибуты: установите OTEL_RESOURCE_ATTRIBUTES в том же месте, где вы устанавливаете другие переменные OTEL_* для этих сеансов. Если вы export его в скрипте настройки окружения вместо этого, значение не достигает Claude Code: скрипт настройки — это отдельный скрипт Bash, который запускается перед запуском Claude Code, и переменные, которые он экспортирует, заканчиваются с ним.
В сеансах канала Claude Tag Claude работает как общая идентичность вашей организации, а не как какой-либо член, поэтому не полагайтесь на атрибуты user.* для определения того, кто отметил Claude.

Доступные метрики и события

Стандартные атрибуты

Все метрики и события содержат следующие стандартные атрибуты: В сессиях, в которых выполнен вход в шлюз приложений Claude через /login, CLI помечает экспортируемые данные аутентифицированной идентичностью: user.id — это субъект IdP, user.email — адрес электронной почты, с которым выполнен вход, а user.groups содержит членство в группах IdP в виде строки с разделителями-запятыми. Каждый экспорт также содержит identity.source: gateway-oidc. Идентичность шлюза применяется последней, поэтому ключи user.* и identity.*, заданные через OTEL_RESOURCE_ATTRIBUTES, в таких сессиях игнорируются.
События, которые Claude Code записывает в лог до входа разработчика, не содержат идентичности шлюза. Когда Claude Code открывает сессию без входа в шлюз, например после того как шлюз завершил вход, события запуска, записанные до входа, содержат анонимный user.id и не содержат identity.source. К ним относятся managed_settings_resolved, plugin_loaded и mcp_server_connection.
Атрибуты идентичности для сессий Claude Desktop и Cowork, подключающихся через шлюз, описаны в справочнике telemetry шлюза. События дополнительно содержат следующие атрибуты. Они никогда не добавляются к метрикам, поскольку привели бы к неограниченной кардинальности:
  • prompt.id: UUID, связывающий промпт пользователя со всеми последующими событиями до следующего промпта. См. Атрибуты корреляции событий.
  • workspace.host_paths: каталоги рабочего пространства хоста, выбранные в настольном приложении, в виде массива строк
  • workflow.run_id: идентификатор запуска с префиксом wf_ в событиях API и инструментов, которые генерируют агенты, относящиеся к запуску инструмента Workflow. Фильтрация событий по одному workflow.run_id позволяет восстановить API-запросы и результаты инструментов этого запуска. Идентификатор охватывает агентов, порождаемых скриптом workflow, и всех агентов, которых порождают уже они, например вызовы скиллов. Он совпадает с идентификатором запуска, сообщаемым в результате инструмента Workflow.
  • workflow.name: имя workflow, meta.name его скрипта, генерируется вместе с workflow.run_id. Имена встроенных workflow отображаются как есть, когда запуск выполняет неизменённый встроенный скрипт. Имена, заданные пользователем, включая отредактированные копии встроенных скриптов, заменяются на custom, если не задано OTEL_LOG_TOOL_DETAILS=1.
  • agent_id: идентификатор субагента, вызвавшего событие, например a3f2c1b4d5e6f7a80. Он присутствует в событиях API и инструментов субагента, в его событиях assistant_response и в subagent_completed для завершённого субагента. Отсутствует в событиях основной сессии и внутрипроцессных участников команды. agent_id спана субагента имеет то же значение или добавляет метку после начальной a, как в acompact-3f2c1b4d5e6f7a80. Требуется Claude Code v2.1.310 или новее
  • parent_agent_id: agent_id агента, который породил или последним возобновил субагента, вызвавшего событие. Отсутствует, если этот агент — основная сессия. Требуется Claude Code v2.1.310 или новее

Атрибуты репозитория

Задайте OTEL_METRICS_INCLUDE_REPOSITORY=true, чтобы помечать метрики и события идентификацией репозитория сессии, — так общий коллектор сможет распределять использование по репозиториям. Требуется Claude Code v2.1.269 или новее. Claude Code выводит эти атрибуты один раз за сессию из удалённого репозитория origin. Когда удалённые адреса HTTPS и SSH репозитория указывают на один и тот же хост и один и тот же путь, как на GitHub, GitLab и Bitbucket Cloud, оба дают одинаковые значения: Значения приводятся к нижнему регистру, а учётные данные, строки запроса и фрагменты из URL удалённого репозитория в них никогда не попадают. Атрибуты не указываются, если у сессии нет удалённого репозитория origin, если удалённый адрес не имеет формы URL или если единственным объемлющим репозиторием является ваш домашний каталог. Чтобы получать эти атрибуты из облачной сессии, задайте переменные телеметрии, включая OTEL_METRICS_INCLUDE_REPOSITORY, в её облачном окружении. Также разрешите домен вашего коллектора в настройках сетевого доступа окружения. Ключ vcs.*, объявленный вами в OTEL_RESOURCE_ATTRIBUTES, заменяет выведенное значение для этого ключа. Если вы объявите vcs.repository.url.full, Claude Code вообще не читает удалённый репозиторий и сообщает только объявленные вами ключи. Если клоны одного репозитория по HTTPS и SSH сообщают разные значения, например в самостоятельно размещённой установке, где URL клонирования по HTTPS содержит префикс пути, отсутствующий в URL SSH, объявите vcs.repository.url.full в OTEL_RESOURCE_ATTRIBUTES вместе со всеми остальными ключами vcs.*, которые хотите сообщать. Тогда каждый клон будет сообщать объявленную вами идентификацию. Атрибуты передаются только в ваши собственные экспортёры; телеметрия Anthropic отбрасывает все ключи vcs.*.

Метрики

Claude Code экспортирует следующие метрики. В столбце «Единица» указана строка единицы измерения OpenTelemetry, прикреплённая к каждой метрике; у метрик-счётчиков её нет. Когда prometheus — единственный экспортёр, указанный в OTEL_METRICS_EXPORTER, Claude Code опускает единицы USD, tokens и s в экспортируемых метриках, чтобы результат сбора оставался корректным текстовым форматом Prometheus. Имена метрик не меняются, а конфигурации, сочетающие экспортёры, например otlp,prometheus, сохраняют единицы.

Подробности метрик

Каждая метрика включает перечисленные выше стандартные атрибуты. Метрики с дополнительными атрибутами, зависящими от контекста, отмечены ниже.

Счётчик сессий

Увеличивается в начале каждой сессии. Атрибуты:
  • Все стандартные атрибуты
  • start_type: Способ запуска сессии. Одно из значений "fresh", "resume", "continue" или "agents_view". Значение "agents_view" обозначает процесс панели claude agents — локальный интерфейс, запускаемый пользователем, а не диалоговую сессию. Фильтруйте по этому значению, чтобы отделять запуски процессов интерфейса от диалоговых сессий на ваших дашбордах.

Счётчик строк кода

Увеличивается при добавлении или удалении кода. Атрибуты:
  • Все стандартные атрибуты
  • type: ("added", "removed")
  • model: Идентификатор модели, внёсшей изменение (например, “claude-sonnet-5”)

Счётчик pull request

Увеличивается, когда Claude Code создаёт pull request или merge request с помощью shell-команды или инструмента MCP. Атрибуты:

Счётчик коммитов

Увеличивается при создании git-коммитов через Claude Code. Атрибуты:

Счётчик стоимости

Увеличивается после каждого API-запроса. Атрибуты agent.name, skill.name, plugin.name, mcp_server.name и mcp_tool.name по умолчанию заменяют некоторые имена заполнителем "custom" или "third-party". Если задать OTEL_LOG_TOOL_DETAILS=1, они содержат настоящие имена. До v2.1.273 счётчики стоимости и токенов, а также события api_request, api_error и api_refusal содержали скрытые значения даже при заданном OTEL_LOG_TOOL_DETAILS=1. Атрибуты:
  • Все стандартные атрибуты
  • model: Идентификатор модели (например, “claude-sonnet-5”)
  • query_source: Категория подсистемы, отправившей запрос. Одно из значений "main", "subagent" или "auxiliary"
  • speed: "fast", если запрос использовал быстрый режим. В остальных случаях отсутствует
  • effort: Уровень effort, применённый к запросу: "low", "medium", "high", "xhigh" или "max". Отсутствует, если Claude Code не отправляет уровень effort, например для модели, которая не поддерживает effort.
  • agent.name: Тип субагента, отправившего запрос. Имена встроенных агентов и агентов из плагинов официального маркетплейса отображаются как есть. Другие имена агентов, определённых пользователем, заменяются на "custom". Отсутствует, если запрос отправлен не именованным типом субагента.
  • skill.name: Скилл, активный для запроса, заданный инструментом Skill или командой / либо унаследованный порождённым субагентом. Имена встроенных, поставляемых в комплекте, определённых пользователем скиллов и скиллов плагинов официального маркетплейса отображаются как есть. Имена скиллов сторонних плагинов заменяются на "third-party". Отсутствует, если активного скилла нет.
  • plugin.name: Плагин-владелец, если активный скилл или субагент предоставлен плагином. Имена плагинов официального маркетплейса отображаются как есть. Имена сторонних плагинов заменяются на "third-party". Отсутствует, если ни у скилла, ни у субагента нет плагина-владельца.
  • marketplace.name: Маркетплейс, из которого установлен плагин-владелец. Генерируется только для плагинов официального маркетплейса, даже при заданном OTEL_LOG_TOOL_DETAILS=1. В остальных случаях отсутствует.
  • mcp_server.name: MCP-сервер, результат инструмента которого использовал этот запрос. Имена встроенных серверов, серверов, проксируемых через claude.ai, и серверов из официального реестра отображаются как есть. Имена серверов, настроенных пользователем, заменяются на "custom". Отсутствует, если запрос не использовал результат инструмента MCP. До v2.1.222 Claude Code устанавливал этот атрибут для каждого запроса после вызова инструмента MCP, а не только для запросов, использовавших результат инструмента, поэтому на дашбордах, агрегирующих его, после обновления будет заметно снижение.
  • mcp_tool.name: Инструмент MCP, результат которого использовал этот запрос; скрытие и поведение в зависимости от версии такие же, как у mcp_server.name. Отсутствует, если запрос не использовал результат инструмента MCP.

Счётчик токенов

Увеличивается после каждого API-запроса. Атрибуты:
  • Все стандартные атрибуты
  • type: ("input", "output", "cacheRead", "cacheCreation"). Тип "input" не включает токены, прочитанные из кэша промптов или записанные в него, — они учитываются в "cacheRead" и "cacheCreation". Тип "cacheCreation" учитывает записи в кэш с пятиминутным и часовым временем жизни кэша вместе.
  • model: Идентификатор модели (например, “claude-sonnet-5”)
  • query_source: Категория подсистемы, отправившей запрос. Одно из значений "main", "subagent" или "auxiliary"
  • speed: "fast", если запрос использовал быстрый режим. В остальных случаях отсутствует
  • effort: Уровень effort, применённый к запросу. Подробнее см. Счётчик стоимости.
  • agent.name, skill.name, plugin.name, marketplace.name, mcp_server.name, mcp_tool.name: Атрибуция запроса к скиллу, плагину, агенту и MCP. Определения и правила скрытия см. в разделе Счётчик стоимости.

Счётчик решений для инструментов редактирования кода

Увеличивается, когда пользователь принимает или отклоняет использование инструментов Edit, Write или NotebookEdit. Атрибуты:
  • Все стандартные атрибуты
  • tool_name: Имя инструмента ("Edit", "Write", "NotebookEdit")
  • decision: Решение пользователя ("accept", "reject")
  • source: Источник решения. Одно из значений "config", "hook", "user_permanent", "user_temporary", "user_abort" или "user_reject". Значение каждого из них описано в разделе Событие решения по инструменту.
  • language: Язык программирования редактируемого файла, например "TypeScript", "Python", "JavaScript" или "Markdown". Для нераспознанных расширений файлов возвращает "unknown".

Счётчик активного времени

Отслеживает фактическое время активного использования Claude Code, исключая время простоя. Эта метрика увеличивается во время взаимодействия с пользователем, например при вводе текста и чтении ответов, а также во время обработки в CLI, например при выполнении инструментов и генерации ответов ИИ. Атрибуты:
  • Все стандартные атрибуты
  • type: "user" для взаимодействий с клавиатурой, "cli" для выполнения инструментов и ответов ИИ

События

Claude Code экспортирует следующие события через логи/события OpenTelemetry (если настроен OTEL_LOGS_EXPORTER):

Атрибуты корреляции событий

Когда пользователь отправляет промпт, Claude Code может выполнить несколько вызовов API и запустить несколько инструментов. Атрибут prompt.id позволяет связать все эти события с единственным промптом, который их вызвал. Чтобы отследить всю активность, вызванную одним промптом, отфильтруйте события по конкретному значению prompt.id. Так вы получите событие user_prompt, все события api_request и все события tool_result, произошедшие при обработке этого промпта. event.sequence начинается с 0 при каждом запуске процесса Claude Code и увеличивается на протяжении жизни этого процесса. Счёт продолжается и после /clear, который назначает новый session.id. Если вы возобновите сессию без ответвления, сессия сохранит свой session.id, но будет получать значения event.sequence от процесса, который её возобновил, поэтому в пределах одной сессии более позднее событие может иметь меньшее значение, чем более раннее, или повторять его. Чтобы упорядочить события сессии, сортируйте по event.timestamp, а event.sequence используйте для упорядочивания событий с одинаковой меткой времени. Для восстановления на уровне сообщений каждый класс событий содержит ключ, совпадающий с полем в транскрипте сессии. Формат записей транскрипта является внутренним для Claude Code и меняется от версии к версии, поэтому конвейер, выполняющий соединение по этим полям, может сломаться в любом релизе; рассматривайте такие соединения как зависящие от версии, а не как стабильный контракт:
  • message.uuid в user_prompt, assistant_response и api_response_body
  • request_id в событиях API, сохраняемый как requestId в записях ассистента в транскрипте
  • tool_use_id в событиях tool_result и tool_decision, а также в событиях safety_event, кроме относящихся к завершению хода

Событие промпта пользователя

Записывается в лог при отправке промпта, включая ходы, которые Claude Code начинает самостоятельно. Имя события: claude_code.user_prompt Атрибуты:
  • Все стандартные атрибуты
  • event.name: "user_prompt"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • prompt_length: Длина промпта
  • prompt: Содержимое промпта. По умолчанию скрыто. Задайте OTEL_LOG_USER_PROMPTS=1, чтобы включить его
  • prompt_text: То же значение, что и prompt, скрываемое по тому же условию. Бэкенд, который хранит имена атрибутов с точками как вложенные объекты, читает prompt.id как id внутри объекта с именем prompt и может потерять строку промпта. В этом случае читайте prompt_text. Требуется Claude Code v2.1.287 или новее
  • message.uuid: UUID итогового сообщения пользователя, совпадающий с сохранённой записью транскрипта. Отсутствует при вызовах команд, которые могут породить ноль или много сообщений.
  • command_name: Имя команды, если промпт вызывает команду. Имена встроенных и поставляемых в комплекте команд, например compact или debug, передаются как есть; псевдонимы, например reset, передаются в том виде, в каком они введены, а не каноническим именем. Имена пользовательских команд, команд плагинов и MCP сводятся к custom или mcp, если не задано OTEL_LOG_TOOL_DETAILS=1
  • command_source: Происхождение команды, если она есть: builtin, custom или mcp. Команды, предоставляемые плагинами, сообщаются как custom

Событие ответа ассистента

Записывается в лог после каждого API-запроса, который возвращает текстовое содержимое от модели. Включаются только текстовые блоки ответа; блоки размышлений и блоки использования инструментов исключаются. Имя события: claude_code.assistant_response Атрибуты:
  • Все стандартные атрибуты
  • event.name: "assistant_response"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • response_length: Длина текста ответа в символах
  • response: Текст ответа, усечённый до лимита содержимого (по умолчанию 60 КБ). По умолчанию заменяется на <REDACTED>. Задайте OTEL_LOG_ASSISTANT_RESPONSES=1, чтобы включить его. Если OTEL_LOG_ASSISTANT_RESPONSES не задана, управление берёт на себя OTEL_LOG_USER_PROMPTS, поэтому задайте OTEL_LOG_ASSISTANT_RESPONSES=0, чтобы ответы оставались скрытыми при включённом логировании промптов
  • model: Идентификатор модели (например, “claude-sonnet-5”)
  • request_id: ID API-запроса, описанный в разделе Атрибуты корреляции событий
  • message.uuid: UUID последней записи ответа в транскрипте. Ответ API сохраняется как одна запись транскрипта на каждый блок содержимого; это последняя из них, от которой выстраивается цепочка parentUuid следующего хода.
  • query_source: Подсистема, отправившая запрос, например "repl_main_thread", "compact" или имя субагента

Событие результата инструмента

Записывается в лог, когда инструмент завершает выполнение. Не генерируется, если вызов инструмента был отклонён; отклонения описаны в разделе Событие решения по инструменту. Имя события: claude_code.tool_result Атрибуты:
  • Все стандартные атрибуты
  • event.name: "tool_result"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • tool_name: Имя инструмента
  • tool_use_id: Уникальный идентификатор этого вызова инструмента. Совпадает с tool_use_id, передаваемым хукам, что позволяет сопоставлять события OTel с данными, собранными хуками.
  • request_id: request_id ответа API, содержавшего этот вызов инструмента, чтобы вы могли связать вызов с событиями API этого ответа. Отсутствует, если у этого ответа не было ID запроса или если ни один ответ API не содержал этот вызов. Требуется Claude Code v2.1.310 или новее
  • success: "true" или "false"
  • duration_ms: Время выполнения в миллисекундах
  • error_type: Строка категории ошибки, если инструмент завершился сбоем, например "Error:ENOENT" или "ShellError"
  • error (при OTEL_LOG_TOOL_DETAILS=1): Полное сообщение об ошибке, если инструмент завершился сбоем
  • decision_type: Всегда "accept", поскольку это событие генерируется только после запуска инструмента. Отклонённые вызовы не дают результата инструмента
  • decision_source: Источник решения о разрешении. Одно из значений "config", "hook", "user_permanent" или "user_temporary". Значение каждого из них описано в разделе Событие решения по инструменту. Источники "user_abort" и "user_reject", используемые только при отклонении, в этом событии никогда не встречаются.
  • tool_input_size_bytes: Размер входных данных инструмента в формате JSON в байтах
  • tool_result_size_bytes: Размер результата инструмента в байтах
  • mcp_server_scope: Идентификатор области действия MCP-сервера (для инструментов MCP)
  • vcs.ref.head.revision, vcs.ref.head.name, vcs.ref.head.type (при OTEL_LOG_TOOL_DETAILS=1): идентификация коммита для успешного git commit, выполненного инструментом Bash или PowerShell. vcs.ref.head.revision — SHA коммита, vcs.ref.head.name — ветка, в которой он сделан, а vcs.ref.head.type — branch. Имя и тип не указываются, если коммит сделан на отсоединённом HEAD. Требуется Claude Code v2.1.269 или новее
  • tool_parameters (при OTEL_LOG_TOOL_DETAILS=1): Строка JSON с параметрами, специфичными для инструмента. Для встроенных серверов Claude Desktop в сессиях, которыми владеет Claude Desktop, пара mcp_server_name/mcp_tool_name включается даже при выключенном флаге — то же исключение для имён, заданных хостом, что и в Событии решения по инструменту. Параметры зависят от инструмента:
    • Для инструмента Bash: включает bash_command, full_command, timeout, description и dangerouslyDisableSandbox, а также git_commit_id и git_branch, когда команда git commit выполнена успешно. git_commit_id — полный SHA коммита, если коммит является HEAD рабочего каталога сессии, и сокращённый SHA git в остальных случаях. git_branch — ветка, в которой сделан коммит; не указывается при отсоединённом HEAD
    • Для инструмента Bash рабочего пространства в настольном приложении, который также сообщает tool_name как Bash: включает только bash_command, full_command и timeout
    • Для инструментов MCP: включает mcp_server_name, mcp_tool_name
    • Для инструмента Skill: включает skill_name
    • Для инструмента Agent или устаревшего инструмента Task: включает subagent_type
  • tool_input (при OTEL_LOG_TOOL_DETAILS=1): Аргументы инструмента в формате JSON. Отдельные значения длиннее 512 символов усекаются, а общий объём данных ограничен ~4 тыс. символов. Применяется ко всем инструментам, включая инструменты MCP.

Событие API-запроса

Записывается в лог для каждого API-запроса к Claude. Имя события: claude_code.api_request Атрибуты:
  • Все стандартные атрибуты
  • event.name: "api_request"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • model: Использованная модель (например, “claude-sonnet-5”)
  • cost_usd: Оценочная стоимость в USD
  • cost_usd_micros: Оценочная стоимость в миллионных долях доллара США, передаётся как целое число
  • duration_ms: Длительность запроса в миллисекундах
  • input_tokens: Количество входных токенов, без учёта токенов, прочитанных из кэша промптов или записанных в него
  • output_tokens: Количество выходных токенов
  • cache_read_tokens: Количество токенов, прочитанных из кэша
  • cache_creation_tokens: Количество токенов, использованных для создания кэша
  • cache_creation_5m_tokens, cache_creation_1h_tokens: количество токенов, которые, согласно ответу API, были записаны в кэш с пятиминутным временем жизни кэша, и количество записанных с часовым временем жизни. Оба равны 0, если ответ API их не сообщает, даже когда cache_creation_tokens больше нуля. Требуется Claude Code v2.1.300 или новее
  • request_id: ID API-запроса, например "req_011...", описанный в разделе Атрибуты корреляции событий.
  • client_request_id: Сгенерированный клиентом UUID, отправляемый в заголовке запроса x-client-request-id; когда он присутствует, см. в таблице атрибутов корреляции событий
  • speed: "fast" или "normal", указывает, был ли активен быстрый режим
  • query_source: Подсистема, отправившая запрос, например "repl_main_thread", "compact" или имя субагента
  • effort: Уровень effort, применённый к запросу: "low", "medium", "high", "xhigh" или "max". Отсутствует, если Claude Code не отправляет уровень effort, например для модели, которая не поддерживает effort.
  • agent.name, skill.name, plugin.name, marketplace.name, mcp_server.name, mcp_tool.name: Атрибуция запроса к скиллу, плагину, агенту и MCP. Определения и правила скрытия см. в разделе Счётчик стоимости.

Событие ошибки API

Записывается в лог, когда API-запрос к Claude завершается сбоем. Имя события: claude_code.api_error Атрибуты:
  • Все стандартные атрибуты
  • event.name: "api_error"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • model: Использованная модель (например, “claude-sonnet-5”)
  • error: Сообщение об ошибке
  • status_code: Код состояния HTTP в виде числа. Отсутствует для ошибок, не связанных с HTTP, например сбоев подключения.
  • duration_ms: Длительность запроса в миллисекундах
  • attempt: Количество выполненных попыток, включая первоначальный запрос. Когда счёт начинается заново, описано в разделе Обнаружение исчерпания повторных попыток
  • request_id: ID API-запроса, например "req_011...", описанный в разделе Атрибуты корреляции событий.
  • client_request_id: Сгенерированный клиентом UUID, отправляемый в заголовке запроса x-client-request-id. Доступен, даже если сбой, например таймаут или ошибка подключения, так и не дал серверный request_id; когда он присутствует, см. в таблице атрибутов корреляции событий.
  • speed: "fast" или "normal", указывает, был ли активен быстрый режим
  • query_source: Подсистема, отправившая запрос, например "repl_main_thread", "compact" или имя субагента
  • effort: Уровень effort, применённый к запросу. Отсутствует, если Claude Code не отправляет уровень effort, например для модели, которая не поддерживает effort.
  • agent.name, skill.name, plugin.name, marketplace.name, mcp_server.name, mcp_tool.name: Атрибуция запроса к скиллу, плагину, агенту и MCP. Определения и правила скрытия см. в разделе Счётчик стоимости.

Событие отказа API

Записывается в лог, когда API-запрос возвращает stop_reason: "refusal". Отказы приходят в успешном потоке ответа, а не в виде ошибки HTTP, поэтому событие api_error для них не срабатывает. Это событие позволяет отслеживать частоту отказов и группировать их по тем же атрибутам, что и api_request и api_error. Имя события: claude_code.api_refusal Атрибуты:
  • Все стандартные атрибуты
  • event.name: "api_refusal"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • model: Идентификатор модели из запроса
  • request_id: ID API-запроса, например "req_011...", описанный в разделе Атрибуты корреляции событий.
  • query_source: Подсистема, отправившая запрос, например "repl_main_thread", "compact" или имя субагента. Определения см. в api_request.
  • speed: Либо "fast", когда активен быстрый режим, либо "normal"
  • attempt: Номер повторной попытки. Первая попытка — 1.
  • effort: Уровень effort, применённый к запросу. Отсутствует, если Claude Code не отправляет уровень effort, например для модели, которая не поддерживает effort.
  • server_fallback_hop: true, когда серверный резервный вариант модели в API уже повторил этот отказ на другой модели, так что пользователь не увидел этот конкретный отказ. false, когда запрос завершился отказом. Один ход может сгенерировать как событие перехода с true, так и последующее итоговое событие с false, если резервная модель тоже отказывает.
  • has_category: true, когда ответ API содержал stop_details.category со значением "cyber", "bio", "frontier_llm" или "reasoning_extraction". false, когда ответ не содержал категории или содержал значение вне этого набора. Отсутствует, когда server_fallback_hop равно true, поскольку блоки перехода не содержат stop_details.
  • has_explanation: true, когда ответ API содержал stop_details.explanation, иначе false. Отсутствует, когда server_fallback_hop равно true.
  • category: Значение stop_details.category из ответа API. Одно из значений "cyber", "bio", "frontier_llm" или "reasoning_extraction". Присутствует, только если задано OTEL_LOG_TOOL_DETAILS=1 и has_category равно true.
  • agent.name, skill.name, plugin.name, marketplace.name, mcp_server.name, mcp_tool.name: Атрибуция запроса к скиллу, плагину, агенту и MCP. Определения и правила скрытия см. в разделе Счётчик стоимости.

Событие тела API-запроса

Записывается в лог для каждой попытки API-запроса, если задана OTEL_LOG_RAW_API_BODIES. На каждую попытку генерируется одно событие, поэтому повторные попытки со скорректированными параметрами порождают собственные события. Имя события: claude_code.api_request_body Атрибуты:
  • Все стандартные атрибуты
  • event.name: "api_request_body"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • body: Параметры запроса Messages API в формате JSON, например системный промпт, сообщения и инструменты, усечённые до лимита содержимого (по умолчанию 60 КБ). Содержимое расширенного мышления в предыдущих ходах ассистента скрывается. Генерируется только во встроенном режиме (OTEL_LOG_RAW_API_BODIES=1).
  • body_ref: Абсолютный путь к файлу <dir>/<uuid>.request.json, содержащему неусечённое тело. Генерируется только в файловом режиме (OTEL_LOG_RAW_API_BODIES=file:<dir>).
  • body_length: Длина неусечённого тела. В байтах UTF-8 при OTEL_LOG_RAW_API_BODIES=file:<dir> или в кодовых единицах UTF-16 при =1
  • body_truncated: "true", если произошло встроенное усечение. Отсутствует в файловом режиме и если усечения не было.
  • model: Идентификатор модели из параметров запроса
  • query_source: Подсистема, отправившая запрос (например, "compact")
  • request_body_id: UUID, идентифицирующий тело запроса этой попытки. Событие api_response_body для успешной попытки содержит то же значение, поэтому вы можете сопоставить ответ с тем самым запросом, который его породил. Требуется Claude Code v2.1.274 или новее

Событие тела ответа API

Записывается в лог для каждого успешного ответа API, если задана OTEL_LOG_RAW_API_BODIES. В файловом режиме (OTEL_LOG_RAW_API_BODIES=file:<dir>) Claude Code также добавляет одну строку JSON в <dir>/index.jsonl для каждого успешного ответа с полями timestamp, session_id, query_source, model, request_id, message_id, message_uuid, request_file и response_file. Читайте его, чтобы найти файлы запроса и ответа, стоящие за конкретным сообщением транскрипта, не обращаясь к бэкенду телеметрии. Файл индекса требует Claude Code v2.1.274 или новее. Имя события: claude_code.api_response_body Атрибуты:
  • Все стандартные атрибуты
  • event.name: "api_response_body"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • body: Ответ Messages API в формате JSON, включая id, блоки содержимого, использование и причину остановки, усечённый до лимита содержимого (по умолчанию 60 КБ). Содержимое расширенного мышления скрывается. Генерируется только во встроенном режиме (OTEL_LOG_RAW_API_BODIES=1).
  • body_ref: Абсолютный путь к файлу <dir>/<request_id>.response.json, содержащему неусечённое тело. Генерируется только в файловом режиме (OTEL_LOG_RAW_API_BODIES=file:<dir>).
  • body_length: Длина неусечённого тела. В байтах UTF-8 при OTEL_LOG_RAW_API_BODIES=file:<dir> или в кодовых единицах UTF-16 при =1
  • body_truncated: "true", если произошло встроенное усечение. Отсутствует в файловом режиме и если усечения не было.
  • model: Идентификатор модели
  • query_source: Подсистема, отправившая запрос
  • request_id: ID API-запроса, например "req_011...", описанный в разделе Атрибуты корреляции событий.
  • request_body_id: request_body_id события api_request_body, на которое отвечает этот ответ. Требуется Claude Code v2.1.274 или новее
  • message.id: ID сообщения, назначенный ответу API, — поле id тела ответа. Требуется Claude Code v2.1.274 или новее
  • message.uuid: UUID последней записи ответа в транскрипте. Вместе с request_body_id связывает сообщение транскрипта с телами запроса и ответа, стоящими за ним. Требуется Claude Code v2.1.274 или новее

Событие решения по инструменту

Записывается в лог, когда принимается решение о разрешении для инструмента (принять/отклонить). Имя события: claude_code.tool_decision Атрибуты:
  • Все стандартные атрибуты
  • event.name: "tool_decision"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • tool_name: Имя инструмента (например, “Read”, “Edit”, “Write”, “NotebookEdit”)
  • tool_use_id: Уникальный идентификатор этого вызова инструмента. Совпадает с tool_use_id, передаваемым хукам, что позволяет сопоставлять события OTel с данными, собранными хуками.
  • request_id: request_id ответа API, содержавшего этот вызов инструмента, чтобы вы могли связать вызов с событиями API этого ответа. Отсутствует, если у этого ответа не было ID запроса или если ни один ответ API не содержал этот вызов. Требуется Claude Code v2.1.310 или новее
  • decision: Либо "accept", либо "reject"
  • tool_source: Присутствует всегда. Происхождение инструмента в виде закрытого набора значений, заданных CLI:
    • "builtin": собственные инструменты CLI
    • "mcp": MCP-серверы в целом
    • "sdk_host_builtin_mcp": внутрипроцессный сервер, встроенный в сам Claude Desktop, в сессии, которой владеет Claude Desktop. Claude Desktop владеет сессией, которую запустил из одной из своих точек входа — claude-desktop, claude-desktop-3p или local-agent, — если эта сессия не является вложенной дочерней; вложенные сессии, включая сессии, которые порождает сам Claude Code, сообщают эти серверы как "mcp"
  • source: Источник решения:
    • "config": Решение принято автоматически без запроса одним из следующих источников:
      • Настройки проекта
      • Правила разрешения или запрета в личных настройках пользователя
      • Управляемая политика предприятия
      • Флаги --allowedTools или --disallowedTools
      • Активный режим разрешений
      • Классификатор авторежима, вердикт которого то же событие записывает в classifier_verdict
      • Разрешение на оставшуюся часть сессии, выданное при более раннем запросе разрешения в той же интерактивной сессии CLI
      • Изначальная безопасность инструмента
      Значение source не указывает, какой из этих источников сработал. Чтобы узнать, какой из них отклонил вызов, найдите событие безопасности с тем же tool_use_id и прочитайте его атрибуты category и rule_source. У некоторых отклонённых вызовов нет события безопасности. Claude Code также указывает "config", когда сам запрос разрешения завершается сбоем. Например, такой запрос завершается сбоем, когда обратный вызов canUseTool в Agent SDK или инструмент --permission-prompt-tool возвращает недопустимый результат либо когда входной поток закрывается, пока запрос ожидает ответа.
    • "hook": Решение вернул хук PreToolUse или PermissionRequest.
    • "user_permanent": Передаётся, когда пользователь выбрал «Yes, and don’t ask again for …» в запросе разрешения, что сохраняет правило разрешения в его личные настройки. В интерактивном CLI передаётся только для самого этого выбора; последующие вызовы, соответствующие сохранённому правилу, передают "config". В сессиях Agent SDK или неинтерактивных сессиях -p "user_permanent" передаётся как для первоначального выбора, так и для последующих совпадений с правилом. Рассматривается как принятие.
    • "user_temporary": Передаётся, когда пользователь выбрал «Yes» в запросе разрешения для однократного подтверждения либо выбрал вариант, предоставляющий доступ на оставшуюся часть сессии, в запросе на редактирование или чтение файла. В интерактивном CLI передаётся только для самого выбора; последующие вызовы, разрешённые этим разрешением в рамках сессии, передают "config". В сессиях Agent SDK или неинтерактивных сессиях -p "user_temporary" передаётся как для выбора, так и для последующих совпадений. Рассматривается как принятие.
    • "user_abort": Передаётся, когда пользователь закрыл запрос разрешения, не ответив. В сессиях Agent SDK и неинтерактивных сессиях -p сюда относится и прерывание хода, пока ожидает ответа запрос разрешения canUseTool или --permission-prompt-tool. Рассматривается как отклонение.
    • "user_reject": Передаётся, когда пользователь выбрал «No» в запросе. В интерактивном CLI передаётся только для самого этого выбора; вызовы, соответствующие правилу запрета в личных настройках пользователя, передают "config". В сессиях Agent SDK или неинтерактивных сессиях -p вызовы, соответствующие правилу запрета в личных настройках, передают "user_reject". Рассматривается как отклонение.
  • classifier_verdict: Вердикт классификатора авторежима для вызова или причина, по которой Claude Code отклонил вызов, если вердикт не был получен. Требуется Claude Code v2.1.301 или новее
    • "allow": классификатор одобрил вызов
    • "block": классификатор заблокировал вызов. Проверка классификатором, завершившаяся сбоем на полпути, тоже может закончиться "block", поэтому частичный сбой классификатора может проявляться как увеличение числа блокировок, а не как "unavailable"
    • "no_verdict": проверка выполнилась, но не дала пригодного вердикта, поэтому Claude Code отклонил вызов. Отклонение не означает, что классификатор счёл вызов небезопасным
    • "unavailable": запрос к классификатору завершился сбоем, например из-за ограничения частоты запросов, таймаута или ошибки подключения, поэтому Claude Code отклонил вызов. При серверной проверке классификатором это значение также помечает вызов, отклонённый потому, что сервер не вернул вердикт безопасности
    Атрибут также появляется в вызовах режима планирования, когда классификатор проверяет команды в режиме планирования. Атрибут отсутствует в следующих случаях:
    • Вызов был решён правилом ра��решений на разрешение или запрет
    • Claude Code одобрил вызов в авторежиме, не обращаясь к классификатору
    • Пользователь ответил на запрос, который Claude Code показал после повторных блокировок
    • В запуске -p без --permission-prompt-tool Claude Code отклонил вызов после повторных блокировок, потому что некому было ответить на запрос. Такое событие сообщает decision как "reject" и source как "config"
  • classifier_category (при OTEL_LOG_TOOL_DETAILS=1): Имя встроенного правила, которое назвал классификатор, заблокировав вызов, в нижнем регистре с подчёркиваниями, например "data_exfiltration" для правила Data Exfiltration. Требуется Claude Code v2.1.301 или новее. Атрибут присутствует, когда выполняются оба условия:
    • classifier_verdict равно "block"
    • Классификатор назвал ровно одно правило, и это правило встроенное, а не написанное вами
    До v2.1.302 атрибут также отсутствовал для любой блокировки, решение о которой приняла серверная проверка классификатором.
  • permission_mode: Режим разрешений, активный в момент начала проверки разрешения для этого вызова: "default", "plan", "acceptEdits", "bypassPermissions", "dontAsk" или "auto". Ручной режим отображается как "default". Вызов субагента сообщает режим разрешений субагента, а не сессии. Требуется Claude Code v2.1.301 или новее
  • tool_parameters (при OTEL_LOG_TOOL_DETAILS=1): Строка JSON с параметрами, специфичными для инструмента. Та же структура, что и в Событии результата инструмента, за исключением полей, появляющихся после выполнения, например git_commit_id. Значения могут отличаться от tool_result для принятого вызова, если решение о разрешении переписывает входные данные инструмента через updatedInput. Используйте этот атрибут, чтобы увидеть, какая команда была отклонена, когда decision равно "reject".
    • Для инструментов "sdk_host_builtin_mcp": mcp_server_name и mcp_tool_name включаются, даже когда OTEL_LOG_TOOL_DETAILS выключена, поскольку эти имена определяет хост-приложение; без них отклонённый вызов одного из этих встроенных серверов было бы невозможно атрибутировать в потоке по умолчанию. Для MCP-серверов, настроенных пользователем, tool_name события всегда равно буквальному "mcp_tool", а имена сервера и инструмента появляются только в tool_parameters при включённом флаге; для содержимого аргументов флаг требуется везде.
    • Для инструмента Bash: включает bash_command, full_command, timeout, description, dangerouslyDisableSandbox. Инструмент bash рабочего пространства в настольном приложении также сообщает tool_name как Bash, но включает только bash_command, full_command и timeout
    • Для инструментов MCP: включает mcp_server_name, mcp_tool_name
    • Для инструмента Skill: включает skill_name
    • Для инструмента Agent или устаревшего инструмента Task: включает subagent_type
Если вы снизите OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT в OpenTelemetry SDK ниже количества атрибутов события tool_decision, SDK отбросит атрибуты, которые Claude Code установил последними. SDK отбрасывает их раньше любых других атрибутов в следующем порядке, пропуская те, которых в событии нет:
  1. parent_agent_id
  2. agent_id
  3. request_id
  4. permission_mode
  5. classifier_category
  6. classifier_verdict
permission_mode, classifier_category и classifier_verdict отбрасываются в этом порядке в Claude Code v2.1.302 или новее. parent_agent_id, agent_id и request_id требуют v2.1.310 или новее.

Событие безопасности

Записывается, когда проверка отклоняет вызов инструмента или требует запроса разрешения, за исключением вызовов без события безопасности. Также записывается, когда сетевой прокси песочницы отклоняет подключение или запрос, и когда хук блокирует результат. Требуется Claude Code v2.1.307 или новее. Событие экспортируется вместе с остальными событиями и не имеет отдельной настройки. Собственные атрибуты события не содержат текста команд, путей к файлам, имён хостов, а также имён MCP-серверов и инструментов. Запись также содержит стандартные атрибуты, имеющиеся у каждого события, которые могут включать workspace.host_paths и атрибуты репозитория. Чтобы увидеть команду или инструмент MCP, стоящие за событием, задайте OTEL_LOG_TOOL_DETAILS=1 и прочитайте tool_parameters в соответствующем событии tool_decision. Имя события: claude_code.safety_event Атрибуты:
  • Все стандартные атрибуты
  • event.name: "safety_event"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • category: Проверка или результат, значение категории
  • decision: "accept", "reject" или "sent_back", если хук заблокировал результат или завершение хода
  • decision_source: Кто или что приняло решение: значение source из tool_decision или "other"
  • reason_code: Причина проверки, например "rule:policySettings", "mode:dontAsk", "hook:PreToolUse", "classifier:auto-mode", "bashMiss:too-complex" или "unknown"
  • reason_type: Тип причины проверки, например "rule", "subcommandResults", "mode", "hook", "classifier" или "asyncAgent"
  • rule_source: Источник настроек для задействованного правила, например "policySettings", "userSettings", "projectSettings", "localSettings", "flagSettings", "cliArg" или "session"
  • grant_scope: "once" или "session" для запроса, одобренного без сохранения правила в файл настроек
  • circuit_breaker: Встроенная проверка безопасности, например "dangerousRemoval", "outsideReadsBlocked" или "claudeSettingsFile"
  • classifier_category: При OTEL_LOG_TOOL_DETAILS=1 — встроенное правило, стоящее за блокировкой в авторежиме, например "data_exfiltration"
  • hook_event: "pre_tool_use" для хука PreToolUse или "post_tool_use", "post_tool_use_failure", "stop" либо "subagent_stop" в событиях "hook_review"
  • tool_class: "bash" для Bash и Monitor, "powershell", "file" для Read, Edit, Write, NotebookEdit, Glob и Grep, "web" для WebFetch и WebSearch, "mcp" или "other"
  • tool_name: Имя инструмента, например "Bash" для встроенного инструмента, либо "mcp_tool", "skill_tool", "dynamic_tool" или "other_tool"
  • tool_source: "builtin", "mcp" или "sdk_host_builtin_mcp", как в tool_decision
  • permission_mode: Режим разрешений вызова на момент проверки: "default", "plan", "acceptEdits", "bypassPermissions", "dontAsk" или "auto"
  • tool_use_id: ID вызова, как в tool_decision и tool_result
  • sandbox_violation_count: Сколько различных подключений или запросов от команды вызова отклонил сетевой прокси песочницы, от "0" до "20" в виде строки. Отказы учитываются для команды в песочнице, завершившейся на переднем плане
  • sandbox_enabled: "true", если изоляция в песочнице включена для сессии, иначе "false"
Вот собственные атрибуты события, когда правило запрета из управляемых настроек отклоняет команду Bash:
Чтобы найти отказы прокси при любой category, фильтруйте по атрибуту sandbox_violation_count, который присутствует и не равен "0". Чтобы найти вызовы, отклонённые потому, что никто не мог ответить на запрос без категории, ищите события tool_decision со значением "reject" и source, равным "config", для которых нет события безопасности с тем же tool_use_id. Такие отказы происходят в запуске -p без --permission-prompt-tool и без --permission-prompts none. Для вызовов, подобных перечисленным ниже, проверяйте событие tool_decision, поскольку у них нет события безопасности, кроме событий "sandbox_network", "sandbox_other" или "hook_review", отправляемых после их выполнения:
  • Вызов, одобренный в ответ на запрос без категории
  • Вызов, который callback canUseTool или инструмент --permission-prompt-tool одобрил в ответ на запрос, требовавшийся только хуку PreToolUse
  • Вызов AskUserQuestion или ExitPlanMode, отклонённый или нет
Запрос не имеет категории, если ни одно значение category не называет его проверку, например запрос режима default на редактирование внутри вашего рабочего каталога.

Событие изменения режима разрешений

Записывается в лог при изменении режима разрешений, например при переключении через Shift+Tab, выходе из режима планирования или проверке шлюза авторежима. Чтобы сгруппировать вызовы инструментов по режиму разрешений, в котором проверялся каждый из них, используйте permission_mode в Событии решения по инструменту. Имя события: claude_code.permission_mode_changed Атрибуты:
  • Все стандартные атрибуты
  • event.name: "permission_mode_changed"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • from_mode: Предыдущий режим разрешений, например "default", "plan", "acceptEdits", "auto" или "bypassPermissions"
  • to_mode: Новый режим разрешений
  • trigger: Причина изменения, например "shift_tab", "exit_plan_mode" или "auto_gate_denied". Отсутствует для некоторых изменений, например когда SDK задаёт режим разрешений через setPermissionMode()

Событие аутентификации

Записывается в лог по завершении /login или /logout. Имя события: claude_code.auth Атрибуты:
  • Все стандартные атрибуты
  • event.name: "auth"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • action: "login" или "logout"
  • success: "true" или "false"
  • auth_method: Метод аутентификации, например "oauth"
  • error_category: Категория ошибки, если действие завершилось сбоем. Исходное сообщение об ошибке никогда не включается
  • status_code: Код состояния HTTP в виде строки, если действие завершилось сбоем с ошибкой HTTP

Событие подключения MCP-сервера

Записывается в лог, когда MCP-сервер подключается, отключается или не может подключиться. Имя события: claude_code.mcp_server_connection Атрибуты:
  • Все стандартные атрибуты
  • event.name: "mcp_server_connection"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • status: "connected", "failed" или "disconnected"
  • transport_type: Транспорт сервера, например "stdio", "sse" или "http"
  • server_scope: Область действия, на уровне которой настроен сервер, например "user", "project" или "local"
  • duration_ms: Длительность попытки подключения в миллисекундах
  • error_code: Код ошибки, если подключение не удалось
  • is_plugin: true, если сервер предоставлен плагином, иначе false
  • plugin_id_hash (когда is_plugin равно true): Стабильный хеш имени плагина и маркетплейса для группировки событий по плагинам без раскрытия имени. Claude Code вычисляет его так, как описано в разделе Событие загрузки плагина
  • plugin.name (когда is_plugin равно true): Имя плагина, предоставляющего сервер. Для сторонних плагинов это буквальная строка "third-party", если не задано OTEL_LOG_TOOL_DETAILS=1; это защищает имена сторонних плагинов от попадания в логи по умолчанию. Плагины из официальных источников Anthropic всегда идентифицируются по имени. Атрибуты plugin_id_hash и plugin.name передаются в ваш собственный бэкенд мониторинга и не отправляются в Anthropic
  • server_name (при OTEL_LOG_TOOL_DETAILS=1): Настроенное имя сервера
  • error (при OTEL_LOG_TOOL_DETAILS=1): Полное сообщение об ошибке, если подключение не удалось

Событие внутренней ошибки

Записывается в лог, когда Claude Code перехватывает непредвиденную внутреннюю ошибку. Записываются только имя класса ошибки и код в стиле errno. Сообщение об ошибке и трассировка стека никогда не включаются. Это событие не генерируется при работе с Amazon Bedrock, Agent Platform от Google Cloud или Microsoft Foundry, а также если задана DISABLE_ERROR_REPORTING. Имя события: claude_code.internal_error Атрибуты:
  • Все стандартные атрибуты
  • event.name: "internal_error"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • error_name: Имя класса ошибки, например "TypeError" или "SyntaxError"
  • error_code: Код errno Node.js, например "ENOENT", если он присутствует в ошибке

Событие установки плагина

Записывается в лог, когда завершается установка плагина, как через команду CLI claude plugin install, так и через интерактивный интерфейс /plugin. Имя события: claude_code.plugin_installed Атрибуты:
  • Все стандартные атрибуты
  • event.name: "plugin_installed"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • marketplace.is_official: "true", если маркетплейс является официальным маркетплейсом Anthropic, иначе "false"
  • install.trigger: "cli" или "ui"
  • plugin.name: Имя установленного плагина. Для сторонних маркетплейсов включается только при OTEL_LOG_TOOL_DETAILS=1
  • plugin.version: Версия плагина, если она объявлена в записи маркетплейса. Для сторонних маркетплейсов включается только при OTEL_LOG_TOOL_DETAILS=1
  • marketplace.name: Маркетплейс, из которого установлен плагин. Для сторонних маркетплейсов включается только при OTEL_LOG_TOOL_DETAILS=1

Событие загрузки плагина

Записывается в лог один раз для каждого включённого плагина при запуске сессии. Используйте это событие для инвентаризации активных плагинов в вашем парке в дополнение к plugin_installed, которое фиксирует само действие установки. Имя события: claude_code.plugin_loaded Атрибуты:
  • Все стандартные атрибуты
  • event.name: "plugin_loaded"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • plugin.name: имя плагина. Для плагинов вне официального маркетплейса и встроенного комплекта значение равно "third-party", если не задано OTEL_LOG_TOOL_DETAILS=1
  • marketplace.name: маркетплейс, из которого установлен плагин, если он известен. Заменяется на "third-party" при том же условии, что и plugin.name
  • plugin.version: версия из манифеста плагина. Включается, только если имя не скрыто и манифест объявляет версию
  • plugin.scope: категория происхождения плагина: "official", "community", "org", "user-local" или "default-bundle"
  • enabled_via: способ включения плагина: "default-enable", "org-policy", "admin-install", "seed-mount" или "user-install". Значение "admin-install" означает, что плагин задан как обязательный или автоматически устанавливаемый для вашей организации в Organization settings > Plugins & skills. До v2.1.246 Claude Code сообщал такие плагины как "user-install" или "seed-mount"
  • plugin_id_hash: детерминированный хеш имени плагина и маркетплейса, отправляемый только в настроенный вами экспортёр. Позволяет подсчитать количество различных сторонних плагинов, загруженных в вашем парке, без записи их имён. Для плагинов, синхронизированных из claude.ai, Claude Code хеширует имя плагина вместе с именем маркетплейса, которое claude.ai сообщает для плагина, или с synced в противном случае. До v2.1.246 Claude Code не использовал в хеше имя маркетплейса, сообщаемое claude.ai
  • has_hooks: предоставляет ли плагин хуки — через конфигурацию хуков или как мод
  • has_mcp: предоставляет ли плагин MCP-серверы
  • host_owned_mcp: true, когда хост SDK управляет подключениями MCP этого плагина и Claude Code пропустил чтение конфигурации MCP-серверов плагина, иначе false
  • skill_path_count: количество каталогов скиллов, объявленных плагином
  • command_path_count: количество каталогов команд, объявленных плагином
  • agent_path_count: количество каталогов агентов, объявленных плагином
  • safe_mode: "true", если сессия запущена с --safe-mode, иначе "false". В безопасном режиме это событие сообщает только настроенную инвентаризацию; команды, скиллы, хуки и MCP-серверы плагина не загружаются. Требуется Claude Code v2.1.169 или новее

Событие активации скилла

Записывается в лог при вызове скилла — независимо от того, вызывает ли его Claude через инструмент Skill или вы запускаете его как команду /. Имя события: claude_code.skill_activated Атрибуты:
  • Все стандартные атрибуты
  • event.name: "skill_activated"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • skill.name: Имя скилла. Для скиллов, определённых пользователем, и скиллов сторонних плагинов значение равно заполнителю "custom_skill", если не задано OTEL_LOG_TOOL_DETAILS=1
  • invocation_trigger: Способ вызова скилла ("user-slash", "claude-proactive" или "nested-skill")
  • skill.source: Откуда загружен скилл (например, "bundled", "userSettings", "projectSettings", "plugin")
  • skill.kind: "workflow", если скилл является скиллом workflow. В остальных случаях отсутствует
  • plugin.name (при OTEL_LOG_TOOL_DETAILS=1 или если плагин из официального маркетплейса): Имя плагина-владельца, если скилл предоставлен плагином
  • marketplace.name (при OTEL_LOG_TOOL_DETAILS=1 или если плагин из официального маркетплейса): Маркетплейс, из которого установлен плагин-владелец, если скилл предоставлен плагином

Событие упоминания через @

Записывается в лог, когда Claude Code разрешает @-упоминание в промпте. Не каждое упоминание генерирует событие: пути раннего выхода, например отказ в разрешении, слишком большие файлы, вложения-ссылки на PDF и сбои получения списка содержимого каталога, завершаются без записи в лог. Каждый раз, когда Claude Code читает промпт, он записывает в лог не более 100 событий с mention_type, равным "agent", и 100 — с "mcp_resource". Упоминания сверх любого из этих лимитов по-прежнему разрешаются, но событие не генерируют. Имя события: claude_code.at_mention Атрибуты:

Событие исчерпания повторных попыток API

Записывается в лог один раз, когда API-запрос завершается сбоем после более чем одной попытки. Генерируется вместе с итоговым событием api_error. Имя события: claude_code.api_retries_exhausted Атрибуты:
  • Все стандартные атрибуты
  • event.name: "api_retries_exhausted"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • model: Использованная модель
  • error: Итоговое сообщение об ошибке
  • status_code: Код состояния HTTP в виде числа. Отсутствует для ошибок, не связанных с HTTP.
  • total_attempts: Общее количество выполненных попыток
  • total_retry_duration_ms: Общее фактическое время по всем попыткам
  • speed: "fast" или "normal"

Событие регистрации хука

Записывается в лог один раз для каждого нас��роенного хука при запуске сессии. Используйте это событие для инвентаризации активных хуков в вашем парке в дополнение к событиям hook_execution_start и hook_execution_complete, генерируемым при каждом выполнении. Имя события: claude_code.hook_registered Атрибуты:
  • Все стандартные атрибуты
  • event.name: "hook_registered"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • hook_event: тип события хука, например "PreToolUse" или "PostToolUse"
  • hook_type: тип реализации хука: "command", "prompt", "mcp_tool", "http" или "agent"
  • hook_source: где определён хук: "userSettings", "projectSettings", "localSettings", "flagSettings", "policySettings" или "pluginHook"
  • safe_mode: "true", если сессия запущена с --safe-mode, иначе "false". Требуется Claude Code v2.1.169 или новее
  • hook_matcher (при OTEL_LOG_TOOL_DETAILS=1): строка matcher из конфигурации хука, если она задана
  • plugin.name (когда hook_source равно "pluginHook"): имя плагина, предоставившего хук. Для плагинов вне официального маркетплейса и встроенного комплекта значение равно "third-party", если не задано OTEL_LOG_TOOL_DETAILS=1
  • plugin_id_hash (когда hook_source равно "pluginHook"): детерминированный хеш имени плагина и маркетплейса, отправляемый только в настроенный вами экспортёр. Позволяет подсчитать количество различных плагинов, предоставивших хуки, без записи их имён. Claude Code вычисляет его так, как описано в разделе Событие загрузки плагина

Событие начала выполнения хуков

Записывается в лог, когда для события хука начинают выполняться один или несколько хуков. Имя события: claude_code.hook_execution_start Атрибуты:
  • Все стандартные атрибуты
  • event.name: "hook_execution_start"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • hook_event: Тип события хука, например "PreToolUse" или "PostToolUse"
  • hook_name: Полное имя хука, включая matcher, например "PreToolUse:Write"
  • num_hooks: Количество подходящих команд хуков
  • managed_only: "true", если разрешены только хуки управляемой политики
  • hook_source: "policySettings" или "merged"
  • safe_mode: "true", если сессия запущена с --safe-mode, иначе "false". Требуется Claude Code v2.1.169 или новее
  • hook_definitions: Конфигурация хука в формате JSON. Включается, только если включены и подробная бета-трассировка, и OTEL_LOG_TOOL_DETAILS=1

Событие завершения выполнения хуков

Записывается в лог, когда все хуки для события хука завершили работу. Имя события: claude_code.hook_execution_complete Атрибуты:
  • Все стандартные атрибуты
  • event.name: "hook_execution_complete"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • hook_event: Тип события хука
  • hook_name: Полное имя хука, включая matcher
  • num_hooks: Количество подходящих команд хуков
  • num_success: Количество успешно завершившихся
  • num_blocking: Количество вернувших блокирующее решение
  • num_non_blocking_error: Количество завершившихся сбоем без блокировки
  • num_cancelled: Количество отменённых до завершения
  • total_duration_ms: Фактическая длительность выполнения всех подходящих хуков
  • stdout_chars: Общее количество символов stdout по всем успешно выполненным подходящим хукам. Требуется Claude Code v2.1.280 или новее
  • additional_context_chars: Общее количество символов additionalContext, возвращённых подходящими хуками. Требуется Claude Code v2.1.280 или новее
  • system_message_chars: Общее количество символов systemMessage, возвращённых подходящими хуками. Требуется Claude Code v2.1.280 или новее
  • initial_user_message_chars: Общее количество символов initialUserMessage, возвращённых подходящими хуками. Требуется Claude Code v2.1.280 или новее
  • num_outputs_persisted: Количество выводов хуков сверх лимита в 10 000 символов, которые Claude Code сохранил в файл. Требуется Claude Code v2.1.280 или новее
  • managed_only: "true", если разрешены только хуки управляемой политики
  • hook_source: "policySettings" или "merged"
  • safe_mode: "true", если сессия запущена с --safe-mode, иначе "false". Требуется Claude Code v2.1.169 или новее
  • hook_definitions: Конфигурация хука в формате JSON. Включается, только если включены и подробная бета-трассировка, и OTEL_LOG_TOOL_DETAILS=1

Событие метрик хуков плагинов

Записывается в лог, когда хук плагина из официального маркетплейса генерирует метрики для отдельного вызова. Генерировать их могут только плагины, установленные из официального маркетплейса Anthropic. Плагины из сторонних маркетплейсов и хуки, настроенные пользователем, в это событие данные не передают. Используйте это событие, чтобы отслеживать поведение плагинов, например частоту находок, затраты и длительность, в собственном стеке наблюдаемости. Имя события: claude_code.hook_plugin_metrics Атрибуты:
  • Все стандартные атрибуты
  • event.name: "hook_plugin_metrics"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • plugin_id: идентификатор плагина в форме <name>@<marketplace>
  • hook_event: тип события хука, сгенерировавшего метрики
  • До 20 ключей метрик, генерируемых плагином. Имена соответствуют ^[a-z][a-z0-9_]{0,39}$. Значения — логические или числовые.

Событие сжатия контекста

Записывается в лог по завершении сжатия контекста диалога. Имя события: claude_code.compaction Атрибуты:
  • Все стандартные атрибуты
  • event.name: "compaction"
  • event.timestamp: Метка времени ISO 8601
  • event.sequence: счётчик процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • trigger: "auto" или "manual"
  • success: "true" или "false"
  • duration_ms: Длительность сжатия контекста
  • pre_tokens: Приблизитель��ое количество токенов до сжатия контекста
  • post_tokens: Приблизительное количество токенов после сжатия контекста
  • error: Сообщение об ошибке, если сжатие контекста завершилось сбоем
  • precompute_reuse: задаётся, только если trigger равно "manual", или если trigger равно "auto" для сжатия при простое в интерактивной сессии терминала. Автосжатие может подготовить сводку в фоновом режиме до заполнения контекстного окна, и этот атрибут фиксирует, была ли при сжатии повторно использована подготовленная сводка. "hit" означает, что она была использована повторно; "miss_custom_instructions", "miss_hook" и "miss_not_ready" указывают причину, по которой вместо этого была вычислена новая сводка

Событие завершения субагента

Записывается, когда субагент завершает работу и возвращает результат в диалог, который его запустил. Используйте его для агрегирования использования инструментов и времени выполнения по типу субагента; для агрегирования токенов или стоимости используйте счётчик токенов и счётчик стоимости с фильтром query_source "subagent", поскольку total_tokens этого события охватывает только последний запрос. Категория "subagent" также учитывает запросы от хуков на основе агентов, которые не генерируют событие субагента. Имя события: claude_code.subagent_completed Атрибуты:
  • Все стандартные атрибуты
  • event.name: "subagent_completed"
  • event.timestamp: временная метка в формате ISO 8601
  • event.sequence: счётчик в пределах процесса для упор��дочивания событий, описанный в разделе Атрибуты корреляции событий
  • agent_type: тип субагента. Имена встроенных агентов и агентов из плагинов официального маркетплейса отображаются как есть; имена других агентов заменяются на "custom", если не задано OTEL_LOG_TOOL_DETAILS=1
  • agent.source: откуда взято определение агента: built-in, plugin или источник настроек, определивший пользовательского агента, например userSettings или projectSettings
  • is_built_in: является ли субагент встроенным типом агента
  • is_async: выполнялся ли субагент в фоновом режиме
  • total_tokens: объём токенов последнего API-запроса субагента: входные токены, токены создания кэша, чтения кэша и выходные токены этого одного запроса, что примерно соответствует размеру контекста субагента на момент завершения. Это не сумма за весь запуск
  • total_tool_uses: количество вызовов инструментов, сделанных субагентом за весь запуск
  • duration_ms: время выполнения в миллисекундах
  • model: модель, на которой было определено выполнять субагента
  • final_model: модель, сформировавшая финальный ответ субагента; отличается от model после смены модели в ходе выполнения, например при переключении на резервный вариант
  • model_swapped: обслуживала ли запросы субагента более чем одна модель
  • plugin_id_hash, plugin.name: присутствуют для агентов, предоставленных плагинами. Имена плагинов официального маркетплейса отображаются как есть; имена других плагинов заменяются на "third-party", если не задано OTEL_LOG_TOOL_DETAILS=1

Событие опроса обратной связи

Записывается, когда опрос о качестве сессии показан или на него дан ответ. Сведения о том, какие данные собирают опросы и как ими управлять, см. в разделе Опросы о качестве сессии. Имя события: claude_code.feedback_survey Атрибуты:
  • Все стандартные атрибуты
  • event.name: "feedback_survey"
  • event.timestamp: временная метка в формате ISO 8601
  • event.sequence: счётчик в пределах процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • event_type: событие жизненного цикла опроса, например "appeared", "responded" или "transcript_prompt_appeared"
  • appearance_id: уникальный идентификатор, связывающий события, сгенерированные для одного экземпляра опроса
  • survey_type: какой опрос сгенерировал событие. "session" — это промпт с оценкой «How is Claude doing?»
  • response: выбор пользователя в событиях responded
  • enabled_via_override: true, когда задана переменная CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL. Передаётся как Boolean, а не как строка. Присутствует в событиях опроса session. Фильтруйте по этому атрибуту, чтобы убедиться, что переопределение применено на всём парке машин

Событие очистки по сроку хранения

Записывается один раз за каждый запуск очистки по сроку хранения, которая удаляет транскрипты сессий и другие данные приложения старше значения настройки cleanupPeriodDays. Claude Code выполняет очистку в фоновом режиме не чаще одного раза за сессию, и запуск, который ничего не удалил, всё равно генерирует событие. Если Claude Code выполнял очистку в любой сессии на той же машине в течение последних 24 часов, он откладывает очистку в этой сессии как минимум на 10 минут, поэтому сессия, завершившаяся раньше, ничего не генерирует. Когда вы запускаете claude -p с --bare, Claude Code не выполняет очистку и ничего не генерирует. Как и любое событие OTel на этой странице, оно отправляется только в настроенный вами бэкенд телеметрии. Требуется Claude Code v2.1.227 или новее. Когда Claude Code не может надёжно определить срок хранения, он приостанавливает очистку и генерирует событие с result, равным "skipped", и атрибутом skip_reason. Когда управляемые настройки задают cleanupPeriodDays, управляемое значение фиксирует срок хранения, и очистка выполняется, даже если файл настроек в области действия с более низким приоритетом повреждён или некорректен. Когда сам managed-settings.json не удаётся прочитать, Claude Code всё равно приостанавливает очистку, если только управляемый уровень не предоставляет cleanupPeriodDays из другого места, например из серверных управляемых настроек или из дополнительного файла managed-settings.d/ рядом с повреждённым файлом. Атрибуты-счётчики удалений присутствуют, только когда result равен "complete". Имя события: claude_code.retention_sweep Атрибуты:
  • Все стандартные атрибуты
  • event.name: "retention_sweep"
  • event.timestamp: временная метка в формате ISO 8601
  • event.sequence: счётчик в пределах процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • result: "complete", если очистка выполнена, "skipped", если Claude Code её приостановил
  • period_days: значение cleanupPeriodDays из объединённых настроек в днях или 30, если ни один источник его не задаёт. В пропущенных событиях — значение, которое использовала бы очистка, вычисленное из источников настроек, которые Claude Code смог прочитать
  • used_default: "true", если ни один доступный для чтения источник настроек не задаёт cleanupPeriodDays, иначе "false". В завершённых событиях "true" означает, что применено значение по умолчанию в 30 дней
  • skip_reason: почему Claude Code приостановил очистку. Присутствует, только когда result равно "skipped":
    • "user_source_disabled": пользовательские настройки исключены, например флагом --setting-sources или параметром SDK settingSources, и ни один включённый источник не предоставляет cleanupPeriodDays
    • "settings_unknowable": файл настроек не удалось прочитать или разобрать, поэтому cleanupPeriodDays или desktopSessionCleanupPeriodDays могут иметь значение, которое Claude Code не видит
    • "settings_invalid_key_set": в настройках есть ошибки валидации, и cleanupPeriodDays или desktopSessionCleanupPeriodDays задан явно, поэтому использование значения по умолчанию могло бы удалить или сохранить файлы вопреки этой настройке
    • "remote_settings_unknowable": сессия на вкладке Code в Claude Desktop в стороннем развёртывании запросила серверные управляемые настройки. Она не получила пригодного ответа, поэтому cleanupPeriodDays может иметь значение, которое Claude Code не видит
  • transcripts_deleted: количество транскриптов сессий — файлов верхнего уровня ~/.claude/projects/*/*.jsonl, — удалённых очисткой
  • transcripts_exempted_desktop: количество транскриптов с истёкшим сроком хранения, которые очистка сохранила согласно правилу Claude Desktop и Cowork. Они не учитываются в files_past_cutoff. Требуется Claude Code v2.1.248 или новее
  • session_files_deleted: количество артефактов, удалённых очисткой файлов сессий: транскрипты плюс сопутствующие файлы каждой сессии, такие как sidecar-файлы, записи и результаты инструментов
  • artifacts_deleted: общее количество элементов, удалённых очисткой во всех охватываемых ею каталогах данных, включая файлы сессий. Некоторые очистки считают целое удалённое дерево каталогов одним элементом, а несколько проходов очистки не учитываются в счётчике, поэтому рассматривайте значение как нижнюю границу, а не как точное количество файлов
  • files_retained_fresh: файлы, проверенные и оставленные на месте, поскольку срок их хранения ещё не истёк. Их учитывают только пофайловые очистки, поэтому значение является нижней границей; ненулевое значение — нормальное устойчивое состояние
  • files_past_cutoff: файлы старше срока хранения, которые очистке не удалось удалить, например из-за ошибки прав доступа или из-за того, что файл открыт. Счётчик также включает каждую устаревшую папку, найденную очисткой в skills/synced/ или plugins/synced/, независимо от того, переместила ли она папку в корзину. Не считая этих папок, значение больше нуля означает, что файлы пережили настроенный срок хранения; ноль не доказывает обратного, поскольку неудачное удаление целого каталога учитывается в error_count
  • error_count: количество ошибок, возникших у очистки при получении списка или удалении файлов

Событие определения управляемых настроек

Записывается с управляемыми настройками, определёнными для сессии: один раз при запуске сессии, повторно, когда в ходе сессии меняются управляемые настройки или состояние вспомогательной программы политики, а также когда Claude Code отказывается запускаться или завершает сессию по одной из причин, перечисленных в атрибуте error.type. Используйте это событие, чтобы найти машины, работающие с неожиданным управляемым источником, машины, на которых вспомогательная программа политики завершается ошибкой, и причину, по которой машина отказалась запускаться. Требуется Claude Code v2.1.274 или новее. По умолчанию событие содержит управляемые источники и состояние вспомогательной программы политики, но не сами настройки. Чтобы добавить отредактированный атрибут managed_settings.settings и дайджест managed_settings.resolved_sha256, задайте OTEL_LOG_MANAGED_SETTINGS=1:
  • Задайте её в блоке env управляемых настроек, пользовательских настроек или --settings, либо в окружении, в котором вы запускаете Claude Code. Значение в настройках проекта или локальных настройках её не включает, поскольку клонированный репозиторий может их записывать.
  • Серверные управляемые настройки могут задать её без показа диалогового окна подтверждения безопасности, поскольку переменная лишь добавляет собственную отредактированную политику вашей организации в событие, которое ваша организация уже получает.
В интерактивной сессии в папке, которой вы не доверяете, Claude Code не экспортирует событие отказа. Имя события: claude_code.managed_settings_resolved Атрибуты:
  • Все стандартные атрибуты
  • event.name: "managed_settings_resolved"
  • event.timestamp: временная метка в формате ISO 8601
  • event.sequence: счётчик в пределах процесса для упорядочивания событий, описанный в разделе Атрибуты корреляции событий
  • managed_settings.trigger: "startup" для события запуска сессии, "change", когда управляемые настройки или состояние вспомогательной программы политики изменились позже в ходе сессии, или "refused", когда политика управляемых настроек остановила сессию. Claude Code отправляет событие change, только когда какой-либо атрибут отличается от последнего отправленного события, и изменённое значение настройки учитывается, даже когда OTEL_LOG_MANAGED_SETTINGS отключена
  • error.type: почему Claude Code остановил сессию. Присутствует только в событиях refused:
    • "helper_failed": запуск вспомогательной программы политики завершился ошибкой
    • "policy_invalid": управляемые настройки содержат ошибку, из-за которой Claude Code не может запуститься, или административный источник не удалось загрузить по причине, отличной от отказа в чтении, поэтому Claude Code не может проверить вход в организацию или принудительное применен��е провайдера
    • "provider_not_allowed": сессия использовала бы API-провайдера или отправляла бы трафик провайдера на хост, которые не разрешены управляемым списком allowedProviders. Требуется Claude Code v2.1.285 или новее
    • "consent_rejected": пользователь отклонил диалоговое окно подтверждения безопасности для серверных управляемых настроек
    • "force_refresh_failed": не удалось получить настройки, которые требует forceRemoteSettingsRefresh
    • "gateway_rejected": шлюз Claude apps ответил на загрузку управляемых настроек кодом HTTP 403
    • "version_below_minimum": эта версия Claude Code ниже requiredMinimumVersion или выше requiredMaximumVersion
    • "_OTHER": загрузка управляемых настроек шлюза Claude apps завершилась ошибкой по другой причине
  • managed_settings.sources: каждый управляемый источник, который предоставляет хотя бы один ключ политики, в порядке убывания приоритета, включая источники, ключи которых не вступают в силу при first-wins. Возможные значения: "remote", "plist" или "hklm" для политики MDM или уровня ОС, "file" для файлов управляемых настроек и дополнительных файлов, "parent", когда настройки предоставляет встраивающий хост, и "hkcu" для значения реестра Windows HKCU, когда Claude Code его читает. Источник, который содержит только управляющие ключи или который Claude Code не смог прочитать, не указывается. Передаётся как массив строк; пуст, если ни один управляемый источник не предоставляет ключ политики
  • managed_settings.source_behavior: значение managedSourcesBehavior, прочитанное Claude Code: "first-wins" или "merge". "first-wins", если ни один источник не задаёт этот ключ
  • managed_settings.helper.state: состояние вспомогательной программы политики, настроенной выбранным источником MDM или файловым источником:
    • "ok": вывод вспомогательной программы используется в качестве управляемых настроек
    • "bad_path", "not_a_file", "exit_nonzero", "timed_out", "oversize", "parse_failed", "envelope_invalid" или "schema_rejected": последний запуск вспомогательной программы завершился ошибкой. Эти случаи описаны в разделе Ошибки вспомогательной программы
    • "none": вспомогательная программа не настроена, или источник, который её настраивает, не является политикой MDM или файлом управляемых настроек
  • managed_settings.helper.applied: "output", пока собственный вывод вспомогательной программы используется в качестве управляемых настроек, "none", когда это не так
  • managed_settings.helper.entry: "policyHelper", когда Claude Code выбрал policyHelper. Отсутствует, если вспомогательная программа не выбрана
  • managed_settings.helper.path: настроенный path вспомогательной программы. Присутствует всякий раз, когда Claude Code выбрал вспомогательную программу, независимо от того, задана ли OTEL_LOG_MANAGED_SETTINGS
  • managed_settings.resolved_sha256 (при OTEL_LOG_MANAGED_SETTINGS=1): SHA-256 определённых управляемых настроек до редактирования, сериализованных как JSON с рекурсивно отсортированными ключами и без пробелов. Машины с одинаковым дайджестом работают с одной и той же политикой. Claude Code отправляет дайджест только при явном включении, поскольку короткую политику можно восстановить, хешируя предполагаемые варианты. Отсутствует, если управляемые настройки не определены, а также в событиях refused
  • managed_settings.settings (при OTEL_LOG_MANAGED_SETTINGS=1): имена и структура определённых управляемых настроек в виде строки JSON с отредактированными значениями. Отсутствует в событиях refused. Claude Code формирует его на основе своей схемы настроек:
    • Имя настройки, объявленное в схеме, экспортируется, а ключ, не объявленный в ней, опускается
    • Логические значения, числа и строковые значения, которые схема ограничивает фиксированным набором вариантов, например permissions.defaultMode, экспортируются как есть. sandbox.network.httpProxyPort и sandbox.network.socksProxyPort экспортируются как "[REDACTED]"
    • Все остальные строки, например model, apiKeyHelper, каждое значение env, каждый URL и каждая команда, экспортируются как "[REDACTED]"
    • Имена записей в словарях, например имена переменных env и идентификаторы плагинов, экспортируются как есть. Настройка, записи которой схема не типизирует, например vimInsertModeRemaps, экспортируется как единое "[REDACTED]", а sandbox.ignoreViolations экспортируется как список его списков путей без шаблонов команд
    • Список сохраняет свою длину, а каждая запись редактируется по тем же правилам
    • Правило permissions.allow, permissions.deny или permissions.ask экспортируется как имя инструмента с отредактированным содержимым, например Read([REDACTED]), если инструмент встроен в эту версию Claude Code или является ссылкой mcp__, например mcp__jira__create_issue. Любое другое правило экспортируется как "[REDACTED]"
    • Хуки подчиняются тем же правилам, поэтому поля с фиксированными вариантами и числовые поля, такие как type и timeout, отображаются, а каждая команда, URL, matcher и условие if экспортируются как "[REDACTED]"
    Например, управляемые настройки с apiKeyHelper, двумя переменными env и правилом запрета экспортируются как {"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}. Claude Code обрезает значение до 8 КБ в UTF-8, и обрезанное значение не является корректным JSON
  • managed_settings.settings_truncated (когда присутствует managed_settings.settings): true, если Claude Code обрезал managed_settings.settings до 8 КБ, иначе false. Передаётся как Boolean, а не как строка

Интерпретация данных метрик и событий

Экспортируемые метрики и события поддерживают ряд анализов:

Мониторинг использования

Мониторинг затрат

Метрика claude_code.cost.usage помогает с:
  • Отслеживанием тенденций использования по командам или отдельным лицам
  • Выявлением сеансов с высоким использованием для оптимизации
  • Атрибуцией расходов конкретным навыкам, плагинам или типам подагентов через атрибуты skill.name, plugin.name и agent.name
Метрики затрат являются приблизительными. Для официальных данных о выставлении счетов обратитесь к вашему поставщику API (Claude Console, Amazon Bedrock или Google Cloud’s Agent Platform).
Claude Code учитывает каждый потоковый ответ в метриках затрат и токенов ровно один раз, включая случаи, когда шлюз или прокси-сервер за ANTHROPIC_BASE_URL потоком передает использование прогрессивно через несколько кадров.

Оповещения и сегментация

Распространенные оповещения, которые следует рассмотреть:
  • Скачки затрат
  • Необычное потребление токенов
  • Высокий объем сеансов от конкретных пользователей
Все метрики можно сегментировать по стандартным атрибутам. Атрибут model доступен на claude_code.token.usage, claude_code.cost.usage и claude_code.lines_of_code.count. Разбивки по моделям для коммитов можно только приблизительно оценить, объединив данные с метриками токенов или затрат по session.id, поскольку один сеанс может охватывать несколько моделей. Отфильтруйте сторону токенов или затрат до строк, где query_source равен "main", чтобы вспомогательные запросы и запросы подагентов не приписывали коммиты сеанса модели, которая их не создавала.

Обнаружение исчерпания повторных попыток

Claude Code повторяет неудачные запросы API внутри и выдает одно событие claude_code.api_error только после того, как сдается, поэтому само событие является терминальным сигналом для этого запроса. Промежуточные повторные попытки не логируются как отдельные события. Атрибут attempt на событии записывает количество попыток. CLAUDE_CODE_MAX_RETRIES по умолчанию равен 10 и ограничен 15; если установлена CLAUDE_CODE_RETRY_WATCHDOG, значение по умолчанию выше, а ограничение отсутствует. Когда запрос исчерпывает все повторные попытки при переходной ошибке, attempt не более чем на один больше этого эффективного ограничения: 11 по умолчанию. Более низкое значение тоже может означать, что повторные попытки исчерпаны: attempt снова начинается с 1 каждый раз, когда Claude Code повторно отправляет запрос после сбоя потоковой передачи. Чтобы различить сеанс, который восстановился, от того, который застопорился, сгруппируйте события по session.id и проверьте, существует ли более позднее событие api_request после ошибки.

Анализ событий

Данные событий предоставляют подробные сведения о каждом взаимодействии Claude Code: Паттерны использования инструментов: анализируйте события результатов инструментов для выявления:
  • Наиболее часто используемых инструментов
  • Показателей успеха инструментов
  • Среднего времени выполнения инструментов
  • Паттернов ошибок по типам инструментов
Мониторинг производительности: отслеживайте длительность запросов API и время выполнения инструментов для выявления узких мест производительности.

Сопоставление входных токенов с семантическими соглашениями OpenTelemetry GenAI

Claude Code экспортирует количество входных токенов в том виде, в каком оно указано в блоке usage ответа API, поэтому эти значения не включают токены, прочитанные из кэша промптов или записанные в него: Claude Code не устанавливает атрибуты gen_ai.usage.*. Согласно семантическим соглашениям OpenTelemetry GenAI, gen_ai.usage.input_tokens должен включать токены, прочитанные из кэша и записанные в него. Чтобы вычислить эту сумму:
  • Из спана или события: сложите input_tokens, cache_read_tokens и cache_creation_tokens
  • Из метрики claude_code.token.usage: сложите её типы "input", "cacheRead" и "cacheCreation"
Соглашения также определяют отдельные атрибуты для чтения из кэша и записи в кэш:
  • cache_read_tokens соответствует gen_ai.usage.cache_read.input_tokens
  • cache_creation_tokens соответствует gen_ai.usage.cache_write.input_tokens. В более старых версиях соглашений атрибут записи в кэш называется gen_ai.usage.cache_creation.input_tokens, поэтому используйте имя, которое ожидает ваш бэкенд.

Аудит событий безопасности

События OpenTelemetry являются источником данных аудита для активности Claude Code. Каждое событие содержит атрибуты идентификации, которые связывают вызовы инструментов, активность MCP и решения о разрешениях с пользователем, который их инициировал. Экспортер логов OTLP может доставлять эти события на любую платформу Security Information and Event Management (SIEM) с приемником OTLP или на OpenTelemetry Collector, который перенаправляет на ваш SIEM.

Атрибуция действий пользователям

Стандартные атрибуты на каждом событии включают идентификацию аутентифицированного пользователя: user.email, user.account_uuid, user.account_id и organization.id при входе с учетной записью Claude или, в облачном сеансе, когда учетные данные самого сеанса их содержат, плюс user.id и область сеанса session.id. user.id является идентификатором, ограниченным установкой, за исключением сеансов, подписанных на Claude apps gateway через /login, где это субъект IdP из выданного шлюзом токена. В сеансе, который запускает разработчик, вызовы инструментов MCP, команды Bash и редактирование файлов поэтому приписываются этому разработчику. Claude Code не действует под отдельной учетной записью сервиса; идентификация, записанная на каждом событии, это собственная учетная запись Claude разработчика или идентификация IdP разработчика в сеансе Claude apps gateway. В сеансах канала Claude Tag, Claude работает как общая идентификация вашей организации. Когда Claude Code аутентифицируется с прямым ключом API или против Amazon Bedrock, Google Cloud’s Agent Platform или Microsoft Foundry, в сеансе нет учетной записи Claude и только user.id и session.id заполняются. В этих развертываниях прикрепите идентификацию пользователя самостоятельно с помощью OTEL_RESOURCE_ATTRIBUTES, установленного для каждого пользователя через файл управляемых параметров или оболочку запуска. Сеансы Claude apps gateway не требуют ничего из этого: см. Стандартные атрибуты для идентификации, которую несут их экспорты.

Аудит активности MCP

Чтобы захватить активность MCP сервера с полной деталью вызова, включите экспортер логов и установите OTEL_LOG_TOOL_DETAILS=1. Каждая операция MCP затем производит структурированные события, которые несут имя сервера, имя инструмента и аргументы вызова вместе со стандартными атрибутами идентификации: Без OTEL_LOG_TOOL_DETAILS эти события опускают идентифицирующую деталь:
  • tool_result: сохраняет mcp_server_scope и tool_name, заменённый на буквальное значение "mcp_tool" для пользовательских серверов, опускает содержимое аргументов. Для встроенных серверов Claude Desktop в сессиях, которыми владеет Claude Desktop, он также сохраняет пару mcp_server_name/mcp_tool_name внутри tool_parameters — то же исключение для данных, заданных хостом, что и у tool_decision
  • tool_decision: сохраняет tool_source и tool_name, заменённый на буквальное значение "mcp_tool" для пользовательских серверов, опускает содержимое аргументов. Для встроенных серверов Claude Desktop в сессиях, которыми владеет Claude Desktop, он также сохраняет пару mcp_server_name/mcp_tool_name внутри tool_parameters
  • mcp_server_connection: опускает server_name и сообщение об ошибке, но сохраняет is_plugin, plugin_id_hash и plugin.name, с именами плагинов, не относящихся к Anthropic, заменёнными на буквальное значение "third-party", поэтому серверы, предоставляемые плагинами, остаются различимыми без подробного логирования

Сопоставление вопросов безопасности с событиями

При построении правил обнаружения найдите сигнал, который вы хотите отслеживать, и запросите ваш бэкенд для соответствующего события и атрибутов: Claude Code выдает только поток исходных событий. Обнаружение аномалий, базирование, корреляция между сеансами и оповещение являются ответственностью вашего SIEM или бэкенда наблюдаемости.

Сопоставление путей утечки данных с управляемыми настройками и событиями

В таблице пути, по которым содержимое сессии может покинуть машину, а также локальное хранение сопоставлены с ключами управляемых настроек, которые их ограничивают, и событиями, которые их записывают. О том, что сам Claude Code отправляет в Anthropic, например об отчётах /feedback, см. Использование данных. Названия ведут на соответствующие записи справочника, где указаны значения и значения по умолчанию. Для записей allowedHttpHookUrls, managed-mcp.json и событий хуков нужно больше, чем показывает таблица:
  • allowedHttpHookUrls: записи объединяются между файлами настроек, поэтому разработчик может дополнить пустой управляемый список. Какие хуки выполняются, определяет allowManagedHooksOnly
  • managed-mcp.json: чтобы отключить MCP, см. Полное отключение MCP. Чтобы убедиться, что Claude Code читает файл, см. Проверка конфигурации
  • События хуков: Claude Code записывает в лог hook_execution_start и hook_execution_complete один раз на событие хука, охватывая все подходящие хуки. Сам по себе OTEL_LOG_TOOL_DETAILS=1 не записывает URL HTTP-хука. Конфигурация хука появляется только в hook_definitions, для чего также нужна подробная бета-трассировка
OTEL_LOG_TOOL_DETAILS=1 добавляет в эти события строки команд, имена серверов и инструментов, а также входные данные инструментов. Эти сведения могут содержать такое же конфиденциальное содержимое, как и сама сессия, поэтому включайте этот параметр, только если вашему коллектору разрешено хранить такое содержимое.

Проверка очистки по сроку хранения

Чтобы задать всем машинам одинаковый срок хранения, установите cleanupPeriodDays в управляемых настройках. Чтобы проверить, что машины выполняют очистку с этим значением, собирайте событие retention_sweep. period_days и счётчики являются строками, поэтому приводите их к числам перед сравнением. Машина, работающая как задумано, может не отправлять событие, например, по следующим причинам:
  • Никто не запускает Claude Code: очистка не выполняется, и машина хранит свои данные до следующего запуска
  • Сессия остаётся открытой: Claude Code выполняет очистку не более одного раза за сессию
  • Сессия завершается рано: очистка, не завершившаяся к моменту выхода из сессии, ничего не отправляет, как и очистка, остановившаяся из-за непредвиденной ошибки
Очистка охватывает не все пути. В разделе Хранятся, пока вы их не удалите перечислено, что остаётся, а в разделе Очистка локальных данных показано, как это удалить.

Отправка событий в SIEM

Укажите OTEL_EXPORTER_OTLP_LOGS_ENDPOINT на приемник OTLP вашего SIEM или на OpenTelemetry Collector, который перенаправляет на собственный API приема вашего SIEM. Следующий пример управляемых параметров экспортирует только события с полной деталью инструмента, включенной для аудита MCP и Bash:
Чтобы подтвердить, что события прибыли, отправьте подсказку в сеансе, работающем под этой конфигурацией, и проверьте ваш SIEM на событие claude_code.user_prompt. Если ничего не прибыло, запустите Claude Code с claude --debug-file <path> и проверьте этот журнал на ошибки экспорта [3P telemetry].

Рассмотрения бэкенда

Выбор вашего бэкенда метрик, логов и трассировок определяет типы анализов, которые вы можете выполнять:

Бэкенды для метрик

  • Базы данных временных рядов: Расчеты скорости, агрегированные метрики
  • Колончатые хранилища: Сложные запросы, анализ уникальных пользователей
  • Полнофункциональные платформы наблюдаемости: Продвинутые запросы, визуализация, оповещения

Бэкенды для событий и логов

  • Системы агрегации логов: Полнотекстовый поиск, анализ логов
  • Колончатые хранилища: Анализ структурированных событий
  • Полнофункциональные платформы наблюдаемости: Корреляция между метриками и событиями

Бэкенды для трассировок

Выберите бэкенд, поддерживающий хранилище распределенных трассировок и корреляцию span:
  • Системы распределенной трассировки: Визуализация span, водопады запросов, анализ задержки
  • Полнофункциональные платформы наблюдаемости: Поиск трассировок и корреляция с метриками и логами
Для организаций, требующих метрик Daily/Weekly/Monthly Active User (DAU/WAU/MAU), рассмотрите бэкенды, поддерживающие эффективные запросы уникальных значений.

Информация о сервисе

Все метрики и события экспортируются со следующими атрибутами ресурса:
  • service.name: claude-code для сессий терминала, claude-code-desktop для локальных сессий, запущенных с вкладки Code в приложении Claude Desktop
  • service.version: Текущая версия Claude Code или версия приложения Desktop для локальных сессий вкладки Code
  • os.type: Тип операционной системы (например, linux, darwin, windows)
  • os.version: Строка версии ��перационной системы
  • host.arch: Архитектура хоста (например, amd64, arm64)
  • wsl.version: Номер версии WSL (присутствует только при запуске на Windows Subsystem for Linux)
  • Имя счетчика: com.anthropic.claude_code
Если ваши конвейеры сборщика или панели мониторинга фильтруют по service.name = claude-code, добавьте claude-code-desktop в фильтр, чтобы также захватить телеметрию из локальных сессий вкладки Code.

Ресурсы для измерения ROI

Для полного руководства по измерению возврата инвестиций для Claude Code, включая настройку телеметрии, анализ затрат, метрики производительности и автоматизированные отчеты, см. Руководство по измерению ROI Claude Code. Этот репозиторий предоставляет готовые конфигурации Docker Compose, настройки Prometheus и OpenTelemetry, а также шаблоны для создания отчетов о производительности, интегрированные с такими инструментами, как Linear.

Безопасность и конфиденциальность

  • Экспорт OpenTelemetry на ваш бэкенд является добровольным и требует явной конфигурации. Информацию об отдельной операционной телеметрии Anthropic и о том, как её отключить, см. в разделе Data usage
  • Содержимое файлов в исходном виде и фрагменты кода не включа��тся в метрики или события. Span трассировок — это отдельный путь данных: см. пункт OTEL_LOG_TOOL_CONTENT ниже
  • При аутентификации через OAuth user.email включается в атрибуты телеметрии, отправляется только на endpoint OTel, который вы настраиваете, никогда на Anthropic. Если это вызывает беспокойство для вашей организации, работайте с вашим бэкендом телеметрии для фильтрации или скрытия этого поля
  • Содержимое пользовательского промпта не собирается по умолчанию. Записывается только длина промпта. Чтобы включить содержимое промпта, установите OTEL_LOG_USER_PROMPTS=1. Когда включено:
    • События user_prompt содержат текст промпта в двух атрибутах: prompt и prompt_text. Если вы удаляете или маскируете текст промпта события по имени атрибута в вашем коллекторе, укажите в правиле оба атрибута Этот процессор attributes OpenTelemetry Collector удаляет оба атрибута в конвейерах, в которых он указан:
    • При включённой трассировке span claude_code.interaction содержит текст промпта в своём атрибуте user_prompt
    • При детальной бета-трассировке span также содержат новые пользовательские сообщения, результаты инстр��ментов и системные напоминания, отправляемые с каждым запросом, текст системного промпта и выходные данные модели. В разделе Атрибуты содержимого при детальной бета-трассировке перечислен каждый атрибут. Событие claude_code.system_prompt содержит полный системный промпт
  • Текст ответа помощника не собирается по умолчанию. Записывается только длина ответа. Чтобы включить текст ответа, установите OTEL_LOG_ASSISTANT_RESPONSES=1. Как и все данные OpenTelemetry из Claude Code, текст ответа отправляется только на эндпоинт OTel, который вы настраиваете, никогда на Anthropic. Когда эта переменная не установлена, OTEL_LOG_USER_PROMPTS используется как резервный вариант, поэтому установите OTEL_LOG_ASSISTANT_RESPONSES=0, если вы хотите получать в событиях содержимое промпта без содержимого ответа. При детальной бета-трассировке span claude_code.llm_request всё равно содержит выходные данные модели в response.model_output, который управляется OTEL_LOG_USER_PROMPTS, а не этой переменной
  • Аргументы входных данных инструмента и параметры не логируются по умолчанию. Чтобы включить их, установите OTEL_LOG_TOOL_DETAILS=1. Для встроенных серверов Claude Desktop в сессиях, которыми владеет Claude Desktop, tool_decision и tool_result содержат пару mcp_server_name/mcp_tool_name, имена, созданные хостом, а не содержимое аргументов, даже с отключённым флагом. Эти данные отправляются только на эндпоинт OTEL, который вы настраиваете, никогда на Anthropic. Аргументы могут по-прежнему содержать конфиденциальные значения, поэтому настройте ваш бэкенд телеметрии для фильтрации или скрытия этих атрибутов по мере необходимости. Когда включено:
    • События tool_result и tool_decision включают атрибут tool_parameters с командами Bash, именами MCP-сервера и инструмента и именами скиллов. Поля, такие как full_command, выдаются неусеченными
    • События tool_result дополнительно включают атрибут tool_input с путями к файлам, URL-адресами, шаблонами поиска и другими аргументами. Отдельные значения более 512 символов усекаются, и общее количество ограничено примерно 4 K символами
    • События user_prompt включают буквальное command_name для пользовательских команд, команд плагинов и команд MCP
    • Счётчики стоимости и токенов и события api_request, api_error и api_refusal содержат реальные имена агента, скилла, плагина, MCP-сервера и инструмента в их атрибутах атрибуции
    • Span claude_code.tool содержит атрибуты, полученные из входных данных, такие как file_path. При детальной бета-трассировке он также содержит атрибут tool_input
  • Содержимое инструмента не логируется в span трассировок по умолчанию. Чтобы включить его, установите OTEL_LOG_TOOL_CONTENT=1. Span claude_code.tool затем содержит событие span tool.output с содержимым файлов в исходном виде, выходными данными команды Bash и тем, что возвращают MCP инструменты, WebFetch и WebSearch, усеченными на лимит содержимого (60 КБ по умолчанию) на атрибут. Результаты от MCP инструментов, WebFetch и WebSearch требуют Claude Code v2.1.283 или позже. Содержимое инструмента также достигает span через new_context, чей gate отличается для каждого span. Настройте ваш бэкенд телеметрии для фильтрации или скрытия этих атрибутов по мере необходимости
  • Тела запроса и ответа Anthropic Messages API в исходном виде не логируются по умолчанию. Чтобы включить их, установите OTEL_LOG_RAW_API_BODIES в вашей оболочке, пользовательских параметрах или управляемых параметрах. Это игнорируется в project and local settings. Тела содержат полную историю разговора, включая системную подсказку, каждый предыдущий ход пользователя и помощника, и результаты инструментов, поэтому включение этого подразумевает согласие со всем, что раскрыли бы другие флаги содержимого OTEL_LOG_*. Claude Code всегда скрывает содержимое расширенного мышления Claude из этих тел, независимо от других параметров. Значение, которое вы установите, определяет, как Claude Code доставляет тела:
    • С =1, Claude Code выдает события логов api_request_body и api_response_body для каждого вызова API. Атрибут body событий содержит JSON-сериализованную нагрузку, усеченную на лимит содержимого (60 КБ по умолчанию)
    • С =file:<dir>, Claude Code записывает неусеченные тела в файлы .request.json и .response.json в этом каталоге, и события содержат путь body_ref вместо встроенного тела. Отправьте каталог с коллектором логов или sidecar, а не через поток телеметрии. Для каждого успешного ответа Claude Code также добавляет одну строку в файл index.jsonl в этом каталоге, связывая файл ответа с файлом запроса, который его создал, и с сообщением транскрипта, которым он стал. Каждая строка не содержит содержимого сообщения, и раздел API response body event перечисляет его поля. Файл индекса требует Claude Code v2.1.274 или позже

Мониторинг Claude Code на Amazon Bedrock

Для подробного руководства по мониторингу использования Claude Code для Amazon Bedrock см. Реализация мониторинга Claude Code (Amazon Bedrock).