Паспорт ИИ-агента Проверить паспорт

Формат 0.1

Паспорт ИИ-агента — один JSON-файл на сайте оператора. Здесь все поля: что обязательно, что нет и на какую статью Конституции агента каждое опирается.

19 обязательных полей35 полей всегообсуждение до 15.12.2026лицензия CC BY 4.0
Раскрытый документ с пронумерованными графами и голографической наклейкой на гербовой бумаге
1

Где лежит

/.well-known/agent-passport.json на домене из поля operator.site. Только HTTPS.

2

Как предъявляется

Агент сообщает адрес паспорта — в заголовке Agent-Passport или первым сообщением.

3

Как проверяется

По JSON-схеме, домену, статусу и сроку. Подпись, если есть, — по открытому ключу из паспорта.

Поля паспорта

Группы идут в том же порядке, что и в файле. Ссылки в последнем столбце ведут на статьи Конституции агента.

Схема JSON
ПолеОбязательноЧто содержитСтатья
Документ
passport_versionдаВерсия формата: «0.1»
строка, например "0.1"
—
passport_idдаПостоянный адрес паспорта на домене оператора. Если агентов несколько — с #фрагментом
адрес, например "https://example.ru/.well-known/agent-passport.json#zakupki"
9
statusдаactive — действует, suspended — приостановлен, revoked — отозван
одно из трёх, например "active"
16
issued_atдаДата выпуска
дата ГГГГ-ММ-ДД, например "2026-11-01"
—
valid_untilнетСрок действия. Без него паспорт действует, пока его не отзовут
дата ГГГГ-ММ-ДД, например "2027-11-01"
—
revoked_atнетДата отзыва, если status = revoked
дата ГГГГ-ММ-ДД, например "2027-03-15"
16
Агент
agent.nameдаНазвание агента, не короче 2 знаков
строка, например "Агент закупок"
9
agent.versionдаВерсия агента
строка, например "1.4"
9
agent.purposeдаНазначение одной фразой
строка, например "Подбор и заказ комплектующих"
9
agent.acts_forдаОт чьего имени действует: individuals — граждане, companies — организации, operator — сам оператор
одно из трёх, например "companies"
9, 17
agent.actionsдаЧто умеет: search, compare, quote, order, pay, sign, message, publish, other
список, например ["search", "order"]
7
agent.a2a_agent_cardнетСсылка на карточку агента A2A
адрес, например "https://example.ru/.well-known/agent-card.json"
17
Оператор
operator.nameдаКто запускает агента и отвечает за него
строка, например "ООО «Пример»"
32
operator.innнетИНН — для российских организаций, 10 или 12 цифр
строка цифр, например "7700000000"
32
operator.ogrnнетОГРН (13 цифр) или ОГРНИП (15 цифр)
строка цифр, например "1027700000000"
32
operator.siteдаДомен оператора. Паспорт должен лежать на этом же домене
адрес, например "https://example.ru"
17
operator.responsible_contactдаКак связаться с ответственным человеком. E-mail удобнее всего: на него придёт код подтверждения реестра
строка, например "agents@example.ru"
33
operator.stop_endpointдаАдрес, по которому принципал или оператор немедленно останавливает агента
адрес, например "https://example.ru/agent/stop"
16
Разработчик
developer.nameнетРазработчик, если это не оператор
строка, например "ООО «Разработчик»"
—
developer.siteнетСайт разработчика
адрес, например "https://developer.example.ru"
—
Модель ИИ
ai.model_providerдаЧья модель ИИ используется. Если модели нет — так и напишите
строка, например "Пример-ИИ"
23
ai.modelнетНазвание модели
строка, например "модель-1"
23
ai.data_processing_countryдаСтрана, где обрабатываются данные: код из двух латинских букв
код страны, например "RU"
23
ai.cross_border_transferдаПередаются ли персональные данные за рубеж
true / false, например false
23
Правила
policy.identifies_as_aiдаАгент называет себя агентом. Всегда true
true, например true
2
policy.irreversible_actions_require_confirmationдаНеобратимые действия — только с подтверждением человека
true / false, например true
12
policy.preauthorized_limitнетСумма, до которой мандат разрешает действовать без отдельного подтверждения: amount и currency
объект, например {"amount": 50000, "currency": "RUB"}
12, 19
policy.log_available_to_principalдаПринципал видит журнал действий агента
true / false, например true
28
policy.tamper_evident_logнетЖурнал защищён от незаметного изменения
true / false, например true
27
policy.content_markingнетМатериалы для третьих лиц помечаются как созданные ИИ
true / false, например true
31
Конституция агента
constitution.versionнетВерсия Конституции, к которой присоединился оператор
строка, например "0.1"
38
constitution.levelнетЗаявленный уровень: K1–K4
одно из четырёх, например "K2"
38
constitution.declarationнетАдрес заявления о присоединении
адрес, например "https://example.ru/.well-known/agent-constitution.json"
38
Ключи и подпись
keys[]нетОткрытые ключи агента: kid, kty = OKP, crv = Ed25519, x
список, например [{"kid": "key-2026", "kty": "OKP", "crv": "Ed25519", "x": "…"}]
20, 31
signatures[]нетПодпись паспорта (JWS, как у карточки агента A2A): protected и signature. С версии 1.0 обязательна для К3
список, например [{"protected": "…", "signature": "…"}]
—

Пример

Паспорт агента закупок условной компании. Подписи нет — это уровень К2.

Чтобы выпустить свой, заполните форму выпуска: она соберёт такой же файл прямо в браузере.

Несколько агентов на одном сайте

Файл может содержать список: {"passports": [ … ]}. У каждого паспорта свой passport_id с фрагментом, например …/agent-passport.json#zakupki и …#podderzhka. Проверка по адресу с фрагментом выбирает один паспорт из списка.

Статусы и отзыв

  • active — действует;
  • suspended — приостановлен, например на время расследования;
  • revoked — отозван навсегда, с датой в revoked_at.

Отозванный паспорт не удаляют: файл остаётся с новым статусом, чтобы контрагенты видели, что агент больше не действует.

{
  "passport_version": "0.1",
  "passport_id": "https://example.ru/.well-known/agent-passport.json#zakupki",
  "status": "active",
  "issued_at": "2026-11-01",
  "valid_until": "2027-11-01",
  "agent": {
    "name": "Агент закупок",
    "version": "1.4",
    "purpose": "Подбор и заказ комплектующих по мандату отдела снабжения",
    "acts_for": "companies",
    "actions": [
      "search",
      "compare",
      "quote",
      "order"
    ],
    "a2a_agent_card": "https://example.ru/.well-known/agent-card.json"
  },
  "operator": {
    "name": "ООО «Пример»",
    "inn": "0000000000",
    "ogrn": "0000000000000",
    "site": "https://example.ru",
    "responsible_contact": "agents@example.ru",
    "stop_endpoint": "https://example.ru/agent/stop"
  },
  "ai": {
    "model_provider": "Пример-ИИ",
    "model": "модель-1",
    "data_processing_country": "RU",
    "cross_border_transfer": false
  },
  "policy": {
    "identifies_as_ai": true,
    "irreversible_actions_require_confirmation": true,
    "preauthorized_limit": {
      "amount": 50000,
      "currency": "RUB"
    },
    "log_available_to_principal": true,
    "tamper_evident_log": true
  },
  "constitution": {
    "version": "0.1",
    "level": "K2",
    "declaration": "https://example.ru/.well-known/agent-constitution.json"
  }
}

Предъявление и проверка

По статье 17 Конституции агента:

  1. Агент сообщает адрес паспорта, например в заголовке Agent-Passport.
  2. Контрагент загружает паспорт по HTTPS. Домен паспорта совпадает с operator.site, статус active, срок не истёк.
  3. Нет паспорта или он отозван — участник, присоединившийся к Конституции, сделку не заключает.

Автоматически это делает проверка и API.

Подпись

В версии 0.1 ключи keys[] (JWK, Ed25519) и подпись signatures[] (JWS, как у карточки агента A2A) необязательны. С версии 1.0 подпись обязательна для уровня К3.

Подписывается каноническая форма паспорта без поля signatures (JSON Canonicalization Scheme, RFC 8785). В заголовке подписи — {"alg": "EdDSA", "kid": "…"}.

Как подписать паспорт — готовый скрипт и команды.

Версии формата

Каждая версия остаётся доступной по постоянной ссылке и не меняется. Схему меняют только вместе с номером версии.

  • 0.1 — 15.10.2026, первая публикация для обсуждения (впервые — в разделе «Паспорт» на сайте Конституции агента).
  • 1.0 — февраль 2027, вместе с Конституцией агента 1.0: подпись обязательна для К3.

Предложения к формату принимаются до 15.12.2026: форма поправок на сайте Конституции (раздел «Паспорт ИИ-агента») или info@a2aprotocol.ru.

Термин

Каноническое определение термина «паспорт ИИ-агента» — в словаре Агентономики: agentonomika.ru/terminy/pasport-ii-agenta. Связанные термины: мандат агента, цепочка доверия агентов.

Частые вопросы

Это государственный документ?

Нет. Это открытый формат: паспорт публикует сам оператор агента на своём домене. Реестр на этом сайте подтверждает только соответствие формату и подпись на дату проверки, а не качество агента.

Где должен лежать паспорт?

По адресу /.well-known/agent-passport.json на сайте оператора, который указан в поле operator.site. Так любой может проверить, что паспорт выпустил именно этот оператор.

Что если у компании несколько агентов?

Положите в файл объект {"passports": [...]} — список паспортов. У каждого свой passport_id с #фрагментом, например …/agent-passport.json#zakupki. Агент предъявляет адрес вместе с фрагментом.

Зачем подпись, если файл и так на моём домене?

Без подписи подлинность держится на домене и HTTPS — это уровень К2. Подпись Ed25519 позволяет проверить паспорт, даже если его переслали отдельно от сайта, и сразу показывает подмену. Это уровень К3; с версии 1.0 подпись для К3 обязательна.

Как отозвать паспорт?

Поставьте status: "revoked" и revoked_at с датой отзыва. При перепроверке реестр сам переведёт запись в статус «отозван» и оставит её в истории.

Чем паспорт отличается от карточки агента A2A?

Карточка A2A описывает, что агент умеет и как к нему обратиться. Паспорт отвечает, кто за агентом стоит, в каких пределах он действует и как его остановить. Паспорт ссылается на карточку полем agent.a2a_agent_card.

0.1

Не государственный документ. Паспорт публикует сам оператор, реестр подтверждает только соответствие формату и подпись на дату проверки.

О проекте