Untuk Claude API atau Managed Agents, lihat OpenTelemetry untuk Claude API.
Mulai cepat
Konfigurasikan OpenTelemetry menggunakan variabel lingkungan: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:.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 variabelOTEL_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, atauOTEL_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, danOTEL_TRACES_EXPORTERbeta 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_EXPORTERmengikuti 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_ENDPOINTalih-alih melalui pengekspor log dan jejak. Claude Code oleh karena itu menghapusBETA_TRACING_ENDPOINTyang 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_TELEMETRYdimatikan
BETA_TRACING_ENDPOINTyang ditetapkan pengembang mengarahkan ulang log dan jejak yang diekspor pelacakan beta terperinci bahkan ketika pengaturan terkelola menyematkan kolektor.
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, sepertiOTEL_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.
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 melaluiOTEL_EXPORTER_OTLP_PROTOCOL atau penggantian spesifik sinyal. Konfigurasi yang sama berlaku untuk metrik, log, dan jejak.
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:
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, aturCLAUDE_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.
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 rootclaude_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 -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 atributspan.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
claude_code.llm_request
Setiap upaya percobaan ulang juga dicatat sebagai event span
gen_ai.request.attempt dengan atribut attempt dan client_request_id.
claude_code.tool
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 saat berjalan agar pesan yang sedang menunggu dapat mencapai Claude. Hasil yang tiba kemudian juga tidak dicatat. Untuk mengetahui kapan Claude Code memindahkan panggilan, lihat Kapan Claude Code mengirim apa yang Anda antrekan untuk terminal dan field
priorityuntuk sesi Agent SDK
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
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
claude_code.tool.execution
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 konten di bawah tracing beta terperinci
Atribut tambahan yang membawa konten seperti
new_context, system_reminders, system_prompt_preview, user_system_prompt, tool_input, dan response.model_output dipancarkan hanya ketika tracing beta terperinci aktif. Atribut-atribut ini bukan bagian dari skema span yang stabil.Gerbang oleh menamai variabel yang dibutuhkan atribut di atas tracing beta terperinci. Nilai yang lebih panjang dari batas konten (60 KB secara default) dipotong.
Di bawah tracing beta terperinci dengan
OTEL_LOG_USER_PROMPTS=1, Claude Code juga memancarkan event claude_code.system_prompt yang membawa system prompt lengkap, dipotong pada batas konten. Event ini tiba pertama kali sebuah sesi mengirim setiap system prompt yang berbeda, dan lagi setelah compaction.
Header dinamis
Untuk lingkungan perusahaan yang memerlukan autentikasi dinamis, Anda dapat mengonfigurasi skrip untuk menghasilkan header secara dinamis. Header dinamis berlaku hanya untuk protokolhttp/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:
Persyaratan skrip
Skrip harus menampilkan JSON yang valid dengan pasangan kunci-nilai string yang mewakili header HTTP:- 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
--debugatau setelah menjalankan/debugdalam 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 lingkunganCLAUDE_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 lingkunganOTEL_RESOURCE_ATTRIBUTES:
- Filter metrik berdasarkan tim atau departemen
- Lacak biaya per pusat biaya
- Buat dashboard khusus tim
- Atur peringatan untuk tim tertentu
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.
Atribusikan telemetri ke sesi SSH Desktop
Untuk melihat di mesin jarak jauh mana sebuah sesi SSH Desktop berjalan, beri nama setiap mesin dalam atribut kustom. Metrik dan event tidak menyebutkan mesin tempat sebuah sesi berjalan. Di setiap mesin jarak jauh, tambahkanOTEL_RESOURCE_ATTRIBUTES ke blok env yang mengaktifkan telemetri, dalam file pengaturan terkelola yang dibaca sesi. Tuliskan namanya secara eksplisit di file setiap mesin. Claude Code tidak mengekspansi nilai tersebut, sehingga host.name=$(hostname) tiba sebagai karakter-karakter itu apa adanya.
Contoh berikut menamai mesin build-7:
host.name tiba di blok sumber daya, dalam sesi SSH Desktop dan di CLI pada mesin tersebut. Untuk tempat lain atribut kustom muncul, lihat Dukungan organisasi multi-tim.
Jika nama tersebut tidak tiba, periksa salah satu penyebab berikut:
- Anda menetapkannya di komputer yang menjalankan Desktop: Desktop tidak meneruskan nilai yang Anda tetapkan di sana ke sesi SSH
- Anda mengekspornya di file login: hanya login shell yang membaca file seperti
/etc/profile. Nilai yang Andaexportdi sana mencapai Claude Code yang Anda mulai dari login shell. Nilai tersebut tidak mencapai sesi SSH Desktop, karena Desktop tidak memulai Claude Code melalui login shell. - Sebuah nilai mengandung spasi: Claude Code kemudian tidak menyalin satu pun kunci ke event atau titik data dan tidak melaporkan error. Hapus spasi dari nilai tersebut.
- Sesuatu yang lain sudah menetapkan variabel tersebut: dalam sesi yang dimulai oleh aplikasi desktop, variabel yang sudah ditetapkan di lingkungan peluncuran diutamakan daripada file pengaturan. Log debug menyebutkan setiap variabel yang diabaikan. Ketika deployment Desktop pihak ketiga menyebutkan endpoint OTLP dalam lingkungan yang disediakannya, lingkungan tersebut membawa
OTEL_RESOURCE_ATTRIBUTESmilik Desktop sendiri.
Konfigurasi contoh
Atur variabel lingkungan ini sebelum menjalankanclaude. 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:
http://localhost:9464/metrics:
/metrics miliknya sendiri sebagai gantinya.
Untuk mengirim metrik ke beberapa eksporter:
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, aturCLAUDE_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
envdari 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.
OTEL_EXPORTER_OTLP_HEADERS. Rahasia jaringan di lingkungan juga tidak membantu, karena ekspor telemetri Claude Code sendiri adalah salah satu dari permintaan yang tidak pernah mendapatkan rahasia tersebut. Jika kolektor Anda memerlukan kredensial, konfigurasikan seluruh ekspor melalui pengaturan terkelola server sebagai gantinya, karena ketika Anda menetapkan kredensial di sana, Claude Code menghapus variabel endpoint 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_ENDPOINTAnda 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
envyang dikelola server tidak mengonfigurasi telemetri mereka.
Atribut telemetri ke sesi cloud
Secara default, metrik dan acara dari sesi cloud membawa atribut standar, termasuksession.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 membawaapp.entrypoint, yang nilainya adalahclaude-in-slackuntuk sesi Claude Tag. - Tambahkan atribut kustom: atur
OTEL_RESOURCE_ATTRIBUTESdi tempat yang sama di mana Anda menetapkan variabelOTEL_*lainnya untuk sesi tersebut. Jika Andaexportdi 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.
user.* untuk mengidentifikasi siapa yang menandai Claude.
Metrik dan peristiwa yang tersedia
Atribut standar
Semua metrik dan peristiwa berbagi atribut standar ini:
Dalam sesi yang masuk ke gateway aplikasi Claude melalui
/login, CLI memberi stempel ekspor dengan identitas terautentikasi: user.id adalah subjek IdP, 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.
Event yang dicatat Claude Code sebelum pengembang masuk tidak memuat identitas gateway. Ketika Claude Code membuka sesi dalam keadaan keluar dari gateway, misalnya setelah gateway mengakhiri proses masuk, event startup yang dicatat sebelum masuk memuat
user.id anonim dan tidak memuat identity.source. Event ini mencakup managed_settings_resolved, plugin_loaded, dan mcp_server_connection.telemetry 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 stringworkflow.run_id: pengidentifikasi run, dengan awalanwf_, pada event API dan tool yang dipancarkan oleh agent yang termasuk dalam run tool Workflow. Memfilter event berdasarkan satuworkflow.run_idmerekonstruksi permintaan API dan hasil tool dari run tersebut. Pengidentifikasi ini mencakup agent yang dibuat oleh skrip workflow dan agent apa pun yang selanjutnya dibuat oleh agent tersebut, seperti pemanggilan skill. Nilainya cocok dengan pengidentifikasi run yang dilaporkan dalam hasil tool Workflow. Tidak ada pada semua event lainnya.workflow.name: nama workflow, yaitumeta.namedari skripnya, dipancarkan bersamaworkflow.run_id. Nama workflow bawaan muncul apa adanya ketika run mengeksekusi skrip bawaan yang tidak dimodifikasi. Nama yang dibuat pengguna, termasuk salinan skrip bawaan yang telah diedit, diganti dengancustomkecualiOTEL_LOG_TOOL_DETAILS=1ditetapkan.
Atribut repositori
AturOTEL_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:
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.
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 dashboardclaude 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:- Semua atribut standar
Penghitung commit
Ditingkatkan saat membuat git commit melalui Claude Code. Atribut:- Semua atribut standar
Penghitung biaya
Ditingkatkan setelah setiap permintaan API. Atributagent.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 sebaliknyaeffort: 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 denganOTEL_LOG_TOOL_DETAILS=1diatur. 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 denganmcp_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"). Jenis"input"tidak mencakup token yang dibaca dari atau ditulis ke prompt cache, yang dihitung di bawah"cacheRead"dan"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 sebaliknyaeffort: 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 (ketikaOTEL_LOGS_EXPORTER dikonfigurasi):
Atribut korelasi peristiwa
Ketika pengguna mengirimkan prompt, Claude Code dapat membuat beberapa panggilan API dan menjalankan beberapa alat. Atributprompt.id memungkinkan Anda menghubungkan semua peristiwa tersebut kembali ke prompt tunggal yang memicunya.
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.uuidpadauser_prompt,assistant_response, danapi_response_bodyrequest_idpada peristiwa API, disimpan sebagairequestIdpada entri asisten transkriptool_use_idpada peristiwatool_resultdantool_decision
Peristiwa prompt pengguna
Dicatat ketika prompt dikirimkan, termasuk pada giliran yang dimulai Claude Code dengan sendirinya. Nama Peristiwa:claude_code.user_prompt
Atribut:
- Semua atribut standar
event.name:"user_prompt"event.timestamp: Timestamp ISO 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwaprompt_length: Panjang promptprompt: Konten prompt. Disunting secara default. AturOTEL_LOG_USER_PROMPTS=1untuk menyertakannyaprompt_text: Nilai yang sama denganprompt, disamarkan dengan ketentuan yang sama. Backend yang menyimpan nama atribut bertitik sebagai objek bersarang membacaprompt.idsebagaiiddi dalam objek bernamapromptdan dapat kehilangan string prompt. Bacalahprompt_textpada backend tersebut. Memerlukan Claude Code v2.1.287 atau yang lebih barumessage.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 barucommand_name: Nama perintah ketika prompt memanggil satu. Nama perintah bawaan dan bundel seperticompactataudebugdipancarkan apa adanya; alias sepertiresetdipancarkan seperti yang diketik daripada nama kanonik. Nama perintah kustom, plugin, dan MCP runtuh menjadicustomataumcpkecualiOTEL_LOG_TOOL_DETAILS=1diaturcommand_source: Asal perintah saat ada:builtin,custom, ataumcp. Perintah yang disediakan plugin melaporkan sebagaicustom
Peristiwa respons asisten
Dicatat setelah setiap permintaan API yang mengembalikan konten teks dari model. Hanya blok teks dari respons yang disertakan; thinking block dan blok tool-use dikecualikan. Nama Peristiwa:claude_code.assistant_response
Atribut:
- Semua atribut standar
event.name:"assistant_response"event.timestamp: Timestamp ISO 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwaresponse_length: Panjang teks respons dalam karakterresponse: Teks respons, dipotong pada batas konten (60 KB secara default). Disunting menjadi<REDACTED>secara default. AturOTEL_LOG_ASSISTANT_RESPONSES=1untuk menyertakannya. KetikaOTEL_LOG_ASSISTANT_RESPONSEStidak diatur,OTEL_LOG_USER_PROMPTSmengontrolnya sebagai gantinya, jadi aturOTEL_LOG_ASSISTANT_RESPONSES=0untuk menjaga respons disunting saat pencatatan prompt aktifmodel: Pengenal model (misalnya, “claude-sonnet-5”)request_id: ID permintaan API, dijelaskan di bawah Atribut korelasi peristiwamessage.uuid: UUID entri transkrip akhir respons. Respons API disimpan sebagai satu entri transkrip per blok konten; ini adalah yang terakhir, yangparentUuidgiliran berikutnya rantai dari. Memerlukan Claude Code v2.1.214 atau lebih baruquery_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwatool_name: Nama alattool_use_id: Pengenal unik untuk invokasi alat ini. Cocok dengantool_use_idyang dilewatkan ke hooks, memungkinkan korelasi antara peristiwa OTel dan data yang ditangkap hook.success:"true"atau"false"duration_ms: Waktu eksekusi dalam milidetikerror_type: String kategori kesalahan ketika alat gagal, seperti"Error:ENOENT"atau"ShellError"error(ketikaOTEL_LOG_TOOL_DETAILS=1): Pesan kesalahan lengkap ketika alat gagaldecision_type: Selalu"accept", karena peristiwa ini hanya dipancarkan setelah alat berjalan. Panggilan yang ditolak tidak menghasilkan hasil alatdecision_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 bytetool_result_size_bytes: Ukuran hasil alat dalam bytemcp_server_scope: Pengenal cakupan server MCP (untuk alat MCP)vcs.ref.head.revision,vcs.ref.head.name,vcs.ref.head.type(ketikaOTEL_LOG_TOOL_DETAILS=1): identitas commit dari rungit commityang berhasil oleh alat Bash atau PowerShell.vcs.ref.head.revisionadalah SHA commit,vcs.ref.head.nameadalah cabang tempat commit dilakukan, danvcs.ref.head.typeadalahbranch. Nama dan jenis dihilangkan ketika commit dilakukan pada HEAD terlepas. Memerlukan Claude Code v2.1.269 atau lebih barutool_parameters(ketikaOTEL_LOG_TOOL_DETAILS=1): String JSON yang berisi parameter khusus alat. Untuk server bawaan Claude Desktop, dalam sesi yang dimiliki Claude Desktop, pasanganmcp_server_name/mcp_tool_namedisertakan 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, dandangerouslyDisableSandbox, ditambahgit_commit_iddangit_branchketika perintahgit commitberhasil.git_commit_idadalah SHA commit lengkap ketika commit adalah HEAD dari direktori kerja sesi, dan SHA singkat git sebaliknya.git_branchadalah cabang tempat commit dilakukan, dihilangkan pada HEAD terlepas - Untuk alat Bash workspace aplikasi desktop, yang juga melaporkan
tool_namesebagaiBash: menyertakan hanyabash_command,full_command, dantimeout - 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
- Untuk alat Bash: menyertakan
tool_input(ketikaOTEL_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwamodel: Model yang digunakan (misalnya, “claude-sonnet-5”)cost_usd: Biaya perkiraan dalam USDcost_usd_micros: Biaya perkiraan dalam jutaan dolar AS, dipancarkan sebagai integerduration_ms: Durasi permintaan dalam milidetikinput_tokens: Jumlah token input, tidak termasuk token yang dibaca dari atau ditulis ke prompt cacheoutput_tokens: Jumlah token outputcache_read_tokens: Jumlah token yang dibaca dari cachecache_creation_tokens: Jumlah token yang digunakan untuk pembuatan cacherequest_id: ID permintaan API, seperti"req_011...", dijelaskan di bawah Atribut korelasi peristiwa.client_request_id: UUID yang dihasilkan klien dikirim sebagai header permintaanx-client-request-id; lihat tabel atribut korelasi peristiwa untuk kapan ada. Memerlukan Claude Code v2.1.214 atau lebih baruspeed:"fast"atau"normal", menunjukkan apakah mode cepat aktifquery_source: Subsistem yang mengeluarkan permintaan, seperti"repl_main_thread","compact", atau nama subageneffort: 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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwamodel: Model yang digunakan (misalnya, “claude-sonnet-5”)error: Pesan kesalahanstatus_code: Kode status HTTP sebagai angka. Tidak ada untuk kesalahan non-HTTP seperti kegagalan koneksi.duration_ms: Durasi permintaan dalam milidetikattempt: Jumlah percobaan yang dilakukan, termasuk permintaan awal. Mendeteksi retry yang habis menjelaskan kapan hitungan dimulai lagirequest_id: ID permintaan API, seperti"req_011...", dijelaskan di bawah Atribut korelasi peristiwa.client_request_id: UUID yang dihasilkan klien dikirim sebagai header permintaanx-client-request-id. Tersedia bahkan ketika kegagalan seperti timeout atau kesalahan koneksi tidak pernah menghasilkanrequest_idserver; lihat tabel atribut korelasi peristiwa untuk kapan ada. Memerlukan Claude Code v2.1.214 atau lebih baruspeed:"fast"atau"normal", menunjukkan apakah mode cepat aktifquery_source: Subsistem yang mengeluarkan permintaan, seperti"repl_main_thread","compact", atau nama subageneffort: 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 mengembalikanstop_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwamodel: Pengenal model dari permintaanrequest_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. Lihatapi_requestuntuk definisi.speed: Baik"fast"ketika Mode cepat aktif, atau"normal"attempt: Nomor upaya pengulangan. Upaya pertama adalah1.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:trueketika fallback model server-side API sudah mencoba ulang penolakan ini pada model yang berbeda, jadi pengguna tidak melihat penolakan khusus ini.falseketika permintaan berakhir dalam penolakan. Satu giliran dapat memancarkan peristiwa hoptruedan peristiwa finalfalseyang lebih baru ketika model fallback juga menolak.has_category:trueketika respons API membawastop_details.categorydari"cyber","bio","frontier_llm", atau"reasoning_extraction".falseketika respons tidak membawa kategori atau nilai di luar set itu. Tidak ada ketikaserver_fallback_hopadalahtrue, karena blok hop tidak membawastop_details.has_explanation:trueketika respons API membawastop_details.explanation, sebaliknyafalse. Tidak ada ketikaserver_fallback_hopadalahtrue.category: Nilaistop_details.categorydari respons API. Salah satu dari"cyber","bio","frontier_llm", atau"reasoning_extraction". Hanya ada ketikaOTEL_LOG_TOOL_DETAILS=1diatur danhas_categoryadalahtrue.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 ketikaOTEL_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwabody: 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.jsonyang 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 ketikaOTEL_LOG_RAW_API_BODIES=file:<dir>, atau unit kode UTF-16 ketika=1body_truncated:"true"ketika pemotongan inline terjadi. Tidak ada dalam mode file dan ketika tidak ada pemotongan yang terjadi.model: Pengenal model dari parameter permintaanquery_source: Subsistem yang mengeluarkan permintaan (misalnya,"compact")request_body_id: UUID yang mengidentifikasi badan permintaan upaya ini. Peristiwaapi_response_bodyuntuk 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 ketikaOTEL_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwabody: 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.jsonyang 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 ketikaOTEL_LOG_RAW_API_BODIES=file:<dir>, atau unit kode UTF-16 ketika=1body_truncated:"true"ketika pemotongan inline terjadi. Tidak ada dalam mode file dan ketika tidak ada pemotongan yang terjadi.model: Pengenal modelquery_source: Subsistem yang mengeluarkan permintaanrequest_id: ID permintaan API, seperti"req_011...", dijelaskan di bawah Atribut korelasi peristiwa.request_body_id:request_body_iddari peristiwaapi_request_bodyyang respons ini jawab. Memerlukan Claude Code v2.1.274 atau lebih barumessage.id: ID pesan yang API tetapkan untuk respons, bidangiddari badan respons. Memerlukan Claude Code v2.1.274 atau lebih barumessage.uuid: UUID entri transkrip akhir respons. Bersama denganrequest_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwatool_name: Nama alat (misalnya, “Read”, “Edit”, “Write”, “NotebookEdit”)tool_use_id: Pengenal unik untuk invokasi alat ini. Cocok dengantool_use_idyang 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, ataulocal-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--allowedToolsatau--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 callbackcanUseToolSDK Agent atau alat--permission-prompt-toolmengembalikan 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": HookPreToolUseatauPermissionRequestmengembalikan 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 izincanUseToolatau--permission-prompt-tooltertunda; 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(ketikaOTEL_LOG_TOOL_DETAILS=1): String JSON yang berisi parameter khusus alat. Bentuk yang sama dengan Peristiwa hasil alat, minus bidang pasca-eksekusi sepertigit_commit_id. Nilai dapat berbeda daritool_resultuntuk panggilan yang diterima jika keputusan izin menulis ulang input alat melaluiupdatedInput. Gunakan atribut ini untuk melihat perintah mana yang ditolak ketikadecisionadalah"reject".- Untuk alat
"sdk_host_builtin_mcp":mcp_server_namedanmcp_tool_namedisertakan bahkan ketikaOTEL_LOG_TOOL_DETAILSoff, 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_nameperistiwa selalu literal"mcp_tool", dan nama server dan alat muncul hanya dalamtool_parametersdengan 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 melaporkantool_namesebagaiBash, tetapi hanya menyertakanbash_command,full_command, dantimeout - 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
- Untuk alat
Peristiwa mode izin berubah
Dicatat ketika mode izin berubah, misalnya dari siklusShift+Tab, keluar dari plan mode, atau pemeriksaan gerbang auto mode.
Nama Peristiwa: claude_code.permission_mode_changed
Atribut:
- Semua atribut standar
event.name:"permission_mode_changed"event.timestamp: Timestamp ISO 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwafrom_mode: Mode izin sebelumnya, misalnya"default","plan","acceptEdits","auto", atau"bypassPermissions"to_mode: Mode izin barutrigger: 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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwaaction:"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 disertakanstatus_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwastatus:"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 milidetikerror_code: Kode kesalahan ketika koneksi gagalis_plugin:trueketika server disediakan oleh plugin,falsesebaliknyaplugin_id_hash(ketikais_pluginadalahtrue): Hash stabil dari nama plugin dan marketplace, untuk mengelompokkan peristiwa menurut plugin tanpa mengekspos nama. Claude Code menghitungnya seperti dijelaskan di bawah peristiwa plugin dimuatplugin.name(ketikais_pluginadalahtrue): Nama plugin yang menyediakan server. Untuk plugin pihak ketiga ini adalah string literal"third-party"kecualiOTEL_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. Atributplugin_id_hashdanplugin.namemengalir ke backend pemantauan Anda sendiri dan tidak dikirim ke Anthropicserver_name(ketikaOTEL_LOG_TOOL_DETAILS=1): Nama server yang dikonfigurasierror(ketikaOTEL_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 ketikaDISABLE_ERROR_REPORTING diatur.
Nama Peristiwa: claude_code.internal_error
Atribut:
- Semua atribut standar
event.name:"internal_error"event.timestamp: Timestamp ISO 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwaerror_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 CLIclaude plugin install dan UI /plugin interaktif.
Nama Peristiwa: claude_code.plugin_installed
Atribut:
- Semua atribut standar
event.name:"plugin_installed"event.timestamp: Timestamp ISO 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwamarketplace.is_official:"true"jika marketplace adalah marketplace Anthropic resmi,"false"sebaliknyainstall.trigger:"cli"atau"ui"plugin.name: Nama plugin yang diinstal. Untuk marketplace pihak ketiga ini disertakan hanya ketikaOTEL_LOG_TOOL_DETAILS=1plugin.version: Versi plugin saat dideklarasikan dalam entri marketplace. Untuk marketplace pihak ketiga ini disertakan hanya ketikaOTEL_LOG_TOOL_DETAILS=1marketplace.name: Marketplace tempat plugin diinstal. Untuk marketplace pihak ketiga ini disertakan hanya ketikaOTEL_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 pelengkapplugin_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwaplugin.name: nama plugin. Untuk plugin di luar marketplace resmi dan bundel bawaan nilainya adalah"third-party"kecualiOTEL_LOG_TOOL_DETAILS=1marketplace.name: marketplace tempat plugin diinstal, saat diketahui. Disunting menjadi"third-party"di bawah kondisi yang sama denganplugin.nameplugin.version: versi dari manifes plugin. Disertakan hanya ketika nama tidak disunting dan manifes mendeklarasikan versiplugin.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 dengansyncedsebaliknya. Sebelum v2.1.246, Claude Code tidak menggunakan nama marketplace yang claude.ai laporkan dalam hashhas_hooks: apakah plugin berkontribusi hookshas_mcp: apakah plugin berkontribusi server MCPhost_owned_mcp:trueketika host SDK mengelola koneksi MCP plugin ini dan Claude Code melewati pembacaan konfigurasi server MCP plugin,falsejika tidakskill_path_count: jumlah direktori skill yang plugin deklarasikancommand_path_count: jumlah direktori perintah yang plugin deklarasikanagent_path_count: jumlah direktori agen yang plugin deklarasikansafe_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwaskill.name: Nama skill. Untuk skill yang ditentukan pengguna dan plugin pihak ketiga nilainya adalah placeholder"custom_skill"kecualiOTEL_LOG_TOOL_DETAILS=1invocation_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 sebaliknyaplugin.name(ketikaOTEL_LOG_TOOL_DETAILS=1atau plugin dari marketplace resmi): Nama plugin pemilik ketika skill disediakan oleh pluginmarketplace.name(ketikaOTEL_LOG_TOOL_DETAILS=1atau 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.
Setiap kali Claude Code membaca prompt, Claude Code mencatat paling banyak 100 event dengan mention_type berupa "agent" dan 100 dengan "mcp_resource". Mention yang melewati salah satu batas tersebut tetap diresolusi tetapi tidak memancarkan event.
Nama Peristiwa: claude_code.at_mention
Atribut:
- Semua atribut standar
event.name:"at_mention"event.timestamp: Timestamp ISO 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwamention_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 barusuccess: 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 peristiwaapi_error akhir.
Nama Peristiwa: claude_code.api_retries_exhausted
Atribut:
- Semua atribut standar
event.name:"api_retries_exhausted"event.timestamp: Timestamp ISO 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwamodel: Model yang digunakanerror: Pesan kesalahan akhirstatus_code: Kode status HTTP sebagai angka. Tidak ada untuk kesalahan non-HTTP.total_attempts: Jumlah total upaya yang dilakukantotal_retry_duration_ms: Total waktu dinding di seluruh upayaspeed:"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 peristiwahook_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwahook_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 baruhook_matcher(ketikaOTEL_LOG_TOOL_DETAILS=1): string matcher dari konfigurasi hook, saat satu diaturplugin.name(ketikahook_sourceadalah"pluginHook"): nama plugin yang berkontribusi. Untuk plugin di luar marketplace resmi dan bundel bawaan nilainya adalah"third-party"kecualiOTEL_LOG_TOOL_DETAILS=1plugin_id_hash(ketikahook_sourceadalah"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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwahook_event: Jenis peristiwa hook, seperti"PreToolUse"atau"PostToolUse"hook_name: Nama hook lengkap termasuk matcher, seperti"PreToolUse:Write"num_hooks: Jumlah perintah hook yang cocokmanaged_only:"true"ketika hanya hook kebijakan yang dikelola yang diizinkanhook_source:"policySettings"atau"merged"safe_mode:"true"ketika sesi dimulai dengan--safe-mode,"false"sebaliknya. Memerlukan Claude Code v2.1.169 atau lebih baruhook_definitions: Konfigurasi hook yang diserialisasi JSON. Disertakan hanya ketika pelacakan beta terperinci danOTEL_LOG_TOOL_DETAILS=1keduanya 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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwahook_event: Jenis peristiwa hookhook_name: Nama hook lengkap termasuk matchernum_hooks: Jumlah perintah hook yang cocoknum_success: Jumlah yang selesai dengan berhasilnum_blocking: Jumlah yang mengembalikan keputusan pemblokirannum_non_blocking_error: Jumlah yang gagal tanpa memblokirnum_cancelled: Jumlah dibatalkan sebelum penyelesaiantotal_duration_ms: Durasi dinding semua hook yang cocokstdout_chars: Total karakter stdout di seluruh hook yang cocok yang berhasil. Memerlukan Claude Code v2.1.280 atau lebih baruadditional_context_chars: Total karakteradditionalContextyang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih barusystem_message_chars: Total karaktersystemMessageyang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih baruinitial_user_message_chars: Total karakterinitialUserMessageyang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih barunum_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 barumanaged_only:"true"ketika hanya hook kebijakan yang dikelola yang diizinkanhook_source:"policySettings"atau"merged"safe_mode:"true"ketika sesi dimulai dengan--safe-mode,"false"sebaliknya. Memerlukan Claude Code v2.1.169 atau lebih baruhook_definitions: Konfigurasi hook yang diserialisasi JSON. Disertakan hanya ketika pelacakan beta terperinci danOTEL_LOG_TOOL_DETAILS=1keduanya 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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwaplugin_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 berupa 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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwatrigger:"auto"atau"manual"success:"true"atau"false"duration_ms: Durasi pemadatanpre_tokens: Jumlah token perkiraan sebelum pemadatanpost_tokens: Jumlah token perkiraan setelah pemadatanerror: Pesan kesalahan ketika pemadatan gagalprecompute_reuse: Hanya ditetapkan ketikatriggerbernilai"manual"atau untuk idle compaction, yang melaporkantriggersebagai"auto". Auto-compaction dapat menyiapkan ringkasan di latar belakang sebelum context window penuh, dan atribut ini mencatat apakah compaction menggunakan kembali ringkasan yang telah disiapkan tersebut."hit"berarti ringkasan tersebut digunakan kembali;"miss_custom_instructions","miss_hook", dan"miss_not_ready"memberikan alasan mengapa ringkasan baru dihitung sebagai gantinya
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 kequery_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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwaagent_type: Jenis subagen. Nama agen bawaan dan agen dari plugin marketplace resmi muncul verbatim; nama agen lainnya diganti dengan"custom"kecualiOTEL_LOG_TOOL_DETAILS=1diaturagent.source: Dari mana definisi agen berasal:built-in,plugin, atau sumber pengaturan yang mendefinisikan agen kustom, sepertiuserSettingsatauprojectSettingsis_built_in: Apakah subagen adalah jenis agen bawaanis_async: Apakah subagen berjalan di latar belakangtotal_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 runtotal_tool_uses: Jumlah panggilan alat yang dibuat subagen di seluruh runduration_ms: Waktu run dalam milidetikmodel: Model yang diselesaikan subagen untuk dijalankanfinal_model: Model yang menghasilkan respons akhir subagen, yang berbeda darimodelsetelah switch mid-run seperti fallback. Memerlukan Claude Code v2.1.212 atau lebih barumodel_swapped: Apakah lebih dari satu model melayani permintaan subagen. Memerlukan Claude Code v2.1.212 atau lebih baruplugin_id_hash,plugin.name: Ada untuk agen yang disediakan plugin. Nama plugin marketplace resmi muncul verbatim; nama plugin lainnya diganti dengan"third-party"kecualiOTEL_LOG_TOOL_DETAILS=1diatur
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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwaevent_type: Peristiwa siklus hidup survei, misalnya"appeared","responded", atau"transcript_prompt_appeared"appearance_id: ID unik yang menghubungkan peristiwa yang dipancarkan untuk satu instance surveisurvey_type: Survei mana yang menghasilkan peristiwa."session"adalah prompt rating “Bagaimana Claude melakukannya?”response: Pilihan pengguna pada peristiwarespondedenabled_via_override:truesaatCLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTELdiatur. Dipancarkan sebagai Boolean, bukan string. Ada pada event surveisession. Filter berdasarkan atribut ini untuk memastikan 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 pengaturancleanupPeriodDays. 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 8601event.sequence: penghitung per-proses untuk mengurutkan peristiwa, dijelaskan di bawah Atribut korelasi peristiwaresult:"complete"ketika sapuan berjalan,"skipped"ketika Claude Code menjeda ituperiod_days: NilaicleanupPeriodDaysdari pengaturan yang digabungkan, dalam hari, atau30ketika tidak ada sumber yang menetapkannya. Pada peristiwa yang dilewati, nilai yang akan digunakan sapuan, dihitung dari sumber pengaturan yang dapat dibaca Claude Codeused_default:"true"ketika tidak ada sumber pengaturan yang dapat dibaca yang menetapkancleanupPeriodDays,"false"sebaliknya. Pada peristiwa lengkap,"true"berarti default 30 hari diterapkanskip_reason: Mengapa Claude Code menjeda sapuan. Ada hanya ketikaresultadalah"skipped":"user_source_disabled": Pengaturan pengguna dikecualikan, misalnya oleh flag--setting-sourcesatau opsisettingSourcesSDK, dan tidak ada sumber yang diaktifkan yang menyediakancleanupPeriodDays"settings_unknowable": File pengaturan tidak dapat dibaca atau diuraikan, jadicleanupPeriodDaysataudesktopSessionCleanupPeriodDaysmungkin diatur ke nilai yang tidak dapat dilihat Claude Code"settings_invalid_key_set": Pengaturan memiliki kesalahan validasi dancleanupPeriodDaysataudesktopSessionCleanupPeriodDayssecara eksplisit diatur, jadi kembali ke default dapat menghapus atau menyimpan file terhadap pengaturan itu
transcripts_deleted: Jumlah transkrip sesi, file~/.claude/projects/*/*.jsonltingkat atas, yang dihapus sapuantranscripts_exempted_desktop: Jumlah transkrip melewati periode retensi yang disimpan sapuan di bawah aturan Claude Desktop dan Cowork. Ini tidak dihitung menujufiles_past_cutoff. Memerlukan Claude Code v2.1.248 atau lebih barusession_files_deleted: Jumlah artefak yang dihapus sapuan file sesi: transkrip ditambah file pendamping per-sesi seperti sidecars, rekaman, dan hasil alatartifacts_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 tepatfiles_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 normalfiles_past_cutoff: File yang lebih lama dari periode retensi yang gagal dihapus oleh sapuan, misalnya karena kesalahan izin akses atau file yang sedang terbuka. Hitungan ini juga mencakup setiap folder usang yang ditemukan sapuan di bawahskills/synced/atauplugins/synced/, baik dipindahkan ke tempat sampah maupun tidak. Selain folder-folder tersebut, nilai di atas nol berarti ada file yang bertahan melewati periode retensi yang dikonfigurasi; nol bukan bukti bahwa tidak ada, karena kegagalan menghapus seluruh direktori dihitung dalamerror_counterror_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 atributerror.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
envpengaturan 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.
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 peristiwachangehanya ketika atribut berbeda dari peristiwa terakhir yang dikirimnya, dan nilai pengaturan yang berubah dihitung bahkan ketikaOTEL_LOG_MANAGED_SETTINGSoff -
error.type: mengapa Claude Code menghentikan sesi. Ada hanya pada peristiwarefused:"helper_failed": run pembantu kebijakan gagal"policy_invalid": pengaturan yang dikelola berisi kesalahan yang menghentikan Claude Code dari memulai, atau sumber admin gagal dimuat untuk alasan selain pembacaan yang ditolak, jadi Claude Code tidak dapat memeriksa penegakan login organisasi atau penyedia"provider_not_allowed": sesi akan menggunakan penyedia API, atau mengirim lalu lintas penyedia ke host, yang daftarallowedProvidersyang dikelola tidak izinkan. Memerlukan Claude Code v2.1.285 atau lebih baru"consent_rejected": pengguna menolak dialog persetujuan keamanan untuk pengaturan yang dikelola server"force_refresh_failed": pengambilan pengaturan yangforceRemoteSettingsRefreshperlukan gagal"gateway_rejected": gateway aplikasi Claude menjawab beban pengaturan yang dikelola dengan HTTP 403"version_below_minimum": versi Claude Code ini di bawahrequiredMinimumVersionatau di atasrequiredMaximumVersion"_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 bawahfirst-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: nilaimanagedSourcesBehavioryang 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 memilihpolicyHelper. Tidak ada ketika tidak memilih pembantu -
managed_settings.helper.path:pathyang dikonfigurasi pembantu. Ada kapan pun Claude Code memilih pembantu, apakah atau tidakOTEL_LOG_MANAGED_SETTINGSdiatur -
managed_settings.resolved_sha256(ketikaOTEL_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 peristiwarefused -
managed_settings.settings(ketikaOTEL_LOG_MANAGED_SETTINGS=1): nama dan bentuk pengaturan yang dikelola yang diselesaikan sebagai string JSON, dengan nilai yang disunting. Tidak ada pada peristiwarefused. 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.httpProxyPortdansandbox.network.socksProxyPortdiekspor sebagai"[REDACTED]" - Setiap string lainnya, seperti
model,apiKeyHelper, setiap nilaienv, setiap URL, dan setiap perintah, diekspor sebagai"[REDACTED]" - Nama entri peta, seperti nama variabel
envdan ID plugin, diekspor apa adanya. Pengaturan yang entri-nya skema tidak ketik, sepertivimInsertModeRemaps, diekspor sebagai"[REDACTED]"tunggal, dansandbox.ignoreViolationsdiekspor sebagai daftar daftar path-nya tanpa pola perintah - Daftar menyimpan panjangnya, dengan setiap entri disunting oleh aturan yang sama
- Aturan
permissions.allow,permissions.deny, ataupermissions.askdiekspor sebagai nama alat-nya dengan konten yang disunting, sepertiRead([REDACTED]), ketika alat dibangun ke versi Claude Code ini atau merupakan referensimcp__sepertimcp__jira__create_issue. Aturan lainnya diekspor sebagai"[REDACTED]" - Hook mengikuti aturan yang sama, jadi bidang opsi tetap dan numerik seperti
typedantimeoutmenunjukkan, sementara setiap perintah, URL,matcher, dan kondisiifdiekspor sebagai"[REDACTED]"
apiKeyHelper, dua variabelenv, 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(saatmanaged_settings.settingsada):truesaat Claude Code memotongmanaged_settings.settingspada 8 KB,falsejika tidak. Dipancarkan sebagai Boolean, bukan string
Menafsirkan data metrik dan acara
Metrik dan acara yang diekspor mendukung berbagai analisis:Pemantauan penggunaan
Pemantauan biaya
Metrikclaude_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, danagent.name
Metrik biaya adalah perkiraan. Untuk data penagihan resmi, lihat penyedia API Anda (Claude Console, Amazon Bedrock, atau Google Cloud’s Agent Platform).
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
model tersedia pada claude_code.token.usage, claude_code.cost.usage, dan 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 acaraclaude_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 jumlah upaya. 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 paling banyak satu lebih dari batas efektif tersebut: 11 secara default.
Nilai yang lebih rendah tetap dapat berarti retry telah habis: attempt dimulai lagi dari 1 setiap kali Claude Code mengirim ulang permintaan setelah kegagalan streaming.
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
Memetakan token input ke konvensi semantik OpenTelemetry GenAI
Claude Code mengekspor jumlah token input sebagaimana muncul dalam blok usage pada respons API, sehingga nilai-nilai ini tidak menyertakan token yang dibaca dari atau ditulis ke prompt cache:input_tokenspada spanclaude_code.llm_requestdan acaraapi_request- Jenis
"input"dari metrikclaude_code.token.usage
gen_ai.usage.*. Konvensi semantik OpenTelemetry GenAI menyatakan bahwa gen_ai.usage.input_tokens harus menyertakan token yang dibaca dari dan ditulis ke cache. Untuk menghitung total tersebut:
- Dari span atau acara: jumlahkan
input_tokens,cache_read_tokens, dancache_creation_tokens - Dari metrik
claude_code.token.usage: jumlahkan jenis"input","cacheRead", dan"cacheCreation"
cache_read_tokensdipetakan kegen_ai.usage.cache_read.input_tokenscache_creation_tokensdipetakan kegen_ai.usage.cache_write.input_tokens. Versi konvensi yang lebih lama menamai atribut penulisan cache sebagaigen_ai.usage.cache_creation.input_tokens, jadi gunakan nama yang diharapkan oleh backend Anda.
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 yang masuk ke Claude apps gateway melalui /login, 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: lihat Atribut standar untuk identitas yang diekspor mereka.
Audit aktivitas MCP
Untuk menangkap aktivitas server MCP dengan detail panggilan lengkap, aktifkan pengekspor log dan aturOTEL_LOG_TOOL_DETAILS=1. Setiap operasi MCP kemudian menghasilkan acara terstruktur yang membawa nama server, nama alat, dan argumen panggilan bersama atribut identitas standar:
Tanpa
OTEL_LOG_TOOL_DETAILS, acara ini menghilangkan detail pengidentifikasi:
tool_result: menyimpanmcp_server_scopedantool_namediredaksi 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 pasanganmcp_server_name/mcp_tool_namedi dalamtool_parameters, pengecualian yang sama yang dipengaruhi host sepertitool_decision, memerlukan Claude Code v2.1.214 atau lebih barutool_decision: menyimpantool_sourcedantool_namediredaksi 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 pasanganmcp_server_name/mcp_tool_namedi dalamtool_parameters;tool_sourcedan pasangan nama keduanya memerlukan Claude Code v2.1.214 atau lebih barumcp_server_connection: menghilangkanserver_namedan pesan kesalahan, tetapi menyimpanis_plugin,plugin_id_hash, danplugin.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:
Claude Code memancarkan aliran acara mentah saja. Deteksi anomali, baselining, korelasi lintas sesi, dan peringatan adalah tanggung jawab backend SIEM atau observabilitas Anda.
Petakan jalur egress ke kontrol terkelola dan acara
Tabel ini memasangkan jalur yang dapat membawa konten sesi keluar dari mesin, ditambah retensi lokal, dengan kunci pengaturan terkelola yang membatasinya dan acara yang mencatatnya. Untuk apa yang dikirim Claude Code sendiri ke Anthropic, seperti laporan/feedback, lihat Penggunaan data. Nama-nama tersebut tertaut ke entri referensinya, yang memberikan nilai dan default.
Entri
allowedHttpHookUrls, managed-mcp.json, dan acara hook memerlukan lebih dari yang ditunjukkan tabel:
allowedHttpHookUrls: entri digabungkan di seluruh file pengaturan, sehingga pengembang dapat menambahkan ke daftar terkelola yang kosong.allowManagedHooksOnlymenentukan hook mana yang dijalankanmanaged-mcp.json: untuk mematikan MCP, lihat Nonaktifkan MCP sepenuhnya. Untuk mengonfirmasi bahwa Claude Code membaca file tersebut, lihat Validasi konfigurasi- Acara hook: Claude Code mencatat
hook_execution_startdanhook_execution_completesatu kali per acara hook, mencakup setiap hook yang cocok.OTEL_LOG_TOOL_DETAILS=1saja tidak mencatat URL hook HTTP. Konfigurasi hook hanya muncul dihook_definitions, yang juga memerlukan beta tracing terperinci
OTEL_LOG_TOOL_DETAILS=1 menambahkan string perintah, nama server dan tool, serta input tool ke acara ini. Detail tersebut dapat berisi konten sensitif yang sama dengan sesi itu sendiri, jadi aktifkan hanya jika collector Anda disetujui untuk menyimpan konten tersebut.
Periksa sapuan retensi
Untuk memberikan periode retensi yang sama ke setiap mesin, aturcleanupPeriodDays dalam pengaturan terkelola. Untuk memeriksa bahwa mesin menjalankan sapuan dengan nilai tersebut, kumpulkan acara retention_sweep. period_days dan penghitungnya berupa string, jadi konversikan ke angka sebelum Anda membandingkannya.
Mesin yang bekerja sebagaimana mestinya dapat tidak menghasilkan acara karena alasan seperti berikut:
- Tidak ada yang memulai Claude Code: tidak ada sapuan yang berjalan, dan mesin menyimpan datanya hingga peluncuran berikutnya
- Sesi tetap terbuka: Claude Code menjalankan sapuan paling banyak satu kali per sesi
- Sesi berakhir lebih awal: sapuan yang belum selesai saat sesi keluar tidak memancarkan apa pun, begitu pula sapuan yang berhenti karena kesalahan tak terduga
Kirim acara ke SIEM
ArahkanOTEL_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:
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:Backend untuk metrik
- Database deret waktu: Perhitungan laju, metrik agregat
- Toko kolumnar: Kueri kompleks, analisis pengguna unik
- Platform observabilitas lengkap: Kueri lanjutan, visualisasi, peringatan
Backend untuk acara dan log
- Sistem agregasi log: Pencarian teks lengkap, analisis log
- Toko kolumnar: Analisis acara terstruktur
- Platform observabilitas lengkap: Korelasi antara metrik dan acara
Backend 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
Informasi layanan
Semua metrik dan acara diekspor dengan atribut sumber daya berikut:service.name:claude-codeuntuk sesi terminal,claude-code-desktopuntuk sesi lokal yang dimulai dari tab Code di aplikasi Claude Desktopservice.version: Versi Claude Code saat ini, atau versi aplikasi Desktop untuk sesi lokal tab Codeos.type: Jenis sistem operasi (misalnya,linux,darwin,windows)os.version: String versi sistem operasihost.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
service.name = claude-code, tambahkan claude-code-desktop ke filter untuk juga menangkap telemetri dari sesi lokal 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_CONTENTdi bawah - Saat diautentikasi melalui OAuth,
user.emaildisertakan 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. Saat diaktifkan:-
Acara
user_promptmembawa teks prompt dalam dua atribut,promptdanprompt_text. Jika Anda membuang atau menyamarkan teks prompt acara berdasarkan nama atribut di collector Anda, sebutkan kedua atribut dalam aturan tersebut ProcessorattributesOpenTelemetry Collector ini menghapus kedua atribut dalam pipeline yang mencantumkannya: -
Dengan tracing aktif, span
claude_code.interactionmembawa teks prompt dalam atributuser_prompt-nya -
Di bawah detailed beta tracing, spans juga membawa pesan pengguna baru, hasil tool, dan system reminder yang dikirim bersama setiap permintaan, teks system prompt, serta output model. Atribut konten di bawah detailed beta tracing mencantumkan setiap atribut. Acara
claude_code.system_promptmembawa system prompt lengkap
-
Acara
- 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 endpoint OTel yang Anda konfigurasikan, tidak pernah ke Anthropic. Ketika variabel ini tidak diatur,OTEL_LOG_USER_PROMPTSdigunakan sebagai fallback, jadi aturOTEL_LOG_ASSISTANT_RESPONSES=0jika Anda menginginkan konten prompt tanpa konten respons dalam acara. Di bawah detailed beta tracing, spanclaude_code.llm_requesttetap membawa output model dalamresponse.model_output, yang mengikutiOTEL_LOG_USER_PROMPTSalih-alih variabel ini - Argumen input tool 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_decisiondantool_resultmembawa pasanganmcp_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 endpoint 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_resultdantool_decisionmenyertakan atributtool_parametersdengan perintah Bash, nama server MCP dan tool, dan nama skill. Bidang sepertifull_commanddipancarkan tanpa pemotongan - Acara
tool_resultjuga menyertakan atributtool_inputdengan jalur file, URL, pola pencarian, dan argumen lainnya. Nilai individual di atas 512 karakter dipotong dan total dibatasi hingga ~4 K karakter - Acara
user_promptmenyertakancommand_nameverbatim untuk perintah custom, plugin, dan MCP - Penghitung biaya dan token dan acara
api_request,api_error, danapi_refusalmembawa nama agent, skill, plugin, dan server MCP dan tool yang sebenarnya dalam atribut atribusi mereka - Span
claude_code.toolmembawa atribut yang diturunkan dari input sepertifile_path. Di bawah detailed beta tracing, span ini juga membawa atributtool_input
- Acara
- Konten alat tidak dicatat dalam trace spans secara default. Untuk menyertakannya, atur
OTEL_LOG_TOOL_CONTENT=1. Spanclaude_code.toolkemudian membawa acara spantool.outputdengan 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 melaluinew_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_BODIESdi 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 kontenOTEL_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 logapi_request_bodydanapi_response_bodyuntuk setiap panggilan API. Atributbodyacara 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.jsondan.response.jsondi bawah direktori tersebut, dan acara membawa jalurbody_refsebagai 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 keindex.jsonldi 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
-
Dengan