Como remover o Co-Authored-By Claude dos seus commits do git

O Claude Code assina seus commits com um trailer Co-Authored-By e seus pull requests com uma linha Generated with Claude Code. A configuração que os remove, o arquivo onde colocá-la e como limpar os commits que você já enviou.

Você pede ao Claude Code para fazer um commit, e a mensagem termina com uma linha que você não escreveu: Co-Authored-By: Claude Opus 4.6 <[email protected]>. Abra um pull request com ele, e a descrição termina com um emoji de robô e "Generated with Claude Code". Nenhum dos dois é um bug. Os dois vêm de uma única configuração, e você a muda em um minuto.

Este guia cobre a configuração, o arquivo onde colocá-la para que ela valha para você, para um projeto ou para uma equipe inteira, a chave antiga que você talvez ainda tenha, e como limpar os commits que já carregam a linha. As informações sobre o Claude Code vêm da referência de configurações dele, lida em 12 de novembro de 2026 com o Claude Code 2.1.318 instalado.

A resposta curta. Coloque isto no ~/.claude/settings.json:

{
  "attribution": {
    "commit": "",
    "pr": ""
  }
}

Os commits novos deixam de levar o trailer, os pull requests novos perdem a linha. Os commits feitos antes da mudança a mantêm até você reescrevê-los.

O que o Claude Code adiciona, e onde

O Claude Code adiciona atribuição em três lugares. Cada um tem sua própria subchave dentro de attribution.

OndeO que o Claude Code adiciona por padrãoSubchave
Mensagem de commitUm trailer: Co-Authored-By: <modelo> <[email protected]>attribution.commit
Descrição do pull requestUm emoji de robô e "Generated with Claude Code"attribution.pr
Commit ou PR de uma sessão na nuvem ou de Remote ControlO link da sessão do claude.ai, como trailer Claude-Session nos commitsattribution.sessionUrl

O nome no trailer é o do modelo em uso no momento do commit. É por isso que a linha diz Claude Opus 4.6 numa semana e Claude Sonnet 4.6 na seguinte, e por isso as buscas sobre esse problema citam tantos modelos. Quando o Claude Code reconhece um modelo Claude mas não consegue confirmar a versão, ele escreve só Claude. Quando o modelo por trás de um ANTHROPIC_BASE_URL personalizado não é um modelo Claude, ele escreve Claude Code. Quando é um subagente que faz o commit, o trailer nomeia o modelo do subagente.

A linha não é um hook do git. O Claude Code pede ao Claude que a adicione quando o próprio Claude escreve um commit ou um pull request. Um commit que você mesmo faz em um terminal, ou que outra ferramenta faz, nunca a recebe.

Desative com a configuração attribution

attribution aceita um objeto com três partes, ou false para todas de uma vez.

ValorEfeito
"commit": ""Nenhum trailer nos commits
"pr": ""Nenhuma linha de atribuição nas descrições de pull request
"sessionUrl": falseNenhum link de sessão do claude.ai nos commits e pull requests feitos a partir de uma sessão na nuvem ou de Remote Control
"attribution": falseAs três escondidas de uma vez. Exige o Claude Code 2.1.281 ou mais recente

A forma curta é tentadora, mas leia primeiro a linha da versão. Um Claude Code anterior à 2.1.281 rejeita "attribution": false, e ele não se limita a ignorar a chave: ele pula o arquivo de configurações inteiro que a contém, com suas permissões, seus hooks e seu modelo. Se o mesmo arquivo é lido em máquinas com versões diferentes, use a forma longa:

{
  "attribution": {
    "commit": "",
    "pr": "",
    "sessionUrl": false
  }
}

Rode /status para conferir se o arquivo foi carregado: a linha Setting sources lista cada arquivo que o Claude Code leu. Se uma sessão que já estava aberta continua adicionando a linha, inicie uma nova.

Qual arquivo: você, um projeto ou a equipe inteira

A chave funciona em todos os arquivos de configuração. É o arquivo que decide a quem ela se aplica.

ArquivoA quem se aplica
~/.claude/settings.jsonA você, em todos os projetos desta máquina
.claude/settings.json no projetoA todos que trabalham no projeto, depois que você faz commit do arquivo
.claude/settings.local.json no projetoA você, só neste projeto. O Claude Code o deixa fora do git quando o cria
Managed settings distribuídas pela sua organizaçãoA todos para quem a organização as distribui

Quando dois arquivos definem a chave, vence o que está mais acima: as managed settings, depois --settings na linha de comando, depois o arquivo local do projeto, depois o arquivo compartilhado do projeto, depois o seu arquivo de usuário. Dois casos decorrem dessa ordem. Se a sua equipe faz commit de um arquivo que mantém o trailer de propósito, o seu próprio .claude/settings.local.json o substitui para você sem mudar nada para os outros. Se a sua organização define a atribuição nas managed settings, nada do que você escrever a muda.

Você também pode dizer ao Claude no seu CLAUDE.md para não adicionar a linha, e o Claude Code avisa o Claude que as suas próprias instruções sobre atribuição têm prioridade sobre as linhas padrão dele, a não ser que a linha venha das managed settings. A diferença é de natureza: a configuração remove o texto que o Claude Code pede, uma instrução é algo que o modelo lê e aplica. Use a configuração.

A antiga chave includeCoAuthoredBy

Antes de attribution, o interruptor se chamava includeCoAuthoredBy. Ele está obsoleto desde o Claude Code 2.0.62 e ainda é lido:

  • "includeCoAuthoredBy": false esconde ao mesmo tempo o trailer dos commits e a linha dos pull requests;
  • assim que attribution.commit ou attribution.pr é definido, o Claude Code ignora includeCoAuthoredBy e usa o texto padrão para aquela das duas que você deixou sem definir.

Essa segunda regra é o motivo habitual da volta do trailer. Você tinha includeCoAuthoredBy: false, depois adicionou "attribution": {"pr": ""} para remover só a linha dos PRs, e o trailer dos commits reaparece porque agora quem decide é attribution e commit não está definido. Passe para attribution e defina as duas partes.

Substitua em vez de remover

Algumas equipes querem saber quais commits tiveram ajuda de IA, só que não com essa linha. attribution.commit aceita qualquer texto, trailers incluídos. O git só lê trailers do último parágrafo da mensagem, então mantenha-os juntos no final:

{
  "attribution": {
    "commit": "Assisted-by: Claude Code"
  }
}

Faça commit disso no .claude/settings.json do projeto, e o Claude Code de cada colega escreve a mesma linha.

Commits que já têm o trailer

A configuração só muda os commits escritos depois dela. Para os que já existem, a ferramenta certa depende de até onde eles foram.

O último commit, ainda não enviado: faça um amend e apague a linha no editor.

git commit --amend

Vários commits em um branch que você não compartilhou: faça um rebase e reescreva a mensagem de cada um.

git rebase -i origin/main

Um histórico inteiro: git filter-repo reescreve cada mensagem de commit de uma só vez. Ele exige um clone novo, e é uma ferramenta à parte para instalar:

git filter-repo --message-callback '
return re.sub(rb"(?mi)^Co-Authored-By: Claude[^\n]*<noreply@anthropic\.com>\n?", b"", message).rstrip(b"\n") + b"\n"
'

Reescrever tem um custo, e em um branch compartilhado ele costuma ser maior que o da linha. Cada hash de commit a partir do primeiro alterado é novo, então um branch já enviado exige um force push, cada colaborador precisa recomeçar a partir do novo histórico, os pull requests abertos sobre os commits antigos quebram, e os commits assinados perdem a assinatura. Em um branch pessoal antes do merge, faça. Em um branch main que outros já baixaram, deixe como está e defina a chave para o que vem depois.

O que o trailer faz no GitHub

O GitHub lê os trailers Co-authored-by e mostra o coautor no commit quando o endereço de e-mail pertence a uma conta do GitHub. Em junho de 2025, duas issues do repositório anthropics/claude-code (#1653 e #1655) relataram commits atribuídos, por meio desse endereço, a uma conta do GitHub sem relação com a Anthropic; as duas estão fechadas. Seja qual for a conta para a qual o endereço aponta num dado dia, remover o trailer remove o coautor dos commits seguintes, e só deles.

O que os outros CLIs fazem

O Claude Code não é o único que assina o próprio trabalho, e cada CLI tem seu próprio interruptor.

  • Codex. No código-fonte de openai/codex que lemos em 12 de novembro de 2026, o Codex adiciona Co-authored-by: Codex <[email protected]> aos commits e "Generated with Codex." ao corpo dos pull requests quando a atribuição está ativada para o seu espaço de trabalho, uma política que ele busca quando uma sessão começa. Quando a política está desativada, o Codex recebe a instrução de não adicionar nenhuma das duas linhas.
  • Aider. Ele acrescenta "(aider)" aos nomes de autor e de committer do git em vez de adicionar um trailer. --no-attribute-author e --no-attribute-committer desativam isso, e --attribute-co-authored-by troca por um trailer Co-authored-by.

O que fazemos no AgentsRoom

Rodamos vários agentes nos mesmos repositórios todos os dias, o Claude Code ao lado do Codex e de outros, e o commit é onde o trabalho deles se encontra. Dois casos, e eles não seguem as mesmas regras.

Quando um agente faz commit sozinho no terminal dele, é o CLI dele que escreve a mensagem, então vale a configuração do próprio CLI: attribution para o Claude Code, a política do espaço de trabalho para o Codex, as opções para o Aider.

Quando você faz commit a partir do AgentsRoom, pela aba Alterações, pelo modo revisão, pelo commit automático quando um agente é fechado ou pela tela Alterações do app mobile, é o AgentsRoom que escreve o commit, e nenhum CLI adiciona o trailer dele. O que vai no final é a assinatura do commit do AgentsRoom, e quem a configura é você. Por padrão ela adiciona uma linha com o papel de cada agente cujos arquivos estão no commit e o tempo que ele gastou:

bug : Fix the login redirect

AgentsRoom-Agent: fullstack; time=42m

Cada parte tem seu próprio interruptor em Configurações > Git > Assinatura do commit, para a sua conta, uma pasta de projetos ou um único projeto: o papel do agente, o tempo gasto e, desativados por padrão, o custo, a parte da sua quota e os prompts que você digitou. Desative Agente e Tempo gasto, e seus commits ficam exatamente como eram antes. Nós mantemos o papel nos nossos próprios repositórios: em um repositório onde quatro CLIs fazem commit, um nome de modelo diz qual modelo escreveu o código, e o papel diz que trabalho ele estava fazendo, que é o que procuramos quando uma mudança quebra algo três semanas depois. Nosso changelog público lê essa mesma linha para mostrar quais agentes trabalharam em cada versão.

Se você também quer o raciocínio por trás de uma mudança, o Commit Context adiciona um link para a conversa do agente no mesmo bloco de trailers. E quando você prefere nem escrever a mensagem, as mensagens de commit com IA a redigem a partir do diff.

Perguntas frequentes

Como removo o Co-Authored-By Claude dos meus commits?

Adicione "attribution": {"commit": "", "pr": ""} ao ~/.claude/settings.json. O Claude Code deixa então de adicionar o trailer Co-Authored-By aos commits que escreve e a linha Generated with Claude Code aos pull requests que abre, em todos os projetos dessa máquina. No Claude Code 2.1.281 ou mais recente, "attribution": false esconde tudo com um único valor. Os commits feitos antes da mudança mantêm o trailer.

O includeCoAuthoredBy ainda funciona?

Ainda funciona, mas está obsoleto desde o Claude Code 2.0.62. includeCoAuthoredBy: false esconde ao mesmo tempo o trailer dos commits e a linha dos pull requests, a não ser que a chave mais recente attribution defina commit ou pr: nesse caso, quem decide é attribution. Uma configuração nova deve usar attribution.

Por que o trailer diz Claude Opus 4.6 ou Sonnet 4.6 em vez de Claude?

O trailer nomeia o modelo em uso no momento do commit, então ele muda com o seu modelo. O Claude Code escreve só Claude quando não consegue confirmar a versão exata, e Claude Code quando o modelo por trás de um ANTHROPIC_BASE_URL personalizado não é um modelo Claude. A configuração remove todas essas variantes.

Como removo o trailer dos commits que já fiz?

Para o último commit, rode git commit --amend e apague a linha. Para vários commits ainda não enviados, use git rebase -i e reescreva as mensagens. Para um histórico inteiro, git filter-repo com um message callback remove a linha de cada commit, em um clone novo. Reescrever muda o hash de cada commit a partir do primeiro alterado: um histórico já enviado exige um force push, e cada colaborador precisa recomeçar a partir do novo histórico.

Minha empresa pode forçar a atribuição de volta?

Sim. As managed settings distribuídas por uma organização ficam acima de todos os arquivos que você controla, então um valor de attribution definido ali vence suas configurações de usuário, de projeto e locais. Rode /status no Claude Code: a linha Setting sources mostra se uma fonte gerenciada se aplica a você.

Remover o trailer esconde que eu usei IA?

Remove uma linha da mensagem de commit, nada mais. O próprio Claude Code oferece a configuração, e a documentação dele não pede que você mantenha a linha. Alguns projetos e empregadores pedem, sim, que quem contribui declare a ajuda de uma IA, então leia as regras do repositório para onde você envia antes de desativá-la ali.

Engenheiro de DevOpsRedatorDesenvolvedor FrontendRepresentante ComercialDesenvolvedor BackendCoach e FormadorArquiteto de SoftwareConsultor JurídicoEngenheiro de QAFinanças e AdministraçãoDesenvolvedor Full-StackDesigner CriativoDesenvolvedor MobileInvestigadorEngenheiro de SegurançaRH e Recrutamento
Gerente de ProjetosTradutorEspecialista em GitAnalista de DadosEspecialista em SEOContabilistaEspecialista em LocalizaçãoComunicação e RPGerador de IdeiasOperações e LogísticaEspecialista em MarketingApoio ao ClienteAssistente do projetoCompradorCommunity ManagerAssistente Pessoal

Baixar AgentsRoom

Rode todos os seus agentes de IA, em todos os seus projetos, de uma única janela.

Baixar AgentsRoomGrátis

App complementar: acompanhe seus agentes em qualquer lugar

Use Claude, Codex, Antigravity CLI ou outro provedor de IA.

Instalar a extensão
Chrome Web Store

Envie bugs e pedidos direto para o seu backlog público.

Agentes que você lê como uma conversa

Cada agente tem uma função, um rosto e um fio que você lê como um app de mensagens.

Visão de conversa

Visão de conversa do AgentsRoom: o trabalho de um agente de programação com IA em formato de chat
Multi-projetos
Multi-provedor
Multi-agentes
Status ao vivo
Diff e commit
App mobile
Preview ao vivo
Equipes de agentes
Testes no navegador
Dev guiada por backlog
Biblioteca de prompts
Biblioteca de skills
Ver todas as funcionalidades

Continue lendo