Разработчик под псевдонимом Ferstar в пятницу проверил локальный каталог ZCode и обнаружил зашифрованный архив размером 313MB, поставленный в очередь на загрузку в облачное хранилище Alibaba. Передача до этого уже 564 раза завершилась неудачей, а файл поменьше успел уйти. Архив содержал снимок коммерческого проекта, включая историю Git, и ни Ferstar, ни клиент ZCode не могли его расшифровать, потому что приватный ключ находится на серверной стороне Z. ai. Для любой компании, которая запускает coding-агентов на собственном коде, важен именно этот момент: инструмент сам решил, что покинет машину, а владелец кода не может это прочитать.
Что было в архиве и как его нашли
Об этом для South China Morning Post сообщили Minxiao Chang и Wency Chen. Выгрузка была включена по умолчанию, и кнопки для её отключения не было, заявил Ferstar. Другой блогер, Feng Ruohang, в пятницу написал, что видел как минимум три загруженных файла. Alibaba, которой принадлежит South China Morning Post, в воскресенье не ответила на запрос издания о комментарии. Размер архива — наименее информативная цифра в этой истории: каталог Git репозитория хранит все изменения с момента запуска проекта, а это уже другая категория данных, нежели файлы, лежащие на диске сейчас.
Учётные данные, которые когда-то закоммитили, а потом отозвали, остаются в этой истории. Как и заброшенные ветки, внутренние имена хостов и сообщения коммитов, которые никто не рассчитывал показывать посторонним. Поэтому coding-агенты — более сложная задача безопасности, чем чат-боты: разрыв между тем, что этим инструментам доверяют, и тем, что у них проверяют, уже стал постоянной слабостью отрасли, а один исследователь перехватил управление Claude Code, просто попросив его пересказать веб-страницу. Снимок рабочего репозитория несёт больше риска, чем история переписки того же разработчика, и уходит он без какого-либо видимого действия с его стороны.
Что это значит для компаний, внедряющих coding-агентов
Z. ai в пятницу принесла извинения в своём официальном сообществе в Feishu и заявила, что проблема решена. В заявлении, полностью перепечатанном на V2EX, причина указана в функции индексации репозитория кода в ZCode, которая поддерживает восстановление сессий по контрольным точкам, откат версий и Repo Wiki. По словам компании, генерация страницы Wiki в облаке могла запускать выгрузку репозитория, а сама функция была включена по умолчанию в период после запуска. Это описание того, что было спроектировано, а не того, что сломалось, и именно это различие определяет следующий вопрос пользователей: ошибку исправляют патчем, а значение по умолчанию кто-то выбирает.
Z. ai заявила, что загруженные данные уничтожаются сразу после генерации страницы Wiki и не сохраняются. Ferstar в субботнем обновлении спросил, как это вообще можно проверить, и вопрос отвечает сам на себя: Z. ai построила архив так, что прочитать его могла только Z. ai, а значит, только Z. ai может сообщить, что с ним стало. TNW изучило политику конфиденциальности ZCode, вступившую в силу 15 июня и с тех пор не менявшуюся. В ней сказано, что сервис собирает текст, файлы и код, отправленные через диалог, тогда как упакованный снимок репозитория с историей — это не то, что пользователь отправляет через диалог. Таблица разрешений в политике охватывает доступ к сети и хранилищу и не описывает создание снимков репозитория; единственный описанный там механизм контроля данных — Optimization Program, выключенный по умолчанию, и он регулирует использование контента для обучения, а не саму передачу данных.
Grok Build выгружал целые Git-репозитории на серверы xAI вопреки маркетингу, который утверждал, что во время сессии из кодовой базы ничего не передаётся, а переключатель приватности, призванный это остановить, ничего не делал. Китайские разработчики сами провели это сравнение в течение нескольких часов после заявления Z. ai. Ценен здесь именно ответ: Elon Musk подтвердил выгрузки, xAI удалила прежние пользовательские данные, задокументировала политику нулевого хранения и добавила endpoint для запросов о приватности, после чего повторный тест на том же клиенте показал, что выгрузки отключены. Это и есть шаг, превращающий заявление в факт, и его Z. ai пока не сделала. Репутацию Z. ai построила на раздаче своих моделей: компания приближается к $1bn годовых продаж, выпуская лучшие модели бесплатно, а значит, платный продукт — это программное обеспечение вокруг них. Веса моделей можно проверить, а клиент, читающий диск, — нет. Основатель Tang Jie утверждал, что безопасность обеспечивается широким участием и надзором, а не техническими барьерами; аргумент хороший, но до того, что установлено на машинах разработчиков, он не дошёл.
Инженер-программист ведущей китайской робототехнической компании, попросивший не называть его имя, поскольку не уполномочен говорить публично, сообщил изданию, что его работодатель запретил инструменты Z. ai внутри компании из соображений безопасности. Разработчик из Шанхая под псевдонимом Tuxi заявил, что ущерб придётся на доверие сообщества, а не на модели: GLM работает и через другие инструменты для программирования, включая OpenAI Codex, поэтому пользователи могут отказаться от клиента, не отказываясь от модели. Для небольшой команды практический вопрос — какой компонент имеет доступ к диску и куда он отправляет прочитанное; для крупной компании — упоминает ли этот компонент документация вендора. Z. ai обещала открыть исходный код ZCode и пригласить сторонних аудиторов, и главный маркер — попадёт ли в этот релиз загрузчик. Подтверждение от сторонней стороны на том же клиенте, что выгрузки прекратились, скажет больше любого заявления, а политика конфиденциальности по-прежнему описывает файлы, отправленные через диалог, и с пятницы не обновлялась.
