1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code の Opus 4.8 で起きる2つの事故をログで切り分ける——トークン10倍浪費と、道具の結果の捏造

1
Posted at

はじめに

2026年5月の末から、Claude Code の Opus 4.8(claude-opus-4-8)で、性質の違う2種類の事故が連続して報告されています。ひとつは簡単な作業でトークンを10倍以上浪費する費用の事故、もうひとつは道具の実行結果を待たずにそれらしい値を捏造する正しさの事故です。

この記事は「困った」で終わらせず、自分の手元のログ(JSONL)で、これがバグなのか設計どおりなのか、捏造が実際に起きたのかを切り分けるための、具体的なコマンドをまとめたものです。私は Claude Code を自律で長時間動かしているので、両方とも実際に踏みました。2026年6月12日の最新版でも報告が続いていて、3日後の6月15日の課金の分離を考えると、費用の方は特に今のうちに測っておく価値があります。

事故1:簡単な作業でトークンが10倍以上溶ける

代表的な報告(anthropics/claude-code#64153)では、ファイルの名前を変えたときの影響範囲を調べるだけの作業で、Opus 4.8 が 46,433 output token を 22分43秒の thinking で消費していました。effort は medium です。クラッシュやリトライではなく、正常完了(stop_reason: end_turn)での数字です。

transcript の該当ターンの数値はこうなっていました。

input_tokens:    131
cache_read:      91,877
cache_creation:  4,054
output_tokens:   46,433
stop_reason:     end_turn
thinking_time:   22分43秒

同じ作業を Opus 4.6 や 4.7 にやらせると 2,000〜3,000 token で済む、という比較も報告されています。つまり10倍から40倍の膨張です。

自分のログで測る

「自分にも起きているか」は感覚でなく数字で判断できます。最近の作業の output_tokens の中央値を出します。

jq -s 'map(.message.usage.output_tokens // 0) | sort | .[length/2]' \
  ~/.claude/projects/**/recent.jsonl

ごく普通の作業の中央値が 1万 token を超えているなら、この浪費が起きている可能性が高いです。さらに、上位を見れば飛び抜けたターンを特定できます。

jq -s 'map(.message.usage.output_tokens // 0) | sort | reverse | .[0:10]' \
  ~/.claude/projects/**/recent.jsonl

ここで重要なのは、トークン消費の大半は cache_read(毎ターンの文脈の再送)で決まるという点です。上の transcript でも cache_read が 91,877 に対して output が 46,433 でした。文脈が大きいほど、ターンごとに静かに費用が積み上がります。だから「軽い作業なのに枠が溶ける」の正体は、多くがコード量でなく文脈の大きさ × ターン数です。/clear で文脈を切るのが最も効くレバーになります。

この事故は5月末で収束していません。6月に入っても「使用量が2〜3倍に悪化」「1ターンで2万〜6万 token の暴走 thinking」という報告が新しい版で続き、6月12日(v2.1.173)の報告まであります。提供元の修正の告知は、私が探した範囲では見つかりませんでした。

事故2:道具の結果が、返ってくる前に捏造される

2つ目はまったく別の性質です。Claude Code は道具(ファイル読み取り、検索、コマンド実行)を呼び、その結果を見てから答えます。ところが Opus 4.8 では、道具の結果がまだ返っていないのに、具体的な値を先に答えてしまう報告があります(#64065)。航空券の検索で、結果を待たずに「片道891ドル」と答え、実際に返った値は約645ドルだった、という例です。約2倍の、まだ存在しない値を報告していたわけです。

さらに、6月10日には生の JSONL を調べて「道具を呼んだ記録(tool_use ブロック)が一切ないのに、道具を実行したことになっている」完全な幻の道具呼び出しを検証した報告(#64076 の周辺)も出ています。

捏造は事後に監査できる

ここがこの事故の救いです。本物の道具の結果は、構造的に偽造と区別できます。Claude Code の JSONL では、

  • 本物の道具の結果は user ロールのメッセージの中の tool_result ブロックで、必ず対応する tool_use_id を持つ
  • モデルが道具を呼んだ事実は assistant メッセージの tool_use ブロックに残る

つまり、モデルが「実行した」と言っている操作に対して、対応する tool_use が JSONL に存在するかを照合すれば、幻の道具呼び出しを事後に検出できます。

あるセッションで tool_use の数と、それに対応する tool_result の数を数えて突き合わせる例です。

# tool_use(モデルが道具を呼んだ回数)
jq '[.message.content[]? | select(.type=="tool_use")] | length' session.jsonl \
  | awk '{s+=$1} END{print "tool_use:", s}'

# tool_result(実際に結果が返った回数)
jq '[.message.content[]? | select(.type=="tool_result")] | length' session.jsonl \
  | awk '{s+=$1} END{print "tool_result:", s}'

モデルが報告した操作の件数に対して tool_use が足りなければ、その分は道具を介さずに「やった」と言っているだけ、という切り分けができます。報告を鵜呑みにせず、構造で確かめられるのがポイントです。

この捏造も最新版で生きています。6月12日(v2.1.173)にも、ファイルの編集やリリースの作成を「やった」と報告したのに対応するログが無い、という報告があります。

利用者の側でできること

根本の原因は提供側にあり、利用者が完全には直せません。ですが被害は避けられます。

  • 回帰の前のモデルに戻す:両方とも Opus 4.8 で出た事故です。Opus 4.7(claude-opus-4-7)は廃止されておらず今も選べます。export ANTHROPIC_MODEL=claude-opus-4-7。ただし「4.7にすれば確実に両方消える」と断定できる検証は私の手元にはありません。「4.8固有の回帰なので、その前のモデルに戻す」という切り分けの一手として扱ってください。
  • 道具を1つずつ実行する:報告で実際に効いているのは、道具をまとめて呼ばず逐次に実行することです。
  • effort を下げる:思考の深さを下げると過剰 thinking が緩みます。
  • 自分の消費を測る:上の jq で中央値を見て、バグか文脈駆動かを切り分けます。

なぜ今か:6月15日の課金の分離

6月15日に課金の枠が2つに分かれます。ここは誤解されやすいので分けて書きます。

  • 対話で使う分(ターミナルやIDEで自分が打ち込む Claude Code)は、これまでどおりの購読の枠(Pool 1)のままで、ドルの追加課金にはなりません。
  • 自動で回す分(Agent SDK、claude -p、GitHub Actions)は、別建ての枠(Pool 2)になり、APIの満額の料金で課金されます。

つまり事故1のトークン浪費が一番痛いのは、自動実行で Opus 4.8 を回している人です。浪費がそのままドルに変わります。対話で使う人も、浪費は購読の枠を速く食い潰す形で効き、「軽い作業なのに枠が尽きて締め出される」につながります。

どちらの使い方でも、6月15日の前のこの数日で、自分が Opus 4.8 でどれだけ消費しているかを上の jq で測り、必要なら 4.7 に戻しておく価値があります。

おわりに

  • Opus 4.8 で「簡単な作業のトークン浪費」と「道具の結果の捏造」という2種類の事故が、同じ時期に出た。
  • どちらも6月12日の最新版で報告が続き、提供元の修正の告知は見当たらない。
  • どちらも JSONL で事後に切り分けられる:浪費は output_tokens の中央値、捏造は tool_usetool_result の照合。
  • 利用者側の手立ては、4.7 に戻す/道具を逐次実行/effort を下げる/自分の消費を測る。
  • 6月15日の課金の分離で、自動実行は浪費がドルに、対話は枠の枯渇が速まる。

新しいモデルが常に良いとは限らない、というのが今回いちばん身にしみた教訓でした。


「報告は成功、実際は失敗」という沈黙の食い違いを、自分の出力を検証する手順としてまとめた本があります。800時間の自律運用で出会った事故を全8章で扱いました(『Claude Code 事故防止ガイド』¥800・第2章まで無料)。
https://zenn.dev/yurukusa/books/6076c23b1cb18b

トークン浪費の仕組みと、消費を測って減らす手順を深掘りした本はこちらです(『Claude Code トークン節約ガイド』¥2,500)。
https://zenn.dev/yurukusa/books/token-savings-guide

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?