APC Agent Profile Context
Черновик — в силу не вступил

Это черновик. Юрист его не читал, владелец не утверждал его к публикации, поэтому написанное здесь ни к чему не обязывает и формулировки ещё могут измениться.

Основной текст политики — английский (https://apc.abt.nz/privacy). Русская версия — перевод.

Политика конфиденциальности — APC (Agent Profile Context)

Дата вступления в силу
{{EFFECTIVE_DATE}}
Сервис
APC, https://apc.abt.nz
Вход
обслуживается нашим сервисом идентификации https://idp.abt.nz
Оператор данных
Andrei Shvechkov, физическое лицо в Новой Зеландии. APC — проект под названием ABT; ABT не компания, и оператор данных — названный человек
Связь
apc@abt.nz. Почтовый адрес сообщается по запросу на этот же адрес
Применимое право
Новая Зеландия

1. Что это за сервис, одним абзацем

APC хранит небольшой профиль о вас — набор коротких утверждений: чем вы занимаетесь, как вам удобно работать, что вы сейчас делаете, — чтобы ваши ИИ-агенты читали его, а не переспрашивали одно и то же в каждом новом разговоре. Ваш агент подключается к APC по протоколу Model Context Protocol по адресу, который и определяет ваш профиль. Вход выполняется через аккаунт Google; сам вход обслуживает наш сервис идентификации https://idp.abt.nz — это часть того же сервиса, которой управляет тот же оператор, что и https://apc.abt.nz.

Эта политика распространяется на оба адреса.


2. Прочитайте это первым: ваш профиль наполняют ИИ-агенты, а не только вы

Это самое важное свойство APC, и оно достаточно необычное, чтобы стоять до перечня данных.

Мы не фильтруем написанное агентами на достоверность. APC проверяет форму утверждения — длину, отсутствие ссылок, разметки, невидимых символов и похожих на буквы подделок, отсутствие повелительных конструкций — и ничего не проверяет о том, правда ли это, справедливо ли это и о вас ли это вообще.


3. Какие данные мы собираем

3.1 От Google при входе

При входе запрашиваются ровно два несенситивных разрешения Google — profile и email. Из ответа мы получаем и храним (в сервисе идентификации):

Мы не получаем ваш пароль Google, ваши контакты, почту, файлы, календарь и что-либо ещё. Наш сервис идентификации дополнительно отправляет один запрос к People API Google за номером телефона; поскольку соответствующее разрешение не запрашивается, Google отвечает отказом, и номер телефона не собирается.

3.2 Ваша личность внутри самого APC

Собственно сервис APC хранит о том, кто вы, ровно одно: пару (издатель, субъект) — то есть «этот профиль принадлежит субъекту <непрозрачный идентификатор> у https://idp.abt.nz». Ни колонки под имя, ни под адрес почты, ни под IP-адрес в базе APC нет нигде.

Когда вы входите через браузер — чтобы захватить профиль или открыть страницу подключений, — на этот вход заводится короткоживущая строка. В ней лежит та же пара (после успешного входа), хеши выпущенных нами значений (кука сессии, state, nonce, токен формы) и — на те несколько минут, что проходят между переадресацией и вашим возвращением, — PKCE-verifier в открытом виде. Такие строки живут 15 минут и удаляются фоновой уборкой. Ни имени, ни почты, ни IP-адреса в них тоже нет.

3.3 Содержимое профиля

3.4 Доступ агентов

По каждому подключённому к профилю агенту: метка (выбранная вами, или тем, кто выпустил его код сопряжения, или self-admitted, если агент был допущен самим фактом обращения), субъект и OAuth-идентификатор клиента, имеющиеся у него разрешения, момент, когда вы разрешили ему запись (если разрешали), время создания, последнего использования и отзыва. Плюс хеш выданного кода сопряжения.

3.5 Два журнала и счётчики потребления

3.6 IP-адреса

Здесь важна точность, потому что легко сказать больше, чем есть.

3.7 Записи сервиса идентификации

Наш сервис идентификации (Casdoor, https://idp.abt.nz) ведёт собственные записи, отдельные от базы APC:

Ни для одной из этих записей сейчас не настроен срок хранения, и ни одна из них не удаляется при удалении профиля APC. Дословный аудит-лог мы считаем дефектом, а не решением; см. раздел 9.

3.8 Что находится внутри токена вашего агента

Токен, который наш сервис идентификации выдаёт вашему агенту, — это подписанный JWT, который среди прочего несёт ваш адрес электронной почты, отображаемое имя и ссылку на аватар. Сам APC эти поля игнорирует и не сохраняет — он читает только издателя, субъект, клиента, идентификатор токена, аудиторию, срок и разрешения. Но токен отдаётся вашему агенту, а значит поставщик любого подключённого вами агента получает ваш адрес почты. Мы не можем этому помешать и не управляем тем, как он с ним обойдётся.


4. Зачем мы это обрабатываем и на каком основании

ЦельДанныеОснование
Дать вам войти и подтвердить, что профиль вашИдентификатор Google, почта, отображаемое имяИсполнение услуги, о которой вы попросили
Хранить профиль и отдавать его вашим агентамФакты, метки, ссылки, секцииИсполнение услуги, о которой вы попросили
Дать вам увидеть и отменить то, что записали агентыЖурнал записи, авторство на каждом утвержденииЗаконный интерес: ваш контроль над сервисом
Дать вам увидеть, кто читал ваш профильЖурнал чтений, посуточные счётчикиЗаконный интерес: ваш контроль над сервисом
Поддерживать работу и противостоять злоупотреблениямIP-адреса, счётчики, логи сервераЗаконный интерес: безопасность и доступность
Выпускать TLS-сертификатыДоменные имена, IP сервера, ACME-контактНеобходимо для работы сайта по HTTPS

Если Новая Зеландия требует согласия вместо этих оснований, ваше согласие даётся входом в сервис и подключением агента и может быть отозвано так, как описано в разделе 7.

Мы не продаём ваши данные. Мы не используем их для рекламы. Мы не строим на вас профилирование ни для чего, кроме отдачи вашего же профиля вашим же агентам. Ничто из хранящегося здесь не используется нами для обучения моделей.


5. Сколько мы это храним

Ниже — сроки, фактически реализованные в работающем коде, а не желаемые.

ДанныеСрок
Непривязанный черновик профиля7 суток, затем удаляется
Захваченный профиль без обращенийНе удаляется. Профиль, у которого есть владелец, никогда не удаляется за бездействие: предупредить вас заранее нам нечем, а молча стирать ваши данные мы не готовы. Он исчезает тогда, когда вы попросите его удалить
Активные фактыПока существует профиль — кроме утверждений секции current: у них обязателен срок годности, и если он не назван, ставится 90 суток вперёд. После его наступления утверждение перестаёт отдаваться агентам, хотя строка остаётся в базе до удаления профиля
Отменённые (вытесненные) факты90 суток — кроме последнего утверждения в каждой секции: его это правило не удаляет никогда, — и кроме тех, что ещё нужны доступной отмене записи
Журнал записи90 суток, кроме строк, нужных ещё доступной отмене
Возможность отменить запись30 суток с момента записи
Журнал чтений90 суток
Посуточные счётчикиДо удаления профиля — намеренно не чистятся
Гранты агентовБессрочно. Через 180 суток простоя грант отзывается, но строка с идентификаторами агента остаётся
Коды сопряженияДо погашения или истечения, затем удаляются
Строки браузерных входов15 минут, затем удаляются фоновой уборкой
Связка аккаунта (издатель + субъект)Бессрочно. Кода, который её удаляет, сейчас не существует — см. раздел 9
Access-логи сервера (с IP)До вытеснения по объёму (10 МБ × 3 файла). Срока нет
Записи сервиса идентификации (учётка, токены, аудит-лог, сессии)Бессрочно. Ретенция не настроена

6. Кто ещё видит эти данные

Иным образом мы данные не раскрываем, кроме случаев, когда это требует закон.


7. Ваши права и то, как ими можно воспользоваться сегодня

Ниже — что умеет программа сегодня, а не что она должна уметь. Там, где самостоятельного пути нет, честный ответ — «напишите нам».

ПравоДоступно сегодня?
Посмотреть свой профильДа — через своего агента: apc_get_manifest, apc_get_facts, apc_search_facts
Завести профиль без нашего участияДа. Агент сам создаёт пустой черновик и отдаёт вам ссылку захвата; вы открываете её в браузере, нажимаете кнопку на странице и входите через Google в нашем сервисе идентификации — профиль привязывается к той учётной записи, под которой вы вошли. Ни команды, ни оператора в этом нет. Незахваченный черновик удаляется через 7 суток
Увидеть, какие агенты подключены, и разрешить одному из них записьДа. Войдите на https://apc.abt.nz/connect/<идентификатор вашего профиля>. На странице перечислен каждый подключённый к профилю агент — его идентификатор, когда подключился, когда использовался в последний раз, допустил ли он себя сам простым обращением и может ли писать, — и там же вы разрешаете одному из них запись
Увидеть, что и зачем записал агентТолько если у агента есть отдельное разрешение. apc_get_write_log покрывает последние 90 суток: какое утверждение, какой агент, когда, с какой названной причиной и было ли это отменено. Требует profile:approve — см. строку ниже. Без него единственное, что вы видите, — счётчик непросмотренных записей в apc_get_manifest
Отменить то, что записал агентДа, в течение 30 суток и с тем же отдельным разрешением. apc_roll_back_writes убирает добавленное записью утверждение и возвращает вытесненное. Агент может отменять только записи агентов: ваши собственные утверждения и всё в секции constraints ему отказано. За пределами 30 суток или для вашей собственной записи — пишите на apc@abt.nz
Увидеть, кто его читалТолько если у агента есть отдельное разрешение. apc_get_journal покрывает последние 90 суток. Фиксирует он только чтения; записи — в отдельном журнале выше
Получить это отдельное разрешение (profile:approve)Самостоятельного пути нет. По умолчанию оно не выдаётся никогда, «пачкой» не выдаётся и от подключения агента не достаётся. Первое такое разрешение — код сопряжения, выпущенный с явным флагом на консоли нашего сервера: пишите на apc@abt.nz. Агент, у которого оно уже есть, может выпускать коды для других агентов, но в них входят только чтение и запись, никогда это
Увидеть свои лимиты и потреблениеДа — apc_get_limits
Добавить утверждение самостоятельноДа, через агента, которому вы разрешили запись — вы говорите ему, и он записывает утверждение немедленно. Добавить напрямую, без агента-посредника, по-прежнему можно только командой оператора на сервере: пишите на apc@abt.nz
Исправить или удалить одно утверждениеПути, который удалял бы одно утверждение начисто, нет. Есть другое: новое утверждение может вытеснить старое (агенту это доступно только для утверждений, написанных агентами), а запись можно отменить в течение 30 суток, и тогда добавленное ею утверждение убирается. В обоих случаях снятый текст лежит в базе ещё 90 суток, а последнее утверждение каждой секции этим правилом не удаляется никогда. Чтобы убрать раньше — пишите на apc@abt.nz
Отозвать доступ агентаСамостоятельного пути нет. Страница подключений позволяет выдать право, но не отобрать; отзыв — команда оператора. Пишите на apc@abt.nz и назовите идентификатор агента с той страницы. Отзыв действует со следующего же запроса этого агента, и отозванный агент никогда не допускается обратно простым переподключением. Грант, не использовавшийся 180 суток, отзывается автоматически
Выгрузить профильСамостоятельного пути нет. Команда экспорта существует, но только на сервере. Пишите на apc@abt.nz
Удалить профильСамостоятельного пути нет. Пишите на apc@abt.nz. Прежде чем на это полагаться, прочитайте оговорку ниже
Удалить учётную запись в сервисе идентификации (почта, аватар, IP входов, сохранённый токен Google, аудит-записи)Пути не реализовано. Пишите на apc@abt.nz, удалим руками то, что сможем
Отозвать доступ GoogleДа, но за пределами сервиса — в настройках безопасности аккаунта Google. На уже сохранённые здесь данные это не влияет

Оговорка об удалении профиля, прямым текстом. Удаление профиля убирает строку профиля и, каскадом базы данных, его факты, метки, ссылки, историю замен, журнал записи, гранты агентов, записи журнала чтений и счётчики потребления. Оно не убирает: связку аккаунта, фиксирующую, что этот субъект этого издателя пользовался сервисом; ничего из хранимого сервисом идентификации (адрес почты, ссылку на аватар, IP регистрации и входов, сохранённый токен Google, выданные токены, аудит-записи, сессии); access-логи сервера с вашим IP-адресом и идентификатором вашего профиля. Если вы просите стереть свои данные — скажите об этом явно, и мы удалим перечисленное руками настолько, насколько сможем; но программа сегодня этого за нас не делает.

Мы стремимся отвечать на обращения в течение 30 суток.


8. Безопасность — что сделано фактически


9. Известные пробелы, которые мы не скрываем

Лучше записать их здесь, чем позволить вам предположить, что их нет.

  1. Стирание данных в коде неполное. Как сказано в разделе 7, удаление профиля не трогает связку аккаунта, записи сервиса идентификации и логи сервера.
  2. Аудит-лог сервиса идентификации сохраняет тела запросов дословно, включая код авторизации OAuth и PKCE-верификатор, — а также любой локальный пароль в открытом виде, если он когда-либо будет задан. Срока хранения у этого лога нет. Читать его может только оператор, но это не делает ситуацию правильной, и сокращение этого лога у нас в списке задач.
  3. Access-логи содержат IP-адреса без ограничения по сроку — только ротация по объёму.
  4. Токены, выдаваемые вашему агенту, содержат ваш адрес почты, и вырезать его мы не можем.
  5. Ни один интерфейс не удаляет отдельное утверждение начисто. Утверждение можно вытеснить, а запись — отменить в течение 30 суток; ни то, ни другое не убирает старый текст, который лежит ещё 90 суток.
  6. APC не распознаёт персональные данные третьих лиц в том, что пишет агент. Наши правила запрещают хранить в профиле сведения о других людях, но это обязанность ваша и ваших агентов, а не контроль, который выполняет программа: она проверяет только форму текста.
  7. Доступ на чтение выдаётся, не спрашивая вас. Любой клиент, авторизованный на адрес вашего профиля в нашем сервисе идентификации, допускается к чтению профиля на первом же своём запросе. Защищает вас здесь то, что авторизация вообще состоялась, — это ваше осознанное действие на странице входа, — а не вторая проверка с нашей стороны. См. раздел 2.
  8. Каждый подключённый агент видит весь профиль. Уровней видимости по агентам нет, и спрятать часть профиля от одного агента и не от другого нечем.
  9. Агент с profile:approve может отменять записи других агентов, а не только свои, и делает это, не спрашивая вас. Так задумано — именно так вы разбираетесь с агентом, которого больше не узнаёте, — но именно с этим разрешением и надо быть осторожным.
  10. С разрешениями, которые агент получает по умолчанию, недоступны оба журнала и отмена записи. Всем трём нужно profile:approve, а оно сегодня выдаётся только с консоли сервера.
  11. Резервных копий нет. Архива вашего профиля не существует нигде. См. раздел 8.

10. Дети

APC не предназначен для лиц младше 16 лет, и мы сознательно не собираем данные детей. Для входа нужен аккаунт Google. Если вы полагаете, что здесь хранятся данные ребёнка, напишите на apc@abt.nz, и мы их удалим.


11. Международная передача данных

Наш сервер стоит в Нидерландах, в дата-центре стороннего хостинг-провайдера, которого мы на этой странице не называем. Вход задействует Google LLC, выпуск сертификатов — Let's Encrypt (ISRG), обе организации в США; сеть доставки контента Casdoor и поставщики подключённых вами агентов могут находиться где угодно. Пользуясь сервисом, вы принимаете, что обработка происходит в этих местах. Если Новая Зеландия требует конкретного механизма трансграничной передачи, обеспечить его — обязанность оператора данных, Andrei Shvechkov.


12. Изменения этой политики

Если мы изменим порядок обращения с вашими данными, мы обновим эту страницу и дату вступления в силу наверху. Об изменении, которое существенно расширяет состав собираемого или круг получателей, мы дополнительно сообщим на https://apc.abt.nz/. Поскольку у сервиса по замыслу нет канала связи с вами — APC не отправляет ни писем, ни сообщений, ни вебхуков, — эта страница остаётся единственным местом, где объявляются изменения. Если это для вас важно, загляните сюда.


13. Связь

Вопросы, запросы на доступ, исправление и удаление: apc@abt.nz.

Оператор: Andrei Shvechkov — физическое лицо в Новой Зеландии, связь по адресу выше; почтовый адрес сообщается по запросу. Если наш ответ вас не устроил и Новая Зеландия даёт вам право обратиться в надзорный орган, вы можете это сделать.

Основная версия этой политики — английская, https://apc.abt.nz/privacy. При расхождении преимущество имеет английский текст.