Claude Code (Opus 4.8)の日本語環境における未修正バグ:全ツール呼び出しが壊れる現象と回避策
本記事は、Claude Code (Opus 4.8) を長時間・常時起動で使用する際に発生する、全ツール呼び出しが機能不全に陥る未修正バグについて、日本語ユーザーの視点から詳細に報告し、その原因と具体的な回避策を共有するものです。
**【発生事象と原因】**
このバグは、モデルがツール呼び出しの開始タグを「count」や「/court」といった意味不明なトークンに変換したり、ツールからの引数(ファイル名など)が生テキストとして会話履歴に漏れたりすることが原因で発生します。特筆すべきは、この問題が単なるツールやサーバー側の問題ではなく、モデルの文脈内での自己修復ループ(in-contextでの自己強化ループ)によって継続し、モデル自身が失敗に気づかないまま「成功したかのように振る舞う」点です。
**【トリガー条件】**
この症状が最も発生しやすい「トリガー条件」は、以下の組み合わせです:
1. **モデル**: Opus 4.8(Opus 4.7では発生しない)
2. **OS**: Windows(特に長いターンや大きな文脈が蓄積した場合)
3. **入力**: 非ASCII文字(日本語)を含むツール引数
筆者は、このトリガー条件が「Opus 4.8 + Windows + 日本語 + 長時間運用」の組み合わせであることを指摘し、日本語ユーザーが特にこのバグに遭遇しやすい可能性を警告しています。
**【復旧・回避策】**
バグが発生した場合の復旧手順として、まず「/rewind」コマンドで直前のチェックポイントに戻るか、より強力な「/compact」コマンドで履歴を要約に置換し、破損した例を消去することが推奨されます。また、根本的な回避策として、以下の3点が提示されています。
1. **モデルのダウングレード**: 4.8固有のバグであるため、Opus 4.7に落とすのが最も確実な方法です。
2. **タスクの分解**: 大規模なタスクを一度に投げ込むのではなく、タスクを細かく分解して実行することで、バグのトリガーとなる「長ターン/大文脈」を回避し、成功率と安定性を同時に向上させます。
3. **制約の外部化**: 重要な制約や判断基準は、チャット履歴ではなく、常にロードされる外部ファイル(CLAUDE.mdなど)に記述することで、頻繁な要約処理(/compact)を経ても情報が失われるのを防ぎます。
結論として、筆者は「強いモデルでブルートフォース」なアプローチよりも、「タスクを分解し、安定したモデル(Opus 4.7)で回す」方が、実用上より安定し、成功率が高いと結論づけています。
背景
大規模言語モデル(LLM)の利用が一般化する中で、複雑なタスク処理や外部ツール連携(Function Calling)の安定性が重要な課題となっています。特に、モデルの文脈ウィンドウが巨大化し、日本語などの非ASCII文字が絡むと、モデルの内部処理に予期せぬバグが発生しやすくなります。本記事は、特定のモデルバージョン(Opus 4.8)における、実用上の深刻なバグをユーザーコミュニティに共有するものです。
重要用語解説
- Claude Code (Opus 4.8): Anthropic社が提供する、高度なコーディングおよびツール利用能力を持つ大規模言語モデルのバージョン。Opus 4.8は、特定の環境下でツール呼び出しのバグが発生している。
- Function Call: LLMが外部のAPIやツールを呼び出す際に使用する機能。モデルが適切な引数と形式で呼び出しを生成する仕組み。
- in-contextでの自己強化ループ: モデルが過去の壊れた出力を「正しい形式」として誤って学習し、文脈(コンテキスト)内でその誤りを繰り返し模倣し続ける現象。モデル自身が失敗を認識できない原因となる。
- 影響: 本バグは、LLMを業務プロセスに組み込む際の信頼性を大きく損なうため、ユーザーはモデルのバージョンをダウングレードするか、タスク設計自体を根本的に見直す必要があります。今後の展開としては、Anthropic社によるパッチ適用が待たれますが、当面は「タスク分解」によるワークフローの改善が必須となります。