Añade { "attribution": { "sessionUrl": false } } a tu ~/.claude/settings.json. Eso quita el enlace de sesión del mensaje del commit y de la descripción del PR, y conserva el trailer Co-Authored-By. El enlace solo lo añaden las sesiones web y de Remote Control, no el Claude Code de terminal; y como esas sesiones no tienen shell, en la práctica el ajuste hay que ponerlo en un .claude/settings.json dentro del repositorio.
Si trabajas con Claude Code desde la web o desde Remote Control, tus commits pueden salir con un enlace a la sesión pegado en el mensaje, y tus pull requests con lo mismo en la descripción. Es una URL de la forma `claude.ai/code/session_...`.
No es un fallo ni una filtración: es una función de atribución, y viene encendida por defecto.
Para dimensionarlo: una búsqueda en la API de GitHub de esa cadena dentro del cuerpo de pull requests públicos devuelve 2.973.619 resultados. El 31 de agosto la misma búsqueda daba 2.935.931. Son casi treinta y ocho mil PRs nuevos en un día con el enlace dentro.
Esto no le pasa a todo el mundo, y conviene decirlo antes de que salgas corriendo a revisar tu terminal.
Lo aclaró un colaborador de Anthropic al cerrar el reporte del tema: el enlace de sesión *solo* se añade en las sesiones web y de Remote Control. Si usas Claude Code en tu terminal de siempre, no te está pasando.
Así que el primer paso no es cambiar nada, es mirar. Abre uno de tus commits recientes hechos desde la web y busca la URL en el cuerpo del mensaje.
En tu archivo de ajustes de Claude Code:
```json
{
"attribution": {
"sessionUrl": false
}
}
```
Va en `~/.claude/settings.json` para que aplique a todo, o en el `.claude/settings.json` del repositorio si solo lo quieres para ese proyecto.
Qué hace exactamente: quita el enlace y deja el resto de la atribución. El trailer `Co-Authored-By` sigue apareciendo, así que no pierdes el crédito de que ese commit se escribió con asistencia; solo dejas de publicar cuál fue la sesión.
Si además quieres limpiar el trailer entero y la firma del PR, los otros dos campos del mismo bloque son `commit` y `pr`, y admiten cadena vacía:
```json
{
"attribution": {
"commit": "",
"pr": "",
"sessionUrl": false
}
}
```
La documentación oficial del bloque está en la sección de ajustes de atribución de la documentación de Claude Code.
Aquí está lo que hace este caso interesante y no un simple "cómo apagar X".
El reporte que pedía que esto fuera opt-in se cerró con la respuesta "el ajuste existe". Y es verdad, existe. Pero fíjate en la geometría del asunto:
O sea: la solución está en un sitio al que la superficie que causa el problema no llega. El único camino práctico es dejar un `.claude/settings.json` dentro del repositorio —escrito desde tu terminal, o a mano por la interfaz web de GitHub—, y eso hay que saberlo de antemano. Nadie lo descubre desde donde le está pasando.
Un usuario lo resumió pidiendo reabrir el reporte, y el argumento es bueno: *el ajuste responde a "¿puedo apagarlo?", pero la pregunta era "¿debería estar encendido sin preguntar?"*.
El enlace no publica tu conversación: quien lo abre sin tus credenciales no ve la sesión. Lo que sí publica, y de forma permanente en el historial de git, es que ese cambio salió de una sesión asistida y cuál fue. Para muchos proyectos eso da igual o incluso es deseable. Para un repositorio de cliente, para trabajo bajo acuerdo de confidencialidad o simplemente para no dejar metadatos que nadie te pidió, es información que preferirías decidir tú.
Y esa es la queja de fondo, que sigue en pie aunque el ajuste exista: por defecto se publica, y para dejar de hacerlo tienes que enterarte primero.