Herramienta Terminal
Ejecuta comandos de shell en el sistema host. Los comandos se ejecutan via sh -c.
Parametros
| Key | Type | Default | Description |
|---|---|---|---|
command | string | β | El comando de shell a ejecutar |
action | string | "run" | Accion: run, check, kill o trust_all |
pid | integer | β | PID requerido para acciones check/kill |
Logica de Aprobacion
Un comando se auto-aprueba solo si se cumplen ambas condiciones:
- El comando comienza con un prefijo en
terminal.allowed_prefixes - El comando no contiene ningun operador de shell
Operadores de Shell (siempre requieren aprobacion)
text
; | && || $() ` (backticks)Prefijos Permitidos por Defecto
text
ls, cat, head, tail, echo, date, whoami, pwd, find, wc,
grep, tree, file, stat, uname, df, du, ps, which, env, printenvSalida
Devuelve primero stdout, luego stderr (si existe). La salida se trunca a terminal.max_output_chars (por defecto 4000 caracteres).
Comandos en Segundo Plano (Nuevo)
Si un comando supera el tiempo inicial, se mueve a segundo plano y devuelve un PID.
- Usa
action="check"+pidpara ver progreso/salida - Usa
action="kill"+pidpara detenerlo - La salida final reciente se conserva por un tiempo para revisarla despues
Bloqueos de Seguridad Duros (Nuevo)
Patrones destructivos amplios ahora se bloquean antes del flujo de aprobacion, incluyendo rm -rf y find ... -delete en rutas sensibles.
Configuracion
config.toml
[terminal]
allowed_prefixes = ["ls", "cat", "head", "tail", "echo", "date"]
initial_timeout_secs = 30
max_output_chars = 4000
permission_mode = "default"Allow Always (Persistente)
Cuando el usuario hace clic en "Allow Always" en Telegram:
- Se extrae la primera palabra del comando como prefijo
- El prefijo se agrega a la lista de permitidos en memoria
- El prefijo se persiste en SQLite (tabla
terminal_allowed_prefixes) - Al reiniciar, los prefijos persistidos se fusionan con los prefijos de configuracion
Esto significa que las aprobaciones de "Allow Always" sobreviven a los reinicios del daemon sin modificar config.toml.
Sesiones No Confiables
Las sesiones provenientes de disparadores (email, etc.) se marcan como no confiables. Todos los comandos en sesiones no confiables requieren aprobacion independientemente de la lista blanca.