Terminal-Tool
Shell-Befehle auf dem Hostsystem ausführen. Befehle werden über sh -c ausgeführt.
Parameter
| Key | Type | Default | Description |
|---|---|---|---|
command | string | — | Der auszuführende Shell-Befehl |
action | string | "run" | Aktion: run, check, kill oder trust_all |
pid | integer | — | PID für check/kill erforderlich |
Genehmigungslogik
Ein Befehl wird nur dann automatisch genehmigt, wenn beide Bedingungen erfüllt sind:
- Der Befehl beginnt mit einem Präfix aus
terminal.allowed_prefixes - Der Befehl enthält keine Shell-Operatoren
Shell-Operatoren (erfordern immer Genehmigung)
text
; | && || $() ` (backticks)Standard-erlaubte Präfixe
text
ls, cat, head, tail, echo, date, whoami, pwd, find, wc,
grep, tree, file, stat, uname, df, du, ps, which, env, printenvAusgabe
Gibt zuerst stdout zurück, dann stderr (falls vorhanden). Die Ausgabe wird auf terminal.max_output_chars (Standard 4000 Zeichen) gekürzt.
Hintergrundbefehle (Neu)
Wenn ein Befehl das Anfangs-Timeout überschreitet, läuft er im Hintergrund weiter und gibt eine PID zurück.
- Nutze
action="check"+pid, um Fortschritt/Ausgabe zu sehen - Nutze
action="kill"+pid, um den Prozess zu stoppen - Abgeschlossene Ausgaben werden kurz zwischengespeichert, damit spätere Checks noch funktionieren
Harte Sicherheitsblöcke (Neu)
Breite destruktive Muster werden jetzt vor dem Genehmigungsfluss blockiert, einschließlich rm -rf und find ... -delete auf sensiblen Pfaden.
Konfiguration
config.toml
[terminal]
allowed_prefixes = ["ls", "cat", "head", "tail", "echo", "date"]
initial_timeout_secs = 30
max_output_chars = 4000
permission_mode = "default"Immer erlauben (Persistent)
Wenn der Benutzer in Telegram auf "Allow Always" klickt:
- Das erste Wort des Befehls wird als Präfix extrahiert
- Das Präfix wird der erlaubten Liste im Arbeitsspeicher hinzugefügt
- Das Präfix wird in SQLite gespeichert (
terminal_allowed_prefixes-Tabelle) - Beim Neustart werden gespeicherte Präfixe mit den Konfigurations-Präfixen zusammengeführt
Das bedeutet, dass "Allow Always"-Genehmigungen Daemon-Neustarts überstehen, ohne config.toml zu ändern.
Nicht vertrauenswürdige Sitzungen
Sitzungen von Triggern (E-Mail usw.) werden als nicht vertrauenswürdig markiert. Alle Befehle in nicht vertrauenswürdigen Sitzungen erfordern eine Genehmigung, unabhängig von der Whitelist.