Come rimuovere Co-Authored-By Claude dai tuoi commit git

Claude Code firma i tuoi commit con un trailer Co-Authored-By e le tue pull request con una riga Generated with Claude Code. L'impostazione che li rimuove, il file in cui metterla e come ripulire i commit che hai già pushato.

Chiedi a Claude Code di fare un commit, e il messaggio finisce con una riga che non hai scritto: Co-Authored-By: Claude Opus 4.6 <[email protected]>. Apri una pull request con lui, e la descrizione finisce con un'emoji di robot e "Generated with Claude Code". Nessuna delle due cose è un bug. Entrambe vengono da una sola impostazione, e la cambi in un minuto.

Questa guida copre l'impostazione, il file in cui metterla perché valga per te, per un progetto o per un intero team, la vecchia chiave che forse hai ancora, e come ripulire i commit che portano già la riga. Le informazioni su Claude Code vengono dal suo riferimento delle impostazioni, letto il 12 novembre 2026 con Claude Code 2.1.318 installato.

La risposta breve. Metti questo in ~/.claude/settings.json:

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

I nuovi commit non portano più il trailer, le nuove pull request perdono la riga. I commit fatti prima della modifica la conservano finché non li riscrivi.

Cosa aggiunge Claude Code, e dove

Claude Code aggiunge l'attribuzione in tre punti. Ognuno ha la sua sottochiave sotto attribution.

DoveCosa aggiunge Claude Code di defaultSottochiave
Messaggio di commitUn trailer: Co-Authored-By: <modello> <[email protected]>attribution.commit
Descrizione della pull requestUn'emoji di robot e "Generated with Claude Code"attribution.pr
Commit o PR da una sessione cloud o Remote ControlIl link della sessione claude.ai, come trailer Claude-Session sui commitattribution.sessionUrl

Il nome nel trailer è quello del modello in uso al momento del commit. Per questo la riga dice Claude Opus 4.6 una settimana e Claude Sonnet 4.6 la successiva, e per questo le ricerche su questo problema citano così tanti modelli. Quando Claude Code riconosce un modello Claude ma non riesce a confermarne la versione, scrive solo Claude. Quando il modello dietro un ANTHROPIC_BASE_URL personalizzato non è affatto un modello Claude, scrive Claude Code. Quando è un subagent a fare il commit, il trailer nomina il modello del subagent.

La riga non è un hook git. Claude Code chiede a Claude di aggiungerla quando è Claude stesso a scrivere un commit o una pull request. Un commit che fai tu in un terminale, o che fa un altro strumento, non la riceve mai.

Disattivala con l'impostazione attribution

attribution accetta un oggetto in tre parti, oppure false per tutte insieme.

ValoreEffetto
"commit": ""Nessun trailer sui commit
"pr": ""Nessuna riga di attribuzione nelle descrizioni delle pull request
"sessionUrl": falseNessun link alla sessione claude.ai sui commit e sulle pull request fatti da una sessione cloud o Remote Control
"attribution": falseTutte e tre nascoste in un colpo. Richiede Claude Code 2.1.281 o successivo

La forma breve è allettante, ma leggi prima la riga della versione. Un Claude Code precedente alla 2.1.281 rifiuta "attribution": false, e non si limita a ignorare la chiave: salta l'intero file di impostazioni che la contiene, con i tuoi permessi, i tuoi hook e il tuo modello. Se lo stesso file viene letto su macchine con versioni diverse, usa la forma lunga:

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

Esegui /status per verificare che il file sia stato caricato: la riga Setting sources elenca ogni file che Claude Code ha letto. Se una sessione già aperta continua ad aggiungere la riga, avviane una nuova.

Quale file: tu, un progetto o tutto il team

La chiave funziona in tutti i file di impostazioni. È il file a decidere a chi si applica.

FileA chi si applica
~/.claude/settings.jsonA te, in tutti i progetti di questa macchina
.claude/settings.json nel progettoA tutti quelli che lavorano nel progetto, una volta che hai committato il file
.claude/settings.local.json nel progettoA te, solo in questo progetto. Claude Code lo tiene fuori da git quando lo crea
Managed settings distribuite dalla tua organizzazioneA tutti quelli a cui l'organizzazione le distribuisce

Quando due file definiscono la chiave, vince quello più in alto: le managed settings, poi --settings da riga di comando, poi il file locale del progetto, poi il file condiviso del progetto, poi il tuo file utente. Da quest'ordine derivano due casi. Se il tuo team committa un file che mantiene il trailer apposta, il tuo .claude/settings.local.json lo sovrascrive per te senza cambiare nulla per gli altri. Se la tua organizzazione imposta l'attribuzione nelle managed settings, niente di quello che scrivi la cambia.

Puoi anche dire a Claude nel tuo CLAUDE.md di non aggiungere la riga, e Claude Code indica a Claude che le tue istruzioni sull'attribuzione hanno la precedenza sulle sue righe di default, a meno che la riga non venga dalle managed settings. La differenza è di natura: l'impostazione rimuove il testo che Claude Code richiede, un'istruzione è qualcosa che il modello legge e applica. Usa l'impostazione.

La vecchia chiave includeCoAuthoredBy

Prima di attribution, l'interruttore era includeCoAuthoredBy. È obsoleto da Claude Code 2.0.62 e viene ancora letto:

  • "includeCoAuthoredBy": false nasconde sia il trailer dei commit sia la riga delle pull request;
  • non appena attribution.commit o attribution.pr è impostato, Claude Code ignora includeCoAuthoredBy e usa il suo testo di default per quella delle due che hai lasciato non impostata.

Questa seconda regola è il motivo abituale per cui il trailer torna. Avevi includeCoAuthoredBy: false, poi hai aggiunto "attribution": {"pr": ""} per rimuovere solo la riga delle PR, e il trailer dei commit ricompare perché ora decide attribution e commit non è impostato. Passa ad attribution e imposta entrambe le parti.

Sostituiscila invece di rimuoverla

Alcuni team vogliono tenere traccia dei commit fatti con l'aiuto di un'IA, solo non con quella riga. attribution.commit accetta qualsiasi testo, trailer compresi. Git legge i trailer solo dall'ultimo paragrafo del messaggio, quindi tienili insieme alla fine:

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

Committa questo nel .claude/settings.json del progetto, e il Claude Code di ogni collega scrive la stessa riga.

Commit che hanno già il trailer

L'impostazione cambia solo i commit scritti dopo di lei. Per quelli che ci sono già, lo strumento giusto dipende da quanto lontano sono arrivati.

L'ultimo commit, non ancora pushato: fai un amend e cancella la riga nell'editor.

git commit --amend

Più commit su un branch che non hai condiviso: fai un rebase e riscrivi il messaggio di ciascuno.

git rebase -i origin/main

Un'intera cronologia: git filter-repo riscrive ogni messaggio di commit in un solo passaggio. Richiede un clone nuovo, ed è uno strumento a parte da installare:

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"
'

Riscrivere ha un costo, e su un branch condiviso di solito supera quello della riga. Ogni hash di commit a partire dal primo modificato è nuovo, quindi un branch pushato richiede un force push, ogni collaboratore deve ripartire dalla nuova cronologia, le pull request aperte sui vecchi commit si rompono, e i commit firmati perdono la firma. Su un branch personale prima del merge, fallo. Su un branch main che altri hanno già scaricato, lascialo stare e imposta la chiave per quello che verrà.

Cosa fa il trailer su GitHub

GitHub legge i trailer Co-authored-by e mostra il coautore sul commit quando l'indirizzo email appartiene a un account GitHub. A giugno 2025, due issue del repository anthropics/claude-code (#1653 e #1655) hanno segnalato commit attribuiti, tramite quell'indirizzo, a un account GitHub senza legami con Anthropic; entrambe sono chiuse. Qualunque sia l'account a cui l'indirizzo punta in un dato giorno, rimuovere il trailer rimuove il coautore dai commit successivi, e solo da quelli.

Cosa fanno gli altri CLI

Claude Code non è l'unico che firma il proprio lavoro, e ogni CLI ha il suo interruttore.

  • Codex. Nel codice sorgente di openai/codex che abbiamo letto il 12 novembre 2026, Codex aggiunge Co-authored-by: Codex <[email protected]> ai commit e "Generated with Codex." al corpo delle pull request quando l'attribuzione è attiva per il tuo spazio di lavoro, una policy che recupera all'avvio di una sessione. Quando la policy è disattivata, Codex riceve l'istruzione di non aggiungere nessuna delle due righe.
  • Aider. Aggiunge "(aider)" ai nomi di autore e di committer git invece di aggiungere un trailer. --no-attribute-author e --no-attribute-committer lo disattivano, e --attribute-co-authored-by lo sostituisce con un trailer Co-authored-by.

Cosa facciamo in AgentsRoom

Facciamo girare diversi agenti sugli stessi repository ogni giorno, Claude Code accanto a Codex e ad altri, e il commit è il punto in cui il loro lavoro si incontra. Due casi, e non seguono le stesse regole.

Quando un agente fa un commit da solo nel suo terminale, è il suo CLI a scrivere il messaggio, quindi vale l'impostazione del CLI stesso: attribution per Claude Code, la policy dello spazio di lavoro per Codex, le opzioni per Aider.

Quando fai un commit da AgentsRoom, dalla scheda Modifiche, dalla modalità review, dal commit automatico alla chiusura di un agente o dalla schermata Modifiche dell'app mobile, è AgentsRoom a scrivere il commit e nessun CLI aggiunge il suo trailer. Quello che va in fondo è la firma del commit di AgentsRoom, e sei tu a impostarla. Di default aggiunge una riga con il ruolo di ogni agente i cui file sono nel commit e il tempo che ci ha impiegato:

bug : Fix the login redirect

AgentsRoom-Agent: fullstack; time=42m

Ogni parte ha il suo interruttore in Impostazioni > Git > Firma del commit, per il tuo account, una cartella di progetti o un singolo progetto: il ruolo dell'agente, il tempo impiegato e, disattivati di default, il costo, la quota usata e i prompt che hai digitato. Disattiva Agente e Tempo impiegato e i tuoi commit tornano esattamente com'erano prima. Noi teniamo il ruolo nei nostri repository: su un repository dove committano quattro CLI, il nome di un modello dice quale modello ha scritto il codice, e il ruolo dice che lavoro stava facendo, che è quello che cerchiamo quando una modifica rompe qualcosa tre settimane dopo. Il nostro changelog pubblico legge la stessa riga per mostrare quali agenti hanno lavorato su ogni versione.

Se vuoi anche il ragionamento dietro una modifica, Commit Context aggiunge un link alla conversazione dell'agente nello stesso blocco di trailer. E quando preferisci non scrivere affatto il messaggio, i messaggi di commit con IA lo redigono a partire dal diff.

Domande frequenti

Come rimuovo Co-Authored-By Claude dai miei commit?

Aggiungi "attribution": {"commit": "", "pr": ""} a ~/.claude/settings.json. Claude Code smette allora di aggiungere il trailer Co-Authored-By ai commit che scrive e la riga Generated with Claude Code alle pull request che apre, in tutti i progetti di quella macchina. Con Claude Code 2.1.281 o successivo, "attribution": false nasconde tutto con un solo valore. I commit fatti prima della modifica conservano il loro trailer.

includeCoAuthoredBy funziona ancora?

Funziona ancora, ma è obsoleto da Claude Code 2.0.62. includeCoAuthoredBy: false nasconde sia il trailer dei commit sia la riga delle pull request, a meno che la chiave più recente attribution non definisca commit o pr: in quel caso decide attribution. Una nuova configurazione dovrebbe usare attribution.

Perché il trailer dice Claude Opus 4.6 o Sonnet 4.6 invece di Claude?

Il trailer nomina il modello in uso al momento del commit, quindi cambia con il tuo modello. Claude Code scrive solo Claude quando non riesce a confermare la versione esatta, e Claude Code quando il modello dietro un ANTHROPIC_BASE_URL personalizzato non è un modello Claude. L'impostazione rimuove tutte queste varianti.

Come rimuovo il trailer dai commit che ho già fatto?

Per l'ultimo commit, esegui git commit --amend e cancella la riga. Per più commit non ancora pushati, usa git rebase -i e riscrivi i loro messaggi. Per un'intera cronologia, git filter-repo con un message callback toglie la riga da ogni commit, su un clone nuovo. Riscrivere cambia l'hash di ogni commit a partire dal primo modificato: una cronologia già pushata richiede un force push, e ogni collaboratore deve ripartire dalla nuova cronologia.

La mia azienda può reimporre l'attribuzione?

Sì. Le managed settings distribuite da un'organizzazione stanno sopra tutti i file che controlli, quindi un valore di attribution impostato lì prevale sulle tue impostazioni utente, di progetto e locali. Esegui /status in Claude Code: la riga Setting sources mostra se ti si applica una fonte gestita.

Rimuovere il trailer nasconde che ho usato l'IA?

Rimuove una riga dal messaggio di commit, nient'altro. È Claude Code stesso a offrire l'impostazione, e la sua documentazione non ti chiede di tenere la riga. Alcuni progetti e alcuni datori di lavoro chiedono però a chi contribuisce di dichiarare l'aiuto di un'IA, quindi leggi le regole del repository su cui fai push prima di disattivarla lì.

Ingegnere DevOpsCopywriterSviluppatore FrontendCommercialeSviluppatore BackendCoach e FormatoreArchitetto SoftwareConsulente LegaleIngegnere QAAmministrazione e FinanzaSviluppatore Full-StackDesigner CreativoSviluppatore MobileRicercatoreIngegnere di SicurezzaRisorse Umane e Selezione
Project ManagerTraduttoreEsperto GitData AnalystSpecialista SEOContabileSpecialista LocalizzazioneComunicazione e PRBrainstormerOperations e LogisticaSpecialista MarketingAssistenza ClientiAssistente del progettoBuyerCommunity ManagerAssistente Personale

Scarica AgentsRoom

Esegui tutti i tuoi agenti AI, su tutti i tuoi progetti, da una sola finestra.

Scarica AgentsRoomGratis

App companion: monitora i tuoi agenti in movimento

Usa Claude, Codex, Antigravity CLI o un altro provider IA.

Installa l'estensione
Chrome Web Store

Invia bug e richieste direttamente nel tuo backlog pubblico.

Agenti che leggi come una conversazione

Ogni agente ha un ruolo, una faccia e un thread che leggi come un'app di messaggistica.

Vista conversazione

Vista conversazione di AgentsRoom: il lavoro di un agente AI di coding mostrato come chat
Multi-progetto
Multi-provider
Multi-agente
Stato in tempo reale
Diff e commit
App mobile
Anteprima live
Team di agenti
Test browser
Dev guidata da backlog
Libreria di prompt
Libreria di skill
Vedi tutte le funzionalità

Continua a leggere