Avanzato 16 minDeployment

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.

Di Mohamed Meguedmi·Agg. 2026-08-27·Testato su Ubuntu 24.04

#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.
!
La trappola del «non addestriamo i modelli sui tuoi dati»
La promessa di non usare i dati per l’addestramento (zero data retention) risolve solo una parte del problema. Il codice viene comunque trasmesso, elaborato in memoria su server fuori dall’UE e resta soggetto al CLOUD Act statunitense. Il mancato addestramento non equivale al mancato trasferimento.

#Perché Copilot e Cursor violano i tuoi NDA

Il kit IA Locale in Azienda

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.
i
Il test decisivo
Chiedi al tuo ufficio legale: «Posso inviare il codice del cliente X a un server di terzi Y situato negli Stati Uniti?». Se la risposta è no anche per uno solo dei tuoi contratti, nessun assistente cloud può essere adottato in modo uniforme da tutto il team. L'uso di modelli locali diventa allora l'unica politica coerente.

#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.
→
L'esecuzione in locale: conformità per sottrazione
Anziché accumulare DPA, SCC, analisi d'impatto ed esclusioni di contenuti per uno strumento cloud, il deployment al 100% locale elimina il trasferimento. Nessun trasferimento, nessun responsabile del trattamento, nessuna questione legata al GDPR sull'input del modello. È l'approccio più difendibile di fronte a un auditor.

#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.
Installare la base Ollama + un modello per la programmazione
# Serveur d'inference local
curl -fsSL https://ollama.com/install.sh | sh

# Modele de code recommande pour 16 Go VRAM (specialiste agent de code)
ollama pull devstral:24b

# Verifier que l'API locale repond (aucun appel sortant)
curl http://localhost:11434/api/tags
Collegare Aider a Ollama (terminale)
pip install aider-install && aider-install

# Pointer Aider vers le serveur local, jamais vers une API cloud
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/devstral:24b

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).

Confronto tra le due topologie di deploy
CriterioPostazione isolata (Ollama locale)Server GPU condiviso (Tabby/Ollama)
Perimetro del codiceNon lascia mai la macchinaResta nel network interno (LAN/VPN)
Dimensione del modelloLimitata dalla VRAM del computerModello più grande condiviso (24-80 GB)
Costo hardwareElevato (1 GPU per sviluppatore)Razionalizzato (1 server per N sviluppatori)
Completamento automatico in tempo realeBuono se GPU localeEccellente con Tabby + batching
Conformità a un NDA rigorosoMassima (nessun traffico di rete)Forte (solo flusso interno, tracciabile)
ManutenzioneDecentralizzata, eterogeneaCentralizzata, aggiornamenti gestiti
→
Lo schema ibrido consigliato
In pratica, si combinano Tabby su un server GPU per l'autocompletamento condiviso da tutto il team (alto throughput, batching) e Ollama in locale sulle postazioni che gestiscono i repository più sensibili o per il lavoro senza connessione alla rete. Il tutto nel rispetto di una politica di rete che blocca gli endpoint noti di IA cloud.

#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.

Modelli di codice locali per budget di VRAM (quantizzazione Q4)
VRAMModello consigliatoUso tipico
8 GBQwen2.5-Coder 7B base (FIM)Autocompletamento inline di Tabby (il riferimento FIM del 2026), completamenti rapidi
16 GBDevstral 24B / gpt-oss 20BAgente Cline e Aider su repository di medie dimensioni
24 GBQwen3-Coder 30B-A3B / Qwen 3.8 27BRefactoring di file multipli, ragionamento
48-80 GBQwen3-Coder 30B-A3B Q8 / Granite 4.2 30BServer condiviso multi-dev, contesto lungo
i
Verificare la VRAM effettiva prima di promettere
La VRAM indicata per un modello dipende dalla quantizzazione e dalla lunghezza del contesto (la cache KV cresce con il contesto). Un Qwen3-Coder 30B-A3B in Q4 (19 GB) sta in 24 GB con un contesto moderato, ma un contesto di 256k può superare la capacità disponibile. Prova con il tuo carico reale.

#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.

  1. 01
    Vietare le chiavi API cloud
    Nessuna variabile OPENAI_API_KEY, ANTHROPIC_API_KEY o equivalente sulle postazioni di sviluppo. Cline e Aider sono configurati esclusivamente sull'endpoint Ollama interno.
  2. 02
    Bloccare gli endpoint tramite il firewall
    Filtrare 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.
  3. 03
    Bloccare la configurazione delle estensioni
    Distribuire le impostazioni di VS Code/Cline tramite GPO o MDM per impedire a uno sviluppatore di reindirizzare la configurazione verso un provider cloud.
  4. 04
    Regolamento e formazione
    Un regolamento sottoscritto ricorda il divieto di incollare codice in un chatbot cloud (il rischio residuo non è tecnico ma umano).
  5. 05
    Registrare gli accessi al server di inferenza
    I 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.

Catturare e verificare il traffico in uscita durante una sessione
# 1. Capturer le trafic du poste pendant une session de codage Cline/Aider
sudo tcpdump -i any -n 'tcp port 443' -w /tmp/session_code.pcap

# 2. Lister les IP/destinations contactees (hors reseau interne)
tcpdump -r /tmp/session_code.pcap -n | awk '{print $5}' | cut -d. -f1-4 | sort -u

# 3. Verifier qu'aucune resolution ne vise un endpoint d'IA cloud
grep -Ei 'openai|anthropic|githubcopilot|cursor' /var/log/dnsmasq.log || echo 'OK : aucune requete IA cloud'
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.
→
Documentare una volta, riprodurre spesso
Automatizza l'audit con uno script (acquisizione + analisi + rapporto) e pianificane l'esecuzione periodica. Un dossier di audit riproducibile vale molto più di un'affermazione isolata quando il cliente o la CNIL pone domande.

#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.
i
La regola di decisione in una frase
Se non puoi rispondere 'sì' alla domanda 'posso inviare questo codice a terzi?' per tutti i tuoi repository, implementa uno stack locale omogeneo: è più semplice da governare rispetto a un insieme misto di soluzioni cloud e locali scelte caso per caso.

#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.

Domande frequenti
Copilot Enterprise è veramente incompatibile con un NDA?+
Dipende dall'NDA. Se il tuo accordo vieta qualsiasi divulgazione a un soggetto terzo non autorizzato nominativamente, sì: anche con l'opzione che esclude l'uso dei dati per l'addestramento attivata, il codice transita attraverso l'infrastruttura di GitHub/Azure, il che costituisce una divulgazione a terzi. Fai convalidare ogni contratto con un cliente dal tuo ufficio legale prima di qualsiasi distribuzione nel cloud.
Uno stack locale Ollama è abbastanza performante per sostituire Copilot?+
Per l'autocompletamento e il pair programming di tutti i giorni, sì: Tabby offre suggerimenti inline (con Qwen2.5-Coder 7B base, ancora il riferimento per il FIM nel 2026) e, per la chat agentica, Devstral 24B o Qwen3-Coder 30B-A3B reggono il confronto nella maggior parte delle attività. Nel ragionamento molto complesso, i modelli cloud più grandi mantengono un vantaggio, ma il divario si è ridotto e la garanzia di riservatezza cambia le carte in tavola.
Quale GPU per equipaggiare una squadra di 10 sviluppatori?+
Un server GPU condiviso con da 24 a 48 GB di VRAM (ad esempio una scheda da 24 GB per iniziare) che esegue Tabby e Ollama è generalmente sufficiente per una decina di sviluppatori che usano l'autocompletamento, con un Devstral 24B o un Qwen3-Coder 30B-A3B. Misura il tuo carico effettivo: un contesto lungo aumenta le dimensioni della cache KV e la quantità di VRAM necessaria.
Il GDPR impone davvero l'esecuzione in locale per il codice?+
No, il RGPD non impone l'esecuzione in locale. Quando avviene un trasferimento di dati personali (commenti, log, set di dati di test), richiede una base giuridica, un DPA e, al di fuori dell'UE, garanzie per il trasferimento. L'esecuzione in locale è semplicemente la via più semplice per rispettare la normativa, perché elimina il trasferimento e quindi la maggior parte di questi obblighi.
Come dimostrare a un cliente che nessuna riga di codice viene divulgata?+
Con un dossier di audit riproducibile: acquisizione del traffico di rete durante una sessione di programmazione che mostri zero connessioni verso un endpoint di IA cloud, esportazione della configurazione degli strumenti senza chiave cloud, test negativo di accesso bloccato dal firewall e log del server di inferenza interno. Automatizza tutto con uno script per poterlo rieseguire su richiesta.
Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.