Skip to content

原文(日本語に翻訳)

サブエージェントからのAPIリクエストにx-claude-code-agent-id/x-claude-code-parent-agent-idヘッダーが付与されるようになりました。またclaude_code.llm_request OTELスパンにagent_id/parent_agent_id属性が追加されました

原文(英語)

API requests from subagents now carry x-claude-code-agent-id / x-claude-code-parent-agent-id headers, and claude_code.llm_request OTEL spans include agent_id / parent_agent_id attributes

概要

サブエージェント(Agentツールで起動したエージェント)からのAPIリクエストに、エージェントIDと親エージェントIDを示すHTTPヘッダーが付与されるようになりました。また、OpenTelemetry(OTEL)スパンにも対応する属性が追加され、複数のサブエージェントを使うワークフローのトレーシングと可観測性が向上しました。

基本的な使い方

これは自動的に適用される変更で、ユーザーによる設定は不要です。OTELを有効にしている場合、自動的にエージェントIDが記録されます。

付与されるHTTPヘッダー

ヘッダー説明
x-claude-code-agent-id現在のエージェントの一意なID
x-claude-code-parent-agent-id親エージェントのID(ネストしたエージェントの場合)

OTELスパンの属性

属性説明
agent_id現在のエージェントID
parent_agent_id親エージェントID

実践例

OTELでのサブエージェントトレーシング

OTELエクスポーターを設定してサブエージェントの実行を追跡:

bash
# OTELエンドポイントを設定
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318

# Claude Codeを実行
claude "並行してフロントエンドとバックエンドのテストを実行して"

Agentツールでサブエージェントが起動すると、各サブエージェントのAPIリクエストに固有のIDが付与されます。これにより:

  • どのAPIリクエストがどのサブエージェントからのものか追跡可能
  • エージェントの階層構造(親→子)をトレース可能
  • コスト分析でエージェント別の使用量を把握可能

APIプロキシでの利用

カスタムAPIプロキシを使用している場合、これらのヘッダーを活用してリクエストをルーティング・フィルタリング:

python
# プロキシサーバー側での処理例
def handle_request(request):
    agent_id = request.headers.get('x-claude-code-agent-id')
    parent_agent_id = request.headers.get('x-claude-code-parent-agent-id')
    
    if agent_id:
        # サブエージェントからのリクエストをログ
        log_agent_request(agent_id, parent_agent_id)
    
    return forward_to_anthropic(request)

注意点

  • これらのヘッダーはAnthropicのAPIサーバーで処理されますが、ユーザー定義のAPIプロキシでも参照できます
  • parent_agent_idはネストしたサブエージェント(サブエージェントが別のサブエージェントを起動する場合)で有用です
  • OTELの設定はsettings.jsonopenTelemetryセクションで管理します
  • エージェントIDはセッション固有で、再起動後は変わります

関連情報