Débutant 14 minVie privée

Checklist confidentialité

Réponse directe

Pour qu'un LLM local reste confidentiel, vérifiez cinq points : les fonctions cloud de l'outil, la télémétrie des bibliothèques, le trafic réseau réel, l'origine des modèles et extensions, et les dossiers synchronisés ou sauvegardés. Le test décisif tient en un geste : couper Internet et refaire une session normale. Si tout fonctionne, la chaîne est locale ; sinon, il y a un appel à identifier.

Un LLM local est confidentiel par construction, mais seulement si rien autour du modèle ne parle à l'extérieur : option cloud, ping de bibliothèque, plugin, dossier synchronisé. Ces fuites sont rarement voulues et presque toujours invisibles. Cette checklist vous donne des critères vérifiables, des commandes et des réglages datés, pour contrôler votre installation en quinze minutes.

Par Mohamed Meguedmi·Màj 2026-09-30·Testé sur Windows, macOS, Linux

#Ce que « local » garantit, et ce qu'il ne garantit pas

Pour vérifier qu'un LLM local reste confidentiel, il faut contrôler cinq points : l'outil que vous utilisez, ses télémétries et ses appels vers des services distants, le trafic réel de la machine, la provenance des modèles et extensions, et enfin les dossiers où vivent vos conversations. Un modèle exécuté chez vous n'envoie rien par lui-même : les fuites viennent presque toujours de ce qui l'entoure, une option cloud activée, un ping de bibliothèque, un plugin, une synchronisation. La méthode la plus fiable reste le test réseau : couper Internet, refaire une session normale, puis observer ce qui tente encore de sortir. Le reste de cette page détaille chaque contrôle, avec les variables d'environnement, les commandes et les réglages à vérifier.

i
Le test du pare-feu
Coupez la connexion sortante de la machine (mode avion, câble débranché, ou règle de pare-feu), puis refaites une session normale : chat, import de document, recherche dans vos notes. Si tout fonctionne, votre chaîne est locale. Si un outil se plaint ou reste bloqué, notez lequel : c'est une fuite potentielle à identifier, ou une fonction cloud que vous utilisiez sans le savoir.

#Quel niveau de contrôle selon vos données

Le kit IA Locale en Entreprise

Déployer une IA locale au travail : RGPD, AI Act, architecture multi-utilisateurs, coûts, note pour la direction.

  • Espace en ligne à vie
  • PDF + fichiers
  • Mises à jour à vie

Tout le monde n'a pas besoin de la même rigueur. Un usage personnel sans donnée sensible se contente des premiers points ; un dossier client ou médical réclame l'étanchéité complète, et un secret industriel ou un cadre NDA impose de prouver ce qui sort. Le tableau suivant relie le niveau d'exigence aux contrôles à cocher.

Niveau de contrôle recommandé selon la sensibilité des données
Type de donnéesContrôles minimumÀ ajouter si un audit est possible
Usage personnel courant (idées, rédaction, code perso)Outil vérifié, fonctions cloud désactivées, télémétrie coupéeTest mode avion une fois
Données de clients, RH, santé, juridiqueTout ce qui précède, plus pare-feu applicatif, dossiers hors synchronisation, disque chiffréJournal du pare-feu conservé, liste des extensions autorisées
Secret industriel, code sous NDA, données réglementéesTout ce qui précède, plus machine isolée du réseau pour l'inférenceAir-gap complet, modèles importés depuis un poste séparé, revue des extensions

Les deux dernières lignes sont détaillées dans les guides sur l'isolation d'une machine d'inférence et sur le chiffrement du disque.

#1. Vérifier l'outil lui-même

Chaque application d'inférence a sa propre politique. Ce qui suit reprend ce que les éditeurs indiquent dans leur documentation ou leur politique de confidentialité, consultées le 30 septembre 2026 ; une mise à jour peut changer ces réglages, revérifiez après chaque montée de version majeure.

Ce que disent les éditeurs sur les données qui sortent
OutilCe qui est indiquéÀ vérifier chez vous
OllamaLa FAQ précise que les prompts et données ne sont pas vus quand le modèle tourne en local ; le service écoute sur 127.0.0.1, port 11434Que vous n'utilisez pas de modèle cloud ni la recherche web
LM StudioLa politique de confidentialité indique que les messages, historiques et documents ne quittent pas votre machine avec des modèles locaux ; seules la recherche ou le téléchargement de modèle et la vérification des mises à jour contactent l'éditeurLes fonctions cloud payantes (modèles hébergés, recherche web) restent éteintes
JanFonctionnement annoncé 100 % hors ligne, données stockées localement ; les API distantes (OpenAI, Groq) envoient vos données à leurs serveursQu'aucune clé d'API distante n'est configurée
GPT4AllUn réglage Datalake, à activer volontairement, permet de partager des interactions avec la communauté ; il est désactivé par défautQue Datalake est bien sur Off
Open WebUILe dépôt fournit des variables pour couper les analytics et la télémétrie des bibliothèques (voir section suivante)Aucune clé de fournisseur distant en repli

Deux corrections par rapport aux idées reçues. D'abord, la mention « télémétrie opt-in » qu'on lit souvent pour LM Studio est dépassée : sa politique actuelle précise que l'application n'inclut pas de télémétrie. Ensuite, dire d'Ollama qu'il n'a « aucune fonction distante » est inexact depuis l'arrivée des modèles cloud et de la recherche web. Ces fonctions sont facultatives, mais présentes.

#Ollama : désactiver les fonctions cloud

Si Ollama est votre moteur, coupez explicitement ce qui peut sortir. La FAQ indique qu'en désactivant le cloud, vous perdez la possibilité d'utiliser les modèles cloud et la recherche web d'Ollama. C'est exactement l'effet recherché pour un poste confidentiel.

Désactiver le cloud Ollama (Linux, service systemd)
sudo systemctl edit ollama
# Ajouter dans l'éditeur :
# [Service]
# Environment="OLLAMA_NO_CLOUD=1"
sudo systemctl restart ollama

Sur macOS avec l'application, les variables se posent avec launchctl setenv avant de relancer l'application, comme le décrit la FAQ ; l'alternative est d'ajouter la clé disable_ollama_cloud à true dans le fichier ~/.ollama/server.json. Après redémarrage, les journaux affichent « Ollama cloud disabled: true », ce qui donne une preuve simple à conserver.

#2. Télémétrie et analytics des bibliothèques

L'outil peut être propre alors que les bibliothèques qu'il embarque parlent. Dans l'écosystème Python de Hugging Face, la documentation indique que certaines données sont collectées par défaut pour surveiller l'usage et prioriser les fonctionnalités, la mise en oeuvre centrale se trouvant dans huggingface_hub. Une seule variable les coupe toutes.

Couper la télémétrie Hugging Face
export HF_HUB_DISABLE_TELEMETRY=1
# Équivalent reconnu par tout l'écosystème (transformers, diffusers, gradio) :
export DO_NOT_TRACK=1

# À placer dans ~/.zshrc ou ~/.bashrc pour la rendre persistante

La variable HF_HUB_DISABLE_IMPLICIT_TOKEN, souvent citée avec les précédentes, n'est pas une variable de télémétrie : elle empêche l'envoi automatique de votre jeton Hugging Face lors de requêtes qui n'en ont pas besoin, ce qui limite ce que vous exposez quand vous êtes connecté. Elle est utile, mais pour un autre motif, et la documentation prévient qu'elle peut avoir des effets de bord (les modèles privés n'apparaissent plus dans certaines listes).

Forcer le mode hors ligne une fois le modèle en cache
export HF_HUB_OFFLINE=1
# Aucun appel HTTP vers le Hub ; seuls les fichiers du cache sont lus

Ce dernier réglage est le plus puissant pour un poste sensible : il transforme une fuite silencieuse en erreur visible. Si un script échoue en signalant l'absence de cache, c'est qu'il tentait de joindre le Hub, ce que vous vouliez savoir. L'ancienne variable TRANSFORMERS_OFFLINE a longtemps servi au même usage, mais HF_HUB_OFFLINE est celle que la documentation actuelle de Transformers met en avant.

#Open WebUI et ses dépendances

Open WebUI embarque des composants tiers, dont une base vectorielle et un module de statistiques d'installation. Son fichier d'exemple de configuration regroupe trois lignes dans une section « DO NOT TRACK » qui coupent ces envois. Elles se passent en variables d'environnement, dans le fichier de configuration ou dans le docker run.

Variables anti-télémétrie d'Open WebUI
SCARF_NO_ANALYTICS=true
DO_NOT_TRACK=true
ANONYMIZED_TELEMETRY=false

Vérifiez aussi que vous n'y avez pas ajouté de clé de fournisseur distant : un « repli » vers un service hébergé, quand le modèle local est indisponible, envoie silencieusement vos prompts dehors. Le guide Open WebUI avec Ollama montre où ces connexions se déclarent.

#3. Surveillance réseau : voir ce qui sort vraiment

Les déclarations des éditeurs se lisent ; le trafic se mesure. Un pare-feu applicatif liste chaque programme qui tente une connexion sortante et vous laisse trancher au cas par cas, ce qui révèle en quelques jours ce qu'aucune documentation ne dit.

Little Snitch (macOS)
Pare-feu par application : vous voyez qui appelle quel domaine et décidez pour chaque cas.
GlassWire (Windows)
Historique visuel du trafic par processus, avec alertes sur les nouvelles connexions.
OpenSnitch (Linux)
Application firewall interactif pour GNU/Linux, inspiré de Little Snitch, open source (licence GPL-3.0).
ufw ou iptables
Bloquent par défaut et n'autorisent que le nécessaire ; le guide sur l'air-gap détaille la démarche.

#Lister les connexions et les ports en écoute

Deux commandes distinctes répondent à deux questions. La première montre sur quelle adresse le service accepte des connexions, la seconde les connexions ouvertes vers l'extérieur.

Écoute et connexions d'Ollama (Linux et macOS)
# Qui écoute, et sur quelle adresse ?
lsof -nP -iTCP -sTCP:LISTEN | grep -i ollama

# Quelles connexions sortantes sont ouvertes ?
lsof -nP -i | grep -i ollama | grep ESTABLISHED

Lisez le résultat ainsi : une écoute sur 127.0.0.1:11434 est le comportement par défaut, documenté par la FAQ d'Ollama, et n'est joignable que depuis la machine. Une écoute sur * ou 0.0.0.0 signifie que le service est joignable depuis le réseau local, ce qui arrive quand la variable OLLAMA_HOST a été modifiée. Ce n'est pas une fuite vers Internet, mais c'est une exposition à traiter : voir le guide sur la sécurisation d'un serveur Ollama. Le point souvent confondu : 0.0.0.0 ne veut pas dire « localhost uniquement ».

Une ligne ESTABLISHED vers une adresse publique pendant une inférence est le signal à creuser. Notez que le téléchargement d'un modèle produit légitimement des connexions ; c'est l'inférence, une fois le modèle en place, qui doit rester silencieuse. Les mises à jour de l'application peuvent aussi contacter l'éditeur, comme le reconnaît LM Studio dans sa politique : décidez si vous les tolérez.

#4. Modèles : d'où ils viennent et ce qu'ils contiennent

Le premier téléchargement d'un modèle exige une connexion : c'est normal, et ce qui transite alors est le modèle qui arrive, pas vos données. Une fois le fichier en place, un modèle est un ensemble de poids : lui-même n'ouvre pas de connexion. Le point d'attention porte sur le format et sur ce qui l'exécute.

Format des poids
Les formats GGUF et safetensors ne contiennent que des tenseurs. Le format pickle, utilisé par défaut pour les poids PyTorch, est différent : la documentation de Hugging Face avertit que charger un fichier pickle peut exécuter du code arbitraire.
Origine
Privilégiez les dépôts des éditeurs (Mistral AI, Meta, Qwen, Google) ou les bibliothèques d'un outil qui vérifie ses modèles. Un dépôt anonyme au format pickle est le cas à éviter.
Ce qui exécute
Le risque vient de l'application et de ses outils : si le modèle peut appeler une recherche web, un serveur MCP ou un script, ce sont ces outils qui accèdent au réseau, pas les poids.
!
Un modèle avec outils peut sortir des données
Un modèle seul ne peut exfiltrer que par son texte de sortie, que vous lisez. Dès que vous lui branchez des outils (navigation, MCP, exécution de code), il peut demander à l'application d'envoyer une requête contenant vos données. Traitez chaque outil comme une extension, avec les contrôles de la section suivante.

#5. Extensions, plugins et outils connectés

C'est là que se cachent la plupart des fuites réelles. Une extension d'éditeur de code, un plugin de prise de notes, un outil déclaré dans Open WebUI ou un serveur MCP s'exécute avec vos droits et peut appeler n'importe quel domaine. Un plugin qui promet « l'IA locale » n'engage que son auteur.

Lire avant d'activer
Cherchez dans le code les appels réseau (requêtes HTTP, bibliothèques de suivi) et l'endpoint réellement configuré : c'est une ligne à changer, souvent, pour pointer vers Ollama plutôt que vers un service hébergé.
Préférer l'open source
Un code que vous pouvez lire est vérifiable ; un assistant à backend propriétaire ne l'est pas.
Limiter les permissions
Un outil qui n'a pas besoin de lire tout le disque ne doit pas y avoir accès ; donnez-lui un dossier de travail dédié.
Observer avec le pare-feu
Après installation, laissez le pare-feu applicatif apprendre les domaines contactés par l'extension pendant une semaine.

#6. Stockage, sauvegardes et synchronisation

Vos conversations et vos documents indexés sont des fichiers. Leur sort dépend de l'endroit où l'application les range, et de ce qui surveille ce dossier : synchronisation cloud, sauvegarde en ligne, indexeur de recherche.

Où sont les modèles Ollama
Selon la FAQ : ~/.ollama/models sous macOS, /usr/share/ollama/.ollama/models sous Linux, C:\Users\%username%\.ollama\models sous Windows, déplaçable avec OLLAMA_MODELS. Ce sont des fichiers de plusieurs gigaoctets : les exclure de la synchronisation économise aussi de la bande passante.
Où sont les conversations
Dans le dossier de données de l'interface que vous utilisez (LM Studio, Jan, GPT4All, Open WebUI), pas dans celui d'Ollama. Repérez ce dossier dans les réglages de l'application, puis vérifiez qu'aucun service cloud ne le surveille.
Synchronisation
Beaucoup de logiciels rangent leurs données dans Documents, que iCloud, OneDrive ou Dropbox répliquent automatiquement. Une conversation confidentielle y devient une copie sur un serveur tiers.
Sauvegardes
Une sauvegarde hors site ou sur un disque externe non chiffré recopie l'historique. Chiffrez la destination, ou excluez le dossier.
Disque
Un disque non chiffré rend toutes les conversations lisibles en cas de vol : FileVault, BitLocker ou LUKS, avec une phrase de passe solide.

#Audit en 15 minutes : la procédure

Cette procédure enchaîne les contrôles dans l'ordre où ils révèlent le plus pour le moins d'effort. Gardez une capture ou une ligne de journal par étape : elle sert de preuve face à un client.

  1. 01
    Inventorier la chaîne
    Listez chaque programme qui touche vos prompts : moteur (Ollama, LM Studio), interface (Open WebUI, Jan), extensions d'éditeur, scripts Python. Ce qui n'est pas listé n'est pas contrôlé.
  2. 02
    Couper les fonctions distantes
    Désactivez les modèles cloud et la recherche web (OLLAMA_NO_CLOUD=1), retirez les clés d'API distantes, vérifiez Datalake sur Off dans GPT4All.
  3. 03
    Poser les variables
    Placez HF_HUB_DISABLE_TELEMETRY=1, DO_NOT_TRACK=1 et, une fois les modèles en cache, HF_HUB_OFFLINE=1 dans le profil du shell ; ajoutez les trois lignes anti-analytics à Open WebUI.
  4. 04
    Regarder le réseau
    Installez un pare-feu applicatif, lancez une session normale de dix minutes, puis relisez les domaines contactés. Lancez aussi les deux commandes lsof.
  5. 05
    Déplacer les dossiers
    Sortez conversations et modèles des dossiers synchronisés, chiffrez le disque et la destination des sauvegardes.
  6. 06
    Rejouer en mode avion
    Coupez la connexion et refaites la même session. Tout ce qui échoue est soit une fuite, soit une fonction cloud à retirer ; corrigez, puis recommencez jusqu'à ce que le test passe.

#La checklist récapitulative

☐ Fonctions cloud coupées
OLLAMA_NO_CLOUD=1, aucun modèle hébergé, aucune clé d'API distante, Datalake sur Off.
☐ Télémétrie désactivée
HF_HUB_DISABLE_TELEMETRY=1 et DO_NOT_TRACK=1 ; trois variables anti-analytics dans Open WebUI.
☐ Pare-feu applicatif actif
Little Snitch, GlassWire, OpenSnitch, ou ufw avec règle stricte, journal relu.
☐ Écoute vérifiée
127.0.0.1 pour Ollama, sauf exposition voulue et sécurisée.
☐ Modèles hors ligne
Après téléchargement, HF_HUB_OFFLINE=1 ; poids en GGUF ou safetensors, pas de pickle inconnu.
☐ Extensions revues
Code lu, endpoints vérifiés, permissions limitées.
☐ Dossiers hors synchronisation
Conversations et modèles exclus d'iCloud, OneDrive, Dropbox et des sauvegardes non chiffrées.
☐ Disque chiffré
FileVault, BitLocker ou LUKS.
☐ Test mode avion réussi
Une session complète sans Internet.

#Questions fréquentes sur la confidentialité d'un LLM local

FAQ
Un LLM local envoie-t-il mes données à l'éditeur ?+
Le modèle lui-même non : il ne fait que calculer. Ollama indique ne pas voir vos prompts en usage local, et LM Studio précise que messages, historiques et documents ne quittent pas votre machine avec des modèles locaux. Restent les fonctions annexes : modèles cloud, recherche web, mises à jour, plugins. Vérifiez-les une à une.
Comment vérifier qu'Ollama ne se connecte à rien ?+
Lancez lsof -nP -iTCP -sTCP:LISTEN pour voir l'adresse d'écoute (127.0.0.1:11434 par défaut), puis lsof -nP -i pendant une inférence pour repérer d'éventuelles connexions ESTABLISHED. Ajoutez un pare-feu applicatif pour conserver un historique des tentatives, et OLLAMA_NO_CLOUD=1 pour couper les fonctions distantes. Si une connexion apparaît, identifiez son domaine avant de conclure.
Comment désactiver la télémétrie de Hugging Face ?+
Placez HF_HUB_DISABLE_TELEMETRY=1 dans vos variables d'environnement. DO_NOT_TRACK=1 produit le même effet dans tout l'écosystème (transformers, diffusers, gradio). Pour interdire tout appel au Hub une fois les modèles en cache, ajoutez HF_HUB_OFFLINE=1. Ces variables sont lues à l'import de la bibliothèque : posez-les avant de lancer Python.
Faut-il un pare-feu en plus si l'outil dit ne rien envoyer ?+
Pour un usage personnel, ce n'est pas indispensable. Pour des données de clients ou sous NDA, oui : une déclaration d'éditeur n'est pas une preuve, et une mise à jour, un plugin ou une bibliothèque peuvent contacter un serveur. Le pare-feu applicatif transforme la confiance en constat, et son journal sert de trace.
Mes conversations sont-elles synchronisées avec iCloud ou Dropbox ?+
Cela dépend de l'endroit où l'application range son dossier de données. Si c'est sous Documents ou un dossier synchronisé, oui. Repérez le dossier dans les réglages de l'application, puis excluez-le de la synchronisation ou déplacez-le vers un emplacement non répliqué. Faites de même avec les sauvegardes, qui recopient l'historique, et chiffrez leur destination.
Le mode avion suffit-il à prouver que mon setup est local ?+
C'est le meilleur test simple : si votre session normale fonctionne sans réseau, aucun composant essentiel ne dépend d'un service distant. Il ne prouve pas l'absence de tentative d'envoi silencieuse, qui échoue sans se plaindre. Complétez avec un pare-feu applicatif qui journalise les tentatives, et relisez ce journal après une semaine d'usage réel plutôt qu'après un seul essai.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.