クイックスタート
環境変数を使用して OpenTelemetry を設定します:claude_code.session.count メトリクスを確認してください。Claude Code はセッション開始時にこのメトリクスを出力します。ログのみのセットアップを検証するには、プロンプトを送信して claude_code.user_prompt イベントを確認してください。
何も到着しない場合は、claude --debug-file <path> を使用して Claude Code を起動し、そのパスに書き込まれるログを確認してください。Claude Code は、設定したエクスポーターからの失敗を [3P telemetry] エラーとして報告します。ここで 3P はサードパーティを意味します。[Anthropic telemetry] で始まる行は、Anthropic の個別の運用テレメトリについて説明しており、セットアップの問題を示していません。
完全な設定オプションについては、OpenTelemetry 仕様を参照してください。
管理者設定
管理者は、管理設定ファイルを通じてすべてのユーザーの OpenTelemetry 設定を設定できます。設定がどのように適用されるかについては、設定の優先順位を参照してください。 管理設定の設定例:.claude/settings.json と .claude/settings.local.json の OpenTelemetry エクスポーター変数を無視するため、リポジトリはそれらを使用してテレメトリをオンにしたり、送信先を選択したり、コンテンツをキャプチャしたりすることはできません。管理設定で設定するか、各開発者がシェルまたは ~/.claude/settings.json で設定してください。リポジトリは、OTEL_LOGS_EXPORTER などのエクスポーターセレクターを none に設定することでシグナルをオフにすることはできますが、管理設定、--settings ファイル、または Claude Code を起動する環境がその変数を設定している場合を除きます。
Claude Code は、Bash ツール、フック、MCP サーバー、言語サーバーを含む、生成するサブプロセスに OTEL_* 環境変数を渡しません。OpenTelemetry でインストルメント化されたアプリケーションを Bash ツール経由で実行する場合、Claude Code のエクスポーターエンドポイントまたはヘッダーを継承しないため、そのアプリケーションが独自のテレメトリをエクスポートする必要がある場合は、コマンド内でこれらの変数を直接設定してください。
管理設定が OTLP 宛先をロックする方法
管理設定でOTEL_EXPORTER_OTLP_* 変数を設定すると、Claude Code は起動時に競合する開発者設定の変数を削除し、デバッグログに警告をログに記録します。削除される内容は、設定する変数によって異なります:
-
エンドポイント:
OTEL_EXPORTER_OTLP_ENDPOINTを設定すると、Claude Code はすべての開発者設定のシグナル別エンドポイントを削除します。開発者は 1 つのシグナルを別のコレクターにポイントできないため、管理設定でシグナル別エンドポイント変数も設定する必要はありません。 -
プロトコル:
OTEL_EXPORTER_OTLP_PROTOCOLを設定すると、Claude Code はすべての開発者設定のシグナル別プロトコルを削除します。 -
認証情報:
OTEL_EXPORTER_OTLP_HEADERS、OTEL_EXPORTER_OTLP_CLIENT_KEY、またはOTEL_EXPORTER_OTLP_CLIENT_CERTIFICATEを設定すると、Claude Code はその変数の開発者設定のシグナル別バージョンと、すべての開発者設定のエンドポイント変数(汎用またはシグナル別)を削除します。これらの認証情報が管理設定で選択されていないコレクターに到達するのを防ぐためです。 -
エクスポーターセレクター:
OTEL_METRICS_EXPORTER、OTEL_LOGS_EXPORTER、およびベータ版のOTEL_TRACES_EXPORTERは通常のキーごとの優先順位に従います。開発者の設定はシグナルを無効にするか、コンソールエクスポーターに切り替えることができるため、ロックが必要な場合は管理設定でセレクターも設定してください。管理ソース全体で、OTEL_LOGS_EXPORTERはテレメトリユニットに従い、他の 2 つのセレクターはキーごとにマージされます。Claude Code v2.1.223 以降が必要です。 -
ベータ版トレーシングエンドポイント:詳細ベータ版トレーシングがアクティブな場合、Claude Code はログとトレースをログおよびトレースエクスポーターを通じてではなく
BETA_TRACING_ENDPOINTにエクスポートします。したがって、Claude Code は以下の管理設定のいずれかがシグナルの宛先を決定するたびに、開発者設定のBETA_TRACING_ENDPOINTを削除します:- 汎用またはログ/トレースエンドポイントまたは認証情報
otelHeadersHelpernone、console、または空に設定されたログまたはトレースエクスポーターセレクター。これらの値はシグナルをコレクターから外しますCLAUDE_CODE_ENABLE_TELEMETRYがオフ
BETA_TRACING_ENDPOINTは、管理設定がコレクターをピン留めしている場合でも、詳細ベータ版トレーシングがエクスポートするログとトレースをリダイレクトしていました。
設定の詳細
一般的な設定変数
これらの変数は、すべてのデプロイメント向けにエクスポーター、エンドポイント、およびエクスポート動作を設定します。OTEL_EXPORTER_OTLP_METRICS_ENDPOINT などのシグナルごとのエンドポイントまたはプロトコル変数を設定した場合、Claude Code はそのシグナルに対して汎用変数の代わりにそれを使用します。OTEL_EXPORTER_OTLP_METRICS_HEADERS などのシグナルごとのヘッダー変数を設定した場合、Claude Code はそれを汎用の OTEL_EXPORTER_OTLP_HEADERS とそのシグナル用にマージします。
管理設定を持つマシンでは、管理設定が OTLP 宛先をロックする方法を参照して、Claude Code が削除するものを確認してください。
http/protobuf および http/json プロトコルの場合、Claude Code は各エクスポートリクエストを Content-Length ヘッダーで送信します。v2.1.212 より前では、v2.1.191 以降の Claude Code バージョンはこれらのリクエストをチャンク転送エンコーディングで送信していました。Azure Monitor およびその他の宣言された長さを必要とするエンドポイントは、411 Length Required または 400 エラーでそれらを拒否しました。
mTLS 認証
OTLP エクスポーター用のクライアント証明書を設定する方法は、そのシグナル用に使用されている OTLP プロトコルに依存し、OTEL_EXPORTER_OTLP_PROTOCOL またはシグナル固有のオーバーライドで設定されます。同じ設定がメトリクス、ログ、およびトレースに適用されます。
grpc の場合、OpenTelemetry SDK は標準 OTLP 変数を直接読み取るため、シグナルごとのメトリクス変数を設定する既存の設定は引き続き機能します。管理設定を持つマシンでは、Claude Code は起動時に開発者が設定したシグナルごとの認証情報とエンドポイントを削除する可能性があります。
メトリクスカーディナリティ制御
次の環境変数は、カーディナリティを管理するためにメトリクスに含まれる属性を制御します:
カーディナリティが低いほど、一般的にパフォーマンスが向上し、ストレージコストが低下しますが、分析用のデータの粒度が低くなります。
トレース(ベータ)
分散トレースは、各ユーザープロンプトをそれがトリガーする API リクエストおよびツール実行にリンクするスパンをエクスポートするため、トレーシングバックエンドで完全なリクエストを単一のトレースとして表示できます。 トレースはデフォルトでオフです。有効にするには、CLAUDE_CODE_ENABLE_TELEMETRY=1 と CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1 の両方を設定してから、OTEL_TRACES_EXPORTER を設定してスパンの送信先を選択します。トレースは、エンドポイント、プロトコル、ヘッダー、およびmTLS用の一般的な OTLP 設定を再利用します。管理設定を持つマシンでは、Claude Code は起動時に開発者が設定したシグナルごとの認証情報とエンドポイントを削除する可能性があります。
スパンはデフォルトでユーザープロンプトテキスト、ツール入力詳細、およびツールコンテンツをマスクします。
OTEL_LOG_USER_PROMPTS=1、OTEL_LOG_TOOL_DETAILS=1、および OTEL_LOG_TOOL_CONTENT=1 を設定してそれらを含めます。
トレースがアクティブな場合、Bash および PowerShell サブプロセスは、アクティブなツール実行スパンの W3C トレースコンテキストを含む TRACEPARENT 環境変数を自動的に継承します。これにより、TRACEPARENT を読み取るサブプロセスは、同じトレースの下で独自のスパンを親にすることができ、Claude が実行するスクリプトおよびコマンドを通じたエンドツーエンドの分散トレースが可能になります。
トレースがアクティブで Claude Code が Anthropic API に直接接続されている場合、各モデルリクエストは、claude_code.llm_request スパンのコンテキストに設定された W3C traceparent ヘッダーを含み、API の traceresponse ヘッダーはスパンリンクとして記録されます。これらは、Claude Code のクライアント側スパンをサーバー側トレースに接続し、準拠した仲介者を通じます。アウトバウンド HTTP MCP リクエストは同じ方法で traceparent を含みます。ヘッダーはサードパーティプロバイダーに送信されません。
デフォルトでは、モデルおよび HTTP MCP リクエスト上の traceparent ヘッダーは、ANTHROPIC_BASE_URL が設定されていないか Anthropic API を指している場合にのみ送信されます。一部のプロキシは認識されないヘッダーを拒否するためです。サブプロセス TRACEPARENT 変数は一貫性のために同じスイッチで制御されます。カスタム ANTHROPIC_BASE_URL プロキシを通じて Claude Code を実行し、トレースコンテキストを伝播させたい場合は、CLAUDE_CODE_PROPAGATE_TRACEPARENT=1 を設定します。
Agent SDK および -p で開始された非対話型セッションでは、Claude Code は各インタラクションスパンを開始するときに独自の環境から TRACEPARENT および TRACESTATE も読み取ります。これにより、埋め込みプロセスはアクティブな W3C トレースコンテキストをサブプロセスに渡すことができ、Claude Code のスパンは呼び出し元の分散トレースの子として表示されます。対話型セッションは、CI またはコンテナ環境からの環境値を誤って継承することを避けるため、インバウンド TRACEPARENT を無視します。
インバウンドトレースコンテキストはイベントにも適用されます。TRACEPARENT が設定された Agent SDK および -p セッションでは、各 OTLP イベントログレコードは trace_id および span_id 値を含み、トレースエクスポーターが設定されていない場合でも、ログバックエンドがイベントをトレースの残りの部分と相関させることができるため、アプリケーションのトレースに参加します。
アクティブなインタラクション中に出力されたレコードは、インタラクションスパンの非同期コンテキスト外で出力される場合(許可プロンプトコールバックなど)でも、またはスタートアップ中にバッファリングされ後で出力されるレコードの場合でも、インタラクションスパンの ID を含みます。アクティブなインタラクションスパンなしで出力されたレコードは、インバウンド TRACEPARENT ID を直接含みます。v2.1.214 より前では、スパンの非同期コンテキスト外で出力されたレコードはインバウンド TRACEPARENT ID の代わりにスパンの ID を含みました。v2.1.212 より前では、アクティブなスパン外で出力されたイベントレコードは trace_id または span_id を含みませんでした。
スパン階層
各ユーザープロンプトはclaude_code.interaction ルートスパンを開始します。API 呼び出し、ツール呼び出し、およびフック実行はその子として記録されます。ツールスパンは 2 つの子スパンを持ちます:1 つは許可決定を待つ時間用で、もう 1 つは実行自体用です。Agent ツール、またはレガシー Task ツールがサブエージェントを生成する場合、サブエージェントの API およびツールスパンは親の claude_code.tool スパンの下にネストされます。
claude -p セッションでは、環境に TRACEPARENT が設定されている場合、claude_code.interaction 自体が呼び出し元のスパンの子になります。
PreToolUse フックがツール呼び出しを延期する場合、Claude Code はそれを延期したターンのトレースコンテキストを保存します。セッションを再開してツールが再実行される場合、ツールのスパンはそれより前のターンのトレースに参加し、ターンの claude_code.interaction スパンの子になります。
スパン属性
すべてのスパンは標準属性と、その名前に一致するspan.type 属性を含みます。以下の表は、各スパンに設定される追加属性をリストします。llm_request、tool.execution、および hook スパンは失敗を記録するときに OpenTelemetry ステータス ERROR を設定します。他のスパンは常にステータス UNSET で終了します。
claude_code.interaction
claude_code.llm_request
各再試行試行は、
attempt および client_request_id 属性を持つ gen_ai.request.attempt スパンイベントとしても記録されます。
claude_code.tool
claude_code.tool 上の tool.output スパンイベント
OTEL_LOG_TOOL_CONTENT=1 を設定した場合、Read および Bash 呼び出しは claude_code.tool スパン上に tool.output スパンイベントを記録できます。Edit および Write 呼び出しは、OTEL_LOG_TOOL_DETAILS=1 も設定した場合にのみ 1 つを記録します。その変数はそれら 2 つのツールにスコープされていないため、設定テーブルのその行で追加される引数を確認してください。
MCP ツール、WebFetch、および WebSearch も Claude Code v2.1.283 以降でこのイベントを記録します。
Claude Code はツール呼び出しの成功した戻りからこのイベントを書き込むため、エラーを発生させる呼び出しは何も記録しません。戻りを行う呼び出しの中で、以下の場合は tool.output イベントを記録しません:
- Read、Edit、Write、Bash、WebFetch、WebSearch、および MCP ツール以外のツールへの呼び出し
- ファイルテキスト以外を返す Read(画像、PDF、または内容が変更されていないファイルの再読み込みなど)
OTEL_LOG_TOOL_DETAILS=1も設定していない限り、Edit または Write 呼び出し- Claude Code がターンを中断してキューに入れたメッセージをすぐに送信している間に実行していた WebFetch または WebSearch 呼び出し。Claude はその結果をツールスパンが終了した後に受け取ります
ゲート対象 は、属性が OTEL_LOG_TOOL_CONTENT=1 の上に必要とする変数を名前付けし、Edit および Write の場合、その変数は属性ではなくイベント自体をゲートします。
親スパンの
tool_name 属性は、イベントがどのツールから来たかを示します。コンテンツ制限で切り詰められた属性には、<attribute>_truncated および <attribute>_original_length が付属しています。
claude_code.tool.blocked_on_user
claude_code.tool.execution
claude_code.hook
このスパンは、詳細なベータトレースがアクティブな場合にのみ表示されます。これには ENABLE_BETA_TRACING_DETAILED=1 と BETA_TRACING_ENDPOINT が必要です。このペアは、ログとトレースの送信先も変更します。シェル、ユーザー設定、または管理設定でペアを設定します。両方の変数はプロジェクトおよびローカル設定では無視されます。CLAUDE_CODE_ENHANCED_TELEMETRY_BETA だけではそれを生成しません。
対話型 CLI セッションでは、詳細なベータトレースは、組織がこの機能のホワイトリストに登録されていることも必要です。Agent SDK および非対話型 -p セッションはホワイトリスト登録を必要としません。
new_context、system_prompt_preview、user_system_prompt、tool_input、および response.model_output などの追加のコンテンツを含む属性は、詳細なベータトレースがアクティブな場合にのみ出力されます。これらは安定したスパンスキーマの一部ではありません。new_context 上のゲートは、それを含むスパンに依存し、各コピーはコンテンツ制限(デフォルト 60 KB)で切り詰められます。claude_code.tool スパン上では、ツールに関わらずそのツール呼び出しの結果を含み、OTEL_LOG_TOOL_CONTENT=1 が必要です。claude_code.interaction スパン上ではユーザープロンプトを含み、claude_code.llm_request スパン上ではそのリクエストの新しいユーザーメッセージとツール結果を含みます。どちらも OTEL_LOG_USER_PROMPTS=1 が必要です。user_system_prompt はさらに OTEL_LOG_USER_PROMPTS=1 が必要です。systemPrompt SDK オプションまたは --system-prompt および --append-system-prompt フラグを通じて提供するシステムプロンプトテキストのみを含み、コンテンツ制限(デフォルト 60 KB)で切り詰められ、リクエストごとではなくセッションごとに 1 回出力されます。動的ヘッダー
動的認証を必要とするエンタープライズ環境の場合、ヘッダーを動的に生成するスクリプトを設定できます。動的ヘッダーはhttp/protobuf および http/json プロトコルにのみ適用されます。grpc プロトコルでは、Claude Code は静的ヘッダー変数 OTEL_EXPORTER_OTLP_HEADERS およびそのシグナル固有の変数のみを使用します。
設定の設定
.claude/settings.json に追加します。パスを独自のスクリプトに置き換えます:
スクリプト要件
スクリプトは、HTTP ヘッダーを表す文字列キーと値のペアを持つ有効な JSON を出力する必要があります:- 対話型セッションの警告通知。
otelHeadersHelper failed; telemetry is not being exported。ヘルパーが最初に失敗したときにセッションごとに 1 回表示されます /status出力--debugで実行するか、セッション内で/debugを実行した後のデバッグログ-pで開始された非対話型セッションの stderr
リフレッシュ動作
ヘッダーヘルパースクリプトはスタートアップ時に実行され、その後定期的に実行されてトークンリフレッシュをサポートします。デフォルトでは、スクリプトは 29 分ごとに実行されます。CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS 環境変数で間隔をカスタマイズします。
マルチチーム組織サポート
複数のチームまたは部門を持つ組織は、OTEL_RESOURCE_ATTRIBUTES 環境変数を使用してカスタム属性を追加し、異なるグループを区別できます:
- チームまたは部門別にメトリクスをフィルタリング
- コストセンターごとのコストを追跡
- チーム固有のダッシュボードを作成
- 特定のチーム向けのアラートを設定
vcs.* リポジトリ属性を除き、カスタムキーは user.id または session.id などの標準属性をオーバーライドしません:キーが衝突する場合、Claude Code は組み込み値を保持します。
各カスタムキーはすべてのメトリクスシリーズ上のラベルになるため、高カーディナリティ値はメトリクスバックエンドのストレージコストを増加させます。カスタム属性をリソースブロックのみで送信し、データポイントラベルから省略するには、OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false を設定します。メトリクスカーディナリティ制御を参照してください。
設定例
claude を実行する前にこれらの環境変数を設定します。以下の各シナリオは完全な設定を示し、各変数は一般的な設定変数の下で説明されています。設定が有効になったことを確認するには、セッションを開始した後、バックエンドで claude_code.session.count メトリクスを確認します。クイックスタートはログのみの検証と、何も到着しない場合に確認する内容をカバーしています。
コンソールデバッグ用に 1 秒のエクスポート間隔で:
http://localhost:9464/metrics からスクレイプ:
/metrics エンドポイント上でセッションカウンターとゲージを再公開します。
複数のエクスポーターにメトリクスを送信するには:
クラウドセッションと Claude Tag からのテレメトリ
クラウドセッション(Claude Tag チャネルセッションを含む)は、ユーザーのデバイス上ではなく クラウド環境 で実行されるため、これらのデバイス上の管理設定ファイルまたはシェルプロファイルではテレメトリを設定できません。Anthropic ホスト環境のセッションの場合、このセクションではテレメトリ変数を設定する場所、コレクターを環境から到達可能にする方法、およびエクスポートされたデータでクラウドセッションと Claude Tag セッションを区別する方法について説明します。 これらのセッションからテレメトリをエクスポートするには、管理者設定 の例と同じキーを使用して、CLAUDE_CODE_ENABLE_TELEMETRY と OTEL_* 変数を次の 2 つの場所のいずれかに設定します。
- サーバー管理設定: 組織の サーバー管理設定 の
envブロックに追加します。Claude Code は サーバー管理設定が適用される 場所(ユーザーのマシンと Claude Tag チャネルセッション以外のクラウドセッションを含む)で起動時にこれらの設定を取得します。Claude Tag セッションはサーバー管理設定を受け取らないため、このルートではそれらを設定できません。 - 環境の変数: クラウド環境の 環境変数 に追加して、その環境で実行されるセッションのみを設定します。これは Claude Tag セッションに到達するルートです。
OTEL_EXPORTER_OTLP_HEADERS のコレクタートークンなどの認証情報をそこに配置しないでください。環境の API 認証情報 も役に立ちません。Claude Code 独自のテレメトリエクスポートは、認証情報を取得しないリクエスト の 1 つだからです。コレクターが認証情報を必要とする場合は、代わりにサーバー管理設定を通じてエクスポート全体を設定してください。認証情報をそこに設定すると、Claude Code は管理設定外で設定されたエンドポイント変数を削除します。
クラウドセッションのテレメトリを設定する際は、これらの制約を念頭に置いてください。
- セッションがコレクターに到達できるようにする: Claude Code はセッションのネットワークを通じてエクスポートを送信するため、
OTEL_EXPORTER_OTLP_ENDPOINTのホストに到達できるかどうかは、環境の ネットワークアクセスレベル によって異なります。セッションが選択したレベルでコレクターのドメインに到達できない場合は、ドメインを環境のアローリストに追加してください。サーバー管理設定はドメインを環境のネットワークアローリストに追加しないためです。 - Claude Tag チャネルは組織レベルの環境を使用します: チャネルセッションはメンバーの個人環境ではなく組織レベルの環境で実行されるため、共有環境 でアローリストと環境変数の変更を行い、組織のデフォルトとして設定するか、チャネルにピン留めしてください。
- Cowork は個別に設定されます: サーフェスカバレッジテーブル に示されているように、Cowork セッションはサーバー管理設定を受け取らないため、サーバー管理
envブロックはそれらのテレメトリを設定しません。
クラウドセッションにテレメトリを属性付けする
デフォルトでは、クラウドセッションからのメトリクスとイベントは、session.id、ccr.session.id、organization.id を含む 標準属性 を含むため、追加の設定なしでセッションまたは組織でフィルタリングできます。ccr.session.id の値はセッションの CLAUDE_CODE_REMOTE_SESSION_ID です。これをセッションのトランスクリプト URL に変換するには、出力をセッションにリンク戻す を参照してください。
テレメトリをより詳細に属性付けするには、これらのオプションを使用します。
- Claude Tag セッションを識別する: メトリクスカーディナリティ制御 で説明されているように、
OTEL_METRICS_INCLUDE_ENTRYPOINT=trueを設定します。メトリクスはapp.entrypointを含むようになり、Claude Tag セッションの値はclaude-in-slackです。 - カスタム属性を追加する: これらのセッションの他の
OTEL_*変数を設定する場所と同じ場所にOTEL_RESOURCE_ATTRIBUTESを設定します。代わりに環境の セットアップスクリプト でそれをexportする場合、値は Claude Code に到達しません。セットアップスクリプトは Claude Code が起動する前に実行される別の Bash スクリプトであり、それがエクスポートする変数はそれで終わります。
user.* 属性に依存して Claude にタグを付けたユーザーを識別しないでください。
利用可能なメトリクスとイベント
標準属性
すべてのメトリクスとイベントは、これらの標準属性を共有します。
Claude Code がClaude アプリゲートウェイにサインインしている場合、CLI はゲートウェイセッションの認証済みアイデンティティでエクスポートをスタンプします。
user.id は匿名インストール識別子ではなく IdP サブジェクト、user.email はサインイン済みメール、user.groups は IdP グループメンバーシップをカンマ区切り文字列として保持します。各エクスポートは identity.source: gateway-oidc も保持します。ゲートウェイアイデンティティは最後に適用されるため、OTEL_RESOURCE_ATTRIBUTES を通じて設定された user.* および identity.* キーはゲートウェイセッションで無視されます。
イベントには、以下の追加属性が含まれます。これらはメトリクスに添付されることはありません。無制限のカーディナリティを引き起こすためです。
prompt.id: ユーザープロンプトと、次のプロンプトまでのすべての後続イベントを相関させる UUID。イベント相関属性を参照。workspace.host_paths: デスクトップアプリで選択されたホストワークスペースディレクトリ。文字列配列としてworkflow.run_id: Workflow ツール実行に属するエージェントが発行する API およびツールイベントの実行識別子。プレフィックスwf_付き。1 つのworkflow.run_idでイベントをフィルタリングすると、その実行の API リクエストとツール結果が再構成されます。識別子は、ワークフロースクリプトが生成するエージェントと、それらが順番に生成するエージェント(スキル呼び出しなど)をカバーします。Workflow ツール結果で報告される実行識別子と一致します。他のすべてのイベントでは不在。Claude Code v2.1.202 以降が必要workflow.name: ワークフロー名。スクリプトのmeta.name。workflow.run_idと一緒に発行されます。実行が未修正の組み込みスクリプトを実行する場合、組み込みワークフロー名はそのまま表示されます。ユーザー作成の名前(組み込みスクリプトの編集済みコピーを含む)は、OTEL_LOG_TOOL_DETAILS=1が設定されていない限りcustomに置き換えられます。Claude Code v2.1.202 以降が必要
リポジトリ属性
OTEL_METRICS_INCLUDE_REPOSITORY=true を設定して、セッションのリポジトリの ID でメトリクスとイベントにタグを付けます。共有コレクターがリポジトリごとに使用状況を属性付けできるようにします。Claude Code v2.1.269 以降が必要。
Claude Code はセッションごとに 1 回、リポジトリの origin リモートからこれらの属性を派生させます。リポジトリの HTTPS および SSH リモートが同じホストと同じパスに名前を付ける場合(GitHub、GitLab、Bitbucket Cloud の場合と同様)、両方とも同じ値を生成します。
値は小文字に変換され、リモート URL からの認証情報、クエリ文字列、フラグメントは決して表示されません。セッションに
origin リモートがない場合、リモートが URL 形状でない場合、または唯一の囲むリポジトリがホームディレクトリである場合、属性は省略されます。
クラウドセッションからこれらの属性を取得するには、OTEL_METRICS_INCLUDE_REPOSITORY を含むテレメトリ変数をクラウド環境に設定します。また、環境のネットワークアクセスでコレクターのドメインを許可します。
OTEL_RESOURCE_ATTRIBUTES で宣言した vcs.* キーは、そのキーの派生値を置き換えます。vcs.repository.url.full を宣言する場合、Claude Code はリモートを読み取らず、宣言したキーのみを報告します。
1 つのリポジトリの HTTPS および SSH クローンが異なる値を報告する場合(例:HTTPS クローン URL がパスプレフィックスを持つ自己ホスト型インストール)、OTEL_RESOURCE_ATTRIBUTES で vcs.repository.url.full と、報告したい他のすべての vcs.* キーを宣言します。すべてのクローンは、宣言したアイデンティティを報告します。
属性は独自のエクスポーターにのみフローします。Anthropic のテレメトリはすべての vcs.* キーを削除します。
メトリクス
Claude Code は以下のメトリクスをエクスポートします。Unit 列は各メトリクスに添付される OpenTelemetry ユニット文字列を示します。カウントメトリクスには何も含まれません。prometheus が OTEL_METRICS_EXPORTER にリストされた唯一のエクスポーターである場合、Claude Code はエクスポートされたメトリクスから USD、tokens、s ユニットを省略して、スクレイプが有効な Prometheus テキスト形式のままになるようにします。メトリクス名は変わらず、otlp,prometheus などのエクスポーターを組み合わせる設定はユニットを保持します。v2.1.216 より前では、Prometheus スクレイプには OpenMetrics のみの # UNIT 行が含まれていて、一部のスクレイパーが拒否していました。
メトリクスの詳細
各メトリクスには、上記にリストされた標準属性が含まれます。追加のコンテキスト固有の属性を持つメトリクスは以下に記載されています。セッションカウンター
各セッションの開始時にインクリメントされます。 属性:- すべての標準属性
start_type: セッションの開始方法。"fresh"、"resume"、"continue"、または"agents_view"のいずれか。"agents_view"値はclaude agentsダッシュボードプロセス(会話セッションではなく、ユーザーが起動したローカル UI)を識別します。ダッシュボードでこの値でフィルタリングして、UI プロセス起動を会話セッションから分離します。
コード行カウンター
コードが追加または削除されるとインクリメントされます。 属性:- すべての標準属性
type: ("added"、"removed")model: 変更を加えたモデルのモデル識別子(例:「claude-sonnet-5」)
プルリクエストカウンター
Claude Code がシェルコマンドまたは MCP ツールを通じてプルリクエストまたはマージリクエストを作成するとインクリメントされます。 属性:- すべての標準属性
コミットカウンター
Claude Code を介して git コミットを作成するとインクリメントされます。 属性:- すべての標準属性
コストカウンター
各 API リクエスト後にインクリメントされます。agent.name、skill.name、plugin.name、mcp_server.name、mcp_tool.name 属性は、デフォルトでは一部の名前を "custom" または "third-party" プレースホルダーに難読化します。OTEL_LOG_TOOL_DETAILS=1 を設定すると、代わりに実際の名前を保持します。v2.1.273 より前では、コストおよびトークンカウンターと api_request、api_error、api_refusal イベントは、OTEL_LOG_TOOL_DETAILS=1 が設定されていても難読化された値を保持していました。
属性:
- すべての標準属性
model: モデル識別子(例:「claude-sonnet-5」)query_source: リクエストを発行したサブシステムのカテゴリ。"main"、"subagent"、または"auxiliary"のいずれかspeed: リクエストが高速モードを使用した場合は"fast"。それ以外の場合は不在effort: リクエストに適用された努力レベル。"low"、"medium"、"high"、"xhigh"、または"max"。Claude Code が努力レベルを送信しない場合(例:努力をサポートしないモデル)は不在。agent.name: リクエストを発行したサブエージェントタイプ。組み込みエージェント名と公式マーケットプレイスプラグインのエージェントはそのまま表示されます。その他のユーザー定義エージェント名は"custom"に置き換えられます。名前付きサブエージェントタイプによってリクエストが発行されなかった場合は不在。skill.name: リクエストに対してアクティブなスキル。Skill ツールまたは/コマンドで設定、または生成されたサブエージェントによって継承されます。組み込み、バンドル、ユーザー定義、公式マーケットプレイスプラグインスキル名はそのまま表示されます。サードパーティプラグインスキル名は"third-party"に置き換えられます。アクティブなスキルがない場合は不在。plugin.name: アクティブなスキルまたはサブエージェントが提供されるプラグイン。公式マーケットプレイスプラグイン名はそのまま表示されます。サードパーティプラグイン名は"third-party"に置き換えられます。スキルもサブエージェントも所有プラグインを持たない場合は不在。marketplace.name: 所有プラグインがインストールされたマーケットプレイス。OTEL_LOG_TOOL_DETAILS=1が設定されていても、公式マーケットプレイスプラグインに対してのみ発行されます。それ以外の場合は不在。mcp_server.name: このリクエストが消費したツール結果の MCP サーバー。組み込み、claude.ai プロキシ、公式レジストリサーバー名はそのまま表示されます。ユーザー設定サーバー名は"custom"に置き換えられます。リクエストが MCP ツール結果を消費しなかった場合は不在。v2.1.222 より前では、Claude Code は MCP ツール呼び出し後のすべてのリクエストにこの属性を設定していて、ツール結果を消費したリクエストのみではなかったため、アップグレード後にこれを集計するダッシュボードは段階的に低下します。mcp_tool.name: このリクエストが消費したツール結果の MCP ツール。mcp_server.nameと同じ難読化およびバージョン動作。リクエストが MCP ツール結果を消費しなかった場合は不在。
トークンカウンター
各 API リクエスト後にインクリメントされます。 属性:- すべての標準属性
type: ("input"、"output"、"cacheRead"、"cacheCreation")model: モデル識別子(例:「claude-sonnet-5」)query_source: リクエストを発行したサブシステムのカテゴリ。"main"、"subagent"、または"auxiliary"のいずれかspeed: リクエストが高速モードを使用した場合は"fast"。それ以外の場合は不在effort: リクエストに適用された努力レベル。詳細はコストカウンターを参照。agent.name、skill.name、plugin.name、marketplace.name、mcp_server.name、mcp_tool.name: リクエストのスキル、プラグイン、エージェント、MCP 属性。定義と難読化動作についてはコストカウンターを参照。
コード編集ツール決定カウンター
ユーザーが Edit、Write、または NotebookEdit ツール使用を受け入れるか拒否するとインクリメントされます。 属性:- すべての標準属性
tool_name: ツール名("Edit"、"Write"、"NotebookEdit")decision: ユーザーの決定("accept"、"reject")source: 決定の出所。"config"、"hook"、"user_permanent"、"user_temporary"、"user_abort"、または"user_reject"のいずれか。各値の意味についてはツール決定イベントを参照。language: 編集されたファイルのプログラミング言語。"TypeScript"、"Python"、"JavaScript"、"Markdown"など。認識されないファイル拡張子の場合は"unknown"を返します。
アクティブ時間カウンター
Claude Code を積極的に使用している実際の時間を追跡します。アイドル時間は除外されます。このメトリクスは、入力やレスポンス読み取りなどのユーザーインタラクション中、およびツール実行や AI レスポンス生成などの CLI 処理中にインクリメントされます。 属性:- すべての標準属性
type: キーボードインタラクションの場合は"user"、ツール実行と AI レスポンスの場合は"cli"
イベント
Claude Code は OpenTelemetry ログ/イベント経由で以下のイベントをエクスポートします(OTEL_LOGS_EXPORTER が設定されている場合)。
イベント相関属性
ユーザーがプロンプトを送信すると、Claude Code は複数の API 呼び出しを行い、いくつかのツールを実行する可能性があります。prompt.id 属性を使用すると、それらのイベントすべてを、それらをトリガーした単一のプロンプトに結び付けることができます。
単一のプロンプトによってトリガーされたすべてのアクティビティをトレースするには、特定の
prompt.id 値でイベントをフィルタリングします。これにより、user_prompt イベント、任意の api_request イベント、およびそのプロンプト処理中に発生した任意の tool_result イベントが返されます。
event.sequence は Claude Code プロセスが開始されるたびに 0 から開始され、そのプロセスの生涯にわたってカウントアップされます。/clear を横切ってカウントを続けます。これは新しい session.id を割り当てます。セッションをフォークせずに再開する場合、セッションは session.id を保持しますが、それを再開したプロセスから event.sequence 値を取得するため、1 つのセッション内で、後のイベントは前のイベントより低い値を保持したり、1 つを繰り返したりできます。セッションのイベントを順序付けするには、event.timestamp でソートし、タイムスタンプを共有するイベントを順序付けするために event.sequence を使用します。
メッセージレベルの再構成の場合、各イベントクラスはセッショントランスクリプトのフィールドと一致するキーを保持します。トランスクリプトエントリ形式は Claude Code の内部であり、バージョン間で変わるため、これらのフィールドで結合するパイプラインはリリースで破損する可能性があります。結合を安定した契約ではなくバージョン固有として扱います。
user_prompt、assistant_response、api_response_bodyのmessage.uuid- API イベントの
request_id。トランスクリプトのアシスタントエントリにrequestIdとして保持 tool_resultおよびtool_decisionイベントのtool_use_id
ユーザープロンプトイベント
ユーザーがプロンプトを送信するとログされます。 イベント名:claude_code.user_prompt
属性:
- すべての標準属性
event.name:"user_prompt"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明prompt_length: プロンプトの長さprompt: プロンプトコンテンツ。デフォルトで難読化されます。OTEL_LOG_USER_PROMPTS=1を設定して含めますmessage.uuid: 結果のユーザーメッセージの UUID。保持されたトランスクリプトエントリと一致します。コマンドディスパッチでは不在。0 個以上のメッセージを生成できます。Claude Code v2.1.214 以降が必要command_name: プロンプトがコマンドを呼び出す場合のコマンド名。compactやdebugなどの組み込みおよびバンドルコマンド名はそのまま発行されます。resetなどのエイリアスは正規名ではなく入力されたとおりに発行されます。カスタム、プラグイン、MCP コマンド名は、OTEL_LOG_TOOL_DETAILS=1が設定されていない限りcustomまたはmcpに折りたたまれますcommand_source: コマンドが存在する場合のコマンドの出所。builtin、custom、またはmcp。プラグイン提供コマンドはcustomとして報告されます
アシスタントレスポンスイベント
モデルからテキストコンテンツを返す各 API リクエスト後にログされます。レスポンスのテキストブロックのみが含まれます。思考ブロックとツール使用ブロックは除外されます。Claude Code v2.1.193 以降が必要。 イベント名:claude_code.assistant_response
属性:
- すべての標準属性
event.name:"assistant_response"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明response_length: レスポンステキストの長さ(文字数)response: レスポンステキスト。コンテンツ制限(デフォルト 60 KB)で切り詰められます。デフォルトで<REDACTED>に難読化されます。OTEL_LOG_ASSISTANT_RESPONSES=1を設定して含めます。OTEL_LOG_ASSISTANT_RESPONSESが設定されていない場合、OTEL_LOG_USER_PROMPTSが代わりに制御するため、プロンプトログが有効な場合はレスポンスを難読化したままにするためにOTEL_LOG_ASSISTANT_RESPONSES=0を設定しますmodel: モデル識別子(例:「claude-sonnet-5」)request_id: API リクエスト ID。イベント相関属性で説明message.uuid: レスポンスの最終トランスクリプトエントリの UUID。API レスポンスはコンテンツブロックごとに 1 つのトランスクリプトエントリとして保持されます。これは最後のもので、次のターンのparentUuidがこれからチェーンされます。Claude Code v2.1.214 以降が必要query_source: リクエストを発行したサブシステム。"repl_main_thread"、"compact"、またはサブエージェント名など
ツール結果イベント
ツールが実行を完了するとログされます。ツール呼び出しが拒否された場合は発行されません。ツール決定イベントで拒否を参照。 イベント名:claude_code.tool_result
属性:
- すべての標準属性
event.name:"tool_result"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明tool_name: ツールの名前tool_use_id: このツール呼び出しの一意の識別子。フックに渡されたtool_use_idと一致し、OTel イベントとフック取得データ間の相関を可能にします。success:"true"または"false"duration_ms: ミリ秒単位の実行時間error_type: ツールが失敗した場合のエラーカテゴリ文字列。"Error:ENOENT"または"ShellError"などerror(OTEL_LOG_TOOL_DETAILS=1の場合): ツールが失敗した場合の完全なエラーメッセージdecision_type: 常に"accept"。このイベントはツール実行後にのみ発行されるため。拒否された呼び出しはツール結果を生成しませんdecision_source: 権限決定の出所。"config"、"hook"、"user_permanent"、または"user_temporary"のいずれか。各値の意味についてはツール決定イベントを参照。拒否のみのソース"user_abort"および"user_reject"はこのイベントに表示されません。tool_input_size_bytes: JSON シリアル化されたツール入力のサイズ(バイト)tool_result_size_bytes: ツール結果のサイズ(バイト)mcp_server_scope: MCP サーバースコープ識別子(MCP ツール用)vcs.ref.head.revision、vcs.ref.head.name、vcs.ref.head.type(OTEL_LOG_TOOL_DETAILS=1の場合): Bash または PowerShell ツールによって実行された成功したgit commitのコミットアイデンティティ。vcs.ref.head.revisionはコミット SHA、vcs.ref.head.nameはコミットされたブランチ、vcs.ref.head.typeはbranch。コミットが detached HEAD で行われた場合、名前とタイプは省略されます。Claude Code v2.1.269 以降が必要tool_parameters(OTEL_LOG_TOOL_DETAILS=1の場合): ツール固有のパラメーターを含む JSON 文字列。Claude Desktop の組み込みサーバーの場合、Claude Desktop が所有するセッションでは、フラグがオフでもmcp_server_name/mcp_tool_nameペアが含まれます。ツール決定イベントと同じホスト作成例外。Claude Code v2.1.214 以降が必要。パラメーターはツールによって異なります。- Bash ツール用:
bash_command、full_command、timeout、description、dangerouslyDisableSandboxを含みます。git commitコマンドが成功した場合はgit_commit_idおよびgit_branchも含みます。git_commit_idはコミットがセッションの作業ディレクトリの HEAD である場合は完全なコミット SHA、それ以外の場合は git の短縮 SHA です。git_branchはコミットされたブランチ。detached HEAD では省略 - デスクトップアプリのワークスペース Bash ツール(
tool_nameもBashとして報告):bash_command、full_command、timeoutのみを含みます - MCP ツール用:
mcp_server_name、mcp_tool_nameを含みます - Skill ツール用:
skill_nameを含みます - Agent ツールまたはレガシー Task ツール用:
subagent_typeを含みます
- Bash ツール用:
tool_input(OTEL_LOG_TOOL_DETAILS=1の場合): JSON シリアル化されたツール引数。512 文字を超える個別値は切り詰められ、完全なペイロードは約 4 K 文字に制限されます。MCP ツールを含むすべてのツールに適用されます。
API リクエストイベント
Claude への各 API リクエストに対してログされます。 イベント名:claude_code.api_request
属性:
- すべての標準属性
event.name:"api_request"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明model: 使用されたモデル(例:「claude-sonnet-5」)cost_usd: USD での推定コストcost_usd_micros: 米ドルの百万分の一での推定コスト。整数として発行duration_ms: ミリ秒単位のリクエスト期間input_tokens: 入力トークン数output_tokens: 出力トークン数cache_read_tokens: キャッシュから読み取られたトークン数cache_creation_tokens: キャッシュ作成に使用されたトークン数request_id: API リクエスト ID。"req_011..."など。イベント相関属性で説明。client_request_id:x-client-request-idリクエストヘッダーとして送信されるクライアント生成 UUID。存在する場合についてはイベント相関属性テーブルを参照。Claude Code v2.1.214 以降が必要speed: 高速モードがアクティブであったかどうかを示す"fast"または"normal"query_source: リクエストを発行したサブシステム。"repl_main_thread"、"compact"、またはサブエージェント名などeffort: リクエストに適用された努力レベル。"low"、"medium"、"high"、"xhigh"、または"max"。Claude Code が努力レベルを送信しない場合(例:努力をサポートしないモデル)は不在。agent.name、skill.name、plugin.name、marketplace.name、mcp_server.name、mcp_tool.name: リクエストのスキル、プラグイン、エージェント、MCP 属性。定義と難読化動作についてはコストカウンターを参照。
API エラーイベント
Claude への API リクエストが失敗するとログされます。 イベント名:claude_code.api_error
属性:
- すべての標準属性
event.name:"api_error"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明model: 使用されたモデル(例:「claude-sonnet-5」)error: エラーメッセージstatus_code: HTTP ステータスコード(数値)。接続障害などの非 HTTP エラーの場合は不在。duration_ms: ミリ秒単位のリクエスト期間attempt: 実行された試行の総数。初期リクエストを含む(1は再試行が発生しなかったことを意味します)request_id: API リクエスト ID。"req_011..."など。イベント相関属性で説明。client_request_id:x-client-request-idリクエストヘッダーとして送信されるクライアント生成 UUID。タイムアウトや接続エラーなどの障害がサーバーrequest_idを生成しなかった場合でも利用可能。存在する場合についてはイベント相関属性テーブルを参照。Claude Code v2.1.214 以降が必要speed: 高速モードがアクティブであったかどうかを示す"fast"または"normal"query_source: リクエストを発行したサブシステム。"repl_main_thread"、"compact"、またはサブエージェント名などeffort: リクエストに適用された努力レベル。Claude Code が努力レベルを送信しない場合(例:努力をサポートしないモデル)は不在。agent.name、skill.name、plugin.name、marketplace.name、mcp_server.name、mcp_tool.name: リクエストのスキル、プラグイン、エージェント、MCP 属性。定義と難読化動作についてはコストカウンターを参照。
API 拒否イベント
API リクエストがstop_reason: "refusal" を返すとログされます。拒否は HTTP エラーではなく成功したレスポンスストリームで到着するため、api_error イベントは発火しません。このイベントにより、拒否頻度を追跡し、拒否を api_request および api_error と同じ属性でグループ化できます。
イベント名: claude_code.api_refusal
属性:
- すべての標準属性
event.name:"api_refusal"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明model: リクエストのモデル識別子request_id: API リクエスト ID。"req_011..."など。イベント相関属性で説明。query_source: リクエストを発行したサブシステム。"repl_main_thread"、"compact"、またはサブエージェント名など。定義についてはapi_requestを参照。speed: 高速モードがアクティブな場合は"fast"、またはそれ以外の場合は"normal"attempt: 再試行試行番号。最初の試行は1。effort: リクエストに適用された努力レベル。Claude Code が努力レベルを送信しない場合(例:努力をサポートしないモデル)は不在。server_fallback_hop: API のサーバー側モデルフォールバックがこの拒否を別のモデルで既に再試行した場合はtrue。ユーザーはこの特定の拒否を見ませんでした。リクエストが拒否で終了した場合はfalse。フォールバックモデルも拒否する場合、1 つのターンはtrueホップイベントと後のfalse最終イベントの両方を発行できます。has_category: API レスポンスがstop_details.categoryの"cyber"、"bio"、"frontier_llm"、または"reasoning_extraction"を保持した場合はtrue。レスポンスがカテゴリを保持しなかったか、そのセット外の値を保持した場合はfalse。server_fallback_hopがtrueの場合は不在。ホップブロックはstop_detailsを保持しないため。has_explanation: API レスポンスがstop_details.explanationを保持した場合はtrue。それ以外の場合はfalse。server_fallback_hopがtrueの場合は不在。category: API レスポンスのstop_details.category値。"cyber"、"bio"、"frontier_llm"、または"reasoning_extraction"のいずれか。OTEL_LOG_TOOL_DETAILS=1が設定され、has_categoryがtrueの場合のみ存在。agent.name、skill.name、plugin.name、marketplace.name、mcp_server.name、mcp_tool.name: リクエストのスキル、プラグイン、エージェント、MCP 属性。定義と難読化動作についてはコストカウンターを参照。
API リクエストボディイベント
OTEL_LOG_RAW_API_BODIES が設定されている場合、各 API リクエスト試行に対してログされます。再試行されたパラメーターごとに 1 つのイベントが発行されるため、調整されたパラメーターでの再試行は独自のイベントを生成します。
イベント名: claude_code.api_request_body
属性:
- すべての標準属性
event.name:"api_request_body"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明body: JSON シリアル化された Messages API リクエストパラメーター。システムプロンプト、メッセージ、ツールなど。コンテンツ制限(デフォルト 60 KB)で切り詰められます。前のアシスタントターンの拡張思考コンテンツは難読化されます。インラインモード(OTEL_LOG_RAW_API_BODIES=1)でのみ発行。body_ref: 切り詰められていないボディを含む<dir>/<uuid>.request.jsonファイルへの絶対パス。ファイルモード(OTEL_LOG_RAW_API_BODIES=file:<dir>)でのみ発行。body_length: 切り詰められていないボディの長さ。OTEL_LOG_RAW_API_BODIES=file:<dir>の場合は UTF-8 バイト。=1の場合は UTF-16 コードユニットbody_truncated: インライン切り詰めが発生した場合は"true"。ファイルモードおよび切り詰めが発生しなかった場合は不在。model: リクエストパラメーターのモデル識別子query_source: リクエストを発行したサブシステム(例:"compact")request_body_id: この試行のリクエストボディを識別する UUID。成功した試行のapi_response_bodyイベント は同じ値を保持するため、レスポンスをそれを生成した正確なリクエストとペアリングできます。Claude Code v2.1.274 以降が必要
API レスポンスボディイベント
OTEL_LOG_RAW_API_BODIES が設定されている場合、各成功した API レスポンスに対してログされます。
ファイルモード(OTEL_LOG_RAW_API_BODIES=file:<dir>)では、Claude Code は成功したレスポンスごとに 1 つの JSON 行を <dir>/index.jsonl に追加します。フィールド timestamp、session_id、query_source、model、request_id、message_id、message_uuid、request_file、response_file を含みます。テレメトリバックエンドをクエリせずに、特定のトランスクリプトメッセージの背後にあるリクエストおよびレスポンスファイルを見つけるために読み取ります。インデックスファイルには Claude Code v2.1.274 以降が必要。
イベント名: claude_code.api_response_body
属性:
- すべての標準属性
event.name:"api_response_body"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明body: JSON シリアル化された Messages API レスポンス。ID、コンテンツブロック、使用状況、停止理由を含みます。コンテンツ制限(デフォルト 60 KB)で切り詰められます。拡張思考コンテンツは難読化されます。インラインモード(OTEL_LOG_RAW_API_BODIES=1)でのみ発行。body_ref: 切り詰められていないボディを含む<dir>/<request_id>.response.jsonファイルへの絶対パス。ファイルモード(OTEL_LOG_RAW_API_BODIES=file:<dir>)でのみ発行。body_length: 切り詰められていないボディの長さ。OTEL_LOG_RAW_API_BODIES=file:<dir>の場合は UTF-8 バイト。=1の場合は UTF-16 コードユニットbody_truncated: インライン切り詰めが発生した場合は"true"。ファイルモードおよび切り詰めが発生しなかった場合は不在。model: モデル識別子query_source: リクエストを発行したサブシステムrequest_id: API リクエスト ID。"req_011..."など。イベント相関属性で説明。request_body_id: このレスポンスが応答するapi_request_bodyイベント のrequest_body_id。Claude Code v2.1.274 以降が必要message.id: API がレスポンスに割り当てたメッセージ ID。レスポンスボディのidフィールド。Claude Code v2.1.274 以降が必要message.uuid: レスポンスの最終トランスクリプトエントリの UUID。request_body_idと一緒に、トランスクリプトメッセージをそれの背後にあるリクエストおよびレスポンスボディにリンクします。Claude Code v2.1.274 以降が必要
ツール決定イベント
ツール権限決定が行われるとログされます(受け入れ/拒否)。 イベント名:claude_code.tool_decision
属性:
- すべての標準属性
event.name:"tool_decision"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明tool_name: ツールの名前(例:「Read」、「Edit」、「Write」、「NotebookEdit」)tool_use_id: このツール呼び出しの一意の識別子。フックに渡されたtool_use_idと一致し、OTel イベントとフック取得データ間の相関を可能にします。decision:"accept"または"reject"tool_source: 常に存在します。ツールの出所。CLI 作成値の閉じたセット。Claude Code v2.1.214 以降が必要"builtin": CLI 自体のツール"mcp": 一般的に MCP サーバー"sdk_host_builtin_mcp": Claude Desktop 自体に組み込まれたインプロセスサーバー。Claude Desktop が所有するセッション。Claude Desktop は独自のエントリポイントclaude-desktop、claude-desktop-3p、またはlocal-agentから開始したセッションを所有します。ネストされたセッション(Claude Code 自体が生成するセッションを含む)は、これらのサーバーを"mcp"として報告します
source: 決定の出所。"config": プロンプトなしで自動的に決定。プロジェクト設定、ユーザーの個人設定の許可または拒否ルール、エンタープライズ管理ポリシー、--allowedToolsまたは--disallowedToolsフラグ、アクティブな権限モード、同じインタラクティブ CLI セッション内の前のプロンプトからのセッションスコープ付与、またはツールが本質的に安全であるため。イベントはこれらのソースのどれが一致したかを示しません。Claude Code は、権限プロンプトリクエスト自体が失敗した場合(例:Agent SDK のcanUseToolコールバックまたは--permission-prompt-toolツールが無効な結果を返す場合、または入力ストリームがリクエスト保留中に閉じる場合)も"config"を報告します。v2.1.216 より前では、Claude Code はこれらの障害を"user_reject"として報告していました。"hook":PreToolUseまたはPermissionRequestフックが決定を返しました。"user_permanent": ユーザーが権限プロンプトで「はい、今後このツールについて聞かないでください」を選択した場合に発行されます。これにより、許可ルールが個人設定に保存されます。インタラクティブ CLI では、その選択自体に対してのみ発行されます。後の呼び出しが保存されたルールと一致する場合は"config"を発行します。Agent SDK または非インタラクティブ-pセッションでは、初期選択と後のルール一致の両方が"user_permanent"を発行します。受け入れとして扱われます。"user_temporary": ユーザーが権限プロンプトで「はい」を選択した場合、またはファイル編集または読み取りプロンプトでセッションの残りの間アクセスを許可するオプションを選択した場合に発行されます。インタラクティブ CLI では、その選択自体に対してのみ発行されます。後の呼び出しがそのセッションスコープ付与と一致する場合は"config"を発行します。Agent SDK または非インタラクティブ-pセッションでは、選択と後のマッチの両方が"user_temporary"を発行します。受け入れとして扱われます。"user_abort": ユーザーが権限プロンプトを回答なしで却下した場合に発行されます。Agent SDK および非インタラクティブ-pセッションでは、canUseToolまたは--permission-prompt-tool権限リクエスト保留中にターンを中断することを含みます。v2.1.216 より前では、Claude Code はその中断を"user_reject"として報告していました。拒否として扱われます。"user_reject": ユーザーがプロンプトで「いいえ」を選択した場合に発行されます。インタラクティブ CLI では、その選択自体に対してのみ発行されます。ユーザーの個人設定の拒否ルールと一致する呼び出しは"config"を発行します。Agent SDK または非インタラクティブ-pセッションでは、個人設定の拒否ルールと一致する呼び出しは"user_reject"を発行します。拒否として扱われます。
tool_parameters(OTEL_LOG_TOOL_DETAILS=1の場合): ツール固有のパラメーターを含む JSON 文字列。ツール結果イベント と同じ形状。git_commit_idなどの実行後フィールドを除きます。受け入れられた呼び出しの場合、権限決定がupdatedInputを通じてツール入力を書き直す場合、値はtool_resultと異なる可能性があります。decisionが"reject"の場合、どのコマンドが拒否されたかを確認するにはこの属性を使用します。"sdk_host_builtin_mcp"ツール用:mcp_server_nameおよびmcp_tool_nameはOTEL_LOG_TOOL_DETAILSがオフの場合でも含まれます。ホストアプリケーションがこれらの名前を定義するため。これらなしでは、これらの組み込みサーバーの 1 つへの拒否された呼び出しはデフォルトストリームで属性付けできません。ユーザー設定 MCP サーバーの場合、イベントのtool_nameは常にリテラル"mcp_tool"。サーバーおよびツール名はtool_parametersにのみ表示されます。フラグがオンの場合。引数コンテンツはどこでもフラグが必要です。Claude Code v2.1.214 以降が必要- Bash ツール用:
bash_command、full_command、timeout、description、dangerouslyDisableSandboxを含みます。デスクトップアプリのワークスペース bash ツールもtool_nameをBashとして報告しますが、bash_command、full_command、timeoutのみを含みます - MCP ツール用:
mcp_server_name、mcp_tool_nameを含みます - Skill ツール用:
skill_nameを含みます - Agent ツールまたはレガシー Task ツール用:
subagent_typeを含みます
権限モード変更イベント
権限モードが変更されるとログされます。例:Shift+Tab サイクリング、プランモード終了、自動モードゲートチェック。
イベント名: claude_code.permission_mode_changed
属性:
- すべての標準属性
event.name:"permission_mode_changed"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明from_mode: 前の権限モード。例:"default"、"plan"、"acceptEdits"、"auto"、"bypassPermissions"to_mode: 新しい権限モードtrigger: 変更の原因。"shift_tab"、"exit_plan_mode"、"auto_gate_denied"、または"auto_opt_in"のいずれか。SDK またはブリッジから遷移が発生する場合は不在。
認証イベント
/login または /logout が完了するとログされます。
イベント名: claude_code.auth
属性:
- すべての標準属性
event.name:"auth"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明action:"login"または"logout"success:"true"または"false"auth_method: 認証方法。"oauth"などerror_category: アクションが失敗した場合のカテゴリエラー種別。生のエラーメッセージは含まれませんstatus_code: アクションが HTTP エラーで失敗した場合の HTTP ステータスコード(文字列)
MCP サーバー接続イベント
MCP サーバーが接続、切断、または接続に失敗するとログされます。 イベント名:claude_code.mcp_server_connection
属性:
- すべての標準属性
event.name:"mcp_server_connection"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明status:"connected"、"failed"、または"disconnected"transport_type: サーバートランスポート。"stdio"、"sse"、"http"などserver_scope: サーバーが設定されているスコープ。"user"、"project"、"local"などduration_ms: ミリ秒単位の接続試行期間error_code: 接続が失敗した場合のエラーコードis_plugin: サーバーがプラグインによって提供される場合はtrue。それ以外の場合はfalseplugin_id_hash(is_pluginがtrueの場合): プラグイン名とマーケットプレイスの安定ハッシュ。名前を公開せずにプラグインでイベントをグループ化するため。Claude Code はプラグインロードイベントで説明されているように計算しますplugin.name(is_pluginがtrueの場合): サーバーを提供するプラグインの名前。サードパーティプラグインの場合、OTEL_LOG_TOOL_DETAILS=1が設定されていない限り、リテラル文字列"third-party"。これはサードパーティプラグイン名がデフォルトでログに表示されるのを防ぎます。公式 Anthropic ソースのプラグインは常に名前で識別されます。plugin_id_hashおよびplugin.name属性は独自の監視バックエンドにフローし、Anthropic に送信されませんserver_name(OTEL_LOG_TOOL_DETAILS=1の場合): 設定されたサーバー名error(OTEL_LOG_TOOL_DETAILS=1の場合): 接続が失敗した場合の完全なエラーメッセージ
内部エラーイベント
Claude Code が予期しない内部エラーをキャッチするとログされます。エラークラス名と errno スタイルコードのみが記録されます。エラーメッセージとスタックトレースは含まれません。このイベントは Amazon Bedrock、Google Cloud の Agent Platform、Microsoft Foundry に対して実行する場合、またはDISABLE_ERROR_REPORTING が設定されている場合は発行されません。
イベント名: claude_code.internal_error
属性:
- すべての標準属性
event.name:"internal_error"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明error_name: エラークラス名。"TypeError"または"SyntaxError"などerror_code: エラーに存在する場合、Node.js errno コード。"ENOENT"など
プラグインインストールイベント
プラグインがインストール完了するとログされます。claude plugin install CLI コマンドとインタラクティブ /plugin UI の両方から。
イベント名: claude_code.plugin_installed
属性:
- すべての標準属性
event.name:"plugin_installed"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明marketplace.is_official: マーケットプレイスが公式 Anthropic マーケットプレイスの場合は"true"。それ以外の場合は"false"install.trigger:"cli"または"ui"plugin.name: インストールされたプラグインの名前。サードパーティマーケットプレイスの場合、OTEL_LOG_TOOL_DETAILS=1が設定されている場合のみ含まれますplugin.version: マーケットプレイスエントリで宣言されている場合のプラグインバージョン。サードパーティマーケットプレイスの場合、OTEL_LOG_TOOL_DETAILS=1が設定されている場合のみ含まれますmarketplace.name: プラグインがインストールされたマーケットプレイス。サードパーティマーケットプレイスの場合、OTEL_LOG_TOOL_DETAILS=1が設定されている場合のみ含まれます
プラグインロードイベント
セッション開始時に有効なプラグインごとに 1 回ログされます。このイベントを使用して、フロート全体でアクティブなプラグインをインベントリします。plugin_installed はインストールアクション自体を記録するため、補完として。
イベント名: claude_code.plugin_loaded
属性:
- すべての標準属性
event.name:"plugin_loaded"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明plugin.name: プラグインの名前。公式マーケットプレイスおよび組み込みバンドル外のプラグインの場合、OTEL_LOG_TOOL_DETAILS=1が設定されていない限り値は"third-party"marketplace.name: プラグインがインストールされたマーケットプレイス(既知の場合)。plugin.nameと同じ条件で"third-party"に難読化plugin.version: プラグインマニフェストからのバージョン。名前が難読化されておらず、マニフェストがバージョンを宣言する場合のみ含まれますplugin.scope: プラグインの出所カテゴリ。"official"、"community"、"org"、"user-local"、または"default-bundle"enabled_via: プラグインが有効になった方法。"default-enable"、"org-policy"、"admin-install"、"seed-mount"、または"user-install"。"admin-install"値は、プラグインが Organization settings > Plugins & skills で組織に対して必須またはオートインストールに設定されていることを意味します。v2.1.246 より前では、Claude Code はこれらのプラグインを"user-install"または"seed-mount"として報告していましたplugin_id_hash: プラグイン名とマーケットプレイスの決定論的ハッシュ。設定されたエクスポーターにのみ送信されます。フロート全体で読み込まれた異なるサードパーティプラグインをカウントできます。名前を記録せずに。claude.ai から同期されたプラグインの場合、Claude Code はプラグイン名を claude.ai が報告するマーケットプレイス名、またはそれ以外の場合はsyncedでハッシュします。v2.1.246 より前では、Claude Code はハッシュで claude.ai が報告するマーケットプレイス名を使用していませんでしたhas_hooks: プラグインがフックに貢献するかどうかhas_mcp: プラグインが MCP サーバーに貢献するかどうかhost_owned_mcp: SDK ホストがこのプラグインの MCP 接続を管理し、Claude Code がプラグインの MCP サーバー設定の読み取りをスキップした場合はtrue。それ以外の場合はfalse。Claude Code v2.1.172 以降が必要skill_path_count: プラグインが宣言するスキルディレクトリの数command_path_count: プラグインが宣言するコマンドディレクトリの数agent_path_count: プラグインが宣言するエージェントディレクトリの数safe_mode: セッションが--safe-modeで開始された場合は"true"。それ以外の場合は"false"。セーフモードでは、このイベントは設定されたインベントリのみを報告します。プラグインのコマンド、スキル、フック、MCP サーバーは読み込まれません。Claude Code v2.1.169 以降が必要
スキル有効化イベント
スキルが呼び出されるとログされます。Claude が Skill ツール経由で呼び出すか、/ コマンドとして実行するかに関わらず。
イベント名: claude_code.skill_activated
属性:
- すべての標準属性
event.name:"skill_activated"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明skill.name: スキルの名前。ユーザー定義およびサードパーティプラグインスキルの場合、OTEL_LOG_TOOL_DETAILS=1が設定されていない限り値はプレースホルダー"custom_skill"invocation_trigger: スキルがどのようにトリガーされたか("user-slash"、"claude-proactive"、または"nested-skill")skill.source: スキルがどこから読み込まれたか(例:"bundled"、"userSettings"、"projectSettings"、"plugin")skill.kind: スキルがワークフロースキルの場合は"workflow"。それ以外の場合は不在plugin.name(OTEL_LOG_TOOL_DETAILS=1の場合またはプラグインが公式マーケットプレイスから): スキルがプラグインによって提供される場合の所有プラグインの名前marketplace.name(OTEL_LOG_TOOL_DETAILS=1の場合またはプラグインが公式マーケットプレイスから): スキルがプラグインによって提供される場合、所有プラグインがインストールされたマーケットプレイス
@ メンションイベント
Claude Code がプロンプト内の@ メンションを解決するとログされます。すべてのメンションがイベントを発行するわけではありません。権限拒否、ファイルサイズ超過、PDF 参照添付、ディレクトリリスト障害などの早期終了パスはログなしで返されます。
イベント名: claude_code.at_mention
属性:
- すべての標準属性
event.name:"at_mention"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明mention_type: メンションのタイプ("file"、"directory"、"agent"、"mcp_resource"、"peer")。"peer"値は 他の Claude Code セッションの 1 つをメンションしたことを意味します。Claude Code v2.1.232 以降が必要success: メンションが正常に解決されたかどうか("true"または"false")
API 再試行枯渇イベント
API リクエストが複数回の試行後に失敗した場合、1 回ログされます。最終api_error イベントと一緒に発行されます。
イベント名: claude_code.api_retries_exhausted
属性:
- すべての標準属性
event.name:"api_retries_exhausted"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明model: 使用されたモデルerror: 最終エラーメッセージstatus_code: HTTP ステータスコード(数値)。非 HTTP エラーの場合は不在。total_attempts: 実行された試行の総数total_retry_duration_ms: すべての試行にわたる総ウォールクロック時間speed:"fast"または"normal"
フック登録イベント
セッション開始時に設定されたフックごとに 1 回ログされます。このイベントを使用して、フロート全体でアクティブなフックをインベントリします。実行ごとのhook_execution_start および hook_execution_complete イベントの補完として。
イベント名: claude_code.hook_registered
属性:
- すべての標準属性
event.name:"hook_registered"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明hook_event: フックイベントタイプ。"PreToolUse"または"PostToolUse"などhook_type: フック実装タイプ。"command"、"prompt"、"mcp_tool"、"http"、または"agent"hook_source: フックが定義されている場所。"userSettings"、"projectSettings"、"localSettings"、"flagSettings"、"policySettings"、または"pluginHook"safe_mode: セッションが--safe-modeで開始された場合は"true"。それ以外の場合は"false"。Claude Code v2.1.169 以降が必要hook_matcher(OTEL_LOG_TOOL_DETAILS=1の場合): フック設定から設定されている場合のマッチャー文字列plugin.name(hook_sourceが"pluginHook"の場合): 貢献プラグインの名前。公式マーケットプレイスおよび組み込みバンドル外のプラグインの場合、OTEL_LOG_TOOL_DETAILS=1が設定されていない限り値は"third-party"plugin_id_hash(hook_sourceが"pluginHook"の場合): プラグイン名とマーケットプレイスの決定論的ハッシュ。設定されたエクスポーターにのみ送信されます。名前を記録せずに異なる貢献プラグインをカウントできます。Claude Code はプラグインロードイベントで説明されているように計算します
フック実行開始イベント
1 つ以上のフックがフックイベントの実行を開始するとログされます。 イベント名:claude_code.hook_execution_start
属性:
- すべての標準属性
event.name:"hook_execution_start"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明hook_event: フックイベントタイプ。"PreToolUse"または"PostToolUse"などhook_name: マッチャーを含む完全なフック名。"PreToolUse:Write"などnum_hooks: マッチングフックコマンドの数managed_only: 管理ポリシーフックのみが許可される場合は"true"hook_source:"policySettings"または"merged"safe_mode: セッションが--safe-modeで開始された場合は"true"。それ以外の場合は"false"。Claude Code v2.1.169 以降が必要hook_definitions: JSON シリアル化されたフック設定。詳細ベータトレーシングとOTEL_LOG_TOOL_DETAILS=1の両方が有効な場合のみ含まれます
フック実行完了イベント
フックイベントのすべてのフックが完了するとログされます。 イベント名:claude_code.hook_execution_complete
属性:
- すべての標準属性
event.name:"hook_execution_complete"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明hook_event: フックイベントタイプhook_name: マッチャーを含む完全なフック名num_hooks: マッチングフックコマンドの数num_success: 正常に完了したカウントnum_blocking: ブロッキング決定を返したカウントnum_non_blocking_error: ブロッキングなしで失敗したカウントnum_cancelled: 完了前にキャンセルされたカウントtotal_duration_ms: すべてのマッチングフックのウォールクロック期間stdout_chars: 成功したマッチングフック全体の stdout の総文字数。Claude Code v2.1.280 以降が必要additional_context_chars: マッチングフックによって返されたadditionalContextの総文字数。Claude Code v2.1.280 以降が必要system_message_chars: マッチングフックによって返されたsystemMessageの総文字数。Claude Code v2.1.280 以降が必要initial_user_message_chars: マッチングフックによって返されたinitialUserMessageの総文字数。Claude Code v2.1.280 以降が必要num_outputs_persisted: 10,000 文字キャップを超えるフック出力の数。Claude Code がファイルに保存。Claude Code v2.1.280 以降が必要managed_only: 管理ポリシーフックのみが許可される場合は"true"hook_source:"policySettings"または"merged"safe_mode: セッションが--safe-modeで開始された場合は"true"。それ以外の場合は"false"。Claude Code v2.1.169 以降が必要hook_definitions: JSON シリアル化されたフック設定。詳細ベータトレーシングとOTEL_LOG_TOOL_DETAILS=1の両方が有効な場合のみ含まれます
フックプラグインメトリクスイベント
公式マーケットプレイスプラグインフックが呼び出しごとのメトリクスを発行するとログされます。公式 Anthropic マーケットプレイスからインストールされたプラグインのみがこれを発行できます。サードパーティマーケットプレイスプラグインおよびユーザー設定フックはこのイベントに発行しません。このイベントを使用して、独自の可観測性スタックからプラグイン動作(検出率、コスト、期間など)を監視します。 イベント名:claude_code.hook_plugin_metrics
属性:
- すべての標準属性
event.name:"hook_plugin_metrics"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明plugin_id:<name>@<marketplace>形式のプラグイン識別子hook_event: メトリクスを発行したフックイベントタイプ- 最大 20 個のプラグイン発行メトリクスキー。名前は
^[a-z][a-z0-9_]{0,39}$と一致します。値はブール値または数値。
圧縮イベント
会話圧縮が完了するとログされます。 イベント名:claude_code.compaction
属性:
- すべての標準属性
event.name:"compaction"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明trigger:"auto"または"manual"success:"true"または"false"duration_ms: 圧縮期間pre_tokens: 圧縮前の概算トークンカウントpost_tokens: 圧縮後の概算トークンカウントerror: 圧縮が失敗した場合のエラーメッセージprecompute_reuse:triggerが"manual"の場合のみ設定。自動圧縮はコンテキストウィンドウが満杯になる前にバックグラウンドで概要を準備でき、この属性は/compactがその準備された概要を再利用したかどうかを記録します。"hit"は再利用されたことを意味します。"miss_custom_instructions"、"miss_hook"、"miss_not_ready"は代わりに新しい概要が計算された理由を示します。Claude Code v2.1.153 以降が必要
サブエージェント完了イベント
サブエージェントが完了し、結果をそれを開始した会話に返すとログされます。ツール使用と実行時をサブエージェントタイプ別にロールアップするために使用します。トークンまたはコストロールアップの場合、トークンカウンターおよびコストカウンターをquery_source "subagent" でフィルタリングして使用します。このイベントの total_tokens は最終リクエストのみをカバーするため。"subagent" カテゴリはエージェントベースのフックからのリクエストもカウントします。これはサブエージェントイベントを発行しません。
イベント名: claude_code.subagent_completed
属性:
- すべての標準属性
event.name:"subagent_completed"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明agent_type: サブエージェントタイプ。組み込みエージェント名と公式マーケットプレイスプラグインのエージェントはそのまま表示されます。他のエージェント名は、OTEL_LOG_TOOL_DETAILS=1が設定されていない限り"custom"に置き換えられますagent.source: エージェント定義がどこから来たか。built-in、plugin、またはuserSettingsやprojectSettingsなどのカスタムエージェントを定義した設定ソースis_built_in: サブエージェントが組み込みエージェントタイプであるかどうかis_async: サブエージェントがバックグラウンドで実行されたかどうかtotal_tokens: サブエージェントの最終 API リクエストのトークンフットプリント。その 1 つのリクエストの入力、キャッシュ作成、キャッシュ読み取り、出力トークン。大体、完了時のサブエージェントのコンテキストサイズ。実行全体にわたる合計ではありませんtotal_tool_uses: サブエージェントが実行全体で行ったツール呼び出しの数duration_ms: ミリ秒単位の実行時間model: サブエージェントが実行するために解決されたモデルfinal_model: サブエージェントの最終レスポンスを生成したモデル。フォールバックなどの実行中スイッチ後にmodelと異なります。Claude Code v2.1.212 以降が必要model_swapped: 複数のモデルがサブエージェントのリクエストに対応したかどうか。Claude Code v2.1.212 以降が必要plugin_id_hash、plugin.name: プラグイン提供エージェント用に存在。公式マーケットプレイスプラグイン名はそのまま表示されます。他のプラグイン名は、OTEL_LOG_TOOL_DETAILS=1が設定されていない限り"third-party"に置き換えられます
フィードバック調査イベント
セッション品質調査が表示または回答されるとログされます。調査が収集する内容と制御方法についてはセッション品質調査を参照。 イベント名:claude_code.feedback_survey
属性:
- すべての標準属性
event.name:"feedback_survey"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明event_type: 調査ライフサイクルイベント。例:"appeared"、"responded"、"transcript_prompt_appeared"appearance_id: 1 つの調査インスタンスに対して発行されたイベントをリンクする一意の IDsurvey_type: イベントを生成した調査。"session"は「Claude はどのように機能していますか?」評価プロンプトresponse:respondedイベントのユーザーの選択enabled_via_override:CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTELが設定されている場合はtrue。文字列ではなくブール値として発行。session調査イベントに存在。このオーバーライドがフロート全体に適用されていることを確認するにはこの属性でフィルタリング
保持スイープイベント
保持クリーンアップスイープの実行ごとに 1 回ログされます。セッショントランスクリプトおよび他のアプリケーションデータをcleanupPeriodDays 設定より古い削除。Claude Code はバックグラウンドでスイープを実行します。セッションごとに最大 1 回。何も削除しない実行でもイベントを発行します。Claude Code が同じマシン上の任意のセッションで過去 24 時間にスイープを実行した場合、このセッションのスイープを少なくとも 10 分遅延させるため、より早く終了するセッションは何も発行しません。claude -p を --bare で実行する場合、Claude Code はスイープを実行せず、何も発行しません。
このページのすべての OTel イベントと同様に、設定したテレメトリバックエンドにのみ送信されます。Claude Code v2.1.227 以降が必要。
Claude Code が保持期間を安全に決定できない場合、スイープを一時停止し、result を "skipped" に設定し、skip_reason を含むイベントを発行します。管理設定が cleanupPeriodDays を設定する場合、管理値は保持期間をピンで留め、スイープは下位優先度スコープの設定ファイルが破損または無効な場合でも実行されます。管理層が cleanupPeriodDays をサーバー管理設定などの他の場所から供給する場合、managed-settings.json 自体が読み取れない場合でも Claude Code はスイープを一時停止します。削除カウンター属性は result が "complete" の場合のみ存在します。
イベント名: claude_code.retention_sweep
属性:
- すべての標準属性
event.name:"retention_sweep"event.timestamp: ISO 8601 タイムスタンプevent.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明result: スイープが実行された場合は"complete"。Claude Code が一時停止した場合は"skipped"period_days: マージされた設定からのcleanupPeriodDays値(日数)。またはソースが設定しない場合は30。スキップされたイベントでは、スイープが使用した値。Claude Code が読み取れた設定ソースから計算used_default: 読み取り可能な設定ソースがcleanupPeriodDaysを設定しない場合は"true"。それ以外の場合は"false"。完了イベントでは、"true"は 30 日のデフォルトが適用されたことを意味しますskip_reason: Claude Code がスイープを一時停止した理由。resultが"skipped"の場合のみ存在。"user_source_disabled": ユーザー設定は除外されます。例:--setting-sourcesフラグまたは SDK のsettingSourcesオプション。有効なソースがcleanupPeriodDaysを提供しません"settings_unknowable": 設定ファイルが読み取られたまたは解析できず、cleanupPeriodDaysまたはdesktopSessionCleanupPeriodDaysが Claude Code が見ることができない値に設定されている可能性があります"settings_invalid_key_set": 設定に検証エラーがあり、cleanupPeriodDaysまたはdesktopSessionCleanupPeriodDaysが明示的に設定されているため、デフォルトにフォールバックするとその設定に対してファイルを削除または保持できます
transcripts_deleted: スイープが削除したセッショントランスクリプト。トップレベル~/.claude/projects/*/*.jsonlファイルの数transcripts_exempted_desktop: 保持期間を過ぎたトランスクリプトの数。スイープが Claude Desktop および Cowork ルールの下で保持。files_past_cutoffにカウントされません。Claude Code v2.1.248 以降が必要session_files_deleted: セッションファイルスイープが削除したアーティファクトの数。トランスクリプトとサイドカー、録音、ツール結果などのセッションごとのコンパニオンファイルartifacts_deleted: データディレクトリ全体でスイープが削除した総アイテム数。セッションファイルを含む。一部のスイープは削除されたディレクトリツリー全体を 1 つのアイテムとしてカウントし、いくつかのクリーンアップパスはカウンターに貢献しないため、値を正確なファイルカウントではなくフロアとして扱いますfiles_retained_fresh: 検査され、保持期間内であるため所定の位置に残されたファイル。ファイルごとのスイープのみがこれをカウントするため、値はフロア。ゼロ以外の値は通常の定常状態ですfiles_past_cutoff: 保持期間より古いファイル。スイープが削除に失敗。例:権限エラーまたはファイルが開いている。ゼロを超える値は、ファイルが設定された保持期間を超えたことを意味します。ゼロは何もしなかったことの証明ではありません。ディレクトリ全体の削除に失敗するとerror_countにカウントされるため。error_count: スイープがファイルをリストまたは削除する際に遭遇したエラーの数
管理設定解決イベント
セッションが解決した管理設定でログされます。セッション開始時に 1 回。管理設定またはポリシーヘルパーの状態がセッション中に変わるときに再度。Claude Code がセッションを開始することを拒否するか、error.type 属性がリストする理由の 1 つでセッションを終了するとき。
このイベントを使用して、予期しない管理ソースで実行されているマシン、ポリシーヘルパーが失敗しているマシン、マシンが開始を拒否した理由を見つけます。
Claude Code v2.1.274 以降が必要。
デフォルトでは、イベントは管理ソースとポリシーヘルパーの状態を保持しますが、設定自体は保持しません。難読化された managed_settings.settings 属性と managed_settings.resolved_sha256 ダイジェストを追加するには、OTEL_LOG_MANAGED_SETTINGS=1 を設定します。
- 管理設定、ユーザー設定、
--settingsのenvブロック、または Claude Code を起動する環境に設定します。プロジェクトまたはローカル設定の値はオンにしません。クローンされたリポジトリはそれらを書き込むことができるため。 - サーバー管理設定は、変数が組織が既に受け取るイベントに組織自体の難読化ポリシーのみを追加するため、セキュリティ承認ダイアログを表示せずに設定できます。
claude_code.managed_settings_resolved
属性:
- すべての標準属性
-
event.name:"managed_settings_resolved" -
event.timestamp: ISO 8601 タイムスタンプ -
event.sequence: イベント順序付けのプロセスごとカウンター。イベント相関属性で説明 -
managed_settings.trigger: セッション開始イベントの場合は"startup"。管理設定またはポリシーヘルパーの状態がセッション後半で変わった場合は"change"。管理設定ポリシーがセッションを停止した場合は"refused"。Claude Code は、属性が前のイベントから異なる場合のみchangeイベントを送信し、変更された設定値はOTEL_LOG_MANAGED_SETTINGSがオフの場合でもカウントされます -
error.type: Claude Code がセッションを停止した理由。refusedイベントでのみ存在。"helper_failed": ポリシーヘルパー実行が失敗"policy_invalid": 管理設定に Claude Code が開始するのを停止するエラーが含まれるか、管理ソースが読み込みに失敗したため、Claude Code は組織ログイン強制を確認できません"consent_rejected": ユーザーがサーバー管理設定のセキュリティ承認ダイアログを拒否"force_refresh_failed":forceRemoteSettingsRefreshが必要とする設定フェッチが失敗"gateway_rejected": Claude アプリゲートウェイが管理設定ロードに HTTP 403 で応答"version_below_minimum": この Claude Code バージョンがrequiredMinimumVersionより下またはrequiredMaximumVersionより上"_OTHER": Claude アプリゲートウェイ管理設定ロードが別の理由で失敗
-
managed_settings.sources: 少なくとも 1 つのポリシーキーを配信するすべての管理ソース。優先度が最も高い順。first-winsの下で効果を持たないソースを含む。値は"remote"、MDM または OS レベルポリシーの"plist"または"hklm"、管理設定ファイルおよびドロップインの"file"、埋め込みホストが設定を供給する場合は"parent"、Claude Code が読み取る場合は Windows HKCU レジストリ値の"hkcu"。制御キーのみを保持するソース、または Claude Code が読み取れなかったソースはリストされません。文字列の配列として発行。管理ソースがポリシーキーを配信しない場合は空 -
managed_settings.source_behavior: Claude Code が読み取ったmanagedSourcesBehavior値。"first-wins"または"merge"。ソースがキーを設定しない場合は"first-wins" -
managed_settings.helper.state: 選択された MDM またはファイルソースが設定するポリシーヘルパーの状態。"ok": ヘルパーの出力が管理設定として機能"bad_path"、"not_a_file"、"exit_nonzero"、"timed_out"、"oversize"、"parse_failed"、"envelope_invalid"、または"schema_rejected": ヘルパーの最後の実行が失敗。ヘルパー障害が場合を説明"none": ヘルパーが設定されていない、またはそれを設定するソースが MDM ポリシーまたは管理設定ファイルではありません
-
managed_settings.helper.applied: ヘルパーの独自の出力が管理設定として機能する場合は"output"。機能しない場合は"none" -
managed_settings.helper.entry: Claude Code がpolicyHelperを選択した場合は"policyHelper"。ヘルパーを選択しなかった場合は不在 -
managed_settings.helper.path: ヘルパーの設定されたpath。Claude Code がヘルパーを選択した場合は常に存在。OTEL_LOG_MANAGED_SETTINGSが設定されているかどうかに関わらず -
managed_settings.resolved_sha256(OTEL_LOG_MANAGED_SETTINGS=1の場合): 難読化前の解決された管理設定の SHA-256。JSON としてシリアル化。キーは再帰的にソートされ、空白なし。同じダイジェストを持つマシンは同じポリシーを実行します。Claude Code は短いポリシーを推測をハッシュすることで回復できるため、オプトインでのみダイジェストを送信します。管理設定が解決されない場合は不在。refusedイベントでは不在。 -
managed_settings.settings(OTEL_LOG_MANAGED_SETTINGS=1の場合): 解決された管理設定の名前と形状。JSON 文字列として。値は難読化。refusedイベントでは不在。Claude Code はその設定スキーマから構築します。- スキーマが宣言するエクスポート設定名。宣言しないキーは除外
- ブール値、数値、スキーマが固定オプションセットに制限する文字列値。
permissions.defaultModeなど。そのまま発行。sandbox.network.httpProxyPortおよびsandbox.network.socksProxyPortは"[REDACTED]"として発行 - 他のすべての文字列。
model、apiKeyHelper、すべてのenv値、すべての URL、すべてのコマンド。"[REDACTED]"として発行 - マップのエントリ名。
env変数名およびプラグイン ID など。そのまま発行。スキーマが入力をタイプしない設定。vimInsertModeRemapsなど。単一の"[REDACTED]"として発行。sandbox.ignoreViolationsは、コマンドパターンなしでパスリストのリストとして発行 - リストはその長さを保持。各エントリは同じルールで難読化
permissions.allow、permissions.deny、またはpermissions.askルールは、ツール名で発行。コンテンツは難読化。Read([REDACTED])など。ツールが Claude Code のこのバージョンに組み込まれているか、mcp__jira__create_issueなどのmcp__参照の場合。他のルールは"[REDACTED]"として発行- フックは同じルールに従う。
typeおよびtimeoutなどの固定オプションおよび数値フィールドは表示。各コマンド、URL、matcher、if条件は"[REDACTED]"として発行
apiKeyHelper、2 つのenv変数、拒否ルールを持つ管理設定は{"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}として発行されます。 Claude Code は値を 8 KB の UTF-8 で切り詰め、切り詰められた値は有効な JSON ではありません -
managed_settings.settings_truncated(managed_settings.settingsが存在する場合): Claude Code がmanaged_settings.settingsを 8 KB で切り詰めた場合はtrue。それ以外の場合はfalse。ブール値として発行。文字列ではなく
メトリクスとイベントデータの解釈
エクスポートされたメトリクスとイベントは、さまざまな分析をサポートします:使用状況監視
コスト監視
claude_code.cost.usage メトリクスは以下に役立ちます:
- チームまたは個人全体の使用トレンドを追跡する
- 最適化のための高使用セッションを特定する
skill.name、plugin.name、およびagent.name属性を介して、特定のスキル、プラグイン、またはサブエージェントタイプへの支出を属性付けする
コストメトリクスは概算です。公式な請求データについては、API プロバイダー (Claude Console、Amazon Bedrock、または Google Cloud の Agent Platform) を参照してください。
ANTHROPIC_BASE_URL の背後にあるゲートウェイまたはプロキシが複数のフレーム全体で使用状況をプログレッシブにストリーミングする場合を含め、各ストリーミングレスポンスをコストおよびトークンメトリクスに対して正確に 1 回カウントします。v2.1.214 より前では、複数のフレームで使用状況を含むストリームは、claude_code.cost.usage と claude_code.token.usage を追加フレームごとにおよそ 1 つの追加フルリクエスト分だけ増加させました。
アラートとセグメンテーション
検討すべき一般的なアラート:- コストスパイク
- 異常なトークン消費
- 特定のユーザーからの高いセッションボリューム
model 属性は claude_code.token.usage、claude_code.cost.usage、および v2.1.172 以降の claude_code.lines_of_code.count で利用可能です。
コミットのモデル別の内訳は、1 つのセッションが複数のモデルにまたがる可能性があるため、session.id でトークンまたはコストメトリクスに対して結合することによってのみ概算できます。トークンまたはコスト側をフィルタリングして、query_source が "main" である行のみにしてください。これにより、補助的なリクエストとサブエージェントリクエストが、セッションのコミットをそれらを作成しなかったモデルに属性付けしません。
再試行枯渇の検出
Claude Code は失敗した API リクエストを内部的に再試行し、あきらめた後にのみ単一のclaude_code.api_error イベントを出力するため、イベント自体がそのリクエストの終端信号です。中間再試行試行は個別のイベントとしてログされません。
イベントの attempt 属性は、試行の総数を記録します。CLAUDE_CODE_MAX_RETRIES はデフォルトで 10 で、15 で上限です。v2.1.199 以降では、CLAUDE_CODE_RETRY_WATCHDOG を設定してデフォルトを引き上げ、上限を削除できます。
リクエストが一時的なエラーのすべての再試行を枯渇させた場合、attempt はその有効な制限より 1 つ多くなります: デフォルトでは 11、ウォッチドッグが設定されていない限り 16 を超えることはありません。より低い値は、400 レスポンスなどの再試行不可能なエラー、または独自のより小さい再試行予算を持つ原因を示します。たとえば、Claude Code は AWS または Google Cloud 認証情報の読み込み失敗を最大 2 回再試行します。
セッションが回復したものと停止したものを区別するには、イベントを session.id でグループ化し、エラーの後に後続の api_request イベントが存在するかどうかを確認します。
イベント分析
イベントデータは Claude Code インタラクションに関する詳細な洞察を提供します: ツール使用パターン: ツール結果イベントを分析して以下を特定します:- 最も頻繁に使用されるツール
- ツール成功率
- 平均ツール実行時間
- ツールタイプ別のエラーパターン
監査セキュリティイベント
OpenTelemetry イベントは Claude Code アクティビティの監査データソースです。すべてのイベントは、ツール呼び出し、MCP アクティビティ、権限決定をそれらをトリガーしたユーザーに結び付ける ID 属性を持ち、OTLP ログエクスポーターは、これらのイベントを OTLP レシーバーを持つセキュリティ情報およびイベント管理(SIEM)プラットフォーム、または SIEM にフォワードする OpenTelemetry Collector に配信できます。属性アクションをユーザーに関連付ける
各イベントの 標準属性 には、認証されたユーザーの ID が含まれます:Claude アカウントでサインインしている場合はuser.email、user.account_uuid、user.account_id、および organization.id、さらに クラウドセッション では、セッション自体の認証情報がそれらを持つ場合、user.id とセッションごとの session.id。user.id はインストールスコープの識別子です。ただし、Claude apps gateway セッションでは、ゲートウェイが発行したトークンからの IdP サブジェクトです。
開発者が開始したセッションでは、MCP ツール呼び出し、Bash コマンド、ファイル編集はその開発者に属性付けられます。Claude Code は個別のサービスアカウントの下では機能しません。各イベントに記録される ID は、開発者自身の Claude アカウント、または Claude apps gateway セッションでの開発者の IdP ID です。Claude Tag チャネルセッションでは、Claude はあなたの組織の 共有 ID として機能します。
Claude Code が直接 API キーで認証する場合、または Amazon Bedrock、Google Cloud の Agent Platform、または Microsoft Foundry に対して認証する場合、セッションに Claude アカウントはなく、user.id と session.id のみが入力されます。これらのデプロイメントでは、OTEL_RESOURCE_ATTRIBUTES を使用してユーザー ID を自分で添付し、管理設定 ファイルまたはローンチラッパーを通じてユーザーごとに設定します。Claude apps gateway セッションはこれを必要としません:CLI は 標準属性 で説明されているように、IdP ID を自動的にスタンプします。
MCP アクティビティを監査する
完全なコール詳細で MCP サーバーアクティビティをキャプチャするには、ログエクスポーターを有効にし、OTEL_LOG_TOOL_DETAILS=1 を設定します。その後、各 MCP 操作は、標準 ID 属性と共にサーバー名、ツール名、呼び出し引数を含む構造化イベントを生成します:
OTEL_LOG_TOOL_DETAILS がない場合、これらのイベントは識別詳細を削除します:
tool_result:mcp_server_scopeと、ユーザー設定サーバーの場合はリテラル"mcp_tool"に編集されたtool_nameを保持し、引数コンテンツを省略します。Claude Desktop の組み込みサーバーの場合、Claude Desktop が所有するセッションでは、tool_parameters内のmcp_server_name/mcp_tool_nameペアも保持します。これはtool_decisionと同じホスト作成例外です。Claude Code v2.1.214 以降が必要ですtool_decision:tool_sourceと、ユーザー設定サーバーの場合はリテラル"mcp_tool"に編集されたtool_nameを保持し、引数コンテンツを省略します。Claude Desktop の組み込みサーバーの場合、Claude Desktop が所有するセッションでは、tool_parameters内のmcp_server_name/mcp_tool_nameペアも保持します。tool_sourceと名前ペアの両方に Claude Code v2.1.214 以降が必要ですmcp_server_connection:server_nameとエラーメッセージを省略しますが、is_plugin、plugin_id_hash、およびplugin.nameを保持し、Anthropic 以外のプラグイン名はリテラル"third-party"に編集されるため、プラグイン提供サーバーは詳細ログなしで区別可能なままです
セキュリティの質問をイベントにマップする
検出ルールを構築する場合、監視したいシグナルを検索し、対応するイベントと属性についてバックエンドをクエリします:
Claude Code は生のイベントストリームのみを出力します。異常検出、ベースライン化、セッション間の相関、アラートは SIEM または可観測性バックエンドの責任です。
SIEM にイベントを送信する
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT を SIEM の OTLP レシーバーに、または SIEM のネイティブ取り込み API にフォワードする OpenTelemetry Collector に指定します。以下の管理設定の例は、MCP および Bash 監査のための完全なツール詳細を有効にして、イベントのみをエクスポートします:
claude_code.user_prompt イベントを確認します。何も到着しない場合は、claude --debug-file <path> で Claude Code を起動し、そのログで [3P telemetry] エクスポートエラーを確認します。
バックエンドに関する考慮事項
メトリクス、ログ、トレースバックエンドの選択により、実行できる分析のタイプが決まります:メトリクスの場合
- 時系列データベース: レート計算、集約メトリクス
- カラムナーストア: 複雑なクエリ、一意のユーザー分析
- フル機能の可観測性プラットフォーム: 高度なクエリ、可視化、アラート
イベント/ログの場合
- ログ集約システム: 全文検索、ログ分析
- カラムナーストア: 構造化イベント分析
- フル機能の可観測性プラットフォーム: メトリクスとイベント間の相関
トレースの場合
分散トレースストレージとスパン相関をサポートするバックエンドを選択します:- 分散トレースシステム: スパン可視化、リクエストウォーターフォール、レイテンシー分析
- フル機能の可観測性プラットフォーム: トレース検索とメトリクスおよびログとの相関
サービス情報
すべてのメトリクスとイベントは、以下のリソース属性でエクスポートされます:service.name: ターミナルセッションの場合はclaude-code、Claude Desktop アプリのコードタブから開始されたセッションの場合はclaude-code-desktopservice.version: 現在の Claude Code バージョン、またはコードタブセッションの場合は Desktop アプリバージョンos.type: オペレーティングシステムタイプ (例:linux、darwin、windows)os.version: オペレーティングシステムバージョン文字列host.arch: ホストアーキテクチャ (例:amd64、arm64)wsl.version: WSL バージョン番号 (Windows Subsystem for Linux で実行している場合のみ存在)- メーター名:
com.anthropic.claude_code
service.name = claude-code でフィルタリングするコレクターパイプラインまたはダッシュボードがある場合は、コードタブセッションからのテレメトリもキャプチャするために、フィルターに claude-code-desktop を追加してください。
ROI 測定リソース
テレメトリセットアップ、コスト分析、生産性メトリクス、自動レポート生成を含む Claude Code の投資収益率(ROI)測定に関する包括的なガイドについては、Claude Code ROI 測定ガイドを参照してください。このリポジトリは、すぐに使用できる Docker Compose 設定、Prometheus と OpenTelemetry セットアップ、Linear などのツールと統合された生産性レポート生成テンプレートを提供します。セキュリティとプライバシー
- OpenTelemetry エクスポートをバックエンドに送信することはオプトインであり、明示的な設定が必要です。Anthropic の個別の運用テレメトリと無効化方法については、データ使用を参照してください
- 生のファイルコンテンツとコードスニペットはメトリクスやイベントに含まれません。トレーススパンは別のデータパスです。以下の
OTEL_LOG_TOOL_CONTENTの項目を参照してください - OAuth 経由で認証されている場合、
user.emailはテレメトリ属性に含まれ、設定した OTel エンドポイントにのみ送信され、Anthropic には送信されません。これが組織にとって懸念事項である場合は、テレメトリバックエンドと協力してこのフィールドをフィルタリングまたは編集してください - ユーザープロンプトコンテンツはデフォルトでは収集されません。プロンプト長のみが記録されます。プロンプトコンテンツを含めるには、
OTEL_LOG_USER_PROMPTS=1を設定してください。詳細なベータトレースでは、この変数はプロンプトテキストよりも広い範囲に達します。これはnew_contextスパン属性もゲートします。これはclaude_code.llm_requestスパンのツール結果を含みます - アシスタント応答テキストはデフォルトでは収集されません。応答長のみが記録されます。応答テキストを含めるには、
OTEL_LOG_ASSISTANT_RESPONSES=1を設定してください。Claude Code からのすべての OpenTelemetry データと同様に、応答テキストは設定した OTel エンドポイントにのみ送信され、Anthropic には送信されません。この変数が設定されていない場合、OTEL_LOG_USER_PROMPTSがフォールバックとして使用されるため、プロンプトコンテンツなしで応答コンテンツが必要な場合はOTEL_LOG_ASSISTANT_RESPONSES=0を設定してください - ツール入力引数とパラメータはデフォルトではログに記録されません。これらを含めるには、
OTEL_LOG_TOOL_DETAILS=1を設定してください。Claude Desktop の組み込みサーバーの場合、Claude Desktop が所有するセッションでは、tool_decisionとtool_resultはmcp_server_name/mcp_tool_nameペアを含みます。これはホストが作成した名前であり、フラグがオフの場合でも引数コンテンツではありません。この例外には Claude Code v2.1.214 以降が必要です。このデータは設定した OTEL エンドポイントにのみ送信され、Anthropic には送信されません。引数には機密値が含まれる可能性があるため、テレメトリバックエンドを設定してこれらの属性をフィルタリングまたは編集してください。有効にすると:tool_resultとtool_decisionイベントには、Bash コマンド、MCP サーバーとツール名、およびスキル名を含むtool_parameters属性が含まれます。full_commandなどのフィールドは切り詰められずに出力されますtool_resultイベントには、ファイルパス、URL、検索パターン、およびその他の引数を含むtool_input属性も含まれます。512 文字を超える個別の値は切り詰められ、合計は約 4 K 文字に制限されますuser_promptイベントには、カスタム、プラグイン、および MCP コマンドの逐語的なcommand_nameが含まれます- コストとトークンカウンターおよび
api_request、api_error、およびapi_refusalイベントは、その属性の帰属に実際のエージェント、スキル、プラグイン、および MCP サーバーとツール名を含みます - トレーススパンには、同じ
tool_input属性とfile_pathなどの入力派生属性が含まれ、tool_inputと同じ切り詰めが行われます
- ツールコンテンツはデフォルトではトレーススパンにログに記録されません。これを含めるには、
OTEL_LOG_TOOL_CONTENT=1を設定してください。その後、claude_code.toolスパンは、生のファイルコンテンツ、Bash コマンド出力、および MCP ツール、WebFetch、WebSearch が返すものを含むtool.outputスパンイベントを含みます。コンテンツは属性ごとにコンテンツ制限(デフォルトでは 60 KB)で切り詰められます。MCP ツール、WebFetch、WebSearch からの結果には Claude Code v2.1.283 以降が必要です。ツールコンテンツはnew_contextを通じてスパンに到達します。このゲートはスパンごとに異なります。テレメトリバックエンドを設定してこれらの属性をフィルタリングまたは編集してください - 生の Anthropic Messages API リクエストおよびレスポンスボディはデフォルトではログに記録されません。これらを含めるには、シェル、ユーザー設定、または管理設定で
OTEL_LOG_RAW_API_BODIESを設定してください。プロジェクトおよびローカル設定では無視されます。ボディには、システムプロンプト、すべての以前のユーザーとアシスタントのターン、およびツール結果を含む完全な会話履歴が含まれるため、これを有効にすることは、他のOTEL_LOG_*コンテンツフラグが明かすすべてのことへの同意を意味します。Claude Code は、他の設定に関係なく、これらのボディから Claude の拡張思考コンテンツを常に編集します。設定する値は、Claude Code がボディを配信する方法を決定します:-
=1の場合、Claude Code は各 API 呼び出しに対してapi_request_bodyとapi_response_bodyログイベントを出力します。イベントのbody属性は JSON シリアル化されたペイロードを含み、コンテンツ制限(デフォルトでは 60 KB)で切り詰められます -
=file:<dir>の場合、Claude Code は切り詰められていないボディをそのディレクトリの.request.jsonと.response.jsonファイルに書き込み、イベントはインラインボディの代わりにbody_refパスを含みます。テレメトリストリームではなく、ログコレクターまたはサイドカーでディレクトリを送信してください。 各成功したレスポンスについて、Claude Code はそのディレクトリのindex.jsonlに 1 行追加し、レスポンスファイルをそれを生成したリクエストファイルおよびそれが成為したトランスクリプトメッセージにリンクします。各行はメッセージコンテンツを含まず、API レスポンスボディイベントセクションがそのフィールドをリストします。インデックスファイルには Claude Code v2.1.274 以降が必要です
-