EN

Richtlinienkonfiguration

In verwalteten Umgebungen kann ein Administrator korTTY über eine einzige TOML-Datei, kortty-policy.toml, die im Installationsverzeichnis abgelegt wird, einschränken oder vorkonfigurieren. Benutzer können es nicht ändern oder umgehen: Die Datei wird nur aus dem vom Administrator beschreibbaren Installationsordner gelesen, gesperrte Einstellungen werden ausgegraut mit dem Hinweis „Von Ihrer Organisation verwaltet“ angezeigt und die manuelle Bearbeitung von global-settings.xml wird beim nächsten Laden rückgängig gemacht. In diesem Kapitel wird erläutert, wo sich die Datei befindet, wie Regeln auf Benutzer, Gruppen und Server abzielen und alle verfügbaren Parameter anhand von Beispielen dokumentiert werden.

Note

Ohne kortty-policy.toml ändert sich nichts – korTTY verhält sich genauso wie zuvor. Bei der ausgelieferten Vorlage policy/kortty-policy.toml.example handelt es sich um eine vollständig kommentierte Vorlage, bei der alles deaktiviert ist.

Dateispeicherort und Sicherheitsmodell

korTTY lädt die Richtlinie ausschließlich aus dem Ordner policy/ seines Installationsverzeichnisses – dem Ordner, der auch die Anwendungs-JAR-Datei enthält – und niemals aus ~/.kortty/ oder einem anderen vom Benutzer beschreibbaren Speicherort. Eine kopierfertige Vorlage wird als policy/kortty-policy.toml.example geliefert; Kopieren Sie es nach kortty-policy.toml im selben Ordner und starten Sie korTTY neu (es gibt kein Hot-Reload).

Plattform Speicherort der Richtliniendatei
macOS /Applications/KorTTY.app/Contents/app/policy/kortty-policy.toml
Fenster C:\Program Files\KorTTY\app\policy\kortty-policy.toml
Linux (deb/rpm) /opt/kortty/lib/app/policy/kortty-policy.toml

Das Durchsetzungsmodell basiert auf den Dateiberechtigungen des Betriebssystems: Das Installationsverzeichnis darf nur von Administratoren beschreibbar sein, was für die oben genannten Speicherorte die Standardeinstellung ist. korTTY protokolliert zusätzlich eine Warnung, wenn die aktive Richtliniendatei vom aktuellen Benutzer beschreibbar ist. Während der Entwicklung (niemals in einer Paketinstallation) kann eine Richtlinie mit -Dkortty.policy.file=/path/to/policy.toml getestet werden.

Wenn die Datei existiert, aber nicht geparst werden kann oder einen ungültigen Wert enthält, startet korTTY im Fail-Safe-Sperrenmodus: Jede durch die Richtlinie steuerbare Funktion wird verweigert, keine Serververbindung ist erlaubt, jedes Einfügen in ein Terminal mit Zeilenumbruch verlangt eine Bestätigung, Programme können mit OSC 52 keinen Text in die Zwischenablage legen, die vorherige Sitzung wird beim Start nicht wiederhergestellt, die Ausgabe von Terminalfenstern wird dafür nicht gespeichert, und ein Startdialog benennt die Datei und die genaue Fehlerposition. Ein Tippfehler kann die Durchsetzung daher niemals stillschweigend deaktivieren. Eine einzige ungültige Regel verwirft die gesamte Datei; unbekannte Schlüssel erzeugen lediglich Warnungen im Protokoll, sodass eine für eine neuere korTTY-Version erstellte Richtlinie Benutzer einer älteren Version nicht sperrt. Dies gilt auch für [rule.ai-memory]: Ein unbekannter Schlüssel dort wird protokolliert und ignoriert, prüfen Sie daher das Protokoll, nachdem Sie diese Tabelle geändert haben.

Benutzer, Gruppen und Regelpriorität

Regeln zielen auf den aktuellen Anmeldenamen des Betriebssystems ab (entspricht Kleinbuchstaben). Die Gruppenmitgliedschaft stammt aus zwei Quellen gleichzeitig: Gruppen, die in der Tabelle [groups] der Richtlinie definiert sind, und den Gruppenmitgliedschaften des Benutzers auf Betriebssystemebene. Auf in die Domäne eingebundenen Windows-Computern umfassen die Betriebssystemgruppen Active Directory-Gruppen, sodass Regeln direkt auf AD-Gruppen abzielen können – sowohl vollständig qualifiziert (ACME\Operations) als auch als bloßer Name (operations) – ohne dass eine Verzeichnisserverkonfiguration erforderlich ist.

Jeder [[rule]]-Block benennt optional users und/oder groups; Eine Regel, die keine Benennung vornimmt, gilt für jeden Benutzer. Pro Einstellung gewinnt die spezifischste Stufe, die sie festlegt: Benutzer schlägt Gruppe schlägt alle. Das ist das bekannte Gruppenrichtlinienmuster: Sperren Sie alles in einer Grundregel für alle und lockern Sie dann die individuellen Einstellungen für eine vertrauenswürdige Gruppe. Wenn mehrere Regeln derselben Ebene denselben Schlüssel festlegen, gilt der restriktivste Wert (deny über read-only über confirm über allow); Gemäß den Serverregeln muss eine Verbindung alle geltenden Einschränkungen der Gewinnerstufe erfüllen. Die Reihenfolge der Regeln in der Datei hat keine Bedeutung.

[meta]
schema-version = 1
organization = "ACME Corp"

[groups]
devs = ["alice", "bob"]

[[rule]]                              # applies to ALL users
name = "company-baseline"
  [rule.features]
  ai-agent = "deny"

[[rule]]                              # group tier: relaxes the baseline for ops
name = "ops-exception"
groups = ["ops", "ACME\\Operations"]  # policy group OR OS/AD group
  [rule.features]
  ai-agent = "allow"
  ai-agent-execution = "confirm"

[[rule]]                              # user tier: beats eve's group
users = ["eve"]
  [rule.features]
  ai-agent = "deny"

Server-Zugriffskontrolle

Die [rule.servers]-Tabelle schränkt ein, zu welchen Servern ein Benutzer eine Verbindung herstellen darf – als Zulassungsliste (mode = "allow": nur aufgelistete Server sind erreichbar) oder als Sperrliste (mode = "deny": aufgelistete Server sind blockiert). Die Einschränkung wird zentral für jeden Verbindungspfad durchgesetzt: gespeicherte Verbindungen, QuickConnect, geteilte Panes (mit neuer Verbindung oder zum selben Server), Sitzungswiederherstellung, SFTP, von Teamwork freigegebene Verbindungen, KI-Schwarmziele und geplante Jobs, einschließlich des Jump-Hosts einer Verbindung. Blockierte Verbindungen bleiben im Connection-Manager sichtbar, werden jedoch mit einer Sperrmarkierung ausgegraut und bei jedem Verbindungsversuch wird eine eindeutige Richtlinienmeldung angezeigt.

Gruppe öffnen in der Schnellverbindung überspringt jede Verbindung der Gruppe, deren Server oder Jump-Server gesperrt ist, und nennt sie alle in einer Richtlinienmeldung; die übrigen Verbindungen der Gruppe öffnen sich weiterhin. Verbinden im Connection-Manager, Duplizieren an einem Tab und Geschlossenen Tab wieder öffnen prüfen die Richtlinie, bevor sie nach einem Passwort, einem temporären SSH-Schlüssel oder dem Master-Passwort fragen, und ein offener Tab prüft sie bei jedem Verbindungs- und Neuverbindungsversuch erneut, weil das Bearbeiten einer gespeicherten Verbindung auch die bereits daraus geöffneten Tabs ändert. Zeigt ein Tab nach einer solchen Änderung auf einen gesperrten Server oder Jump-Server, zeigt sein Terminal die Richtlinienmeldung, und korTTY versucht es nicht weiter, auch nicht per automatischer Neuverbindung.

Lokale Shells und serielle Verbindungen haben keinen Server und werden nicht gegen [rule.servers] geprüft; serielle Ports werden stattdessen durch serial-connections unter [rule.features] geregelt.

Muster stimmen genau mit der Hostzeichenfolge überein, wie sie in der Verbindung konfiguriert ist – korTTY löst DNS nie für Richtlinienprüfungen auf, daher sind Hostnamen und IP-Adressen separate Namespaces: Wenn ein Server in beide Richtungen erreichbar ist, listen Sie beide auf.

Musterform Beispiel Entspricht
Genauer Hostname db01.acme.com dieser Host, ohne Berücksichtigung der Groß-/Kleinschreibung, jeder Port
Hostname-Glob *.prod.acme.com, web-??.acme.com * = beliebige Zeichen, ? = ein Zeichen
Host mit Port vault.acme.com:22 nur Verbindungen zu diesem Port
Einzelne IP-Adresse 192.168.10.42, 2001:db8::1 , die Adresse (IPv4 oder IPv6)
IP mit Port 192.168.10.42:22, [2001:db8::1]:22 IPv6-Ports erfordern die Halterungsform
CIDR-Netzwerk 10.99.0.0/16, 2001:db8::/32 jede Adresse im Netzwerk
IP-Bereich 10.20.0.100-10.20.0.199 inklusive Von–Bis-Bereich
[[rule]]
  [rule.servers]
  mode  = "deny"
  hosts = ["*.prod.acme.com", "vault.acme.com:22", "192.168.10.42", "10.99.0.0/16", "10.20.0.100-10.20.0.199"]

Parameterreferenz

[meta]

Schlüssel Typ Werte Erforderlich Wirkung
schema-version ganze Zahl 1 Ja Abgelehnt (Sperrung), wenn dieser korTTY die Version nicht versteht
organization Zeichenfolge Freitext Nein Wird in jedem Hinweis und Dialog „Von Ihrer Organisation verwaltet“ angezeigt

[groups]

Schlüssel Typ Wirkung
<group-name> Array von Benutzernamen Definiert eine Richtliniengruppe; Regeln, die auf den Namen verweisen, zielen auf seine Mitglieder ab. OS/AD-Gruppen passen automatisch zusammen und benötigen hier keinen Eintrag

[[rule]] Bereich

Schlüssel Typ Wirkung
name Zeichenfolge Optionale Bezeichnung, die in Protokollnachrichten verwendet wird
users Array von Benutzernamen Zielt auf die aufgelisteten Betriebssystem-Anmeldenamen (Benutzerebene)
groups Array von Gruppennamen Zielt auf Mitglieder von Richtliniengruppen und/oder OS/AD-Gruppen (Gruppenebene) ab; Eine Regel mit weder users noch groups gilt für alle

[rule.servers]

Schlüssel Typ Werte Wirkung
mode Zeichenfolge allow, deny Semantik der Zulassungs- oder Ablehnungsliste für hosts
hosts Array von Mustern siehe Tabelle oben Nicht leere Liste von Servermustern

[rule.features]

Schlüssel Typ Werte Beschränkt
ai Zeichenfolge allow, deny Hauptschalter: deny deaktiviert alle KI-Funktionen auf einmal, und geplante KI-Agent- und KI-Swarm-Jobs enden als blockiert, bevor sie sich verbinden
ai-agent Zeichenfolge allow, deny KI-Agent (Menü, Terminal-Kontextmenü, Tastaturkürzel, Headless-Job-Ausführungen). deny blockiert außerdem geplante KI-Agent- und KI-Swarm-Jobs, bevor sie sich verbinden, weil Swarm-Agenten KI-Agenten sind
ai-chat Zeichenfolge allow, deny KI-Chat, gespeicherte Chats und die Terminalauswahl-KI-Aktionen. deny graut außerdem Einfügen und Ausführen in den Codeblöcken eines Chats aus
ai-swarm Zeichenfolge allow, deny KI-Swarm, einschließlich geplanter Swarm-Jobs, die als blockiert enden, bevor sie sich verbinden
ai-planning Zeichenfolge allow, deny KI-Planung
teamwork Zeichenfolge allow, deny Synchronisierung freigegebener Teamwork-Verbindungen (Dienst ist nicht gestartet, Menü gesperrt)
plugins Zeichenfolge allow, deny Laden des Plugins und Plugins-Menü (z. B. Terminaleffekte)
session-journal Zeichenfolge allow, deny The session journal: Erfassung, Journalleiste, Manager, Viewer und Exporte. Nicht angekettet ai – Auch wenn die KI verweigert wird, zeichnet das Journal immer noch Rohaktivitäten auf
control-api Zeichenfolge allow, deny Die Steuerungs-API und ihr Client kortty-cli: deny beendet den Listener, sperrt das Kontrollkästchen in den Einstellungen und erzwingt die Einstellung aus. Nicht an ai gekoppelt – die API ist lokale Automatisierung, keine KI-Funktion
terminal-triggers Zeichenfolge allow, deny Hervorhebungsregeln, die eine Aktion auslösen, wenn ihr Muster in der Terminalausgabe erscheint (eine Desktop-Benachrichtigung oder das Ausführen eines Snippets im Bereich): deny stoppt jede solche Aktion, auch ein Snippet, das der Benutzer für eine Verbindung bereits erlaubt hat, sperrt Aktionen von Hervorhebungsregeln ausführen (Benachrichtigungen, Snippets) unter Einstellungen → Terminal in ausgeschalteter Stellung und hindert den Regelsatz-Editor daran, einer Regel eine Aktion zu geben. Die Hervorhebung von Schlüsselwörtern selbst ist nicht betroffen. allow sperrt die Einstellung eingeschaltet
multi-exec string allow, deny Eingabe in mehrere Terminals gleichzeitig: Multi-Exec über Tabs und Fenster hinweg und der Broadcast-Modus eines Tabs. deny sperrt die Einträge zum Einbeziehen unter Ansicht → Multi-Exec, Ansicht → Bereiche → Broadcast an alle Bereiche dieses Tabs, die Einträge für Multi-Exec und Broadcast-Modus in den Kontextmenüs von Tab, Bereich und Dashboard sowie ihre Einträge in der Befehlspalette und ihre Tastenkürzel; kein Bereich kann von irgendwo aus beitreten. Multi-Exec beenden und das Ausschalten des Broadcast-Modus funktionieren weiterhin. Es gibt kein Steuerelement in den Einstellungen, daher ändert allow nichts
file-transfer string allow, deny Kopieren von Dateien zwischen diesem Computer und einem Server. deny graut im SFTP-Manager die Schaltflächen Hochladen und Herunterladen sowie Wiederholen in der Übertragungsliste aus, weist Ziehvorgänge auf eines der beiden Panels zurück, die auf den Server oder vom Server kopieren würden, verhindert, dass Serverdateien aus dem Fenster gezogen werden, weist auf einen Terminalbereich gezogene Dateien schon beim Ziehen zurück, graut im Snippet-Manager Als Datei(en) ins Terminal-Verzeichnis kopieren und Ordner ins Terminal-Verzeichnis kopieren für SSH-Tabs aus, graut die Schaltflächen zum Hoch- und Herunterladen in der Seitenleiste Remote-Dateien des Terminals aus und weist Ablagen darauf und Ziehvorgänge daraus zurück, und lässt die SFTP-Aktionen Hochladen, Herunterladen und Synchronisieren sowie die rsync-Aktion des JobSchedulers mit der Richtlinienmeldung fehlschlagen, bevor sie eine Verbindung aufbauen. Das Öffnen des SFTP-Managers (auch mit SFTP hier öffnen über die Sitzung eines Terminals), das Durchsuchen (auch in der Seitenleiste Remote-Dateien) und reine Server-Operationen (Umbenennen, Löschen, Berechtigungen, Eigentümer, Archive, Suche, Kopieren auf dem Server) funktionieren weiterhin, und das Laden einer Datei in den Snippet-Editor unterliegt weiterhin load-into-snippet-editor. In externem Editor bearbeiten braucht eine lokale Kopie, daher graut deny es ebenfalls aus. Befehle wie scp oder rsync, die in ein Terminal eingegeben werden, kann korTTY nicht blockieren. Es gibt kein Steuerelement in den Einstellungen, daher ändert allow nichts
sftp-sudo-edit string allow, deny Serverdateien als root bearbeiten im SFTP-Manager. deny graut Als root bearbeiten (sudo)... im Rechtsklickmenü und im Remote-Menü Bearbeiten aus. Die Funktion ist außerdem ausgegraut, solange file-transfer verweigert wird oder load-into-snippet-editor auf read-only oder deny steht, weil eine Bearbeitung als root immer eine lokale Kopie braucht und immer zurückschreibt. Es gibt kein Steuerelement in den Einstellungen, daher ändert allow nichts
job-webhooks Zeichenfolge allow, deny Webhook-Benachrichtigungen des JobSchedulers an Slack, Teams oder einen generischen JSON-Empfänger. deny stoppt jede Webhook-Zustellung eines Laufs und jede Testnachricht, bevor etwas entschlüsselt oder gesendet wird, und das Job-Journal vermerkt für jedes Ziel notification blocked by policy; Desktop-Benachrichtigungen sind nicht betroffen. Welche Hosts Webhooks erreichen dürfen, legt webhook-host-allowlist in [rule.job-scheduler] fest. Es gibt kein Bedienelement in den Einstellungen, daher ändert allow nichts
mcp-server Zeichenfolge allow, deny korTTY als MCP-Server: Clients der Steuerungs-API, die sich als MCP-Clients ausweisen. deny weist jede solche Verbindung mit blocked_by_policy ab und schaltet sowohl den Schalter MCP-Server als auch Schreib-Tools erlauben zwangsweise aus; gewöhnliche Clients der Steuerungs-API und kortty-cli funktionieren weiter. Der Schlüssel setzt außerdem control-api voraus. allow überlässt beide Schalter dem Benutzer und schaltet sie nie ein
incognito-sessions string allow, deny Inkognito-Sitzungen, bei denen korTTY Log, Journal, Aufzeichnung, den Eintrag unter „Zuletzt geschlossen“ und die Wiederherstellung auslässt. deny graut Inkognito-Sitzung im Verbindungseditor und Datei → Neue Inkognito-Sitzung… aus, und jede Sitzung, auch die einer als inkognito markierten Verbindung, ist eine normale. Ein Session-Journal, das die Richtlinie erzwingt, wird auch für Inkognito-Sitzungen geschrieben. Es gibt keine Einstellung dafür, daher ändert allow nichts
serial-connections String allow, deny Serielle Verbindungen zu einem seriellen Port des Computers. Ein serieller Port hat keinen Host, daher kann [rule.servers] ihn nicht abdecken; deny blockiert sie als Ganzes: Der Connection-Editor und die Schnellverbindung bieten für neue Verbindungen nicht mehr Seriell an, und jeder Versuch, einen seriellen Port zu öffnen — eine gespeicherte oder importierte serielle Verbindung, ein wiederhergestelltes Tab, ein erneutes Verbinden — wird mit Die Richtlinie Ihrer Organisation erlaubt keine seriellen Verbindungen. abgewiesen. Gespeicherte serielle Verbindungen bleiben gespeichert. Lockdown verweigert es ebenfalls. Es gibt keine Option in den Einstellungen, daher ändert allow nichts
desktop-notifications string allow, deny Jede Desktop-Benachrichtigung, die korTTY anzeigt: Coding-Agenten, der Terminalklingel, ausgeführte Befehle, OSC-9/OSC-777-Anfragen, KI läuft, Aktivität und Stille, Hervorhebungsregeln-Benachrichtigungen, JobScheduler-Jobs und die notify Aufruf der Control-API. deny zeigt keines davon und setzt die fünf Benachrichtigungsschalter in Einstellungen → Messaging auf aus und sperrt sie; die Markierungen auf Tabs und das App-Icon-Badge bleiben, und Webhooks bleiben unter job-webhooks. allow Lässt jeden Schalter dem Benutzer überlassen und schaltet niemals einen ein.
ai-agent-execution Zeichenfolge allow, confirm, read-only confirm erzwingt die interaktive Genehmigung jedes mutierenden Befehlssatzes und hebelt die Option zur automatischen Genehmigung aus; read-only lässt den Agenten planen und chatten, aber niemals Befehle ausführen, und graut Ausführen in den Codeblöcken eines KI-Chats aus (Einfügen bleibt, da es nichts ausführt). Geplante Jobs: Unter confirm blockiert ein KI-Agent- oder KI-Swarm-Job jeden serverändernden Befehl, unabhängig von seiner Einstellung Der KI-Agent kann den Server ohne Laufzeitbestätigung ändern, weil niemand da ist, der ihn genehmigen könnte; unter read-only enden beide KI-Jobtypen als blockiert, bevor sie sich verbinden. Ein Job wird auch dann vorab blockiert, wenn ai oder ai-agent verweigert wird, und ein Swarm-Job, wenn ai-swarm verweigert wird
ai-memory string allow, deny Das korTTY-Memory: die MEMORY.md-Dateien, die Referenzdateien anderer Tools und die erlernten Regeln. deny schaltet alles davon ab: Kein Memory wird mit einer Anfrage gesendet, keine Regel wird erlernt, die Dateien des Users werden weder gelesen noch geschrieben und das Organisations-Memory wird ebenfalls nicht gesendet. allow behält die Wahl des Users bei, sperrt aber den Schalter Memory verwenden in der Position, die der User gewählt hat. Die Details werden unter [rule.ai-memory]

Eine genannte Funktion wird übernommen, egal wie entschieden

Eine Richtliniendatei, die einen Schlüssel erwähnt, sperrt das zugehörige Bedienelement – und zwar in der Stellung, die die Richtlinie gewählt hat. control-api = "allow" sperrt das Kontrollkästchen also eingeschaltet; Benutzer können die API dann nicht mehr selbst abschalten. Lassen Sie den Schlüssel ganz weg, um die Wahl beim Benutzer zu belassen, und schreiben Sie deny, um sie zu entziehen.

[rule.security]

Schlüssel Typ Werte Wirkung
require-master-password boolean true Erzwingt das Master-Passwort-Gate beim Start; Die Einstellung ist gesperrt
enforce-host-key-check boolean true Die SSH-Host-Key-Prüfung kann nirgendwo deaktiviert werden — global, pro Gruppe oder pro Verbindung — und vertrauenswürdige Host-Keys können in korTTY nicht entfernt oder ersetzt werden; der Import einer OpenSSH-known_hosts-Datei bleibt verfügbar, weil er nur Schlüssel für Hosts hinzufügt, denen korTTY noch nicht vertraut
allow-telemetry boolean false Verbietet anonyme Nutzungsstatistiken
allow-terminal-recording boolean false Verbietet die Aufzeichnung von Terminalsitzungen, einschließlich der Umschaltung auf Sitzungsebene
allow-port-forwarding boolean false Öffnet niemals die SSH-Tunnel, die auf Verbindungen (lokales, entferntes und dynamisches Port-Forwarding) konfiguriert sind; die Statusleiste des Tabs sagt, sie seien von Ihrer Organisation deaktiviert. Ein Jump-Server-Hop ist nicht betroffen
clipboard-mode Zeichenfolge system, internal internal beschränkt korTTY auf seine eigene Zwischenablage im Speicher – siehe unten
allow-osc52-clipboard-write boolean false Programme in einem Terminal können niemals Text in die Zwischenablage mit OSC 52 einfügen, unabhängig davon, was Einstellungen → Terminal angibt: Die Einstellung wird zwangsweise deaktiviert und Programmen im Terminal erlauben, Text in die Zwischenablage zu kopieren (OSC 52) ist mit dem Hinweis „Von Ihrer Organisation verwaltet" gesperrt, und korTTY prüft die Richtlinie bei jedem Schreibvorgang erneut. Sie regelt auch Schreibvorgänge mit OSC 5522. true überlässt die Wahl, die standardmäßig deaktiviert ist, dem Benutzer und sperrt nichts
allow-osc5522-clipboard-read boolean false Programme in einem Terminal können niemals die Zwischenablage mit OSC 5522, dem Zwischenablage-Protokoll von kitty, lesen, selbst mit Zustimmung des Benutzers: Programmen im Terminal erlauben, das Lesen der Zwischenablage anzufragen (OSC 5522) ist erzwungen deaktiviert und gesperrt, es öffnet sich kein Prompt und Einfügeaktionen werden niemals als Einfügeereignisse gesendet. true überlässt die Wahl, die standardmäßig deaktiviert ist und vor jedem Lesen fragt, dem Benutzer

[rule.teamwork], [rule.snippets], [rule.ai-profiles]

Schlüssel Typ Werte Wirkung
allow-custom-sources boolean false Benutzer können keine Teamwork-Quellen hinzufügen; Es verbleiben nur die Einträge [[teamwork-source]] und
allow-custom-script-headers boolean false Benutzer können keine Skript-Header erstellen; Es verbleiben nur die Einträge [[script-header]] und
analysis-max-stored-content-bytes Integer ≥ 0 (Bytes von UTF-8) Obergrenze für den Skripttext, der mit jeder Vollständigen Code-Analyse gespeichert wird; 0 verbietet die Speicherung des Skripttexts — siehe unten
allow-create boolean false Benutzer können keine KI-Profile erstellen (Schaltflächen und Assistent sind gesperrt)
allow-edit boolean false Benutzer können ihre vorhandenen KI-Profile auch nicht bearbeiten
allow-internet boolean false Verbietet jeden KI-Internetzugriffsmodus – siehe unten

allow-internet = false unterbindet den KI-Internetzugriff auf drei Ebenen

Der Internetzugang Dropdown eines KI-Profils wählt einen Backend für Websuche oder MCP-Browsing. Das Verbot wird an drei Stellen durchgesetzt, weil eine einzelne eine Lücke ließe:

  1. Gespeicherte Einstellungen – der Modus jedes Profils wird auf Deaktiviert zurückgesetzt, wenn die Einstellungen geändert werden Deaktiviert zurückgesetzt. So überlebt weder ein Wert aus der Zeit vor der Richtlinie noch eine Handänderung an global-settings.xml.
  2. Die Schnittstelle – das Dropdown-Menü ist mit dem Hinweis „Von Ihrer Organisation verwaltet“ gesperrt der KI-Manager.
  3. Jede KI-Anfrage – korTTY weigert sich, einen Dienst für ein Profil zu erstellen, dessen Modus aktiviert ist, und schließt damit das Zeitfenster zwischen zwei Klemmungen. Die Anfrage scheitert mit einer Richtlinienmeldung, statt still ohne das angeforderte Web-Werkzeug zu antworten.

Dies betrifft ausschließlich die Such-Backends. Ein Cloud-KI-Profil wird dadurch nicht daran eigener Anbieter – verweigern Sie dazu die ai-Funktion oder stellen Sie an dieser Stelle [[ai-profile]]-Einträge bereit stellen [[ai-profile]]-Einträge bereit, die auf einen internen Endpunkt zeigen.

Gespeicherter Skripttext der Analysen

A Vollständige Code-Analyse speichert den Skripttext, an dem gearbeitet wurde — das analysierte Skript, den Text, von dem aus apply gestartet wurde, das vorgeschlagene Ergebnis und den akzeptierten Text — sodass die Codevorschau, Änderungen ansehen, der Skriptexport, der Berichtsanhang, Zwischenstand wiederherstellen und das Fortsetzen nach einem Neustart weiterhin funktionieren. Benutzer wählen die Größe selbst unter Einstellungen → Snippet-Editor → Gespeicherte Skriptgröße pro Analyse (Standard 1 MB, maximal 5 MB oder Aus) ; analysis-max-stored-content-bytes in [rule.snippets] ist eine Obergrenze auf dieser Wahl:

[[rule]]
name = "Keep script text small"
  [rule.snippets]
  analysis-max-stored-content-bytes = 524_288      # at most 512 KB per stored text

[[rule]]
name = "Compliance team: no script text in analyses"
groups = ["compliance"]
  [rule.snippets]
  analysis-max-stored-content-bytes = 0            # findings and reports only
  • Effektiver Grenzwert — Der kleinere Wert aus dem eigenen Wert des Benutzers (Standardwert 1 MB), dem festgelegten maximalen Wert von 5 MB und diesem Schlüssel. Ein Wert über 5 MB hat daher keine Wirkung, und ein niedrigerer Benutzerwert bleibt gültig. Jeder positive Wert wird akzeptiert, auch ein Wert unter dem Mindestwert von 256 KB, den Benutzer wählen kann.
  • 0 — Kein Skripttext wird gespeichert: Die Analyse behält ihre Ergebnisse, Zusammenfassung, Diagramm und Berichte, aber nicht das Skript, sodass Änderungen ansehen, die vorherigen Einträge mit dem Code-Vorschau, der Skriptexport, der Berichtsanhang, Zwischenstand wiederherstellen und das Fortsetzen nach einem Neustart nicht verfügbar sind. Das Panel zeigt, dass die Organisation den Speicherung des Skripttexts nicht erlaubt. Die Analyse selbst, einschließlich der Anwendung der Ergebnisse und der sofortigen Änderungsprüfung im Editor, funktioniert wie zuvor. Text, der zuvor gespeichert wurde, wird beim nächsten Schreiben der gespeicherten Analysen gelöscht.
  • Einstellungen-Dialog — Das Dropdown-Menü bietet nur Größen bis zur Grenze an, zeigt die Grenze darunter und ist gesperrt (mit dem Hinweis "Verwaltet von Ihrer Organisation"), wenn der Wert 0 ist. Die Benutzerwahl wird nicht durch die Grenze überschrieben: Sie wird erneut aktiv, sobald die Richtlinie aufgehoben wird.
  • Ebenen — Wie jede Einstellung gewinnt die spezifischste Ebene, die den Schlüssel festlegt (Benutzer, dann Gruppe, dann alle); Regeln derselben Ebene nehmen den kleineren Wert, sodass 0 jeder positiven Grenze vorauseilt. Der Schlüssel ist kein 0-bedeutet-ungelimitierter Wert.
  • Ungültige Werte — Eine negative Zahl oder eine nicht-ganze Zahl (z. B. "5 MB") stellt eine Richtlinienfehler dar, wie jeder andere falsch formatierte Wert, weshalb die gesamte Datei abgelehnt wird und der Lockdown-Fallback aktiviert wird; der Fallback verbietet außerdem das Speichern von Skripttexten. Schreiben Sie Bytes, optional mit TOML-Zifferntrennern (5_242_880).

[rule.ai-memory]

Die [rule.ai-memory]-Tabelle legt fest, wie das korTTY-Memory verwendet werden darf. Jeder Schlüssel ist optional; ein Schlüssel, den die Richtlinie nicht festlegt, behält die eigene Wahl des Users bei. Ein Wert außerhalb der aufgeführten Werte verwirft die gesamte Datei. Ein unbekannter Schlüssel ist eine Warnung im Protokoll und wird ignoriert, wie in jeder anderen Tabelle. Wie bei den anderen Schlüsseln gilt: Die spezifischste Ebene, die einen Schlüssel festlegt, hat Vorrang (User, dann Gruppe, dann alle); innerhalb einer Ebene gilt der strengste Wert: disabled vor read-only vor editable, propose unter off, never vor always vor auto, die kleinere Token-Grenze, und false vor true für die Schalter.

Schlüssel Typ Werte Wirkung
user-memory string editable, read-only, disabled read-only liest die MEMORY.md-Dateien des Benutzers in Prompts ein, schreibt sie aber nie; disabled liest sie weder ein noch schreibt sie, und das Organisationsgedächtnis wird weiterhin gesendet
learning string propose, off off findet keine Regeln in Gesprächen und schlägt keine vor; die Einstellung Lernen des Memory-Tabs wird auf den Wert gesetzt und gesperrt
skill-creation boolean true, false Der Schalter korTTY darf Skills anlegen und gelernte Regeln in Skills speichern ist auf den Wert gesetzt und gesperrt. false bedeutet, dass keine Regel in ein KI-Skill, neu oder bestehend, geht; stattdessen geht jede Regel in ein Memory
external-files string allow, deny Ob Referenzdateien anderer Tools (CLAUDE.md, AGENTS.md und ähnliche) gelesen werden dürfen; deny liest keine davon
external-file-roots Liste von Pfaden absolute oder ~/ Pfade Die Ordner, in denen externe Dateien liegen müssen; eine leere Liste erlaubt jeden Ordner
max-tokens Ganzzahl 300 bis 4000 Das Speicherbudget pro KI-Anfrage; der kleinere Wert zwischen diesem und der eigenen Benutzereinstellung gilt
triage string auto, always, never Wenn der Agent Lösungsoptionen anbietet: auto bewertet jede Anfrage, always bietet bei jedem Lauf Optionen an, never führt Anfragen wie gewünscht aus. Die Einstellung Komplexität einschätzen des Nutzers wird auf den Wert gesetzt und gesperrt
statistics boolean true, false Ob Skill-Statistiken aufgezeichnet werden: false zeichnet keine auf. Beide Werte setzen den Schalter Statistik aufzeichnen und sperren ihn

Organisations-Speicher

[[organization-memory]]-Blöcke enthalten Regeln für die KI, die Benutzer nicht ändern können. Jeder Block hat einen title und einen content-Text. korTTY sendet die Blöcke vollständig, vor dem eigenen Speicher des Benutzers, mit jeder KI-Anfrage jedes Benutzers und kürzt sie nicht auf das Token-Budget. Ein Block, dessen Titel oder Inhalt länger als 8000 Zeichen ist oder den der Geheimnis-Schutz ablehnt, wird mit einer Warnung verworfen, die das Feld und die Zeile benennt, niemals aber den Wert. Die Datei enthält höchstens 20 Blöcke und insgesamt 16000 Zeichen; ein Block, der eines dieser Limits überschreiten würde, wird mit einer Warnung verworfen, und die Blöcke danach werden weiterhin geprüft.

Organisations-Memory wird nur gesendet, solange die Richtlinie die KI-Funktionen zulässt und ai-memory nicht verweigert. Der eigene Memory verwenden-Schalter des Benutzers und der user-memory-Schlüssel verhindern dies nicht.

[rule.ai-runtime]

Schlüssel Typ Werte Wirkung
allow-runtime-downloads boolean false Keine llama.cpp/MLX-Laufzeit-Downloads oder Update-Prüfungen
allow-model-downloads boolean false Der Browser und die Downloads des Hugging Face-Modells sind deaktiviert
allow-user-models boolean false Nur vom Administrator bereitgestellte [[ai-runtime.model]]-Einträge können von eingebetteten KI-Profilen geladen werden

[rule.updates]

Schlüssel Typ Werte Wirkung
enabled boolean false Deaktiviert die automatische Update-Prüfung und die manuelle Prüfung im Info-Dialog
feed-url Zeichenfolge http(s)-URL Aktualisierungsprüfungen fragen diesen Endpunkt anstelle von GitHub ab; Es muss dieselbe JSON-Form zurückgeben wie die GitHub releases/latest-API (tag_name, assets[] mit name und browser_download_url)

[rule.backup]

Setzt und sperrt das Automatisches Backup Einstellungen → Sicherung. Jeder Schlüssel erzwingt die entsprechende Einstellung; der Benutzer sieht sie mit dem Hinweis „von Ihrer Organisation verwaltet“. Die Sicherung selbst behält den Verschlüsselungsmodus und die Anmeldeinformationen oder GPG-Schlüssel des Benutzers bei und wird niemals unverschlüsselt geschrieben.

Schlüssel Typ Werte Wirkung
auto-interval string off, daily, weekly, monthly Erzwingt den Zeitplan; off schaltet die automatische Sicherung für den Benutzer aus. Wenn mehrere Regeln derselben Ebene gesetzt sind, gewinnt der strengere Wert: off, dann das häufigere Intervall
auto-directory string absolut oder ~/-relativer Pfad Zwingt den Ordner, in dem die automatische Sicherung geschrieben wird. Der Ordner muss auf dem Rechner des Benutzers existieren; korTTY erstellt ihn nicht und meldet einen fehlenden Ordner in der Statuszeile sowie im Log. Bei gleichwertigen Pfaden gewinnt lexikografisch der kleinste Pfad.
[[rule]]
  [rule.backup]
  auto-interval = "daily"
  auto-directory = "~/Backups/korTTY"

[rule.terminal]

Schlüssel Typ Werte Wirkung
load-into-snippet-editor Zeichenfolge allow, read-only, deny read-only lädt weiterhin entfernte Dateien in den Snippet-Editor, verbietet jedoch das Zurückschreiben in das Zielsystem; deny entfernt die Funktion vollständig, einschließlich des Öffnens von Dateipfaden und file:-Links aus der Terminalausgabe (Links in der Terminalausgabe). Derselbe Modus gilt für Serverdateien im SFTP-Manager: read-only öffnet sie ohne Datei überschreiben und Speichern unter..., und deny deaktiviert für sie Im Snippet-Editor bearbeiten und Bild öffnen; lokale Dateien sind nicht betroffen. In externem Editor bearbeiten folgt demselben Modus: read-only öffnet die Datei, ohne Speichervorgänge hochzuladen, und deny deaktiviert die Funktion
paste-warning string off, unless-bracketed, always Wie oft eine Einfügewarnung mindestens nachfragt. Es ist eine Untergrenze, die zusätzlich zu Einstellungen → Terminal → Einfügeschutz, der eigenen Einfügewarnung einer Verbindung und der Einfügewarnung einer Teamwork-Verbindung gilt, sodass keine von ihnen seltener nachfragen kann; eine, die öfter nachfragt, tut das weiterhin. Die gespeicherte Einstellung wird auf die Untergrenze angehoben, und das Auswahlfeld trägt den Hinweis „Verwaltet von Ihrer Organisation“ und bietet nur die Untergrenze und strengere Optionen an; mit always ist es gesperrt. Legen mehrere Regeln derselben Stufe den Wert fest, gewinnt der strengere (always vor unless-bracketed vor off)
session-restore string off, ask, auto Legt fest, was korTTY beim Start mit den Fenstern und Tabs der vorherigen Sitzung tut (Einstellungen → Fenster → Sitzungswiederherstellung), und sperrt das Auswahlfeld. off öffnet von selbst nichts; Datei → Vorherige Sitzung wiederherstellen bleibt verfügbar. Legen mehrere Regeln derselben Stufe den Wert fest, gewinnt der Wert, der von selbst weniger Verbindungen öffnet (off vor ask vor auto)
session-restore-output boolean true, false Legt Auch die Ausgabe jedes Terminalbereichs wiederherstellen (verschlüsselt) in Einstellungen → Fenster → Sitzungswiederherstellung fest und sperrt die Option zusammen mit Ausgabezeilen pro Bereich. false schaltet sie aus, wodurch die bisher gespeicherte Ausgabe beim nächsten Start gelöscht wird; true schaltet sie ein, und die Ausgabe wird weiterhin nur gespeichert, solange ein Master-Passwort existiert und der Tresor entsperrt ist. Legen mehrere Regeln derselben Stufe den Wert fest, gewinnt false
[[rule]]
  [rule.features]
  multi-exec = "deny"

  [rule.security]
  allow-osc52-clipboard-write = false
  allow-osc5522-clipboard-read = false

  [rule.terminal]
  paste-warning = "always"
  session-restore = "ask"
  session-restore-output = false

[rule.sftp]

Schlüssel Typ Werte Wirkung
max-parallel-transfers Ganzzahl 1 bis 8 Die Höchstzahl an Dateien, die der SFTP-Manager gleichzeitig kopiert. Eine Obergrenze für Parallele Übertragungen in Einstellungen → SFTP-Manager: Ein höherer gespeicherter Wert wird auf sie gesenkt, und das Zahlenfeld geht nicht darüber hinaus, während Benutzer weiterhin weniger wählen können. Legen mehrere Regeln derselben Stufe den Wert fest, gewinnt der kleinste
conflict-default string ask, skip, overwrite Legt Wenn das Ziel bereits existiert in Einstellungen → SFTP-Manager fest und sperrt die Einstellung: was ein Upload oder Download mit einer Datei tut, die bereits vorhanden ist. Legen mehrere Regeln derselben Stufe den Wert fest, gewinnt der Wert, der weniger Daten verliert (ask vor skip vor overwrite)
[[rule]]
  [rule.features]
  file-transfer = "allow"
  sftp-sudo-edit = "deny"

  [rule.sftp]
  max-parallel-transfers = 2
  conflict-default = "ask"

Eine fehlerhafte Richtliniendatei fällt auf den Lockdown zurück, der file-transfer und sftp-sudo-edit wie jede andere Funktion verweigert.

Archive, die der SFTP-Manager auf dem Server erstellt, haben nie ein Passwort, unabhängig von der Richtlinie: zip und 7z nehmen ein Passwort nur auf ihrer Befehlszeile oder über ein Terminal entgegen, und auf der Befehlszeile kann jeder andere Benutzer des Servers es in der Prozessliste lesen. Passwortgeschützte Archive auf dem Server lehnt Hier entpacken... ebenfalls ab. Archive, die auf dem eigenen Computer des Benutzers erstellt werden, können weiterhin ein Passwort haben, daher ist kein Richtlinienschlüssel nötig, um Serverpasswörter aus Prozesslisten herauszuhalten.

[rule.isolation]

Schlüssel Typ Werte Wirkung
minimum string none, process, sandbox Die geringste Sitzungs-Isolation, die jede Terminal-Sitzung haben muss. Eine Untergrenze über Einstellungen → Sicherheit → Sitzungs-Isolation, den Ordnerstufen, der eigenen Stufe einer Verbindung und Teamwork-Verbindungen; eine höhere Stufe gilt weiter. Der gespeicherte Standard wird darauf angehoben, und die Stufen darunter sind in den Einstellungen, im Verbindungseditor und im Ordnermenü ausgegraut. Eine Sitzung, die das Minimum nicht bekommen kann – weil ihre Verbindungsart in dieser Version nicht so weit isoliert werden kann oder weil sandbox verlangt ist und der Computer keine funktionierende Sandbox hat –, wird nicht geöffnet, und der Benutzer sieht, warum. Mit sandbox wird eine fehlende Sandbox nie durch einen einfachen Prozess ersetzt. Setzen mehrere Regeln derselben Stufe den Wert, gewinnt der strengere (sandbox vor process vor none). Der Lockdown setzt ihn nicht
[[rule]]
  [rule.features]
  incognito-sessions = "deny"

  [rule.isolation]
  minimum = "sandbox"

[rule.job-scheduler]

Schlüssel Typ Werte Wirkung
webhook-host-allowlist Array von Zeichenketten Hostnamen, z. B. ["hooks.slack.com"] Die einzigen Hosts, an die JobScheduler-Webhooks gesendet werden dürfen. Ein Eintrag erlaubt seinen eigenen Host und jeden Host darunter, verglichen nach ganzen Labels: hooks.slack.com erlaubt hooks.slack.com und eu.hooks.slack.com, aber nicht evilhooks.slack.com oder hooks.slack.com.attacker.net. Ein vorangestelltes *. oder . wird akzeptiert und bedeutet dasselbe. Einträge sind reine Hostnamen: Ein Schema, ein Pfad, ein Port oder ein Benutzername ist ein Fehler. Hostnamen werden so verglichen, wie sie in der Webhook-URL stehen, und nie per DNS aufgelöst. Ein leeres Array erlaubt jeden Host; fehlt der Schlüssel, bleiben Webhooks ebenfalls uneingeschränkt. Setzen mehrere Regeln derselben Ebene eine Liste, muss ein Host von jeder davon erlaubt werden

Die Prüfung läuft unmittelbar vor jedem Versand, auch bei der Schaltfläche Test senden. Ein Webhook an einen Host außerhalb der Liste wird nicht gesendet, und das Job-Journal vermerkt notification blocked by policy mit dem Job, dem Namen des Ziels und dem Host, niemals der URL. Solange job-webhooks verweigert ist, weist der Abschnitt Benachrichtigungen eines Jobs mit angekreuzten Webhook-Zielen darauf hin, dass diese nichts erhalten.

[[rule]]
  [rule.features]
  job-webhooks = "allow"

  [rule.job-scheduler]
  webhook-host-allowlist = ["hooks.slack.com", "logic.azure.com", "api.powerplatform.com"]

Eine fehlerhafte Richtliniendatei führt zum Lockdown, der job-webhooks wie jede andere Funktion verweigert.

[rule.logging]

Die unten angegebenen terminal-*-Tastenkombinationen gelten für Protokolldaten des Terminalausganges. Ungeführte Werte bleiben der Verbindungseinstellung unterliegen. Sie werden pro Feld gemäß den bestehenden Regeln aufgelöst; bei gleicher Ebene gewinnt false bei Benutzernamen, während die Verzeichnisauswahlen in der Reihenfolge none, relative, full erfolgen. Der Logger wendet sie beim Start an und schaltet die Steuerung des Verbindungseingabefensters ab. Unbekannte Arbeitsverzeichnisse bleiben leer. Diese Einstellungen aktivieren das Protokollieren nicht allein.

korTTY rotiert sein Protokoll täglich (kortty.YYYY-MM-DD.log); Diese Tabelle steuert, wohin die Dateien gehen, wie lange sie leben, wie sie formatiert sind und wie die Rotation begrenzt wird. Verzeichnis und Aufbewahrung werden in die entsprechenden (dann gesperrten) Benutzereinstellungen gezwungen; Format, Komprimierung und die Rotationsbeschränkungen haben keine Benutzereinstellung und wirken direkt. Die Konfiguration wird vor der allerersten Protokollzeile eines Starts angewendet, sodass auch die Startprotokollierung dem Schema des Administrators folgt.

Schlüssel Typ Werte Wirkung
directory Zeichenfolge absoluter oder ~/-relativer Pfad Protokollverzeichnis (Standard ~/.kortty/logs); Die Einstellung ist gesperrt
retention-days Ganzzahl 0 = für immer behalten Rotierte Protokolle, die älter als N Tage sind, werden gelöscht; Die Einstellung ist gesperrt
compress boolean Standard true Gzip rotierte Protokolle nach einem Tag
format Zeichenfolge text, json json schreibt ein strukturiertes JSON-Objekt pro Ereignis (Logback-JSON-Encoder – praktisch für SIEM/zentrale Protokollerfassung)
rotation-max-files Ganzzahl 0 = unbegrenzt Behalten Sie höchstens N rotierte tägliche Dateien bei
rotation-total-size-mb Ganzzahl 0 = nicht begrenzt Begrenzen Sie die Gesamtgröße aller gedrehten Dateien (älteste zuerst gelöscht)
terminal-include-username boolean true, false Bestimmt, ob die Terminal-Log-Einträge den SSH-Benutzernamen enthalten; verhindert die Änderung der Verbindungseinstellung
terminal-directory-mode string none, full, relative Bestimmt das Feld des Terminal-Log-Verzeichnisses; relative verwendet das erste vom Sitzungsbetrieb gemeldete Verzeichnis, das ebenfalls als directoryBase gespeichert wird; verhindert die Änderung der Verbindungseinstellung
[[rule]]
  [rule.logging]
  directory = "/var/log/kortty"
  retention-days = 30
  compress = true
  format = "json"
  rotation-max-files = 14
  rotation-total-size-mb = 512

Note

Wenn mehrere gleichstufige Regeln die Protokollierung konfigurieren, wird jeder Schlüssel separat aufgelöst: kürzere Aufbewahrung und engere Obergrenzen gewinnen, Komprimierung gewinnt, json gewinnt gegenüber text. In der Praxis fassen Sie die Protokollierungskonfiguration in einer einzigen Regel für alle Benutzer zusammen. Das ausgewählte Verzeichnis muss für den Benutzer, der korTTY ausführt, beschreibbar sein.

[rule.session-journal]

Mandate für das Sitzungsjournal. Erzwungene Werte sperren die entsprechenden Steuerelemente in den Journaloptionen, im Einstellungsdialog und im Verbindungseditor mit dem Hinweis „Von Ihrer Organisation verwaltet“.

Schlüssel Typ Werte Wirkung
enforced Boolescher Wert true Für jede Verbindung wird ein Journal geschrieben, unabhängig von der verbindungsspezifischen Einstellung; Benutzer können es nicht stoppen und der Aktivierungsschalter ist gesperrt
log-format Zeichenfolge json (Standard), xml, yaml Erzwingt das Capture-Log-Format für neue Journale
ai-max-lines Ganzzahl 0 = Kontextfüllung Erzwingt das KI-Auswertungsfenster (max. Terminalzeilen pro Zusammenfassung)
storage-path Zeichenfolge absoluter Pfad Erzwingt das Journalspeicherverzeichnis; Die Einstellung ist gesperrt
allow-rename boolean false Journale können im Manager nicht umbenannt werden
allow-delete boolean false Journale können im Manager nicht gelöscht werden
name-template Zeichenfolge Vorlage Ursprünglicher Journaltitel mit den Platzhaltern {connection}, {host}, {user}, {date} und {time}
ai-title Boolescher Wert true Der abschließende KI-Titel wird unabhängig von der Benutzereinstellung generiert
ai-screenshot-analysis boolean true / false true erzwingt die KI-Screenshot-Analyse, false verbietet sie – einschließlich der manuellen Ausführung pro Screenshot; Die Journaloption ist in beide Richtungen gesperrt
ai-ask boolean false Verbietet On-Demand-KI für Journalinhalte: Das Frage-und-Antwort-Panel des Viewers und die tagebuchübergreifende KI-Suche des Managers werden ausgeblendet. KI-Zusammenfassungen sind nicht betroffen
clickable-links boolean false Webadressen auf Journalseiten bleiben reiner Text – in Notizen und in KI-Zusammenfassungen – und der Journal-Viewer öffnet keinen Link; die Benutzereinstellung Webadressen in Journalen anklickbar machen ist gesperrt und ausgeschaltet
max-log-parts Ganzzahl ≥ 1 Begrenzt die Anzahl der rotierten Capture-Logteile pro Journal; Der wirksame Grenzwert ist das Minimum dieser Obergrenze und der Einstellung pro Verbindung, und der Spinner des Verbindungseditors ist darauf begrenzt
automation-allowed Boolean false Verhindert das Sitzungsprotokolle von JobScheduler und KI-Swarm-Läufen; die „Sitzungsjournal pro Lauf“-Steuerung ist deaktiviert. Interaktive Journale sind nicht betroffen.
automation-max-retention-days integer ≥ 1 Automation-Journale werden höchstens so viele Tage nach ihrem Lauf gelöscht, egal was der Benutzer gewählt hat ("nie" ist nicht verfügbar); wird auch dann durchgesetzt, wenn allow-delete = false
automation-max-storage-mb integer ≥ 1 Begrenzt den Speicherplatz der Journale eines Jobs (oder des KI-Swarms); die ältesten Durchläufe werden zuerst gelöscht; auch bei allow-delete = false
automation-max-journals integer ≥ 1 Begrenzt die Anzahl der gespeicherten Durchläufe pro Aufgabe (oder KI-Swarm); wird auch bei allow-delete = false
[[rule]]
  [rule.features]
  session-journal = "allow"
  [rule.session-journal]
  enforced = true
  log-format = "json"
  storage-path = "/srv/audit/kortty-journals"
  allow-delete = false
  name-template = "{connection} {date} {time} ({user})"

Note

enforced fordert Aufzeichnung, nicht KI: Wenn KI verweigert oder nicht verfügbar ist, zeichnet das erzwungene Journal rohe Aktivitätseinträge auf. Wenn mehrere Regeln derselben Ebene das Journal konfigurieren, werden enforced und ai-title zu true, wenn irgendeine Regel sie setzt, allow-rename/allow-delete zu false, wenn irgendeine Regel sie verbietet, ai-screenshot-analysis und ai-ask zu off, wenn irgendeine Regel sie ausschaltet, die Zeilenbegrenzung ergibt den strikteren Wert (0 gilt als unbegrenzt), und max-log-parts ergibt die niedrigere Begrenzung. automation-allowed ergibt false, wenn irgendeine Regel es verbietet, und die drei automation-max-*-Beschränkungen ergeben den niedrigeren Wert. Mit allow-delete = false löscht korTTY niemals ein Automatisierungsjournal aufgrund einer Benutzereinstellung (Behalte-Modus, Duplikate, Aufbewahrung, Limits) – nur die automation-max-*-Beschränkungen löschen noch.

[[rule.session-journal.replace]]

Automatisches Suchen und Ersetzen in jedem Journal – die Möglichkeit, eine ganze Kategorie von Geheimnissen aus dem Transkript herauszuhalten, anstatt sich darauf zu verlassen, dass der Benutzer es bemerkt. Jeder Eintrag stellt eine Regel dar, und eine Regel kann einen regulären Ausdruck verwenden.

korTTY wendet dieselben Regeln auf eine Terminalauswahl und auf eine daran angehängte Datei an, bevor sie an ein KI-Profil gesendet werden, das weder ein integriertes Modell noch ein vertrauenswürdiger lokaler Endpunkt ist; siehe Maskierung von Geheimnissen vor dem Senden.

Schlüssel Typ Standard Wirkung
pattern Zeichenfolge erforderlich Der zu suchende Text. Wenn regex aktiviert ist, handelt es sich um einen regulären Ausdruck
replacement Zeichenfolge *** Der Text, der jede Übereinstimmung ersetzt. In einer Regex-Regel $1 fügt eine erfasste Gruppe ein
regex boolean false Behandelt pattern als regulären Ausdruck
ignore-case boolean false Entspricht jeder Groß-/Kleinschreibung
label Zeichenfolge – Beschreibung für den Administrator; korTTY zählt nur die Regeln in seinem UI-Hinweis
[[rule]]
  [rule.session-journal]
  enforced = true

    [[rule.session-journal.replace]]
    pattern = "AKIA[0-9A-Z]{16}"
    replacement = "***AWS-ACCESS-KEY***"
    regex = true
    label = "AWS access keys"

    [[rule.session-journal.replace]]
    pattern = "(?i)bearer\\s+[A-Za-z0-9._-]{20,}"
    replacement = "Bearer ***"
    regex = true
    label = "Bearer tokens"

    [[rule.session-journal.replace]]
    pattern = "vpn.internal.acme.corp"
    replacement = "<internal-host>"
    ignore-case = true

Die Regeln werden im Erfassungsthread ausgeführt, bevor eine Zeile geschrieben wird, sodass ein übereinstimmender Text überhaupt nicht in die Protokolldatei gelangt, und sie werden auch auf KI-Zusammenfassungen und Benutzernotizen angewendet. Im Gegensatz zu den anderen Schlüsseln werden Ersetzungsregeln über alle übereinstimmenden Regeln und alle Ebenen hinweg zusammengeführt und nicht, dass die höchste Ebene gewinnt: Mehr Schwärzung ist das restriktivere Ergebnis, sodass eine benutzer- oder gruppenspezifische Regel nur Muster hinzufügen und niemals die organisationsweiten ausschalten kann. Doppelte Einträge werden ausgeblendet.

Warning

Ein pattern, der kein gültiger regulärer Ausdruck ist, ist ein Richtlinienfehler und keine Warnung – die Datei wird abgelehnt. Eine Regel, die stillschweigend nichts übereinstimmt, ist schlimmer als eine Regel, die der Administrator korrigieren muss, weil die Schwärzung scheinbar vorhanden ist.

Note

Es fallen nur Journale an, die während der Geltungsdauer der Regelung verfasst wurden; bestehende Journale werden nicht rückwirkend umgeschrieben. Benutzer können diese mit der Such- und Ersetzungsfunktion des Viewers bereinigen.

Von Admin bereitgestellte Objekte

Diese Tabellen der obersten Ebene definieren Objekte, die für jeden Benutzer schreibgeschützt und mit der Kennzeichnung „Von Ihrer Organisation bereitgestellt“ gekennzeichnet sind. Sie werden bei jedem Start aus der Richtlinie neu erstellt und nie in die Konfigurationsdateien des Benutzers geschrieben. Wenn Sie sie aus der Richtlinie entfernen, werden sie auch aus korTTY entfernt.

Tabelle Schlüssel Notizen
[[script-header]] name, content Unveränderlicher Skript-Header in der Script-Header-Kategorie des Snippet-Systems
[[ai-profile]] id, name, provider, endpoint, model, api-key-encrypted id muss mit policy- beginnen; provider ist einer von anthropic, openai-compatible, lm-studio, embedded-llama, embedded-mlx (eingebettete Anbieter lesen model als lokale Modell-ID)
[[ai-runtime.model]] name, runtime, source runtime Ist llama oder mlx; source ist ein absoluter lokaler/UNC-Pfad oder für GGUF-Modelle eine http(s)-URL, die korTTY einmal beim Start herunterlädt
[[teamwork-source]] name, type, url type Ist git oder shared-file; als schreibgeschützte Teamwork-Quelle eingefügt

Interner Zwischenablagemodus

Mit clipboard-mode = "internal" trennt sich korTTY vollständig von der Zwischenablage des Betriebssystems und verwendet stattdessen seine eigene Zwischenablage im Arbeitsspeicher: In einer anderen Anwendung kopierter Text kann nirgendwo in korTTY eingefügt werden, und in korTTY kopierter Text gelangt nie in die Zwischenablage des Betriebssystems – während das Kopieren, Ausschneiden und Einfügen innerhalb von korTTY weiterhin überall funktioniert, da Terminals, SFTP-Ansichten, der Snippet-Editor und alle Dialoge denselben internen Puffer verwenden. Da es sich hierbei um reine Anwendungslogik handelt und keine Betriebssystem-Zwischenablage-Isolations-API beteiligt ist, verhält es sich unter macOS, Windows und Linux identisch, einschließlich der X11-Primärauswahl (Einfügen mit mittlerem Klick): Das Einfügen von Inhalten mit mittlerem Klick aus anderen Anwendungen ist blockiert, das Einfügen mit mittlerem Klick von korTTY-internen Kopien funktioniert weiterhin.

Der Modus umfasst das Terminal (Kurzbefehle, Kontextmenü, Mitteltaste, Text, der aus einer anderen Anwendung darauf abgelegt wird und abgelehnt wird, sowie Text, den ein Programm im Terminal mit OSC 52 oder OSC 5522 kopiert, sofern Einstellungen → Terminal dies zulässt, der nur in die interne Zwischenablage gelangt; ein Programm, das mit OSC 5522 liest, erhält die interne Zwischenablage), den Code-Editor, alle Kopier-Buttons, die ${clipboard}-Snippet-Variable und die Kopieren/Ausschneiden/Einfügen-Kurzbefehle von einfachen Eingabefeldern. Das Kopieren von Bildern (KI-generierte Bilder, Diagramm-Exporte) ist im internen Modus nicht verfügbar, da ein Bild nur über die System-Zwischenablage geteilt werden kann.

Bereich

Die interne Zwischenablage ist ein Richtlinientool gegen zufällige Datenübertragung über die Zwischenablage und kein fester Luftspalt: Ein Benutzer kann weiterhin Text auf dem Bildschirm lesen. Die Rechtsklick-Einfüge-Eingabe von Nur-Text-Feldern wird vom UI-Toolkit bereitgestellt und kann weiterhin auf die Zwischenablage des Betriebssystems zugreifen – die Tastenkombination und jedes von korTTY bereitgestellte Menü werden abgedeckt.

Verschlüsselte API-Schlüssel

Der API-Schlüssel eines KI-Profils erscheint niemals im Klartext in der Richtlinie. Der Administrator verschlüsselt es einmal von einem Terminal aus – der Befehl gibt einen kortty-enc:v1:-Wert für den api-key-encrypted-Schlüssel aus:

korTTY --encrypt-policy-value

Benutzern wird im Profil nur „Von Ihrer Organisation bereitgestellter API-Schlüssel“ angezeigt. Der Schlüssel wird im Speicher entschlüsselt, sobald eine Anfrage gestellt wird.

Sicherheitsbereich

Die Enveloppe verwendet AES-256-GCM mit einem Schlüssel, der über die gesamte Anwendung gültig ist, wodurch sie vor beiläufiger Offenlegung (z. B. Shoulder-Surfing, Konfigurationsunterschiede, Backups) geschützt ist und Manipulationen detektiert – es handelt sich nicht um eine starke Geheimschutzmethode, da jeder mit dem korTTY-Binary den Anwendungsschlüssel wiederherstellen könnte. Die Betriebssystemrechte des Installationsverzeichnisses bleiben die tatsächliche Sicherheitsgrenze; bei unzureichender Sicherheit empfiehlt sich der Einsatz von per-Nutzer-Schlüsseln über den üblichen Profilworkflow.

Fehlerbehebung

Symptom Ursache und Abhilfe
Startdialog „Organisationsrichtlinie konnte nicht geladen werden“ Die Richtliniendatei weist einen Syntaxfehler oder einen ungültigen Wert auf; Der Dialog und das Protokoll benennen die genaue Position. korTTY bleibt ausfallsicher gesperrt, bis die Datei repariert ist
Richtlinie scheint ignoriert zu werden Die Datei heißt nicht kortty-policy.toml, befindet sich nicht im policy/-Ordner der Installation oder korTTY wurde nicht neu gestartet. Die Startzeilen des Protokolls geben an, welche Richtliniendatei (falls vorhanden) geladen wurde
Eine Regel gilt nicht für einen Benutzer Der Regelbereich besteht aus Betriebssystem-Anmeldenamen in Kleinbuchstaben. überprüfen [groups] Mitgliedschaft und denken Sie daran, dass eine spezifischere Stufe (Benutzer > Gruppe > Jeder) weniger spezifische Regeln außer Kraft setzt
Warnung „Policies-Datei ist lesbar vom aktuellen Benutzer“ Die Berechtigungen des Installationsverzeichnisses sind zu offen – das Einschließlich-Modell basiert auf einer Schreibzugriff nur durch Administratoren
Das Admin-Modell wird nicht angezeigt Sehen Sie sich das Protokoll an: GGUF-URL-Downloads erfolgen beim Start im Hintergrund und für die Registrierung ist eine installierte llama.cpp-Laufzeit erforderlich. MLX-Quellen müssen lokale Safetensors-Verzeichnisse sein