GitHub Copilot genera suggerimenti a partire da un modello addestrato su grandi quantità di codice pubblico. Questo introduce un rischio concreto: che una completion riproduca, in modo letterale o quasi, frammenti già presenti in repository pubblici su GitHub. Il duplication detection filter (nella UI: “Suggestions matching public code”) è il meccanismo che intercetta e blocca proprio questi casi. Per un profilo ASSOCIATE è fondamentale capire cosa filtra, come si configura e soprattutto perché è un prerequisito legale, non solo una preferenza di comfort.

Cos’è il duplication detection filter

Il filtro confronta ogni suggerimento — insieme al codice circostante, per una finestra di circa 150 caratteri — contro il corpus di codice pubblico presente su GitHub. Se rileva una coincidenza o quasi-coincidenza, il suggerimento non viene mostrato.

Punti chiave sul comportamento:

  • Agisce sull’output (la completion), non sull’input o sul contesto.
  • Copre sia le completion inline sia i blocchi di codice restituiti da GitHub Copilot Chat.
  • Il criterio è la somiglianza testuale con codice pubblico, indipendentemente dal linguaggio.

Il valore della policy è binario: Allowed (i suggerimenti che combaciano vengono mostrati) oppure Blocked (vengono soppressi).

Come si abilita via policy

La configurazione avviene a livello di policy e segue la gerarchia enterprise → organization → utente:

  • Enterprise/Organization → Settings → Copilot → Policies → “Suggestions matching public code” → impostare su Blocked.
  • Le impostazioni enterprise possono forzare il valore verso le organization sottostanti, che non possono renderlo più permissivo.
  • Un utente Copilot Free/Pro individuale gestisce il flag nelle proprie personal settings; in contesto Business/Enterprise la scelta è tipicamente imposta dall’amministratore.

L’idea architetturale è che la protezione contro la duplicazione sia una decisione di governance centralizzata, non lasciata al singolo sviluppatore.

Duplication filter vs content exclusions

Domanda-trabocchetto classica: distinguere questo filtro dalle content exclusions. Sono due controlli con scopi opposti.

Duplication detection filter

  • Guarda verso l’esterno: confronta i suggerimenti con il codice pubblico di terzi.
  • Scopo: evitare di riproporre codice altrui.
  • Configurato tramite policy con valore Allowed/Blocked.

Content exclusions

  • Guardano verso l’interno: specificano file, path o repository proprietari che Copilot non deve usare come contesto.
  • In quei file Copilot non fornisce completion e non usa il contenuto per Chat o per generare suggerimenti altrove.
  • Scopo: privacy e riservatezza del tuo codice sensibile (segreti, IP interna), non protezione da codice pubblico.

In sintesi: il duplication filter protegge te dal riprodurre codice pubblico; le content exclusions proteggono il tuo codice dall’essere letto da Copilot.

Perché è rilevante: il legame con l’IP indemnity

Il motivo per cui l’esame insiste tanto su questo filtro è il suo ruolo di prerequisito dell’IP indemnification. Con GitHub Copilot Business ed Enterprise, GitHub offre una indennità (indemnity) che copre il cliente in caso di rivendicazioni di violazione di proprietà intellettuale legate ai suggerimenti non modificati.

Il vincolo è netto: l’indennità si applica solo se il duplication detection filter è abilitato (Blocked). Se una organization lascia la policy su Allowed, rinuncia di fatto alla copertura contrattuale. Il filtro non è quindi una scelta estetica ma una condizione di compliance.

Va inoltre chiarito un equivoco frequente: il filtro non valuta le licenze. Non stabilisce se il codice combaciante sia MIT, GPL o proprietario; blocca per pura coincidenza testuale con codice pubblico. La gestione delle implicazioni di licenza resta responsabilità del team.

Trappole tipiche d’esame

  • Scenario: l’azienda vuole beneficiare dell’IP indemnity di Copilot Enterprise. → Risposta: impostare “Suggestions matching public code” su Blocked: il filtro attivo è prerequisito dell’indennità.
  • Scenario: serve impedire che Copilot usi come contesto un repository con dati sensibili. → Risposta: usare le content exclusions, non il duplication filter (che agisce sull’output verso codice pubblico).
  • Scenario: “Il filtro blocca i suggerimenti con licenza GPL?” → Risposta: falso. Filtra per coincidenza con codice pubblico, non per tipo di licenza.
  • Scenario: un admin vuole applicare la policy a tutta l’azienda senza eccezioni. → Risposta: configurarla a livello enterprise, che vincola le organization sottostanti a non renderla più permissiva.
  • Scenario: “Il filtro protegge il codice proprietario dall’essere inviato al modello?” → Risposta: no, quello è compito delle content exclusions; il duplication filter riguarda i suggerimenti in uscita.