Claudeのトークンとは何か、どう機能するのか? 38億トークンを数えてみました
トークンは単語の断片で、Claudeは入力、キャッシュ書き込み、キャッシュ読み取り、出力の4種類を数えています。私たち自身のClaude Codeセッション30日分、38億トークンを数えたところ、98%はキャッシュから読み直された会話で、Claudeが書いたものは0.3%でした。種類ごとのコスト、ターンを重ねるごとにセッションが重くなる理由、そして5時間ウィンドウが何を測っているのかを解説します。
Claudeのまわりでは、この言葉をどこでも目にします。料金表に、上限のメッセージに、/usageに、節約をうたうあらゆる記事に。それなのに、トークンとは何かを説明している人はほとんどおらず、みんなが見ている数字が本当に重要な数字であることもまれです。Claudeが書き返す部分は、コーディングセッションでカウントされる量の1%にも満たないのです。
そこで、自分たちの分を数えました。1台のMacで動かしたClaude Codeセッション30日分、2026年9月10日から10月9日まで。388セッション、モデルへの19,668リクエスト、38億トークンです。トークンとは何か、Claudeがそれを数える4つの方法、そしてそれらの数字が実際の作業でどう見えるかを紹介します。
トークンはテキストの断片で、断片の大きさは変わる
モデルは文字も単語も読みません。読むのはトークンです。固定された語彙から取り出したテキストの断片で、短い単語まるごとのこともあれば、たいていは単語の一部、見たことのないものなら1文字や1バイトのこともあります。すべてはこの断片で数えられます。あなたが送るもの、Claudeが書くもの、ターンとターンの間に保持するものです。
1トークンに収まるテキストの量は、モデルと言語によって変わります。Anthropicの用語集では、Claude 4.7より前のモデルで1トークンあたり英語約3.5文字とされ、Claude 4.7以降は新しいトークナイザーを使い、同じテキストでトークン数が約30%増えるとしています。正確な数は、使う予定のモデルを指定してトークンカウント用エンドポイントに問い合わせたときにしか得られません。
私たちは自分たちのテキストで比率を測りました。私たちのエージェントはフランス語で回答するので、思考なし、ツール呼び出しなし、コードブロックなし、80単語以上の、テキストのみの回答を集めました。Opus 5、Opus 5.5、Fable 5.1、Sonnet 5.5にまたがる296件です。中央値は1トークンあたり2.3文字、1単語あたり約2.6トークンでした。コード、JSON、ラテン文字以外の文字体系では比率が変わります。大事なのは正確な数字ではありません。トークンは単語より小さく、手で数えることは決してない、ということです。
すべてのリクエストは4つのカウンターで数えられる
Claude Codeはすべてのセッションを~/.claude/projects/配下のJSONLトランスクリプトに書き出します。モデルからの各回答にはusageブロックが付いています。私たちのトランスクリプトから取った実際の例を、役に立つフィールドだけ残して示します。
"usage": {
"input_tokens": 2,
"cache_creation_input_tokens": 51836,
"cache_read_input_tokens": 24882,
"output_tokens": 315,
"output_tokens_details": { "thinking_tokens": 54 },
"cache_creation": {
"ephemeral_1h_input_tokens": 51836,
"ephemeral_5m_input_tokens": 0
}
}
カウンターは4つあり、値段はそれぞれ違います。
input_tokens:プロンプトのうち、キャッシュに書き込まれもせず、キャッシュから読み取られもしない部分で、基本の入力価格で課金されます。Claude Codeではほぼ常に数トークンです。ほとんどすべてがキャッシュを通るからです。cache_creation_input_tokens:次のリクエストが再利用できるようにキャッシュに保存されるプロンプトの部分です。キャッシュ書き込みは、5分キャッシュなら入力価格の1.25倍、1時間キャッシュなら2倍かかります。私たちのトランスクリプトでは、書き込みの97%が1時間キャッシュでした。cache_read_input_tokens:キャッシュから再生されるプロンプトの部分です。キャッシュ読み取りは、ほとんどのモデルで入力価格の0.1倍、Opus 5.5とSonnet 5.5では0.05倍、Fable 5.1では0.025倍です(Anthropicのプロンプトキャッシュのページ、2026年10月10日に確認)。output_tokens:Claudeが書くもので、思考も含みます。出力は現行のすべてのモデルで入力価格の5倍です。100万トークンあたりOpus 5.5で20ドル、Opus 5で25ドル、Fable 5.1で50ドル、Sonnet 5.5で10ドルです。
最初の3つを足すと、そのリクエストでモデルが読んだコンテキストになります。4つ目が回答です。
私たちのセッション30日分はこうなった
19,668リクエストを、1リクエストにつき1回ずつ数えました(1回のAPI呼び出しがトランスクリプトの複数行にまたがることがあります)。
| カウンター | トークン | トークンに占める割合 | APIの定価でのコストに占める割合 |
|---|---|---|---|
| 入力(キャッシュなし) | 114,411 | 0.003% | 0.04% |
| キャッシュ書き込み | 74,834,070 | 2.0% | 37.4% |
| キャッシュ読み取り | 3,710,054,709 | 97.7% | 45.7% |
| 出力 | 12,727,193 | 0.34% | 16.8% |
| 合計 | 3,797,730,383 | 100% | 2,563ドル |
コストの列は、各リクエストをそれ自身のモデルとそれ自身のキャッシュ期間で値付けしています。私たちがこの金額を払っているわけではありません。これらのセッションはサブスクリプションで動いていました。これは各カウンターの重みであり、AgentsRoomがプランのパーセンテージをプロジェクト間で配分するときに使うのと同じ重み付けです。
読み取れることは3つです。
ほぼすべてのトークンは、読み直されている会話です。 トークンの97.7%はキャッシュ読み取りです。リクエストの99.2%がキャッシュから何かを読んでいます。誰かがセッションで「5,000万トークン使った」と言うとき、見ているのはこれです。
Claudeが書く量はトークンではわずかでも、コストではわずかではありません。 トークンの0.34%で、請求額の16.8%です。出力がいちばん高いトークンだからです。その出力の29%が思考でした。
キャッシュ書き込みは高くつく意外な存在です。 トークンの2%で、コストの37%です。キャッシュの期限切れが原因だろうと予想していましたが、冷えたコンテキストを書き直す必要があったのは19,668リクエスト中16件だけで、そのうち7件は1時間以上何もしなかった後でした。書き込みの79%は、新しいメッセージやツール結果がそれぞれ一度だけ、入力価格の2倍で保存され、その後のターンのたびに読み直されているにすぎません。残りの20%は各セッションの最初のリクエストです。
ターンを重ねるごとにセッションが重くなる理由
モデルは2つのリクエストの間に何も保持しません。Claude Codeは毎回すべてを送り直します。システムプロンプト、ツール定義、CLAUDE.md、すべてのメッセージ、読んだすべてのファイル、すべてのコマンド出力です。キャッシュは繰り返される部分をトークンあたり安くするだけで、無料にはならず、小さくもなりません。
セッション内の位置ごとの、1リクエストあたりに読まれたコンテキストの中央値です。
| セッション内のリクエスト | リクエスト数 | コンテキストの中央値 |
|---|---|---|
| 1件目 | 388 | 5万2,000トークン |
| 2〜10件目 | 3,210 | 9万3,000トークン |
| 11〜50件目 | 8,546 | 16万1,000トークン |
| 51〜200件目 | 6,414 | 23万7,000トークン |
| 201件目以降 | 1,110 | 34万2,000トークン |
中央値のリクエストは、290トークンの回答を書くために17万9,000トークンのコンテキストを読んでいました。この比率が、コーディングエージェントにおけるトークンのすべてを物語っています。回答は短く、読む量は多く、そして読む量はセッションとともに増えていきます。
私たちの最初のリクエストは重く、誰も何も入力しないうちに5万2,000トークンあります。私たちのエージェントは長い役割説明と、ツール定義がプロンプトに入る4つのMCPサーバーを抱えて起動するからです。空のフォルダで素のClaude Codeセッションを始めれば、ずっと少なくなります。最初のメッセージの前に何を抱えているかは/contextで確認できます。
1セッションが使う量
3リクエスト以上の380セッションについて:
- 中央値で33リクエスト、中央の半数で16〜61。
- 中央値で出力トークン2万7,000、1万2,000〜4万8,000。
- 中央値で処理トークン540万、中央の半数で150万〜1,070万、そのうち510万がキャッシュ読み取り。
- 中央値で18万1,000トークンがキャッシュに書き込まれるか、キャッシュなしで送られました。本当に新しかった部分です。
- APIの定価で中央値4.55ドル、中央の半数で1.81〜9.25ドル。
つまり「コーディングセッションは何トークン使うのか」への正直な答えは、おおよそ100万から1,000万の範囲で、そのほとんどが同じコンテキストの読み直しです。午後いっぱい1つの長いタスクを続けるセッションは範囲の上のほうに、バグを1つ直して終わるセッションは下のほうに位置します。
5時間ウィンドウと週が実際に数えているもの
ProプランやMaxプランでは、トークン残高が表示されることはありません。Anthropicのヘルプセンターによると、どちらのプランにも5時間のセッション上限と週次の上限があり、これらの上限はClaudeとClaude Code(IDEを含む)で共有され、Maxプランには別枠でFable用の週次上限があります。どの上限についてもトークン数は公表していません。/usageはそれぞれのウィンドウのパーセンテージと、リセットされる時刻を表示します。
このパーセンテージを動かすものとして、Anthropic自身が挙げているのは次のとおりです。メッセージの長さ、添付ファイルのサイズ、現在の会話の長さ、ツールの使用、モデルの選択、推論の強度、そして複数ステップのタスク。上の表と照らし合わせると、コーディングセッションで支配的なのは「現在の会話の長さ」です。各リクエストで読まれるコンテキストは、50リクエストのうちに5万2,000トークンから23万7,000トークンまで増えます。ヘルプセンターは、プロジェクト内のキャッシュされたコンテンツは再利用時に上限への影響が小さくなるとも述べており、これはキャッシュ読み取りの価格と同じ考え方です。
Anthropicがトークンをウィンドウのパーセンテージにどう換算しているのかはわかりませんし、換算式をでっち上げるつもりもありません。データが示しているのは、長いセッションの後半のリクエストは、同じ質問でも序盤のリクエストの何倍にもカウントされる、ということです。
実際にカウントを変えるもの
私たちのデータで効いた順に、4つのレバーです。
- 無関係なタスクの間には
/clear。 Anthropicはこれを「品質とコストの両方にとって最も効果的なレバー」と呼んでいます。古いセッションで新しいタスクを始めると、リクエストのたびに古いタスクのコンテキスト分を払うことになります。 - 長いセッションを続けるときは
/compact。 履歴を短い要約に置き換えるので、その後のリクエストが読む量が減ります。 - コンテキストに入るものに気を配る。 2万トークンのファイル読み込みやコマンド出力は、入力価格の2倍で一度書き込まれ、その後セッションが終わるまで、リクエストのたびに読み直されます。ファイル全体ではなく必要な行だけを読めば、二重に得をします。
- モデルと推論の強度。 私たちの出力の29%は思考で、出力はいちばん高いトークンです。定型作業で推論の強度を下げれば出力が減り、安いモデルにすればすべての価格が一度に下がります。
私たちのデータで効かなかったもの:セッションを放置すること。私たちのトランスクリプトでClaude Codeが使っている1時間キャッシュでは、冷えた状態からの書き直しは30日間で16回でした。
ほかの節約方法については、Claude Codeのトークンコストを削減する方法を参照してください。
自分の分を数える
上の表は、依存関係のないスクリプトから作ったものです。マシン上のすべてのClaude Codeトランスクリプトを読み、各リクエストを1回ずつ数え、4つのカウンターとセッションごとの中央値を出力します。期間を区切りたいならo["timestamp"]にフィルターを追加してください。
import json, glob, os, statistics as st
from collections import defaultdict
FIELDS = ("input_tokens", "cache_creation_input_tokens",
"cache_read_input_tokens", "output_tokens")
totals, sessions = defaultdict(int), []
for path in glob.glob(os.path.expanduser("~/.claude/projects/*/*.jsonl")):
seen, session = set(), defaultdict(int)
with open(path, errors="ignore") as fh:
for line in fh:
try: o = json.loads(line)
except ValueError: continue
msg = o.get("message") or {}
usage = msg.get("usage") if isinstance(msg, dict) else None
if o.get("type") != "assistant" or not usage: continue
rid = o.get("requestId") or o.get("uuid")
if rid in seen: continue # one API call can span several lines
seen.add(rid)
session["requests"] += 1
for f in FIELDS:
n = usage.get(f) or 0
totals[f] += n
session[f] += n
if session["requests"] >= 3: sessions.append(session)
grand = sum(totals[f] for f in FIELDS)
for f in FIELDS:
print(f"{f:30s} {totals[f]:>15,} {100 * totals[f] / grand:6.2f}%")
for key in ("requests", "output_tokens", "cache_read_input_tokens"):
print(f"median per session, {key}: {st.median(s[key] for s in sessions):,.0f}")
あなたの割合を私たちのものと比べてみてください。キャッシュ読み取りの行は読み直されている会話で、キャッシュ書き込みの行は新しかった部分です。この2行のほうが、出力の行よりも請求額について多くを語ります。
AgentsRoomでの表示場所
スクリプトでわかるのは1か月分です。作業中は、AgentsRoomが同じカウンターをエージェントごとに表示します。セッションが重くなると赤くなる、各セッションのコンポーザーにあるトークンバッジ、入力、出力、キャッシュ書き込み、キャッシュ読み取り、キャッシュヒット率を表示するセッションモニター、そしてセッションをターンごとに再生し、どのファイル読み込みやツール結果がコンテキストを埋めたかを示すセッショントレースです。使用量パネルは、プランが報告するパーセンテージをプロジェクトとエージェントの間で配分し、各セッションをAPI価格でかかる金額で重み付けします。上の表と同じ重み付けです。
これらのどれもトークン残高は示しません。あなたのプランにはそもそも残高がないからです。その疑問については、Claudeであと何トークン残っているかを参照してください。出力トークンが届く速さについては、Claude Codeの秒間トークン数を実測を参照してください。
よくある質問
Claudeのトークンとは何ですか?
Claudeがテキストを読み書きする単位です。単語の一部、ときには短い単語まるごと、ときには1文字や1バイトになります。Anthropicによると、サイズはモデルと言語によって変わります。Claude 4.7より前のモデルでは1トークンが英語で約3.5文字で、Claude 4.7以降は新しいトークナイザーを使い、同じテキストでトークン数が約30%増えます。Claudeが行うことはすべてトークンで計量されます。あなたが送るもの、Claudeが書き返すもの、そしてターンとターンの間にキャッシュに保持するものです。
Claudeの1トークンは何文字、何単語ですか?
言語とテキストによって変わります。AnthropicはClaude 4.7より前のモデルで1トークンあたり英語約3.5文字としており、Claude 4.7以降では同じテキストでトークン数が約30%増えます。2026年9月と10月に私たちのエージェントがフランス語で書いたテキストのみの回答296件では、1トークンは2.3文字、1単語あたり約2.6トークンでした。コード、JSON、ラテン文字以外の文字体系では比率が変わります。正確な数を知るには、Anthropicのトークンカウント用エンドポイントにテキストとモデルを渡します。
Claude Codeはなぜこれほど多くのトークンを使うのですか?
リクエストのたびに会話全体を送り直すからです。システムプロンプト、ツール定義、CLAUDE.md、それまでのすべてのメッセージとすべてのツール結果です。私たちの19,668リクエストでは、中央値のリクエストが290トークンの回答を書くために17万9,000トークンのコンテキストを運んでおり、コンテキストはセッション最初のリクエストの5万2,000トークンから、50リクエスト後には23万7,000トークンまで増えていました。キャッシュのおかげでこの読み直しはトークンあたり安くなりますが、それでもカウントはされます。
一般的なClaude Codeセッションは何トークン使いますか?
2026年9月10日から10月9日までに記録した、3リクエスト以上の380セッションでは、中央値で33リクエスト、出力トークン2万7,000、処理トークン合計540万で、そのうち510万がキャッシュ読み取りでした。セッションの半数は150万から1,070万トークンの間に収まりました。APIの定価なら、この中央値のセッションは約4.55ドルかかった計算です。ProプランやMaxプランでは、同じ作業が代わりに5時間ウィンドウと週次ウィンドウに計上されます。
思考トークンもカウントされますか?
はい。思考トークンはすべてのusageブロックでoutput_tokensに含まれており、出力のうちどれだけが思考だったかをthinking_tokensフィールドが示します。APIでは出力の価格で課金され、Anthropicはプランの使用量上限を早く消費させる要因の一つとして推論の強度を挙げています。私たちのコーパスでは、モデルが書いたもの全体の29%が思考でした。
キャッシュ書き込みとキャッシュ読み取りのトークンの違いは何ですか?
キャッシュ書き込みは、次のリクエストが再利用できるようにプロンプトの一部を保存するもので、通常の入力より高くつきます。5分キャッシュなら入力価格の1.25倍、1時間キャッシュなら2倍です。キャッシュ読み取りは保存済みの部分を再利用するもので、ずっと安く済みます。ほとんどのモデルで入力価格の0.1倍、Opus 5.5とSonnet 5.5では0.05倍、Fable 5.1では0.025倍です。私たちのセッションでは、キャッシュ読み取りがトークンの98%、定価ベースのコストの46%を占め、キャッシュ書き込みはトークンの2%、コストの37%でした。
AgentsRoomをダウンロード
すべてのAIエージェントを、すべてのプロジェクトで、ひとつのウィンドウから実行。
コンパニオンアプリ:外出先でもエージェントを確認
Claude、Codex、Antigravity CLI、またはその他の AI プロバイダーを使用します。
バグや要望を公開バックログに直接送信できます。
続きを読む
SSH が切れても Claude Code を動かし続ける:tmux のレシピ
tmux を使えば、SSH が切れても Claude Code は動き続けます。同じプロセスに再接続し、永続性を確かめ、AgentsRoom のオプトイン設定を使う方法です。
記事を読むClaude Code の Routines:クラウドで動くもの、自分のマシンに残るもの、そして選び方
Routines は、保存したプロンプトをあなたなしで実行するための Claude Code の仕組みです。スケジュール、API 呼び出し、GitHub のイベントをきっかけに、リポジトリを新しくクローンした cloud session として動きます。現在はリサーチプレビューの段階です。Claude Code には作業をローカルでスケジュールする方法も 2 つあり(デスクトップアプリのスケジュールタスクと /loop)、3 つの挙動は同じではありません。最小間隔、ローカルファイルへのアクセス、権限確認、ノートパソコンがスリープしたときに何が起きるか。このガイドではドキュメントに書かれた制限とともに 3 つを並べ、そのうえで私たち自身の 7 つの夜間エージェントがなぜローカルのマシンで動いているのかを説明します。
記事を読む7つのAIエージェントが私たちの夜を回す:コーディング以外で働くスケジュールエージェントと、そのプロンプト
あるユーザーから、コードを書く以外にAIエージェントをどう使っているのかと聞かれました。8月28日から、7つのスケジュールエージェントが毎晩Mac mini上で起動しています:当直のCEO、SEOチーム、プロダクトマネージャー、バグの修正担当、SNSチーム、ドキュメント担当、そして25行の要約をメールで送る報告担当。33晩、31通の朝のメール、コミットへのリンク付きで修正したバグ51件、20言語のブログ記事7本。それぞれが何をしているのか、会話せずにどう仕事を受け渡すのか、どのモデルがどの仕事を担うのか、プロンプトが学ばなければならなかった4つのルール、そしてそのままコピーできるプロンプトそのもの。
記事を読む