{"slug": "claude-fable-5-1-pensamento-preservado-solucao-para-o-erro-the-block-is-bound-to", "title": "Claude Fable 5.1 Pensamento Preservado: Solução para o erro \"The Block Is Bound to a Different Conversation\"", "summary": "Claude Fable 5.1 introduces a preserved-thinking verification that rejects message histories edited between requests, returning a 400 error for thinking blocks bound to a different conversation. The check, designed to prevent distillation, compares the prefix of system, tools, and messages byte-for-byte, and can be bypassed by using an append-only history or setting the prefix_mismatch_behavior to 'drop_block' with the appropriate beta header.", "body_md": "Se você migrou um *agent harness* para o Claude Fable 5.1 e começou a receber um erro 400 informando que um bloco de pensamento “está vinculado a uma conversa diferente”, o código provavelmente está editando o histórico entre requisições. O Fable 5.1 é o primeiro modelo Claude que rejeita esse padrão. Este guia mostra o que é a verificação, quando ela se aplica, o que a dispara, como contorná-la e como usar um histórico *append-only* para preservar o raciocínio e manter o cache de prompt aquecido.\n\nA verificação está documentada em [“pensamento preservado”](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking) e em [“O que há de novo no Claude Fable 5.1”](https://platform.claude.com/docs/en/models/fable-5-1/whats-new-fable-5-1). Ela é uma das três mudanças importantes do Fable 5.1 e a única que pode degradar silenciosamente um *harness*. Para as outras duas, consulte o [guia de migração](https://apidog.com/pt/blog/claude-fable-5-1-migration?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation).\n\n```\nmessages.5.content.0: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.prefix_mismatch_behavior` to \"drop_block\". That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header.\n```\n\nEsse é um erro `400 invalid_request_error`\n\n, retornado antes de qualquer saída. Repetir a mesma requisição com o mesmo corpo falha novamente.\n\nO caminho (`messages.5.content.0`\n\n) aponta para o primeiro bloco de pensamento que deixou de corresponder. A mensagem pode incluir uma frase adicional indicando a primeira mensagem alterada — esse é o diagnóstico mais útil. O endpoint de contagem de tokens executa a mesma verificação.\n\nUma falha parecida tem uma causa diferente: se a mensagem não contém a frase “vinculado a uma conversa diferente”, a assinatura pode ter sido adulterada ou estar ilegível. Nesse caso, `prefix_mismatch_behavior`\n\nnão se aplica.\n\nCada bloco de pensamento do Fable 5.1 contém uma assinatura que registra:\n\n`system`\n\nde nível superior.`tools`\n\n.Ao reenviar a transcrição, a API compara esse prefixo byte a byte com o prefixo original.\n\nA justificativa declarada pela Anthropic é anti-destilação: contas novas da API não podem editar manualmente o contexto anterior de Claude em uma conversa multi-turno enquanto preservam a transcrição do pensamento. A consequência prática é igualmente importante: as mesmas edições que quebram a verificação também reiniciam o cache de prompt.\n\nContas criadas em ou após 31 de agosto de 2026, incluindo:\n\nContas criadas antes dessa data. A API registra a inconsistência, mas só a aplica quando a requisição define `thinking.block_binding.prefix_mismatch_behavior`\n\n, inclusive com o valor `\"error\"`\n\n.\n\nA Anthropic afirma que modelos futuros aplicarão a verificação a todas as contas.\n\nA verificação não é executada por:\n\nEssas superfícies mantêm o prefixo intacto. O Claude Mythos 5.1 também não executa a verificação, embora alterações no histórico ainda reiniciem o cache.\n\nQualquer aplicação que construa o array `messages`\n\nmanualmente, como:\n\nSe você distribui uma ferramenta que usa as chaves de API dos usuários, teste com a verificação habilitada. Sua conta pode ser antiga, enquanto a conta de quem usa sua ferramenta pode estar sujeita à imposição.\n\nAs seguintes alterações quebram a vinculação:\n\n`system`\n\nou `tools`\n\nentre requisições.\nOs padrões seguros incluem:\n\n`role: \"system\"`\n\nanexadas no ponto em que se tornam verdadeiras.`system`\n\n, `tools`\n\ne `messages`\n\n, como:\n`max_tokens`\n\n.`output_config`\n\n, incluindo `effort`\n\n.`tool_choice`\n\n.`metadata`\n\n.`cache_control`\n\n.``python`\n\nresponse = client.beta.messages.create(\n\nmodel=\"claude-fable-5-1\",\n\nmax_tokens=16000,\n\nthinking={\n\n\"type\": \"adaptive\",\n\n\"block_binding\": {\n\n\"prefix_mismatch_behavior\": \"drop_block\"\n\n}\n\n},\n\nbetas=[\"thinking-binding-controls-2026-08-01\"],\n\nmessages=history,\n\n)\n\nfor t in response.input_transformations or []:\n\nprint(t.type, t.path, t.reason)\n\n`\n\nCom `\"drop_block\"`\n\n, a API descarta o primeiro bloco incompatível e todos os blocos de pensamento seguintes. A requisição continua e cada descarte aparece no array de nível superior `input_transformations`\n\n:\n\n`json`\n\n{\n\n\"input_transformations\": [\n\n{\n\n\"type\": \"thinking_dropped\",\n\n\"path\": \"messages.1.content.0\",\n\n\"reason\": \"prefix_binding_mismatch\"\n\n}\n\n]\n\n}\n\n`drop_block`\n\n; ainda assim, defina o valor explicitamente.`block_binding`\n\nsem o cabeçalho retorna:`text`\n\n400: block_binding: Extra inputs are not permitted\n\nO campo `reason`\n\ndiferencia dois casos:\n\n`prefix_binding_mismatch`\n\n: o histórico foi alterado.`model_binding_mismatch`\n\n: a conversa mudou de modelo, por exemplo após roteamento, nova tentativa ou fallback de recusa.O segundo caso não indica um bug no seu código. Com o cabeçalho habilitado, toda resposta contém `input_transformations`\n\n, vazio quando nada foi descartado.\n\nDescartar blocos uma vez, em um limite de compactação, costuma ter baixo custo. Invalidar o histórico em toda requisição elimina o raciocínio do modelo a cada turno e reinicia o cache de prompt. Use `drop_block`\n\ncomo diagnóstico e rede de segurança, não como estado permanente.\n\nEm plataformas que ainda não oferecem esses controles — o Microsoft Foundry não os oferecia no lançamento, enquanto Bedrock e Google Cloud os adicionavam por modelo — remova todos os blocos `thinking`\n\ne `redacted_thinking`\n\ndo histórico.\n\nMantenha os blocos `text`\n\ne `tool_use`\n\nde cada turno e tente novamente uma vez. O modelo responderá sem o raciocínio contido nesses blocos.\n\nEssa é uma recuperação pontual, não um padrão de implementação.\n\nCapture os corpos exatos enviados pelo *harness* em vários turnos normais, incluindo:\n\nPara cada par de requisições consecutivas, compare:\n\n`system`\n\n.`tools`\n\n.`messages`\n\n.Tudo deve ser byte a byte idêntico até os turnos recém-anexados.\n\n`drop_block`\n\ndurante o teste\nExecute uma sessão multi-turno normal com `claude-fable-5-1`\n\ne registre `input_transformations`\n\nem todas as respostas:\n\n`json`\n\n{\n\n\"thinking\": {\n\n\"type\": \"adaptive\",\n\n\"block_binding\": {\n\n\"prefix_mismatch_behavior\": \"drop_block\"\n\n}\n\n},\n\n\"betas\": [\n\n\"thinking-binding-controls-2026-08-01\"\n\n]\n\n}\n\nUm array vazio em todos os turnos indica que o histórico permaneceu intacto. Uma entrada `prefix_binding_mismatch`\n\nmostra que algo anterior ao bloco indicado em `path`\n\nfoi alterado.\n\nComo configurar o campo ativa a imposição para aquela requisição, o teste funciona em contas antigas e novas. No CI, use `\"error\"`\n\npara transformar qualquer edição em falha explícita.\n\nEscolha e defina o comportamento explicitamente:\n\n`\"error\"`\n\n: melhor quando uma inconsistência sempre indica um bug.`\"drop_block\"`\n\n: melhor quando é preferível degradar em vez de falhar.Monitore os erros 400 ou as entradas de `input_transformations`\n\nem ambos os casos. Não deixe o campo indefinido em contas antigas: a API pode apenas registrar a inconsistência no servidor, sem oferecer um sinal para monitoramento.\n\nNo Apidog, a etapa 2 pode ser criada como um teste de duas requisições:\n\n`input_transformations`\n\n.Mantenha o teste na coleção para executá-lo novamente a cada alteração no *harness*. [Baixe o Apidog](https://apidog.com/download?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation) para construir esse fluxo.\n\n`append-only`\n\nCada substituição abaixo mantém o prefixo intacto e ajuda a preservar o cache.\n\n| Você estava fazendo | Faça isto em vez disso |\n|---|---|\n| Editando o prompt do sistema no meio da sessão, como atualizar a data ou o modo | Congele `system` no início. Quando a mudança se tornar verdadeira, anexe `{\"role\": \"system\", \"content\": \"A data atual é 2026-09-14.\"}` no ponto correto. Mensagens de sistema intermediárias tornam-se parte do prefixo. |\nEditando o array `tools` no meio da sessão |\nDeclare o conjunto completo no início, usando `defer_loading: true` para ferramentas inicialmente ocultas. Envie blocos `tool_addition` e `tool_removal` em uma mensagem `role: \"system\"` com o beta `mid-conversation-tool-changes-2026-07-01` . |\n| Injetando um lembrete por turno e removendo-o na próxima requisição | Envie o lembrete como uma mensagem de sistema com escopo de turno: `{\"role\": \"system\", \"clear_at\": \"next_user_message\", \"content\": \"...\"}` . Use o beta `mid-conversation-system-clear-at-2026-08-21` e mantenha todas as cópias anteriores no histórico. |\n| Apagando resultados antigos de ferramentas no cliente | Use edição de contexto no lado do servidor com limpeza de resultados de ferramentas. |\n| Compactando no cliente mantendo a cauda literal | Prefira a\n`compact-2026-01-12` . O parâmetro `instructions` aceita seu próprio prompt de sumarização. |\n\n`file_id`\n\n, ou use base64.Duas estratégias de compactação no cliente falham sob a verificação:\n\n`keep-tail`\n\nCortar turnos individuais do meio da transcrição também invalida cada bloco posterior. Para mudanças de instrução, use mensagens de sistema intermediárias; para remoção seletiva, prefira edição de contexto no lado do servidor.\n\nHá ainda uma consideração de custo: como leituras de cache custam agora US$ 0,25 por milhão de tokens, compactar cedo para economizar dinheiro pode não ser a melhor compensação no Fable 5.1. Experimente pontos de compactação mais tardios.\n\nTudo que quebra a vinculação também pode reiniciar o cache de prompt.\n\nO Fable 5.1 tornou os *cache hits* quatro vezes mais baratos que no Fable 5 e tornou os *cache misses* proporcionalmente mais caros. Um *harness* `append-only`\n\noferece dois benefícios:\n\nConsulte o [detalhamento de preços](https://apidog.com/pt/blog/claude-fable-5-1-pricing?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation), o [guia da API](https://apidog.com/pt/blog/claude-fable-5-1-api?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation), o [guia de prompting](https://apidog.com/pt/blog/prompting-claude-fable-5-1?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation) e o [guia do Claude Code](https://apidog.com/pt/blog/claude-fable-5-1-claude-code?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation).\n\nUm bloco de pensamento do Claude Fable 5.1 foi reproduzido depois que algo anterior mudou: o prompt do sistema, o array de ferramentas ou uma mensagem anterior. Em contas sujeitas à imposição, a API rejeita a requisição com um erro 400.\n\nContas criadas em ou após 31 de agosto de 2026, em todas as plataformas. Contas mais antigas só a impõem quando a requisição define `thinking.block_binding.prefix_mismatch_behavior`\n\n. A Anthropic planeja aplicar a regra a todas as contas em modelos futuros.\n\nEnvie o beta `thinking-binding-controls-2026-08-01`\n\ncom `prefix_mismatch_behavior: \"drop_block\"`\n\n. A API descartará os blocos afetados e continuará. Depois, corrija a edição do histórico: descartar blocos a cada turno elimina raciocínio e reinicia o cache.\n\n`effort`\n\nou `max_tokens`\n\ninvalida blocos de pensamento?\nNão. Parâmetros fora de `system`\n\n, `tools`\n\ne `messages`\n\npodem ser alterados livremente. O mesmo vale para os marcadores `cache_control`\n\n.\n\nNão. A compactação e a edição de contexto ocorrem após a verificação, que compara a conversa enviada. A compactação no cliente que mantém os turnos recentes literalmente quebra a vinculação.\n\nNão. O Mythos 5.1 não executa a verificação de conversa, embora ainda vincule os blocos de pensamento ao modelo produtor. Alterações no histórico continuam reiniciando o cache.", "url": "https://wpnews.pro/news/claude-fable-5-1-pensamento-preservado-solucao-para-o-erro-the-block-is-bound-to", "canonical_source": "https://dev.to/lucas_ferreira/claude-fable-51-pensamento-preservado-solucao-para-o-erro-the-block-is-bound-to-a-different-5d9a", "published_at": "2026-09-02 04:43:29+00:00", "updated_at": "2026-09-02 04:52:30.381268+00:00", "lang": "en", "topics": ["large-language-models", "ai-products", "developer-tools"], "entities": ["Claude Fable 5.1", "Anthropic", "Claude Mythos 5.1"], "alternates": {"html": "https://wpnews.pro/news/claude-fable-5-1-pensamento-preservado-solucao-para-o-erro-the-block-is-bound-to", "markdown": "https://wpnews.pro/news/claude-fable-5-1-pensamento-preservado-solucao-para-o-erro-the-block-is-bound-to.md", "text": "https://wpnews.pro/news/claude-fable-5-1-pensamento-preservado-solucao-para-o-erro-the-block-is-bound-to.txt", "jsonld": "https://wpnews.pro/news/claude-fable-5-1-pensamento-preservado-solucao-para-o-erro-the-block-is-bound-to.jsonld"}}