1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【実測】Claude Codeのトークンは98%がキャッシュ読み込みだった──作業ログを集計してOpus 5.5の料金を試算する

1
Posted at

【実測】Claude Codeのトークンは98%がキャッシュ読み込みだった──作業ログを集計してOpus 5.5の料金を試算する

Claude Opus 5.5 が出て、Claude Code の使用量の減り方が明らかに緩やかになりました。
理由を知りたくて、手元の作業ログ(~/.claude/projects/*/*.jsonl)をモデルごとに集計しました。

結論です。

  • 私の Opus 5.5 の4セッションでは、トークンの 98.1% がキャッシュ読み込み(cache_read_input_tokens)でした。出力は0.3%です。
  • Opus 5.5 は、キャッシュ読み込みの単価が Opus 5 の $0.50 → $0.20 に下がっています。入力・出力は2割引きです。
  • 同じトークン数に単価を当てはめると、Opus 5.5 は Opus 5 の 約53% になります(試算)。
  • ログを集計するときは、1つの応答が複数行に記録される点に注意が必要です。重複を除かないと、2倍前後に膨らみます。

集計スクリプトを載せるので、自分のログで同じことを確かめられます。

環境

集計日 2026年9月27日
対象 Claude Code の作業ログ(サブスクリプションで利用)
Opus 5.5 2026-09-23〜27、4セッション、579応答
Opus 5 2026-08-07〜09-23、56セッション、4,995応答
OS Arch Linux

ログの usage に入っているもの

Claude Code の jsonl は1行1レコードです。アシスタントの応答には message.usage が付いています。(値は例です)

{
  "requestId": "req_...",
  "message": {
    "id": "msg_...",
    "model": "claude-opus-5-5",
    "usage": {
      "input_tokens": 3,
      "cache_creation_input_tokens": 1520,
      "cache_read_input_tokens": 412330,
      "output_tokens": 845
    }
  }
}
フィールド 意味
cache_read_input_tokens キャッシュから読み直した入力
cache_creation_input_tokens キャッシュに書き込んだ入力(初めて読んだ分)
input_tokens キャッシュを使わない入力
output_tokens 出力

注意:1つの応答が複数行に記録される

Claude Code は、1つの応答を内容ブロック(思考・テキスト・ツール呼び出し)ごとに別の行として書き出します。
そして、その全行に同じ usage が入ります。

行単位で足すと、同じ応答を何度も数えることになります。
私のログでは、Opus 5.5 で行単位だと約2倍の値になりました。
message.id と requestId の組で重複を除きます。

集計スクリプト

#!/usr/bin/env python3
"""Claude Code の作業ログから、モデルごとのトークン内訳を集計する"""
import glob, json, os
from collections import defaultdict

KEYS = ["cache_read_input_tokens", "cache_creation_input_tokens",
        "output_tokens", "input_tokens"]
total = defaultdict(lambda: defaultdict(int))
seen = set()  # 同じ応答が複数行に分かれて記録されるため、IDで重複を除く

for path in glob.glob(os.path.expanduser("~/.claude/projects/*/*.jsonl")):
    with open(path, errors="ignore") as f:
        for line in f:
            if '"usage"' not in line:
                continue
            try:
                rec = json.loads(line)
            except json.JSONDecodeError:
                continue
            msg = rec.get("message") or {}
            model, usage = msg.get("model"), msg.get("usage")
            if not model or not usage or model == "<synthetic>":
                continue
            key = (msg.get("id"), rec.get("requestId"))
            if key in seen:
                continue
            seen.add(key)
            for k in KEYS:
                total[model][k] += usage.get(k) or 0
            total[model]["responses"] += 1

for model, t in sorted(total.items()):
    tokens = sum(t[k] for k in KEYS)
    print(f"\n{model}(応答 {t['responses']:,} 回)")
    for k in KEYS:
        print(f"  {k:30s} {t[k]:>15,}  {t[k] / tokens:6.1%}")
  • サブエージェントのログ(セッションのサブディレクトリ側)は対象外です。
  • <synthetic> は Claude Code が内部で差し込むレコードなので除いています。

結果

claude-opus-5(応答 4,995 回)
  cache_read_input_tokens          1,426,727,548   96.9%
  cache_creation_input_tokens         41,014,030    2.8%
  output_tokens                        4,900,109    0.3%
  input_tokens                            24,805    0.0%

claude-opus-5-5(応答 579 回)
  cache_read_input_tokens            229,310,646   98.1%
  cache_creation_input_tokens          3,721,615    1.6%
  output_tokens                          605,332    0.3%
  input_tokens                             1,170    0.0%

どちらのモデルでも、キャッシュ読み込みが97〜98%を占めます。
エージェントは「読む→直す→確かめる」のたびに、会話全体とファイルを読み直します。
その読み直しが、ほぼ全量をキャッシュ読み込みとして処理されています。

単価を当てはめる

公式の API 料金です(100万トークンあたり、USD、2026年9月27日確認)。

モデル 入力 キャッシュ読み込み キャッシュ書き込み(1時間) 出力
Claude Opus 5 5.00 0.50 10.00 25.00
Claude Opus 5.5 4.00 0.20 8.00 20.00
GPT-6 Astra 10.00 1.00 12.50 50.00

出典:Anthropic Pricing/GPT-6 Astra(OpenAI)

Opus 5.5 のキャッシュ読み込みは、入力単価の 0.05倍 です(他の多くのモデルは0.1倍)。

Opus 5.5 の4セッション分のトークンに、それぞれの単価を掛けました。
キャッシュ書き込みは1時間保存の単価で計算しています。試算であり、実際の請求額ではありません。

単価 キャッシュ読み込み キャッシュ書き込み 出力 合計
Opus 5 $114.7 $37.2 $15.1 $167.0
Opus 5.5 $45.9 $29.8 $12.1 $87.7

Opus 5.5 は Opus 5 の約53%です。差の約$79のうち、約$69がキャッシュ読み込みの単価差です。
Anthropic の発表にある「標準設定の典型的な作業で Opus 5 より40%安い」とも、同じ方向の結果です。

同じトークン数に GPT-6 Astra の単価を掛けると約$306ですが、トークナイザーも往復回数もモデルで違うため、参考値です。

定額プランとの関係

サブスクリプションの使用量がどう計算されているかは公開されていません。
また、Anthropic は Opus 5.5 の公開(2026-09-22)にあわせて、Pro・Max・Team などで 5時間枠の上限を引き上げた と発表しています。

なので「定額枠が減りにくいのは単価のせい」とは言い切れません。
言えるのは、API 換算の費用は、キャッシュ読み込みの単価でほぼ決まる というところまでです。

まとめ

  • エージェント型の開発では、トークンのほとんどがキャッシュ読み込みになる(私のログで97〜98%)
  • だから料金比較は、入力・出力の単価より キャッシュ読み込みの単価 を見る
  • ログを集計するときは message.id で重複を除く
  • ログは既定で30日で消える(cleanupPeriodDays で変更可)。比べたい期間があれば早めに集計する

Opus 5.5 と GPT-6 Astra(Codex)をどう使い分けているかは、こちらにまとめました。
👉 Claude Opus 5.5とGPT-6 Astra(Codex)の料金比較──Claude Codeの実ログで試算した使い分け


業務の自動化ツールを、要件定義から設計してつくっています。
👉 ご依頼・ご相談はこちら(クラウドワークス)

関連記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?