Claude Codeを使っていて、最近やけにレート制限に引っかかると感じていませんか?
その原因のひとつが、Anthropicによるキャッシュ設定の変更かもしれません。
Redditの r/ClaudeAI で、あるユーザーが自身のセッションログを徹底的に分析しました。
そして、興味深い事実を突き止めたのです。
本記事では、その投稿内容とコミュニティの反応を紹介します。
あわせて、この問題の全体像も整理してみます。
何が起きたのか
Claude Codeは会話ターンごとに、どのキャッシュ階層を使ったかをログに記録しています。
種類は ephemeral_1h_input_tokens(1時間キャッシュ)と ephemeral_5m_input_tokens(5分キャッシュ)の2つ。
各ターンでは、どちらか一方だけが使われる仕組みです。
投稿者はこのログデータを、1,140セッション分にわたって解析しました。
そして、日付ごとの分布をプロットしたのです。
結果は明白でした。
3月1日から4月1日までは、すべてのターンが1時間キャッシュを使用。
4月2日が移行日で、1時間と5分のキャッシュが混在。
そして4月3日以降は、100%が5分キャッシュに切り替わっていました。
切り替えが起きたのは、4月2日のUTC 06:23から06:55の間とのこと。
アナウンスはなし。
変更履歴にも記載なし。
ドキュメントには依然として「最大1時間」と書かれたままでした。
コメント欄の「どちらも正しかった」問題
この投稿の前に行われた議論では、ユーザー間で意見が割れていたそうです。
「キャッシュのTTLは1時間だ」と主張する人。
「いや、5分だ」と主張する人。
この対立には理由がありました。
4月2日より前からClaude Codeを使っていた人にとっては、1時間キャッシュの感覚が正しかったのです。
一方、4月以降に使い始めた人にとっては、5分キャッシュが現実でした。
つまり、両陣営とも自分の経験に基づいた正しい主張をしていたわけです。
コストへのインパクト
投稿者の実データによると、切り替え前後でキャッシュバストの頻度が劇的に変わりました。
キャッシュバストとは、キャッシュが失効して再構築が必要になることを指します。
変更前は1日あたり39回。
それが変更後には199回へ。
約5.1倍の増加です。
コストで見ると、1日あたり6.28ドルだったバスト関連費用が15.54ドルに跳ね上がりました。
月単位に換算すると、この変更だけで約277.80ドルの追加コストが発生する計算です。
ただし、コストの倍率が頻度の倍率より低い点は注目に値します。
1時間キャッシュはトークンあたりの書き込み単価が高いため、1回あたりのバストコストは変更後のほうがやや安くなりました。
しかし、頻度の増加がそれを上回ったのです。
結果として、全体のコストは大幅に膨らみました。
見落とされがちな問題:バックグラウンドタスクの罠
投稿者が指摘した中でも、特に重要なのがバックグラウンドタスクの問題です。
Claude Codeは長時間かかるツール呼び出しやエージェント処理を実行する際、セッションをバックグラウンドに回します。
ここで問題が生じます。
タスクが5分以上かかって戻ってきた場合、その時点でキャッシュはすでに失効済みなのです。
次のターンでは、コンテキスト全体を再構築する必要があります。
当然、フルプライスの入力コストが発生します。
皮肉なことに、Claudeがバックグラウンドに回すのは「時間がかかりそう」と判断したタスクばかりです。
つまり、5分を超える可能性が高い処理こそ、この罠にはまりやすいのです。
冗長な読み取りの増加
キャッシュの有効期限が短くなったことで、別の問題も生じています。
セッションあたりのファイル読み取り回数が増加傾向にあります。
それに伴い、冗長な読み取りも増えているとのこと。
冗長な読み取りとは、同じファイルを1セッション内で3回以上読む行為を指します。
投稿者によると、これは偶然の一致ではありません。
キャッシュがセッション途中で失効すると、Claudeは以前読んだ内容への確信を失います。
そのため、ファイルを再度読み込んでコンテキストを再確認しようとするのです。
再読み込みのたびに会話履歴が膨らみます。
すると、次のキャッシュ再構築コストも高くなる。
2つの問題が互いを増幅させる構造です。
投稿者が見つけた対策
投稿者は設定変更による対策をいくつか紹介していました。
そのひとつが CLAUDE_CODE_DISABLE_1M_CONTEXT 環境変数の設定です。
これはコンテキストの上限を、100万トークンから20万トークンに制限するものです。
キャッシュバストが発生すると、コンテキスト全体の再構築が必要になります。
コンテキストが広ければ広いほど、1回のバストあたりのコストも膨らむわけです。
100万トークンなら、20万の5倍のコストがかかります。
バスト頻度が高い現状では、コンテキストを制限するのが最も効果的だと投稿者は述べていました。
また、キャッシュ失効の警告を出すフックスクリプトも公開されています。
キャッシュの残り時間が少なくなったタイミングで通知を受け取れる仕組みです。
これにより、無駄なバストを回避しやすくなります。
コミュニティの反応
この投稿に対するコミュニティの反応は、概ね批判的でした。
「事前告知なしの変更は問題だ」という意見が多数を占めています。
あるコメントでは、OpenAIとの比較がなされていました。
OpenAIはPlusプランの利用制限を変更した際、「コスト的に厳しいので利用量を減らす必要がある」と事前に説明しました。
さらに、「代わりに100ドルのプランも用意した」とも伝えています。
一方、Anthropicは何のアナウンスもなく設定を変えたのです。
また、冷静な分析を試みるコメントもありました。
キャッシュの短縮が、Anthropicにとって本当に増収につながるのかという疑問です。
キャッシュが短くなれば、キャッシュ済みデータを返す代わりにフルの計算処理が必要になります。
その分、コンピュートリソースを余分に消費します。
コンピュートが逼迫している状況でそれをやれば、処理できるリクエスト総数が減るだけではないか。
そんな指摘でした。
この反論に明確な結論は出ていません。
しかし、ユーザー側のコスト増は事実として残ります。
APIユーザーとの違い
コメント欄では、APIユーザー向けの情報もありました。
APIを直接利用する場合、キャッシュ階層は明示的に選択できるとのことです。
Anthropicのドキュメントによると、1時間キャッシュは依然として利用可能です。
ただし、コストは高めに設定されています。
今回の問題は、あくまでClaude Codeのデフォルト設定が変わったという話です。
APIを直接利用する開発者には、影響しない可能性もあります。
ただ、1時間キャッシュに切り替えた場合のコスト比較をしたコメントもありました。
利用パターンによっては、5分キャッシュのほうが安くなるケースもあるようです。
まとめ
今回のReddit投稿が明らかにしたのは、ひとつの事実です。
AnthropicがClaude Codeのデフォルトキャッシュ有効期限を、1時間から5分へ事前告知なしに変更していた。
技術的には、ログデータという客観的な証拠に基づいた分析で、説得力があります。
変更日時まで特定されており、コミュニティ内での議論の食い違いにも明快な説明を与えていました。
Claude Codeを業務で使っているなら、自分のセッションログを確認してみてください。
コンテキスト上限の制限やキャッシュ監視の仕組みを導入するだけで、不要なコスト増を抑えられるかもしれません。
ただし、こうした対策はあくまで応急処置に過ぎません。
サービス提供者が料金やサービス内容に影響する変更を行うなら、ユーザーへ事前に説明すべきです。
その原則は変わらないでしょう。
