CoreCodeドキュメント

CoreCode を使いこなす

キャッシュと課金

最終更新:

Claude Code は毎ターン、システムプロンプト、ツール定義、会話全体を送り直します。これがプロンプトキャッシュに当たると、通常の入力料金の 2.5~10%(Opus 5.5 と Sonnet 5.5 では 5%)のキャッシュ読み取りとして課金されます。つまり、使った金額はキャッシュヒット率でほぼ決まります。キャッシュ以外の節約方法はClaude Code の節約ガイドを参照してください。

ヒット率が低いときは、まず auto モードを確認Claude Code の auto パーミッションモードが有効で、かつ 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 の対応

キャッシュが切れるかどうかはクライアントが何を送るかで決まります。以下は 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 の料金で課金されます。

別の分類器リクエストにフォールバックしたとき、そのコストは次のようになります。

問題は、このチェックのうち最初のわずかな部分しかキャッシュに当たらないことです。残りの数万トークンは毎回書き込み直され、次のチェックは今回書き込まれた内容を使えません。実際の例では次のとおりでした。

見分け方

auto モードが有効か確認する

対処法

  1. 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 と表示されれば確認できます。
  2. 放置して任せる必要がないときは auto をオフにする:Shift+Tab で Manual または accept-edits モードに切り替えると、チェックは止まります。毎回のセッションを Manual で始めるには、~/.claude/settings.json に次を書きます。
    {
      "permissions": {
        "defaultMode": "default"
      }
    }
    accept-edits で始めたい場合は、default を acceptEdits に置き換えます。
  3. より安い分類器モデルを使う: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"
      }
    }
    分類器は操作が安全かを判断するもので、小さなモデルほど判断の精度は下がります。そのバランスはご自身で判断してください。
  4. コストを受け入れる: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 つのセッションの連続するリクエストを時系列で見ます。

Claude Code では、/usage(または /cost)で現在のセッションのトークン使用量とコスト、/context でコンテキストを占めているものが分かります。

ログを見ても理由が分からない場合は、利用ログからそれらのリクエストの時刻をお知らせください。上流アカウントとルーティングを調べます。

請求に表示される他のモデル

Opus だけでコーディングしていても、請求に Haiku や Sonnet が出ることがあります。主な原因は次のとおりです。

利用ログで該当する記録を時刻から探すと、それぞれがどのモデルを使い、いくらかかったかが分かります。