SpyBara
Go Premium

monitoring-usage.md 2026-09-28 22:59 UTC to 2026-09-29 21:59 UTC

This page contains 556 additions and 512 deletions.

2026
Wed 9 22:58 Sat 12 03:02 Mon 14 22:58 Fri 18 23:58 Tue 22 23:59 Wed 23 23:57 Thu 24 22:57 Fri 25 23:58 Mon 28 22:59 Tue 29 21:59

Pemantauan

Pelajari cara mengaktifkan dan mengonfigurasi OpenTelemetry untuk Claude Code.

Lacak penggunaan Claude Code, biaya, dan aktivitas alat di seluruh organisasi Anda dengan mengekspor data telemetri melalui OpenTelemetry (OTel). Claude Code mengekspor metrik sebagai data deret waktu melalui protokol metrik standar, acara melalui protokol log/acara, dan secara opsional distributed traces melalui protokol traces.

Mulai cepat

Konfigurasikan OpenTelemetry menggunakan variabel lingkungan:

# 1. Aktifkan telemetri
export CLAUDE_CODE_ENABLE_TELEMETRY=1

# 2. Pilih pengekspor (keduanya bersifat opsional - konfigurasikan hanya yang Anda butuhkan)
export OTEL_METRICS_EXPORTER=otlp       # Opsi: otlp, prometheus, console, none
export OTEL_LOGS_EXPORTER=otlp          # Opsi: otlp, console, none

# 3. Konfigurasikan titik akhir OTLP (untuk pengekspor OTLP)
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

# 4. Atur autentikasi (jika diperlukan)
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer your-token"

# 5. Untuk debugging: kurangi interval ekspor, dan atur ulang untuk penggunaan produksi
export OTEL_METRIC_EXPORT_INTERVAL=10000  # 10 detik (default: 60000ms)
export OTEL_LOGS_EXPORT_INTERVAL=5000     # 5 detik (default: 5000ms)

# 6. Jalankan Claude Code
claude

Untuk memverifikasi pengaturan yang mengekspor metrik, periksa backend Anda untuk metrik claude_code.session.count, yang Claude Code keluarkan saat sesi dimulai. Untuk memverifikasi pengaturan hanya log, kirimkan prompt dan periksa acara claude_code.user_prompt.

Jika tidak ada yang tiba, jalankan Claude Code dengan claude --debug-file <path> dan periksa log yang ditulisnya ke jalur tersebut. Claude Code melaporkan kegagalan dari pengekspor yang Anda konfigurasikan sebagai kesalahan [3P telemetry], di mana 3P berarti pihak ketiga. Baris yang diawali dengan [Anthropic telemetry] menjelaskan telemetri operasional terpisah Anthropic dan tidak menunjukkan masalah dengan pengaturan Anda.

Untuk opsi konfigurasi lengkap, lihat spesifikasi OpenTelemetry.

Konfigurasi administrator

Administrator dapat mengonfigurasi pengaturan OpenTelemetry untuk semua pengguna melalui file pengaturan terkelola. Lihat prioritas pengaturan untuk informasi lebih lanjut tentang bagaimana pengaturan diterapkan.

Contoh konfigurasi pengaturan terkelola:

{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_LOGS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
    "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",
    "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer example-token"
  }
}

Claude Code mengabaikan variabel pengekspor OpenTelemetry dalam .claude/settings.json dan .claude/settings.local.json repositori, jadi repositori tidak dapat menggunakannya untuk menghidupkan telemetri, memilih ke mana telemetri pergi, atau menangkap konten. Atur variabel tersebut dalam pengaturan terkelola, atau biarkan setiap pengembang mengaturnya dalam shell atau ~/.claude/settings.json mereka. Repositori masih dapat mematikan sinyal dengan menetapkan pemilih pengekspor, seperti OTEL_LOGS_EXPORTER, ke none, kecuali pengaturan terkelola, file --settings, atau lingkungan tempat Anda memulai Claude Code menetapkan variabel tersebut.

Claude Code tidak meneruskan variabel lingkungan OTEL_* ke subproses yang dihasilkannya, termasuk alat Bash, hooks, server MCP, dan language servers. Aplikasi yang diinstrumentasi OpenTelemetry yang Anda jalankan melalui alat Bash tidak mewarisi titik akhir pengekspor atau header Claude Code, jadi atur variabel tersebut langsung dalam perintah jika aplikasi itu perlu mengekspor telemetrinya sendiri.

Bagaimana pengaturan terkelola mengunci tujuan OTLP

Ketika Anda menetapkan variabel OTEL_EXPORTER_OTLP_* dalam pengaturan terkelola, Claude Code menghapus variabel yang ditetapkan pengembang yang bertentangan saat startup dan mencatat peringatan dalam debug log. Apa yang dihapusnya tergantung pada variabel mana yang Anda tetapkan:

  • Endpoints: ketika Anda menetapkan OTEL_EXPORTER_OTLP_ENDPOINT, Claude Code menghapus setiap titik akhir per-sinyal yang ditetapkan pengembang. Pengembang tidak dapat mengarahkan satu sinyal ke kolektor yang berbeda, jadi Anda tidak perlu juga menetapkan variabel titik akhir per-sinyal dalam pengaturan terkelola.

  • Protokol: ketika Anda menetapkan OTEL_EXPORTER_OTLP_PROTOCOL, Claude Code menghapus setiap protokol per-sinyal yang ditetapkan pengembang.

  • Kredensial: ketika Anda menetapkan OTEL_EXPORTER_OTLP_HEADERS, OTEL_EXPORTER_OTLP_CLIENT_KEY, atau OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE, Claude Code menghapus versi per-sinyal dari variabel tersebut yang ditetapkan pengembang, ditambah setiap variabel titik akhir yang ditetapkan pengembang, generik atau per-sinyal, karena kredensial tersebut akan mencapai kolektor yang tidak dipilih pengaturan terkelola.

  • Pemilih pengekspor: OTEL_METRICS_EXPORTER, OTEL_LOGS_EXPORTER, dan OTEL_TRACES_EXPORTER beta mengikuti prioritas per-kunci normal. Pengaturan pengembang masih dapat menonaktifkan sinyal atau mengalihkannya ke pengekspor konsol, jadi tetapkan pemilih dalam pengaturan terkelola juga jika Anda perlu menguncinya. Di seluruh sumber admin, OTEL_LOGS_EXPORTER mengikuti unit telemetri sementara dua pemilih lainnya digabungkan per kunci. Memerlukan Claude Code v2.1.223 atau lebih baru.

  • Titik akhir pelacakan beta: dengan pelacakan beta terperinci aktif, Claude Code mengekspor log dan jejak ke BETA_TRACING_ENDPOINT alih-alih melalui pengekspor log dan jejak. Claude Code oleh karena itu menghapus BETA_TRACING_ENDPOINT yang ditetapkan pengembang kapan pun salah satu pengaturan terkelola ini memutuskan tujuan sinyal:

    • Titik akhir atau kredensial generik atau log/jejak
    • Sebuah otelHeadersHelper
    • Pemilih pengekspor log atau jejak yang ditetapkan ke none, console, atau kosong, nilai yang membuat sinyal tetap di luar kolektor
    • CLAUDE_CODE_ENABLE_TELEMETRY dimatikan

    Titik akhir atau kredensial khusus metrik tidak menghapusnya. Sebelum v2.1.251, BETA_TRACING_ENDPOINT yang ditetapkan pengembang mengarahkan ulang log dan jejak yang diekspor pelacakan beta terperinci bahkan ketika pengaturan terkelola menyematkan kolektor.

Claude Code tidak menghapus variabel per-sinyal yang Anda tetapkan dalam pengaturan terkelola itu sendiri, jadi Anda dapat merutekan satu sinyal ke kolektor yang berbeda dengan menetapkan variabelnya di sana, seperti yang dilakukan contoh SIEM. Jika Anda menetapkan kredensial per-sinyal di sana, Claude Code menghapus titik akhir yang ditetapkan pengembang untuk sinyal itu.

Perilaku penghapusan ini mengubah di mana telemetri dikirimkan, bukan apa yang dikumpulkan Claude Code.

Sebelum v2.1.217, setiap variabel mengikuti prioritas pengaturan per-kunci secara independen, jadi titik akhir khusus sinyal yang ditetapkan dalam pengaturan pengguna atau shell mengarahkan ulang sinyal itu dari kolektor terkelola.

Ketika aplikasi desktop atau pelari lingkungan yang di-host sendiri meluncurkan Claude Code dan menamai titik akhir OTLP dalam lingkungan yang disediakannya, Claude Code menyematkan tujuan dengan cara yang sama: variabel telemetri peluncur menghapus variabel yang ditetapkan pengembang persis seperti pengaturan terkelola. Claude Code tidak menghapus variabel yang ditetapkan peluncur itu sendiri. Memerlukan Claude Code v2.1.251 atau lebih baru.

Detail konfigurasi

Variabel konfigurasi umum

Variabel-variabel ini mengonfigurasi eksporter, endpoint, dan perilaku ekspor untuk semua deployment.

Jika Anda menetapkan variabel endpoint atau protokol per-sinyal, seperti OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, Claude Code menggunakannya sebagai pengganti variabel generik untuk sinyal tersebut. Jika Anda menetapkan variabel header per-sinyal, seperti OTEL_EXPORTER_OTLP_METRICS_HEADERS, Claude Code menggabungkannya dengan OTEL_EXPORTER_OTLP_HEADERS generik untuk sinyal tersebut.

Pada mesin dengan pengaturan terkelola, lihat Bagaimana pengaturan terkelola mengunci tujuan OTLP untuk mengetahui apa yang Claude Code hapus.

Variabel Lingkungan Deskripsi Nilai Contoh
CLAUDE_CODE_ENABLE_TELEMETRY Mengaktifkan pengumpulan telemetri (diperlukan) 1
OTEL_METRICS_EXPORTER Jenis eksporter metrik, dipisahkan koma. Gunakan none untuk menonaktifkan console, otlp, prometheus, none
OTEL_LOGS_EXPORTER Jenis eksporter log/event, dipisahkan koma. Gunakan none untuk menonaktifkan console, otlp, none
OTEL_EXPORTER_OTLP_PROTOCOL Protokol untuk eksporter OTLP, berlaku untuk semua sinyal. Claude Code tidak memiliki protokol default, jadi atur ini atau variabel protokol spesifik sinyal untuk setiap eksporter otlp yang Anda aktifkan grpc, http/json, http/protobuf
OTEL_EXPORTER_OTLP_ENDPOINT Endpoint kolektor OTLP untuk semua sinyal http://localhost:4317
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL Protokol untuk metrik, menimpa pengaturan umum grpc, http/json, http/protobuf
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT Endpoint metrik OTLP, menimpa pengaturan umum http://localhost:4318/v1/metrics
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL Protokol untuk log, menimpa pengaturan umum grpc, http/json, http/protobuf
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT Endpoint log OTLP, menimpa pengaturan umum http://localhost:4318/v1/logs
OTEL_EXPORTER_OTLP_HEADERS Header autentikasi untuk OTLP Authorization=Bearer token
OTEL_EXPORTER_OTLP_METRICS_HEADERS Header autentikasi untuk metrik, digabung dengan header umum Authorization=Bearer token
OTEL_EXPORTER_OTLP_LOGS_HEADERS Header autentikasi untuk log, digabung dengan header umum Authorization=Bearer token
OTEL_METRIC_EXPORT_INTERVAL Interval ekspor dalam milidetik (default: 60000) 5000, 60000
OTEL_LOGS_EXPORT_INTERVAL Interval ekspor log dalam milidetik (default: 5000) 1000, 10000
OTEL_LOG_USER_PROMPTS Aktifkan pencatatan konten prompt pengguna (default: dinonaktifkan) 1 untuk mengaktifkan
OTEL_LOG_ASSISTANT_RESPONSES Aktifkan pencatatan teks respons asisten pada event assistant_response (default: dinonaktifkan). Ketika tidak diatur, kembali ke nilai OTEL_LOG_USER_PROMPTS. Memerlukan Claude Code v2.1.193 atau lebih baru 1 untuk mengaktifkan, 0 untuk tetap disembunyikan
OTEL_LOG_TOOL_DETAILS Aktifkan pencatatan parameter alat dan argumen input dalam event alat dan atribut span jejak: perintah Bash, nama server dan alat MCP, nama skill, nama workflow yang ditulis pengguna, dan input alat. Juga mengaktifkan nama perintah kustom, plugin, dan MCP pada event user_prompt, dan nama asli agen, skill, plugin, dan server serta nama alat MCP pada penghitung biaya dan token (default: dinonaktifkan). Untuk server bawaan Claude Desktop, dalam sesi yang dimiliki Claude Desktop, mcp_server_name/mcp_tool_name dipancarkan pada tool_decision/tool_result bahkan dengan flag mati. Pengecualian memerlukan Claude Code v2.1.214 atau lebih baru 1 untuk mengaktifkan
OTEL_LOG_TOOL_CONTENT Aktifkan pencatatan konten alat dalam tool.output span event (default: dinonaktifkan). Atribut span membawa konten alat di bawah gerbang mereka sendiri. Memerlukan tracing. Konten dipotong pada batas konten (60 KB secara default) 1 untuk mengaktifkan
OTEL_LOG_MANAGED_SETTINGS Tambahkan pengaturan terkelola yang disembunyikan, dan digest SHA-256 dari pengaturan sebelum penyembunyian, ke event managed settings resolved (default: dinonaktifkan). Nilai dalam pengaturan proyek atau lokal tidak mengaktifkannya. Memerlukan Claude Code v2.1.274 atau lebih baru 1 untuk mengaktifkan
OTEL_LOG_RAW_API_BODIES Pancarkan permintaan dan respons JSON API Pesan Anthropic lengkap sebagai event log api_request_body / api_response_body (default: dinonaktifkan). Badan mencakup seluruh riwayat percakapan. Mengaktifkan ini menyiratkan persetujuan untuk semua yang OTEL_LOG_USER_PROMPTS, OTEL_LOG_TOOL_DETAILS, dan OTEL_LOG_TOOL_CONTENT akan ungkapkan 1 untuk badan inline yang dipotong pada batas konten (60 KB secara default), atau file:<dir> untuk badan yang tidak dipotong di disk dengan pointer body_ref dalam event
CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH Batas konten: panjang maksimum atribut yang membawa konten seperti respons model, konten alat, prompt sistem, dan badan API mentah, termasuk penanda pemotongan, dalam unit kode UTF-16 (default: 61440, yaitu 60 KB). Default diukur untuk backend yang membatasi nilai atribut pada 64 KB; naikkan hanya jika backend Anda menerima nilai yang lebih besar, atau turunkan untuk mengurangi volume telemetri. Ketika batas atribut SDK OpenTelemetry, OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT atau salah satu varian logrecord dan span-nya, diatur lebih rendah, Claude Code memotong pada nilai yang lebih kecil itu sehingga penanda [TRUNCATED ...] tetap dalam batas SDK. Memerlukan Claude Code v2.1.214 atau lebih baru 262144
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE Preferensi temporalitas metrik (default: delta). Atur ke cumulative jika backend Anda mengharapkan temporalitas kumulatif delta, cumulative
CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS Interval untuk menyegarkan header dinamis (default: 1740000ms / 29 menit) 900000

Untuk protokol http/protobuf dan http/json, Claude Code mengirim setiap permintaan ekspor dengan header Content-Length. Sebelum v2.1.212, versi Claude Code dari v2.1.191 ke depan mengirim permintaan ini dengan pengkodean transfer chunked; Azure Monitor dan endpoint lain yang memerlukan panjang yang dideklarasikan menolaknya dengan error 411 Length Required atau 400.

Autentikasi mTLS

Cara Anda mengonfigurasi sertifikat klien untuk eksporter OTLP tergantung pada protokol OTLP yang digunakan untuk sinyal tersebut, diatur melalui OTEL_EXPORTER_OTLP_PROTOCOL atau penggantian spesifik sinyal. Konfigurasi yang sama berlaku untuk metrik, log, dan jejak.

Protokol Variabel sertifikat klien Percayai CA kolektor dengan
http/protobuf, http/json CLAUDE_CODE_CLIENT_CERT, CLAUDE_CODE_CLIENT_KEY, dan secara opsional CLAUDE_CODE_CLIENT_KEY_PASSPHRASE. Lihat Konfigurasi Jaringan NODE_EXTRA_CA_CERTS
grpc OTEL_EXPORTER_OTLP_CLIENT_KEY dan OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE, atau varian spesifik sinyal seperti OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY untuk menggunakan sertifikat berbeda per sinyal OTEL_EXPORTER_OTLP_CERTIFICATE

Untuk grpc, SDK OpenTelemetry membaca variabel OTLP standar secara langsung, jadi konfigurasi yang ada yang menetapkan variabel metrik spesifik sinyal terus berfungsi. Pada mesin dengan pengaturan terkelola, Claude Code dapat menghapus kredensial dan endpoint spesifik sinyal yang ditetapkan pengembang saat startup.

Kontrol kardinalitas metrik

Variabel lingkungan berikut mengontrol atribut mana yang disertakan dalam metrik untuk mengelola kardinalitas:

Variabel Lingkungan Deskripsi Nilai Default Contoh untuk Menonaktifkan
OTEL_METRICS_INCLUDE_SESSION_ID Sertakan atribut session.id dan, pada sesi cloud, ccr.session.id dalam metrik true false
OTEL_METRICS_INCLUDE_VERSION Sertakan atribut app.version dalam metrik false true
OTEL_METRICS_INCLUDE_ACCOUNT_UUID Sertakan atribut user.account_uuid dan user.account_id dalam metrik true false
OTEL_METRICS_INCLUDE_ENTRYPOINT Sertakan atribut app.entrypoint dalam metrik false true
OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES Sertakan kunci dari OTEL_RESOURCE_ATTRIBUTES sebagai atribut pada titik data metrik true false
OTEL_METRICS_INCLUDE_REPOSITORY Sertakan atribut identitas repositori vcs.* repository identity attributes pada metrik dan event. Memerlukan Claude Code v2.1.269 atau lebih baru false true

Kardinalitas yang lebih rendah umumnya berarti kinerja yang lebih baik dan biaya penyimpanan yang lebih rendah tetapi data yang kurang granular untuk analisis.

Traces (beta)

Distributed tracing mengekspor span yang menghubungkan setiap prompt pengguna ke permintaan API dan eksekusi alat yang dipicunya, sehingga Anda dapat melihat permintaan lengkap sebagai jejak tunggal di backend tracing Anda.

Tracing dimatikan secara default. Untuk mengaktifkannya, atur CLAUDE_CODE_ENABLE_TELEMETRY=1 dan CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1, kemudian atur OTEL_TRACES_EXPORTER untuk memilih tempat span dikirim. Traces menggunakan kembali konfigurasi OTLP umum untuk endpoint, protokol, header, dan mTLS. Pada mesin dengan pengaturan terkelola, Claude Code dapat menghapus kredensial dan endpoint spesifik sinyal yang ditetapkan pengembang saat startup.

Variabel Lingkungan Deskripsi Nilai Contoh
CLAUDE_CODE_ENHANCED_TELEMETRY_BETA Aktifkan span tracing (diperlukan). ENABLE_ENHANCED_TELEMETRY_BETA juga diterima 1
OTEL_TRACES_EXPORTER Jenis eksporter jejak, dipisahkan koma. Gunakan none untuk menonaktifkan console, otlp, none
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL Protokol untuk jejak, menimpa OTEL_EXPORTER_OTLP_PROTOCOL grpc, http/json, http/protobuf
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT Endpoint jejak OTLP, menimpa OTEL_EXPORTER_OTLP_ENDPOINT http://localhost:4318/v1/traces
OTEL_EXPORTER_OTLP_TRACES_HEADERS Header autentikasi untuk jejak, digabung dengan OTEL_EXPORTER_OTLP_HEADERS Authorization=Bearer token
OTEL_TRACES_EXPORT_INTERVAL Interval ekspor batch span dalam milidetik (default: 5000) 1000, 10000

Span menyembunyikan teks prompt pengguna, detail input alat, dan konten alat secara default. Atur OTEL_LOG_USER_PROMPTS=1, OTEL_LOG_TOOL_DETAILS=1, dan OTEL_LOG_TOOL_CONTENT=1 untuk menyertakannya.

Ketika tracing aktif, subproses Bash dan PowerShell secara otomatis mewarisi variabel lingkungan TRACEPARENT yang berisi konteks jejak W3C dari span eksekusi alat yang aktif. Ini memungkinkan subproses apa pun yang membaca TRACEPARENT untuk membuat span-nya sendiri sebagai anak dari jejak yang sama, memungkinkan distributed tracing end-to-end melalui skrip dan perintah yang Claude jalankan.

Ketika tracing aktif dan Claude Code terhubung langsung ke API Anthropic, setiap permintaan model membawa header W3C traceparent yang diatur ke konteks span claude_code.llm_request, dan header traceresponse API dicatat sebagai link span. Bersama-sama ini menghubungkan span sisi klien Claude Code ke jejak sisi server melalui perantara yang sesuai. Permintaan HTTP MCP keluar membawa traceparent dengan cara yang sama. Header tidak dikirim ke penyedia pihak ketiga.

Secara default, header traceparent pada permintaan model dan HTTP MCP dikirim hanya ketika ANTHROPIC_BASE_URL tidak diatur atau menunjuk ke API Anthropic, karena beberapa proxy menolak header yang tidak dikenali. Variabel TRACEPARENT subproses dikendalikan oleh switch yang sama untuk konsistensi. Jika Anda menjalankan Claude Code melalui proxy ANTHROPIC_BASE_URL kustom dan ingin konteks jejak dipropagasi, atur CLAUDE_CODE_PROPAGATE_TRACEPARENT=1.

Dalam sesi Agent SDK dan non-interaktif yang dimulai dengan -p, Claude Code juga membaca TRACEPARENT dan TRACESTATE dari lingkungannya sendiri saat memulai setiap span interaksi. Ini memungkinkan proses embedding melewatkan konteks jejak W3C aktifnya ke subproses sehingga span Claude Code muncul sebagai anak dari jejak distributed pemanggil. Sesi interaktif mengabaikan TRACEPARENT masuk untuk menghindari secara tidak sengaja mewarisi nilai ambient dari lingkungan CI atau kontainer.

Konteks jejak masuk juga berlaku untuk event. Dalam sesi Agent SDK dan -p dengan TRACEPARENT diatur, setiap catatan log event OTLP membawa nilai trace_id dan span_id yang menghubungkannya ke jejak aplikasi Anda, bahkan ketika eksporter jejak tidak dikonfigurasi, sehingga backend logging Anda dapat mengorelasikan event dengan sisa jejak.

Catatan yang dipancarkan saat interaksi aktif membawa ID span interaksi, bahkan ketika Claude Code memancarkannya di luar konteks async span, seperti dalam callback prompt izin atau untuk catatan yang di-buffer selama startup dan diekspor nanti. Catatan yang dipancarkan tanpa span interaksi aktif membawa ID TRACEPARENT masuk secara langsung. Sebelum v2.1.214, catatan yang dipancarkan di luar konteks async span membawa ID TRACEPARENT masuk sebagai gantinya. Sebelum v2.1.212, catatan event yang dipancarkan di luar span aktif tidak membawa trace_id atau span_id.

Hierarki span

Setiap prompt pengguna memulai span root claude_code.interaction. Panggilan API, panggilan alat, dan eksekusi hook dicatat sebagai anak-anaknya. Span alat memiliki dua span anak mereka sendiri: satu untuk waktu yang dihabiskan menunggu keputusan izin dan satu untuk eksekusi itu sendiri. Ketika alat Agent, atau alat Task warisan, memunculkan subagen, span API dan alat subagen bersarang di bawah span claude_code.tool induk.

claude_code.interaction
├── claude_code.llm_request
├── claude_code.hook                    (requires detailed beta tracing)
└── claude_code.tool
    ├── claude_code.tool.blocked_on_user
    ├── claude_code.tool.execution
    └── (Agent tool) subagent claude_code.llm_request / claude_code.tool spans

Dalam sesi Agent SDK dan claude -p, claude_code.interaction itu sendiri menjadi anak dari span pemanggil ketika TRACEPARENT diatur dalam lingkungan.

Ketika hook PreToolUse menunda panggilan alat, Claude Code menyimpan konteks jejak dari giliran yang menundanya. Ketika Anda melanjutkan sesi dan alat berjalan kembali, span alat bergabung dengan jejak giliran sebelumnya sebagai anak dari span claude_code.interaction giliran.

Atribut span

Setiap span membawa atribut standar ditambah atribut span.type yang cocok dengan namanya. Tabel di bawah mencantumkan atribut tambahan yang diatur pada setiap span. Span llm_request, tool.execution, dan hook menetapkan status OpenTelemetry ERROR ketika mereka mencatat kegagalan; span lainnya selalu berakhir dengan status UNSET.

claude_code.interaction

Atribut Deskripsi Gerbang oleh
user_prompt Teks prompt. Nilai adalah <REDACTED> kecuali gerbang diatur OTEL_LOG_USER_PROMPTS
user_prompt_length Panjang prompt dalam karakter
interaction.sequence Penghitung berbasis 1 dari interaksi, dihitung per proses Claude Code daripada per sesi, seperti yang dijelaskan untuk event.sequence
parent.source Bagaimana span mendapat induk jejak: env ketika itu induk di bawah TRACEPARENT masuk, none ketika itu memulai jejak sendiri. Memerlukan Claude Code v2.1.268 atau lebih baru
interaction.duration_ms Durasi wall-clock dari giliran

claude_code.llm_request

Atribut Deskripsi Gerbang oleh
model Pengenal model
gen_ai.system Selalu anthropic. Konvensi semantik GenAI OpenTelemetry
gen_ai.request.model Nilai yang sama dengan model. Konvensi semantik GenAI OpenTelemetry
query_source Subsistem yang mengeluarkan permintaan, seperti repl_main_thread atau nama subagen ENABLE_BETA_TRACING_DETAILED
query_source_safe Bentuk terbatas dari query_source, dipancarkan apakah atau tidak tracing beta terperinci aktif, dengan nilai seperti repl_main_thread atau agent.builtin.general-purpose. : menjadi . dan agen bernama pengguna muncul sebagai agent.custom. Memerlukan Claude Code v2.1.268 atau lebih baru
agent_id Pengenal subagen atau rekan kerja yang mengeluarkan permintaan. Tidak ada pada sesi utama
parent_agent_id Pengenal agen yang memunculkan yang ini. Tidak ada untuk sesi utama dan untuk agen yang dimunculkan langsung darinya
workflow.run_id Pengenal jalankan dari alat Workflow yang memunculkan agen ini, dengan awalan wf_. Tidak ada untuk agen yang tidak dimunculkan oleh workflow
workflow.name Nama workflow yang memunculkan agen ini. Nama yang ditulis pengguna diganti dengan custom kecuali gerbang diatur OTEL_LOG_TOOL_DETAILS
speed fast atau normal
effort Tingkat upaya yang diterapkan pada permintaan: low, medium, high, xhigh, atau max. Tidak ada ketika Claude Code tidak mengirim tingkat upaya, misalnya pada model yang tidak mendukung upaya. Memerlukan Claude Code v2.1.274 atau lebih baru
llm_request.context interaction, tool, atau standalone tergantung pada span induk
duration_ms Durasi wall-clock termasuk percobaan ulang
ttft_ms Waktu ke token pertama dalam milidetik
first_content_ms Waktu dari awal permintaan ke blok konten pertama dari upaya yang berhasil, dalam milidetik. Tidak ada pada permintaan yang kembali ke jalur non-streaming. Memerlukan Claude Code v2.1.268 atau lebih baru
input_tokens Jumlah token input dari blok penggunaan API
output_tokens Jumlah token output
cache_read_tokens Token yang dibaca dari cache prompt
cache_creation_tokens Token yang ditulis ke cache prompt
request_id ID permintaan API. Nilai yang sama dengan atribut korelasi event request_id event correlation attribute
gen_ai.response.id Nilai yang sama dengan request_id. Konvensi semantik GenAI OpenTelemetry
client_request_id x-client-request-id yang dihasilkan klien dari upaya terakhir
attempt Total upaya yang dilakukan untuk permintaan ini
success true atau false
status_code Kode status HTTP ketika permintaan gagal
error Pesan kesalahan ketika permintaan gagal
error_class Token kelas kesalahan pendek ketika permintaan gagal, seperti api_timeout atau server_overload. Memerlukan Claude Code v2.1.268 atau lebih baru
response.has_tool_call true ketika respons berisi blok tool-use
stop_reason API response stop_reason, seperti end_turn, tool_use, max_tokens, stop_sequence, pause_turn, atau refusal
gen_ai.response.finish_reasons Nilai yang sama dengan stop_reason, dibungkus dalam array string. Konvensi semantik GenAI OpenTelemetry

Setiap upaya percobaan ulang juga dicatat sebagai event span gen_ai.request.attempt dengan atribut attempt dan client_request_id.

claude_code.tool

Atribut Deskripsi Gerbang oleh
tool_name Nama alat
tool_name_safe Bentuk tool_name yang tidak membawa nama yang dipilih pengguna. Nama alat bawaan lulus verbatim. Nama alat MCP muncul sebagai mcp_other, kecuali nama alat yang cocok dengan beberapa bentuk tetap, seperti alat playwright bernama browser_*, yang lulus verbatim. Memerlukan Claude Code v2.1.268 atau lebih baru
bash_command_class Untuk alat Bash: kategori program pertama perintah dari daftar tetap, seperti vcs atau package_manager. other untuk program di luar daftar, unparsed ketika baris tidak dapat diuraikan. Memerlukan Claude Code v2.1.268 atau lebih baru
bash_argv0 Untuk alat Bash: program pertama perintah ketika itu ada di daftar tetap yang sama, seperti git atau npm. other untuk program apa pun di luar daftar. Memerlukan Claude Code v2.1.268 atau lebih baru
duration_ms Durasi wall-clock termasuk tunggu izin dan eksekusi
result_tokens Ukuran token perkiraan dari hasil alat
agent_id Pengenal subagen atau rekan kerja yang menjalankan alat. Tidak ada pada sesi utama
parent_agent_id Pengenal agen yang memunculkan yang ini. Tidak ada untuk sesi utama dan untuk agen yang dimunculkan langsung darinya
workflow.run_id Pengenal jalankan dari alat Workflow yang memunculkan agen ini, dengan awalan wf_. Tidak ada untuk agen yang tidak dimunculkan oleh workflow
workflow.name Nama workflow yang memunculkan agen ini. Nama yang ditulis pengguna diganti dengan custom kecuali gerbang diatur OTEL_LOG_TOOL_DETAILS
tool_use_id ID blok tool_use model untuk panggilan ini. Cocok dengan tool_use_id pada event tool_result dan tool_decision serta dalam payload hook, sehingga Anda dapat menghubungkan span ke catatan tersebut
gen_ai.tool.call.id Nilai yang sama dengan tool_use_id. Konvensi semantik GenAI OpenTelemetry
file_path Jalur file target untuk alat Read, Edit, dan Write OTEL_LOG_TOOL_DETAILS
full_command String perintah untuk alat Bash OTEL_LOG_TOOL_DETAILS
skill_name Nama skill untuk alat Skill OTEL_LOG_TOOL_DETAILS
subagent_type Jenis subagen untuk alat Agent atau alat Task warisan OTEL_LOG_TOOL_DETAILS

tool.output span event pada claude_code.tool

Jika Anda menetapkan OTEL_LOG_TOOL_CONTENT=1, panggilan Read dan Bash dapat mencatat event span tool.output pada span claude_code.tool. Panggilan Edit dan Write mencatat satu hanya ketika Anda juga menetapkan OTEL_LOG_TOOL_DETAILS=1. Variabel itu tidak dibatasi pada kedua alat itu, jadi periksa barisnya dalam tabel konfigurasi untuk argumen yang ditambahkannya di tempat lain.

Alat MCP, WebFetch, dan WebSearch juga mencatat event ini, pada Claude Code v2.1.283 atau lebih baru.

Claude Code menulis event ini dari pengembalian sukses panggilan alat, jadi panggilan yang menimbulkan kesalahan tidak mencatat apa pun, apa pun alatnya. Di antara panggilan yang memang kembali, itu tidak mencatat event tool.output untuk:

  • Panggilan ke alat apa pun selain Read, Edit, Write, Bash, WebFetch, WebSearch, dan alat MCP
  • Read yang mengembalikan apa pun selain teks file, seperti gambar, PDF, atau pembacaan ulang file yang isinya belum berubah
  • Panggilan Edit atau Write, kecuali Anda juga menetapkan OTEL_LOG_TOOL_DETAILS=1
  • Panggilan WebFetch atau WebSearch yang Claude Code pindahkan ke latar belakang karena Anda mengganggu giliran untuk mengirim pesan antrian Anda segera saat panggilan berjalan. Claude menerima hasil itu nanti, setelah span alat berakhir

Event membawa atribut ini, masing-masing dipotong pada batas konten (60 KB secara default). Gerbang oleh menamai variabel yang atribut butuhkan di atas OTEL_LOG_TOOL_CONTENT=1, dan untuk Edit dan Write variabel itu membuka gerbang event itu sendiri daripada atribut.

Atribut Deskripsi Gerbang oleh
content Teks yang dikembalikan alat Read, atau teks yang diminta panggilan Write untuk ditulis OTEL_LOG_TOOL_DETAILS untuk alat Write
output Untuk alat Bash, output gabungan perintah, dengan stderr yang disisipi ke stdout. Untuk alat MCP, WebFetch, atau WebSearch, hasil yang dikembalikan alat: blok teks digabung dengan baris baru, dengan gambar atau dokumen diganti dengan placeholder seperti [image]
diff Patch terstruktur yang diterapkan alat Edit OTEL_LOG_TOOL_DETAILS
file_path Jalur file target untuk alat Read, Edit, dan Write, mengulangi atribut span dengan nama yang sama OTEL_LOG_TOOL_DETAILS
bash_command String perintah untuk alat Bash OTEL_LOG_TOOL_DETAILS

Atribut tool_name span induk memberi tahu Anda alat mana yang berasal dari event. Atribut yang dipotong pada batas konten disertai dengan <attribute>_truncated dan <attribute>_original_length.

claude_code.tool.blocked_on_user

Atribut Deskripsi Gerbang oleh
duration_ms Waktu yang dihabiskan menunggu keputusan izin
decision accept atau reject
source Sumber keputusan, cocok dengan Tool decision event

claude_code.tool.execution

Atribut Deskripsi Gerbang oleh
duration_ms Waktu yang dihabiskan menjalankan badan alat
tool_use_id Nilai yang sama dengan span claude_code.tool induk
gen_ai.tool.call.id Nilai yang sama dengan tool_use_id. Konvensi semantik GenAI OpenTelemetry
success true atau false
error String kategori kesalahan ketika eksekusi gagal, seperti Error:ENOENT atau ShellError. Berisi pesan kesalahan lengkap sebagai gantinya ketika gerbang diatur OTEL_LOG_TOOL_DETAILS
error_class Kategori kesalahan dalam bentuk pengenal, dengan karakter di luar huruf, digit, dan garis bawah diganti dengan _, seperti Error_ENOENT atau ShellError. Membawa kategori bahkan ketika error membawa pesan lengkap. Memerlukan Claude Code v2.1.268 atau lebih baru

claude_code.hook

Span ini muncul hanya ketika tracing beta terperinci aktif, yang memerlukan ENABLE_BETA_TRACING_DETAILED=1 dan BETA_TRACING_ENDPOINT, pasangan yang juga mengubah tempat log dan jejak Anda pergi. Atur pasangan dalam shell, pengaturan pengguna, atau pengaturan terkelola; kedua variabel diabaikan dalam pengaturan proyek dan lokal. CLAUDE_CODE_ENHANCED_TELEMETRY_BETA saja tidak menghasilkannya.

Dalam sesi CLI interaktif, tracing beta terperinci juga memerlukan organisasi Anda untuk diizinkan untuk fitur tersebut. Sesi Agent SDK dan non-interaktif -p tidak memerlukan izin.

Atribut Deskripsi Gerbang oleh
hook_event Jenis event hook, seperti PreToolUse
hook_name Nama hook lengkap, seperti PreToolUse:Write
num_hooks Jumlah perintah hook yang cocok dieksekusi
hook_definitions Konfigurasi hook yang diserialisasi JSON OTEL_LOG_TOOL_DETAILS
duration_ms Durasi wall-clock dari semua hook yang cocok
num_success Jumlah hook yang diselesaikan dengan sukses
num_blocking Jumlah hook yang mengembalikan keputusan pemblokiran
num_non_blocking_error Jumlah hook yang gagal tanpa memblokir
num_cancelled Jumlah hook yang dibatalkan sebelum penyelesaian

Header dinamis

Untuk lingkungan perusahaan yang memerlukan autentikasi dinamis, Anda dapat mengonfigurasi skrip untuk menghasilkan header secara dinamis. Header dinamis berlaku hanya untuk protokol http/protobuf dan http/json. Dengan protokol grpc, Claude Code hanya menggunakan variabel header statis, OTEL_EXPORTER_OTLP_HEADERS dan varian spesifik sinyal-nya.

Konfigurasi pengaturan

Tambahkan ke .claude/settings.json Anda, ganti jalur dengan skrip Anda sendiri:

{
  "otelHeadersHelper": "/path/to/generate-otel-headers.sh"
}

Nilai dapat berupa jalur ke file yang dapat dieksekusi, termasuk jalur yang berisi spasi, atau baris perintah shell dengan argumen. Di Windows, nilai selalu berjalan melalui shell, jadi kutip jalur yang berisi spasi di dalam nilai JSON.

Persyaratan skrip

Skrip harus menampilkan JSON yang valid dengan pasangan kunci-nilai string yang mewakili header HTTP:

#!/bin/bash
# Contoh: Multiple headers
echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"

Jika helper gagal atau mencetak output yang tidak memenuhi persyaratan ini, ekspor gagal dan backend telemetri Anda tidak menerima apa pun dari sesi sampai helper berfungsi lagi. Claude Code melaporkan kegagalan dalam:

  • Notifikasi peringatan dalam sesi interaktif, otelHeadersHelper failed; telemetry is not being exported, ditampilkan sekali per sesi ketika helper pertama kali gagal
  • Output /status
  • Log debug, saat berjalan dengan --debug atau setelah menjalankan /debug dalam sesi
  • stderr, dalam sesi non-interaktif yang dimulai dengan -p

Perilaku penyegaran

Skrip helper header berjalan saat startup dan secara berkala setelahnya untuk mendukung penyegaran token. Secara default, skrip berjalan setiap 29 menit. Sesuaikan interval dengan variabel lingkungan CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS.

Dukungan organisasi multi-tim

Organisasi dengan beberapa tim atau departemen dapat menambahkan atribut kustom untuk membedakan antara kelompok yang berbeda menggunakan variabel lingkungan OTEL_RESOURCE_ATTRIBUTES:

# Tambahkan atribut kustom untuk identifikasi tim
export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"

Atribut kustom ini disertakan dalam semua metrik dan event, memungkinkan Anda untuk:

  • Filter metrik berdasarkan tim atau departemen
  • Lacak biaya per pusat biaya
  • Buat dashboard khusus tim
  • Atur peringatan untuk tim tertentu

Claude Code melampirkan nilai-nilai ini sebagai atribut pada setiap titik data metrik dan catatan event, selain mengirimkannya dalam blok sumber daya OTLP. Karena sebagian besar backend metrik mengekspos atribut titik data sebagai label yang dapat dipertanyakan, Anda dapat mengelompokkan dan memfilter metrik berdasarkan kunci kustom Anda secara langsung. Kecuali untuk atribut repositori vcs.* repository attributes, kunci kustom tidak pernah menimpa atribut standar seperti user.id atau session.id: ketika kunci bertabrakan, Claude Code menyimpan nilai bawaan.

Setiap kunci kustom menjadi label pada setiap seri metrik, jadi nilai kardinalitas tinggi meningkatkan biaya penyimpanan di backend metrik Anda. Untuk mengirim atribut kustom dalam blok sumber daya saja dan menghilangkannya dari label titik data, atur OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false. Lihat Kontrol kardinalitas metrik.

Konfigurasi contoh

Atur variabel lingkungan ini sebelum menjalankan claude. Setiap skenario di bawah menunjukkan konfigurasi lengkap, dan setiap variabel dijelaskan di bawah Variabel konfigurasi umum. Untuk mengonfirmasi konfigurasi berlaku, periksa backend Anda untuk metrik claude_code.session.count setelah memulai sesi; Quick start mencakup verifikasi log saja dan apa yang harus diperiksa ketika tidak ada yang tiba.

Untuk debugging konsol dengan interval ekspor 1 detik:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=console
export OTEL_METRIC_EXPORT_INTERVAL=1000

Untuk OTLP melalui gRPC:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

Untuk Prometheus, yang discrape dari http://localhost:9464/metrics:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=prometheus

Pada lingkungan yang di-host sendiri, sesi mengikat port 9464 hanya pada kapasitas default runner satu. Pada kapasitas yang lebih tinggi, runner kembali mengekspos penghitung dan gauge sesi pada endpoint /metrics miliknya sendiri sebagai gantinya.

Untuk mengirim metrik ke beberapa eksporter:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=console,otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=http/json

Untuk mengirim metrik dan log ke endpoint atau backend yang berbeda:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://metrics.example.com:4318
export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317

Untuk mengekspor metrik saja, tanpa event atau log:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

Untuk mengekspor event dan log saja, tanpa metrik:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

Telemetri dari sesi cloud dan Claude Tag

Sesi cloud, termasuk sesi saluran Claude Tag, berjalan di lingkungan cloud daripada di perangkat pengguna Anda, jadi file pengaturan terkelola atau profil shell di perangkat tersebut tidak mengonfigurasi telemetri mereka. Untuk sesi di lingkungan yang dihosting Anthropic, bagian ini mencakup tempat untuk menetapkan variabel telemetri, cara membuat kolektor Anda dapat diakses dari lingkungan, dan cara membedakan sesi cloud dan Claude Tag dalam data yang diekspor.

Untuk mengekspor telemetri dari sesi tersebut, atur CLAUDE_CODE_ENABLE_TELEMETRY dan variabel OTEL_*, menggunakan kunci yang sama seperti contoh konfigurasi administrator, di salah satu dari dua tempat:

  • Pengaturan yang dikelola server: tambahkan ke blok env dari pengaturan yang dikelola server organisasi Anda. Claude Code mengambil pengaturan tersebut saat startup di mana pun pengaturan yang dikelola server berlaku, yang mencakup mesin pengguna Anda dan sesi cloud selain sesi saluran Claude Tag. Sesi Claude Tag tidak menerima pengaturan yang dikelola server Anda, jadi rute ini tidak mengonfigurasinya.
  • Variabel lingkungan: tambahkan ke variabel lingkungan lingkungan cloud untuk mengonfigurasi hanya sesi yang berjalan di lingkungan tersebut. Ini adalah rute yang menjangkau sesi Claude Tag.

Siapa pun yang menggunakan lingkungan dapat membaca variabelnya, jadi jangan letakkan kredensial di sana, seperti token kolektor di OTEL_EXPORTER_OTLP_HEADERS. Kredensial API di lingkungan juga tidak membantu, karena ekspor telemetri Claude Code sendiri adalah salah satu dari permintaan yang tidak pernah mendapatkan kredensial. Jika kolektor Anda memerlukan kredensial, konfigurasikan seluruh ekspor melalui pengaturan yang dikelola server sebagai gantinya, karena ketika Anda menetapkan kredensial di sana, Claude Code menghapus variabel titik akhir yang ditetapkan di luar pengaturan terkelola.

Pertahankan batasan ini dalam pikiran ketika Anda mengonfigurasi telemetri untuk sesi cloud:

  • Biarkan sesi menjangkau kolektor: Claude Code mengirim ekspor melalui jaringan sesi, jadi apakah itu menjangkau host di OTEL_EXPORTER_OTLP_ENDPOINT Anda tergantung pada tingkat akses jaringan lingkungan. Jika sesi tidak dapat menjangkau domain kolektor pada tingkat yang Anda pilih, tambahkan domain ke daftar izin lingkungan, karena tidak ada pengaturan yang dikelola server yang menambahkan domain ke daftar izin jaringan lingkungan.
  • Saluran Claude Tag menggunakan lingkungan tingkat organisasi: sesi saluran berjalan di lingkungan tingkat organisasi daripada lingkungan pribadi anggota, jadi buat perubahan daftar izin dan variabel lingkungan apa pun di lingkungan bersama yang ditetapkan sebagai default organisasi Anda atau disematkan ke saluran.
  • Cowork dikonfigurasi secara terpisah: sesi Cowork tidak menerima pengaturan yang dikelola server, seperti yang ditunjukkan tabel cakupan permukaan, jadi blok env yang dikelola server tidak mengonfigurasi telemetri mereka.

Atribut telemetri ke sesi cloud

Secara default, metrik dan acara dari sesi cloud membawa atribut standar, termasuk session.id, ccr.session.id, dan organization.id, sehingga Anda dapat memfilter berdasarkan sesi atau organisasi tanpa konfigurasi tambahan. Nilai ccr.session.id adalah CLAUDE_CODE_REMOTE_SESSION_ID sesi. Untuk mengubahnya menjadi URL transkrip sesi, lihat Tautkan output kembali ke sesi.

Untuk mengatribusikan telemetri secara lebih detail, gunakan opsi berikut:

  • Identifikasi sesi Claude Tag: atur OTEL_METRICS_INCLUDE_ENTRYPOINT=true, seperti yang dijelaskan di bawah Kontrol kardinalitas metrik. Metrik kemudian membawa app.entrypoint, yang nilainya adalah claude-in-slack untuk sesi Claude Tag.
  • Tambahkan atribut kustom: atur OTEL_RESOURCE_ATTRIBUTES di tempat yang sama di mana Anda menetapkan variabel OTEL_* lainnya untuk sesi tersebut. Jika Anda export di skrip setup lingkungan sebagai gantinya, nilainya tidak mencapai Claude Code: skrip setup adalah skrip Bash terpisah yang berjalan sebelum Claude Code diluncurkan, dan variabel yang diekspor berakhir dengannya.

Dalam sesi saluran Claude Tag, Claude bekerja sebagai identitas bersama organisasi Anda daripada sebagai anggota apa pun, jadi jangan andalkan atribut user.* untuk mengidentifikasi siapa yang menandai Claude.

Metrik dan peristiwa yang tersedia

Atribut standar

Semua metrik dan peristiwa berbagi atribut standar ini:

Atribut Deskripsi Dikendalikan Oleh
session.id Pengenal sesi unik OTEL_METRICS_INCLUDE_SESSION_ID (default: true)
ccr.session.id Pengenal sesi cloud, nilai dari CLAUDE_CODE_REMOTE_SESSION_ID, pada sesi yang berjalan di lingkungan cloud OTEL_METRICS_INCLUDE_SESSION_ID (default: true)
app.version Versi Claude Code saat ini OTEL_METRICS_INCLUDE_VERSION (default: false)
app.entrypoint Bagaimana sesi diluncurkan, seperti cli, sdk-cli, sdk-ts, sdk-py, claude-vscode, atau claude-in-slack untuk sesi Claude Tag OTEL_METRICS_INCLUDE_ENTRYPOINT (default: false)
organization.id UUID organisasi (saat diautentikasi) Selalu disertakan saat tersedia
user.account_uuid UUID akun (saat diautentikasi) OTEL_METRICS_INCLUDE_ACCOUNT_UUID (default: true)
user.account_id ID akun dalam format tagged yang cocok dengan API admin Anthropic (saat diautentikasi), seperti user_01BWBeN28... OTEL_METRICS_INCLUDE_ACCOUNT_UUID (default: true)
user.id Pengenal anonim acak yang dihasilkan pada run pertama dan disimpan di ~/.claude.json. Tidak mengandung informasi pribadi dan tidak berasal dari akun Claude Anda. Menghapus file menghasilkan nilai yang tidak terkait pada run berikutnya. Selalu disertakan
user.email Alamat email pengguna, dari sign-in Anda atau, dalam sesi cloud, dari kredensial sesi itu sendiri Selalu disertakan saat tersedia
terminal.type Jenis terminal, seperti iTerm.app, vscode, cursor, atau tmux Selalu disertakan saat terdeteksi
Kunci dari OTEL_RESOURCE_ATTRIBUTES Atribut kustom yang Anda tetapkan, seperti department atau team.id. Lihat Dukungan organisasi multi-tim OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES (default: true)
vcs.repository.url.full, vcs.owner.name, vcs.repository.name, vcs.provider.name Identitas repositori sesi, berasal dari remote origin-nya. Lihat Atribut repositori OTEL_METRICS_INCLUDE_REPOSITORY (default: false). Memerlukan Claude Code v2.1.269 atau lebih baru

Ketika Claude Code masuk ke gateway aplikasi Claude, CLI memberi stempel ekspor dengan identitas terautentikasi dari sesi gateway: user.id adalah subjek IdP daripada pengenal instalasi anonim, user.email adalah email yang masuk, dan user.groups membawa keanggotaan grup IdP sebagai string yang dipisahkan koma. Setiap ekspor juga membawa identity.source: gateway-oidc. Identitas gateway diterapkan terakhir, jadi kunci user.* dan identity.* yang ditetapkan melalui OTEL_RESOURCE_ATTRIBUTES diabaikan pada sesi gateway.

Peristiwa juga menyertakan atribut berikut. Ini tidak pernah dilampirkan ke metrik karena akan menyebabkan kardinalitas tak terbatas:

  • prompt.id: UUID yang menghubungkan prompt pengguna dengan semua peristiwa berikutnya hingga prompt berikutnya. Lihat Atribut korelasi peristiwa.
  • workspace.host_paths: direktori workspace host yang dipilih di aplikasi desktop, sebagai array string
  • workflow.run_id: pengenal run, dengan awalan wf_, pada peristiwa API dan alat yang dipancarkan oleh agen yang termasuk dalam run alat Workflow. Memfilter peristiwa berdasarkan satu workflow.run_id merekonstruksi permintaan API dan hasil alat run tersebut. Pengenal mencakup agen yang dihasilkan skrip workflow dan agen apa pun yang dihasilkan agen tersebut, seperti invokasi skill. Ini cocok dengan pengenal run yang dilaporkan dalam hasil alat Workflow. Tidak ada pada semua peristiwa lainnya. Memerlukan Claude Code v2.1.202 atau lebih baru
  • workflow.name: nama workflow, meta.name skrip-nya, dipancarkan bersama workflow.run_id. Nama workflow bawaan muncul verbatim saat run mengeksekusi skrip bawaan yang tidak dimodifikasi. Nama yang ditulis pengguna, termasuk salinan yang diedit dari skrip bawaan, diganti dengan custom kecuali OTEL_LOG_TOOL_DETAILS=1 diatur. Memerlukan Claude Code v2.1.202 atau lebih baru

Atribut repositori

Atur OTEL_METRICS_INCLUDE_REPOSITORY=true untuk menandai metrik dan peristiwa dengan identitas repositori sesi, sehingga kolektor bersama dapat mengatribusikan penggunaan per repositori. Memerlukan Claude Code v2.1.269 atau lebih baru.

Claude Code menurunkan atribut ini sekali per sesi dari remote origin repositori. Ketika remote HTTPS dan SSH dari repositori menamai host dan path yang sama, seperti yang mereka lakukan di GitHub, GitLab, dan Bitbucket Cloud, keduanya menghasilkan nilai yang identik:

Atribut Nilai
vcs.repository.url.full URL browser repositori tanpa .git, seperti https://github.com/example-org/example-repo
vcs.owner.name Path pemilik atau grup, seperti example-org; dihilangkan ketika path remote memiliki satu segmen
vcs.repository.name Nama repositori bare, seperti example-repo
vcs.provider.name github, gitlab, bitbucket, atau gitea ketika Claude Code mengenali host remote atau bentuk URL sebagai salah satu penyedia tersebut; dihilangkan sebaliknya

Nilai diubah menjadi huruf kecil, dan kredensial, string kueri, dan fragmen dari URL remote tidak pernah muncul di dalamnya. Atribut dihilangkan ketika sesi tidak memiliki remote origin, ketika remote tidak berbentuk URL, atau ketika satu-satunya repositori yang menutup adalah direktori home Anda.

Untuk mendapatkan atribut ini dari sesi cloud, atur variabel telemetri, termasuk OTEL_METRICS_INCLUDE_REPOSITORY, pada lingkungan cloud-nya. Juga izinkan domain kolektor Anda di akses jaringan lingkungan.

Kunci vcs.* yang Anda deklarasikan dalam OTEL_RESOURCE_ATTRIBUTES menggantikan nilai yang diturunkan untuk kunci tersebut. Jika Anda mendeklarasikan vcs.repository.url.full, Claude Code tidak pernah membaca remote dan hanya melaporkan kunci yang Anda deklarasikan.

Jika klon HTTPS dan SSH dari satu repositori melaporkan nilai yang berbeda, seperti pada instalasi yang di-host sendiri yang URL klon HTTPS-nya membawa awalan path yang URL SSH tidak memiliki, deklarasikan vcs.repository.url.full dalam OTEL_RESOURCE_ATTRIBUTES bersama dengan setiap kunci vcs.* lainnya yang ingin Anda laporkan. Setiap klon kemudian melaporkan identitas yang Anda deklarasikan.

Atribut hanya mengalir ke eksporter Anda sendiri; telemetri Anthropic menghilangkan setiap kunci vcs.*.

Metrik

Claude Code mengekspor metrik berikut. Kolom Unit menunjukkan string unit OpenTelemetry yang dilampirkan ke setiap metrik; metrik penghitung tidak membawa apa pun.

Nama Metrik Deskripsi Unit
claude_code.session.count Jumlah sesi CLI yang dimulai none
claude_code.lines_of_code.count Jumlah baris kode yang dimodifikasi none
claude_code.pull_request.count Jumlah pull request yang dibuat none
claude_code.commit.count Jumlah git commit yang dibuat none
claude_code.cost.usage Biaya sesi Claude Code USD
claude_code.token.usage Jumlah token yang digunakan tokens
claude_code.code_edit_tool.decision Jumlah keputusan izin alat pengedit kode none
claude_code.active_time.total Total waktu aktif s

Ketika prometheus adalah satu-satunya eksporter yang terdaftar dalam OTEL_METRICS_EXPORTER, Claude Code menghilangkan unit USD, tokens, dan s dari metrik yang diekspor sehingga scrape tetap format teks Prometheus yang valid. Nama metrik tidak berubah, dan konfigurasi yang menggabungkan eksporter, seperti otlp,prometheus, menyimpan unit. Sebelum v2.1.216, scrape Prometheus menyertakan baris # UNIT khusus OpenMetrics yang beberapa scraper menolak.

Detail metrik

Setiap metrik menyertakan atribut standar yang tercantum di atas. Metrik dengan atribut konteks tambahan dicatat di bawah.

Penghitung sesi

Ditingkatkan pada awal setiap sesi.

Atribut:

  • Semua atribut standar
  • start_type: Bagaimana sesi dimulai. Salah satu dari "fresh", "resume", "continue", atau "agents_view". Nilai "agents_view" mengidentifikasi proses dashboard claude agents, UI lokal yang diluncurkan pengguna daripada sesi percakapan. Filter pada nilai ini untuk memisahkan peluncuran proses UI dari sesi percakapan di dashboard Anda.

Penghitung baris kode

Ditingkatkan ketika kode ditambahkan atau dihapus.

Atribut:

  • Semua atribut standar
  • type: ("added", "removed")
  • model: Pengenal model untuk model yang membuat perubahan (misalnya, "claude-sonnet-5")

Penghitung pull request

Ditingkatkan ketika Claude Code membuat pull request atau merge request melalui perintah shell atau alat MCP.

Atribut:

Penghitung commit

Ditingkatkan saat membuat git commit melalui Claude Code.

Atribut:

Penghitung biaya

Ditingkatkan setelah setiap permintaan API.

Atribut agent.name, skill.name, plugin.name, mcp_server.name, dan mcp_tool.name masing-masing menyunting beberapa nama menjadi placeholder "custom" atau "third-party" secara default. Jika Anda mengatur OTEL_LOG_TOOL_DETAILS=1, mereka membawa nama asli sebagai gantinya. Sebelum v2.1.273, penghitung biaya dan token serta peristiwa api_request, api_error, dan api_refusal membawa nilai yang disunting bahkan dengan OTEL_LOG_TOOL_DETAILS=1 diatur.

Atribut:

  • Semua atribut standar
  • model: Pengenal model (misalnya, "claude-sonnet-5")
  • query_source: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari "main", "subagent", atau "auxiliary"
  • speed: "fast" ketika permintaan menggunakan mode cepat. Tidak ada sebaliknya
  • effort: Tingkat upaya yang diterapkan pada permintaan: "low", "medium", "high", "xhigh", atau "max". Tidak ada ketika Claude Code tidak mengirim tingkat upaya, misalnya pada model yang tidak mendukung upaya.
  • agent.name: Jenis subagen yang mengeluarkan permintaan. Nama agen bawaan dan agen dari plugin marketplace resmi muncul verbatim. Nama agen yang ditentukan pengguna lainnya diganti dengan "custom". Tidak ada ketika permintaan tidak dikeluarkan oleh jenis subagen bernama.
  • skill.name: Skill aktif untuk permintaan, diatur oleh alat Skill atau perintah /, atau diwarisi oleh subagen yang dihasilkan. Nama skill bawaan, bundel, yang ditentukan pengguna, dan plugin marketplace resmi muncul verbatim. Nama skill plugin pihak ketiga diganti dengan "third-party". Tidak ada ketika tidak ada skill yang aktif.
  • plugin.name: Plugin pemilik ketika skill aktif atau subagen disediakan oleh plugin. Nama plugin marketplace resmi muncul verbatim. Nama plugin pihak ketiga diganti dengan "third-party". Tidak ada ketika skill maupun subagen memiliki plugin pemilik.
  • marketplace.name: Marketplace tempat plugin pemilik diinstal. Hanya dipancarkan untuk plugin marketplace resmi, bahkan dengan OTEL_LOG_TOOL_DETAILS=1 diatur. Tidak ada sebaliknya.
  • mcp_server.name: Server MCP yang hasil alat ini dikonsumsi permintaan. Nama server bawaan, yang di-proxy claude.ai, dan registry resmi muncul verbatim. Nama server yang dikonfigurasi pengguna diganti dengan "custom". Tidak ada ketika permintaan tidak mengonsumsi hasil alat MCP. Sebelum v2.1.222, Claude Code menetapkan atribut ini pada setiap permintaan setelah panggilan alat MCP, bukan hanya pada permintaan yang mengonsumsi hasil alat, jadi dashboard yang mengagregasinya menunjukkan penurunan setelah Anda upgrade.
  • mcp_tool.name: Alat MCP yang hasil ini dikonsumsi permintaan, dengan perilaku penyuntingan dan versi yang sama dengan mcp_server.name. Tidak ada ketika permintaan tidak mengonsumsi hasil alat MCP.

Penghitung token

Ditingkatkan setelah setiap permintaan API.

Atribut:

  • Semua atribut standar
  • type: ("input", "output", "cacheRead", "cacheCreation")
  • model: Pengenal model (misalnya, "claude-sonnet-5")
  • query_source: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari "main", "subagent", atau "auxiliary"
  • speed: "fast" ketika permintaan menggunakan mode cepat. Tidak ada sebaliknya
  • effort: Tingkat upaya yang diterapkan pada permintaan. Lihat Penghitung biaya untuk detail.
  • agent.name, skill.name, plugin.name, marketplace.name, mcp_server.name, mcp_tool.name: Atribusi skill, plugin, agen, dan MCP untuk permintaan. Lihat Penghitung biaya untuk definisi dan perilaku penyuntingan.

Penghitung keputusan alat pengedit kode

Ditingkatkan ketika pengguna menerima atau menolak penggunaan alat Edit, Write, atau NotebookEdit.

Atribut:

  • Semua atribut standar
  • tool_name: Nama alat ("Edit", "Write", "NotebookEdit")
  • decision: Keputusan pengguna ("accept", "reject")
  • source: Dari mana keputusan berasal. Salah satu dari "config", "hook", "user_permanent", "user_temporary", "user_abort", atau "user_reject". Lihat Peristiwa keputusan alat untuk apa arti setiap nilai.
  • language: Bahasa pemrograman file yang diedit, seperti "TypeScript", "Python", "JavaScript", atau "Markdown". Mengembalikan "unknown" untuk ekstensi file yang tidak dikenali.

Penghitung waktu aktif

Melacak waktu aktual yang dihabiskan untuk menggunakan Claude Code secara aktif, tidak termasuk waktu idle. Metrik ini ditingkatkan selama interaksi pengguna, seperti mengetik dan membaca respons, dan selama pemrosesan CLI, seperti eksekusi alat dan pembuatan respons AI.

Atribut:

  • Semua atribut standar
  • type: "user" untuk interaksi keyboard, "cli" untuk eksekusi alat dan respons AI

Peristiwa

Claude Code mengekspor peristiwa berikut melalui log/peristiwa OpenTelemetry (ketika OTEL_LOGS_EXPORTER dikonfigurasi):

Atribut korelasi peristiwa

Ketika pengguna mengirimkan prompt, Claude Code dapat membuat beberapa panggilan API dan menjalankan beberapa alat. Atribut prompt.id memungkinkan Anda menghubungkan semua peristiwa tersebut kembali ke prompt tunggal yang memicunya.

Atribut Deskripsi
prompt.id Pengenal UUID v4 yang menghubungkan semua peristiwa yang dihasilkan saat memproses prompt pengguna tunggal
event.sequence Penghitung berbasis 0 untuk mengurutkan peristiwa, dihitung per proses Claude Code daripada per sesi
message.uuid UUID pesan seperti yang disimpan dalam transkrip sesi, file ~/.claude/projects/*/*.jsonl. Hadir pada assistant_response, pada api_response_body, dan pada user_prompt kecuali untuk pengiriman perintah, yang dapat menghasilkan nol atau banyak pesan. Pada assistant_response dan api_response_body, ini adalah entri transkrip akhir respons, yang parentUuid giliran berikutnya rantai dari. Memerlukan Claude Code v2.1.214 atau lebih baru, atau v2.1.274 atau lebih baru pada api_response_body
request_id ID yang ditetapkan server dari permintaan API, dibaca dari header respons request-id, seperti req_011.... Pada respons tanpa header request-id, seperti pada Amazon Bedrock, nilai berasal dari header x-amzn-requestid sebagai gantinya. Hadir pada api_request, api_error, api_refusal, assistant_response, dan api_response_body ketika respons membawa salah satu header. Cocok dengan atribut yang sama pada span trace llm_request. Sumber x-amzn-requestid memerlukan Claude Code v2.1.282 atau lebih baru
client_request_id UUID yang dihasilkan klien dikirim sebagai header permintaan x-client-request-id. Hadir pada api_request dan api_error pada koneksi API pihak pertama; tidak ada pada backend penyedia pihak ketiga dan ketika permintaan diulang melalui fallback non-streaming. Memasangkan permintaan dengan responsnya dan tetap tersedia untuk kegagalan seperti timeout yang tidak pernah menghasilkan request_id server. Cocok dengan atribut yang sama pada span trace llm_request. Memerlukan Claude Code v2.1.214 atau lebih baru

Untuk melacak semua aktivitas yang dipicu oleh prompt tunggal, filter peristiwa Anda berdasarkan nilai prompt.id tertentu. Ini mengembalikan peristiwa user_prompt, peristiwa api_request apa pun, dan peristiwa tool_result apa pun yang terjadi saat memproses prompt tersebut.

event.sequence dimulai pada 0 setiap kali proses Claude Code dimulai dan menghitung untuk kehidupan proses tersebut. Terus menghitung di seluruh /clear, yang menetapkan session.id baru. Jika Anda melanjutkan sesi tanpa forking, sesi menyimpan session.id-nya tetapi mengambil nilai event.sequence-nya dari proses yang melanjutkannya, jadi dalam satu sesi peristiwa yang lebih baru dapat membawa nilai yang lebih rendah daripada yang lebih awal, atau mengulangi satu. Untuk mengurutkan peristiwa sesi, urutkan berdasarkan event.timestamp dan gunakan event.sequence untuk mengurutkan peristiwa yang berbagi timestamp.

Untuk rekonstruksi tingkat pesan, setiap kelas peristiwa membawa kunci yang cocok dengan bidang dalam transkrip sesi. Format entri transkrip adalah internal ke Claude Code dan berubah antar versi, jadi pipeline yang bergabung pada bidang ini dapat rusak pada rilis apa pun; perlakukan penggabungan sebagai spesifik versi daripada kontrak stabil:

  • message.uuid pada user_prompt, assistant_response, dan api_response_body
  • request_id pada peristiwa API, disimpan sebagai requestId pada entri asisten transkrip
  • tool_use_id pada peristiwa tool_result dan tool_decision

Peristiwa prompt pengguna

Dicatat ketika pengguna mengirimkan prompt.

Nama Peristiwa: claude_code.user_prompt

Atribut:

  • Semua atribut standar
  • event.name: "user_prompt"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • prompt_length: Panjang prompt
  • prompt: Konten prompt. Disunting secara default. Atur OTEL_LOG_USER_PROMPTS=1 untuk menyertakannya
  • message.uuid: UUID pesan pengguna yang dihasilkan, cocok dengan entri transkrip yang disimpan. Tidak ada pada pengiriman perintah, yang dapat menghasilkan nol atau banyak pesan. Memerlukan Claude Code v2.1.214 atau lebih baru
  • command_name: Nama perintah ketika prompt memanggil satu. Nama perintah bawaan dan bundel seperti compact atau debug dipancarkan apa adanya; alias seperti reset dipancarkan seperti yang diketik daripada nama kanonik. Nama perintah kustom, plugin, dan MCP runtuh menjadi custom atau mcp kecuali OTEL_LOG_TOOL_DETAILS=1 diatur
  • command_source: Asal perintah saat ada: builtin, custom, atau mcp. Perintah yang disediakan plugin melaporkan sebagai custom

Peristiwa respons asisten

Dicatat setelah setiap permintaan API yang mengembalikan konten teks dari model. Hanya blok teks respons yang disertakan; blok pemikiran dan blok penggunaan alat dikecualikan. Memerlukan Claude Code v2.1.193 atau lebih baru.

Nama Peristiwa: claude_code.assistant_response

Atribut:

  • Semua atribut standar
  • event.name: "assistant_response"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • response_length: Panjang teks respons dalam karakter
  • response: Teks respons, dipotong pada batas konten (60 KB secara default). Disunting menjadi <REDACTED> secara default. Atur OTEL_LOG_ASSISTANT_RESPONSES=1 untuk menyertakannya. Ketika OTEL_LOG_ASSISTANT_RESPONSES tidak diatur, OTEL_LOG_USER_PROMPTS mengontrolnya sebagai gantinya, jadi atur OTEL_LOG_ASSISTANT_RESPONSES=0 untuk menjaga respons disunting saat pencatatan prompt aktif
  • model: Pengenal model (misalnya, "claude-sonnet-5")
  • request_id: ID permintaan API, dijelaskan di bawah Atribut korelasi peristiwa
  • message.uuid: UUID entri transkrip akhir respons. Respons API disimpan sebagai satu entri transkrip per blok konten; ini adalah yang terakhir, yang parentUuid giliran berikutnya rantai dari. Memerlukan Claude Code v2.1.214 atau lebih baru
  • query_source: Subsistem yang mengeluarkan permintaan, seperti "repl_main_thread", "compact", atau nama subagen

Peristiwa hasil alat

Dicatat ketika alat menyelesaikan eksekusi. Tidak dipancarkan jika panggilan alat ditolak; lihat Peristiwa keputusan alat untuk penolakan.

Nama Peristiwa: claude_code.tool_result

Atribut:

  • Semua atribut standar
  • event.name: "tool_result"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • tool_name: Nama alat
  • tool_use_id: Pengenal unik untuk invokasi alat ini. Cocok dengan tool_use_id yang dilewatkan ke hooks, memungkinkan korelasi antara peristiwa OTel dan data yang ditangkap hook.
  • success: "true" atau "false"
  • duration_ms: Waktu eksekusi dalam milidetik
  • error_type: String kategori kesalahan ketika alat gagal, seperti "Error:ENOENT" atau "ShellError"
  • error (ketika OTEL_LOG_TOOL_DETAILS=1): Pesan kesalahan lengkap ketika alat gagal
  • decision_type: Selalu "accept", karena peristiwa ini hanya dipancarkan setelah alat berjalan. Panggilan yang ditolak tidak menghasilkan hasil alat
  • decision_source: Dari mana keputusan izin berasal. Salah satu dari "config", "hook", "user_permanent", atau "user_temporary". Lihat Peristiwa keputusan alat untuk apa arti setiap nilai. Sumber khusus penolakan "user_abort" dan "user_reject" tidak pernah muncul pada peristiwa ini.
  • tool_input_size_bytes: Ukuran input alat yang diserialisasi JSON dalam byte
  • tool_result_size_bytes: Ukuran hasil alat dalam byte
  • mcp_server_scope: Pengenal cakupan server MCP (untuk alat MCP)
  • vcs.ref.head.revision, vcs.ref.head.name, vcs.ref.head.type (ketika OTEL_LOG_TOOL_DETAILS=1): identitas commit dari run git commit yang berhasil oleh alat Bash atau PowerShell. vcs.ref.head.revision adalah SHA commit, vcs.ref.head.name adalah cabang tempat commit dilakukan, dan vcs.ref.head.type adalah branch. Nama dan jenis dihilangkan ketika commit dilakukan pada HEAD terlepas. Memerlukan Claude Code v2.1.269 atau lebih baru
  • tool_parameters (ketika OTEL_LOG_TOOL_DETAILS=1): String JSON yang berisi parameter khusus alat. Untuk server bawaan Claude Desktop, dalam sesi yang dimiliki Claude Desktop, pasangan mcp_server_name/mcp_tool_name disertakan bahkan dengan flag off, pengecualian yang sama yang ditulis host seperti Peristiwa keputusan alat, memerlukan Claude Code v2.1.214 atau lebih baru. Parameter bervariasi menurut alat:
    • Untuk alat Bash: menyertakan bash_command, full_command, timeout, description, dan dangerouslyDisableSandbox, ditambah git_commit_id dan git_branch ketika perintah git commit berhasil. git_commit_id adalah SHA commit lengkap ketika commit adalah HEAD dari direktori kerja sesi, dan SHA singkat git sebaliknya. git_branch adalah cabang tempat commit dilakukan, dihilangkan pada HEAD terlepas
    • Untuk alat Bash workspace aplikasi desktop, yang juga melaporkan tool_name sebagai Bash: menyertakan hanya bash_command, full_command, dan timeout
    • Untuk alat MCP: menyertakan mcp_server_name, mcp_tool_name
    • Untuk alat Skill: menyertakan skill_name
    • Untuk alat Agent atau alat Task warisan: menyertakan subagent_type
  • tool_input (ketika OTEL_LOG_TOOL_DETAILS=1): Argumen alat yang diserialisasi JSON. Nilai individual di atas 512 karakter dipotong, dan muatan lengkap dibatasi hingga ~4 K karakter. Berlaku untuk semua alat termasuk alat MCP.

Peristiwa permintaan API

Dicatat untuk setiap permintaan API ke Claude.

Nama Peristiwa: claude_code.api_request

Atribut:

  • Semua atribut standar
  • event.name: "api_request"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • model: Model yang digunakan (misalnya, "claude-sonnet-5")
  • cost_usd: Biaya perkiraan dalam USD
  • cost_usd_micros: Biaya perkiraan dalam jutaan dolar AS, dipancarkan sebagai integer
  • duration_ms: Durasi permintaan dalam milidetik
  • input_tokens: Jumlah token input
  • output_tokens: Jumlah token output
  • cache_read_tokens: Jumlah token yang dibaca dari cache
  • cache_creation_tokens: Jumlah token yang digunakan untuk pembuatan cache
  • request_id: ID permintaan API, seperti "req_011...", dijelaskan di bawah Atribut korelasi peristiwa.
  • client_request_id: UUID yang dihasilkan klien dikirim sebagai header permintaan x-client-request-id; lihat tabel atribut korelasi peristiwa untuk kapan ada. Memerlukan Claude Code v2.1.214 atau lebih baru
  • speed: "fast" atau "normal", menunjukkan apakah mode cepat aktif
  • query_source: Subsistem yang mengeluarkan permintaan, seperti "repl_main_thread", "compact", atau nama subagen
  • effort: Tingkat upaya yang diterapkan pada permintaan: "low", "medium", "high", "xhigh", atau "max". Tidak ada ketika Claude Code tidak mengirim tingkat upaya, misalnya pada model yang tidak mendukung upaya.
  • agent.name, skill.name, plugin.name, marketplace.name, mcp_server.name, mcp_tool.name: Atribusi skill, plugin, agen, dan MCP untuk permintaan. Lihat Penghitung biaya untuk definisi dan perilaku penyuntingan.

Peristiwa kesalahan API

Dicatat ketika permintaan API ke Claude gagal.

Nama Peristiwa: claude_code.api_error

Atribut:

  • Semua atribut standar
  • event.name: "api_error"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • model: Model yang digunakan (misalnya, "claude-sonnet-5")
  • error: Pesan kesalahan
  • status_code: Kode status HTTP sebagai angka. Tidak ada untuk kesalahan non-HTTP seperti kegagalan koneksi.
  • duration_ms: Durasi permintaan dalam milidetik
  • attempt: Jumlah total upaya yang dilakukan, termasuk permintaan awal (1 berarti tidak ada pengulangan yang terjadi)
  • request_id: ID permintaan API, seperti "req_011...", dijelaskan di bawah Atribut korelasi peristiwa.
  • client_request_id: UUID yang dihasilkan klien dikirim sebagai header permintaan x-client-request-id. Tersedia bahkan ketika kegagalan seperti timeout atau kesalahan koneksi tidak pernah menghasilkan request_id server; lihat tabel atribut korelasi peristiwa untuk kapan ada. Memerlukan Claude Code v2.1.214 atau lebih baru
  • speed: "fast" atau "normal", menunjukkan apakah mode cepat aktif
  • query_source: Subsistem yang mengeluarkan permintaan, seperti "repl_main_thread", "compact", atau nama subagen
  • effort: Tingkat upaya yang diterapkan pada permintaan. Tidak ada ketika Claude Code tidak mengirim tingkat upaya, misalnya pada model yang tidak mendukung upaya.
  • agent.name, skill.name, plugin.name, marketplace.name, mcp_server.name, mcp_tool.name: Atribusi skill, plugin, agen, dan MCP untuk permintaan. Lihat Penghitung biaya untuk definisi dan perilaku penyuntingan.

Peristiwa penolakan API

Dicatat ketika permintaan API mengembalikan stop_reason: "refusal". Penolakan tiba pada aliran respons yang berhasil daripada sebagai kesalahan HTTP, jadi peristiwa api_error tidak terbangkitkan untuk mereka. Peristiwa ini memungkinkan Anda melacak frekuensi penolakan dan mengelompokkan penolakan menurut atribut yang sama dengan api_request dan api_error.

Nama Peristiwa: claude_code.api_refusal

Atribut:

  • Semua atribut standar
  • event.name: "api_refusal"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • model: Pengenal model dari permintaan
  • request_id: ID permintaan API, seperti "req_011...", dijelaskan di bawah Atribut korelasi peristiwa.
  • query_source: Subsistem yang mengeluarkan permintaan, seperti "repl_main_thread", "compact", atau nama subagen. Lihat api_request untuk definisi.
  • speed: Baik "fast" ketika Mode cepat aktif, atau "normal"
  • attempt: Nomor upaya pengulangan. Upaya pertama adalah 1.
  • effort: Tingkat upaya yang diterapkan pada permintaan. Tidak ada ketika Claude Code tidak mengirim tingkat upaya, misalnya pada model yang tidak mendukung upaya.
  • server_fallback_hop: true ketika fallback model server-side API sudah mencoba ulang penolakan ini pada model yang berbeda, jadi pengguna tidak melihat penolakan khusus ini. false ketika permintaan berakhir dalam penolakan. Satu giliran dapat memancarkan peristiwa hop true dan peristiwa final false yang lebih baru ketika model fallback juga menolak.
  • has_category: true ketika respons API membawa stop_details.category dari "cyber", "bio", "frontier_llm", atau "reasoning_extraction". false ketika respons tidak membawa kategori atau nilai di luar set itu. Tidak ada ketika server_fallback_hop adalah true, karena blok hop tidak membawa stop_details.
  • has_explanation: true ketika respons API membawa stop_details.explanation, sebaliknya false. Tidak ada ketika server_fallback_hop adalah true.
  • category: Nilai stop_details.category dari respons API. Salah satu dari "cyber", "bio", "frontier_llm", atau "reasoning_extraction". Hanya ada ketika OTEL_LOG_TOOL_DETAILS=1 diatur dan has_category adalah true.
  • agent.name, skill.name, plugin.name, marketplace.name, mcp_server.name, mcp_tool.name: Atribusi skill, plugin, agen, dan MCP untuk permintaan. Lihat Penghitung biaya untuk definisi dan perilaku penyuntingan.

Peristiwa badan permintaan API

Dicatat untuk setiap upaya permintaan API ketika OTEL_LOG_RAW_API_BODIES diatur. Satu peristiwa dipancarkan per upaya, jadi pengulangan dengan parameter yang disesuaikan masing-masing menghasilkan peristiwa mereka sendiri.

Nama Peristiwa: claude_code.api_request_body

Atribut:

  • Semua atribut standar
  • event.name: "api_request_body"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • body: Parameter permintaan Messages API yang diserialisasi JSON, seperti prompt sistem, pesan, dan alat, dipotong pada batas konten (60 KB secara default). Konten pemikiran yang diperpanjang dalam giliran asisten sebelumnya disunting. Hanya dipancarkan dalam mode inline (OTEL_LOG_RAW_API_BODIES=1).
  • body_ref: Jalur absolut ke file <dir>/<uuid>.request.json yang berisi badan yang tidak dipotong. Hanya dipancarkan dalam mode file (OTEL_LOG_RAW_API_BODIES=file:<dir>).
  • body_length: Panjang badan yang tidak dipotong. Byte UTF-8 ketika OTEL_LOG_RAW_API_BODIES=file:<dir>, atau unit kode UTF-16 ketika =1
  • body_truncated: "true" ketika pemotongan inline terjadi. Tidak ada dalam mode file dan ketika tidak ada pemotongan yang terjadi.
  • model: Pengenal model dari parameter permintaan
  • query_source: Subsistem yang mengeluarkan permintaan (misalnya, "compact")
  • request_body_id: UUID yang mengidentifikasi badan permintaan upaya ini. Peristiwa api_response_body untuk upaya yang berhasil membawa nilai yang sama, jadi Anda dapat memasangkan respons dengan permintaan yang tepat yang menghasilkannya. Memerlukan Claude Code v2.1.274 atau lebih baru

Peristiwa badan respons API

Dicatat untuk setiap respons API yang berhasil ketika OTEL_LOG_RAW_API_BODIES diatur.

Dalam mode file (OTEL_LOG_RAW_API_BODIES=file:<dir>), Claude Code juga menambahkan satu baris JSON ke <dir>/index.jsonl untuk setiap respons yang berhasil, dengan bidang timestamp, session_id, query_source, model, request_id, message_id, message_uuid, request_file, dan response_file. Bacanya untuk menemukan file permintaan dan respons di balik pesan transkrip tertentu tanpa menanyakan backend telemetri Anda. File indeks memerlukan Claude Code v2.1.274 atau lebih baru.

Nama Peristiwa: claude_code.api_response_body

Atribut:

  • Semua atribut standar
  • event.name: "api_response_body"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • body: Respons Messages API yang diserialisasi JSON, termasuk id, blok konten, penggunaan, dan alasan berhenti, dipotong pada batas konten (60 KB secara default). Konten pemikiran yang diperpanjang disunting. Hanya dipancarkan dalam mode inline (OTEL_LOG_RAW_API_BODIES=1).
  • body_ref: Jalur absolut ke file <dir>/<request_id>.response.json yang berisi badan yang tidak dipotong. Hanya dipancarkan dalam mode file (OTEL_LOG_RAW_API_BODIES=file:<dir>).
  • body_length: Panjang badan yang tidak dipotong. Byte UTF-8 ketika OTEL_LOG_RAW_API_BODIES=file:<dir>, atau unit kode UTF-16 ketika =1
  • body_truncated: "true" ketika pemotongan inline terjadi. Tidak ada dalam mode file dan ketika tidak ada pemotongan yang terjadi.
  • model: Pengenal model
  • query_source: Subsistem yang mengeluarkan permintaan
  • request_id: ID permintaan API, seperti "req_011...", dijelaskan di bawah Atribut korelasi peristiwa.
  • request_body_id: request_body_id dari peristiwa api_request_body yang respons ini jawab. Memerlukan Claude Code v2.1.274 atau lebih baru
  • message.id: ID pesan yang API tetapkan untuk respons, bidang id dari badan respons. Memerlukan Claude Code v2.1.274 atau lebih baru
  • message.uuid: UUID entri transkrip akhir respons. Bersama dengan request_body_id, ini menghubungkan pesan transkrip dengan badan permintaan dan respons di baliknya. Memerlukan Claude Code v2.1.274 atau lebih baru

Peristiwa keputusan alat

Dicatat ketika keputusan izin alat dibuat (terima/tolak).

Nama Peristiwa: claude_code.tool_decision

Atribut:

  • Semua atribut standar
  • event.name: "tool_decision"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • tool_name: Nama alat (misalnya, "Read", "Edit", "Write", "NotebookEdit")
  • tool_use_id: Pengenal unik untuk invokasi alat ini. Cocok dengan tool_use_id yang dilewatkan ke hooks, memungkinkan korelasi antara peristiwa OTel dan data yang ditangkap hook.
  • decision: Baik "accept" atau "reject"
  • tool_source: Selalu ada. Asal alat, sebagai set nilai yang ditulis CLI tertutup. Memerlukan Claude Code v2.1.214 atau lebih baru
    • "builtin": alat CLI itu sendiri
    • "mcp": server MCP secara umum
    • "sdk_host_builtin_mcp": server in-process yang dibangun ke Claude Desktop itu sendiri, dalam sesi yang dimiliki Claude Desktop. Claude Desktop memiliki sesi yang diluncurkannya dari salah satu titik masuk miliknya sendiri, claude-desktop, claude-desktop-3p, atau local-agent, ketika sesi itu bukan anak bersarang; sesi bersarang, termasuk sesi yang Claude Code itu sendiri hasilkan, melaporkan server ini sebagai "mcp"
  • source: Dari mana keputusan berasal:
    • "config": Diputuskan secara otomatis tanpa diminta, berdasarkan pengaturan proyek, aturan izin atau tolak dalam pengaturan pribadi pengguna, kebijakan yang dikelola perusahaan, flag --allowedTools atau --disallowedTools, mode izin aktif, hibah cakupan sesi dari prompt sebelumnya dalam sesi CLI interaktif yang sama, atau karena alat itu aman secara inheren. Peristiwa tidak menunjukkan sumber mana dari ini yang cocok. Claude Code juga melaporkan "config" ketika permintaan prompt izin itu sendiri gagal, misalnya ketika callback canUseTool SDK Agent atau alat --permission-prompt-tool mengembalikan hasil yang tidak valid, atau ketika aliran input ditutup saat permintaan tertunda. Sebelum v2.1.216, Claude Code melaporkan kegagalan ini sebagai "user_reject".
    • "hook": Hook PreToolUse atau PermissionRequest mengembalikan keputusan.
    • "user_permanent": Dipancarkan ketika pengguna memilih "Ya, dan jangan tanya lagi untuk ..." di prompt izin, yang menyimpan aturan izin ke pengaturan pribadi mereka. Dalam CLI interaktif ini hanya dipancarkan untuk pilihan itu sendiri; panggilan kemudian yang cocok dengan aturan yang disimpan memancarkan "config" sebagai gantinya. Dalam sesi SDK Agent atau non-interaktif -p, baik pilihan awal maupun kecocokan aturan kemudian memancarkan "user_permanent". Diperlakukan sebagai penerimaan.
    • "user_temporary": Dipancarkan ketika pengguna memilih "Ya" di prompt izin untuk persetujuan satu kali, atau memilih opsi yang memberikan akses untuk sisa sesi pada prompt edit atau baca file. Dalam CLI interaktif ini hanya dipancarkan untuk pilihan itu sendiri; panggilan kemudian yang diizinkan oleh hibah cakupan sesi itu memancarkan "config" sebagai gantinya. Dalam sesi SDK Agent atau non-interaktif -p, baik pilihan maupun kecocokan kemudian memancarkan "user_temporary". Diperlakukan sebagai penerimaan.
    • "user_abort": Dipancarkan ketika pengguna menutup prompt izin tanpa menjawab. Dalam sesi SDK Agent dan non-interaktif -p, ini termasuk mengganggu giliran saat permintaan izin canUseTool atau --permission-prompt-tool tertunda; sebelum v2.1.216, Claude Code melaporkan gangguan itu sebagai "user_reject". Diperlakukan sebagai penolakan.
    • "user_reject": Dipancarkan ketika pengguna memilih "Tidak" saat diminta. Dalam CLI interaktif ini hanya dipancarkan untuk pilihan itu sendiri; panggilan yang cocok dengan aturan tolak dalam pengaturan pribadi pengguna memancarkan "config" sebagai gantinya. Dalam sesi SDK Agent atau non-interaktif -p, panggilan yang cocok dengan aturan tolak dalam pengaturan pribadi memancarkan "user_reject". Diperlakukan sebagai penolakan.
  • tool_parameters (ketika OTEL_LOG_TOOL_DETAILS=1): String JSON yang berisi parameter khusus alat. Bentuk yang sama dengan Peristiwa hasil alat, minus bidang pasca-eksekusi seperti git_commit_id. Nilai dapat berbeda dari tool_result untuk panggilan yang diterima jika keputusan izin menulis ulang input alat melalui updatedInput. Gunakan atribut ini untuk melihat perintah mana yang ditolak ketika decision adalah "reject".
    • Untuk alat "sdk_host_builtin_mcp": mcp_server_name dan mcp_tool_name disertakan bahkan ketika OTEL_LOG_TOOL_DETAILS off, karena aplikasi host mendefinisikan nama ini; tanpanya, panggilan yang ditolak ke salah satu server bawaan ini tidak dapat dikaitkan pada aliran default. Untuk server MCP yang dikonfigurasi pengguna, tool_name peristiwa selalu literal "mcp_tool", dan nama server dan alat muncul hanya dalam tool_parameters dengan flag on; konten argumen memerlukan flag di mana-mana. Memerlukan Claude Code v2.1.214 atau lebih baru
    • Untuk alat Bash: menyertakan bash_command, full_command, timeout, description, dangerouslyDisableSandbox. Alat bash workspace aplikasi desktop juga melaporkan tool_name sebagai Bash, tetapi hanya menyertakan bash_command, full_command, dan timeout
    • Untuk alat MCP: menyertakan mcp_server_name, mcp_tool_name
    • Untuk alat Skill: menyertakan skill_name
    • Untuk alat Agent atau alat Task warisan: menyertakan subagent_type

Peristiwa mode izin berubah

Dicatat ketika mode izin berubah, misalnya dari siklus Shift+Tab, keluar dari mode rencana, atau pemeriksaan gerbang mode otomatis.

Nama Peristiwa: claude_code.permission_mode_changed

Atribut:

  • Semua atribut standar
  • event.name: "permission_mode_changed"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • from_mode: Mode izin sebelumnya, misalnya "default", "plan", "acceptEdits", "auto", atau "bypassPermissions"
  • to_mode: Mode izin baru
  • trigger: Apa yang menyebabkan perubahan. Salah satu dari "shift_tab", "exit_plan_mode", "auto_gate_denied", atau "auto_opt_in". Tidak ada ketika transisi berasal dari SDK atau bridge

Peristiwa auth

Dicatat ketika /login atau /logout selesai.

Nama Peristiwa: claude_code.auth

Atribut:

  • Semua atribut standar
  • event.name: "auth"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • action: "login" atau "logout"
  • success: "true" atau "false"
  • auth_method: Metode autentikasi, seperti "oauth"
  • error_category: Jenis kesalahan kategori ketika tindakan gagal. Pesan kesalahan mentah tidak pernah disertakan
  • status_code: Kode status HTTP sebagai string ketika tindakan gagal dengan kesalahan HTTP

Peristiwa koneksi server MCP

Dicatat ketika server MCP terhubung, terputus, atau gagal terhubung.

Nama Peristiwa: claude_code.mcp_server_connection

Atribut:

  • Semua atribut standar
  • event.name: "mcp_server_connection"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • status: "connected", "failed", atau "disconnected"
  • transport_type: Transport server, seperti "stdio", "sse", atau "http"
  • server_scope: Cakupan server dikonfigurasi di, seperti "user", "project", atau "local"
  • duration_ms: Durasi upaya koneksi dalam milidetik
  • error_code: Kode kesalahan ketika koneksi gagal
  • is_plugin: true ketika server disediakan oleh plugin, false sebaliknya
  • plugin_id_hash (ketika is_plugin adalah true): Hash stabil dari nama plugin dan marketplace, untuk mengelompokkan peristiwa menurut plugin tanpa mengekspos nama. Claude Code menghitungnya seperti dijelaskan di bawah peristiwa plugin dimuat
  • plugin.name (ketika is_plugin adalah true): Nama plugin yang menyediakan server. Untuk plugin pihak ketiga ini adalah string literal "third-party" kecuali OTEL_LOG_TOOL_DETAILS=1; ini melindungi nama plugin pihak ketiga dari muncul dalam log secara default. Plugin dari sumber Anthropic resmi selalu diidentifikasi menurut nama. Atribut plugin_id_hash dan plugin.name mengalir ke backend pemantauan Anda sendiri dan tidak dikirim ke Anthropic
  • server_name (ketika OTEL_LOG_TOOL_DETAILS=1): Nama server yang dikonfigurasi
  • error (ketika OTEL_LOG_TOOL_DETAILS=1): Pesan kesalahan lengkap ketika koneksi gagal

Peristiwa kesalahan internal

Dicatat ketika Claude Code menangkap kesalahan internal yang tidak terduga. Hanya nama kelas kesalahan dan kode gaya errno yang dicatat. Pesan kesalahan dan stack trace tidak pernah disertakan. Peristiwa ini tidak dipancarkan saat berjalan terhadap Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry, atau ketika DISABLE_ERROR_REPORTING diatur.

Nama Peristiwa: claude_code.internal_error

Atribut:

  • Semua atribut standar
  • event.name: "internal_error"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • error_name: Nama kelas kesalahan, seperti "TypeError" atau "SyntaxError"
  • error_code: Kode errno Node.js seperti "ENOENT" saat ada pada kesalahan

Peristiwa plugin diinstal

Dicatat ketika plugin selesai diinstal, dari perintah CLI claude plugin install dan UI /plugin interaktif.

Nama Peristiwa: claude_code.plugin_installed

Atribut:

  • Semua atribut standar
  • event.name: "plugin_installed"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • marketplace.is_official: "true" jika marketplace adalah marketplace Anthropic resmi, "false" sebaliknya
  • install.trigger: "cli" atau "ui"
  • plugin.name: Nama plugin yang diinstal. Untuk marketplace pihak ketiga ini disertakan hanya ketika OTEL_LOG_TOOL_DETAILS=1
  • plugin.version: Versi plugin saat dideklarasikan dalam entri marketplace. Untuk marketplace pihak ketiga ini disertakan hanya ketika OTEL_LOG_TOOL_DETAILS=1
  • marketplace.name: Marketplace tempat plugin diinstal. Untuk marketplace pihak ketiga ini disertakan hanya ketika OTEL_LOG_TOOL_DETAILS=1

Peristiwa plugin dimuat

Dicatat sekali per plugin yang diaktifkan pada awal sesi. Gunakan peristiwa ini untuk menginventarisasi plugin mana yang aktif di seluruh armada Anda, sebagai pelengkap plugin_installed yang mencatat tindakan instalasi itu sendiri.

Nama Peristiwa: claude_code.plugin_loaded

Atribut:

  • Semua atribut standar
  • event.name: "plugin_loaded"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • plugin.name: nama plugin. Untuk plugin di luar marketplace resmi dan bundel bawaan nilainya adalah "third-party" kecuali OTEL_LOG_TOOL_DETAILS=1
  • marketplace.name: marketplace tempat plugin diinstal, saat diketahui. Disunting menjadi "third-party" di bawah kondisi yang sama dengan plugin.name
  • plugin.version: versi dari manifes plugin. Disertakan hanya ketika nama tidak disunting dan manifes mendeklarasikan versi
  • plugin.scope: kategori asal untuk plugin: "official", "community", "org", "user-local", atau "default-bundle"
  • enabled_via: bagaimana plugin menjadi diaktifkan: "default-enable", "org-policy", "admin-install", "seed-mount", atau "user-install". Nilai "admin-install" berarti plugin diatur ke wajib atau auto-install untuk organisasi Anda dalam Pengaturan Organisasi > Plugin & skill. Sebelum v2.1.246, Claude Code melaporkan plugin ini sebagai "user-install" atau "seed-mount"
  • plugin_id_hash: hash deterministik dari nama plugin dan marketplace, dikirim hanya ke eksporter yang dikonfigurasi. Memungkinkan Anda menghitung plugin pihak ketiga yang berbeda dimuat di seluruh armada tanpa merekam nama mereka. Untuk plugin yang disinkronkan dari claude.ai, Claude Code menghash nama plugin dengan nama marketplace yang claude.ai laporkan untuk plugin, atau dengan synced sebaliknya. Sebelum v2.1.246, Claude Code tidak menggunakan nama marketplace yang claude.ai laporkan dalam hash
  • has_hooks: apakah plugin berkontribusi hooks
  • has_mcp: apakah plugin berkontribusi server MCP
  • host_owned_mcp: true ketika host SDK mengelola koneksi MCP plugin ini dan Claude Code melewati membaca konfigurasi server MCP plugin, false sebaliknya. Memerlukan Claude Code v2.1.172 atau lebih baru
  • skill_path_count: jumlah direktori skill yang plugin deklarasikan
  • command_path_count: jumlah direktori perintah yang plugin deklarasikan
  • agent_path_count: jumlah direktori agen yang plugin deklarasikan
  • safe_mode: "true" ketika sesi dimulai dengan --safe-mode, "false" sebaliknya. Dalam mode aman peristiwa ini melaporkan inventaris yang dikonfigurasi hanya; perintah, skill, hooks, dan server MCP plugin tidak dimuat. Memerlukan Claude Code v2.1.169 atau lebih baru

Peristiwa skill diaktifkan

Dicatat ketika skill dipanggil, apakah Claude memanggilnya melalui alat Skill atau Anda menjalankannya sebagai perintah /.

Nama Peristiwa: claude_code.skill_activated

Atribut:

  • Semua atribut standar
  • event.name: "skill_activated"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • skill.name: Nama skill. Untuk skill yang ditentukan pengguna dan plugin pihak ketiga nilainya adalah placeholder "custom_skill" kecuali OTEL_LOG_TOOL_DETAILS=1
  • invocation_trigger: Bagaimana skill dipicu ("user-slash", "claude-proactive", atau "nested-skill")
  • skill.source: Dari mana skill dimuat (misalnya, "bundled", "userSettings", "projectSettings", "plugin")
  • skill.kind: "workflow" ketika skill adalah skill workflow. Tidak ada sebaliknya
  • plugin.name (ketika OTEL_LOG_TOOL_DETAILS=1 atau plugin dari marketplace resmi): Nama plugin pemilik ketika skill disediakan oleh plugin
  • marketplace.name (ketika OTEL_LOG_TOOL_DETAILS=1 atau plugin dari marketplace resmi): Marketplace tempat plugin pemilik diinstal, saat skill disediakan oleh plugin

Peristiwa penyebutan @

Dicatat ketika Claude Code menyelesaikan penyebutan @ dalam prompt. Tidak setiap penyebutan memancarkan peristiwa: jalur keluar awal seperti penolakan izin, file yang terlalu besar, lampiran referensi PDF, dan kegagalan daftar direktori kembali tanpa pencatatan.

Nama Peristiwa: claude_code.at_mention

Atribut:

  • Semua atribut standar
  • event.name: "at_mention"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • mention_type: Jenis penyebutan ("file", "directory", "agent", "mcp_resource", "peer"). Nilai "peer" berarti Anda menyebutkan salah satu sesi Claude Code lain Anda. Memerlukan Claude Code v2.1.232 atau lebih baru
  • success: Apakah penyebutan diselesaikan dengan berhasil ("true" atau "false")

Peristiwa pengulangan API habis

Dicatat sekali ketika permintaan API gagal setelah lebih dari satu upaya. Dipancarkan bersama peristiwa api_error akhir.

Nama Peristiwa: claude_code.api_retries_exhausted

Atribut:

  • Semua atribut standar
  • event.name: "api_retries_exhausted"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • model: Model yang digunakan
  • error: Pesan kesalahan akhir
  • status_code: Kode status HTTP sebagai angka. Tidak ada untuk kesalahan non-HTTP.
  • total_attempts: Jumlah total upaya yang dilakukan
  • total_retry_duration_ms: Total waktu dinding di seluruh upaya
  • speed: "fast" atau "normal"

Peristiwa hook terdaftar

Dicatat sekali per hook yang dikonfigurasi pada awal sesi. Gunakan peristiwa ini untuk menginventarisasi hook mana yang aktif di seluruh armada Anda, sebagai pelengkap peristiwa hook_execution_start dan hook_execution_complete per-eksekusi.

Nama Peristiwa: claude_code.hook_registered

Atribut:

  • Semua atribut standar
  • event.name: "hook_registered"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • hook_event: jenis peristiwa hook, seperti "PreToolUse" atau "PostToolUse"
  • hook_type: jenis implementasi hook: "command", "prompt", "mcp_tool", "http", atau "agent"
  • hook_source: di mana hook didefinisikan: "userSettings", "projectSettings", "localSettings", "flagSettings", "policySettings", atau "pluginHook"
  • safe_mode: "true" ketika sesi dimulai dengan --safe-mode, "false" sebaliknya. Memerlukan Claude Code v2.1.169 atau lebih baru
  • hook_matcher (ketika OTEL_LOG_TOOL_DETAILS=1): string matcher dari konfigurasi hook, saat satu diatur
  • plugin.name (ketika hook_source adalah "pluginHook"): nama plugin yang berkontribusi. Untuk plugin di luar marketplace resmi dan bundel bawaan nilainya adalah "third-party" kecuali OTEL_LOG_TOOL_DETAILS=1
  • plugin_id_hash (ketika hook_source adalah "pluginHook"): hash deterministik dari nama plugin dan marketplace, dikirim hanya ke eksporter yang dikonfigurasi. Memungkinkan Anda menghitung plugin yang berkontribusi berbeda tanpa merekam nama mereka. Claude Code menghitungnya seperti dijelaskan di bawah peristiwa plugin dimuat

Peristiwa awal eksekusi hook

Dicatat ketika satu atau lebih hook mulai mengeksekusi untuk peristiwa hook.

Nama Peristiwa: claude_code.hook_execution_start

Atribut:

  • Semua atribut standar
  • event.name: "hook_execution_start"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • hook_event: Jenis peristiwa hook, seperti "PreToolUse" atau "PostToolUse"
  • hook_name: Nama hook lengkap termasuk matcher, seperti "PreToolUse:Write"
  • num_hooks: Jumlah perintah hook yang cocok
  • managed_only: "true" ketika hanya hook kebijakan yang dikelola yang diizinkan
  • hook_source: "policySettings" atau "merged"
  • safe_mode: "true" ketika sesi dimulai dengan --safe-mode, "false" sebaliknya. Memerlukan Claude Code v2.1.169 atau lebih baru
  • hook_definitions: Konfigurasi hook yang diserialisasi JSON. Disertakan hanya ketika pelacakan beta terperinci dan OTEL_LOG_TOOL_DETAILS=1 keduanya diaktifkan

Peristiwa lengkap eksekusi hook

Dicatat ketika semua hook untuk peristiwa hook telah selesai.

Nama Peristiwa: claude_code.hook_execution_complete

Atribut:

  • Semua atribut standar
  • event.name: "hook_execution_complete"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • hook_event: Jenis peristiwa hook
  • hook_name: Nama hook lengkap termasuk matcher
  • num_hooks: Jumlah perintah hook yang cocok
  • num_success: Jumlah yang selesai dengan berhasil
  • num_blocking: Jumlah yang mengembalikan keputusan pemblokiran
  • num_non_blocking_error: Jumlah yang gagal tanpa memblokir
  • num_cancelled: Jumlah dibatalkan sebelum penyelesaian
  • total_duration_ms: Durasi dinding semua hook yang cocok
  • stdout_chars: Total karakter stdout di seluruh hook yang cocok yang berhasil. Memerlukan Claude Code v2.1.280 atau lebih baru
  • additional_context_chars: Total karakter additionalContext yang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih baru
  • system_message_chars: Total karakter systemMessage yang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih baru
  • initial_user_message_chars: Total karakter initialUserMessage yang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih baru
  • num_outputs_persisted: Jumlah output hook di atas batas 10.000 karakter yang Claude Code simpan ke file. Memerlukan Claude Code v2.1.280 atau lebih baru
  • managed_only: "true" ketika hanya hook kebijakan yang dikelola yang diizinkan
  • hook_source: "policySettings" atau "merged"
  • safe_mode: "true" ketika sesi dimulai dengan --safe-mode, "false" sebaliknya. Memerlukan Claude Code v2.1.169 atau lebih baru
  • hook_definitions: Konfigurasi hook yang diserialisasi JSON. Disertakan hanya ketika pelacakan beta terperinci dan OTEL_LOG_TOOL_DETAILS=1 keduanya diaktifkan

Peristiwa metrik plugin hook

Dicatat ketika hook plugin marketplace resmi memancarkan metrik per-invokasi. Hanya plugin yang diinstal dari marketplace Anthropic resmi yang dapat memancarkan ini. Plugin marketplace pihak ketiga dan hook yang dikonfigurasi pengguna tidak memancarkan ke peristiwa ini. Gunakan peristiwa ini untuk memantau perilaku plugin seperti tingkat penemuan, biaya, dan durasi dari stack observabilitas Anda sendiri.

Nama Peristiwa: claude_code.hook_plugin_metrics

Atribut:

  • Semua atribut standar
  • event.name: "hook_plugin_metrics"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • plugin_id: pengenal plugin dalam bentuk <name>@<marketplace>
  • hook_event: jenis peristiwa hook yang memancarkan metrik
  • Hingga 20 kunci metrik yang dipancarkan plugin. Nama cocok dengan ^[a-z][a-z0-9_]{0,39}$. Nilai adalah boolean atau angka.

Peristiwa pemadatan

Dicatat ketika pemadatan percakapan selesai.

Nama Peristiwa: claude_code.compaction

Atribut:

  • Semua atribut standar
  • event.name: "compaction"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • trigger: "auto" atau "manual"
  • success: "true" atau "false"
  • duration_ms: Durasi pemadatan
  • pre_tokens: Jumlah token perkiraan sebelum pemadatan
  • post_tokens: Jumlah token perkiraan setelah pemadatan
  • error: Pesan kesalahan ketika pemadatan gagal
  • precompute_reuse: Hanya diatur ketika trigger adalah "manual". Pemadatan otomatis dapat menyiapkan ringkasan di latar belakang sebelum jendela konteks penuh, dan atribut ini mencatat apakah /compact menggunakan kembali ringkasan yang disiapkan itu. "hit" berarti itu digunakan kembali; "miss_custom_instructions", "miss_hook", dan "miss_not_ready" memberikan alasan ringkasan segar dihitung sebagai gantinya. Memerlukan Claude Code v2.1.153 atau lebih baru

Peristiwa subagen selesai

Dicatat ketika subagen selesai dan mengembalikan hasilnya ke percakapan yang memulainya. Gunakan untuk menggabungkan penggunaan alat dan waktu run menurut jenis subagen; untuk penggabungan token atau biaya, gunakan penghitung token dan penghitung biaya yang disaring ke query_source "subagent", karena total_tokens peristiwa ini mencakup hanya permintaan akhir. Kategori "subagent" juga menghitung permintaan dari hook berbasis agen, yang tidak memancarkan peristiwa subagen.

Nama Peristiwa: claude_code.subagent_completed

Atribut:

  • Semua atribut standar
  • event.name: "subagent_completed"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • agent_type: Jenis subagen. Nama agen bawaan dan agen dari plugin marketplace resmi muncul verbatim; nama agen lainnya diganti dengan "custom" kecuali OTEL_LOG_TOOL_DETAILS=1 diatur
  • agent.source: Dari mana definisi agen berasal: built-in, plugin, atau sumber pengaturan yang mendefinisikan agen kustom, seperti userSettings atau projectSettings
  • is_built_in: Apakah subagen adalah jenis agen bawaan
  • is_async: Apakah subagen berjalan di latar belakang
  • total_tokens: Jejak token dari permintaan API akhir subagen: token input, pembuatan cache, pembacaan cache, dan output permintaan itu saja, kira-kira ukuran konteks subagen saat penyelesaian. Bukan jumlah di seluruh run
  • total_tool_uses: Jumlah panggilan alat yang dibuat subagen di seluruh run
  • duration_ms: Waktu run dalam milidetik
  • model: Model yang diselesaikan subagen untuk dijalankan
  • final_model: Model yang menghasilkan respons akhir subagen, yang berbeda dari model setelah switch mid-run seperti fallback. Memerlukan Claude Code v2.1.212 atau lebih baru
  • model_swapped: Apakah lebih dari satu model melayani permintaan subagen. Memerlukan Claude Code v2.1.212 atau lebih baru
  • plugin_id_hash, plugin.name: Ada untuk agen yang disediakan plugin. Nama plugin marketplace resmi muncul verbatim; nama plugin lainnya diganti dengan "third-party" kecuali OTEL_LOG_TOOL_DETAILS=1 diatur

Peristiwa survei umpan balik

Dicatat ketika survei kualitas sesi ditampilkan atau dijawab. Lihat Survei kualitas sesi untuk apa yang dikumpulkan survei dan cara mengontrolnya.

Nama Peristiwa: claude_code.feedback_survey

Atribut:

  • Semua atribut standar
  • event.name: "feedback_survey"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • event_type: Peristiwa siklus hidup survei, misalnya "appeared", "responded", atau "transcript_prompt_appeared"
  • appearance_id: ID unik yang menghubungkan peristiwa yang dipancarkan untuk satu instance survei
  • survey_type: Survei mana yang menghasilkan peristiwa. "session" adalah prompt rating "Bagaimana Claude melakukannya?"
  • response: Pilihan pengguna pada peristiwa responded
  • enabled_via_override: true ketika CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL diatur. Dipancarkan sebagai boolean, bukan string. Ada pada peristiwa survei session. Filter pada atribut ini untuk mengkonfirmasi override diterapkan di seluruh armada

Peristiwa sapuan retensi

Dicatat sekali per run sapuan pembersihan retensi, yang menghapus transkrip sesi dan data aplikasi lainnya lebih lama dari pengaturan cleanupPeriodDays. Claude Code menjalankan sapuan di latar belakang paling banyak sekali per sesi, dan run yang tidak menghapus apa pun masih memancarkan peristiwa. Jika Claude Code menjalankan sapuan dalam sesi apa pun pada mesin yang sama dalam 24 jam terakhir, itu menunda sapuan sesi ini setidaknya 10 menit, jadi sesi yang keluar lebih cepat tidak memancarkan apa pun. Ketika Anda menjalankan claude -p dengan --bare, Claude Code tidak menjalankan sapuan dan tidak memancarkan apa pun.

Seperti setiap peristiwa OTel di halaman ini, itu hanya pergi ke backend telemetri yang Anda konfigurasi. Memerlukan Claude Code v2.1.227 atau lebih baru.

Ketika Claude Code tidak dapat dengan aman menentukan periode retensi, itu menjeda sapuan dan memancarkan peristiwa dengan result diatur ke "skipped" dan skip_reason. Ketika pengaturan yang dikelola menetapkan cleanupPeriodDays, nilai yang dikelola menjepit periode retensi dan sapuan berjalan bahkan ketika file pengaturan dalam cakupan prioritas lebih rendah rusak atau tidak valid. Ketika managed-settings.json itu sendiri tidak dapat dibaca, Claude Code masih menjeda sapuan kecuali tingkat yang dikelola memasok cleanupPeriodDays dari tempat lain, seperti pengaturan yang dikelola server atau drop-in managed-settings.d/ di samping file yang rusak. Atribut penghitung penghapusan ada hanya ketika result adalah "complete".

Nama Peristiwa: claude_code.retention_sweep

Atribut:

  • Semua atribut standar
  • event.name: "retention_sweep"
  • event.timestamp: Timestamp ISO 8601
  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa
  • result: "complete" ketika sapuan berjalan, "skipped" ketika Claude Code menjeda itu
  • period_days: Nilai cleanupPeriodDays dari pengaturan yang digabungkan, dalam hari, atau 30 ketika tidak ada sumber yang menetapkannya. Pada peristiwa yang dilewati, nilai yang akan digunakan sapuan, dihitung dari sumber pengaturan yang dapat dibaca Claude Code
  • used_default: "true" ketika tidak ada sumber pengaturan yang dapat dibaca yang menetapkan cleanupPeriodDays, "false" sebaliknya. Pada peristiwa lengkap, "true" berarti default 30 hari diterapkan
  • skip_reason: Mengapa Claude Code menjeda sapuan. Ada hanya ketika result adalah "skipped":
    • "user_source_disabled": Pengaturan pengguna dikecualikan, misalnya oleh flag --setting-sources atau opsi settingSources SDK, dan tidak ada sumber yang diaktifkan yang menyediakan cleanupPeriodDays
    • "settings_unknowable": File pengaturan tidak dapat dibaca atau diuraikan, jadi cleanupPeriodDays atau desktopSessionCleanupPeriodDays mungkin diatur ke nilai yang tidak dapat dilihat Claude Code
    • "settings_invalid_key_set": Pengaturan memiliki kesalahan validasi dan cleanupPeriodDays atau desktopSessionCleanupPeriodDays secara eksplisit diatur, jadi kembali ke default dapat menghapus atau menyimpan file terhadap pengaturan itu
  • transcripts_deleted: Jumlah transkrip sesi, file ~/.claude/projects/*/*.jsonl tingkat atas, yang dihapus sapuan
  • transcripts_exempted_desktop: Jumlah transkrip melewati periode retensi yang disimpan sapuan di bawah aturan Claude Desktop dan Cowork. Ini tidak dihitung menuju files_past_cutoff. Memerlukan Claude Code v2.1.248 atau lebih baru
  • session_files_deleted: Jumlah artefak yang dihapus sapuan file sesi: transkrip ditambah file pendamping per-sesi seperti sidecars, rekaman, dan hasil alat
  • artifacts_deleted: Total item yang dihapus sapuan di seluruh direktori data yang dicakupnya, termasuk file sesi. Beberapa sapuan menghitung pohon direktori yang dihapus seluruhnya sebagai satu item dan beberapa pass pembersihan tidak berkontribusi pada penghitung, jadi perlakukan nilai sebagai lantai daripada hitungan file yang tepat
  • files_retained_fresh: File yang diperiksa dan ditinggalkan di tempat karena masih dalam periode retensi. Hanya sapuan per-file yang menghitung ini, jadi nilainya adalah lantai; nilai bukan nol adalah keadaan stabil normal
  • files_past_cutoff: File lebih lama dari periode retensi yang gagal dihapus sapuan, misalnya karena kesalahan izin atau file yang dipegang terbuka. Nilai di atas nol berarti file melampaui periode retensi yang dikonfigurasi; nol bukan bukti bahwa tidak ada, karena penghapusan yang gagal dari seluruh direktori dihitung menuju error_count sebagai gantinya
  • error_count: Jumlah kesalahan yang dihadapi sapuan saat mendaftar atau menghapus file

Peristiwa pengaturan yang dikelola diselesaikan

Dicatat dengan pengaturan yang dikelola yang diselesaikan sesi: sekali pada awal sesi, lagi ketika pengaturan yang dikelola atau pembantu kebijakan berubah keadaannya selama sesi, dan ketika Claude Code menolak untuk memulai atau mengakhiri sesi untuk salah satu alasan yang tercantum atribut error.type. Gunakan peristiwa ini untuk menemukan mesin yang berjalan pada sumber yang dikelola yang tidak terduga, mesin yang pembantu kebijakan-nya gagal, dan alasan mesin menolak untuk memulai. Memerlukan Claude Code v2.1.274 atau lebih baru.

Secara default, peristiwa membawa sumber yang dikelola dan keadaan pembantu kebijakan tetapi bukan pengaturan itu sendiri. Untuk menambahkan atribut managed_settings.settings yang disunting dan digest managed_settings.resolved_sha256, atur OTEL_LOG_MANAGED_SETTINGS=1:

  • Aturnya dalam blok env pengaturan yang dikelola, pengaturan pengguna, atau --settings, atau dalam lingkungan tempat Anda meluncurkan Claude Code. Nilai dalam pengaturan proyek atau lokal tidak mengaktifkannya, karena repositori yang diklon dapat menulisnya.
  • Pengaturan yang dikelola server dapat menetapkannya tanpa menampilkan dialog persetujuan keamanan, karena variabel hanya menambahkan kebijakan yang disunting organisasi Anda ke peristiwa yang organisasi Anda sudah terima.

Dalam sesi interaktif dalam folder yang belum Anda percayai, Claude Code tidak mengekspor peristiwa penolakan.

Nama Peristiwa: claude_code.managed_settings_resolved

Atribut:

  • Semua atribut standar

  • event.name: "managed_settings_resolved"

  • event.timestamp: Timestamp ISO 8601

  • event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwa

  • managed_settings.trigger: "startup" untuk peristiwa awal sesi, "change" ketika pengaturan yang dikelola atau keadaan pembantu kebijakan berubah nanti dalam sesi, atau "refused" ketika kebijakan pengaturan yang dikelola menghentikan sesi. Claude Code mengirim peristiwa change hanya ketika atribut berbeda dari peristiwa terakhir yang dikirimnya, dan nilai pengaturan yang berubah dihitung bahkan ketika OTEL_LOG_MANAGED_SETTINGS off

  • error.type: mengapa Claude Code menghentikan sesi. Ada hanya pada peristiwa refused:

    • "helper_failed": run pembantu kebijakan gagal
    • "policy_invalid": pengaturan yang dikelola berisi kesalahan yang menghentikan Claude Code dari memulai, atau sumber admin gagal dimuat, jadi Claude Code tidak dapat memeriksa penegakan login organisasi
    • "consent_rejected": pengguna menolak dialog persetujuan keamanan untuk pengaturan yang dikelola server
    • "force_refresh_failed": pengambilan pengaturan yang forceRemoteSettingsRefresh perlukan gagal
    • "gateway_rejected": gateway aplikasi Claude menjawab beban pengaturan yang dikelola dengan HTTP 403
    • "version_below_minimum": versi Claude Code ini di bawah requiredMinimumVersion atau di atas requiredMaximumVersion
    • "_OTHER": beban pengaturan yang dikelola gateway aplikasi Claude gagal karena alasan lain
  • managed_settings.sources: setiap sumber yang dikelola yang memberikan setidaknya satu kunci kebijakan, prioritas tertinggi terlebih dahulu, termasuk sumber yang kuncinya tidak berlaku di bawah first-wins. Nilai adalah "remote", "plist" atau "hklm" untuk kebijakan MDM atau tingkat OS, "file" untuk file pengaturan yang dikelola dan drop-in, "parent" ketika host embedding memasok pengaturan, dan "hkcu" untuk nilai registri Windows HKCU ketika Claude Code membacanya. Sumber yang hanya membawa kunci kontrol, atau yang tidak dapat dibaca Claude Code, tidak terdaftar. Dipancarkan sebagai array string, kosong ketika tidak ada sumber yang dikelola memberikan kunci kebijakan

  • managed_settings.source_behavior: nilai managedSourcesBehavior yang dibaca Claude Code, "first-wins" atau "merge". "first-wins" ketika tidak ada sumber yang menetapkan kunci

  • managed_settings.helper.state: keadaan pembantu kebijakan yang sumber MDM atau file yang dipilih konfigurasi:

    • "ok": output pembantu berfungsi sebagai pengaturan yang dikelola
    • "bad_path", "not_a_file", "exit_nonzero", "timed_out", "oversize", "parse_failed", "envelope_invalid", atau "schema_rejected": run terakhir pembantu gagal. Kegagalan pembantu menjelaskan kasus
    • "none": tidak ada pembantu yang dikonfigurasi, atau sumber yang mengonfigurasinya bukan kebijakan MDM atau file pengaturan yang dikelola
  • managed_settings.helper.applied: "output" sementara output pembantu itu sendiri berfungsi sebagai pengaturan yang dikelola, "none" ketika tidak

  • managed_settings.helper.entry: "policyHelper" ketika Claude Code memilih policyHelper. Tidak ada ketika tidak memilih pembantu

  • managed_settings.helper.path: path yang dikonfigurasi pembantu. Ada kapan pun Claude Code memilih pembantu, apakah atau tidak OTEL_LOG_MANAGED_SETTINGS diatur

  • managed_settings.resolved_sha256 (ketika OTEL_LOG_MANAGED_SETTINGS=1): SHA-256 dari pengaturan yang dikelola yang diselesaikan sebelum penyuntingan, diserialisasi sebagai JSON dengan kunci yang diurutkan secara rekursif dan tanpa spasi. Mesin dengan digest yang sama menjalankan kebijakan yang sama. Claude Code mengirim digest hanya dengan opt-in karena kebijakan pendek dapat dipulihkan dengan menghash tebakan. Tidak ada ketika tidak ada pengaturan yang dikelola yang diselesaikan, dan pada peristiwa refused

  • managed_settings.settings (ketika OTEL_LOG_MANAGED_SETTINGS=1): nama dan bentuk pengaturan yang dikelola yang diselesaikan sebagai string JSON, dengan nilai yang disunting. Tidak ada pada peristiwa refused. Claude Code membangunnya dari skema pengaturannya:

    • Nama pengaturan yang skema deklarasikan diekspor, dan kunci yang tidak dideklarasikan ditinggalkan
    • Boolean, angka, dan nilai string yang skema batasi ke set opsi tetap, seperti permissions.defaultMode, diekspor apa adanya. sandbox.network.httpProxyPort dan sandbox.network.socksProxyPort diekspor sebagai "[REDACTED]"
    • Setiap string lainnya, seperti model, apiKeyHelper, setiap nilai env, setiap URL, dan setiap perintah, diekspor sebagai "[REDACTED]"
    • Nama entri peta, seperti nama variabel env dan ID plugin, diekspor apa adanya. Pengaturan yang entri-nya skema tidak ketik, seperti vimInsertModeRemaps, diekspor sebagai "[REDACTED]" tunggal, dan sandbox.ignoreViolations diekspor sebagai daftar daftar path-nya tanpa pola perintah
    • Daftar menyimpan panjangnya, dengan setiap entri disunting oleh aturan yang sama
    • Aturan permissions.allow, permissions.deny, atau permissions.ask diekspor sebagai nama alat-nya dengan konten yang disunting, seperti Read([REDACTED]), ketika alat dibangun ke versi Claude Code ini atau merupakan referensi mcp__ seperti mcp__jira__create_issue. Aturan lainnya diekspor sebagai "[REDACTED]"
    • Hook mengikuti aturan yang sama, jadi bidang opsi tetap dan numerik seperti type dan timeout menunjukkan, sementara setiap perintah, URL, matcher, dan kondisi if diekspor sebagai "[REDACTED]"

    Misalnya, pengaturan yang dikelola dengan apiKeyHelper, dua variabel env, dan aturan tolak diekspor sebagai {"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}.

    Claude Code memotong nilai pada 8 KB UTF-8, dan nilai yang dipotong bukan JSON yang valid

  • managed_settings.settings_truncated (ketika managed_settings.settings ada): true ketika Claude Code memotong managed_settings.settings pada 8 KB, false sebaliknya. Dipancarkan sebagai boolean, bukan string

Menafsirkan data metrik dan acara

Metrik dan acara yang diekspor mendukung berbagai analisis:

Pemantauan penggunaan

Metrik Peluang Analisis
claude_code.token.usage Pecahkan berdasarkan type (input/output), pengguna, tim, model, skill.name, plugin.name, atau agent.name
claude_code.session.count Lacak adopsi dan keterlibatan dari waktu ke waktu
claude_code.lines_of_code.count Ukur produktivitas dengan melacak penambahan dan penghapusan kode, dipecah berdasarkan model
claude_code.commit.count & claude_code.pull_request.count Pahami dampak pada alur kerja pengembangan

Pemantauan biaya

Metrik claude_code.cost.usage membantu dengan:

  • Melacak tren penggunaan di seluruh tim atau individu
  • Mengidentifikasi sesi penggunaan tinggi untuk optimasi
  • Atribusi pengeluaran ke skill, plugin, atau jenis subagent tertentu melalui atribut skill.name, plugin.name, dan agent.name

Claude Code menghitung setiap respons streaming terhadap metrik biaya dan token tepat sekali, termasuk ketika gateway atau proxy di belakang ANTHROPIC_BASE_URL melakukan streaming penggunaan secara progresif di beberapa frame. Sebelum v2.1.214, stream yang membawa penggunaan di lebih dari satu frame menginflasi claude_code.cost.usage dan claude_code.token.usage dengan kira-kira satu permintaan penuh tambahan per frame tambahan.

Peringatan dan segmentasi

Peringatan umum untuk dipertimbangkan:

  • Lonjakan biaya
  • Konsumsi token yang tidak biasa
  • Volume sesi tinggi dari pengguna tertentu

Semua metrik dapat disegmentasikan berdasarkan atribut standar. Atribut model tersedia pada claude_code.token.usage, claude_code.cost.usage, dan dari v2.1.172, claude_code.lines_of_code.count.

Rincian per-model dari commit hanya dapat didekati dengan menggabungkan terhadap metrik token atau biaya pada session.id, karena satu sesi dapat mencakup beberapa model. Filter sisi token atau biaya ke baris di mana query_source adalah "main" sehingga permintaan auxiliary dan subagent tidak mengatribusikan commit sesi ke model yang tidak membuatnya.

Deteksi kelelahan retry

Claude Code mencoba ulang permintaan API yang gagal secara internal dan hanya memancarkan acara claude_code.api_error tunggal setelah menyerah, jadi acara itu sendiri adalah sinyal terminal untuk permintaan tersebut. Upaya retry perantara tidak dicatat sebagai acara terpisah.

Atribut attempt pada acara mencatat berapa banyak upaya yang dilakukan secara total. CLAUDE_CODE_MAX_RETRIES default ke 10 dan dibatasi pada 15. Pada v2.1.199 atau lebih baru, Anda dapat mengatur CLAUDE_CODE_RETRY_WATCHDOG untuk menaikkan default dan menghapus batas.

Ketika permintaan menghabiskan semua retry pada kesalahan transien, attempt sama dengan satu lebih dari batas efektif tersebut: 11 secara default, dan tidak pernah lebih dari 16 kecuali watchdog diatur. Nilai yang lebih rendah menunjukkan kesalahan yang tidak dapat dicoba ulang seperti respons 400, atau penyebab dengan anggaran retry yang lebih kecil. Misalnya, Claude Code mencoba ulang kegagalan untuk memuat kredensial AWS atau Google Cloud paling banyak dua kali.

Untuk membedakan sesi yang pulih dari sesi yang terhenti, kelompokkan acara berdasarkan session.id dan periksa apakah acara api_request yang lebih baru ada setelah kesalahan.

Analisis acara

Data acara memberikan wawasan terperinci tentang interaksi Claude Code:

Pola Penggunaan Alat: analisis acara hasil alat untuk mengidentifikasi:

  • Alat yang paling sering digunakan
  • Tingkat keberhasilan alat
  • Waktu eksekusi alat rata-rata
  • Pola kesalahan berdasarkan jenis alat

Pemantauan Kinerja: lacak durasi permintaan API dan waktu eksekusi alat untuk mengidentifikasi hambatan kinerja.

Audit acara keamanan

Acara OpenTelemetry adalah sumber data audit untuk aktivitas Claude Code. Setiap acara membawa atribut identitas yang menghubungkan panggilan alat, aktivitas MCP, dan keputusan izin kembali ke pengguna yang memicunya. Pengekspor log OTLP dapat mengirimkan acara ini ke platform Security Information and Event Management (SIEM) apa pun dengan penerima OTLP, atau ke OpenTelemetry Collector yang meneruskan ke SIEM Anda.

Atribut tindakan untuk pengguna

Atribut standar pada setiap acara mencakup identitas pengguna yang diautentikasi: user.email, user.account_uuid, user.account_id, dan organization.id saat masuk dengan akun Claude atau, dalam sesi cloud, ketika kredensial sesi itu sendiri membawanya, ditambah user.id dan session.id per-sesi. user.id adalah pengidentifikasi berskop instalasi, kecuali pada sesi Claude apps gateway, di mana ini adalah subjek IdP dari token yang dikeluarkan gateway.

Dalam sesi yang dimulai pengembang, panggilan alat MCP, perintah Bash, dan pengeditan file oleh karena itu dikaitkan dengan pengembang tersebut. Claude Code tidak bertindak di bawah akun layanan terpisah di sana; identitas yang dicatat pada setiap acara adalah akun Claude pengembang itu sendiri, atau identitas IdP pengembang pada sesi Claude apps gateway. Dalam sesi saluran Claude Tag, Claude bekerja sebagai identitas bersama organisasi Anda.

Saat Claude Code diautentikasi dengan kunci API langsung, atau terhadap Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry, tidak ada akun Claude dalam sesi dan hanya user.id dan session.id yang diisi. Dalam penerapan ini, lampirkan identitas pengguna sendiri dengan OTEL_RESOURCE_ATTRIBUTES, atur per pengguna melalui file pengaturan terkelola atau pembungkus peluncuran. Sesi Claude apps gateway tidak memerlukan apa pun dari ini: CLI mencap identitas IdP secara otomatis, seperti yang dijelaskan dalam Atribut standar.

export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."

Audit aktivitas MCP

Untuk menangkap aktivitas server MCP dengan detail panggilan lengkap, aktifkan pengekspor log dan atur OTEL_LOG_TOOL_DETAILS=1. Setiap operasi MCP kemudian menghasilkan acara terstruktur yang membawa nama server, nama alat, dan argumen panggilan bersama atribut identitas standar:

Acara Apa yang dicatat untuk MCP
mcp_server_connection Server terhubung, terputus, dan kegagalan koneksi dengan server_name, transport_type, server_scope, dan detail kesalahan
tool_result Setiap panggilan alat MCP dengan tool_name dan mcp_server_scope, muatan tool_parameters yang berisi mcp_server_name dan mcp_tool_name, dan muatan tool_input yang berisi argumen panggilan
tool_decision Apakah panggilan diizinkan atau ditolak, apakah keputusan berasal dari config, hook, atau pengguna, dan muatan tool_parameters yang berisi mcp_server_name dan mcp_tool_name

Tanpa OTEL_LOG_TOOL_DETAILS, acara ini menghilangkan detail pengidentifikasi:

  • tool_result: menyimpan mcp_server_scope dan tool_name diredaksi ke literal "mcp_tool" untuk server yang dikonfigurasi pengguna, menghilangkan konten argumen. Untuk server bawaan Claude Desktop, dalam sesi yang dimiliki Claude Desktop, ini juga menyimpan pasangan mcp_server_name/mcp_tool_name di dalam tool_parameters, pengecualian yang sama yang dipengaruhi host seperti tool_decision, memerlukan Claude Code v2.1.214 atau lebih baru
  • tool_decision: menyimpan tool_source dan tool_name diredaksi ke literal "mcp_tool" untuk server yang dikonfigurasi pengguna, menghilangkan konten argumen. Untuk server bawaan Claude Desktop, dalam sesi yang dimiliki Claude Desktop, ini juga menyimpan pasangan mcp_server_name/mcp_tool_name di dalam tool_parameters; tool_source dan pasangan nama keduanya memerlukan Claude Code v2.1.214 atau lebih baru
  • mcp_server_connection: menghilangkan server_name dan pesan kesalahan, tetapi menyimpan is_plugin, plugin_id_hash, dan plugin.name, dengan nama plugin non-Anthropic diredaksi ke literal "third-party", sehingga server yang disediakan plugin tetap dapat dibedakan tanpa pencatatan terperinci

Peta pertanyaan keamanan ke acara

Saat membangun aturan deteksi, cari sinyal yang ingin Anda pantau dan kueri backend Anda untuk acara dan atribut yang sesuai:

Sinyal Acara Atribut Kunci
Panggilan alat diizinkan atau ditolak, dan oleh apa tool_decision decision, source, tool_name, tool_parameters
Eskalasi mode izin permission_mode_changed from_mode, to_mode, trigger
Hook kebijakan memblokir tindakan hook_execution_complete hook_event, num_blocking
Login, logout, dan kegagalan autentikasi auth action, success, error_category
Server MCP terhubung atau gagal mcp_server_connection status, server_name, is_plugin, error_code
Plugin diinstal dan sumbernya plugin_installed plugin.name, marketplace.name, marketplace.is_official
Perintah yang dijalankan dan file yang disentuh tool_result (dieksekusi) atau tool_decision (ditolak) dengan OTEL_LOG_TOOL_DETAILS=1 tool_parameters; tool_input (tool_result saja)
Sumber pengaturan terkelola mana yang dijalankan mesin, apakah pembantu kebijakan sehat, dan mengapa mesin menolak untuk memulai managed_settings_resolved managed_settings.trigger, managed_settings.sources, managed_settings.source_behavior, managed_settings.helper.state, error.type; managed_settings.settings dan managed_settings.resolved_sha256 dengan OTEL_LOG_MANAGED_SETTINGS=1

Claude Code memancarkan aliran acara mentah saja. Deteksi anomali, baselining, korelasi lintas sesi, dan peringatan adalah tanggung jawab backend SIEM atau observabilitas Anda.

Kirim acara ke SIEM

Arahkan OTEL_EXPORTER_OTLP_LOGS_ENDPOINT ke penerima OTLP SIEM Anda, atau ke OpenTelemetry Collector yang meneruskan ke API ingest asli SIEM Anda. Contoh pengaturan terkelola berikut mengekspor acara saja, dengan detail alat lengkap diaktifkan untuk audit MCP dan Bash:

{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_LOGS_EXPORTER": "otlp",
    "OTEL_LOG_TOOL_DETAILS": "1",
    "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": "http/protobuf",
    "OTEL_EXPORTER_OTLP_LOGS_ENDPOINT": "https://siem.example.com:4318/v1/logs",
    "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer your-siem-token"
  }
}

Untuk mengonfirmasi acara tiba, kirimkan prompt dalam sesi yang berjalan di bawah konfigurasi ini dan periksa SIEM Anda untuk acara claude_code.user_prompt. Jika tidak ada yang tiba, jalankan Claude Code dengan claude --debug-file <path> dan periksa log itu untuk kesalahan ekspor [3P telemetry].

Pertimbangan backend

Pilihan backend metrik, log, dan traces Anda menentukan jenis analisis yang dapat Anda lakukan:

Untuk metrik

  • Database deret waktu: Perhitungan laju, metrik agregat
  • Toko kolumnar: Kueri kompleks, analisis pengguna unik
  • Platform observabilitas lengkap: Kueri lanjutan, visualisasi, peringatan

Untuk acara/log

  • Sistem agregasi log: Pencarian teks lengkap, analisis log
  • Toko kolumnar: Analisis acara terstruktur
  • Platform observabilitas lengkap: Korelasi antara metrik dan acara

Untuk traces

Pilih backend yang mendukung penyimpanan distributed trace dan korelasi span:

  • Sistem distributed tracing: Visualisasi span, request waterfalls, analisis latensi
  • Platform observabilitas lengkap: Pencarian trace dan korelasi dengan metrik dan log

Untuk organisasi yang memerlukan metrik Pengguna Aktif Harian/Mingguan/Bulanan (DAU/WAU/MAU), pertimbangkan backend yang mendukung kueri nilai unik yang efisien.

Informasi layanan

Semua metrik dan acara diekspor dengan atribut sumber daya berikut:

  • service.name: claude-code untuk sesi terminal, claude-code-desktop untuk sesi yang dimulai dari tab Code di aplikasi Claude Desktop
  • service.version: Versi Claude Code saat ini, atau versi aplikasi Desktop untuk sesi tab Code
  • os.type: Jenis sistem operasi (misalnya, linux, darwin, windows)
  • os.version: String versi sistem operasi
  • host.arch: Arsitektur host (misalnya, amd64, arm64)
  • wsl.version: Nomor versi WSL (hanya ada saat berjalan di Windows Subsystem for Linux)
  • Nama Meter: com.anthropic.claude_code

Jika pipeline pengumpul atau dasbor Anda memfilter pada service.name = claude-code, tambahkan claude-code-desktop ke filter untuk juga menangkap telemetri dari sesi tab Code.

Sumber daya pengukuran ROI

Untuk panduan komprehensif tentang mengukur pengembalian investasi untuk Claude Code, termasuk pengaturan telemetri, analisis biaya, metrik produktivitas, dan pelaporan otomatis, lihat Panduan Pengukuran ROI Claude Code. Repositori ini menyediakan konfigurasi Docker Compose siap pakai, pengaturan Prometheus dan OpenTelemetry, dan template untuk menghasilkan laporan produktivitas yang terintegrasi dengan alat seperti Linear.

Keamanan dan privasi

  • Ekspor OpenTelemetry ke backend Anda adalah opt-in dan memerlukan konfigurasi eksplisit. Untuk telemetri operasional terpisah Anthropic dan cara menonaktifkannya, lihat Penggunaan data
  • Konten file mentah dan cuplikan kode tidak disertakan dalam metrik atau acara. Trace spans adalah jalur data terpisah: lihat poin OTEL_LOG_TOOL_CONTENT di bawah
  • Saat diautentikasi melalui OAuth, user.email disertakan dalam atribut telemetri, dikirim hanya ke titik akhir OTel yang Anda konfigurasikan, tidak pernah ke Anthropic. Jika ini menjadi perhatian bagi organisasi Anda, bekerja dengan backend telemetri Anda untuk memfilter atau menyunting bidang ini
  • Konten prompt pengguna tidak dikumpulkan secara default. Hanya panjang prompt yang dicatat. Untuk menyertakan konten prompt, atur OTEL_LOG_USER_PROMPTS=1. Di bawah detailed beta tracing, variabel ini menjangkau lebih jauh daripada teks prompt: variabel ini juga mengontrol atribut span new_context, yang membawa hasil alat pada span claude_code.llm_request
  • Teks respons asisten tidak dikumpulkan secara default. Hanya panjang respons yang dicatat. Untuk menyertakan teks respons, atur OTEL_LOG_ASSISTANT_RESPONSES=1. Seperti semua data OpenTelemetry dari Claude Code, teks respons dikirim hanya ke titik akhir OTel yang Anda konfigurasikan, tidak pernah ke Anthropic. Ketika variabel ini tidak diatur, OTEL_LOG_USER_PROMPTS digunakan sebagai fallback, jadi atur OTEL_LOG_ASSISTANT_RESPONSES=0 jika Anda menginginkan konten prompt tanpa konten respons
  • Argumen input alat dan parameter tidak dicatat secara default. Untuk menyertakannya, atur OTEL_LOG_TOOL_DETAILS=1. Untuk server bawaan Claude Desktop, dalam sesi yang dimiliki Claude Desktop, tool_decision dan tool_result membawa pasangan mcp_server_name/mcp_tool_name, nama yang ditulis host daripada konten argumen, bahkan dengan flag mati. Pengecualian memerlukan Claude Code v2.1.214 atau lebih baru. Data ini dikirim hanya ke titik akhir OTEL yang Anda konfigurasikan, tidak pernah ke Anthropic. Argumen mungkin masih berisi nilai sensitif, jadi konfigurasikan backend telemetri Anda untuk memfilter atau menyunting atribut ini sesuai kebutuhan. Saat diaktifkan:
    • Acara tool_result dan tool_decision menyertakan atribut tool_parameters dengan perintah Bash, nama server MCP dan alat, dan nama skill. Bidang seperti full_command dipancarkan tanpa pemotongan
    • Acara tool_result juga menyertakan atribut tool_input dengan jalur file, URL, pola pencarian, dan argumen lainnya. Nilai individual di atas 512 karakter dipotong dan total dibatasi hingga ~4 K karakter
    • Acara user_prompt menyertakan command_name verbatim untuk perintah custom, plugin, dan MCP
    • Penghitung biaya dan token dan acara api_request, api_error, dan api_refusal membawa nama agen, skill, plugin, dan server MCP dan alat yang sebenarnya dalam atribut atribusi mereka
    • Trace spans menyertakan atribut tool_input yang sama dan atribut yang diturunkan dari input seperti file_path, dengan pemotongan yang sama dengan tool_input
  • Konten alat tidak dicatat dalam trace spans secara default. Untuk menyertakannya, atur OTEL_LOG_TOOL_CONTENT=1. Span claude_code.tool kemudian membawa acara span tool.output dengan konten file mentah, output perintah Bash, dan apa yang dikembalikan alat MCP, WebFetch, dan WebSearch, dipotong pada batas konten (60 KB secara default) per atribut. Hasil dari alat MCP, WebFetch, dan WebSearch memerlukan Claude Code v2.1.283 atau lebih baru. Konten alat juga menjangkau spans melalui new_context, yang gatenya berbeda per span. Konfigurasikan backend telemetri Anda untuk memfilter atau menyunting atribut ini sesuai kebutuhan
  • Badan permintaan dan respons API Anthropic Messages mentah tidak dicatat secara default. Untuk menyertakannya, atur OTEL_LOG_RAW_API_BODIES di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Ini diabaikan dalam pengaturan proyek dan lokal. Badan berisi riwayat percakapan lengkap, termasuk system prompt, setiap giliran pengguna dan asisten sebelumnya, dan hasil alat, jadi mengaktifkan ini menyiratkan persetujuan untuk semua yang akan diungkapkan oleh flag konten OTEL_LOG_* lainnya. Claude Code selalu menyunting konten extended-thinking Claude dari badan ini, terlepas dari pengaturan lain. Nilai yang Anda atur menentukan bagaimana Claude Code mengirimkan badan:
    • Dengan =1, Claude Code memancarkan acara log api_request_body dan api_response_body untuk setiap panggilan API. Atribut body acara membawa muatan yang diserialisasi JSON, dipotong pada batas konten (60 KB secara default)

    • Dengan =file:<dir>, Claude Code menulis badan yang tidak dipotong ke file .request.json dan .response.json di bawah direktori tersebut, dan acara membawa jalur body_ref sebagai gantinya dari badan inline. Kirim direktori dengan pengumpul log atau sidecar daripada melalui aliran telemetri.

      Untuk setiap respons yang berhasil, Claude Code juga menambahkan satu baris ke index.jsonl di direktori tersebut, menghubungkan file respons ke file permintaan yang menghasilkannya dan ke pesan transkrip yang menjadi. Setiap baris tidak menyimpan konten pesan, dan bagian acara badan respons API mencantumkan bidangnya. File indeks memerlukan Claude Code v2.1.274 atau lebih baru

Memantau Claude Code di Amazon Bedrock

Untuk panduan pemantauan penggunaan Claude Code terperinci untuk Amazon Bedrock, lihat Claude Code Monitoring Implementation (Amazon Bedrock).