|

Claude Code Bedrockのcache_controlスコープエラーを修正する3つの方法:–resumeによるセッション復旧失敗の完全トラブルシューティングガイド


title: "Claude Code 连接 AWS Bedrock 报错 ValidationException: Extra inputs are not permitted 的修复指南"
description: "在使用 Claude Code 连接 AWS Bedrock 时,遇到 ValidationException 报错?本文深度解析其根因,并提供 3 种简单有效的修复方案,助你 30 秒内解决问题。"

Claude Code を使用して AWS Bedrock に接続する際、以下のようなエラーが発生した場合:

InvokeModelWithResponseStream: operation error Bedrock Runtime:
InvokeModelWithResponseStream, https response error StatusCode: 400,
RequestID: 47574f13-c884-4b12-a003-6d0cf252d8dd,
ValidationException: system.1.cache_control.***.scope:
Extra inputs are not permitted

特に --resume を使用して履歴セッションを再開する際に頻発します。これは設定ミスではなく、既知の互換性の問題です。

根本的な原因は、Claude Code が AWS Bedrock でサポートされていない scope フィールドを送信していることにあります。修正は環境変数を 1 つ設定するだけで、30 秒で完了します。

核心的な価値: 本記事を読めば、このエラーの根本原因を理解し、3 つの修正方法を習得できます。また、CLI、VS Code、JetBrains など、さまざまな環境で正しく設定する方法も解説します。

claude-code-bedrock-cache-control-scope-error-fix-resume-guide-ja 图示

Claude Code Bedrock エラー原因の深掘り

このエラーを理解するには、Anthropic のネイティブ API と AWS Bedrock における cache_control のサポート状況の違いを知る必要があります。

エラーの技術的根拠

2026 年 1 月、Anthropic はネイティブ API でベータ機能 prompt-caching-scope-2026-01-05 をリリースし、cache_control オブジェクトに scope フィールドを追加しました。

{
  "cache_control": {
    "type": "ephemeral",
    "scope": "turn"
  }
}

Claude Code v2.1.24 以降、この scope フィールドがデフォルトで API リクエストに含まれるようになりました。

問題は、AWS Bedrock が scope フィールドを認識できない点にあります。さらに、Bedrock のスキーマ検証は非常に厳格で、未知のフィールドが含まれていると即座に 400 エラーを返します。

特性 Anthropic ネイティブ API AWS Bedrock
cache_control.type: "ephemeral" サポート サポート
cache_control.ttl: "5m" サポート サポート
cache_control.ttl: "1h" サポート サポート(2026年1月より)
cache_control.scope サポート(ベータ) 非サポート、400エラー
Beta ヘッダー 受け入れ 拒否(invalid beta flag)
スキーマ検証ポリシー 寛容(未知のフィールドを無視) 厳格(未知のフィールドを拒否)

簡単に言うと、Anthropic ネイティブ API は寛容で未知のフィールドを無視しますが、Bedrock は厳格で未知のフィールドを拒否します。Claude Code が Bedrock の知らないフィールドを送信したため、エラーが発生したのです。

🎯 技術的アドバイス: この問題は AWS Bedrock 経由で Claude を呼び出しているユーザーにのみ影響します。Anthropic ネイティブ API 経由(APIYI などのプラットフォーム経由など)で利用している場合は、ネイティブ API が scope フィールドを完全サポートしているため、このエラーは発生しません。

なぜ Claude Code の --resume で発生しやすいのか

このエラーは --resume 固有のものではありませんが、履歴セッションを再開する際に発生しやすくなります。理由は以下の通りです。

claude-code-bedrock-cache-control-scope-error-fix-resume-guide-ja 图示

--resume の内部動作メカニズム:

  1. 履歴セッションの読み込み: ~/.claude/projects/<プロジェクト>/<セッションID>.jsonl から完全な会話履歴を読み取ります。
  2. コンテキストの再構築: システムプロンプト、ツール定義、すべての履歴メッセージを完全な messages 配列として再構築します。
  3. キャッシュの最適化: 復元されたコンテキストは通常大きいため(完全な会話履歴を含む)、Claude Code はコストを最適化するためにシステムメッセージに cache_control ブレークポイントをより積極的に設定します。
  4. リクエストの送信: 最初の API 呼び出しに、再構築された完全なコンテキスト + cache_controlscope フィールドを含む)が含まれます。

ポイント: セッション復元時はコンテキストが大きくなる → キャッシュ最適化が積極的になる → cache_control フィールドの出現頻度が高くなる → エラー発生確率が高くなる、という仕組みです。

新規セッションでも発生する可能性はありますが、初期コンテキストが小さいため、キャッシュタグの密度が低く、エラーになりにくい傾向があります。

Claude Code Bedrock エラー修正案 1:実験的 Beta 版の無効化(推奨)

これは最も推奨される解決策です。エラーを修正しつつ、基本的なプロンプトキャッシュ機能も維持できます。

仕組み

CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 を設定すると、Claude Code は以下の動作を行います。

  • リクエストから Beta ヘッダー(例:prompt-caching-scope-2026-01-05)を削除
  • cache_control 内の scope フィールドを削除
  • Bedrock がサポートしている cache_control.typecache_control.ttl などのフィールドは保持

つまり、新しい scope 特性を使用しないだけで、プロンプトキャッシュによるコスト最適化の恩恵は引き続き受けられます。

CLI ターミナルでの設定

macOS / Linux:

# 一時的な設定(現在のターミナルセッションのみ有効)
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1

# 永続的な設定(シェル設定ファイルに追加)
echo 'export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1' >> ~/.zshrc
source ~/.zshrc

# bash を使用している場合
echo 'export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1' >> ~/.bashrc
source ~/.bashrc

Windows (PowerShell):

# 一時的な設定
$env:CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS = "1"

# 永続的な設定
[System.Environment]::SetEnvironmentVariable("CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS", "1", "User")

設定後、Claude Code を実行するだけです。

# 新規セッション
claude

# セッションの再開(エラーは発生しません)
claude --resume

VS Code 拡張機能の設定(重要!)

VS Code の拡張機能はシェルの環境変数を読み取りません。そのため、.zshrc 等で設定しても VS Code 内の Claude Code 拡張機能には反映されません。以下のいずれかの方法で設定してください。

方法 1:Claude グローバル設定ファイルの編集(推奨)

~/.claude/settings.json を編集します。

{
  "env": {
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
  }
}

方法 2:VS Code の設定から行う

VS Code の設定を開く → 「claude」で検索 → 環境変数の設定項目を見つける → CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 を追加。

JetBrains IDE の設定

JetBrains シリーズの IDE(IntelliJ、WebStorm、PyCharm など)の Claude Code プラグインも個別に設定が必要です。

~/.claude/settings.json を編集します(VS Code と同じファイルを共有します)。

{
  "env": {
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
  }
}

💡 ヒント: ~/.claude/settings.json は Claude Code のグローバル設定ファイルであり、すべてのクライアント(CLI、VS Code、JetBrains)が読み取ります。ここで環境変数を設定するのが最も効率的で、一度の設定ですべてのプラットフォームに適用されます。

Claude Code Bedrock エラー修正案 2:プロンプトキャッシュの無効化

案 1 でも問題が解決しない場合(非常に稀なケース)、プロンプトキャッシュを完全に無効化できます。

仕組み

DISABLE_PROMPT_CACHING=1 を設定すると、Claude Code はリクエストからすべての cache_control フィールドを削除します。cache_control がなくなれば scope も存在しないため、エラーは完全に解消されます。

代償: プロンプトキャッシュによるコスト最適化が失われます。長い会話では、トークン料金が高くなる可能性があります。

設定方法

# CLI
export DISABLE_PROMPT_CACHING=1

# ~/.claude/settings.json(全プラットフォーム共通)
{
  "env": {
    "DISABLE_PROMPT_CACHING": "1"
  }
}

どちらの案を選ぶべきか?

シナリオ 案 1 を選択 案 2 を選択
一般的な Bedrock ユーザー ✅ 推奨
案 1 を設定してもエラーが出る
LiteLLM などのゲートウェイプロキシを使用 ✅ より確実
会話が短く、キャッシュコストを気にしない ✅ 影響なし
長い会話で、コスト最適化を重視する ✅ キャッシュ維持 ❌ 料金が増加

Claude Code Bedrock エラー修正案 3:ダブルの安全策

2つの環境変数を同時に設定することで、Bedrock がサポートしていないすべてのフィールドが確実に除外されるようにします。

# CLI
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
export DISABLE_PROMPT_CACHING=1
// ~/.claude/settings.json
{
  "env": {
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1",
    "DISABLE_PROMPT_CACHING": "1"
  }
}

これが最も安全な設定であり、本番環境で絶対的な安定性が求められるシーンに適しています。

🚀 もう一つの選択肢: 環境変数の設定や Bedrock の互換性問題に悩まされたくない場合は、Anthropic のネイティブ API への切り替えを検討してください。APIYI (apiyi.com) プラットフォームを通じて Anthropic のネイティブインターフェースに直接接続すれば、scope を含むプロンプトキャッシュ(Prompt Caching)の全機能をフルサポートしており、AWS アカウントも不要です。

Claude Code Bedrock エラーの完全トラブルシューティング手順

自分の状況にどの解決策が適しているか不明な場合は、以下の手順に従って確認してください。

claude-code-bedrock-cache-control-scope-error-fix-resume-guide-ja 图示

ステップ 1:エラータイプの確認

エラーメッセージに以下のキーワードが含まれているか確認してください:

cache_control.***.scope: Extra inputs are not permitted

または

ValidationException: ... cache_control ... scope

これらが含まれている場合、scope フィールドの互換性問題です。

ステップ 2:呼び出しパスの確認

# 現在 Claude Code が使用している API エンドポイントを確認
echo $ANTHROPIC_BASE_URL
echo $CLAUDE_CODE_USE_BEDROCK

CLAUDE_CODE_USE_BEDROCK=1AWS_REGION などの Bedrock 関連変数が設定されている場合、Bedrock を使用しています。

ステップ 3:修正の適用

# まずは案1を試す
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1

# 修正されたかテスト
claude --resume

ステップ 4:修正の検証

# 環境変数が有効か確認
echo $CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS
# 1 と出力されるはずです

# 新規セッションのテスト
claude

# セッション再開のテスト
claude --resume

ステップ 5:それでもエラーが出る場合

# 案2を追加
export DISABLE_PROMPT_CACHING=1

# 同時に settings.json を確認
cat ~/.claude/settings.json

settings.json の形式が正しいことを確認してください:

{
  "env": {
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1",
    "DISABLE_PROMPT_CACHING": "1"
  }
}

🎯 技術的なアドバイス: LiteLLM などのゲートウェイプロキシを使用して Bedrock に接続している場合、LiteLLM は 2026 年 3 月以降、scope フィールドを自動的に削除する機能を内蔵しています(PR #22867)。最新版の LiteLLM にアップデートすることでもこの問題を解決できます。より安定した Claude API 接続ソリューションをお探しの場合は、APIYI (apiyi.com) が提供する Anthropic ネイティブ API チャネルをご利用ください。このような互換性の制限を一切受けません。

Claude Code Bedrock その他の一般的な互換性の問題

cache_control.scope は Bedrock における唯一の互換性の落とし穴ではありません。Bedrock ユーザーがよく遭遇する同様の問題を以下にまとめました。

エラーキーワード 原因 修正方法
cache_control.scope: Extra inputs scope フィールドが非対応 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
invalid beta flag Beta ヘッダーが非対応 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
thinking: undefined Thinking パラメータの形式が非対応 Claude Code を最新版に更新
context_management 関連 コンテキスト管理フィールドが非対応 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
eager_input_streaming ストリーミング入力最適化が非対応 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1

これらの非対応フィールドは本質的に Anthropic ネイティブ API の Beta 機能であるため、ほとんどの問題は CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 を設定することで一括解決できます。

💰 コスト最適化: Bedrock のプロンプトキャッシュは 5 分と 1 時間の 2 種類の TTL にのみ対応しています。キャッシュへの依存度が高いユースケースであれば、APIYI (apiyi.com) を通じて Anthropic ネイティブ API に接続することで、より柔軟なキャッシュ戦略を実現し、上記のような互換性問題によるトラブルシューティングのコストを回避できます。

Claude Code Bedrock エラーに関するよくある質問 (FAQ)

Q1: 環境変数を設定しても VS Code でエラーが出るのはなぜ?

VS Code 拡張機能は、.zshrc.bashrc で設定した環境変数を継承しません~/.claude/settings.json ファイル内の env フィールドで設定する必要があります:

{
  "env": {
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
  }
}

設定後、VS Code を再起動(ウィンドウの再読み込みではなく、完全に終了してから再起動)して、設定が反映されていることを確認してください。

Q2: プロンプトキャッシュを無効にするとパフォーマンスに影響しますか?

モデルの出力品質や応答速度には影響しません。プロンプトキャッシュはコスト最適化の仕組みであり、キャッシュがヒットした際にトークンの重複計算コストを削減できるだけです。無効にした場合、リクエストごとに全量の料金が発生しますが、モデルの挙動は全く同じです。短い会話であれば料金差はわずかですが、長い会話のシナリオではキャッシュによって入力トークン料金を 30〜50% 節約できます。

Q3: この問題は公式に修正されますか?

これは既知の問題であり、GitHub 上で複数の Issue(#23220、#41731 など)が追跡されています。しかし、Bedrock のスキーマ検証ポリシーは AWS 側の挙動であるため、Anthropic 側で Claude Code から完全に解決するのは困難です。現在の環境変数による解決策は公式が推奨する回避策(workaround)です。長期的には、AWS Bedrock 側でスキーマ検証を緩和するか、scope フィールドをサポートする必要があります。

Q4: Google Vertex AI を使っていますが、同じ問題は発生しますか?

はい。Google Vertex AI も cache_control.scope フィールドをサポートしていないため、同様のエラーが発生します。解決策は同じで、CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 を設定してください。Vertex AI ユーザーは CLAUDE_CODE_USE_VERTEX=1 関連の設定にも注意が必要です。

Q5: –resume と -c(–continue)の違いは何ですか?エラーの発生条件は同じですか?
  • --resume / -r:セッションセレクターを開き、任意の履歴セッションを選択して復元します。
  • --continue / -c:直近のセッションを直接復元します。

どちらも技術的にはコンテキストの再構築と cache_control タグの付与を行うため、エラーの発生条件は全く同じです。Bedrock ユーザーであれば、どちらのコマンドでもこの 400 エラーが発生する可能性があります。

Q6: LiteLLM を介して Bedrock を使用してもこの問題は発生しますか?

LiteLLM は 2026 年 3 月以降(PR #22867)、_remove_scope_from_cache_control 関数が組み込まれており、Bedrock や Azure AI へのリクエストから自動的に scope フィールドを除去するようになっています。最新版の LiteLLM を Bedrock プロキシとして使用している場合、この問題は自動的に処理されているはずです。ただし、念のため CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 も併せて設定することをお勧めします。

Q7: 機能を一切損なわない完璧な解決策はありますか?

Bedrock ユーザーにとって、現時点で損失ゼロの解決策はありません。案 1(Beta 無効化)は scope という新機能を失うだけで、影響は最小限です。Claude のプロンプトキャッシュ機能をフル活用したい場合(scope を含む)、Anthropic ネイティブ API を使用する必要があります。APIYI (apiyi.com) プラットフォームを利用すれば、Bedrock の互換性制限を受けることなく、迅速にネイティブ API へ接続可能です。

Claude Code Bedrock エラー修正クイックリファレンス

操作 コマンド / 設定
案1:Beta機能を無効化(推奨) export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
案2:キャッシュを無効化 export DISABLE_PROMPT_CACHING=1
VS Code / JetBrains 設定 ~/.claude/settings.jsonenv フィールドを編集
環境変数の確認 echo $CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS
セッション復帰のテスト claude --resume
設定ファイルの確認 cat ~/.claude/settings.json
Claude Code バージョンの確認 claude --version
GitHub Issue 追跡 anthropics/claude-code#23220

まとめ

Claude Code を AWS Bedrock 経由で呼び出す際に発生する cache_control.scope: Extra inputs are not permitted というエラーは、Bedrock が Anthropic ネイティブ API の scope Beta フィールドをサポートしていないことが根本的な原因です。

最も迅速な修正方法

# CLI で実行する場合
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
// ~/.claude/settings.json で設定する場合(推奨、全プラットフォーム共通)
{
  "env": {
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
  }
}

覚えておくべき3つのポイント:

  1. あなたのミスではありません——Bedrock と Anthropic API の機能差異によるものです。
  2. VS Code ユーザーは settings.json で設定必須——シェル環境変数は VS Code 拡張機能には読み込まれません。
  3. --resume が原因ではありません——すべての Bedrock 呼び出しで発生する可能性があり、--resume は単にエラーが露見しやすくなるだけです。

Bedrock の互換性問題に悩まされたくない場合は、Anthropic ネイティブ API への切り替えが根本的な解決策となります。APIYI (apiyi.com) を通じれば、AWS インフラを構築することなく、すべての機能をフルサポートした Claude API に素早くアクセス可能です。


執筆者: APIYI 技術チーム
技術交流: APIYI (apiyi.com) にアクセスして、Claude Code の使用チュートリアルや技術サポートをご覧ください。
更新日: 2026年4月
適用バージョン: Claude Code v2.1.24+、AWS Bedrock


参考資料:

  1. GitHub Issue #23220: Claude Code v2.1.24+ cache_control.scope error
    • リンク: github.com/anthropics/claude-code/issues/23220
  2. GitHub Issue #41731: VS Code extension sends unsupported scope field
    • リンク: github.com/anthropics/claude-code/issues/41731
  3. AWS Bedrock プロンプトキャッシュ ドキュメント:
    • リンク: docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html
  4. Anthropic プロンプトキャッシュ ドキュメント:
    • リンク: docs.anthropic.com/en/docs/build-with-claude/prompt-caching
  5. Amazon Bedrock 上の Claude Code 公式ドキュメント:
    • リンク: docs.anthropic.com/en/docs/claude-code/bedrock

類似投稿