Claude Invalid signature in thinking block: что проверить в истории
Как сохранить thinking-блоки Claude, собрать подпись из потока и отличить повреждение данных от ошибки привязки к диалогу.
Если Claude сообщает о неверной подписи thinking-блока, проверьте структурированную историю, которую отправили обратно. Сохраняйте исходный блок вместе с подписью, а не восстанавливайте его из видимого текста. Если ошибка явно упоминает другой диалог, исследуйте изменения предшествующего системного промпта, инструментов и сообщений.
Это разные причины сбоя. Строка подписи может присутствовать без изменений, но блок с привязкой к диалогу уже не подходит к изменённому префиксу. Руководство опирается на документацию диагностики thinking, проверенную 14 сентября 2026 года. Оно не утверждает, что все модели применяют одинаковые правила привязки.
Прочитайте ошибку до изменения истории
Сохраните полный тип и текст ошибки, request ID, модель и версию клиента. Определите границу: отказал первый запрос или только продолжение после инструмента, восстановления сессии либо редактирования истории? Это помогает найти путь, потерявший состояние.
| Симптом | Что проверить первым |
|---|---|
| Сбой после результата инструмента | Сохранён ли весь assistant content |
| Сбой после стриминга | Собраны ли signature deltas до конца блока |
| Сбой после сводки или правки промпта | Указывает ли ошибка на привязку к диалогу |
| Сбой только через адаптер | Сериализованный запрос на границах протоколов |
Не публикуйте приватную историю или непрозрачные подписи в открытом issue. Обычно лучше начать с обезличенного описания типов блоков и преобразования. При необходимости сохраните неизменённую локальную копию для сопоставления своих запросов.
Сохраняйте assistant content целиком
Нативный блок thinking содержит значение thinking и непрозрачную signature. redacted_thinking использует data; это не обычный видимый текст. Пустой видимый текст рассуждений сам по себе не доказывает повреждение.
Руководство по thinking и инструментам описывает продолжение таких ходов. Сохраняйте значения и порядок вместе с остальным ответом ассистента. Не пересказывайте thinking-блок, не заменяйте подпись и не собирайте сообщение из текстовой расшифровки интерфейса.
Этот фрагмент Python показывает сохранение уже полученного ответа. Это не полный запрос и не реальный тест API. Приспособьте сериализацию к установленному SDK, сохранив весь content, а не только текстовые поля.
assistant_content = [block.model_dump(exclude_none=True) for block in response.content]
messages.append({"role": "assistant", "content": assistant_content})
# Append the real tool_result message next, following the native tool protocol.
Не подставляйте придуманную подпись в запрос. Правдоподобная строка не является блоком, выпущенным провайдером. Если оригинал потерян, выясните причину потери вместо изготовления отсутствующего состояния.
Поток нужно собирать не только из текста
Стриминговая интеграция должна собирать поддерживаемые события блоков. Справочник Messages API описывает signature_delta перед соответствующим content_block_stop. Сборщик только text_delta или видимых рассуждений не сохраняет полный структурированный ответ SDK.
Проверьте, не пометил ли клиент частично собранный блок завершённым после обрыва, отмены или перерисовки интерфейса. Для диагностики сохраняйте индекс блока и порядок событий. Читаемый частичный ответ на экране — не основание пересылать незаконченный блок.
Поддерживаемая обработка потока официальным SDK уменьшает объём самописной сборки, но не защищает историю от последующего преобразования в обычный текст или фильтрации приложением. Сравните объект ответа в памяти со следующим сериализованным запросом: преобразование между ними часто показывает место потери данных.
Привязка к диалогу проверяется отдельно
Текущая документация описывает conversation-bound signatures для Claude Fable 5.1: правило применяется к аккаунтам, созданным 31 августа 2026 года или позднее, и запросам с документированной настройкой привязки. Это правило конкретной модели. Если ошибка указывает на другой диалог, изменения перед thinking-блоком могут быть значимы даже при неизменённом блоке: например, правки system, tools или старых сообщений.
В этом сценарии используйте историю только с добавлением новых сообщений либо документированные серверные механизмы компакции и редактирования контекста. Нельзя произвольно переписать старую историю локально и считать, что сохранение подписей делает её валидной. Документация содержит специальные механизмы восстановления, но они не являются универсальными настройками каждого запроса Claude.
Мы не советуем первым действием включать специальную бета-функцию восстановления. Сначала проверьте модель и точное соответствие ошибки описанному случаю. Восстановление с удалением блока меняет сохранённое состояние и должно быть осознанным решением приложения.
Не всякая смена модели делает историю невалидной
Текущая страница диагностики объясняет: блоки, которые другая модель не может прочитать, могут быть отброшены, а не обязательно вызвать ошибку привязки. Поэтому утверждение, что смена модели всегда ломает thinking-подписи, слишком широкое. Нельзя также объявлять любой маршрут между провайдерами заведомо несовместимым.
Запишите исходную модель, целевой маршрут и точную ошибку, затем изучите совместимость. При преобразовании нативных Claude messages в иной API проверьте сохранение обязательных метаданных, не придумывая универсальное соответствие полей.
Связь результатов инструментов — ещё одна независимая проверка. Если ошибка называет ID без пары, используйте руководство missing tool_result, а не меняйте подписи. У Gemini есть собственные поля thought signature, не взаимозаменяемые с нативной signature Claude.
Частые вопросы
Можно исправить подпись, отредактировав её значение?
Нет. Считайте её непрозрачным состоянием провайдера. Если доступен оригинал, восстановите полный блок и найдите преобразование, которое его изменило или удалило.
Почему первый запрос проходит, а второй нет?
Продолжение могло потерять структурированные thinking-данные или изменить префикс, к которому привязан блок. Сравните полный первый ответ с фактически отправленным продолжением, не только видимый текст.
Новая сессия доказывает исправление бага?
Нет. Она отделяет повреждённую историю, но адаптер может снова удалить обязательные поля на следующем инструментальном раунде. Проверьте путь сохранения до закрытия проблемы.
Часто задаваемые вопросы
- Можно исправить подпись, отредактировав её значение?
- Нет. Считайте её непрозрачным состоянием провайдера. Если доступен оригинал, восстановите полный блок и найдите преобразование, которое его изменило или удалило.
- Почему первый запрос проходит, а второй нет?
- Продолжение могло потерять структурированные thinking-данные или изменить префикс, к которому привязан блок. Сравните полный первый ответ с фактически отправленным продолжением, не только видимый текст.
- Новая сессия доказывает исправление бага?
- Нет. Она отделяет повреждённую историю, но адаптер может снова удалить обязательные поля на следующем инструментальном раунде. Проверьте путь сохранения до закрытия проблемы.


