Доступ
Приглашение, грант, принятие и отзыв доступа к major-линии.
Доступ
Грант передаёт другому аккаунту доступ к одному конкретному объектному major-линии. Это не установка сетапа, не запись в каталоге и не редактирование паспорта. Локальные байты остаются на машинах, где они уже есть. Отзыв работает только вперёд.
Эти команды требуют авторизованного аккаунта. Токен приглашения читается из именованной переменной окружения. Он никогда не передаётся как флаг командной строки.
Таблица команд
| Команда | Изменяемость | Подтверждение | Когда |
|---|---|---|---|
ai-stp grant list | read | none | приглашения и гранты major-линии, принадлежащие текущему аккаунту |
ai-stp grant invite | apply | explicit_flag | создать email-приглашение для одной точной major-линии объекта |
ai-stp grant direct | apply | explicit_flag | выдать грант одной точной major-линии явному идентификатору аккаунта |
ai-stp grant accept | apply | explicit_flag | принять приглашение по токену из именованной переменной окружения |
ai-stp grant invitation revoke | destructive | explicit_flag | отозвать одно ожидающее приглашение без удаления локальных байтов |
ai-stp grant revoke | destructive | explicit_flag | отозвать один активный грант только вперёд, сохраняя локальные байты |
--json — глобальный флаг. Всегда передавайте его. Каждая изменяющая команда
требует --confirm и --idempotency-key.
List
ai-stp grant list --json
Поля успеха: grants, invitations. Каждый грант содержит grant_id,
object_kind, stable_id, major, state, owner_account_id,
grantee_account_id, recipient, recipient_kind, created_at,
revoked_at. Каждое приглашение содержит invitation_id, object_kind,
stable_id, major, state, created_at, expires_at.
Invite
ai-stp grant invite \
--kind component \
--id <stable_id> \
--major 1 \
--email user@example.com \
--idempotency-key <key> \
--confirm \
--json
--kind — component или setup. --id — стабильный идентификатор объекта.
--major — точная major-линия. --email — верифицированный адрес получателя.
--ttl-seconds опционален; по умолчанию — семь дней.
--idempotency-key и --confirm обязательны.
Ответ — приглашение: invitation_id, object_kind, stable_id,
major, state, created_at, expires_at. Токен не содержится в
envelope. Он доставляется out-of-band.
Direct
ai-stp grant direct \
--kind setup \
--id <stable_id> \
--major 1 \
--recipient-kind github_username \
--recipient octocat \
--idempotency-key <key> \
--confirm \
--json
--recipient-kind — github_username или user_id. --recipient — значение
в этом пространстве имён. --kind, --id, --major, --idempotency-key
и --confirm обязательны.
Ответ — грант доступа: grant_id, object_kind, stable_id,
major, state, owner_account_id, grantee_account_id, recipient,
recipient_kind, created_at, revoked_at.
Accept
ai-stp grant accept \
--invitation-id <invitation_id> \
--token-env AI_STP_GRANT_TOKEN \
--idempotency-key <key> \
--confirm \
--json
--token-env именует переменную окружения, содержащую токен приглашения.
Не передавайте токен как флаг. Ответ — грант доступа той же формы, что и
у direct.
Revoke invitation, revoke grant
ai-stp grant invitation revoke \
--invitation-id <invitation_id> \
--reason "issued to the wrong address" \
--idempotency-key <key> \
--confirm \
--json
ai-stp grant revoke \
--grant-id <grant_id> \
--reason "access no longer needed" \
--idempotency-key <key> \
--confirm \
--json
--reason опционален. Оба ответа содержат revoked и
local_bytes_retained. Локальные байты сохраняются. Отзыв не удаляет
установленный target.
grant invitation revoke и grant revoke — destructive. Это отдельное
решение, отличное от просмотра списка или приглашения.
Счастливый путь
Приглашение:
grant list
→ grant invite --kind component --id <id> --major 1 --email <addr> --idempotency-key <key> --confirm
→ grant list
Принятие на машине получателя:
# токен уже в именованной переменной окружения
grant accept --invitation-id <id> --token-env AI_STP_GRANT_TOKEN --idempotency-key <key> --confirm
→ grant list
Direct:
grant direct --kind setup --id <id> --major 1 --recipient-kind user_id --recipient <account_id> --idempotency-key <key> --confirm
Именованные поля успеха
| Команда | Поля для чтения |
|---|---|
list | grants, invitations |
invite | invitation_id, expires_at, state |
direct / accept | grant_id, grantee_account_id, major, state |
invitation revoke / revoke | revoked, local_bytes_retained |
Отказы
| Что вы видите | Что это значит | Что делать |
|---|---|---|
AI_STP_AUTH_REQUIRED | нет авторизованного аккаунта | task start --intent account --idempotency-key account-session-01 --json |
AI_STP_USER_DECISION_REQUIRED | --confirm не передан | передайте --confirm после проверки kind, id и major |
AI_STP_VALIDATION_ERROR | отсутствует --idempotency-key, --token-env или --kind | прочитайте descriptor; --kind — component или setup |
AI_STP_PERMISSION_DENIED | этот аккаунт не владеет данной major-линией | owner objects; нельзя выдать грант на чужой объект |
AI_STP_NOT_FOUND | приглашение, грант или объект неизвестны | grant list |
AI_STP_CONFLICT | idempotency key уже именует другое намерение | используйте новый ключ или повторно применяйте ключ только для того же намерения |
AI_STP_PRECONDITION_FAILED | приглашение истекло или уже отозвано | grant list; отправьте новое приглашение |
| токен в командной строке | такой опции не существует | поместите его в переменную окружения и укажите имя переменной |
Major-линия — граница доступа. --major 1 не даёт доступ к 2.x.
Открытие новой major-версии через component version release --major —
другая команда.
Связанные ссылки
Флаги берутся из continuation argv
ai-stp task intents --json
Не дампьте help --agent как прелюдию. Флаги текущей задачи — в continuation argv.
Эта страница группирует команды grant, чтобы человек мог их найти. Если эта страница и CLI расходятся, следуйте CLI.