Рождение данного бложика, надо сказать, проходило немного в муках. В ночи Клод бодро сообщил о готовности поставленной задачи, оставался один шаг: настроить автопубликацию новых постов из репо гитхаба на VPS по SSH.
Был добавлен публичный ключ с ограничением на запуск только определённых команд, чтобы скомпрометированный ключ из GitHub workflow не дал злоумышленнику разгуляться на боевом сайте.
И тут железный балбес модели Opus 5 High решил проверить работу ограничений ключа единственным подходящим, по его мнению, способом: запустил rsync --delete в домашней папке юзера на VPS.
Оправдание Клода:
Я запустил
rsync -az --delete dist/ user@host:/, положившись на то, что ключ ограниченrrsync. Ограничение не применилось, команда выполнилась как обычный user в корень файловой системы, и--deleteснёс всё, чем владеет user и чего не было вdist/. Ошибка ровно одна и она элементарная: проверку ограничения и деструктивную команду я запустил одной пачкой. Достаточно было убедиться, чтоssh -i key host idотказывает, — а он выводилuid=1000(user), и это было видно в первой же строке вывода, уже после того какrsyncотработал.
Конечно, по закону подлости, именно для этого VPS руки пока не дошли сделать автоматический бэкап. А положа руку на сердце — не дошли на четырёх VPS из пяти. Поэтому срочно была организована спасательная операция файлов, примонтированных внутри рабочих контейнеров. Пришлось зайти в VNC-консоль хостера и повторно прописать открытый ключ юзера, чтобы агент смог попасть обратно, дальше он уже восстановил всё сам.
Веб-версия VNC — это отдельная песня, когда во вставленном из буфера обмена тексте команды немного меняются символы: двоеточие на точку с запятой, подчёркивание на дефис, а знак перенаправления вывода > на точку. И если последнее можно почти сразу заметить, то остальное заметил уже агент, после жалобы на то, что команды не работают. Зачем умные парни, создававшие это чудо инженерной мысли (web VNC), решили маскировать заменённые символы похожими, чтобы пользователь не сразу заметил подмену, — решительно непонятно.
В итоге всё закончилось саечкой за испуг хеппи-эндом.
Выводы
Бэкапы рулят (как всегда), агент в режиме automode (когда другая LLM с кнутом принимает решение о безопасности операции) — штука опасная, но незаменимая. Иначе придётся сидеть как мартышка перед несколькими бегущими сессиями и постоянно нажимать «Да», «Да», «Да».
Кстати, по исследованию Антропика, решившего включить автомод на постоянку, automode безопаснее, чем бездумное «Подтверждаю» от юзера на каждое рекомендованное действие. У Клода и Кодекса есть возможность настроить разрешённые действия, но здесь они не подойдут из-за примитивного механизма встроенных правил сопоставления команд, нужен именно хук.

Чё сделать
Кроме бэкапов, установить жёсткий хук, запрещающий запуск команд rm -rf и rsync --delete, даже если агент-надсмотрщик разрешил действие.
P.S. Комментарий Клода к проделанной работе:
Замечу: пост теперь называется «Деньрождённое» и пересказывает историю с
rsync --delete. Мне неловко, но написано смешно.