Каждая команда, которую возвращает CliAI, помечается одним из трёх бейджей до того, как доберётся до вашей shell. Понимать бейджи — это разница между настороженным и уверенным использованием. Этот пост — про систему: что она ловит и, честно, что не ловит.
Три уровня
SAFE. Только чтение или почти. ls, pwd, cat, grep, find -printf. Нажали Enter — поехали, без дополнительных трений.
CAUTION. Меняет состояние ограниченно. rm конкретных файлов, mv, chmod одного файла, kill -9 известного PID, git reset --hard на не-расшаренной ветке. Бейдж жёлтый, пауза для подтверждения.
DANGER. Меняет состояние широко или необратимо: rm -rf поддерева, пересекающего корни ФС, dd на блочное устройство, chmod -R на /, git push --force в main, всё, что трогает * на верхнем уровне. Бейдж красный, требует напечатать yes целиком — Enter не работает.
┌─ Task ───────────────────────────────────────────────┐│ снеси мою домашнюю директорию полностью │├─ Command ────────────────────────────────────────────┤│ rm -rf -- ~/ │├─ Safety: DANGER ─────────────────────────────────────┤│ Рекурсивное удаление, пересекающее корень $HOME. ││ Введите "yes" для подтверждения. │└──────────────────────────────────────────────────────┘
Как происходит классификация
Через regex, на сервере, после того как LLM выдала кандидата. Паттерны не секрет — это курируемый список структурных форм, исторически приводивших к ущербу:
- рекурсивное удаление, пересекающее корни (
/,$HOME,/etc,/var,/usr); - сырые записи на блочные устройства (
dd of=/dev/sd*); - форсные деструктивные git-операции на защищённых ветках;
- цепочки пайпов, заканчивающиеся деструктивом (
tar | … && rm -rf …).
Команда, попавшая в danger-набор, получает DANGER. Меняет состояние без пересечения порогов — CAUTION. Остальное — SAFE.
Что ловит, а вы не ожидали
Команда, которая выглядит нормально на первый взгляд, может быть DANGER, если читать пайп целиком. Классификатор читает всю строку, не только первую стадию:
┌─ Task ───────────────────────────────────────────────┐│ заархивируй папку, залей и почисти за собой │├─ Command ────────────────────────────────────────────┤│ tar -czf - . | aws s3 cp - s3://b/k && rm -rf -- . │├─ Safety: DANGER ─────────────────────────────────────┤│ Хвостовое рекурсивное удаление $PWD. │└──────────────────────────────────────────────────────┘
Что пропускает — честно
- Экзотические glob-раскрытия, которые резолвятся в опасное в рантайме (
rm -rf $UNSET_VAR/*) — статический текст не всегда выдаёт вред. - Пользовательские скрипты. Если команда —
./deploy.sh, классификатор не видит, что внутри. - Косвенное разрушение —
dd if=/dev/zero of=/path/to/important/fileловится редко, потому что не статистически «опасный паттерн».
Бейдж — подсказка, не гарантия. Inspect-then-run — это и есть реальный механизм безопасности. Вы читаете команду, вы жмёте Enter.
См. также
- Чистка старых логов и бэкапов — где бейджи всплывают чаще всего.
- Уточнение команды — когда CAUTION кажется чрезмерным, правильное действие не обходить его, а уточнить промпт.