Claude Code responde em inglês mesmo você escrevendo em português: como resolver de vez

Claude Code responde em inglês mesmo com prompt em português
Resposta rápida

Escreve em português e o Claude Code responde em inglês? Não é falta de suporte ao idioma, é força da instrução: pedir no chat compete com todo o resto do contexto. A saída persistente tem duas camadas. A primeira é o setting language no settings.json, cujo valor é adicionado verbatim ao system prompt como instrução de sempre responder naquele idioma. A segunda é uma linha curta no CLAUDE.md, que o Claude Code lê no início de toda sessão. Existem relatos registrados no repositório oficial de deriva para o inglês em trabalho pesado de código e depois de compactação de contexto.

Fala aí, beleza? Tu digita a pergunta em português caprichado, o Claude Code responde em inglês, tu pede "responde em português", ele obedece por duas mensagens e depois volta pro inglês do nada 🙃

A cena é essa e ela se repete. Não é bug do teu teclado, não é falta de suporte ao português e não é falta de educação do modelo

É um comportamento conhecido, com relatos registrados no repositório oficial anthropics/claude-code (issues #21871, #32181, #34347, #46846 e #59299), e tem solução persistente via configuração, não via pedido no chat

Bora resolver isso de vez?

Por que o Claude Code volta a responder em inglês sozinho

Antes do conserto, o diagnóstico. Vale entender o gatilho, porque cada sintoma pede uma camada diferente de solução

Sintoma 1: a deriva gradual durante trabalho pesado de código

Esse é o clássico. A issue #32181, aberta em 8 de março de 2026, tem até título descritivo: "Text output gradually drifts to English during code-heavy work, even when user communicates in non-English"

O relato descreve três fases. Começo de sessão respondendo no idioma do usuário (japonês, no caso)

Meio de sessão com rótulos curtinhos no idioma do usuário embrulhando conteúdo em inglês

E fase de investigação profunda produzindo saída inteiramente em inglês

O gatilho apontado é justamente o trabalho pesado de código: ler arquivos, rodar suíte de teste, investigar falha. Ou seja, quanto mais o contexto enche de conteúdo técnico em inglês, mais o idioma da resposta escorrega pra lá

Sintoma 2: virou inglês logo depois da compactação

A issue #59299 registra outro recorte: "Claude Code reverts to English after context compaction"

Faz sentido quando tu pensa no que a compactação faz. Ela resume o histórico pra caber, e a tua instrução de idioma, que era só uma mensagem solta lá no começo da conversa, some no resumo

Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

Sintoma 3: trocou depois de um comando de terminal

A issue #46846 relata instrução explícita no CLAUDE.md para usar chinês tradicional sendo ignorada

O detalhe interessante do relato: a violação acontece depois de chamadas de ferramenta (git, gh) que retornam saída só em inglês, sem que exista no contexto conteúdo no outro idioma que explicasse a troca

O que isso tudo tem em comum:

Pedir "responde em português" no chat é uma instrução FRÁGIL

Ela é só mais uma mensagem no meio de milhares de linhas de log, stack trace e diff, tudo em inglês. Ela compete com o contexto, e o contexto é maior que ela

A solução, então, não pode morar no chat. Tem que morar no system prompt ou na memória que é carregada no início de toda sessão

Aliás, se tu já se perguntou se o idioma do teu prompt muda a qualidade da resposta, tem uma discussão inteira sobre prompt em português ou em inglês que complementa esse assunto

Como fixar o idioma de vez com o setting <code>language</code>

Essa é a solução principal. O Claude Code tem uma configuração chamada <code>language</code> no settings.json, e o valor que tu define nela é adicionado verbatim ao system prompt, como instrução de sempre responder naquele idioma

Sacou a diferença? Não é uma mensagem tua no meio da conversa, é instrução de sistema

  1. Defina direto do prompt com <code>/config</code>

A sintaxe key=value do <code>/config</code> define qualquer setting a partir do prompt, e foi introduzida na semana de 15 a 19 de junho de 2026. Ela funciona também no modo <code>-p</code> e pelo Remote Control

<pre><code>/config language=portuguese </code></pre>

O erro comum deste passo: achar que precisa parar a sessão e ir mexer em arquivo. Não precisa, dá pra fazer do prompt mesmo

  1. Ou use a interface de Settings em abas

Rodando <code>/config</code> sem argumento em sessão interativa, ele abre uma interface de Settings em abas e grava nos arquivos de settings

Pela documentação, o Claude Code escreve o <code>~/.claude/settings.json</code> na primeira vez que tu muda uma opção do menu <code>/config</code> que ele guarda em user settings

Agora, honestidade antes do tutorial bonito: existe a issue #34347, aberta em 14 de março de 2026 e marcada como afetando macOS, relatando que a seleção de idioma feita por esse mesmo diálogo voltava pra "default english" ao reabrir, sem gravar campo nenhum nos arquivos de settings. Ela foi fechada como "not planned", então não dá pra afirmar que isso ainda acontece hoje

Por isso o passo 4 existe: usa o menu se tu preferir, mas confere o arquivo depois. Se a chave não estiver lá, grava na mão e segue a vida

  1. Alternativa manual: edite o settings.json na mão

O tipo do setting é string, com qualquer nome de idioma. Os exemplos da documentação são "japanese", "spanish" e "french", e o Claude Code não valida o valor

Ele aceita tanto o código BCP 47 quanto o nome do idioma, e o padrão é unset (sem valor definido)

<pre><code>{ "language": "portuguese" } </code></pre>

Como o valor não é validado e entra verbatim no system prompt, ele é lido como instrução em texto. Escreva do jeito que tu escreveria a instrução pra um humano, sem inventar formato estranho

  1. Confirme que o valor ficou gravado no arquivo

Abre o arquivo de settings e olha se a chave <code>language</code> está lá com o teu valor. Esse passo parece bobo, mas é o que separa "configurei" de "achei que configurei"

O erro comum deste passo: escolher o escopo errado de arquivo, gravar num settings que não é o que vale pro teu projeto e concluir que o setting não funciona. Tem uma seção só sobre escopo mais pra frente, se liga nela

Uma nota lateral importante:

Esse mesmo valor de <code>language</code> também define o idioma do ditado por voz e dos títulos de sessão gerados automaticamente

E o ditado tem uma lista fixa de idiomas suportados. Se o idioma configurado não estiver nessa lista, o <code>/voice</code> avisa ao ser habilitado e cai pro inglês no ditado, que é o padrão dele

Ou seja: mexer aqui não afeta só o texto da resposta

Reforço no CLAUDE.md: a segunda camada que sobrevive à sessão

"Mas se o setting já entra no system prompt, pra que mais uma camada?"

Porque as camadas cobrem gatilhos diferentes. E porque tem um relato bem específico apontando pro CLAUDE.md

A issue #34347, de 14 de março de 2026, marcada como afetando macOS, descreve que a seleção de idioma pelo diálogo <code>/config</code> voltava pra "default english" ao reabrir, sem gravar campo nenhum em <code>~/.claude/settings.json</code> nem em <code>~/.claude/settings.local.json</code>. E o mesmo relato diz que a instrução de idioma via CLAUDE.md funcionava como esperado

A issue foi fechada como "not planned", então não dá pra afirmar que isso ainda acontece hoje. Mas dá pra tirar a lição: ter as duas camadas custa dois minutos e cobre teu flanco

  1. Crie ou abra o CLAUDE.md do projeto

O CLAUDE.md é um arquivo markdown na raiz do projeto que o Claude Code lê no início de cada sessão

Se teu projeto ainda não tem um, o <code>/init</code> gera um CLAUDE.md inicial: o Claude analisa o código e cria o arquivo com comandos de build, instruções de teste e convenções que ele identifica

<pre><code>/init </code></pre>

  1. Escreva a instrução de idioma curta e direta, no topo

Nada de parágrafo filosófico. Uma linha, no começo do arquivo

<pre><code>## Idioma

Responda sempre em português do Brasil, inclusive em explicações, resumos e mensagens de commit </code></pre>

O erro comum deste passo: CLAUDE.md gigante. Os arquivos são carregados por inteiro independente do tamanho, MAS arquivos mais curtos produzem melhor aderência às instruções

Enfiar tua regra de idioma na linha 400 de um calhamaço é pedir pra ela ser diluída

  1. Valide com <code>/memory</code> se o arquivo está sendo carregado

<pre><code>/memory </code></pre>

O <code>/memory</code> serve pra verificar se teus arquivos CLAUDE.md e CLAUDE.local.md estão sendo carregados. Selecionar um arquivo abre ele no editor, e selecionar um que ainda não existe cria o arquivo antes

O erro comum deste passo: pular ele. Muita gente escreve o CLAUDE.md num lugar que o Claude Code nem lê e passa a semana achando que a IA está ignorando ordem

E se eu quiser valer em todos os projetos?

O Claude Code lê CLAUDE.md do diretório do projeto e também de <code>~/.claude</code> no teu home

O escopo de usuário (<code>~/.claude/CLAUDE.md</code>) vale pra todos os projetos, o de projeto vale só naquele repositório. Pra regra de idioma, o escopo de usuário costuma ser o lugar mais óbvio

Vale lembrar que existe ainda a auto memory, as notas que o próprio Claude escreve com base nas tuas correções e preferências, guardadas em <code>~/.claude/projects/&lt;project&gt;/memory/</code> com um índice MEMORY.md e um arquivo por tópico. Os dois mecanismos são carregados no início de cada conversa

É o mesmo princípio que vale pra quando o Claude Code repete o mesmo erro depois de tu corrigir: correção no chat evapora, correção na memória fica

Setting <code>language</code> x CLAUDE.md x output style: qual usar

Camada Onde vive Como age Alcance Quando vale a pena
Setting <code>language</code> <code>settings.json</code> (user, project ou local) Valor adicionado verbatim ao system prompt como instrução de sempre responder naquele idioma Depende do escopo do arquivo de settings Primeira coisa a fazer, é a configuração dedicada a idioma
CLAUDE.md Raiz do projeto ou <code>~/.claude/CLAUDE.md</code> Instrução carregada no início de cada sessão, arquivo lido por inteiro Projeto (raiz) ou todos os projetos (<code>~/.claude</code>) Reforço que recarrega a cada conversa nova
Output style <code>~/.claude/output-styles/</code> ou <code>.claude/output-styles/</code> Modifica diretamente o system prompt do Claude Code Usuário ou projeto, conforme a pasta Quando tu quer instrução de comportamento mais elaborada que uma linha

A recomendação aqui não é escolher uma. É EMPILHAR

Cada camada cobre um gatilho de deriva diferente: o setting cobre a sessão inteira, o CLAUDE.md recarrega em toda conversa nova, o output style mexe no system prompt com mais espaço pra detalhar

Camada extra: output style para travar o idioma no system prompt

Esse aqui é pra quem já fez tudo acima e ainda vê a deriva aparecer em sessão longa de investigação

Output styles modificam diretamente o system prompt do Claude Code. Um output style customizado é um arquivo markdown com frontmatter seguido das instruções

  1. Monte o arquivo markdown com frontmatter

Os campos do frontmatter são <code>name</code>, <code>description</code> e <code>keep-coding-instructions</code>

<pre><code>— name: pt-br description: Mantém toda a comunicação em português do Brasil keep-coding-instructions: true —

Toda a saída de texto deve ser em português do Brasil. Isso inclui explicações, resumos de investigação, relatórios de teste e mensagens de commit. Nomes de arquivos, comandos, trechos de código e saída literal de ferramentas permanecem como estão. </code></pre>

  1. Salve na pasta do escopo que tu quer

Em <code>~/.claude/output-styles/</code> pra valer em todos os projetos, ou em <code>.claude/output-styles/</code> no repositório pra valer só nele

O nome do arquivo vira o nome do style, a menos que tu defina <code>name</code> no frontmatter

O erro comum deste passo: criar o arquivo na pasta errada e ele nem aparecer na hora de selecionar

  1. Ative pelo <code>/config</code> ou pelo setting <code>outputStyle</code>

Atenção nessa parte, porque muito tutorial antigo ensina errado: o comando isolado <code>/output-style</code> foi depreciado na v2.1.73 e REMOVIDO na v2.1.91

Hoje é via <code>/config</code>, ou editando o campo <code>outputStyle</code> direto num arquivo de settings

<pre><code>{ "language": "portuguese", "outputStyle": "pt-br" } </code></pre>

  1. Rode <code>/clear</code> ou abra uma sessão nova

Detalhe que evita frustração: a troca de output style só passa a valer depois de <code>/clear</code> ou no início da próxima sessão

O erro comum deste passo: trocar o style, continuar na mesma sessão, ver o inglês voltar e concluir que não funcionou. Não é isso, é só que a troca ainda não entrou em vigor

Onde salvar a configuração: só pra você, pro projeto ou pro time

Os arquivos de settings do Claude Code ficam em três escopos. Escolher o certo é metade do trabalho

Você trabalha sozinho, em vários repositórios:

Usa o escopo de usuário: <code>~/.claude/settings.json</code>, que vale pra todos os projetos

No Windows, <code>~/.claude</code> resolve pra <code>%USERPROFILE%\.claude</code>, então é lá que tu vai procurar o arquivo

Junta com o CLAUDE.md em <code>~/.claude</code> e tu resolve a coisa toda de uma vez, sem repetir a configuração repo por repo

O time inteiro precisa de resposta em português:

Usa o escopo de projeto: <code>.claude/settings.json</code>, que vai pro controle de versão e é compartilhado com o time

É commit, review, merge, e todo mundo passa a ter o mesmo comportamento. Muito melhor que mandar mensagem no grupo pedindo pra cada um configurar 😀

Você quer português só pra você, num repo compartilhado em inglês:

Usa o escopo local: <code>.claude/settings.local.json</code>, que NÃO vai pro controle de versão e existe justamente pra preferência pessoal

Tome cuidado aqui: se tu gravar tua preferência de idioma no <code>.claude/settings.json</code> de um projeto internacional, tu vai empurrar português pra galera toda no próximo commit

Como os escopos se combinam:

Os settings se combinam entre os escopos. Managed aplica primeiro e, entre os demais, o escopo mais próximo sobrescreve o mais amplo, na ordem local, depois project, depois user

Na prática: se tu tem <code>language</code> no user e outro valor no local daquele repo, o local ganha ali dentro

Configurei e ainda responde em inglês: o que checar

Fez tudo e o inglês voltou? Calma, tem casos residuais conhecidos

Caso A: a opção não ficou gravada em arquivo nenhum

Esse é o relato da issue #34347: trocar o idioma pelo diálogo <code>/config</code>, reabrir e encontrar "default english" de volta, sem campo de idioma gravado em <code>~/.claude/settings.json</code> nem em <code>~/.claude/settings.local.json</code>

A issue foi fechada como "not planned", e eu não tenho como afirmar se isso ainda ocorre. Mas a checagem é barata: abre o arquivo de settings e confirma com os teus olhos se a chave está lá

Se não estiver, grava direto no arquivo em vez de confiar no menu. Leva dez segundos

Caso B: virou inglês depois de horas de trabalho ou de uma compactação

Esse é o combo das issues #32181 e #59299: deriva por trabalho pesado de código e reversão depois da compactação de contexto

O que fazer: reafirma o idioma numa sessão nova e mantém a instrução no CLAUDE.md, que é recarregado no começo de cada conversa

Sessão nova não é gambiarra, é o mecanismo funcionando: o carregamento do CLAUDE.md acontece no início da conversa

Caso C: intermitente, sem gatilho claro

A issue #21871, de 30 de janeiro de 2026, descreve exatamente isso com espanhol: às vezes responde em espanhol, às vezes cai pro inglês. Ela foi fechada como duplicada

Quando não dá pra apontar o gatilho, a saída é engrossar as camadas persistentes em vez de ficar pedindo no chat

Checklist de prevenção:

  • Empilha setting <code>language</code> + CLAUDE.md em vez de escolher um só
  • Mantém o CLAUDE.md curto, porque arquivo mais curto produz melhor aderência às instruções
  • Valida com <code>/memory</code> se os arquivos estão sendo carregados mesmo
  • Abre sessão nova pras tarefas longas de investigação, em vez de arrastar a mesma conversa o dia todo
  • Lembra que os títulos de sessão só acompanham o idioma da conversa enquanto o <code>language</code> estiver unset: definindo o setting, tu fixa um idioma específico (esse comportamento chegou na versão 2.1.176, em 12 de junho de 2026)

Conclusão

O problema nunca foi o português

O problema é a FORÇA da instrução: pedido no chat é frágil e compete com um contexto lotado de log, stack trace e documentação em inglês. System prompt e memória são persistentes e recarregam sozinhos

Teu próximo passo, na ordem:

  1. Roda <code>/config language=portuguese</code>
  2. Adiciona a linha de idioma no topo do CLAUDE.md
  3. Valida com <code>/memory</code>
  4. Abre uma sessão nova e testa numa tarefa de verdade

E vale acompanhar as issues no repositório anthropics/claude-code, porque esse comportamento segue em evolução e o que é verdade hoje pode mudar na próxima versão…

Até o próximo post! 😀

Perguntas frequentes

É preciso repetir "responde em português" em toda mensagem para o Claude Code manter o idioma?

Não, e isso nem resolve de forma persistente. Essa instrução é só mais uma mensagem competindo com milhares de linhas de log e código em inglês no contexto, por isso ela cede depois de algumas trocas. A solução que fica é configurar o setting language no settings.json, que entra verbatim no system prompt como instrução fixa.

Configurar o idioma pelo menu do /config é uma solução confiável?

Pela documentação, o /config em sessão interativa abre uma interface de Settings em abas e grava nos arquivos de settings. Só que existe um relato na issue #34347, aberta em 14 de março de 2026 e marcada como afetando macOS, de que a seleção de idioma pelo diálogo do /config voltava para "default english" ao reabrir, sem gravar nada em ~/.claude/settings.json nem em ~/.claude/settings.local.json. Essa issue foi fechada como "not planned". Por isso vale conferir o arquivo depois de usar o menu, ou usar a sintaxe /config language=portuguese direto no prompt, ou editar o settings.json na mão.

O setting de idioma do Claude Code também afeta o ditado por voz e os títulos de sessão?

Sim, é o mesmo valor de language que define o idioma do ditado por voz e dos títulos de sessão gerados automaticamente. O ditado tem uma lista fixa de idiomas suportados, e se o idioma configurado não estiver nessa lista, o /voice avisa ao ser habilitado e cai para o inglês, que é o padrão do ditado.

Qual arquivo de settings eu devo editar para fixar o idioma do Claude Code: user, project ou local?

Depende do alcance que tu quer. O ~/.claude/settings.json (escopo User) vale para todos os projetos, o .claude/settings.json (escopo Project) vai pro controle de versão e é compartilhado com o time, e o .claude/settings.local.json (escopo Local) não vai pro controle de versão e serve pra preferência pessoal. Entre eles, o mais próximo sobrescreve o mais amplo, na ordem local, depois project, depois user.

O CLAUDE.md sozinho resolve, ou preciso configurar o setting language também?

O CLAUDE.md ajuda porque é lido por inteiro no início de toda sessão, cobrindo justamente o caso da issue #34347 em que o setting não gravava, mas a instrução via CLAUDE.md funcionava. Ainda assim, existe a issue #46846 relatando instrução de idioma no CLAUDE.md sendo ignorada depois de chamadas de ferramenta como git e gh que retornam saída só em inglês. Por isso vale usar as duas camadas juntas: o setting language no system prompt e o reforço no CLAUDE.md.

Existe validação do valor que eu coloco no setting language, tipo teria que ser um código específico?

Não, o tipo do setting é string com qualquer nome de idioma, e o Claude Code não valida esse valor. Ele aceita tanto o código BCP 47 quanto o nome do idioma por extenso, como nos exemplos "japanese", "spanish" e "french" da documentação. O padrão, quando ninguém define nada, é unset.



Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares