Данные · 152-ФЗ
Как устроена обработка данных
Не пересказ закона, а описание устройства: что агент трогает, что оседает на диске, на какой срок и куда уходит. Всё, что здесь написано, собрано по коду и проверяемо в нём.
Заявки с сайта · На диске · Куда уходят данные · Расширение · Вопросы
Заявки с сайта
Что мы делаем с данными из форм на сайте
Оператор данных из форм на сайтах capyagent.ru и capyagent.com - ИП Смольников Кирилл Георгиевич. Он же правообладатель CapyAgent.
- Что собираем. Имя, Telegram, телефон или почту, текст заявки и необязательные ответы про CRM и размер команды. Вместе с заявкой приходят страница сайта, с которой её отправили, предыдущая страница (реферер) и метки рекламной ссылки (UTM), если они были.
- Зачем. Чтобы ответить на заявку и понять, с какой страницы она пришла. Рассылок нет.
- Куда попадает. Заявка приходит в Telegram владельца, и читает её он сам.
- Согласие. Форма отправляется только с отмеченным согласием.
- Связь. Вопросы и отзыв согласия - на hello@capyagent.ru.
Роли
Кто оператор, а кто обработчик
Вы - оператор. Это ваши клиенты, ваши сотрудники и ваши согласия. Вы решаете, зачем данные обрабатываются, и отвечаете за это перед человеком, чьи данные обрабатываются.
Мы - обработчик. Мы обрабатываем по вашему поручению и в ваших интересах. Своих целей у нас нет: данные не идут в рекламу, не продаются и не обучают модели.
Поэтому к договору прикладывается отдельное поручение на обработку - того требует часть 3 статьи 6 152-ФЗ. Шаблон мы даём вместе со счётом.
Если вы поставили агента себе сами, CapyAgent не получает ваши локальные файлы и историю. Они остаются на вашей машине; наружу передаётся то, что нужно выбранной модели, каналам и сервисам, которые вы сами подключили, и, с версии 1.3.8, анонимная статистика установки (раздел «Статистика установки»). Роли по закону зависят от вашего конкретного сценария обработки.
На диске
Что оседает и на сколько
Сроки не обещание, а поведение кода: где написано «удаляется», там есть уборка, а где «пока не удалите» - её нет.
| Что | Где | Сколько лежит |
|---|---|---|
| Переписка с агентом | файл истории чата | пока не удалите командой |
| Заметки памяти и портрет собеседника | файлы памяти | пока не удалите |
| Дневник разговоров с цитатами | файлы по дням | 90 дней, дальше уборка |
| Присланные документы и картинки | каталог обмена | 24 часа |
| Длинные выводы команд | каталог обмена | 24 часа |
| Придержанные опасные действия | файл подтверждений | 30 минут |
| Недоставленные ответы | очередь отправки | до доставки, максимум 6 часов |
| Журнал действий агента | файл журнала | по объёму: последние 10 000 записей |
| Запись голоса | нигде: только в памяти на время распознавания | не хранится |
Наружу
Куда данные уходят
Кроме анонимной статистики установки с версии 1.3.8 (отдельный раздел ниже), каждый внешний адрес появляется из выбранной модели, канала или сервиса, который включил владелец установки.
- Поставщику модели уходит содержание разговора: вопрос, история переписки, заметки памяти, тексты документов и картинки, если модель умеет смотреть. Это происходит при каждом ответе - иначе агент не думает.
- В распознавание речи уходит запись голоса, если голос включён. По умолчанию это Яндекс, российский сервис.
- В канал общения уходит ответ агента: Telegram, Discord или портал Битрикс24, смотря где вы с ним говорите.
- В ваши же системы уходит то, ради чего всё затевалось: письма, сделки, звонки, документы.
Про границу. Если выбрана зарубежная модель, содержание разговора уходит за пределы России, и это трансграничная передача со всеми последствиями 152-ФЗ: уведомление и основание для передачи - обязанность оператора, то есть ваша. Если это не подходит, в настройках выбирается российская модель - GigaChat или YandexGPT, - и агент работает так же.
Полный перечень адресов, куда способно обратиться ядро, лежит открытым текстом в файле deploy/egress-allowlist.txt. Он не документация: сборка не проходит, если в коде появился адрес, которого нет в списке, или в списке остался адрес, которого больше нет в коде.
Расширение для браузера
Что читает боковая панель Chrome
Панель CapyAgent для браузера - тонкий клиент к ядру, которое работает на вашей же машине. Своего сервера у неё нет, учётной записи она не заводит и наружу сама не ходит: единственный адрес, куда браузер разрешает ей обращаться, - http://127.0.0.1/*, то есть ваш компьютер. Это не обещание, а поле host_permissions в манифесте, которое проверяет сам браузер.
Что читает и когда
- Содержимое открытой вкладки - только по вашему нажатию, только при поставленной галочке «Приложить контекст открытой страницы» и только с той вкладки, которая сейчас перед вами. Берутся адрес, заголовок, выделенный текст и до 20 000 знаков видимого текста страницы.
- Без этого нажатия расширение вкладки не читает: фонового сбора нет. Служебные страницы браузера (
chrome://,about:, страницы расширений) не читаются вовсе. - Ваш вопрос ассистенту и аргументы вызова инструмента - ровно то, что вы набрали в самой панели.
Куда это уходит
- В ядро CapyAgent по адресу, который вы вписали в настройках панели: по умолчанию
http://127.0.0.1:18800, то есть на этот же компьютер. Обращение подписывается токеном доступа, который печатает само ядро при запуске. - Дальше решает ядро, а не расширение. Если у вас подключена модель, текст запроса вместе с приложенной страницей уходит тому поставщику модели, которого выбрали вы, и по правилам, описанным выше в разделе «Куда данные уходят».
- К нам данные из панели не идут ни в каком виде: у расширения нет ни одного адреса за пределами вашей машины.
Что расширение хранит у вас в браузере
- Адрес ядра и токен доступа к нему - ключи
addrиtoken, чтобы не вводить их при каждом открытии панели. - Идентификатор разговора панели - ключ
chat, случайная строка видаext-a1b2c3d4, чтобы история браузера не смешивалась с историей Telegram. - Больше ничего. Переписку, которую видно в панели, расширение не сохраняет: лента живёт в открытом окне панели, и при следующем открытии панель показывает её пустой. Ключей в хранилище ровно три, названы выше.
- Всё это лежит в хранилище расширения (
chrome.storage.local) на вашем компьютере, в профиле браузера. Удаление расширения удаляет адрес ядра, токен доступа и идентификатор разговора - и только их. Переписка от этого не пропадает: её ведёт и хранит ядро на вашей машине, в своём каталоге данных, и удаляется она там.
Чего расширение не делает
- Ничего не собирает и не отправляет никуда, кроме вашего ядра: кода отправки в нём нет. Статистику установки с версии 1.3.8 шлёт приложение, а не расширение.
- Не читает пароли, куки и содержимое полей ввода и не передаёт их.
- Не подгружает код из интернета: весь код лежит в самом пакете, без
eval, без внешних скриптов и без CDN. - Не продаёт данные, не передаёт их третьим лицам и не использует для оценки кредитоспособности.
Зачем каждое разрешение
activeTab- прочитать текущую вкладку по вашему нажатию, и только её.scripting- выполнить на этой вкладке короткую функцию, которая собирает видимый текст. Другого кода на страницу не попадает.sidePanel- показать саму панель сбоку от страницы.storage- запомнить на вашей машине три значения, названные выше: адрес ядра (addr), токен доступа (token) и идентификатор разговора панели (chat). Больше в хранилище ничего не кладётся.host_permissions: http://127.0.0.1/*- обращаться к ядру на вашем компьютере. Ни одного внешнего адреса в этом списке нет, и добавить его расширение само не может.
Статистика установки
Что приложение отправляет нам с версии 1.3.8
Версии до 1.3.7 не отправляют ничего. Начиная с 1.3.8 приложение отправляет анонимную статистику установки. Текста разговоров, файлов, ключей, путей, имени пользователя и имени компьютера в ней нет.
Какие поля уходят
- id - случайный номер установки: 32 символа из случайных байтов, создаются при установке и лежат в файле
.install-stats-idв каталоге данных. Он привязан к установке, а не к человеку или компьютеру. - event - что произошло:
install,first_run,update_check,updatedилиrollback. - version - версия приложения.
- os и arch - система и архитектура, например
linuxиamd64. - channel -
stableилиtest. - kind - вид установки:
cli,desktopилиcell.
Других полей нет.
Зачем
Чтобы считать, сколько установок живо и на каких версиях и системах, и решать, что поддерживать.
Когда и куда
В конце установки, при первом запуске десктопа, при проверке и применении обновления. Отдельной отправки при каждом запуске нет. Каждая отправка - один GET-запрос на https://capyagent.ru/dl/ping, а если он не прошёл, на https://capyagent.com/dl/ping. Сервер отвечает пустым ответом 204. Если ответа нет за пару секунд, отправка отбрасывается и ничего не ждёт.
Сколько хранится
Запрос попадает в журнал веб-сервера: адрес, с которого он пришёл, время, поля выше и название программы. Журнал хранится 14 дней, потом удаляется. Пока запись лежит в журнале, у неё есть IP-адрес, поэтому говорить, что адрес нигде не хранится, было бы неверно. Счётчики считает отдельная программа: по номеру установки она считает уникальные установки за день, а в итоговые файлы пишет только числа, без адресов и без номеров.
Как отключить
- Переменная окружения
CAPYAGENT_NO_STATS=1: её понимают установщики, ядро и десктоп. Ядро иinstall.shпонимают такжеNO_STATS=1. - В десктопе - переключатель «Анонимная статистика включена» в разделе «О программе». Он включён по умолчанию. Если задана переменная
CAPYAGENT_NO_STATS=1, включить статистику переключателем нельзя. - У командной строки переключателя в настройках нет, только переменная. Вопроса при установке тоже нет: отправка включена, пока вы её не отключите.
Проверка обновлений ходит к нашему серверу только если владелец включил обновление по сети.
Честно
Что честно назвать неудобным
Раздел существует потому, что документ без него читается как реклама.
- Шифрования данных на диске нет. Файлы доступны только пользователю службы: сам файл 0600, каталог 0700. Если машину получил кто-то с правами администратора, он прочитает всё. В облаке ночная копия шифруется до отправки, но живой диск - нет.
- У переписки, заметок и портрета нет срока хранения. Они лежат, пока вы не удалите их командой. Автоматической уборки для них не существует, и это осознанное устройство личной памяти, а не упущение.
- Удалённое живёт в копиях. Заметка, стёртая командой «забудь», остаётся в точках отката памяти и во всех снятых до этого резервных копиях. Чтобы убрать её оттуда, копии нужно удалить отдельно.
- В журнале маскируются секреты, но не персональные данные. Ключи и токены не попадут в журнал никогда, а имя, телефон и текст ошибки с адресом почты - попадут.
Страница обновляется, когда меняется устройство, а не раз в год. Что изменилось и когда - в журнале изменений.
Вопросы
Что спрашивают
Вы обучаете модель на наших данных?
Можно, чтобы данные не покидали Россию?
Как удалить всё?
Кто у вас имеет доступ к машине?
Нужно ли нам уведомлять Роскомнадзор?
Дальше
Спросите про данные до подписания
Покажем на живом примере, что именно уходит наружу в вашей задаче, и дадим шаблон поручения на обработку.