原文(日本語に翻訳)
プロキシがボディをパースせずにセッション単位でリクエストを集計できるよう、APIリクエストに X-Claude-Code-Session-Id ヘッダーを追加
原文(英語)
Added X-Claude-Code-Session-Id header to API requests so proxies can aggregate requests by session without parsing the body
概要
Claude Code v2.1.86より、すべてのAPIリクエストに X-Claude-Code-Session-Id ヘッダーが付与されるようになりました。このヘッダーにより、プロキシサーバーやロードバランサーがリクエストボディを解析することなく、セッション単位でリクエストを追跡・集計できます。企業環境でのAPI監視やコスト管理に役立つ機能です。
基本的な使い方
特別な設定は不要です。Claude Codeが自動的にすべてのAPIリクエストにセッションIDヘッダーを付与します。
プロキシ側での確認例:
X-Claude-Code-Session-Id: <セッションUUID>実践例
プロキシでのセッション別ログ収集
Nginxやenvoyなどのプロキシでセッション別のアクセスログを記録する設定例:
nginx
# nginx.conf
log_format session_log '$remote_addr - $http_x_claude_code_session_id '
'[$time_local] "$request" $status $body_bytes_sent';
access_log /var/log/nginx/claude_sessions.log session_log;Pythonプロキシでのセッション集計
python
from flask import Flask, request, jsonify
import requests
from collections import defaultdict
app = Flask(__name__)
session_stats = defaultdict(lambda: {"requests": 0, "total_bytes": 0})
@app.route("/proxy", methods=["POST"])
def proxy():
session_id = request.headers.get("X-Claude-Code-Session-Id", "unknown")
session_stats[session_id]["requests"] += 1
# バックエンドへの転送
response = requests.post(
"https://api.anthropic.com/v1/messages",
headers=dict(request.headers),
data=request.data
)
session_stats[session_id]["total_bytes"] += len(response.content)
return response.content, response.status_code
@app.route("/stats")
def stats():
return jsonify(dict(session_stats))AWS API GatewayでのセッションID活用
yaml
# serverless.yml の例
functions:
logSession:
handler: handler.logSession
events:
- http:
path: /claude-proxy
method: post
integration: lambda-proxy
# X-Claude-Code-Session-Id ヘッダーを自動的に受け取り可能注意点
- セッションIDはClaude Codeのセッションごとに一意のUUIDです
- セッションを
--resumeで再開した場合も同じセッションIDが使用されます - プロキシがリクエストボディを解析する必要がなくなるため、パフォーマンスとセキュリティが向上します
- このヘッダーはClaude Codeクライアント側で自動付与されるため、追加の設定は不要です