Un commit puede mostrar Claude-Session: https://claude.ai/code/session_..., una línea Co-Authored-By y, además, el autor que presenta la interfaz de GitHub. Parecen tres versiones de la misma atribución, pero no lo son. La URL y el coautor son tráileres del mensaje del commit; Git guarda por separado los campos author y committer —autor y confirmador— dentro del objeto.
Claude Code también los configura por separado. attribution.commit controla el texto añadido al mensaje del commit, attribution.pr controla el texto de la descripción del pull request y attribution.sessionUrl controla el enlace a la sesión. Según la referencia oficial de Git y atribución, comprobada el 31 de agosto de 2026, sessionUrl vale true por defecto cuando una sesión en la nube o de Remote Control crea un commit o abre un PR.
Averigua qué identidad estás viendo
Este mensaje contiene dos tráileres:
Fix token refresh race
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_...Ninguno reemplaza automáticamente el autor principal del objeto Git. Un servicio de alojamiento puede interpretar Co-Authored-By y mostrar otro avatar, pero los campos author y committer siguen existiendo con sus propios nombres y correos.
Inspecciona ambas capas en un commit concreto:
git show -s \
--format='author: %an <%ae>%ncommitter: %cn <%ce>%n%n%B' \
<commit>Las dos primeras líneas pertenecen al objeto; después aparece el mensaje completo. Cambiar la atribución de Claude Code no modifica la identidad de commits anteriores, las firmas, user.name ni user.email.
Hay otra URL de Claude que sirve para algo distinto. Un enlace claude-cli:// abre una nueva sesión local con un directorio o prompt preparado. No es el enlace HTTPS a una conversación que aparece como Claude-Session. La documentación sobre deep links describe ese mecanismo independiente.

Audita todas las referencias sin abrir la conversación
Busca primero los tráileres de sesión en todos las referencias accesibles del clon:
git log --all --grep='^Claude-Session:' \
--format='%h %ad %s%n%(trailers:key=Claude-Session,only)%n' \
--date=shortEnumera aparte los coautores declarados:
git log --all \
--format='%h %ad %s%n%(trailers:key=Co-Authored-By,only)%n' \
--date=shortLa referencia oficial de git log separa estas consultas: --grep filtra el mensaje, --author y --committer filtran las cabeceras de identidad, y %(trailers:...) interpreta los tráileres. Por eso, encontrar Co-Authored-By no demuestra que ese nombre ocupe el campo author.
Si la primera orden no devuelve nada, no hay coincidencias en las referencias alcanzables de este repositorio local. No demuestra que nunca existieran en una rama remota eliminada, un fork, otro clon o un objeto antiguo del proveedor. Para prevención cotidiana no hace falta investigar indefinidamente; amplía el inventario solo cuando exista un incidente confirmado.
La URL tampoco decide por sí sola quién puede ver la conversación. Las reglas de uso compartido de sesiones en la nube distinguen las opciones de Team/Enterprise y Pro/Max, el inicio de sesión del receptor y las comprobaciones de acceso al repositorio. En un commit público cualquiera puede leer el texto de la URL, pero la visibilidad del destino es un control separado que debe probarse con la cuenta receptora prevista.
Conserva la atribución y elimina solo el enlace
Si el equipo quiere informar del uso de Claude, pero no guardar un acceso a la conversación, basta con un ajuste mínimo:
{
"attribution": {
"sessionUrl": false
}
}Este valor no elimina Co-Authored-By ni el texto del PR. Para omitir tanto las atribuciones como el enlace, configura las tres opciones:
{
"attribution": {
"commit": "",
"pr": "",
"sessionUrl": false
}
}También puedes sustituir las cadenas vacías por una declaración propia del equipo. commit admite texto y tráileres de Git; pr es texto normal de la descripción. Un campo no definido conserva el texto estándar que use esa versión de Claude Code.
No diseñes una configuración nueva alrededor de includeCoAuthoredBy. Anthropic lo marca como obsoleto desde v2.0.62. Se sigue leyendo por compatibilidad, pero el objeto attribution expresa por separado el commit, el PR y la URL. Un Boolean antiguo no comunica con claridad “mantener el coautor, eliminar solo el enlace”.
Elige el ámbito antes de guardar el JSON
| Decisión | Archivo | A quién afecta |
|---|---|---|
| Preferencia personal para todos los proyectos | ~/.claude/settings.json | Al usuario actual |
| Política común del repositorio | .claude/settings.json | Al equipo y a los clones en la nube si se guarda en Git |
| Prueba o excepción para este clon | .claude/settings.local.json | Solo a la persona y repositorio locales |
| Regla obligatoria de empresa | Ajustes administrados | A los usuarios cubiertos por la política administrativa |
La documentación de ámbitos de Claude Code establece, para valores ordinarios, este orden de prioridad: ajustes administrados, línea de comandos, proyecto local, proyecto compartido y usuario. Un archivo de usuario perfectamente válido puede parecer ignorado si una capa superior define el mismo ajuste.
Después de editar, inicia una sesión nueva y ejecuta:
/statusStatus muestra las fuentes cargadas y los errores de JSON o validación. No atribuye cada clave a un archivo concreto; si varios archivos contienen attribution, revísalos de mayor a menor prioridad. Para una sesión nueva en la nube, la política compartida debe estar confirmada en .claude/settings.json. El archivo local de tu ordenador no aparece mágicamente en un clon limpio.
Haz la comprobación en una rama temporal o un repositorio de prueba. En un repositorio de prueba o rama temporal, pide al mismo tipo de sesión que cree un commit inocuo y examínalo con git show -s --format=fuller. Una prueba hecha solo en el terminal local no valida el comportamiento de las sesiones en la nube o de Remote Control si ese era el origen del enlace.

Trata el historial según el riesgo, no según la estética
El último commit no compartido se puede corregir con git commit --amend. Para commits locales anteriores, un rebase interactivo permite seleccionar reword. Ambos crean identificadores nuevos, pero el impacto permanece bajo control local.
Si el commit ya está publicado, el enlace no abre la sesión a terceros y no contiene información sensible, suele ser menos arriesgado conservar la historia y evitar futuras inserciones. Reescribir por uniformidad visual cambia IDs, rompe firmas, altera referencias de versiones, afecta PR abiertos y obliga a colaboradores a realinear sus ramas.
Si una política exige retirar el texto de la historia publicada, coordina primero las referencias afectadas, el momento del cambio y la recuperación. La guía de GitHub cómo cambiar un mensaje de commit advierte que cada cambio crea un ID nuevo, un force push puede interrumpir a otras personas y un mensaje sensible antiguo podría seguir accesible mediante su identificador anterior.
Si la sesión era visible y mostró una clave API, una clave privada, datos de clientes u otro secreto, ya no es una preferencia de atribución. Restringe la sesión y revoca o rota el secreto antes de limpiar Git. Después coordina la reescritura y el soporte del proveedor. La guía de GitHub cómo retirar datos sensibles de un repositorio explica por qué reescribir no invalida una credencial y cómo un clon antiguo puede reintroducir datos.
Identifica primero si quieres cambiar el enlace, la atribución o la autoría. Aplica el ajuste correspondiente y compruébalo en el mismo tipo de sesión que creó el commit. Para el historial existente, decide según quién puede verlo y si contiene información sensible; así conservas la trazabilidad sin reescribir más de lo necesario.



