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ónde | Qué añade Claude Code por defecto | Subclave |
|---|---|---|
| Mensaje de commit | Un trailer: Co-Authored-By: <modelo> <[email protected]> | attribution.commit |
| Descripción de la pull request | Un emoji de robot y «Generated with Claude Code» | attribution.pr |
| Commit o PR desde una sesión en la nube o de Remote Control | El enlace de la sesión de claude.ai, como trailer Claude-Session en los commits | attribution.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.
| Valor | Efecto |
|---|---|
"commit": "" | Sin trailer en los commits |
"pr": "" | Sin línea de atribución en las descripciones de las pull requests |
"sessionUrl": false | Sin 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": false | Las 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.
| Archivo | A quién se aplica |
|---|---|
~/.claude/settings.json | A ti, en todos los proyectos de esta máquina |
.claude/settings.json en el proyecto | A todos los que trabajan en el proyecto, una vez que commiteas el archivo |
.claude/settings.local.json en el proyecto | A ti, solo en este proyecto. Claude Code lo deja fuera de git cuando lo crea |
| Managed settings desplegadas por tu organización | A 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": falseoculta a la vez el trailer de los commits y la línea de las pull requests;- en cuanto se define
attribution.commitoattribution.pr, Claude Code ignoraincludeCoAuthoredByy 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/codexque leímos el 12 de noviembre de 2026, Codex añadeCo-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-authory--no-attribute-committerlo desactivan, y--attribute-co-authored-bylo cambia por un trailerCo-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í.
Descargar AgentsRoom
Ejecuta todos tus agentes de IA, en todos tus proyectos, desde una sola ventana.
App complementaria: supervisa tus agentes en movimiento
Usa Claude, Codex, Antigravity CLI u otro proveedor de IA.
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.

Seguir leyendo
Mods de Claude Code: qué son y el que incluimos en cada agente
Un mod es un plugin cuyo JavaScript se ejecuta dentro de Claude Code. Qué puede hacer, sus tres archivos, cómo cargarlo y probarlo, y el mod que incluimos en cada agente.
Leer el artículoSiete agentes de IA se encargan de nuestras noches: agentes programados más allá del código, con los prompts
Un usuario nos preguntó cómo usamos agentes de IA para algo que no sea escribir código. Desde el 28 de agosto, siete agentes programados arrancan cada tarde en un Mac mini: un CEO de guardia, un equipo SEO, un product manager, un corrector de bugs, un equipo de redes sociales, un documentalista y un relator que envía un e-mail de 25 líneas. 33 noches, 31 e-mails de la mañana, 51 bugs corregidos con el enlace del commit, 7 artículos de blog en 20 idiomas. Qué hace cada uno, cómo se pasan el trabajo sin hablarse, qué modelo hace qué oficio, las cuatro reglas que sus prompts tuvieron que aprender, y los prompts mismos, listos para copiar.
Leer el artículo¿Cuál es la mejor IA para programar? Lo que 1.200 desarrolladores lanzan realmente
205.366 lanzamientos de agentes en 28 días: Opus primero, GPT-6.1 Sol segundo, y la mitad de las cuentas en un modelo que sugerimos por defecto. Lo que las cifras demuestran y lo que no pueden decir.
Leer el artículo