Erro 400 no Fable 5.2: corrija histórico, thinking e chamadas de ferramentas
Diagnostique falhas após atualizar para Fable 5.2, preserve o histórico assinado e remova parâmetros incompatíveis sem ignorar as exceções do Bedrock.
Se a atualização para Fable 5.2 retornar 400, leia o erro completo antes de alterar o prompt. Um erro de vínculo da conversa exige corrigir o histórico; um erro de ferramenta forçada exige mudar a requisição; uma rejeição ligada à retenção exige uma decisão sobre a política da conta. Repetir a mesma requisição não resolve nenhum desses casos.
Este diagnóstico segue a documentação de migração do Fable 5.2, verificada em 10 de novembro de 2026. Os exemplos marcados como “Before” ilustram padrões incompatíveis com o contrato nativo documentado. Nossos testes na Ofox não reproduziram o 400 documentado para thinking desativado ou ferramentas forçadas: a rota retornou 200. Os resultados observados abaixo importam quando um gateway aceita a requisição sem garantir o comportamento solicitado.
O que os testes na Ofox realmente retornaram
Enviamos três pequenas requisições a https://api.ofox.ai/anthropic/v1/messages, com ID exato anthropic/claude-fable-5.2, versão de API 2023-06-01, esforço baixo e limite de 4.096 tokens. Todas pediam o valor de três unidades a US$ 12 e usavam somente dados sintéticos.
| Teste | Resposta observada | O que comprova |
|---|---|---|
| Requisição mínima | 200, end_turn, US$ 36 | O caso básico de texto foi concluído |
Adição de thinking: {"type":"disabled"} | 200, mesma resposta visível | A rota aceitou o campo; isso não comprova que o raciocínio foi desativado |
Ferramenta declarada com lookup_stock forçada | 200, resposta textual, sem chamada de ferramenta | A execução forçada solicitada não ocorreu nesse teste |
O teste de ferramenta forçada manteve deliberadamente a instrução “Do not use tools” do prompt original. Um contrato de seleção forçada não pode ser validado apenas por uma resposta plausível: essa resposta não tinha bloco tool_use. Não identificamos qual camada do gateway ou do serviço upstream tratou as configurações incompatíveis. Portanto, não as classificamos como suportadas nem afirmamos ter localizado a causa.
São observações de requisições individuais, não garantias estáveis de compatibilidade. Para código portável, siga o contrato documentado, omita controles incompatíveis e teste o comportamento entregue na sua rota exata. O restante do artigo explica os casos oficiais de 400 e as correções na aplicação. Não reproduzimos falhas de prefixo assinado, retenção, ferramenta de computador ou advisor neste pequeno lote.

Captura em inglês do nosso registro de teste renderizado localmente, preenchido com respostas reais da API. Não é uma captura da interface do produto Ofox.
Localize primeiro onde a falha começa
Registre modelo exato, endpoint, versão da API, versão do SDK, status, corpo do erro e ID da requisição. Depois identifique a primeira requisição que falha. Não inclua credenciais nem conteúdo privado da conversa em relatos públicos de bugs.
| Ponto da falha ou erro | O que inspecionar primeiro | Próxima ação adequada |
|---|---|---|
| Primeira requisição menciona thinking ou sampling | Padrões injetados pelo wrapper do SDK | Remover campos incompatíveis |
| Continuação diz que um bloco pertence a outra conversa | Sistema, definições de ferramentas e mensagens anteriores | Restaurar o prefixo original |
Erro menciona tool_choice | Seleção forçada adicionada por um framework | Usar auto e exigir conclusão no código da aplicação |
| Erro menciona ID de ferramenta sem correspondência | Chamadas do assistente e próxima mensagem de resultados | Restaurar cada resultado real correspondente |
| Erro menciona ferramentas de computador ou advisor | Compatibilidade entre modelo e plataforma | Aplicar a migração específica da plataforma |
| Primeira requisição à Claude API menciona retenção ou ZDR | Elegibilidade de retenção do workspace | Resolver com o responsável pela conta antes de enviar dados |
| Sucesso HTTP, mas sem texto de resposta | Motivo de encerramento e limite de saída | Diagnosticar esgotamento de saída, não um 400 |
Preserve uma requisição comprovadamente funcional com entrada sintética. Remova campos opcionais de uma cópia e recoloque um por vez. Isso ajuda a distinguir uma restrição do modelo de um wrapper que adiciona padrões silenciosamente. Mantenha a requisição original capturada sem alterações para comparação.
Corrija uma falha de vínculo da conversa
O Fable 5.2 verifica o prefixo em todas as contas. Uma requisição que funcionava no Fable 5.1 em uma conta antiga pode falhar após a atualização se o cliente editar o histórico anterior. A mensagem documentada inclui The block is bound to a different conversation.
Causas comuns incluem reconstruir o prompt de sistema com um novo timestamp, mudar o esquema de ferramentas entre turnos, reordenar mensagens ou substituir conteúdo anterior por um resumo local. Preservar a assinatura, por si só, não torna válido um prefixo editado.
Esta é a diferença na aplicação:
# Before: rewriting history after the model has produced signed content.
system = base_system + " Current time: " + current_timestamp
messages[0] = {"role": "user", "content": shortened_original_request}
# After: freeze the original request prefix; add genuinely new instructions.
system = original_system
messages.append({"role": "user", "content": new_instruction})
O padrão “After” serve para informações novas, não como método universal de compactação de um contexto cheio. Se precisar alterar tarefa, ferramentas ou resumo, comece uma nova conversa com um checkpoint verificado da aplicação ou use um mecanismo documentado de gestão de contexto compatível com sua rota. Não mantenha blocos assinados antigos esperando que o histórico editado seja equivalente.
Compare os valores serializados imediatamente antes do envio. Confira o prompt de sistema original, as definições de ferramentas, a ordem das mensagens e os blocos completos do assistente. Um log de chat legível pode omitir justamente os campos relevantes. Em integrações MCP, verifique também se uma lista variável de ferramentas do servidor altera o prefixo; fixar apenas o dicionário local de ferramentas pode não cobrir essa origem de mudança.
O guia de preserved thinking documenta uma recuperação beta com thinking.block_binding.prefix_mismatch_behavior: "drop_block" e o header thinking-binding-controls-2026-08-01. Ela descarta o raciocínio afetado em vez de repará-lo. Use o relatório input_transformations para encontrar a alteração e considere possível regeneração adicional. Verifique o suporte à beta na rota escolhida antes de depender dela; este artigo não afirma que a rota Bedrock da Ofox repassa esse controle.
Preserve mensagens inteiras, inclusive blocos opacos
Não reconstrua a próxima requisição somente com o texto exibido na interface. Blocos nativos de thinking têm assinaturas opacas, e blocos com conteúdo ocultado (redacted_thinking) contêm dados opacos. Preserve os blocos completos da resposta e sua ordem ao continuar a mesma conversa.
# response is a completed native SDK Message.
messages.append({
"role": "assistant",
"content": [block.model_dump(exclude_none=True)
for block in response.content],
})
No streaming, espere o término e obtenha a mensagem final montada. Um coletor que registra apenas deltas de texto pode exibir uma resposta útil e salvar uma continuação inutilizável. Nunca crie uma assinatura substituta. Se o estado se perdeu, recupere a mensagem original ou inicie uma nova sessão da tarefa com fatos verificados.
“Invalid signature” e “Different conversation” são diagnósticos relacionados, mas não causas idênticas. O artigo de assinaturas de thinking do Claude, em inglês cobre falhas de serialização e streaming. Este guia do 5.2 acrescenta a fronteira mais rígida da atualização; não pressupõe que todos os modelos anteriores imponham as mesmas regras.
Remova configurações herdadas de thinking e sampling
O raciocínio adaptativo do Fable 5.2 não pode ser desativado. Um wrapper herdado de um modelo com thinking manual pode enviar um budget_tokens fixo ou thinking: {"type":"disabled"}. Remova essas configurações e use o controle de esforço suportado.
{
"model": "claude-fable-5-2",
"max_tokens": 4096,
"output_config": {"effort": "low"},
"messages": [{"role": "user", "content": "Calculate 3 times 12."}]
}
Esse é um modelo de corpo de requisição para a Claude API. Na Ofox, use o ID e o endpoint do guia de API. O exemplo omite thinking porque o comportamento adaptativo já é o padrão do modelo.
Remova temperature, top_p e top_k em vez de experimentar valores aleatórios. A referência de compatibilidade de thinking diferencia versões de API: nesses modelos mais novos, valores de sampling não padrão são rejeitados nas versões antigas; a partir da versão 2026-10-21, a presença desses campos é rejeitada com qualquer valor. Confira também se há uma mensagem final do assistente pré-preenchida: ela não é uma alternativa suportada para formatar a saída nesse caso.
Thinking sempre ativo e restrições de ferramentas forçadas também se aplicam ao Fable 5.1. São restrições herdadas que a atualização pode expor por mudanças nos caminhos do código, não regras introduzidas exclusivamente no 5.2.
Substitua a seleção forçada sem presumir execução garantida
No contrato nativo documentado da Claude API, estes padrões são incompatíveis com Fable 5.2. Como mostram os testes da Ofox, não presuma que todo gateway retorna o mesmo erro:
{"tool_choice": {"type": "any"}}
{"tool_choice": {"type": "tool", "name": "lookup_stock"}}
Use {"tool_choice":{"type":"auto"}} e descreva quando a consulta é necessária. Depois valide a resposta real. Se a tarefa exige dados de estoque de uma fonte confiável, mas o modelo responde sem chamar a ferramenta, não aceite a resposta como trabalho de estoque concluído.
Para saídas com formato definido por esquema, esquemas estritos de ferramentas ou saída estruturada, quando suportados, podem atender às exigências de formato. Isso não obriga uma ferramenta específica a executar, e as restrições de modelo e conta continuam válidas. Em particular, o guia oficial de migração identifica organizações com chaves de criptografia gerenciadas pelo cliente como um caso que exige verificações adicionais de compatibilidade de saída estruturada.
Um loop seguro da aplicação separa três decisões: se houve uma chamada de ferramenta, se os argumentos são válidos e autorizados e se o resultado atende à tarefa. Ele deve limitar o número de turnos e ter um estado explícito de falha ou incompletude. Caso contrário, trocar seleção forçada por auto pode transformar um 400 visível em uma ação ausente que ninguém percebe.
Corrija resultados de ferramentas ausentes no protocolo
Se o erro mencionar tool_use_id, liste todas as chamadas do turno anterior do assistente e associe cada uma ao seu resultado real. Use tool_result dentro de uma mensagem nativa do usuário para Anthropic Messages e o formato de mensagem de ferramenta para Chat Completions. São protocolos diferentes.
Para uma consulta que falhou, retorne um erro verdadeiro. Para uma consulta concluída antes de o processo cair, recupere o resultado persistido. Não refaça um pagamento, um envio de e-mail ou uma escrita só para obter outro bloco de resultado. O diagnóstico de 400 em resultados de ferramentas, em inglês explica a posição das mensagens; o tutorial de checkpoint explica o registro durável necessário entre reinicializações.
Confira as exceções do Bedrock e do advisor
A ferramenta antiga computer_20251124 retorna erro com Fable 5.2 nas plataformas documentadas, exceto no Amazon Bedrock. Nas demais, a migração exige a declaração mais nova computer_toolset_20260801 e mudanças correspondentes no loop do agente, não apenas substituir a string do tipo mantendo os argumentos antigos.
Essa exceção importa para a Ofox: o catálogo de 10 de novembro lista aws_bedrock para Fable 5.2. Não apresente a ferramenta antiga de computador como uma falha observada na Ofox com base apenas em um exemplo da Claude API. Confirme primeiro a rota real, as ferramentas suportadas e a requisição completa.
Ao usar a ferramenta advisor da Anthropic, um executor 5.2 precisa de um advisor 5.2 suportado. Alterar a declaração do advisor muda o prefixo de ferramentas; portanto, migre em uma nova conversa em vez de editar uma sessão assinada existente. A beta de advisor também precisa ter sua disponibilidade conferida separadamente de texto comum e chamadas de função.
Não trate falhas de política ou capacidade como prompts malformados
A Anthropic documenta retenção de 30 dias para Fable 5.2, com exceções sujeitas a autorização expressa. Um workspace da Claude API com configuração ZDR incompatível pode receber 400. Não reduza automaticamente a proteção da política de retenção de um cliente para fazer a requisição passar. Encaminhe a decisão ao responsável pela conta e consulte os termos da plataforma efetivamente usada; essa regra não comprova a configuração da conta Ofox.
Para 429 ou 529, inspecione capacidade e orientações de novas tentativas. Repetições limitadas com backoff podem ser adequadas em sobrecarga transitória; repetir um 400 malformado sem alterações não é. Use o guia de sobrecarga 529, em inglês e a documentação atual de limites da Ofox.
Valide a correção no mesmo fluxo que falhava
Execute uma requisição nova, uma continuação, um ciclo de ferramenta somente de leitura e a restauração de uma sessão salva. Uma requisição nova passar não comprova que a preservação do histórico foi corrigida. Em um teste sintético separado, edite deliberadamente um prefixo para confirmar que o diagnóstico identifica a transformação em vez de ocultá-la.
Guarde o formato da requisição antes e depois, o erro, a rota exata e o resultado de conclusão. Se ativou uma recuperação que descarta blocos, registre o estado descartado e inspecione também a resposta entregue. Encerre a investigação apenas quando o fluxo real passar nas verificações independentes de aceitação sem repetir efeitos colaterais.
Documentação relacionada: Messages nativo da Ofox, autenticação e guia oficial de migração.


