Projets
Latet a une seule configuration pour tout, config.yaml. Un projet peut la compléter de deux
façons :
| Où | Partagé | Ce qu’il peut faire | |
|---|---|---|---|
Le fichier du projet, latet.yaml |
dans le dépôt du projet | avec tous ceux qui y travaillent | seulement ajouter de la protection |
| Vos réglages pour le projet | dans votre config.yaml, sous projects: |
non | tout, y compris y désactiver Latet |
Le premier sert à ce dont toute l’équipe a besoin : les formats des codes propres au projet, les pays de ses clients, un profil plus strict. Le second sert à ce qui vous appartient : les noms de vos clients, les valeurs qui ne sont pas sensibles pour vous, un projet où vous ne voulez pas du tout de Latet.
Sur une machine connectée à un serveur Latet, le fichier du projet ne s’applique pas : le serveur ne
lit aucun fichier de la machine, et applique vos propres réglages et ceux qu’il partage. Dans un tel
projet, latet doctor et latet claude le disent. Pour y utiliser ses règles, importez le
latet.yaml dans votre tableau de bord, dans Règles avec Importer des règles. Voir
Ce qui reste sur la machine.
Dans quel projet se trouve une session
Section intitulée « Dans quel projet se trouve une session »Tout dépend du dossier dans lequel travaille l’agent.
- Claude Code : le plugin l’indique à Latet.
- Un agent que Latet lance (
latet claude,latet codex,latet opencode,latet gemini,latet copilot) : sa clé de lancement l’indique, là où l’agent en porte une. - Codex, OpenCode et Gemini CLI : ils nomment le dossier dans leurs requêtes.
- Tout autre client : il peut envoyer l’en-tête
x-latet-project: <folder>.
Une session dont le dossier est inconnu utilise vos réglages globaux.
Le projet d’un dossier est le dossier du latet.yaml le plus proche, en remontant du dossier jusqu’à
la racine de son dépôt git. S’il n’y en a pas, c’est le dépôt ; hors d’un dépôt, le dossier lui-même.
Seul le fichier le plus proche s’applique : un sous-dossier qui a son propre fichier est un projet à
part entière, et les deux ne sont pas combinés.
De confiance et déclarés
Section intitulée « De confiance et déclarés »Latet ne considère le projet d’une session comme de confiance que lorsqu’il le connaît par lui-même :
- Par le plugin de Claude Code, pour un dossier que Latet connaît comme projet (un dossier avec un
latet.yaml, ou avec vos propres réglages pour lui). Le plugin lie la session à ce projet ; chacun de ses appels à Latet maintient le lien, qui prend fin après 30 minutes sans appel. - Par une clé de lancement, pour un agent que Latet a lancé dans ce dossier.
Un dossier que seule la requête nomme (l’en-tête x-latet-project, ou le dossier de travail que
Codex, OpenCode et Gemini CLI écrivent dans leurs requêtes) est déclaré. Les règles d’un projet
déclaré qui ajoutent de la protection s’appliquent : ses termes, ses reconnaisseurs, un profil plus
strict. Ses assouplissements non : valeurs et motifs à ne jamais masquer, règles de secrets
désactivées, un profil ou une politique plus faible, data_tools, les consignes et les images du
relecteur local. Un projet déclaré où Latet est désactivé est refusé quand même, et une
exception de requête pour
un projet ne s’applique que là où son projet est de confiance. Le tableau de bord montre pour chaque requête
si son projet était de confiance ou déclaré (Projet déclaré), et comment son lancement a été jugé.
- Avant que le plugin lie une session. Claude Code fait quelques appels au démarrage, avant le premier appel du plugin à Latet : sa liste de modèles, et sur Bedrock ses premières requêtes. Ils sont jugés avec vos seules règles, ni les règles ajoutées par le projet ni ses assouplissements.
- Ce que le lien laisse entrer. Un lien porte sur l’identifiant d’une session : une requête
Anthropic Messages qui porte l’identifiant d’une de vos sessions actives liée par le plugin est jugée
avec ce projet, assouplissements et exceptions compris, quel que soit votre programme qui l’envoie.
Elle est quand même lue par la vérification finale et jamais réécrite, et les requêtes d’une autre
personne ne l’atteignent jamais. Une session lancée par
latet claudedemande au contraire sa clé de lancement : son identifiant seul n’obtient aucun assouplissement du projet.
Les clés de lancement
Section intitulée « Les clés de lancement »Quand Latet lance un agent, il ouvre un lancement pour le dossier : une clé secrète tirée pour ce seul
lancement, liée au projet du dossier et à vous. L’agent l’envoie avec ses requêtes dans un en-tête,
x-latet-launch-key, que Latet vérifie et retire avant que quoi que ce soit soit transmis,
enregistré ou journalisé ; Latet n’en garde qu’un hachage à clé. La clé prend fin avec le lancement :
quand l’agent se termine, ou quand la commande qui l’a lancé est arrêtée.
| Commande | Comment la clé voyage |
|---|---|
latet claude |
ANTHROPIC_CUSTOM_HEADERS, dans le fichier de réglages privé de cette session |
latet codex |
env_http_headers d’un fournisseur de model_providers, à partir de Codex 0.115 ; aucune sur les fournisseurs intégrés de Codex (connecté avec ChatGPT, ou le fournisseur d’OpenAI) |
latet opencode |
options.headers de chaque fournisseur qu’il redirige |
latet gemini |
GEMINI_CLI_CUSTOM_HEADERS |
latet copilot |
COPILOT_PROVIDER_HEADERS, vers un fournisseur compatible OpenAI par Chat Completions ; aucune par Responses, l’API d’Anthropic ou un WebSocket |
latet run |
aucune : un programme qu’il lance n’a aucun moyen d’en porter une |
La clé s’ajoute aux en-têtes que l’agent envoie déjà : les vôtres restent tels que vous les avez
écrits, et demandent quand même une exception à eux. Un agent qui démarre sans clé en apprend la
raison en une phrase, comme Latet: Codex older than 0.115 has no way to carry a launch key, so this session's project settings only add protection: their loosenings do not apply., et son projet est
déclaré. Un dossier qui n’est pas l’un de vos projets ne demande pas de clé.
- Un secret pour Latet. Dans la sortie d’un outil ou dans un message, une clé valide est masquée comme le jeton de Latet ; là où Latet ne peut pas la masquer (une requête qu’il ne fait que vérifier), la requête est refusée, avec des mots qui disent de revenir en arrière ou de commencer une nouvelle conversation.
- Détenue, pas liée à un processus. Tout programme qui détient la clé compte comme ce lancement. Il tourne sous le même utilisateur, et Latet ne prétend pas distinguer les programmes.
- Inconnue, terminée ou celle d’un autre. Une requête avec une clé que Latet ne connaît pas (son daemon a redémarré, par exemple) est jugée déclarée, jamais refusée pour cela. Une clé dont le lancement a pris fin, ou envoyée pour un autre projet ou par une autre personne, est refusée.
- Dans l’adresse. Sur un ordinateur, Latet accepte aussi la clé au début du chemin de l’adresse, une forme qu’aucune commande de lancement n’utilise ; un serveur Latet la refuse.
Le tableau de bord montre comment le lancement de chaque requête a été jugé : Lancé par Latet, clé
vérifiée, Lancé par Latet, clé manquante (un agent lancé par Latet dont la requête est arrivée sans
une clé que Latet peut vérifier : jugé déclaré), Lié par le plugin Claude Code (un Claude Code
configuré durablement) ou Non lancé par Latet (déclaré). latet doctor nomme chaque agent lancé par Latet vu sans sa clé, avec sa
version.
Le fichier du projet
Section intitulée « Le fichier du projet »latet project init en écrit un pour démarrer, à la racine du dépôt. La page Règles du tableau
de bord l’écrit aussi : choisissez le projet dans le sélecteur en haut. Ses termes, reconnaisseurs et
politiques sont des lignes des tableaux Termes, Reconnaisseurs et Politiques, marquées
latet.yaml, et se modifient dans leur panneau ; un nouveau va dans le fichier quand le Enregistrer
dans de son panneau dit latet.yaml. L’onglet Fichier du dépôt contient le reste du fichier, et
le crée.
# yaml-language-server: $schema=https://docs.latet.ai/project.schema.jsonprofile: maxid_regions: [DE, FR]terms: - {value: Project Falcon, type: PROJECT}recognizers: - name: badge description: Badge numbers, two letters, a dash and six digits pattern: '\bBD-\d{6}\b' examples: match: ['badge BD-381904'] no_match: ['BD-12']policies: {EMAIL: redact}Une valeur ne remplace la vôtre que si elle est plus stricte :
profile: secrets, puis balanced, puis max (qui y active le mode données strict, sauf sidataest défini) ;policies: allow, puis mask, puis redact, par rapport à la politique en vigueur (celle d’un reconnaisseur comprise) ;include_private_ips: seulementtrue;ner: seulementauto;data: seulementstrict;images: seulement moins d’images,maskpuisblock;ocr: seulementauto;dump_guard: seulement plus bas (voir Données de production) ;llm_review: off, puis background, puis inline, quand le relecteur est activé (voir Relecteur local).
Une liste s’ajoute à la vôtre : pii, id_regions, phone_regions, terms, recognizers,
data_files, data_hosts et fields (seulement les règles qui masquent). Un reconnaisseur de vos
réglages pour le projet dont le nom ou le type est déjà utilisé par un des vôtres globaux est
désactivé. Un reconnaisseur du fichier portant le nom ou le type d’un des vôtres, global ou pour le
projet, s’applique tout de même, sous un nom ou un type qui lui est propre (badge-repo,
BADGE_REPO) : les deux s’appliquent ; à type égal, les deux types prennent la plus stricte des
deux politiques ; et la page du projet l’indique, avec le nom et le type utilisés. Pour un champ, la
plus stricte de votre règle et de celle du fichier s’applique, la vôtre à égalité.
Ce qui y laisserait des valeurs en clair est mis de côté : un reconnaisseur qui laisse passer ce
qu’il trouve (policy: allow), et un reconnaisseur, un terme ou une règle de champ d’un type laissé
en clair dans ce dossier, par vos politiques ou vos réglages pour le projet. latet project check
et le tableau de bord disent lequel, et où le mettre à la place : dans vos réglages pour le projet,
où une modification qui réduit la protection attend votre approbation. Le tableau de bord n’écrit
pas une telle entrée dans le fichier ; celle que le fichier contient déjà reste, pour qui ne laisse
pas passer son type.
Ce qu’un fichier de dépôt ne peut pas régler est ignoré : les valeurs et les motifs à ne jamais
masquer, les règles de secrets désactivées, les outils que couvre le mode données strict
(data_tools), Latet désactivé, le Relecteur en direct, les consignes pour le relecteur local, le
fait qu’il voie les images, et les réglages de l’ensemble de Latet (port, history, identity…).
latet project check et latet project show listent ce qui est ignoré et pourquoi. Un dépôt que vous
clonez ne peut pas réduire votre protection.
À savoir sur ce fichier :
- Il peut contenir jusqu’à 500 termes et 100 reconnaisseurs, en 256 Ko au plus.
- Un fichier de plus de 20 000 éléments YAML (clés, valeurs, et les listes et tables qui les
entourent ; environ quatre fois ce que contient un fichier complet de 500 termes et
100 reconnaisseurs) n’est pas valide : rien de ce qu’il contient ne s’applique, et
latet project checkle dit. - Un fichier illisible n’a aucun effet, et Latet continue de fonctionner.
- Latet relit le fichier quand il change : il n’y a rien à recharger.
- Les termes du fichier sont lisibles par tous ceux qui lisent le dépôt. Mettez plutôt les noms de vos clients dans vos propres réglages.
latet project check se termine avec le code 1 quand quelque chose dans le fichier est ignoré ou
qu’un exemple échoue, et avec le code 2 quand il n’y a pas de fichier ou qu’il ne peut pas être lu : une tâche de CI peut
ainsi garder le fichier propre. Son JSON Schema (aussi
latet config schema --project) permet aux éditeurs de le compléter et de le vérifier.
Vos réglages pour un projet
Section intitulée « Vos réglages pour un projet »Dans config.yaml :
projects: - path: C:\Users\you\dev\acme terms: - {value: Acme Logistica, type: CLIENT} allow_values: [acme-dev]Latet garde le dossier sous une forme canonique : sous Windows avec des barres obliques inverses et
une lettre de lecteur en majuscule, et sans séparateur final (C:/work/shop/ est gardé comme
C:\work\shop). L’identifiant du projet ne change pas.
Ils s’appliquent après le fichier du projet, et peuvent aussi l’assouplir, dans une session dont Latet considère le projet comme de confiance :
- les valeurs et les motifs à ne jamais masquer ;
- les règles de secrets désactivées ;
- un profil ou une politique plus faible que le réglage global ;
- des champs laissés en clair en mode données strict, le mode données strict désactivé
(
data: normal), des images envoyées, le garde-fou anti-extraction relevé ou désactivé.
Le texte des images non lu dans le projet (ocr: off) y arrête toute requête qui porte une image.
Seuls vos propres réglages activent ou désactivent le Relecteur en direct dans un
projet (live_review), et y donnent des consignes au relecteur local (review_guidance, voir
Vos consignes).
Une entrée s’applique à son dossier et à tout ce qu’il contient ; quand deux entrées correspondent, le
dossier le plus proche l’emporte. latet rules add FILE --project FOLDER y ajoute des reconnaisseurs.
Sur la page Règles du projet dans le tableau de bord, chaque liste (termes, reconnaisseurs, valeurs à ne jamais masquer, politiques) est un tableau de toutes les règles qui s’appliquent dans le projet, et chaque ligne dit d’où elle vient : les vôtres, pour le projet, latet.yaml, ou globale. Une règle se modifie là où elle naît : les vôtres dans les tableaux du projet, les globales dans les règles globales (le panneau d’une ligne globale est en lecture seule, avec un lien vers elles). Ajouter écrit dans vos propres réglages pour le projet.
Secrets uniquement, ou Latet désactivé, dans un projet
Section intitulée « Secrets uniquement, ou Latet désactivé, dans un projet »Sur la page Règles du projet dans le tableau de bord, dans l’onglet Protection, Protection
vaut Activée, Secrets uniquement ou Désactivée. Secrets uniquement y masque les secrets et vos termes, et
laisse passer les données personnelles et votre identité : c’est le profil secrets, dans vos propres
réglages pour le projet.
latet project off désactive Latet dans le projet du dossier courant (ou du dossier indiqué).
Protection : Désactivée fait de même. Latet n’envoie alors aucune requête du projet :
- chacune est refusée, en HTTP et par un WebSocket, que le projet soit de confiance ou déclaré, avec des mots qui disent comment y réactiver Latet ou joindre directement le fournisseur (Passer à la 0.11) ;
latet project offet l’interrupteur du tableau de bord le disent avant de le désactiver ;- le tableau de bord marque ces échanges Latet désactivé.
Pour laisser passer les données personnelles dans un projet, choisissez Secrets uniquement : ses requêtes continuent de partir, leurs secrets masqués.
latet project on le réactive. Seuls vos propres réglages peuvent le désactiver, jamais un fichier de
projet. Si c’est un agent qui le désactive, ou vous à la main dans config.yaml, le changement attend
d’abord votre approbation dans le tableau de bord (voir
Les agents et vos réglages).
Les dépôts dont Latet se souvient
Section intitulée « Les dépôts dont Latet se souvient »Latet se souvient des dossiers des 2 000 derniers dépôts dotés de leur propre latet.yaml qu’il a
vus, dans repositories.json dans son dossier de données. Ainsi, une modification de config.yaml
qui réduirait la protection seulement là où le fichier d’un projet est plus strict attend votre
approbation, même dans un dépôt qu’aucune conversation n’a atteint depuis le démarrage du daemon.
Leurs fichiers sont relus :
- à un rechargement (
latet reload, ou une commande qui modifie vos réglages) dont la modification pourrait réduire la protection dans un dépôt ; - à un démarrage qui trouve
config.yamlmodifié de cette façon depuis les réglages que vous avez approuvés en dernier ; - à une importation dans le tableau de bord.
Une modification de ce qui ne protège rien dans un projet (le port, l’historique et sa durée de conservation), ou une qui ne fait qu’ajouter de la protection (un terme), n’en lit aucun. Un processus auxiliaire les lit, avec 10 secondes pour tous et 2 pour chacun. Un dépôt qui ne peut pas être lu pour le moment (sur un partage réseau qui ne répond pas, ou un fichier que vous n’avez pas le droit de lire) n’est jamais pris pour un dépôt vide : une modification qui pourrait en réduire la protection ne s’applique pas et n’attend pas non plus votre approbation, et le rechargement le dit.
Pour trouver un tel dépôt, et le retirer de la liste :
latet repositories # each repository remembered, with its statelatet repositories forget C:\dev\old-app # takes one out of the listlatet repositories présente chacun comme read (lu), nothing to weigh (rien à peser : absent pour
le moment, pas un fichier ordinaire, pas valide) ou unavailable (indisponible : illisible pour le
moment, pas lu à temps), jamais ce que contient son fichier. latet repositories forget réduit la
protection : il refuse donc de s’exécuter dans un agent, et vous demande confirmation avant d’en
oublier un. Lancez-le vous-même, dans un terminal à vous. Le dépôt est de nouveau retenu, et pesé,
dès qu’une conversation l’atteint.
Quand repositories.json lui-même ne peut pas être lu (un dossier, un lien ou un fichier plus grand
que la liste ne peut l’être se trouve à sa place), un changement qui pourrait baisser la protection
dans un dépôt ne s’applique pas et ne vous attend pas non plus, et latet repositories le dit. Si
cela dure, déplacez repositories.json ailleurs, dans un terminal à vous : Latet retient alors de
nouveau les dépôts à mesure que les conversations les atteignent.
Commandes
Section intitulée « Commandes »| Commande | Ce qu’elle fait |
|---|---|
latet project init [FOLDER] [--suggest] |
Écrit un latet.yaml pour démarrer ; --suggest ajoute des brouillons de reconnaisseurs pour les formats qu’aucune règle n’y couvre |
latet project show [FOLDER] [--json] |
Ce qui s’applique dans un projet, et ce qui est ignoré |
latet project check [FOLDER] |
Vérifie le fichier du projet, reconnaisseurs compris |
latet project off / on [FOLDER] |
Désactive Latet dans un projet, où ses requêtes sont alors refusées, ou le réactive |
latet repositories |
Les dépôts dont Latet se souvient, chacun avec son état |
latet repositories forget FOLDER |
En retire un de la liste (à vous seul : refuse un agent) |
latet rules add FILE --repo FOLDER |
Ajoute des reconnaisseurs au fichier du projet au lieu de config.yaml (--project : à vos réglages pour le projet) |
latet config schema --project |
Affiche le JSON Schema du fichier du projet |
Bon à savoir
Section intitulée « Bon à savoir »- Le coffre-fort est le même pour tous les projets. Une valeur masquée une fois, dans n’importe quel projet, est ensuite masquée partout où elle apparaît.
- Certains réglages restent globaux : le port, l’historique, votre identité et le relecteur du mode auto de Claude Code.
latet rules add --reporéécritlatet.yaml: seules ses premières lignes de commentaires sont conservées.- Dans Docker :
- vos propres réglages fonctionnent, d’après le chemin du dossier ;
- le fichier du projet n’est lu que si le dossier du projet est monté dans le conteneur au même chemin.
© 2026 Emanuele Casabona · TVA IT02293040990 · Politique de confidentialité · Mentions légales · latet.ai