Cómo quitar Co-Authored-By Claude de tus commits de git

Claude Code firma tus commits con un trailer Co-Authored-By y tus pull requests con una línea Generated with Claude Code. El ajuste que los quita, el archivo donde ponerlo y cómo limpiar los commits que ya subiste.

Le pides a Claude Code que haga un commit, y el mensaje termina con una línea que no escribiste: Co-Authored-By: Claude Opus 4.6 <[email protected]>. Abre una pull request con él, y la descripción termina con un emoji de robot y «Generated with Claude Code». Ninguna de las dos cosas es un bug. Ambas vienen de un solo ajuste, y lo cambias en un minuto.

Esta guía cubre el ajuste, el archivo donde ponerlo para que se aplique a ti, a un proyecto o a todo un equipo, la clave antigua que quizá todavía tienes, y cómo limpiar los commits que ya llevan la línea. Los datos sobre Claude Code vienen de su referencia de ajustes, leída el 12 de noviembre de 2026 con Claude Code 2.1.318 instalado.

La respuesta corta. Pon esto en ~/.claude/settings.json:

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

Los commits nuevos dejan de llevar el trailer, las pull requests nuevas pierden la línea. Los commits hechos antes del cambio la conservan hasta que los reescribas.

Qué añade Claude Code, y dónde

Claude Code añade atribución en tres sitios. Cada uno tiene su propia subclave dentro de attribution.

DóndeQué añade Claude Code por defectoSubclave
Mensaje de commitUn trailer: Co-Authored-By: <modelo> <[email protected]>attribution.commit
Descripción de la pull requestUn emoji de robot y «Generated with Claude Code»attribution.pr
Commit o PR desde una sesión en la nube o de Remote ControlEl enlace de la sesión de claude.ai, como trailer Claude-Session en los commitsattribution.sessionUrl

El nombre del trailer es el del modelo en uso en el momento del commit. Por eso la línea dice Claude Opus 4.6 una semana y Claude Sonnet 4.6 la siguiente, y por eso las búsquedas sobre este problema citan tantos modelos. Cuando Claude Code reconoce un modelo Claude pero no puede confirmar su versión, escribe Claude a secas. Cuando el modelo detrás de un ANTHROPIC_BASE_URL personalizado no es un modelo Claude en absoluto, escribe Claude Code. Cuando es un subagente quien hace el commit, el trailer nombra el modelo del subagente.

La línea no es un hook de git. Claude Code le pide a Claude que la añada cuando Claude mismo escribe un commit o una pull request. Un commit que haces tú en una terminal, o que hace otra herramienta, nunca la recibe.

Desactívalo con el ajuste attribution

attribution acepta un objeto con tres partes, o false para todas a la vez.

ValorEfecto
"commit": ""Sin trailer en los commits
"pr": ""Sin línea de atribución en las descripciones de las pull requests
"sessionUrl": falseSin enlace de sesión de claude.ai en los commits y pull requests hechos desde una sesión en la nube o de Remote Control
"attribution": falseLas tres ocultas de una vez. Requiere Claude Code 2.1.281 o posterior

La forma corta es tentadora, pero lee primero la línea de versión. Un Claude Code anterior a la 2.1.281 rechaza "attribution": false, y no se limita a ignorar la clave: se salta todo el archivo de ajustes que la contiene, con tus permisos, tus hooks y tu modelo. Si el mismo archivo se lee en máquinas con versiones distintas, usa la forma larga:

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

Ejecuta /status para comprobar que el archivo se cargó: la línea Setting sources lista cada archivo que Claude Code leyó. Si una sesión que ya estaba abierta sigue añadiendo la línea, empieza una nueva.

Qué archivo: tú, un proyecto o todo el equipo

La clave funciona en todos los archivos de ajustes. El archivo decide a quién se aplica.

ArchivoA quién se aplica
~/.claude/settings.jsonA ti, en todos los proyectos de esta máquina
.claude/settings.json en el proyectoA todos los que trabajan en el proyecto, una vez que commiteas el archivo
.claude/settings.local.json en el proyectoA ti, solo en este proyecto. Claude Code lo deja fuera de git cuando lo crea
Managed settings desplegadas por tu organizaciónA todos aquellos a los que la organización las despliega

Cuando dos archivos definen la clave, gana el de más arriba: las managed settings, luego --settings en la línea de comandos, luego el archivo local del proyecto, luego el archivo compartido del proyecto, luego tu archivo de usuario. De ese orden salen dos casos. Si tu equipo commitea un archivo que mantiene el trailer a propósito, tu propio .claude/settings.local.json lo sustituye para ti sin cambiar nada para los demás. Si tu organización fija la atribución en sus managed settings, nada de lo que escribas la cambia.

También puedes decirle a Claude en tu CLAUDE.md que no añada la línea, y Claude Code le indica a Claude que tus propias instrucciones sobre la atribución tienen prioridad sobre sus líneas por defecto, salvo que la línea venga de las managed settings. La diferencia es de naturaleza: el ajuste quita el texto que Claude Code pide, una instrucción es algo que el modelo lee y aplica. Usa el ajuste.

La antigua clave includeCoAuthoredBy

Antes de attribution, el interruptor se llamaba includeCoAuthoredBy. Está obsoleto desde Claude Code 2.0.62 y se sigue leyendo:

  • "includeCoAuthoredBy": false oculta a la vez el trailer de los commits y la línea de las pull requests;
  • en cuanto se define attribution.commit o attribution.pr, Claude Code ignora includeCoAuthoredBy y usa su texto por defecto para la que hayas dejado sin definir de las dos.

Esa segunda regla es el motivo habitual por el que vuelve el trailer. Tenías includeCoAuthoredBy: false, luego añadiste "attribution": {"pr": ""} para quitar solo la línea de las PR, y el trailer de los commits reaparece porque ahora decide attribution y commit no está definido. Pásate a attribution y define las dos partes.

Sustitúyela en lugar de quitarla

Algunos equipos quieren saber qué commits se hicieron con ayuda de una IA, solo que no con esa línea. attribution.commit acepta cualquier texto, trailers incluidos. Git solo lee los trailers del último párrafo del mensaje, así que mantenlos juntos al final:

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

Commitea eso en el .claude/settings.json del proyecto y el Claude Code de cada compañero escribe la misma línea.

Commits que ya tienen el trailer

El ajuste solo cambia los commits escritos después de él. Para los que ya están, la herramienta adecuada depende de hasta dónde han llegado.

El último commit, todavía sin subir: modifícalo con amend y borra la línea en el editor.

git commit --amend

Varios commits en una rama que no has compartido: haz un rebase y reescribe el mensaje de cada uno.

git rebase -i origin/main

Todo un historial: git filter-repo reescribe cada mensaje de commit de una pasada. Necesita un clon nuevo, y es una herramienta aparte que hay que 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"
'

Reescribir tiene un coste, y en una rama compartida suele ser mayor que el de la línea. Cada hash de commit a partir del primero modificado es nuevo, así que una rama subida necesita un force push, cada colaborador tiene que volver a partir del nuevo historial, las pull requests abiertas sobre los commits antiguos se rompen, y los commits firmados pierden su firma. En una rama personal antes del merge, hazlo. En una rama main que otros ya han descargado, déjala y define la clave para lo que venga.

Qué hace el trailer en GitHub

GitHub lee los trailers Co-authored-by y muestra al coautor en el commit cuando la dirección de correo pertenece a una cuenta de GitHub. En junio de 2025, dos issues del repositorio anthropics/claude-code (#1653 y #1655) informaron de commits atribuidos, a través de esa dirección, a una cuenta de GitHub sin relación con Anthropic; las dos están cerradas. Sea cual sea la cuenta a la que apunte la dirección un día dado, quitar el trailer quita al coautor de los commits que siguen, y solo de esos.

Qué hacen los otros CLI

Claude Code no es el único que firma su trabajo, y cada CLI tiene su propio interruptor.

  • Codex. En el código fuente de openai/codex que leímos el 12 de noviembre de 2026, Codex añade Co-authored-by: Codex <[email protected]> a los commits y «Generated with Codex.» al cuerpo de las pull requests cuando la atribución está activada para tu espacio de trabajo, una política que obtiene al iniciar una sesión. Cuando la política está desactivada, Codex recibe la indicación de no añadir ninguna de las dos líneas.
  • Aider. Añade «(aider)» a los nombres de autor y de committer de git en lugar de añadir un trailer. --no-attribute-author y --no-attribute-committer lo desactivan, y --attribute-co-authored-by lo cambia por un trailer Co-authored-by.

Qué hacemos en AgentsRoom

Ejecutamos varios agentes sobre los mismos repositorios todos los días, Claude Code junto a Codex y otros, y el commit es donde su trabajo se encuentra. Dos casos, y no siguen las mismas reglas.

Cuando un agente hace un commit por su cuenta en su terminal, es su CLI quien escribe el mensaje, así que se aplica el ajuste del propio CLI: attribution para Claude Code, la política del espacio de trabajo para Codex, las opciones para Aider.

Cuando commiteas desde AgentsRoom, desde la pestaña Cambios, el modo revisión, el commit automático al cerrar un agente o la pantalla Cambios de la app móvil, es AgentsRoom quien escribe el commit y ningún CLI añade su trailer. Lo que va al final es la firma del commit de AgentsRoom, y la configuras tú. Por defecto añade una línea con el rol de cada agente cuyos archivos están en el commit y el tiempo que dedicó:

bug : Fix the login redirect

AgentsRoom-Agent: fullstack; time=42m

Cada parte tiene su propio interruptor en Ajustes > Git > Firma del commit, para tu cuenta, una carpeta de proyectos o un solo proyecto: el rol del agente, el tiempo dedicado y, desactivados por defecto, el coste, la parte de tu cuota y los prompts que escribiste. Desactiva Agente y Tiempo dedicado y tus commits quedan exactamente como eran antes. Nosotros mantenemos el rol en nuestros propios repositorios: en un repositorio donde commitean cuatro CLI, un nombre de modelo dice qué modelo escribió el código, y el rol dice qué trabajo estaba haciendo, que es lo que buscamos cuando un cambio rompe algo tres semanas después. Nuestro changelog público lee esa misma línea para mostrar qué agentes trabajaron en cada versión.

Si además quieres el razonamiento detrás de un cambio, Commit Context añade un enlace a la conversación del agente en el mismo bloque de trailers. Y cuando prefieres no escribir el mensaje en absoluto, los mensajes de commit con IA lo redactan a partir del diff.

Preguntas frecuentes

¿Cómo quito Co-Authored-By Claude de mis commits?

Añade "attribution": {"commit": "", "pr": ""} a ~/.claude/settings.json. Claude Code deja entonces de añadir el trailer Co-Authored-By a los commits que escribe y la línea Generated with Claude Code a las pull requests que abre, en todos los proyectos de esa máquina. Con Claude Code 2.1.281 o posterior, "attribution": false lo oculta todo con un solo valor. Los commits hechos antes del cambio conservan su trailer.

¿Sigue funcionando includeCoAuthoredBy?

Sigue funcionando, pero está obsoleto desde Claude Code 2.0.62. includeCoAuthoredBy: false oculta a la vez el trailer de los commits y la línea de las pull requests, salvo que la clave más reciente attribution defina commit o pr: en ese caso decide attribution. Una configuración nueva debería usar attribution.

¿Por qué el trailer dice Claude Opus 4.6 o Sonnet 4.6 en lugar de Claude?

El trailer nombra el modelo en uso en el momento del commit, así que cambia con tu modelo. Claude Code escribe Claude a secas cuando no puede confirmar la versión exacta, y Claude Code cuando el modelo detrás de un ANTHROPIC_BASE_URL personalizado no es un modelo Claude. El ajuste quita todas estas variantes.

¿Cómo quito el trailer de los commits que ya hice?

Para el último commit, ejecuta git commit --amend y borra la línea. Para varios commits que no has subido, usa git rebase -i y reescribe sus mensajes. Para todo un historial, git filter-repo con un message callback quita la línea de cada commit, sobre un clon nuevo. Reescribir cambia el hash de cada commit a partir del primero modificado: un historial ya subido necesita un force push, y cada colaborador tiene que partir del nuevo historial.

¿Puede mi empresa volver a imponer la atribución?

Sí. Las managed settings que despliega una organización están por encima de todos los archivos que controlas, así que un valor de attribution definido ahí gana sobre tus ajustes de usuario, de proyecto y locales. Ejecuta /status en Claude Code: la línea Setting sources muestra si se te aplica una fuente gestionada.

¿Quitar el trailer oculta que usé IA?

Quita una línea del mensaje de commit, nada más. Claude Code ofrece el ajuste él mismo y su documentación no te pide conservar la línea. Algunos proyectos y empleadores sí piden a quienes contribuyen que declaren la ayuda de una IA, así que lee las reglas del repositorio al que subes antes de desactivarla ahí.

Ingeniero DevOpsRedactorDesarrollador FrontendComercialDesarrollador BackendCoach y FormadorArquitecto de SoftwareAsesor JurídicoIngeniero de QAFinanzas y AdministraciónDesarrollador Full-StackDiseñador CreativoDesarrollador MóvilInvestigadorIngeniero de SeguridadRR. HH. y Selección
Gerente de ProyectoTraductorExperto en GitAnalista de DatosEspecialista en SEOContableEspecialista en LocalizaciónComunicación y RR. PP.Generador de IdeasOperaciones y LogísticaEspecialista en MarketingAtención al ClienteAsistente del proyectoCompradorCommunity ManagerAsistente Personal

Descargar AgentsRoom

Ejecuta todos tus agentes de IA, en todos tus proyectos, desde una sola ventana.

Descargar AgentsRoomGratis

App complementaria: supervisa tus agentes en movimiento

Usa Claude, Codex, Antigravity CLI u otro proveedor de IA.

Instalar la extensión
Chrome Web Store

Envía bugs y peticiones directamente a tu backlog público.

Agentes que lees como una conversación

Cada agente tiene un rol, una cara y un hilo que lees como una app de mensajería.

Vista de conversación

Vista de conversación de AgentsRoom: el trabajo de un agente de programación con IA en forma de chat
Multi-proyectos
Multi-proveedor
Multi-agentes
Estado en vivo
Diff y commit
App móvil
Vista previa
Equipos de agentes
Pruebas en navegador
Dev guiada por backlog
Biblioteca de prompts
Biblioteca de skills
Ver todas las funcionalidades

Seguir leyendo