0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

extractMemoriesをOFFにしたらClaude CodeのAPIコストが半分になった——1行の環境変数で効くデフォルトONのバグ

0
Posted at

結論だけ先に書く。CLAUDE_CODE_DISABLE_AUTO_MEMORY=1~/.bashrc に書き足して shell を開き直す。それだけでClaude Code経由のAPIコストが最大50%落ちる

これはNoteでもRedditでも「10倍溶けた」「$200のquotaが19分で尽きた」と騒がれた4月第1週のTokenocalypseの主犯バグの1つだ。Jacek MariańskiがClaude.exeのbinary disassemblyでAPI callの2倍経路を発見したことでようやく対策が確定した。

本記事は800+時間のClaude Code自律運用と、claude.exe binary stringsでの実在確認、公式changelogの突き合わせを元に、「なぜ効くのか / 何が失われるのか / どう検証するか」の3点を書く。

そもそも何が起きているか

Claude Codeは各ターンの終了時に、バックグラウンドで追加のOpus呼び出しを走らせている。extractMemories という機能で、会話の要約や事実抽出を自動的に「記憶」として保存する仕組みだ。

問題は、この背景呼び出しが:

  • 別の tools[] 構成 (Main conversationの9+ toolsに対して extractMemories は 3 tools)
  • 別の system prompt (memories抽出専用)
  • 別のcache chain として扱われる

という独立したAPI経路になっていることだ。

つまり、Main conversationで cache_read で安く済んでいるトークンが、extractMemories 側では毎ターン cache_creationゼロから払い直す。Mariańskiの実測では、Main 20 turns × 650K contextで発生するAPIコスト $3.90に対し、extractMemories が同等の $3.90。合計のAPIコストが実質2倍になっている。

普段「Claude Codeは1回 $X」と感じている人の半分は、このバックグラウンド抽出に払っている計算になる。

これはデフォルトONだ

重要なのは「何もしていない」ユーザーほど影響を受けている点だ。Claude Codeのインストール直後からこの機能はONになっている。

claude.exe binaryの strings を見ると:

$ strings claude.exe | grep -E "autoMemory|extractMemories|DISABLE_AUTO_MEMORY"
autoMemoryEnabled
autoMemoryDirectory
CLAUDE_CODE_DISABLE_AUTO_MEMORY
extractMemoriesPrompt
...

autoMemoryEnabled は実装中に 11箇所出現し、CLAUDE_CODE_DISABLE_AUTO_MEMORY という環境変数名が実在することも確認できる。「隠し設定」と書いたが、正確には「ドキュメントで前面に出ていないがbinary上は一級の設定項目」だ。

OFFにする2つの経路

方法A(shell env、再起動で永続化):

# ~/.bashrc または ~/.zshrc
export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1

方法B(Claude Code内のslash command):

/config set autoMemoryEnabled false

どちらも同じbackground Opus callを停止する。Mariańskiのbinary解析ではこの2経路が同じflag groupを参照している事が確認されている。/config slash commandの実在もclaude.exeで確認済み。

どちらか片方で十分。shell env の方が各セッションに効くため、自分は方法Aを使っている。

何が失われるのか

OFFにしても会話中のCLAUDE.md参照・明示メモリ・ユーザー指示は全て維持される。失うのは:

  • 会話から自動抽出される類推メモリ
  • 次のセッション開始時の自動的な前セッション要約

ただしこの抽出は精度が低く、再利用率も低い。エージェント的なロールプレイで前日までの会話を自動的に引用し続けたいケース以外、多くのユーザーは恩恵を受けていない。

開発ワークフローでは OFFがデフォルトであるべきだ、というのが自分の結論だ。

効果を実測する手順

v2.1.118で /cost/stats が統合された /usage コマンドが実装された。これで自分のトークン消費を model別・cache_read別・cache_creation別に分解できる。

実測手順:

  1. /usage を走らせて現在の per-model トークン消費を記録
  2. ~/.bashrcexport CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 を追記
  3. shell を開き直して新しいClaude Codeセッションを起動
  4. 同じような規模の作業を2-3ターン実行
  5. /usage でper-modelトークン消費を再度確認

ありがちな観測パターン:

  • OFF前: Opus使用量が想定の1.8-2.2倍
  • OFF後: Opus使用量がMain conversationに沿った値に低下

Mariańskiの実測では1:1の比率(Main : extractMemories)が綺麗に出ているが、自環境では会話長・toolset・MCP接続の有無で倍率が揺らぐ。**「Main と extractMemories の比率が1:1に近いほど、本バグに暴露されている」**と覚えておけばいい。

どうやってここまで確定できたか

Tokenocalypseの騒動直後、Reddit r/ClaudeAIには「20x max usage gone in 19 minutes」(330+コメント)、r/ClaudeCodeには「Claude Code Limits Were Silently Reduced」(360+コメント)が並んだ。Anthropic公式はThe Register 4/13記事で「cache tweaks 起因ではない」と否認、しかし原因は明示しなかった。

この空白を埋めたのがJacek Mariańskiの "Claude Code Cache Crisis: A Complete Reverse-Engineering Analysis" (Medium 2026-04)。Claude.exeのbinaryを逆アセンブルし、5つの根本バグを特定した。本記事で扱った extractMemories Double Cache Chain はそのうちの1つで、コストを実質2倍にしている主犯に該当する。

残る4バグ(Resume Attachment Relocation / Dynamic Tool Descriptions / Native Sentinel Replacement / Fire-and-Forget Background Calls)もそれぞれ 3-10倍のmultiplierを追加する条件付きバグだ。どれに暴露されているかは /usage の出力パターンで判定できる。

本記事はその中から「1行で効く対策」だけを抜粋した。

次に来るバグはOpus 4.7の新tokenizer

念のため付記すると、4月第1週のTokenocalypseとは別系統の問題が4月16日のOpus 4.7 launchで発生した。

  • MRCR 1M context: 78.3% → 32.2% (-46pt)
  • 256k 8-needle: 91.9% → 59.2% (-32.7pt)
  • Simon Willison 実測: 1.46x のトークン消費増

これは意図的設計変更に伴う互換性破壊で、対策ツリーはTokenocalypseと別物になる。extractMemories OFFとOpus 4.7 regression対策の両方が必要になる時期に来ている。

まとめ

  • CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 または /config set autoMemoryEnabled false を設定する
  • 効果: APIコスト最大50%削減(会話長に比例して効く)
  • デフォルトONのバックグラウンドOpus呼び出しを停止する
  • 失うもの: 自動抽出される類推メモリのみ(CLAUDE.mdや明示メモリは維持)
  • 検証: v2.1.118以上の /usage でper-modelトークン消費の変化を見る

Claude Codeのコストが「なんとなく高い」と感じている人は、まずこの1行を試してほしい。特別なことは何もしていないのに、このバグに暴露されている可能性が高い。


トークン消費を根本から減らしたい方へ

本記事は800+時間の自律運用と4月第1週のTokenocalypseの原因分析から抜粋した1対策。残り4つの根本バグ (Resume Attachment Relocation / Dynamic Tool Descriptions / Native Sentinel / Fire-and-Forget) と、それぞれの /usage ベースの検知・対策を体系化した本があります:

Claude Codeの事故防止の全体像を知りたい方へ

トークン節約の前提になる「そもそも壊さない」を20のチェック項目と8つのhookで体系化した本もあります:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?