Como usar turn-scoped system messages no Claude Fable 5.1 para uma instrução valer só por um turno?

As turn-scoped system messages são um recurso aditivo em beta do Claude Fable 5.1 (e do Mythos 5.1) que deixa você mandar uma instrução válida por um turno só. Na prática: você envia o beta header anthropic-beta: mid-conversation-system-clear-at-2026-08-21 e adiciona no array messages uma entrada role: "system", apenas texto, com clear_at: "next_user_message". Assim que chega a próxima mensagem do usuário, a API limpa as cópias anteriores e o modelo lê só a mais recente. As antigas ficam no histórico sem custar tokens de input, e o prefixo já cacheado continua intacto
Fala aí, beleza? A Anthropic soltou o Claude Fable 5.1 e o Claude Mythos 5.1 no dia 1 de setembro de 2026, e junto veio um recurso pequeno que resolve uma dor bem chata: mandar uma regra que vale AGORA e some no turno seguinte
Quem monta aplicação em cima da API conhece o problema. Você quer que o modelo, só naquela resposta, siga um formato diferente, ou olhe o retorno de uma ferramenta com um cuidado extra. Aí você joga isso no system prompt de topo e a regra fica lá pra sempre, contaminando todos os turnos seguintes da conversa
As turn-scoped system messages são um recurso aditivo e em beta do Claude Fable 5.1, que está em disponibilidade geral. O Mythos 5.1 oferece as mesmas capacidades, mas o acesso a ele é só via trusted access programs. A ideia é simples: uma mensagem de sistema no meio da conversa, com clear_at: "next_user_message", escopada a um único turno 🙂
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 110 aulas
- 4 projetos
- 9h 2min
O que você precisa antes de começar
A lista é curta, e é bom conferir cada item antes de sair debugando resposta estranha:
- Acesso à API da Anthropic com um modelo suportado: o Fable 5.1 está em disponibilidade geral, e o Mythos 5.1 só via trusted access programs
- O beta header:
anthropic-beta: mid-conversation-system-clear-at-2026-08-21 - Ciência de que o conteúdo é somente texto: o content da mensagem de sistema no meio da conversa é text-only, então nada de imagem, documento ou bloco exótico ali dentro
Tome cuidado com o primeiro item! Modelo sem suporte não devolve resposta degradada, devolve erro:
400 BadRequestError: role 'system' is not supported on this model
Se bateu esse 400, o problema não é o teu JSON, é o modelo (ou o header que não foi junto)
Como usar turn-scoped system messages no Claude Fable 5.1 passo a passo
- Ative o beta header na sua requisição
Sem esse header, o recurso simplesmente não existe pra sua chamada
anthropic-beta: mid-conversation-system-clear-at-2026-08-21
Erro comum deste passo: mandar o corpo certinho e esquecer o header. O sintoma é o mesmo 400 do modelo sem suporte, então dá aquela confusão de achar que é o model errado quando é só header ausente
- Monte a entrada
role: "system"dentro do arraymessages
Ela vai como mensagem SEPARADA, apenas texto, com o parâmetro clear_at definido como next_user_message
{
"messages": [
{
"role": "user",
"content": "Refatora o componente de checkout pra usar hooks"
},
{
"role": "system",
"content": "Neste turno, responda apenas com o diff, sem explicação em prosa",
"clear_at": "next_user_message"
}
]
}
Erro comum deste passo: tentar embutir a instrução dentro da mensagem do usuário, com aquele bloco de "IMPORTANTE:" grudado no final do prompt. Isso vira histórico normal e fica lá pra sempre, que é exatamente o que a gente está querendo evitar aqui
- Posicione a mensagem no lugar certo do array
Aqui mora a maior parte dos erros. As regras de posicionamento são bem específicas:
Posição no array messages |
Pode? |
|---|---|
| Primeira entrada do array | Não, pra isso existe o campo system de topo |
Logo depois de um turno de user (inclusive user com blocos tool_result) |
Sim |
Depois de um turno de assistant terminado em server tool result |
Sim |
Antes de um turno de assistant, ou encerrando o array |
Sim |
Entre um bloco tool_use e o tool_result correspondente |
Não |
Erro comum deste passo: usar a mensagem de sistema no meio da conversa como se fosse o system prompt global, colocando ela na primeira posição. Se a instrução vale pra conversa inteira, o lugar dela é o campo system de topo, ponto
- Deixe a cópia antiga no histórico e anexe uma nova a cada turno
Esse é o pulo do gato, e é contraintuitivo à primeira vista
Você não precisa sair varrendo o array pra remover as mensagens antigas. Assim que existe uma mensagem de usuário posterior, a API limpa as cópias anteriores e o modelo lê apenas a mais recente. As antigas continuam ali no array, mas depois de limpas o modelo não as vê e elas não custam tokens de input
{
"messages": [
{ "role": "user", "content": "Primeiro pedido" },
{ "role": "system", "content": "Regra do turno 1", "clear_at": "next_user_message" },
{ "role": "assistant", "content": "Resposta do turno 1" },
{ "role": "user", "content": "Segundo pedido" },
{ "role": "system", "content": "Regra do turno 2", "clear_at": "next_user_message" }
]
}
No exemplo acima, só a "Regra do turno 2" é lida pelo modelo
Erro comum deste passo: marcar como turn-scoped uma mensagem que carrega blocos tool_addition ou tool_removal. Mensagem com bloco de mudança de ferramenta NÃO pode ser turn-scoped, e aí a requisição não passa
Quando vale usar uma instrução que dura só um turno
Nem toda regra precisa virar lei eterna do teu system prompt. Três cenários em que o clear_at cai bem:
Lembrete de um turno só:
Aquela orientação pontual, tipo "responda em português e sem código nesta resposta". Manda como mensagem separada, texto puro, com role: "system" e clear_at: "next_user_message", e deixa no histórico
Ela para de renderizar depois da próxima mensagem do usuário, e você não precisa fazer faxina no array 😀
Instrução logo depois de um resultado de ferramenta:
Dá pra anexar instruções depois de turnos de tool result como uma turn-scoped system message. Serve pra orientar a leitura DAQUELE retorno específico: o que priorizar, o que ignorar, em que formato resumir
É instrução cirúrgica, morre junto com o contexto que ela servia
Regra temporária que você não quer fixar no topo:
Pensa numa regra do tipo "antes de mexer no código, me pergunte o que ficou ambíguo". É a mesma família de ideia de fazer o Claude perguntar antes de codar, só que válida por um turno e não pra sempre
Vale o mesmo raciocínio de decidir entre planejar antes ou codar direto: tem regra que é estrutural e merece o system de topo, e tem regra que é só pra agora
Erros comuns e como resolver
Sintoma: 400 BadRequestError: role 'system' is not supported on this model
Causa: o modelo não suporta mensagem de sistema no meio da conversa, ou o beta header não foi enviado
Solução: confirme que está em um modelo suportado (Fable 5.1 ou Mythos 5.1) e que o header anthropic-beta: mid-conversation-system-clear-at-2026-08-21 está na requisição
Como prevenir: centralize o header no client da sua aplicação, em vez de repetir em cada chamada
Sintoma: erro de posicionamento
Causa: a entrada system está como primeira do array, ou está espremida entre um bloco tool_use e o tool_result dele
Solução: mova a mensagem pra logo depois de um turno de user (inclusive user com tool_result) ou de um assistant terminado em server tool result, e garanta que ela precede um turno de assistant ou encerra o array. Se a intenção era instrução global, use o campo system de topo
Como prevenir: valide o array antes de mandar, com uma função boba que checa a posição do índice
Sintoma: a mensagem com mudança de ferramenta é rejeitada
Causa: uma mensagem que carrega blocos tool_addition ou tool_removal não pode ser turn-scoped
Solução: separe as coisas. A mudança de ferramenta vai numa mensagem, a instrução temporária vai em outra
Sintoma: "o modelo esqueceu o que eu mandei!"
Causa: expectativa errada, e não bug. A instrução deixa de ser lida assim que chega a próxima mensagem do usuário
Solução: se a regra precisa valer nos próximos turnos, ou você reanexa uma cópia nova a cada turno, ou ela não deveria ser turn-scoped
Impacto no cache e no custo da sua aplicação
Essa é a parte que costuma decidir se o recurso entra ou não em produção
A instrução nova entra DEPOIS do prefixo já cacheado. Como ela fica atrás do histórico em cache, não invalida nada anterior: o prefixo permanece intacto e você paga preço cheio só pela mensagem nova
E tem mais: uma mensagem de sistema no meio da conversa que vira histórico estável pode ser lida do cache nos turnos seguintes
As cópias já limpas seguem no array, mas o modelo não as enxerga e elas não custam tokens de input. Ou seja, o array cresce e o custo não acompanha na mesma proporção
Ancorando nos números do Fable 5.1:
| Item | Preço por milhão de tokens |
|---|---|
| Input | US$ 10 |
| Output | US$ 50 |
| Cache read | US$ 0,25 |
O cache read a US$ 0,25 por milhão é 75% mais barato que o do Fable 5, a geração anterior, o que reduz o custo de cargas típicas em cerca de 25% e de cargas altamente agênticas em até cerca de 45%. A estimativa oficial da Anthropic vai na mesma linha: custo estimado 25% menor que o Fable 5 em cargas típicas cobradas por token, justamente por causa da queda no preço de cache read
Juntando as duas coisas, instrução que entra depois do prefixo cacheado e cópias limpas que não custam input, dá pra injetar regra temporária sem ver a conta subir a cada turno
Próximo passo
O recurso é aditivo e está em beta, então trate como beta: teste, meça, depois promova
A regra de ouro cabe em uma linha. Mensagem separada, texto puro, posicionada logo depois de um turno de user, com clear_at: "next_user_message"
O próximo passo é bem direto: liga o header anthropic-beta: mid-conversation-system-clear-at-2026-08-21 num ambiente de teste, monta duas ou três conversas com turnos de tool result e observa o que acontece com o teu cache antes de levar pra produção
Se a taxa de cache hit continuar redonda e a instrução sumir no turno seguinte como esperado, tá valendo
até o próximo post!
Perguntas frequentes
Qual o beta header exato para ativar turn-scoped system messages no Claude Fable 5.1?
É o anthropic-beta: mid-conversation-system-clear-at-2026-08-21. Sem ele na requisição, o recurso simplesmente não existe pra sua chamada, mesmo que o resto do JSON esteja certinho.
Turn-scoped system messages funcionam no Claude Mythos 5.1 também?
Sim, o Mythos 5.1 oferece as mesmas capacidades do Fable 5.1 nesse recurso. A diferença é o acesso: o Fable 5.1 está em disponibilidade geral, enquanto o Mythos 5.1 só é acessível via trusted access programs.
Preciso remover manualmente a mensagem de sistema antiga do array messages?
Não. Assim que existe uma mensagem de usuário posterior, a API já limpa as cópias anteriores e o modelo lê só a mais recente. As antigas ficam no array, mas depois de limpas não custam tokens de input.
Dá pra colocar imagem ou PDF dentro de uma turn-scoped system message?
Não. O content dessa mensagem de sistema no meio da conversa é text-only, então só texto puro entra ali, nada de bloco de imagem ou documento.
Uma turn-scoped system message pode ser a primeira entrada da conversa?
Não pode. Se a instrução vale pra conversa inteira, o lugar dela é o campo system de topo, ponto. A mensagem no meio da conversa precisa vir depois de um turno de user ou de um turno de assistant terminado em server tool result.
Usar turn-scoped system messages aumenta o custo de cache do Fable 5.1?
Não invalida o cache existente, porque a instrução nova entra depois do prefixo já cacheado. Você paga preço cheio só pela mensagem nova, e o que já estava cacheado continua sendo cobrado no preço de cache read do Fable 5.1, que é US$ 0,25 por milhão de tokens.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
O que significa “ChatGPT network error” e como resolver
O “ChatGPT Network Error” é uma ocorrência frequente na rotina de muitos usuários do ChatGPT. Porém, poucos compreendem seu significado, quando esse erro surge, etc. […]
As diferenças de var, let e const
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
