できること
利用状況とコストの追跡
セッション数、変更したコードの行数、pull request、git commit、セッションのコスト、トークン使用量、アクティブ時間などをメトリクスとして出力できます。コストのメトリクスは近似値で、公式の請求データではありません。
分散トレースで処理を追う
ユーザーのプロンプトと、それが引き起こした API リクエストやツール実行を span で結び、1 つのリクエスト全体をトレーシングのバックエンドで 1 つのトレースとして見られます。トレースはベータ版です。
チームや部署ごとの区別
OTEL_RESOURCE_ATTRIBUTES で独自の属性を付けると、すべてのメトリクスとイベントに含まれます。その値はメトリクスのラベルにもなり、チームやリポジトリなどの単位で利用状況を分けられます。
機能解説
概要
組織全体での Claude Code の利用状況、コスト、ツールの動作を追跡するために使います。メトリクスは時系列データとして標準のメトリクスプロトコルで、イベントは logs/events プロトコルで出力します。分散トレースの出力も選べます。
Claude Code は、メトリクス・イベント・トレースの 3 種類のデータを OpenTelemetry で出力します。
- メトリクス: 時系列データとして標準のメトリクスプロトコルで出力します。セッション数、変更したコードの行数、pull request、git commit、セッションのコスト、トークン使用量、コード編集ツールの権限の判断、合計のアクティブ時間が含まれます。
- イベント: logs/events プロトコルで出力します。
prompt.id属性を使うと、1 つのプロンプトの処理中に出たすべてのイベントを、そのきっかけとなったプロンプトに結び付けられます。 - トレース (ベータ): 出力するかどうかを選べます。
OTLP のログエクスポーターは、OTLP の受信に対応した SIEM (Security Information and Event Management) 製品、または SIEM へ転送する OpenTelemetry Collector にイベントを届けられます。
トレース (ベータ)
トレースは既定でオフです。有効にするには、CLAUDE_CODE_ENABLE_TELEMETRY=1 と CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1 の両方を設定し、OTEL_TRACES_EXPORTER で span の送り先を選びます。
- ユーザーのプロンプトごとに
claude_code.interactionというルート span が始まり、API 呼び出し、ツール呼び出し、フックの実行がその子として記録されます。 - トレースが有効なとき、Bash と PowerShell のサブプロセスは、実行中のツール実行 span の W3C トレースコンテキストを入れた
TRACEPARENT環境変数を自動で受け継ぎます。子プロセスの span は Claude Code のトレースツリーの下に親付けされます。 - SDK/ヘッドレスセッションは、分散トレースを連結するために環境変数から
TRACEPARENT/TRACESTATEを読み取ります。 claude_code.llm_requestの span にはagent_id/parent_agent_id属性が含まれます。- トレースの span には、
gen_ai.provider.name、gen_ai.conversation.id、gen_ai.tool.name、error.typeなどの OpenTelemetry GenAI セマンティック規約の属性が付きます。
送信内容の制御とデータの扱い
プロンプトや応答の本文など、内容に関わるデータは既定で伏せられ、環境変数でオプトインしたときだけ出力されます。
- ユーザーのプロンプト内容のログは既定で無効です。
OTEL_LOG_USER_PROMPTSで有効にできます。 - span は、ユーザーのプロンプト文、ツール入力の詳細、ツールのコンテンツを既定で伏せます。含めるには
OTEL_LOG_USER_PROMPTS=1、OTEL_LOG_TOOL_DETAILS=1、OTEL_LOG_TOOL_CONTENT=1を設定します。 user_promptイベントでは、カスタムコマンドや MCP コマンドの名前はOTEL_LOG_TOOL_DETAILS=1を設定しない限り伏せられます。- モデルの応答テキストを含む
claude_code.assistant_responseログイベントは、OTEL_LOG_ASSISTANT_RESPONSES=1でない限り伏せられます。この変数が未設定のときはOTEL_LOG_USER_PROMPTSに従います。 OTEL_LOG_RAW_API_BODIESを使うと、デバッグ用に API のリクエストとレスポンスの本文全体をログイベントとして出力できます。- コンテンツ属性には 60 KB の切り詰め上限があり、
CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTHで設定できます。 OTEL_METRICS_INCLUDE_SESSION_IDなどの環境変数で、メトリクスに含める属性を選び、カーディナリティを調整できます。セッションのエントリポイント (app.entrypoint) はOTEL_METRICS_INCLUDE_ENTRYPOINT=trueでオプトインします。
管理者・導入時に確認したい点
設定の配布と固定
- 管理者は、managed settings ファイルを通じて全ユーザーの OpenTelemetry 設定を構成できます。
- managed settings で
OTEL_EXPORTER_OTLP_*変数を設定すると、起動時に開発者が設定した競合する変数を取り除き、デバッグログに警告を残します。 - リポジトリの
.claude/settings.jsonと.claude/settings.local.jsonにある OpenTelemetry のエクスポーター変数 (CLAUDE_CODE_ENABLE_TELEMETRYやOTEL_LOG_*など) は無視されます。リポジトリ側からテレメトリを有効にしたり、送り先を変えたり、内容の取得を有効にしたりはできません。 OTEL_EXPORTER_OTLP_METRICS_ENDPOINTのようなシグナル別のエンドポイントやプロトコルの変数は、そのシグナルについて共通の変数より優先されます。OTEL_EXPORTER_OTLP_METRICS_HEADERSのようなシグナル別のヘッダー変数は、共通のOTEL_EXPORTER_OTLP_HEADERSとマージされます。- Claude Code は、Bash ツール、フック、MCP サーバー、言語サーバーなど、自身が起動するサブプロセスに
OTEL_*環境変数を渡しません。 - Claude apps gateway のセッションは、gateway の managed settings が
OTEL_EXPORTER_OTLP_ENDPOINTで指定したコレクターへ、OpenTelemetry を直接出力します。
動的な認証ヘッダー
動的な認証が必要な環境では、ヘッダーを生成するスクリプトを使えます。.claude/settings.json に otelHeadersHelper としてスクリプトのパスを追加し、スクリプトは HTTP ヘッダーを表す文字列のキーと値の組を、有効な JSON として出力するようにします。
- 動的ヘッダーが適用されるのは
http/protobufとhttp/jsonのプロトコルだけです。 - スクリプトは起動時と、その後は既定で 29 分ごとに実行されます。間隔は
CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MSで変えられます。 - 設定した
otelHeadersHelperが失敗したときは、起動時に警告が表示されます。
データが届かないとき
claude --debug-file <path> で Claude Code を起動し、そのパスに書き出されるログを確認します。設定したエクスポーターの失敗は [3P telemetry] のエラーとして記録されます。
使い方
環境変数で設定する場合の流れです。
CLAUDE_CODE_ENABLE_TELEMETRY=1を設定し、テレメトリを有効にします。OTEL_METRICS_EXPORTER(otlp、prometheus、console、none) とOTEL_LOGS_EXPORTER(otlp、console、none) でエクスポーターを選びます。どちらも任意で、必要なものだけを設定します。- OTLP エクスポーターを使う場合は、
OTEL_EXPORTER_OTLP_PROTOCOL(例:grpc) とOTEL_EXPORTER_OTLP_ENDPOINTでプロトコルとエンドポイントを設定します。 - 認証が必要な場合は、
OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer your-token"の形で認証情報を設定します。 - デバッグ時は
OTEL_METRIC_EXPORT_INTERVALとOTEL_LOGS_EXPORT_INTERVALで出力の間隔を短くし、本番で使うときは元に戻します。 claudeコマンドで Claude Code を起動します。- メトリクスを出力する構成では、セッション開始時に出る
claude_code.session.countメトリクスがバックエンドに届いているかを確認します。ログだけの構成では、プロンプトを送信してclaude_code.user_promptイベントを確認します。
利用シーン
組織全体の Claude Code の利用状況やトークン使用量を、既存の監視バックエンドで集計する場面に使えます。
OTEL_RESOURCE_ATTRIBUTES でチームや部署を区別し、部門ごとに利用状況を分けて見る場面に向いています。
1 つのプロンプトから発生した API リクエストやツール実行を 1 つのトレースとしてたどり、エージェントの動作を調べる場面に向いています。
Claude Code のイベントを OTLP 受信に対応した SIEM へ送り、セキュリティ監査の記録として扱う場面に使えます。
ChatGPT・OpenAI の対応する機能
比較の単位となる業務: コーディングエージェントの利用状況・動作の監視と分散トレーシング
Codex の Profile 画面は、利用統計とトークンアクティビティのチャートをアプリの中で表示する機能です。/usage ダッシュボードも、アカウントの利用状況、トークンの合計、プラグインとスキルのアクティビティを分析画面で確認する機能です。
Claude Code の OpenTelemetry 連携は、トークン使用量やコストを含むメトリクスとイベントを OpenTelemetry で外部のバックエンドへ出力し、組織全体の利用状況を追跡する機能です。確認する場所が製品内の画面か、利用者側で用意する監視バックエンドかという点が異なります。
これまでの変更
メトリクス、イベント、span に
anthropic.plan、anthropic.seat_type、anthropic.provider、anthropic.custom_base_urlが加わりました。claude_code.safety_eventイベントの送信が停止されました。権限ルール、auto mode、安全チェック、フック、サンドボックスがツール呼び出しを停止・確認・差し戻ししたときの
claude_code.safety_eventイベントが追加されました。トレースの span に OpenTelemetry GenAI セマンティック規約の属性が加わりました。
user_promptイベントに、promptのコピーであるprompt_textが加わりました。プロジェクト設定とローカル設定で、出力の有効化、エンドポイントの指定、内容の取得を行う OpenTelemetry 変数が無視されるようになりました。
otelHeadersHelperが失敗したときの起動時の警告が追加されました。Claude apps gateway のセッションが、gateway の relay を経由せず、managed settings で指定したコレクターへ直接出力するようになりました。
CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTHが追加されました。claude_code.assistant_responseログイベントが追加されました。OTEL_RESOURCE_ATTRIBUTESの値がメトリクスのデータポイントのラベルに含まれるようになりました。セッションのエントリポイントがメトリクス属性
app.entrypointとして追加されました (OTEL_METRICS_INCLUDE_ENTRYPOINT=trueでオプトイン)。claude_code.llm_requestの span にagent_id/parent_agent_id属性が加わりました。サブプロセス (Bash、フック、MCP、LSP) が
OTEL_*環境変数を継承しなくなりました。OpenTelemetry で回答を取得している企業向けに、セッション品質アンケートを再び有効にするCLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTELが追加されました。LLM リクエストの span に
stop_reason、gen_ai.response.finish_reasons、user_system_prompt(OTEL_LOG_USER_PROMPTSで制御) が加わりました。claude_code.at_mentionログイベントが追加されました。claude_code.skill_activatedイベントがユーザーの入力したスラッシュコマンドでも発火し、invocation_trigger属性 ("user-slash"、"claude-proactive"、"nested-skill") を持つようになりました。user_promptイベントにスラッシュコマンドのcommand_nameとcommand_sourceが加わりました。モデルが effort レベルに対応する場合、cost.usage、token.usage、api_request、api_errorに effort 属性が付きます。tool_resultとtool_decisionイベントにtool_use_idが、tool_resultにtool_input_size_bytesが加わりました。SDK/ヘッドレスセッションが環境変数から
TRACEPARENT/TRACESTATEを読み取るようになりました。OTEL_LOG_RAW_API_BODIESが追加されました。ベータ版トレーシングが
OTEL_LOG_USER_PROMPTS、OTEL_LOG_TOOL_DETAILS、OTEL_LOG_TOOL_CONTENTに従うようになり、機密性のある span 属性はオプトインしない限り出力されなくなりました。トレースが有効なとき、Bash ツールのサブプロセスに W3C のTRACEPARENT環境変数を渡すようになりました。
出典
出典 22 件を表示
- Claude Code のリリース (2026-04-10)
- Claude Code のリリース (2026-04-18)
- Claude Code のリリース (2026-04-23)
- Claude Code のリリース (2026-05-01)
- Claude Code のリリース (2026-05-09)
- Claude Code のリリース (2026-05-15)
- ChatGPT・Codex のリリースノート (2026-05-29)
- Claude Code のリリース (2026-05-31)
- Claude Code のリリース (2026-06-06)
- ChatGPT・Codex のリリースノート (2026-06-09)
- Claude Code のリリース (2026-06-26)
- Claude Code のリリース (2026-07-19)
- Claude Code のリリース (2026-09-12)
- Claude Code のリリース (2026-09-19)
- ChatGPT・Codex のリリースノート (2026-09-22)
- Claude Code のリリース (2026-09-25)
- Claude Code のリリース (2026-10-03)
- Claude Code のリリース (2026-10-18)
- Claude Code のリリース (2026-10-23)
- Claude Code のリリース (2026-10-31)
- Claude Code のリリース (2026-11-03)
- 公式ヘルプ