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 エラー原因の深掘り
このエラーを理解するには、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 固有のものではありませんが、履歴セッションを再開する際に発生しやすくなります。理由は以下の通りです。

--resume の内部動作メカニズム:
- 履歴セッションの読み込み:
~/.claude/projects/<プロジェクト>/<セッションID>.jsonlから完全な会話履歴を読み取ります。 - コンテキストの再構築: システムプロンプト、ツール定義、すべての履歴メッセージを完全な
messages配列として再構築します。 - キャッシュの最適化: 復元されたコンテキストは通常大きいため(完全な会話履歴を含む)、Claude Code はコストを最適化するためにシステムメッセージに
cache_controlブレークポイントをより積極的に設定します。 - リクエストの送信: 最初の API 呼び出しに、再構築された完全なコンテキスト +
cache_control(scopeフィールドを含む)が含まれます。
ポイント: セッション復元時はコンテキストが大きくなる → キャッシュ最適化が積極的になる → 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.typeやcache_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 エラーの完全トラブルシューティング手順
自分の状況にどの解決策が適しているか不明な場合は、以下の手順に従って確認してください。

ステップ 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=1 や AWS_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.json の env フィールドを編集 |
| 環境変数の確認 | 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つのポイント:
- あなたのミスではありません——Bedrock と Anthropic API の機能差異によるものです。
- VS Code ユーザーは settings.json で設定必須——シェル環境変数は VS Code 拡張機能には読み込まれません。
--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
参考資料:
- GitHub Issue #23220: Claude Code v2.1.24+ cache_control.scope error
- リンク:
github.com/anthropics/claude-code/issues/23220
- リンク:
- GitHub Issue #41731: VS Code extension sends unsupported scope field
- リンク:
github.com/anthropics/claude-code/issues/41731
- リンク:
- AWS Bedrock プロンプトキャッシュ ドキュメント:
- リンク:
docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html
- リンク:
- Anthropic プロンプトキャッシュ ドキュメント:
- リンク:
docs.anthropic.com/en/docs/build-with-claude/prompt-caching
- リンク:
- Amazon Bedrock 上の Claude Code 公式ドキュメント:
- リンク:
docs.anthropic.com/en/docs/claude-code/bedrock
- リンク:
