Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
独立メディア
いかなるプロジェクトとも無提携
Claudeスキルを学んで、すべてをもっとうまくやろう
claudeskill-me.com
最新
OpenTelemetryでClaude Codeの圧縮とhookを見る:compaction、hook_execution_complete、precompute_reuseの読み方  ·  Bash権限ルールの死角:denyは/bin/rm、bash -c、git -Cを止められず、devbox run *は内側のどんなコマンドも通す  ·  CLAUDE.mdが長すぎるとき:.claude/rules/とpathsで、特定のファイルに触れたときだけルールを読み込む  ·  Claude Codeのサンドボックスで「No usable sandbox!」:--no-sandbox、excludedCommands、allowNestedUserNamespacesがそれぞれ手放すもの  ·  Claude Code v2.1.309がサンドボックスと権限の抜けをまとめて修正:起動ファイルのサンドボックス外実行、シンボリックリンク経由のdenyWriteなど  ·  auto modeの$defaultsの落とし穴:autoMode.soft_denyに文字列を1つ入れ忘れると、組み込みのforce pushルールが丸ごと消える
advanced

OpenTelemetryでClaude Codeの圧縮とhookを見る:compaction、hook_execution_complete、precompute_reuseの読み方

30秒バージョン · 忙しい方へ
OpenTelemetryをトークンとコストだけに使わない。圧縮が準備済みの要約を再利用したか、hookが黙って失敗していないかにもフィールドがある。

詳しく読む +
01 · なぜ起きたのか?

イベントが出ているかを最速で確認するには?

CLAUDE_CODE_ENABLE_TELEMETRY=1とOTEL_LOGS_EXPORTER=consoleを設定して起動し、プロンプトを送ってclaude_code.user_promptが出るか見る。これはドキュメントの確認方法で、私は実行していない。

02 · 仕組みは?

precompute_reuseとは?

ドキュメントによれば、自動圧縮はウィンドウが満杯になる前にバックグラウンドで要約を準備でき、このフィールドは圧縮がそれを再利用したかを記録する。hitは再利用、miss_custom_instructions、miss_hook、miss_not_readyは再計算の理由だ。

03 · 自分にどう影響する?

hookが黙って失敗していないかはどう分かる?

hook_execution_completeのnum_non_blocking_errorを見る。0より大きければ、hookが動作をブロックせずに失敗している。これはフィールド定義からの推論であり、ドキュメントの診断推奨ではない。

04 · どうすればいい?

エンジニアではありません。これは私に関係ありますか?

チームがClaude Codeの動作や問題箇所を知る必要があるなら、これらのイベントがダッシュボードの素材になる。全フィールドを読む必要はないが、有効になっているか、誰が見ているかをエンジニアに確認できる。

全文 +

Claude Codeは自身の振る舞いをOpenTelemetryイベントとして出力できる。多くの紹介は「トークンとコストが見える」で止まるが、公式のMonitoringドキュメントには、圧縮、hook、ツール判定のイベントも載っており、セッションがなぜ遅い・高い・止められたのかを調べるのに役立つ。本稿は3グループのイベントのフィールドを整理する。フィールド名と説明は公式Monitoringページに基づく。コレクターを立てて検証してはいないので、「使い方」の節は私の推論であり、そう明記してある。

まずイベントを有効にする

ドキュメントの最小構成は、CLAUDE_CODE_ENABLE_TELEMETRY=1が必須で、OTEL_LOGS_EXPORTERでotlp、console、noneを選ぶ。まずはconsoleで見るのが最も手軽だ:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_LOGS_EXPORTER=console   # options: otlp, console, none
claude

コレクターに送るならOTLPにする:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
export OTEL_LOGS_EXPORT_INTERVAL=5000   # default 5000 ms

ドキュメントによれば、ログだけの構成ではプロンプトを1つ送るとclaude_code.user_promptイベントが見え、それで疎通が確認できる。ツールの引数などの詳細は既定では記録されず、必要ならOTEL_LOG_TOOL_DETAILS=1を設定する。

イベント1:claude_code.compaction

圧縮が完了するたびに1件記録され、フィールドはtrigger(autoまたはmanual)、success、duration_ms、pre_tokensとpost_tokens(どちらも概算)、失敗時のerror、そしてprecompute_reuseだ。最後のものは注目に値する。ドキュメントによれば、自動圧縮はコンテキストウィンドウが満杯になる前にバックグラウンドで要約を準備でき、precompute_reuseはその圧縮が準備済みの要約を再利用したかを記録する。"hit"は再利用、"miss_custom_instructions"、"miss_hook"、"miss_not_ready"は新しく要約を作った理由を示す。この属性はtriggerがmanualのとき、またはtriggerをautoと報告するアイドル圧縮のときだけ設定される。

イベント2:hookの3つのイベント

  • claude_code.hook_registered:セッション開始時に設定済みのhookごとに1件。ドキュメントは、組織全体で有効なhookの棚卸し用だと述べる。フィールドはhook_event(PreToolUseなど)、hook_type(command、prompt、mcp_tool、http、agent)、hook_source(userSettings、projectSettings、localSettings、flagSettings、policySettings、pluginHook)、safe_mode。
  • claude_code.hook_execution_start:hookイベントのhook実行開始。hook_name(matcher込み、例PreToolUse:Write)とnum_hooksを持つ。
  • claude_code.hook_execution_complete:そのイベントのすべてのhookが完了したとき。num_success、num_blocking(ブロック判定を返した数)、num_non_blocking_error(ブロックせずに失敗した数)、num_cancelled、total_duration_msがある。v2.1.280以降はstdout_chars、additional_context_chars、system_message_charsなどの文字数と、10,000文字の上限を超えてファイルに保存された出力の数num_outputs_persistedも加わる。

イベント3:ツール判定とその他

claude_code.tool_decisionはツールの承認・拒否ごとに記録される。decisionはacceptまたはreject、sourceはconfig、hook、user_permanent、user_temporary、user_abort、user_reject、tool_sourceはbuiltin、mcp、sdk_host_builtin_mcpだ。v2.1.307のリリースノートには、auto modeの分類器によるブロックの大半でclassifier_categoryが欠けていた問題を修正し、権限ルール、auto mode、安全チェック、hook、サンドボックスが止めた・確認した・差し戻したツール呼び出しごとに発行されるclaude_code.safety_eventを追加したとある。safety_eventのフィールド一覧は見つけられなかったので載せない。ドキュメントにはat_mention、api_retries_exhausted、サブエージェント完了、スキル有効化のイベントも載っている。

私の推論:これらのフィールドで何がわかるか

以下はフィールドの意味からの推論で、検証していない:

  • 「圧縮が多すぎないか」:compactionイベントの件数とpre_tokens対post_tokensの比を見る。success=falseとerrorの組は要対応だ。
  • 「事前準備された要約は役立っているか」:precompute_reuseのhitと各missの比率を見る。miss_hookが多ければ、圧縮に関わるhookが準備済みの要約を無効にしていると示唆される(フィールド名の私の解釈)。
  • 「hookが黙って失敗していないか」:hook_execution_completeのnum_non_blocking_errorが0より大きければ、hookが動作を止めずに失敗している。これは先に書いたhookの既定のfail-openと呼応する。
  • 「チームで誰がどのhookを読み込んでいるか」:hook_registeredのhook_sourceとPlugin.nameで、プロジェクト、ユーザー、プラグインが何を提供しているかを見る。

2点の注意。これらのイベントはセッション単位の振る舞い記録であり、完全な監査証拠ではない。また、ドキュメントはすべてのフィールドがあらゆる環境で存在するとは約束しておらず、例えばhook_definitionsは詳細ベータトレースとOTEL_LOG_TOOL_DETAILS=1の両方が有効なときだけ含まれる。

出典:Monitoring - Claude Code Docs、Claude Code changelog - Claude Code Docs
図解
Claude Code OpenTelemetry 事件地圖:compaction、hook、tool_decision從環境變數開啟到收集器,三組事件的重點欄位,以及依欄位定義做的推論(未實測)Claude Code OpenTelemetry events worth watchingClaude CodeCLAUDE_CODE_ENABLE_TELEMETRY=1OTEL_LOGS_EXPORTEROTLPCollector orconsole outputclaude_code.compactiontrigger: auto | manualpre_tokens / post_tokensduration_ms, success, errorprecompute_reuse:hit | miss_not_ready |miss_hook | miss_custom_instructionsclaude_code.hook_*hook_registered (inventory)hook_execution_starthook_execution_complete:num_success, num_blocking,num_non_blocking_error,total_duration_msclaude_code.tool_decision: decision (accept | reject), source, tool_sourcev2.1.307: classifier_category fixed, new claude_code.safety_eventMy inference, untested: num_non_blocking_error > 0 means a hook failed without blocking (fail-open)Many miss_hook may mean a hook invalidates the prepared summary (reading of the field name)Tool parameters are off by default: set OTEL_LOG_TOOL_DETAILS=1Claude Skill Me · claudeskill-me.com
スクリーンショット歓迎。転載時は出典を明記してください。
質問する
10文字以上入力してください
関連記事
あなたのrm -rf保護は最初から機能していなかった可能性がある:bash -cで包むだけでClaude Codeの安全確認が完全に迂回される
advanced · 10/05
Hookに「blocking error」と表示されたのに、ファイルは変更されている?PostToolUseとPreToolUseの「ブロック」は同じ意味ではない
practice · 09/28
forkサブエージェントは空白から始めず会話全体を引き継ぐ——v2.1.302からVS Code、デスクトップ、ヘッドレスでも既定で有効に
advanced · 10/19
Auto Modeを設定したから安全?権限モードとサンドボックス境界は全く別の防御層で、混同すると事故につながる
advanced · 09/28
関連ニュース
関連トピック