Claude Code を使っていて「なんかコストかかるな…」と思ったことはないでしょうか。以前、デフォルト設定のまま使い続けると推定 2 億 6,400 万トークンもの無駄が発生するという事例が話題になりました。
その後 Claude Code 自体が大幅に改善されましたが、トークン消費を意識した使い方は今でも重要です。本記事では、現在のバージョン(2026年4月時点)で有効な最適化ポイントを整理します。
ツール検索の遅延ロード(Deferred Tools)
以前の Claude Code では、すべてのツール定義がセッション開始時にコンテキストに読み込まれ、大量のトークンを消費していました。ENABLE_TOOL_SEARCH を明示設定することで改善できるという報告もありました。
現在のバージョンでは、この問題はビルトインで解決されています。 ツール定義は「遅延ロード(Deferred Tools)」方式に変わり、ツール名だけがコンテキストに載り、実際のスキーマは必要になった時点で初めてロードされます。ENABLE_TOOL_SEARCH を手動で設定する必要はありません。
プロンプトキャッシュの 5 分 TTL — 今も最大の落とし穴
Claude のプロンプトキャッシュは 5 分で期限切れになる。これは現在も変わっておらず、トークンコストに最も影響する要素だ。
5 分休憩しただけで、会話全体が再処理され、コストが 10 倍以上に跳ね上がることがある。
つまり:
- 長時間セッションの途中で離席する
- ちょっと休憩してから作業再開する
- 別の作業をしてから Claude Code に戻ってくる
といった行動がすべて、想定外のコスト増につながる。「休憩明けの最初のメッセージが一番高い」というのは、このキャッシュ再処理が原因だ。
キャッシュを意識した作業フロー
- 5 分以内に次の操作を行う — キャッシュが維持される
- 長い離席の前にセッションを終了する — 戻ってきたら
/resumeで再開した方が、コンテキストが圧縮されて効率的 - タスクの区切りで
/compactを実行する — 手動でコンテキストを圧縮し、次のキャッシュミス時のコストを下げる
コンテキスト自動圧縮を活かす
Claude Code はコンテキストウィンドウの上限に近づくと、過去の会話を自動的に圧縮する。この仕組みのおかげで、長時間セッションでも会話が途切れることはない。
ただし、圧縮時にはトークンが消費される。不要にコンテキストを膨らませないことが、結果的にコスト削減になる。
コンテキストを膨らませない工夫
| やりがちなこと | 改善策 |
|---|---|
| 大きなファイルを全行読む | 必要な範囲だけ offset / limit 指定で読む |
| ビルドログをそのまま流す | エラー時だけ出力を確認する |
| 試行錯誤を同一セッションで続ける | 方針が変わったら新しいセッションで仕切り直す |
| CLAUDE.md に大量の指示を詰め込む | 必要最小限に保つ(毎ターンのコンテキストに載る) |
現在のビルトイン最適化機能
2026年4月時点で Claude Code に組み込まれている主なトークン最適化機能:
| 機能 | 説明 |
|---|---|
| Deferred Tools | ツールスキーマの遅延ロード。未使用ツールのトークン消費をゼロに |
| コンテキスト自動圧縮 | ウィンドウ上限に近づくと過去の会話を自動要約 |
| プロンプトキャッシュ | 5 分 TTL で同一プレフィックスのキャッシュヒット |
| Bash 出力トランケーション | 長すぎるコマンド出力を自動的に切り詰め |
| /compact コマンド | 手動でコンテキストを圧縮 |
まとめ
Claude Code のトークン効率は初期と比べて大幅に改善されている。以前は settings.json の手動チューニングが必要だったツール検索の問題も、現在は Deferred Tools としてビルトインで解決済みだ。
それでも プロンプトキャッシュの 5 分 TTL は今なお最大のコスト要因であり、作業フローを意識するだけで大きな差が出る。「連続して作業する」「区切りで圧縮する」「不要にコンテキストを膨らませない」——この 3 点を意識するだけで、トークン消費を効果的に抑えられる。