Conclusão primeiro: o Opus 5.5 não é uma troca de string de modelo. Em 22 de setembro de 2026 a Anthropic lançou o Claude Opus 5.5 (claude-opus-5-5). A tabela de preços parece amigável: $4 / $20 input / output, 20% abaixo do Opus 5; cache reads $0.20, queda de 60%. A Anthropic diz que cargas típicas custam cerca de 40% menos. No mesmo dia a OpenAI cortou o GPT-6 Sol e o Luna praticamente pela metade. O que quebra produção são quatro falhas duras: thinking não pode ser desligado; os valores any e tool de tool_choice devolvem 400; os thinking blocks ficam amarrados ao modelo e à conversa; a Claude API e o Google Cloud rejeitam computer_20251124. Pipelines que garantiam um objeto JSON forçando uma tool call agora têm de usar auto mais strict: true e um JSON Schema — ou Structured Output.
Escrito em 24 de setembro de 2026, contra a página de modelos da Anthropic e o «What's new» ainda atuais naquele dia. Este site já tem por que o Tool Calling depende de JSON Schema, o que é Structured Output e por que agentes precisam de JSON depois da Agents API. Este texto só responde qual camada do contrato JSON precisa mudar quando você vai para o 5.5.
O que de fato saiu em 22 de setembro
O Claude Opus 5.5 é o primeiro modelo da família Claude 5.5. Posicionamento oficial: coding agentic de longa duração e trabalho de conhecimento. O ID é claude-opus-5-5 na Claude API, no Google Cloud e no Microsoft Foundry; o Bedrock usa anthropic.claude-opus-5-5. A aposentadoria não é antes de 22 de setembro de 2027. Sonnet 5.5 e Haiku 5.5 vêm «nas próximas semanas».
Preços por milhão de tokens: $4 in, $20 out, $5 para um cache write de 5 minutos, $8 para um cache write de 1 hora, $0.20 para um cache read. Batch é metade do preço. Fast mode só na Claude API: speed: "fast" mais fast-mode-2026-02-01, $8 / $40, até cerca de 2,5× de velocidade. O effort padrão é medium — o Opus 5 defaultava para high. Omita effort e o comportamento muda. Isso não é compatibilidade silenciosa.
A tabela de lançamento coloca o Terminal-Bench 4.0 em 66,4% contra 57,9% do GPT-6 Astra. A Anthropic também diz que, nesta faixa de capacidade, diferenças de score são um guia mais fraco do que tarefas reais, e o gap sentido até o Fable 5.1 é mais estreito do que a tabela. Este artigo não escolhe um modelo a partir de um leaderboard.
Quatro falhas duras, uma tabela
A documentação lista os requests que viram 400 no 5.5. Os três primeiros também valem para o Fable 5.1:
| Request antigo | No 5.5 | O que enviar no lugar |
|---|---|---|
thinking: {"type": "disabled"} ou enabled mais budget_tokens | 400 invalid_request_error | Omita thinking, ou envie {"type": "adaptive"}; ajuste a profundidade com effort |
tool_choice: {"type": "any"} ou {"type": "tool", "name": "..."} | 400; o endpoint de token-counting aplica a mesma checagem | auto (ou none) mais strict: true, ou Structured Output |
| Replay de um thinking block depois de editar system / tools / uma mensagem anterior | 400 por padrão em contas criadas depois de 31 de agosto de 2026 | Mantenha a conversa só-append; mude instruções com uma system message no meio da conversa |
computer_20251124 na Claude API ou no Google Cloud | 400 | computer_toolset_20260801; o Bedrock ainda aceita a tool antiga |
Mais uma mudança não falha o request, mas fica quieta: as notas curtas entre tool calls agora chegam como thinking blocks. No padrão display: "omitted" o texto vem vazio. Uma UI que transmitia essas frases como barra de progresso fica muda. Defina thinking.display se você precisa do progresso.
Por que você não consegue mais forçar JSON com tool_choice
O patch de 2024–2025 era: defina uma tool «extract», ponha tool_choice em any ou nomeie essa tool, e o modelo tinha de enviar um objeto que batesse com input_schema. O programa lia os arguments da tool e nunca chamava JSON.parse na prosa do chat. No 5.5 esse caminho é um 400:
tool_choice: type "tool" and "any" are not supported for this model.
O substituto oficial não é «por favor, devolva JSON» de novo. Mantenha tool_choice em auto, ligue strict: true na tool e fixe os parâmetros com JSON Schema. Se a resposta final precisa de uma forma fixa, ponha o schema no Structured Output. Se você quer que o modelo chame uma tool em vez de responder em prosa, diga no prompt quando a tool se aplica. O prompt influencia qual tool o auto escolhe. Ele não substitui o schema.
Então o 5.5 não torna o JSON menos importante. Ele tira a muleta da chamada forçada. Sem a muleta, o contrato tem de se sustentar sozinho. Veja por que o Tool Calling depende de JSON Schema.
auto + strict + JSON Schema
A forma mínima pós-migração é:
{
"model": "claude-opus-5-5",
"tool_choice": { "type": "auto" },
"tools": [
{
"name": "extract_order",
"description": "Extract a confirmed order. Call when the user has named a sku and a quantity.",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"sku": { "type": "string" },
"qty": { "type": "integer", "minimum": 1 }
},
"required": ["sku", "qty"],
"additionalProperties": false
}
}
]
}
strict: true faz o decoder aceitar parâmetros contra o schema. Campos faltando, tipos errados e chaves a mais devem morrer aqui — não numa aposta de que uma chamada forçada vai produzir um objeto. Se a resposta final também entra num programa, use Structured Output. Não faça parse de frases do assistant. Veja o que é Structured Output e por que o JSON.parse falha.
Para mudar um schema de tool no meio da conversa, o 5.5 pode carregar uma definição completa numa system message no meio da conversa sob inline-tools-2026-09-15, sem editar o array tools de nível superior. É a mesma regra do thinking amarrado ao prefixo: faça append no histórico; não reescreva um snapshot de contrato que já foi enviado.
Thinking fica ligado, e você não edita o replay
O thinking adaptativo fica sempre ligado no 5.5. disabled ou um budget_tokens manual é um 400. Profundidade, latência e custo passam por effort: low / medium / high / xhigh / max. Onde você desligava thinking para poupar tokens, baixe o effort. No mesmo setting de effort, o 5.5 tende a pensar mais por turno do que o Opus 5, principalmente em xhigh e max. Deixe folga em max_tokens para esse thinking.
Cada thinking block registra qual modelo o escreveu. O 5.5 consegue ler blocks do Opus 5 e de Opus / Sonnet / Haiku anteriores. Ele não lê Fable nem Mythos. No outro sentido: Fable 5.1 e Mythos 5.1 na Claude API conseguem ler blocks do 5.5; nenhum outro modelo consegue. Blocks ilegíveis são descartados antes de o modelo vê-los. O request ainda devolve 200; blocks descartados não são cobrados. Para ver o que caiu, envie thinking-binding-controls-2026-08-01 e leia o array input_transformations de nível superior.
O prefix binding é mais estrito. Contas criadas em ou depois de 31 de agosto de 2026, 00:00 UTC, checam por padrão se o system prompt, as tools ou uma mensagem anterior mudaram desde que o block foi produzido. Replay depois de uma mudança dessas é 400. Isso é o thinking preservado do Fable 5.1. Não volte para editar um schema de tool no histórico para «consertar o contrato» — isso anula o thinking. Adicione tools novas com uma system message no meio da conversa. Ecoe thinking blocks sem modificar quando devolver resultados de tool.
computer_20251124 e uma barra de progresso silenciosa
Na Claude API e no Google Cloud, o 5.5 só aceita computer_toolset_20260801. Mantenha o header beta computer-use-2025-11-24 e o tipo antigo da tool, e você leva 400. O Bedrock ainda aceita computer_20251124. Browser use, e integrações que já estão no toolset, não precisam de mudança. O loop tem de tratar tool_use blocks membros, actions em batch e toolset_name nos resultados.
A frase curta entre tool calls já não é um text block. Com display omitted, o stream de progresso morre e não há erro. Isso não é falha de schema. É ler blocks por posição em vez de por type. Ramifique pelo type primeiro, depois decida se define thinking.display.
Sol e Luna estão ao lado da tabela de preços
No mesmo dia, a OpenAI lançou o GPT-6 Sol (gpt-6-sol, $2 / $10) e o GPT-6 Luna (gpt-6-luna, $0.10 / $0.50), cerca de metade dos pares GPT-5.6. O Astra fica em $10 / $50. O trabalho oficial do Luna é extração e sumarização de alto volume e objetivo claro — a faixa que pipelines JSON gostam. Um adesivo mais baixo não autoriza um schema mais frouxo.
Não escolha a rota só pelo preço de tabela. A economia típica de 40% do Opus 5.5 é metade cache e menos tokens por tarefa, não os 20% do cardápio. O effort padrão saindo de high para medium mexe na conta e na latência. Passe o mesmo schema por uma varredura de extração antes de mudar o roteamento. O GPT-5.5 ainda sai do ChatGPT / Work / Codex em 14 de outubro (a API fica fora dessa aposentadoria). É outra linha de produto. Não junte isso com estas breaking changes num único ticket de «atualizar tudo».
Quatro checagens antes de mudar a string do modelo
- Busque
tool_choice. Troque todoany/toolnomeado porauto. Para JSON estável, liguestricte aperte oinput_schema. - Busque
thinking. Removadisabledebudget_tokens. Definaeffortexplicitamente. Leia blocks portype. Ecoe thinking sem modificar. - Busque
computer_20251124. Na Claude API e no Google Cloud, vá para o toolset. O Bedrock pode esperar. - Replay e cache. Em contas pós-31 de agosto, não edite tools ou system no histórico. Mude um schema com uma mensagem em append. Compaction (
compact-2026-09-04) pode trocar por um resumo assinado e manter o thinking válido, nas condições da página de Compaction da Anthropic.
Inspecione o schema com ferramentas JSON locais
Antes de pôr o modelo em claude-opus-5-5, abra três textos no navegador: o input_schema antigo, um objeto arguments que você forçava com tool_choice, e o schema que pretende marcar strict.
- Validador JSON — a gramática é legal; se você tem schema, cheque campos required e chaves a mais juntos.
- Formatador JSON — expanda uma definição de tool numa linha e veja se
additionalPropertiesestá definido. - JSON Diff — compare uma amostra de chamada forçada com o menor objeto que o schema strict permite.
Nada sai do navegador. Estabilize o contrato, depois mude a string do modelo. O 5.5 vai mudar o effort, pensar mais e rejeitar o tool_choice antigo. Seus nomes de campo e a lista required não deveriam afrouxar junto.
FAQ
Consigo publicar só mudando o modelo para claude-opus-5-5?
Não como padrão. Se o request ainda tem thinking.disabled, budget_tokens, tool_choice any/tool, ou computer_20251124 na Claude API, você leva 400.
Sem uma tool forçada, como ainda pegar JSON?
Mantenha tool_choice em auto, ligue strict na tool, preencha required e ponha additionalProperties em false. Ponha a resposta final no Structured Output. Não faça JSON.parse da prosa do chat.
Se thinking não pode ser desligado, a conta fica sempre mais alta?
Não necessariamente. Os preços de tabela são mais baixos, cache reads são mais baratos, e a Anthropic cita cerca de 40% menos em cargas típicas. O effort padrão é medium. Troque profundidade com effort. Não troque a conta com disabled.
O Fable 5.1 precisa das mesmas edições?
Thinking sempre ligado, sem tools forçadas e thinking blocks amarrados já valem para o Fable 5.1. A quebra de computer_20251124 é principalmente na Claude API e no Google Cloud para o 5.5. O Bedrock ainda aceita a computer tool mais antiga.
Por que a barra de progresso ficou muda?
As notas curtas entre tool calls foram para thinking blocks. O display padrão omite o texto. Leia blocks por type e defina thinking.display se você precisa de progresso. Isso não é falha de validação de schema.
Isto é a mesma coisa que a aposentadoria do GPT-5.5 em 14 de outubro?
Não. O GPT-5.5 sai do ChatGPT / Work / Codex; aquele aviso não toca a API. O Opus 5.5 é o modelo novo de outro vendor mais breaking changes. Migre as duas linhas em separado.
Resumo
O Opus 5.5 transforma «forçar uma tool call» de muleta legal em 400. A tabela de preços e a economia típica de 40% não cobrem as quatro falhas duras. Para JSON estável, use auto mais strict mais JSON Schema, ou Structured Output. Thinking fica ligado, os blocks se amarram à conversa, e a computer tool antiga morre em algumas plataformas — isso é checklist antes de mudar a string, não observação depois do lançamento.
Achate o schema, um objeto arguments de amostra e o contrato strict num validador local primeiro, depois troque para claude-opus-5-5. Modelos vão mudar. Effort vai se mover. Seu contrato de campos não deveria afrouxar junto.