Le due superfici di interazione

GitHub Copilot lavora attraverso due canali distinti, ed è fondamentale non confonderli perché il trattamento del contesto cambia:

  • Code completion (i suggerimenti inline, il cosiddetto ghost text): l’editor genera automaticamente un prompt a ogni pausa di digitazione, assemblando contesto ristretto — file corrente, porzioni dei file aperti nelle tab vicine, percorso e linguaggio, testo prima e dopo il cursore.
  • Copilot Chat: interazione conversazionale esplicita. Il prompt include la domanda dell’utente, eventuali riferimenti (#file, @workspace, selezioni di codice) e la cronologia della conversazione all’interno della sessione.

La differenza pratica: il code completion invia molti prompt piccoli e ad alta frequenza in modo semi-automatico, mentre la chat invia meno richieste ma con contesto più ampio e intenzionale.

Il flusso dei dati, passo dopo passo

  1. Context assembly: l’estensione nell’IDE raccoglie il contesto rilevante e costruisce il prompt localmente.
  2. Trasmissione: il prompt viaggia cifrato (TLS) verso il Copilot proxy service gestito da GitHub, non direttamente al modello.
  3. Filtri in ingresso: il proxy applica controlli su linguaggio tossico, tentativi di prompt injection e pattern di dati personali.
  4. Inference: il modello (LLM) genera i suggerimenti.
  5. Filtri in uscita: se attivo, il duplication detection filter (suggestions matching public code) blocca output che coincidono con codice pubblico noto; poi il suggerimento torna all’editor.

Un elemento architetturale chiave per i piani organizzativi sono le content exclusions: gli amministratori possono escludere file, path o interi repository dall’uso come contesto, cosicché quel codice non entri mai nei prompt.

Retention e training: dove i piani divergono

Questo è il cuore dell’unità e la distinzione più chiesta all’esame.

Copilot Business e Copilot Enterprise

  • Prompt e suggerimenti NON vengono conservati: sono elaborati in transito e scartati una volta restituito il suggerimento.
  • NON vengono usati per addestrare i foundation model.
  • Vale sia per il code completion sia per la chat.
  • Sono disponibili controlli amministrativi centralizzati (policy, content exclusions, gestione via organizzazione/enterprise).

Questa è la ragione per cui le aziende adottano Business/Enterprise: la garanzia contrattuale che il codice proprietario non alimenti i modelli né resti memorizzato.

Copilot Free e Copilot Pro (piani individuali)

  • Di default prompt e suggerimenti possono essere conservati e usati per il miglioramento del prodotto.
  • L’utente può disattivare la condivisione tramite l’impostazione “Allow GitHub to use my data…” (opt-out esplicito).
  • La responsabilità della configurazione ricade sul singolo, non su un amministratore.

Il ruolo della telemetria

La telemetria è concettualmente separata dal contenuto di prompt e suggerimenti. Registra segnali di utilizzo:

  • se un suggerimento è stato accettato o rifiutato;
  • latenza, errori, quali feature vengono usate.

Serve a misurare l’efficacia del servizio, è opzionale/configurabile e, nei piani organizzativi, governata a livello di admin. Il punto da fissare: sapere che un suggerimento è stato accettato non significa conservare il codice del suggerimento per Business/Enterprise.

Sintesi architetturale

Quando in uno scenario devi scegliere il piano corretto, la logica è: se il requisito è “il nostro codice non deve essere trattenuto né usato per il training e vogliamo governance centralizzata” → Business o Enterprise. Se è un singolo sviluppatore su un progetto personale/open source → Free/Pro, ricordando che la protezione dal riuso dipende da un opt-out manuale.

Trappole tipiche d’esame

  • Scenario: un’azienda teme che il codice proprietario venga usato per addestrare i modelli. → Risposta: con Copilot Business/Enterprise prompt e suggerimenti non sono conservati né usati per il training; non serve alcun opt-out.
  • Scenario: uno sviluppatore su Copilot Pro vuole evitare che i suoi snippet siano riutilizzati. → Risposta: deve disattivare manualmente la condivisione dati nelle impostazioni (per gli individuali il riuso è attivo di default).
  • Scenario: “Disabilitare la telemetria impedisce a GitHub di trattenere il mio codice su Business?” → Risposta: falso premessa/irrilevante — su Business i prompt non vengono comunque trattenuti; la telemetria riguarda segnali d’uso (accept/reject), non il contenuto del codice.
  • Scenario: impedire che una cartella con segreti finisca nel contesto dei suggerimenti in un’organizzazione. → Risposta: configurare le content exclusions (Business/Enterprise), non affidarsi alle impostazioni del singolo.
  • Scenario: il codice generato è identico a un repository pubblico e si vuole evitarlo. → Risposta: abilitare il duplication detection / matching public code filter, non un’opzione di retention o telemetria.