Projekte
Latet hat eine einzige Konfiguration für alles, config.yaml. Ein Projekt kann sie auf zwei Wegen
ergänzen:
| Wo | Geteilt | Was damit möglich ist | |
|---|---|---|---|
Die Projektdatei, latet.yaml |
im Repository des Projekts | mit allen, die daran arbeiten | nur Schutz hinzufügen |
| Ihre Einstellungen für das Projekt | in Ihrer config.yaml, unter projects: |
nein | alles, auch Latet dort ausschalten |
Der erste Weg ist für das, was das ganze Team braucht: die Formate der eigenen Codes des Projekts, die Länder seiner Kunden, ein strengeres Profil. Der zweite ist für das, was nur Sie betrifft: die Namen Ihrer Kunden, Werte, die für Sie nicht sensibel sind, ein Projekt, in dem Sie Latet gar nicht wollen.
Auf einem Rechner, der mit einem Latet-Server verbunden ist, gilt die Projektdatei nicht: Der Server
liest keine Datei des Rechners und wendet Ihre eigenen Einstellungen und die Einstellungen an, die
er teilt. In einem solchen Projekt sagen latet doctor und latet claude das. Um die Regeln des
Projekts dort zu verwenden, importieren Sie seine latet.yaml in Ihrem Dashboard, unter Regeln
mit Regeln importieren. Siehe
Was auf dem Rechner bleibt.
Zu welchem Projekt eine Sitzung gehört
Abschnitt betitelt „Zu welchem Projekt eine Sitzung gehört“Das entscheidet der Ordner, in dem der Agent arbeitet.
- Claude Code: Das Plugin teilt ihn Latet mit.
- Ein Agent, den Latet startet (
latet claude,latet codex,latet opencode,latet gemini,latet copilot): Sein Startschlüssel teilt ihn mit, wo der Agent einen mitführt. - Codex, OpenCode und Gemini CLI: Sie nennen den Ordner in ihren Anfragen.
- Jeder andere Client: Er kann den Header
x-latet-project: <folder>senden.
Eine Sitzung, deren Ordner unbekannt ist, verwendet Ihre globalen Einstellungen.
Das Projekt eines Ordners ist der Ordner der nächstgelegenen latet.yaml, gesucht vom Ordner
aufwärts bis zur Wurzel seines Git-Repositorys. Gibt es keine, ist es das Repository; außerhalb
eines Repositorys der Ordner selbst. Es gilt nur die nächstgelegene Datei: Ein Unterordner mit
eigener Datei ist ein eigenes Projekt, und die beiden werden nicht kombiniert.
Vertrauenswürdig und behauptet
Abschnitt betitelt „Vertrauenswürdig und behauptet“Latet vertraut dem Projekt einer Sitzung nur, wenn es dieses selbst kennt:
- Über das Plugin von Claude Code, für einen Ordner, den Latet als Projekt kennt (einen mit einer
latet.yamloder mit Ihren eigenen Einstellungen dafür). Das Plugin bindet die Sitzung an dieses Projekt; jeder seiner Aufrufe an Latet hält die Bindung, die nach 30 Minuten ohne Aufruf endet. - Über einen Startschlüssel, für einen Agenten, den Latet in diesem Ordner gestartet hat.
Ein Ordner, den nur die Anfrage nennt (der Header x-latet-project oder der Arbeitsordner, den Codex,
OpenCode und Gemini CLI in ihre Anfragen schreiben), ist nur behauptet. Die Regeln eines
behaupteten Projekts, die Schutz hinzufügen, gelten: seine Begriffe, seine Erkennungsregeln, ein
strengeres Profil. Seine Lockerungen gelten nicht: Werte und Muster, die nie maskiert werden,
ausgeschaltete Regeln für geheime Werte, ein schwächeres Profil oder eine schwächere Richtlinie,
data_tools, die Hinweise und Bilder für den lokalen Prüfer. Ein behauptetes Projekt, in dem Latet
aus ist, wird trotzdem abgelehnt, und eine
Anfrageausnahme für ein
Projekt gilt nur dort, wo sein Projekt vertrauenswürdig ist. Das Dashboard zeigt für jede Anfrage, ob
ihr Projekt vertrauenswürdig oder nur behauptet war (Projekt nur behauptet), und wie ihr Start
entschieden wurde.
- Bevor das Plugin eine Sitzung bindet. Claude Code macht beim Start einige Aufrufe, vor dem ersten Aufruf des Plugins an Latet: seine Modellliste und bei Bedrock seine ersten Anfragen. Sie werden nur mit Ihren eigenen Regeln entschieden, weder mit den hinzugefügten Regeln des Projekts noch mit seinen Lockerungen.
- Was die Bindung hereinlässt. Eine Bindung gilt der ID einer Sitzung: Eine Anthropic-Messages-
Anfrage mit der ID einer laufenden Sitzung von Ihnen, die das Plugin gebunden hat, wird mit diesem
Projekt entschieden, samt Lockerungen und Ausnahmen, welches Ihrer Programme sie auch sendet. Sie
wird trotzdem von der abschließenden Prüfung gelesen und nie umgeschrieben, und die Anfragen einer
anderen Person erreichen sie nie. Eine Sitzung, die
latet claudegestartet hat, braucht stattdessen ihren Startschlüssel: Ihre ID allein bekommt keine Lockerung des Projekts.
Startschlüssel
Abschnitt betitelt „Startschlüssel“Wenn Latet einen Agenten startet, öffnet es einen Start für den Ordner: einen geheimen Schlüssel, nur
für diesen Start gezogen, an das Projekt des Ordners und an Sie gebunden. Der Agent sendet ihn mit
seinen Anfragen in einem Header, x-latet-launch-key, den Latet prüft und entfernt, bevor irgendetwas
weitergesendet, aufgezeichnet oder protokolliert wird; Latet behält nur einen mit einem Schlüssel
gebildeten Hash davon. Der Schlüssel endet mit dem Start: wenn der Agent sich beendet oder wenn der Befehl, der ihn
gestartet hat, angehalten wird.
| Befehl | Wie der Schlüssel reist |
|---|---|
latet claude |
ANTHROPIC_CUSTOM_HEADERS, in der privaten Einstellungsdatei dieser Sitzung |
latet codex |
env_http_headers eines Anbieters aus model_providers, ab Codex 0.115; keiner bei den eingebauten Anbietern von Codex (mit ChatGPT-Anmeldung oder dem eigenen Anbieter von OpenAI) |
latet opencode |
options.headers jedes Anbieters, den es umleitet |
latet gemini |
GEMINI_CLI_CUSTOM_HEADERS |
latet copilot |
COPILOT_PROVIDER_HEADERS, an einen OpenAI-kompatiblen Anbieter über Chat Completions; keiner über Responses, die API von Anthropic oder einen WebSocket |
latet run |
keiner: Ein Programm, das es startet, kann keinen mitführen |
Der Schlüssel kommt zu den Headern hinzu, die der Agent ohnehin sendet: Ihre eigenen bleiben, wie Sie
sie geschrieben haben, und brauchen trotzdem eine eigene Ausnahme. Ein Agent, der ohne Schlüssel
startet, erfährt in einem Satz den Grund, etwa 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.,
und sein Projekt ist nur behauptet. Ein Ordner, der keines Ihrer Projekte ist, braucht keinen Schlüssel.
- Ein Geheimnis für Latet. In der Ausgabe eines Tools oder in einer Nachricht wird ein gültiger Schlüssel wie das eigene Token von Latet maskiert; wo Latet ihn nicht maskieren kann (eine Anfrage, die es nur prüft), wird die Anfrage abgelehnt, mit dem Hinweis, zurückzusetzen oder eine neue Unterhaltung zu beginnen.
- Besessen, nicht an einen Prozess gebunden. Jedes Programm, das den Schlüssel besitzt, zählt als dieser Start. Es läuft als derselbe Benutzer, und Latet gibt nicht vor, Programme auseinanderhalten zu können.
- Unbekannt, beendet oder fremd. Eine Anfrage mit einem Schlüssel, den Latet nicht kennt (sein Daemon wurde zum Beispiel neu gestartet), wird als nur behauptet entschieden, nie deswegen abgelehnt. Ein Schlüssel, dessen Start beendet ist, oder einer, der für ein anderes Projekt oder von einer anderen Person gesendet wird, wird abgelehnt.
- In der Adresse. Auf einem Rechner nimmt Latet den Schlüssel auch am Anfang des Pfads der Adresse an, eine Form, die kein Startbefehl verwendet; ein Latet-Server lehnt sie ab.
Das Dashboard zeigt, wie der Start jeder Anfrage entschieden wurde: Von Latet gestartet, Schlüssel
geprüft, Von Latet gestartet, Schlüssel fehlt (ein von Latet gestarteter Agent, dessen Anfrage ohne
einen Schlüssel kam, den Latet prüfen kann: als nur behauptet entschieden), Vom Claude-Code-Plugin
gebunden (ein dauerhaft eingerichtetes Claude Code) oder Nicht von Latet gestartet (nur
behauptet). latet doctor nennt
jeden von Latet gestarteten Agenten, der ohne seinen Schlüssel gesehen wurde, mit seiner Version.
Die Projektdatei
Abschnitt betitelt „Die Projektdatei“latet project init schreibt eine als Ausgangspunkt, in die Wurzel des Repositorys. Auch die Seite
Regeln im Dashboard schreibt sie: Wählen Sie das Projekt in der Auswahl oben. Ihre Begriffe,
Erkenner und Richtlinien sind Zeilen der Tabellen Begriffe, Erkenner und Richtlinien, markiert
mit latet.yaml, und werden in ihrem Bereich geändert; ein neuer Eintrag kommt in die Datei, wenn
Speichern in in seinem Bereich latet.yaml sagt. Der Tab Repository-Datei enthält den Rest der
Datei und legt sie an.
# 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}Ein Wert ersetzt Ihren nur, wenn er strenger ist:
profile: secrets, dann balanced, dann max (das dort den strikten Datenmodus einschaltet, soferndatanicht gesetzt ist);policies: allow, dann mask, dann redact, gemessen an der dort geltenden Richtlinie (auch der eigenen eines Erkenners);include_private_ips: nurtrue;ner: nurauto;data: nurstrict;images: nur weniger Bilder,mask, dannblock;ocr: nurauto;dump_guard: nur niedriger (siehe Produktionsdaten);llm_review: off, dann background, dann inline, wenn der Prüfer eingeschaltet ist (siehe Lokaler Prüfer).
Eine Liste wird zu Ihrer hinzugefügt: pii, id_regions, phone_regions, terms,
recognizers, data_files, data_hosts und fields (nur Regeln, die maskieren). Ein Erkenner
Ihrer Einstellungen für das Projekt, dessen Name oder Typ einer Ihrer globalen schon verwendet,
wird ausgeschaltet. Einer der Datei mit dem Namen oder dem Typ eines Ihrer Erkenner, global oder
für das Projekt, gilt trotzdem, unter einem eigenen Namen oder Typ (badge-repo, BADGE_REPO):
Beide gelten; bei demselben Typ nehmen beide Typen die strengere der beiden Richtlinien; und die
Seite des Projekts sagt es, mit dem Namen und dem Typ in Gebrauch. Für ein Feld gilt die strengere
von Ihrer Regel und der der Datei, bei gleicher Ihre.
Was dort Werte im Klartext ließe, wird beiseitegelegt: ein Erkenner, der durchlässt, was er
findet (policy: allow), und ein Erkenner, ein Begriff oder eine Feldregel mit einem Typ, der in
diesem Ordner im Klartext bleibt, durch Ihre Richtlinien oder Ihre Einstellungen für das Projekt.
latet project check und das Dashboard sagen, welche, und wohin sie stattdessen gehören: in Ihre
Einstellungen für das Projekt, wo eine Änderung, die den Schutz verringert, auf Ihre Freigabe
wartet. Das Dashboard schreibt einen solchen Eintrag nicht in die Datei; einer, den die Datei schon
enthält, bleibt, für alle, die seinen Typ nicht durchlassen.
Was eine Datei im Repository nicht festlegen darf, wird ignoriert: Werte und Muster, die nie
maskiert werden, ausgeschaltete Regeln für geheime Werte, die Tools, die der strikte Datenmodus
erfasst (data_tools), ein ausgeschaltetes Latet, der Live-Prüfer, Hinweise für den lokalen
Prüfer, ob er die Bilder sieht, und die Einstellungen von Latet als Ganzem (port, history,
identity…). latet project check und latet project show listen auf, was ignoriert wird und
warum. Ein Repository, das Sie klonen, kann Ihren Schutz nicht verringern.
Was Sie über die Datei wissen sollten:
- Sie darf bis zu 500 Begriffe und 100 Erkenner enthalten, in höchstens 256 KB.
- Eine Datei mit mehr als 20.000 YAML-Einträgen (Schlüssel, Werte und die Listen und Zuordnungen um
sie herum; etwa viermal so viele, wie eine volle Datei mit 500 Begriffen und 100 Erkennern enthält)
ist nicht gültig: Nichts darin gilt, und
latet project checksagt es. - Eine Datei, die sich nicht lesen lässt, hat keine Wirkung, und Latet arbeitet weiter.
- Latet liest die Datei neu, wenn sie sich ändert: Es gibt nichts neu zu laden.
- Begriffe in der Datei kann jeder lesen, der das Repository liest. Tragen Sie die Namen Ihrer Kunden stattdessen in Ihre eigenen Einstellungen ein.
latet project check beendet sich mit 1, wenn etwas in der Datei ignoriert wird oder ein Beispiel
fehlschlägt, und mit 2, wenn es keine Datei gibt oder sie sich nicht lesen lässt, sodass ein CI-Job
die Datei sauber halten kann. Mit ihrem JSON Schema (auch
latet config schema --project) können Editoren sie vervollständigen und prüfen.
Ihre Einstellungen für ein Projekt
Abschnitt betitelt „Ihre Einstellungen für ein Projekt“In config.yaml:
projects: - path: C:\Users\you\dev\acme terms: - {value: Acme Logistica, type: CLIENT} allow_values: [acme-dev]Latet speichert den Ordner in kanonischer Form: unter Windows mit umgekehrten Schrägstrichen und
großem Laufwerksbuchstaben, und ohne abschließendes Trennzeichen (C:/work/shop/ wird als
C:\work\shop gespeichert). Die ID des Projekts ändert sich nicht.
Diese Einstellungen gelten nach der Projektdatei und dürfen sie auch lockern, in einer Sitzung, deren Projekt Latet vertraut:
- Werte und Muster, die nie maskiert werden;
- ausgeschaltete Regeln für geheime Werte;
- ein schwächeres Profil oder eine schwächere Richtlinie als die globale;
- Felder, die im strikten Datenmodus im Klartext bleiben, ein ausgeschalteter strikter Datenmodus
(
data: normal), gesendete Bilder, ein höherer oder ausgeschalteter Dump-Schutz.
Wird der Text in Bildern dort nicht gelesen (ocr: off), bleibt jede Anfrage mit einem Bild im
Projekt stehen.
Nur Ihre eigenen Einstellungen schalten den Live-Prüfer in einem Projekt ein oder
aus (live_review) und geben dem lokalen Prüfer dort Hinweise (review_guidance, siehe
Ihre Hinweise).
Ein Eintrag gilt für seinen Ordner und alles darin; passen zwei Einträge, gewinnt der näher
gelegene Ordner. latet rules add FILE --project FOLDER fügt ihm Erkenner hinzu.
Auf der Seite Regeln des Projekts im Dashboard ist jede Liste (Begriffe, Erkenner, Werte, die nie maskiert werden, Richtlinien) eine Tabelle aller Regeln, die im Projekt gelten, und jede Zeile sagt, woher sie stammt: Ihre, für das Projekt, latet.yaml oder global. Eine Regel wird dort geändert, wo sie entsteht: Ihre in den Tabellen des Projekts, die globalen in den globalen Regeln (der Bereich einer globalen Zeile ist schreibgeschützt, mit einem Link dorthin). Hinzufügen schreibt in Ihre eigenen Einstellungen für das Projekt.
Nur Geheimnisse oder Latet aus, in einem Projekt
Abschnitt betitelt „Nur Geheimnisse oder Latet aus, in einem Projekt“Auf der Seite Regeln des Projekts im Dashboard steht Schutz im Tab Schutz auf Ein, Nur
Geheimnisse oder Aus. Nur Geheimnisse maskiert dort geheime Werte und Ihre Begriffe und lässt personenbezogene
Daten und Ihre Identität durch: das Profil secrets, in Ihren eigenen Einstellungen für das
Projekt.
latet project off schaltet Latet im Projekt des aktuellen Ordners aus (oder des angegebenen
Ordners). Dasselbe tut Schutz: Aus. Latet sendet dann keine Anfrage des Projekts:
- jede wird abgelehnt, über HTTP und über einen WebSocket, ob das Projekt nun vertrauenswürdig oder nur behauptet ist, mit einem Hinweis, wie man Latet dort einschaltet oder den Anbieter direkt erreicht (Umstieg auf 0.11);
latet project offund der Schalter im Dashboard sagen das, bevor sie es ausschalten;- das Dashboard markiert diese Austausche mit Latet aus.
Um in einem Projekt personenbezogene Daten durchzulassen, wählen Sie Nur Geheimnisse: Seine Anfragen gehen weiter hinaus, mit maskierten Geheimnissen.
latet project on schaltet es wieder ein. Nur Ihre eigenen Einstellungen können es ausschalten, nie
eine Projektdatei. Schaltet ein Agent es aus oder geschieht das von Hand in config.yaml, wartet
die Änderung zuerst im Dashboard auf Ihre Freigabe (siehe
Agenten und Ihre Einstellungen).
Die Repositorys, die Latet sich merkt
Abschnitt betitelt „Die Repositorys, die Latet sich merkt“Latet merkt sich die Ordner der letzten 2.000 Repositorys mit einer eigenen latet.yaml, die es
gesehen hat, in repositories.json in seinem Datenordner. So wartet eine Änderung der config.yaml,
die den Schutz nur dort verringern würde, wo die Datei eines Projekts strenger ist, auf Ihre
Freigabe, auch in einem Repository, das seit dem Start des Daemons keine Unterhaltung erreicht hat.
Ihre Dateien werden erneut gelesen:
- bei einem Neuladen (
latet reloadoder ein Befehl, der Ihre Einstellungen ändert), dessen Änderung den Schutz in einem Repository verringern könnte; - bei einem Start, der die
config.yamlseit den zuletzt freigegebenen Einstellungen so geändert vorfindet; - bei einem Import im Dashboard.
Eine Änderung dessen, was in einem Projekt nichts schützt (der Port, der Verlauf und wie lange er aufbewahrt wird), oder eine, die nur Schutz hinzufügt (ein Begriff), liest keine. Ein Hilfsprozess liest sie, mit 10 Sekunden für alle und 2 für jede. Ein Repository, das sich gerade nicht lesen lässt (auf einer Netzwerkfreigabe, die nicht antwortet, oder eine Datei, die Sie nicht lesen dürfen), gilt nie als eines ohne Inhalt: Eine Änderung, die seinen Schutz verringern könnte, gilt weder, noch wartet sie auf Sie, und das Neuladen sagt das.
So finden Sie ein solches Repository und nehmen es aus der Liste:
latet repositories # each repository remembered, with its statelatet repositories forget C:\dev\old-app # takes one out of the listlatet repositories zeigt jedes als read (gelesen), nothing to weigh (nichts abzuwägen: gerade
nicht da, keine normale Datei, nicht gültig) oder unavailable (nicht verfügbar: gerade nicht
lesbar, nicht rechtzeitig gelesen), nie den Inhalt seiner Datei. latet repositories forget
verringert den Schutz, verweigert daher die Ausführung in einem Agenten und fragt Sie, bevor es
eines vergisst: Führen Sie es selbst aus, in einem eigenen Terminal. Das Repository wird gemerkt und
wieder abgewogen, sobald eine Unterhaltung es erreicht.
Wenn sich repositories.json selbst nicht lesen lässt (an seiner Stelle liegt ein Ordner, ein Link
oder eine Datei, die größer ist, als die Liste sein darf), gilt eine Änderung, die den Schutz in
einem Repository verringern könnte, weder, noch wartet sie auf Sie, und latet repositories sagt
es. Bleibt es so, verschieben Sie repositories.json an einen anderen Ort, in einem eigenen
Terminal: Latet merkt sich die Repositorys dann wieder, sobald Unterhaltungen sie erreichen.
Befehle
Abschnitt betitelt „Befehle“| Befehl | Was er tut |
|---|---|
latet project init [FOLDER] [--suggest] |
Schreibt eine latet.yaml als Ausgangspunkt; --suggest fügt Entwürfe von Erkennern für die Formate hinzu, die dort keine Regel abdeckt |
latet project show [FOLDER] [--json] |
Was in einem Projekt gilt und was ignoriert wird |
latet project check [FOLDER] |
Prüft die Projektdatei, einschließlich der Erkenner |
latet project off / on [FOLDER] |
Schaltet Latet in einem Projekt aus, wo seine Anfragen dann abgelehnt werden, oder wieder ein |
latet repositories |
Die Repositorys, die Latet sich merkt, jedes mit seinem Zustand |
latet repositories forget FOLDER |
Nimmt eines aus der Liste (nur Ihre Sache: Es verweigert einen Agenten) |
latet rules add FILE --repo FOLDER |
Fügt Erkenner der Projektdatei statt config.yaml hinzu (--project: Ihren Einstellungen für das Projekt) |
latet config schema --project |
Gibt das JSON Schema der Projektdatei aus |
Gut zu wissen
Abschnitt betitelt „Gut zu wissen“- Der Tresor ist für alle Projekte derselbe. Ein Wert, der einmal maskiert wurde, in welchem Projekt auch immer, wird ab dann überall maskiert, wo er vorkommt.
- Manche Einstellungen bleiben global: der Port, der Verlauf, Ihre Identität und der Prüfer des Auto-Modus von Claude Code.
latet rules add --reposchreibtlatet.yamlneu: Nur ihre ersten Kommentarzeilen bleiben erhalten.- In Docker:
- Ihre eigenen Einstellungen funktionieren, anhand des Ordnerpfads;
- die Projektdatei wird nur gelesen, wenn der Ordner des Projekts im Container unter demselben Pfad eingebunden ist.
© 2026 Emanuele Casabona · USt-IdNr. IT02293040990 · Datenschutzerklärung · Impressum · latet.ai