IA per la programmazione in azienda: proteggere codice proprietario, NDA e segreto industriel
Uno sviluppatore incolla una funzione di logica aziendale in un assistente cloud per rifattorizzarla. In un secondo, un frammento di codice soggetto a una clausola di cessione e a un NDA ha appena lasciato il tuo perimetro, transitando attraverso i server di un soggetto terzo statunitense. Per un produttore di software, uno studio di progettazione o una società di servizi informatici vincolata al segreto industriale, questo gesto apparentemente innocuo costituisce una falla sul piano giuridico e contrattuale. Questa guida si rivolge al responsabile tecnico o al direttore dei sistemi informativi che vuole dotare i propri sviluppatori di un copilota efficiente senza che nemmeno una riga di codice proprietario esca dalla rete aziendale. Vedremo perché GitHub Copilot e Cursor pongono problemi nonostante le loro opzioni « enterprise », che cosa impongono realmente il GDPR e l'AI Act, e poi come distribuire uno stack locale al 100% (Ollama, Cline, Aider, Tabby) su una postazione o su un server GPU condiviso, con una politica contro l'esfiltrazione verificabile tramite audit.
#Il vero rischio: il tuo codice viene inviato a terzi
Il codice sorgente non è un dato come gli altri. Contiene i tuoi algoritmi, i tuoi segreti di produzione, le tue chiavi API inserite direttamente nel codice (può capitare), la tua architettura di sicurezza e, sul piano giuridico, è spesso soggetto a una clausola di cessione dei diritti a favore di un cliente. Un assistente di programmazione cloud legge il contesto intorno al cursore, a volte l'intero repository per l'indicizzazione, e invia questi frammenti a un modello remoto. Il rischio non è teorico: combina divulgazione di segreti industriali, violazione di NDA e non conformità al RGPD non appena un commento contiene un dato personale.
- Segreto industriale
- Un algoritmo proprietario esposto a terzi perde la sua qualificazione di segreto (art. L151-1 del Codice di commercio): viene meno la protezione giuridica.
- Clausola di cessione
- Per il codice consegnato a un cliente, il contratto vieta spesso qualsiasi comunicazione a un subappaltatore non autorizzato. Un assistente cloud è un subappaltatore non dichiarato.
- NDA del fornitore
- Lavori sul codice di un partner soggetto a un accordo di riservatezza: inviarlo a OpenAI o Anthropic è una violazione diretta.
- Dati personali
- Un insieme di dati di test, un log inline o un commento contenente un indirizzo email fanno rientrare l'invio nell'ambito del GDPR.
#Perché Copilot e Cursor violano i tuoi NDA
Implementare un'IA locale sul lavoro: GDPR, AI Act, architettura multiutente, costi, nota per la direzione.
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
GitHub Copilot e Cursor sono ottimi strumenti di produttività, ma il loro modello economico si basa su LLM ospitati (Copilot sull'infrastruttura Azure/OpenAI, Cursor su OpenAI e Anthropic). Anche con le offerte Business o Enterprise, il tuo codice lascia il computer per essere completato lato server. Le opzioni 'content exclusion' o 'privacy mode' riducono la conservazione, ma il flusso di rete verso un terzo rimane. Per una clausola NDA che proibisce ogni divulgazione a un terzo non nominato, questo flusso costituisce una violazione, indipendentemente dalla politica di conservazione.
- Copilot Business
- Codice inviato a GitHub/Azure per il completamento. 'No training' attivato per impostazione predefinita, ma trasferimento al di fuori dell'UE e assoggettamento al CLOUD Act.
- Cursor (Privacy Mode)
- La modalità privata impedisce la conservazione dei dati da parte di Cursor, ma le richieste passano comunque attraverso le API di OpenAI e Anthropic.
- Cursor senza Privacy Mode
- Il codice può essere conservato e utilizzato per migliorare il prodotto. Inaccettabile in presenza di un NDA rigoroso.
- Limite contrattuale comune
- Nessuna di queste offerte prevede la firma di un DPA che copra una clausola di cessione del codice del cliente a uno specifico subfornitore terzo.
#Ciò che il GDPR e l'AI Act richiedono in materia di codice sorgente
Il RGPD non parla di 'codice sorgente' ma di dati personali. Il codice ne contiene più spesso di quanto si creda: email nei commenti, identificativi di test, dati di seed, tracce di log. Non appena uno di questi elementi viene inviato a un assistente cloud, effettui un trasferimento di dati, il che richiede una base giuridica, un responsabile del trattamento vincolato da un DPA (art. 28) e, al di fuori dell'UE, un meccanismo di trasferimento valido (clausole contrattuali standard). L'AI Act, invece, classifica la maggior parte degli assistenti di codice come a rischio limitato, con obblighi soprattutto di trasparenza; ma la vera questione per te si pone a monte, nella governance dei dati in ingresso al modello.
- GDPR art. 28
- Ogni assistente cloud che elabora i tuoi dati è un responsabile del trattamento e richiede un DPA firmato. Molti team lo usano senza contratto.
- GDPR: trasferimento fuori dall'UE
- Senza hosting nell'UE, occorrono garanzie (SCC) e un'analisi del trasferimento. L'esecuzione in locale elimina completamente il problema.
- AI Act (trasparenza)
- Rischio limitato per l'assistente di codice: informare che il contenuto è generato dall'IA. Poco vincolante, ma da documentare.
- Minimizzazione fin dalla progettazione
- La strada più semplice per la conformità: non trasferire nulla. Uno stack locale applica la minimizzazione per sua stessa natura.
#Lo stack 100% locale: Ollama, Cline, Aider, Tabby
Uno stack per un copilota locale si basa su due livelli: un server di inferenza che esegue il modello sul tuo hardware e dei client che vi si collegano dall'IDE o dal terminale. Il server di riferimento è Ollama, che espone un'API HTTP locale e gestisce il download dei modelli GGUF. Al livello superiore, tre client complementari coprono i diversi utilizzi: Cline per l'agente in VS Code, Aider per il pair programming da terminale orientato ai commit Git e Tabby per l'autocompletamento in stile Copilot, in modalità server condiviso per tutto il team.
- Ollama
- Server di inferenza locale (MIT). Serve i modelli tramite http://localhost:11434. Nessuna telemetria del codice, nessuna chiamata in uscita per l'inferenza.
- Cline
- Estensione VS Code (agente). Legge e scrive file, esegue comandi, pianifica attività che coinvolgono più file. Si collega a Ollama come provider locale.
- Aider
- CLI di pair-programming (Apache 2.0). Modifica il codice ed effettua i commit Git; ottimo per il refactoring guidato. Punta all'API Ollama.
- Tabby
- Server di autocompletamento auto-ospitato (Apache 2.0). Sostituisce Copilot per i suggerimenti inline; ideale con un server GPU condiviso.
Per Cline, in VS Code, si seleziona il provider 'Ollama' nelle impostazioni dell'estensione e si inserisce l'URL del server (locale o quello del tuo server GPU interno). Non viene inserita alcuna chiave API cloud: è la garanzia tecnica che nessun frammento venga inviato a OpenAI o Anthropic. Tabby, invece, viene distribuito in un container sul server GPU e le postazioni si collegano al suo endpoint interno.
#Architettura: postazione isolata vs server GPU condiviso
Predominano due topologie. La postazione isolata esegue Ollama direttamente sul computer dello sviluppatore (Mac serie M o PC RTX): il codice non lascia mai la postazione, ideale per gli NDA più rigorosi, ma limitata dalla VRAM del singolo computer e costosa da replicare su larga scala. Il server GPU condiviso centralizza una o più GPU nella rete interna; le postazioni vi si collegano tramite l'API. Si condivide un modello più grande, si razionalizza l'hardware e il flusso rimane rigorosamente all'interno della rete (LAN o VPN aziendale).
| Criterio | Postazione isolata (Ollama locale) | Server GPU condiviso (Tabby/Ollama) |
|---|---|---|
| Perimetro del codice | Non lascia mai la macchina | Resta nel network interno (LAN/VPN) |
| Dimensione del modello | Limitata dalla VRAM del computer | Modello più grande condiviso (24-80 GB) |
| Costo hardware | Elevato (1 GPU per sviluppatore) | Razionalizzato (1 server per N sviluppatori) |
| Completamento automatico in tempo reale | Buono se GPU locale | Eccellente con Tabby + batching |
| Conformità a un NDA rigoroso | Massima (nessun traffico di rete) | Forte (solo flusso interno, tracciabile) |
| Manutenzione | Decentralizzata, eterogenea | Centralizzata, aggiornamenti gestiti |
#Quali modelli per la programmazione con quale VRAM
La qualità di un copilota locale dipende dal modello. Tre famiglie aperte dominano la programmazione nel 2026: Qwen3-Coder (Alibaba, MoE 30B-A3B, 256k di contesto, veloce grazie ai suoi 3B di parametri attivi, Apache 2.0), Devstral (Mistral AI, un modello da 24B pensato per l'uso agentico con Cline e OpenHands, Apache 2.0) e i generalisti con buone capacità di programmazione come Qwen 3.8 27B o GLM 4.7 Flash. La scelta dipende dalla VRAM disponibile e dall'uso: un modello piccolo e veloce per l'autocompletamento in Tabby, uno più grande per il ragionamento agentico di Cline.
| VRAM | Modello consigliato | Uso tipico |
|---|---|---|
| 8 GB | Qwen2.5-Coder 7B base (FIM) | Autocompletamento inline di Tabby (il riferimento FIM del 2026), completamenti rapidi |
| 16 GB | Devstral 24B / gpt-oss 20B | Agente Cline e Aider su repository di medie dimensioni |
| 24 GB | Qwen3-Coder 30B-A3B / Qwen 3.8 27B | Refactoring di file multipli, ragionamento |
| 48-80 GB | Qwen3-Coder 30B-A3B Q8 / Granite 4.2 30B | Server condiviso multi-dev, contesto lungo |
#Politica 'provider local only'
Uno stack locale protegge solo se è vincolato da una politica. 'Provider local only' significa che nessuno strumento di sviluppo può puntare a un'API di IA cloud. Questa politica si articola su tre livelli complementari: configurazione degli strumenti (nessuna chiave cloud), blocco di rete (gli endpoint di IA cloud sono irraggiungibili dalle postazioni di sviluppo) e regola organizzativa (regolamento sottoscritto). È la combinazione dei tre a rendere la politica realmente opponibile in sede di audit.
- 01Vietare le chiavi API cloudNessuna variabile OPENAI_API_KEY, ANTHROPIC_API_KEY o equivalente sulle postazioni di sviluppo. Cline e Aider sono configurati esclusivamente sull'endpoint Ollama interno.
- 02Bloccare gli endpoint tramite il firewallFiltrare in uscita api.openai.com, api.anthropic.com e i domini di Copilot e Cursor. I completamenti non possono quindi più uscire fisicamente dalla rete.
- 03Bloccare la configurazione delle estensioniDistribuire le impostazioni di VS Code/Cline tramite GPO o MDM per impedire a uno sviluppatore di reindirizzare la configurazione verso un provider cloud.
- 04Regolamento e formazioneUn regolamento sottoscritto ricorda il divieto di incollare codice in un chatbot cloud (il rischio residuo non è tecnico ma umano).
- 05Registrare gli accessi al server di inferenzaI log del server Ollama/Tabby dimostrano che i completamenti vengono forniti internamente. Elemento chiave dell'audit.
#Verificare l'assenza di esfiltrazione
L'argomento 'è locale' vale solo se dimostrato. L'audit sull'assenza di esfiltrazione consiste nel dimostrare, con tracce a supporto, che nessun frammento di codice esce dal perimetro durante l'uso del copilota. Il metodo più convincente è l'osservazione del traffico di rete: si cattura il traffico di un computer durante una sessione di programmazione intensiva e si verifica che nessuna connessione sia diretta a un endpoint di IA nel cloud. Si completa con l'ispezione della configurazione e dei log del server.
- Evidenze di rete
- Cattura con tcpdump/Wireshark: compaiono soltanto gli indirizzi IP del server interno e dei repository Git interni. Nessun endpoint di IA cloud.
- Prova della configurazione
- Esportazione delle impostazioni Cline/Aider che mostrano il provider Ollama interno e l'assenza della chiave cloud.
- Prova di blocco
- Test negativo: un tentativo manuale di raggiungere api.openai.com da una postazione di sviluppo fallisce (firewall).
- Prove lato server
- Log di Ollama/Tabby con marca temporale che correlano i completamenti alle postazioni interne.
#Valutazione onesta: locale vs cloud
Siamo onesti: il cloud resta in vantaggio per la qualità pura dei modelli più grandi e per l'assenza di lavoro necessario a gestire l'infrastruttura. Un assistente cloud proprietario potrà, in alcune attività di ragionamento complesso, superare un Qwen3-Coder 30B-A3B locale. L'esecuzione in locale richiede un investimento in hardware, un team per mantenere il server di inferenza e comporta una qualità leggermente inferiore nelle attività più sofisticate. La scelta giusta non è ideologica: dipende dalla sensibilità del tuo codice.
- Scegli l'esecuzione in locale se
- Hai codice coperto da un NDA, clausole di cessione, segreti industriali o clienti che vietano il ricorso a subappaltatori terzi non approvati.
- Il cloud può bastare se
- Il tuo codice è open source, senza dati personali, senza impegno contrattuale di riservatezza verso un terzo.
- Costo reale dell'esecuzione in locale
- Un server GPU (24-48 GB) il cui costo viene ammortizzato su un team risulta spesso meno costoso delle licenze cloud per utente nell'arco di 2-3 anni.
- Il rischio nascosto del cloud
- Il costo di una sola violazione di un NDA (perdita di un contratto, contenzioso) supera il costo di anni di licenze locali.
#Conclusione e implementazione
Dotare un team di sviluppatori di un copilota performante senza mai esporre il codice proprietario è oggi realistico: Ollama come server di inferenza, Cline e Aider per l'agente e il terminale, Tabby per l'autocompletamento condiviso, il tutto con una politica 'provider local only' e un audit riproducibile che verifichi l'assenza di esfiltrazione. La conformità al GDPR e all'AI Act si ottiene per sottrazione: nessun trasferimento, nessun responsabile del trattamento, nessuna questione. Per risparmiare tempo nella messa in opera, la guida a pagamento «Copilota di codice locale» fornisce un pacchetto chiavi in mano Ollama + Cline + Aider: configurazioni pronte all'uso, scelta dei modelli in base al budget di VRAM, una politica di rete che blocca gli endpoint cloud e lo script di audit per verificare l'assenza di esfiltrazione. Tutto il necessario per implementare in poche ore uno stack difendibile davanti al tuo ufficio legale e ai tuoi clienti.
Copilot Enterprise è veramente incompatibile con un NDA?+
Uno stack locale Ollama è abbastanza performante per sostituire Copilot?+
Quale GPU per equipaggiare una squadra di 10 sviluppatori?+
Il GDPR impone davvero l'esecuzione in locale per il codice?+
Come dimostrare a un cliente che nessuna riga di codice viene divulgata?+
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.