CoreCode を使いこなす
キャッシュと課金
Claude Code は毎ターン、システムプロンプト、ツール定義、会話全体を送り直します。これがプロンプトキャッシュに当たると、通常の入力料金の 2.5~10%(Opus 5.5 と Sonnet 5.5 では 5%)のキャッシュ読み取りとして課金されます。つまり、使った金額はキャッシュヒット率でほぼ決まります。キャッシュ以外の節約方法はClaude Code の節約ガイドを参照してください。
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS を設定していると、ツール呼び出しのたびに追加のチェックリクエストが先に送られます。これはほとんどキャッシュに当たらず、利用ログでは Non-stream と表示され、支出の半分以上を占めることもあります。auto モードのコストを参照してください。キャッシュの課金のしくみ
Anthropic のプロンプトキャッシュは先頭からの一致で判定します。リクエストの冒頭がそれまでにキャッシュした内容と同一である場合にのみ、キャッシュが読み取られます。リクエストの入力は 3 つに分けて課金されます。
| 区分 | 意味 | 入力料金に対する比率 |
|---|---|---|
| キャッシュ読み取り | キャッシュ済みの先頭部分と一致した部分 | Opus 5.5 と Sonnet 5.5 は 0.05 倍、Haiku 5.5 は 0.1 倍、Fable 5.1 は 0.025 倍 |
| キャッシュ書き込み | キャッシュに新しく書き込まれた部分。5 分と 1 時間で料金が異なる | 5 分で約 1.25 倍、1 時間で 2 倍 |
| 入力 | キャッシュされない部分。Claude Code では通常わずかなトークン | 1 倍 |
単価は料金ページにあります。通常の Claude Code セッションでは、1 ターンで書き込まれるのは新しい数百~数千トークンだけで、残りの数十万トークンはキャッシュ読み取りです。先頭部分が変わると、コンテキスト全体が書き込み料金で書き直され、一度に数十万トークンになることもよくあります。
CoreCode の対応
- ネイティブのパススルー:
/v1/messagesは変換しません。cache_controlマーカーとanthropic-betaヘッダーはそのまま Anthropic に届くため、1 時間キャッシュも使えます。 - セッションアフィニティ:1 つの Claude Code セッション(セッション ID とモデルで判別)は同じ上流アカウントに固定されるので、アカウントの切り替えでキャッシュが失われることはありません。サービスの再起動後も紐付けは復元されます。
- 公式の料金体系:入力、出力、キャッシュ読み取り、5 分と 1 時間のキャッシュ書き込みを別々に課金し、すべての記録が利用ログに残ります。
キャッシュが切れるかどうかはクライアントが何を送るかで決まります。以下は Claude Code 自体の挙動で、どのリレーを使っても、Anthropic に直接つないでも同じです。
auto モードのコスト
Claude Code の auto パーミッションモードは、毎回あなたに確認する代わりに、操作を実行してよいかを自分で判断します。チェック対象の操作ごとに判断が必要です。v2.1.278 以降、ゲートウェイやプロキシ経由のとき、Claude Code はまず通常のモデルリクエストの中でサーバーに操作のレビューを依頼し、追加のリクエストは発生しません。CoreCode はそれらのリクエストとレビュー結果をそのまま通します。2026 年 10 月 30 日のテストでは、Opus 5.5 と Sonnet 5.5 の auto モードはサーバーでレビューされ、メインの会話のリクエストだけで追加コストはありませんでした。
サーバーがレビューしない場合、Claude Code は従来の方式に戻ります。ツール呼び出しの前に、会話履歴の一部と実行待ちの操作を含む別の分類器リクエストを送り、モデルが許可するかどうかを判断します。公式ドキュメントには、API キーやリレー経由ではこの分類器リクエストもトークン使用量に数えられると書かれています。CoreCode でこの方式に戻るセッションは、ほぼすべて CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS を設定しているもので、この変数はサーバーレビューも無効にします。CLAUDE_CODE_AUTO_MODE_SERVER=0 を設定しても同じです。
このチェックが拒否されることもあります。チェックでは会話履歴の一部をモデルに渡し、判定の前に推論を書き出すよう求めます。CoreCode では、Anthropic の安全分類器がこうしたリクエストを推論の抽出(reasoning_extraction)として拒否する例を繰り返し確認しています。拒否されるのは Claude Code 自身のチェックで、あなたが書いた内容ではなく、CoreCode がアカウントにペナルティを与えることもありませんが、同じチェックは再転送されず、再送は止められます(403 を参照)。CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS を外してサーバーにレビューさせれば、この別チェックは発生しなくなります。
フォールバック時に分類器が使うモデル:Anthropic の既定は Claude Sonnet 5 です。CoreCode が提供しているのは Sonnet 5.5、Opus 5.5、Haiku 5.5、Fable 5.1 で、Sonnet 5 はありません。Anthropic の規則により、その場合 Claude Code はセッションのモデルを代わりに使います。したがって Opus でコーディングしているときは、チェックもすべて Opus の料金で課金されます。
別の分類器リクエストにフォールバックしたとき、そのコストは次のようになります。
問題は、このチェックのうち最初のわずかな部分しかキャッシュに当たらないことです。残りの数万トークンは毎回書き込み直され、次のチェックは今回書き込まれた内容を使えません。実際の例では次のとおりでした。
- メインの会話は 95% 以上キャッシュに当たり、毎ターン 20~30 万のキャッシュ済みトークンを読み取っていて、問題はありませんでした。
- ツール呼び出しのたびにチェックのリクエストが追加され、キャッシュ読み取りは 1~2 万トークンだけで、約 6.5 万トークンが新規書き込みされ、出力は数十トークンでした。
- このチェックはリクエスト数の 3 分の 1 でしたが、クレジットの 60% を使っていました。
見分け方
- 利用ログのストリーム列が Non-stream になっています。Claude Code のメインの会話は常にストリーミングなので、非ストリーミングのリクエストはほぼこのチェックです。
- 多くはストリーミングリクエストの数秒後に続き、キャッシュ読み取りは少なく、キャッシュ書き込みは数万トークン、出力はごく短くなります。
- コンソールではキャッシュミスとして表示されます。カーソルを合わせると、auto モードのチェックである可能性が高いというツールチップが出ます。そのようなリクエストが大半を占めるときは、概要ページのお知らせでも個別に取り上げられます。
auto モードが有効か確認する
- Claude Code v2.1.283 から、新しいターミナルと VS Code のセッションは既定で auto で始まり、ユーザーの設定は不要です。ステータスバーに
⏵⏵ auto mode onと表示されます。 - 起動コマンドに
--permission-mode autoが含まれている。 - セッション中に Shift+Tab でパーミッションモードを切り替え、入力欄の下のバーが auto になっている。
対処法
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASを削除する:~/.claude/settings.jsonのenvブロック、プロジェクトの.claude/settings.json、シェルのプロファイルを確認して削除し、CLAUDE_CODE_AUTO_MODE_SERVER=0があればそれも消してください。CoreCode にはどちらも必要ありません。新しいセッションを開始すると、auto モードはサーバーでレビューされ、別のチェックは発生しません。/statusでAuto mode serverがEnabledと表示されれば確認できます。- 放置して任せる必要がないときは auto をオフにする:Shift+Tab で Manual または accept-edits モードに切り替えると、チェックは止まります。毎回のセッションを Manual で始めるには、
~/.claude/settings.jsonに次を書きます。
accept-edits で始めたい場合は、{ "permissions": { "defaultMode": "default" } }defaultをacceptEditsに置き換えます。 - より安い分類器モデルを使う:Claude Code v2.1.302 以降、環境変数
CLAUDE_CODE_AUTO_MODE_MODELで分類器のモデルを指定でき、完全なモデル ID を指定します。Opus でコーディングしているときにclaude-sonnet-5-5を指定すると、チェックは Sonnet の料金で課金されます。
分類器は操作が安全かを判断するもので、小さなモデルほど判断の精度は下がります。そのバランスはご自身で判断してください。{ "env": { "CLAUDE_CODE_AUTO_MODE_MODEL": "claude-sonnet-5-5" } } - コストを受け入れる:auto モードは、操作ごとの確認をしなくて済むようにするものです。必要であれば、この支出は想定どおりのもので、リレーの問題ではありません。
そのほかのミスの原因
次の操作は Claude Code が送る先頭部分を変えるため、次のターンでキャッシュ全体が書き直されます。
| ケース | 詳細 |
|---|---|
| セッション途中のモデル切り替え | キャッシュはモデルごとなので、別のモデルではゼロから始まります。元のモデルに戻したとき、そのキャッシュは期限切れになっていることがあります。 |
thinking effort や /fast の変更 | effort や fast モードもリクエストを変えるため、キャッシュが切れます。 |
| 5 分を超える中断 | 既定のキャッシュは 5 分しか持たないため、休憩の後の最初のターンはすべて書き直されます。中断が多い場合は1 時間キャッシュを参照してください。 |
| MCP サーバーの接続や切断 | ツール定義はリクエストの先頭にあるため、ツール一覧が変わると先頭部分全体が変わります。Claude Code 既定の MCP ツール検索を有効にしておけば避けられます。ENABLE_TOOL_SEARCH=false は設定しないでください。 |
| プラグインの有効化と無効化 | MCP サーバーを伴うプラグインは、前の行と同じ影響があります。 |
/compact | コンパクト化は履歴を書き換えるので、その後の最初のターンは書き込みが発生します。以降はセッションが短くなり、安くなります。 |
| Claude Code のアップグレード | 新しいバージョンはシステムプロンプトが異なるため、アップグレード後の最初のターンで書き直されます。 |
新しいセッション、/clear、長時間後の --resume | 新しいセッションは最初からキャッシュを書き込みます。古いセッションを再開する場合、そのキャッシュはおそらく期限切れです。 |
CLAUDE.md を編集してもキャッシュはすぐには切れませんが、反映もすぐにはされず、/clear、/compact、再起動を待ちます。上手な書き方は CLAUDE.md の書き方を参照してください。
キャッシュに当てやすくするには、できるだけ 1 つのセッションで作業を終え、途中でモデルや thinking effort を切り替えないこと、コンテキストが長くなったら、新しいセッションを作ってコンテキストを作り直すのではなく /compact で圧縮することです。
1 時間キャッシュ
5~60 分考え込んでから作業を再開することが多い場合は、Claude Code に 1 時間キャッシュを書き込ませましょう。~/.claude/settings.json の env に 1 行追加します(Claude Code v2.1.242 以降が必要です)。
"CLAUDE_CODE_PROMPT_CACHE_TTL": "1h"
1 時間キャッシュの書き込みは入力料金の約 2 倍、5 分の書き込みは約 1.25 倍です。中断が少ないと 1 回の書き込みが割高になり、中断が多ければ、避けられる全面書き直しの分だけ大きく節約できます。CoreCode は 1 時間キャッシュに必要なヘッダーをそのまま転送するので、ほかに設定は要りません。
ログで調べる
利用ログを開き、1 つのセッションの連続するリクエストを時系列で見ます。
- キャッシュ読み取りが増え続け、キャッシュ書き込みが数百~数千:正常です。各ターンは新しい分だけ書き込みます。
- あるリクエストのキャッシュ読み取りが突然ゼロか極端に少なくなり、キャッシュ書き込みがコンテキスト全体に近い:先頭部分が変わっています。そのときの操作を上の表と見比べてください。その前に 5 分以上中断していたなら、キャッシュが期限切れです。
- 間に Non-stream リクエストが挟まり、それぞれ数万トークンを書き込んでいる:auto モードのチェックです。auto モードのコストを参照してください。
Claude Code では、/usage(または /cost)で現在のセッションのトークン使用量とコスト、/context でコンテキストを占めているものが分かります。
ログを見ても理由が分からない場合は、利用ログからそれらのリクエストの時刻をお知らせください。上流アカウントとルーティングを調べます。
請求に表示される他のモデル
Opus だけでコーディングしていても、請求に Haiku や Sonnet が出ることがあります。主な原因は次のとおりです。
- バックグラウンドタスク:Claude Code は会話の要約やタイトル作成などのバックグラウンド処理に小さなモデルを使い、1 回あたりのコストはごくわずかです。
- サブエージェント:サブエージェントは Sonnet や Haiku に設定できます。
- auto モードの分類器:既定は Sonnet です。上記を参照してください。
利用ログで該当する記録を時刻から探すと、それぞれがどのモデルを使い、いくらかかったかが分かります。