|

3 способа исправить ошибку cache_control scope в Claude Code Bedrock: полное руководство по устранению сбоев при возобновлении сессии через —resume

Если вы столкнулись с такой ошибкой при подключении 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 отправляет поле scope, которое не поддерживается в Bedrock. Исправление занимает 30 секунд: нужно просто задать одну переменную окружения.

Кратко о главном: в этой статье мы разберем корень проблемы, рассмотрим 3 способа её решения и узнаем, как правильно настроить переменные в CLI, VS Code и JetBrains.

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

Глубокий анализ причин ошибки Claude Code при работе с Bedrock

Чтобы разобраться в этой ошибке, нужно понимать ключевой нюанс: поддержка cache_control в нативном API Anthropic и AWS Bedrock существенно различается.

Техническая причина ошибки

В январе 2026 года Anthropic представила в своем нативном API бета-функцию prompt-caching-scope-2026-01-05, которая добавила поле scope в объект cache_control:

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

Начиная с версии v2.1.24, Claude Code по умолчанию включает это поле scope в запросы к API.

Проблема в том, что AWS Bedrock не распознает поле scope, а его проверка схемы (schema validation) крайне строга — при обнаружении любого неизвестного поля сервис сразу возвращает ошибку 400.

Характеристика Нативный API Anthropic AWS Bedrock
cache_control.type: "ephemeral" Поддерживается Поддерживается
cache_control.ttl: "5m" Поддерживается Поддерживается
cache_control.ttl: "1h" Поддерживается Поддерживается (с янв. 2026)
cache_control.scope Поддерживается (Beta) Не поддерживается, ошибка 400
Beta-заголовки Принимаются Отклоняются (ошибка invalid beta flag)
Валидация схемы Мягкая (игнорирует неизвестные поля) Строгая (отклоняет запрос)

Проще говоря: нативный API Anthropic более лоялен и просто игнорирует незнакомые поля. Bedrock же работает жестко: если поле ему не знакомо, он сразу отклоняет запрос. Claude Code отправляет запрос с полем, которое Bedrock не понимает, и получает ошибку.

🎯 Технический совет: Эта проблема затрагивает только тех, кто вызывает Claude через AWS Bedrock. Если вы используете нативный API Anthropic (например, через сервис-прокси API APIYI apiyi.com), вы никогда не столкнетесь с этой ошибкой, так как нативный API полностью поддерживает поле scope.

Почему флаг --resume чаще вызывает эту ошибку

Хотя эта ошибка не является эксклюзивной для --resume, при восстановлении истории сессии через этот флаг она возникает гораздо чаще. Вот почему:

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

Внутренний механизм работы --resume:

  1. Загрузка истории сессии: Считывается полная запись диалога из ~/.claude/projects/<проект>/<ID_сессии>.jsonl.
  2. Восстановление контекста: Системный промпт, определения инструментов и вся история сообщений собираются в единый массив messages.
  3. Оптимизация кэширования: Поскольку восстановленный контекст обычно объемный (включает всю историю), Claude Code более активно устанавливает точки cache_control в системных сообщениях для экономии затрат.
  4. Отправка запроса: Первый же вызов API содержит полный восстановленный контекст + cache_control (включая поле scope).

Ключевой момент: при восстановлении сессии контекст больше → оптимизация кэширования агрессивнее → поле cache_control встречается чаще → вероятность ошибки выше.

При создании новой сессии это тоже может произойти, но из-за меньшего начального контекста метки кэширования расставляются не так плотно.

Решение ошибки Claude Code Bedrock №1: Отключение экспериментальных Beta-функций (рекомендуется)

Это самый оптимальный вариант — он исправляет ошибку, сохраняя при этом базовую функциональность кэширования промптов (Prompt Caching).

Принцип работы

После установки переменной CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 Claude Code будет:

  • Удалять Beta-заголовки из запросов (например, prompt-caching-scope-2026-01-05).
  • Удалять поле scope из cache_control.
  • Сохранять поля, поддерживаемые Bedrock, такие как cache_control.type и cache_control.ttl.

Другими словами, вы по-прежнему сможете экономить на вызовах модели благодаря кэшированию промптов, просто без использования новой функции scope.

Настройка в терминале CLI

macOS / Linux:

# Временная настройка (действует до закрытия терминала)
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1

# Постоянная настройка (добавление в файл конфигурации shell)
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 не считывает переменные окружения из shell — даже если вы прописали их в .zshrc, расширение их не увидит. Настройку нужно выполнить следующим образом:

Способ 1: Изменение глобального файла конфигурации Claude (рекомендуется)

Отредактируйте файл ~/.claude/settings.json:

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

Способ 2: Через настройки VS Code

Откройте настройки VS Code → введите в поиске claude → найдите раздел конфигурации переменных окружения → добавьте CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1.

Настройка для IDE JetBrains

Плагин Claude Code для IDE семейства JetBrains (IntelliJ, WebStorm, PyCharm и др.) также требует отдельной настройки:

Отредактируйте файл ~/.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: Полное отключение кэширования промптов

Если первый вариант не решил проблему (что случается крайне редко), можно полностью отключить кэширование промптов.

Принцип работы

После установки 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 报错修复方案三:双保险配置

同时设置两个环境变量,确保所有 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 原生接口,完整支持 Prompt Caching 的所有功能(包括 scope),且无需 AWS 账号。

Claude Code Bedrock 报错完整排查流程

如果你不确定自己的情况适用哪种方案,请按以下流程进行排查:

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

第 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 步:应用修复

# 先尝试方案一
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1

# 测试是否修复
claude --resume

第 4 步:验证修复

# 验证环境变量是否生效
echo $CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS
# 应该输出: 1

# 测试新建会话
claude

# 测试恢复会话
claude --resume

第 5 步:如果仍然报错

# 追加方案二
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. Вот список похожих проблем, с которыми часто сталкиваются пользователи:

Ключевое слово ошибки Причина Способ исправления
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

Большинство этих проблем можно решить «одним махом» с помощью CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1, так как все эти неподдерживаемые поля по сути являются Beta-функциями оригинального API Anthropic.

💰 Оптимизация затрат: Prompt Caching в Bedrock поддерживает только два значения TTL: 5 минут и 1 час. Если ваш сценарий сильно зависит от кэширования, подключение к оригинальному API Anthropic через сервис-прокси APIYI (apiyi.com) позволит использовать более гибкие стратегии кэширования и избежать затрат времени на отладку из-за проблем совместимости.

FAQ: Часто задаваемые вопросы об ошибках Claude Code в Bedrock

Q1: Переменные окружения заданы, но в VS Code все равно ошибка?

Расширение VS Code не наследует переменные окружения, заданные в .zshrc или .bashrc. Вам необходимо прописать их в файле ~/.claude/settings.json через поле env:

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

После настройки перезапустите VS Code (не просто перезагрузите окно, а полностью закройте и откройте программу), чтобы изменения вступили в силу.

Q2: Повлияет ли отключение Prompt Caching на производительность?

Это не повлияет на качество ответов модели или скорость отклика. Prompt Caching — это лишь механизм оптимизации затрат: при попадании в кэш вы экономите на повторной обработке токенов. Если отключить эту функцию, каждый запрос будет оплачиваться полностью, но поведение модели останется прежним. В коротких диалогах разница в цене минимальна. В длинных сценариях кэширование позволяет сэкономить 30–50% стоимости входных токенов.

Q3: Будет ли эта проблема исправлена официально?

Это известная проблема, она отслеживается в нескольких тикетах на GitHub (например, #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?

Начиная с марта 2026 года (PR #22867), в LiteLLM встроена функция _remove_scope_from_cache_control, которая автоматически удаляет поле scope из запросов, отправляемых в Bedrock и Azure AI. Если вы используете последнюю версию LiteLLM, проблема должна решаться автоматически. Но для надежности рекомендуем все равно установить CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1.

Q7: Есть ли идеальное решение без потери функционала?

Для пользователей Bedrock на данный момент нет решения без потерь. Первый вариант (отключение Beta-функций) лишает вас только новой возможности scope, что является минимальным неудобством. Если вы хотите полноценно использовать все возможности Prompt Caching от Claude (включая scope), вам нужно использовать оригинальный API Anthropic. Вы можете быстро подключиться к нему через платформу APIYI (apiyi.com), чтобы не зависеть от ограничений совместимости Bedrock.

Шпаргалка по исправлению ошибок Claude Code при работе с Bedrock

Действие Команда / Конфигурация
Вариант 1: Отключить Beta (рекомендуется) export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
Вариант 2: Отключить кэширование export DISABLE_PROMPT_CACHING=1
Конфигурация VS Code / JetBrains Отредактируйте поле env в ~/.claude/settings.json
Проверка переменных окружения echo $CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS
Тест возобновления сессии claude --resume
Просмотр файла конфигурации cat ~/.claude/settings.json
Проверка версии Claude Code claude --version
Отслеживание GitHub Issue anthropics/claude-code#23220

Резюме

Ошибка cache_control.scope: Extra inputs are not permitted, возникающая при вызове Claude Code через AWS Bedrock, вызвана тем, что Bedrock не поддерживает поле scope из бета-версии нативного API Anthropic.

Самый быстрый способ исправления:

# В CLI
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
// В ~/.claude/settings.json (рекомендуется, работает везде)
{
  "env": {
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
  }
}

Три вещи, которые стоит запомнить:

  1. Это не ваша ошибка — проблема кроется в различиях функционала Bedrock и нативного API Anthropic.
  2. Пользователи VS Code должны вносить настройки в settings.json — переменные окружения оболочки (shell) не считываются расширением VS Code.
  3. --resume не является первопричиной — ошибка может возникнуть при любом вызове Bedrock, просто --resume чаще провоцирует её проявление.

Если вы не хотите возиться с проблемами совместимости Bedrock, переход на нативный API Anthropic станет радикальным решением. Через APIYI (apiyi.com) можно быстро подключиться к нативному API Claude с полной поддержкой всех функций без необходимости настройки инфраструктуры AWS.


Автор статьи: Техническая команда APIYI
Техническая поддержка: Посетите APIYI apiyi.com для получения дополнительных руководств по Claude Code и технической помощи
Дата обновления: Апрель 2026 г.
Применимые версии: Claude Code v2.1.24+, AWS Bedrock


Справочные материалы:

  1. GitHub Issue #23220: Ошибка cache_control.scope в Claude Code v2.1.24+
    • Ссылка: github.com/anthropics/claude-code/issues/23220
  2. GitHub Issue #41731: Расширение VS Code отправляет неподдерживаемое поле scope
    • Ссылка: 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. Официальная документация Claude Code на Amazon Bedrock:
    • Ссылка: docs.anthropic.com/en/docs/claude-code/bedrock

Похожие записи