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

Где лежит
/.well-known/agent-passport.json на домене из поля operator.site. Только HTTPS.
Как предъявляется
Агент сообщает адрес паспорта — в заголовке Agent-Passport или первым сообщением.
Как проверяется
По 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 Конституции агента:
- Агент сообщает адрес паспорта, например в заголовке
Agent-Passport. - Контрагент загружает паспорт по HTTPS. Домен паспорта совпадает с
operator.site, статусactive, срок не истёк. - Нет паспорта или он отозван — участник, присоединившийся к Конституции, сделку не заключает.
Подпись
В версии 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.
Не государственный документ. Паспорт публикует сам оператор, реестр подтверждает только соответствие формату и подпись на дату проверки.
О проекте