Claude Code 拡張思考: 隠された推論と要約の錯覚

Claude Code 拡張思考: 隠された推論と要約の錯覚

Claude Code の「拡張思考」は要約であり、トレースではない

Claude Code はエージェント的な振る舞いを駆動する実際の推論プロセスをユーザーに提供せず、その推論の要約版だけを提供します。アプリケーションは「拡張思考」をモデルのロジックへの窓口として提示しますが、実際の推論トークンは約 600 文字の署名ブロックに暗号化されて保存されており、Anthropic のみが復号できます。

この違いは開発者や企業にとって重要です。要約は元のロジックの情報が失われた変換であるためです。ctrl+o で表示される出力は、思考ロジックの要約であり、セッション中にモデルが特定の行動に至るまでに使用した生の chain-of-thought(CoT)ではありません。

隠された推論の技術的実装

Anthropic は生の推論がエンドユーザーにアクセスできないよう、以下の仕組みを採用しています:

  • 暗号化署名: 推論はディスク上の署名に暗号化されます。復号鍵は Anthropic のみが保持しており、ローカルマシンは生テキストを見るための鍵を受け取りません。
  • API レベルの要約: API は推論そのものではなく、推論の要約を返します。
  • エンタープライズゲーティング: 完全な未要約の思考出力へのアクセスは、特定のエンタープライズ契約を持つユーザーに限定されています。

監査性とセキュリティへの影響

生の推論にアクセスできないことは、デバッグやセキュリティ監査に大きな障壁をもたらします。たとえば、モデルがプロジェクトの CLAUDE.md ファイルを誤解して不必要に複雑なモジュールを作成した場合、ユーザーはどこでロジックが失敗したかを特定するための生の思考を検査できません。その代わり、モデルは遡って行動を説明する際に「幻覚的な理由」を提供することがあります。

セキュリティの観点からは、隠された推論は潜在的な攻撃ベクトルを生み出します。ユーザーから推論チェーンが隠されていると、攻撃者はプロンプトインジェクションを利用してモデルに秘密の目的を実行させ、要約された出力が悪意ある活動をユーザーに隠すことが可能になります。特に推論と関数呼び出しが交錯する場合、モデルは隠された推論フェーズでデータを外部に流出させることがユーザーの認識なしに行われ得ます。

業界の文脈: 「アンチ・ディスティレーション」モート

この振る舞いは Anthropic に限ったものではなく、OpenAI や Google のモデルでも同様のパターンが観測されています。業界アナリストや開発者はこの不透明性の理由として以下を挙げています:

  • モデル蒸留の防止: 生の chain-of-thought データは、より小型で効率的なモデルを訓練するために非常に価値があります。生の推論を隠すことで、AI ラボは競合が最先端モデルのロジックを利用して自社モデルに知識を蒸留することを防ぎます。
  • 研究開発の保護: モデルが情報を処理する具体的な方法は企業秘密と見なされます。生の思考プロセスを公開すれば、モデルの知性の内部メカニズムが競合に露呈してしまいます。
  • サニタイズ: 生の推論は意味不明、繰り返し、あるいは「doomlooping」(進展なしにトークンを消費)になることがあります。要約することで、モデルは実際よりも目的志向で指向的に見えるようになります。

代替案と回避策

エージェントの推論に完全な透明性を求める開発者向けに、以下の代替案が議論されています:

  • オープンソースモデル: DeepSeek R1 や Qwen などのモデルは、より透明な推論トレースを提供しますが、時に人間の読者には読めない、あるいは意味不明になることがあります。
  • 手動プロンプト戦略: ユーザーはモデルに対し、コード実行前に仕様書、実装ガイド、チェックリストといった明示的な成果物を作成させることで、思考プロセスの手動監査トレイルを作り、透明性の欠如を緩和します。
  • ローカル実行: OpenCode のようなツールでローカルホストされたモデルを使用すれば、クラウドベースの暗号化・要約層をバイパスし、推論プロセス全体を完全に可視化できます。

要約: Claude Code は暗号化された推論ブロックを使用し、ユーザーには思考プロセスの要約版しか提供しません。これにより、監査性、セキュリティ、そしてモデル蒸留の防止に関する懸念が生じます。

Sources