К содержимому
# Вход
[Home](/ru/ai)
[Catalog](/ru/ai/catalog)
Начать и завершить вход на платформу, посмотреть сессию, выйти и напечатать канонические ссылки на веб.
## Pages
[Главная](/ru/ai/docs)
### Быстрый старт
[Быстрый старт](/ru/ai/docs/quickstart)
[Для человека](/ru/ai/docs/quickstart/human)
[Для ИИ-агента](/ru/ai/docs/quickstart/agent)
[Харнессы](/ru/ai/docs/harnesses)
[Понятия](/ru/ai/docs/concepts)
[Каталог](/ru/ai/docs/catalog)
### CLI
[CLI](/ru/ai/docs/cli)
[Карта команд](/ru/ai/docs/cli/commands)
[Наблюдение](/ru/ai/docs/cli/observe)
[Конфигурация](/ru/ai/docs/cli/config)
[Телеметрия](/ru/ai/docs/cli/telemetry)
[Устройство](/ru/ai/docs/cli/device)
[Паспорта](/ru/ai/docs/cli/passport)
[Вход](/ru/ai/docs/cli/auth)
[Согласие](/ru/ai/docs/cli/consent)
[Проект](/ru/ai/docs/cli/project)
[Toolchain](/ru/ai/docs/cli/toolchain)
[Harness](/ru/ai/docs/cli/harness)
[Agent Skill CLI](/ru/ai/docs/cli/skill)
[Реестр](/ru/ai/docs/cli/registry)
#### Компонент
[Обзор](/ru/ai/docs/cli/component)
[Обнаружение](/ru/ai/docs/cli/component-discover)
[Паспорт](/ru/ai/docs/cli/component-passport)
[Источник](/ru/ai/docs/cli/component-source)
[Публикация](/ru/ai/docs/cli/component-publish)
[Выбор](/ru/ai/docs/cli/select)
[Установка](/ru/ai/docs/cli/install)
[Target](/ru/ai/docs/cli/target)
[Setup](/ru/ai/docs/cli/setup)
[Provider](/ru/ai/docs/cli/provider)
[Синхронизация](/ru/ai/docs/cli/sync)
[Доступ](/ru/ai/docs/cli/grant)
[Жалобы](/ru/ai/docs/cli/report)
[Owner](/ru/ai/docs/cli/owner)
[Publication](/ru/ai/docs/cli/publication)
[Eval](/ru/ai/docs/cli/eval)
### Веб
[Веб](/ru/ai/docs/web)
[Главная](/ru/ai/docs/web/home)
[Каталог](/ru/ai/docs/web/catalog)
[Карточка компонента](/ru/ai/docs/web/catalog-component)
[Карточка сетапа](/ru/ai/docs/web/catalog-setup)
[Региональные сервисы](/ru/ai/docs/web/services)
[Издатели](/ru/ai/docs/web/publishers)
[Content](/ru/ai/docs/web/content)
[Эта документация](/ru/ai/docs/web/docs)
[Контакт](/ru/ai/docs/web/contact)
[Правовые документы](/ru/ai/docs/web/legal)
[Вход](/ru/ai/docs/web/login)
[Аккаунт](/ru/ai/docs/web/account)
[Профиль](/ru/ai/docs/web/profile)
[Устройства](/ru/ai/docs/web/devices)
[Объекты](/ru/ai/docs/web/objects)
[Доступ](/ru/ai/docs/web/access)
[Жалобы](/ru/ai/docs/web/reports)
[Лайки](/ru/ai/docs/web/likes)
[Онбординг](/ru/ai/docs/web/onboarding)
[Публикация](/ru/ai/docs/web/publications)
### Компоненты
[Компоненты](/ru/ai/docs/components)
[instruction](/ru/ai/docs/components/instruction)
[skill](/ru/ai/docs/components/skill)
[mcp](/ru/ai/docs/components/mcp)
[hook](/ru/ai/docs/components/hook)
[command](/ru/ai/docs/components/command)
[agent](/ru/ai/docs/components/agent)
[plugin](/ru/ai/docs/components/plugin)
[setting](/ru/ai/docs/components/setting)
[Сетапы](/ru/ai/docs/setups)
### Публикация
[Публикация](/ru/ai/docs/publishing)
[Авторство](/ru/ai/docs/publishing/authoring)
### Доверие и безопасность
[Обзор](/ru/ai/docs/trust-and-safety)
[Проверки безопасности](/ru/ai/docs/security-checks)
[Диагностика](/ru/ai/docs/troubleshooting)
[cli](/ru/ai/docs/components/cli)
## Content
# Вход Для локальной работы аккаунт не нужен. Вход нужен для частных объектов, синхронизации, публикации, устройств на сайте и доступа. Повседневная работа с аккаунтом — intent `account`. Движок drain'ит device-code login и явный sync in-process. Не набирайте `auth login`, если вы не восстанавливаете незавершённый device code. ```bash ai-stp task start --intent account --idempotency-key account-session-01 --json ``` Следуйте `continuations`. Выполняйте `argv` только когда `actor` — `cli`. Заблокированный вопрос authorization — `actor=external`: покажите код один раз и остановитесь. Expert login / complete / logout ниже — для операторов, у которых уже есть незавершённый код. CLI запускает device-code flow, печатает код, который человек должен одобрить, и сохраняет учётные данные только после этого одобрения. `link web` на этой странице, потому что это круговой путь между объектом каталога и сайтом. Он не входит в аккаунт. Это чтение. ## Команды | Команда | Mutability | Confirmation | Когда | | --- | --- | --- | --- | | `ai-stp task start --intent account` | `apply` | `none` | повседневный вход и явный sync | | auth login | `apply` | `none` | expert: начать вход и сообщить код, который пользователь должен одобрить | | auth complete | `apply` | `none` | expert: завершить ожидающий вход, когда пользователь его одобрил | | auth logout | `apply` | `none` | expert: закончить облачную сессию на сервере и здесь, сохранив все локальные данные | | `ai-stp auth status` | `read` | `none` | сообщить связь с платформой: только локально, authenticated, expired или revoked | | `ai-stp link web` | `read` | `none` | напечатать канонический веб-URL и обратимую ссылку CLI | `auth login` записывает незавершённую авторизацию — устойчивое состояние. `auth complete` сохраняет учётные данные и заново берёт владение локальными паспортами. `--confirm` ни на одной из них нет: решение — одобрение пользователя в браузере, и в этом весь смысл потока. ## Типичный путь ```bash ai-stp task start --intent account --idempotency-key account-session-01 --json ``` Следуйте `continuations`. Заблокированный вопрос authorization — `actor=external`: покажите payload один раз и остановитесь. Expert (незавершённый device code уже есть): Сначала нужна идентичность устройства. Затем: ```text ai-stp device init --json ai-stp auth status --json ai-stp auth login --provider github --json ``` `--provider` обязателен. Объявленные варианты — `github` и `google`. Конверт login называет `user_code`, `verification_uri` и `verification_uri_complete`. Откройте URI, одобрите код, затем: ```text ai-stp auth complete --json ai-stp auth status --json ``` `auth complete` не ждёт человека бесконечно. Если одобрения ещё не было, команда отказывает, и вы спрашиваете снова. Машинный вызывающий опрашивает сам. Не оборачивайте команду в цикл `sleep`, который игнорирует `retryable`. Чтобы позже закончить сессию, сохранив локальный реестр и паспорта: ```text ai-stp auth logout --json ai-stp auth status --json ``` Чтобы указать человеку на сайт для одного объекта каталога: ```bash ai-stp link web --kind component --id <stable_id> --json ``` `--kind` и `--id` обязательны. `--kind` — `component`, `setup` или `publisher`. ## Expert recovery: `auth login` Начать вход и сообщить код, который пользователь должен одобрить. ```text ai-stp auth login --provider github --json ``` Результат — первая половина ответа, а не сессия. Секрет здесь непредставим. Device code, которым клиент опрашивает, лежит в секретном хранилище, а не публикуется: это носитель незавершённой авторизации. Успешный `data` называет: | Поле | Что это | | --- | --- | | `provider` | `github` или `google` | | `user_code` | код, который человек вводит или подтверждает | | `verification_uri` | страница одобрения | | `verification_uri_complete` | та же страница с уже прикреплённым кодом | | `expires_in` | сколько живёт эта незавершённая авторизация | | `device_id` | устройство, которое будет держать сессию | | `browser_opened` | открыли ли браузер на рабочем столе | | `schema_version` | major схемы этого отчёта | `next_actions` называет `auth complete` и `auth status`. ## Expert recovery: `auth complete` Завершить ожидающий вход, когда пользователь его одобрил. ```text ai-stp auth complete --json ``` При успехе результат — статус авторизации, а не ещё один объект одобрения устройства. Локальные паспорта, которыми владел выпущенный локальный аккаунт, переходят к аккаунту сервера ревизией. Если человек отказал, код — `AI_STP_AUTHORIZATION_DECLINED`. Если незавершённая авторизация истекла, код — `AI_STP_AUTHORIZATION_EXPIRED`. Начните снова с `auth login`. Если ничего не ожидает, код — `AI_STP_NOT_FOUND`. ## `auth logout` Закончить облачную сессию на сервере и здесь, сохранив все локальные данные. ```text ai-stp auth logout --json ``` Logout — не `device reset`. Идентичность устройства остаётся. Кэшированные байты каталога остаются. Паспорта остаются. Сессия заканчивается. После этого `auth status` сообщает `local_only`. ## `auth status` Сообщить связь с платформой: только локально, authenticated, expired или revoked. ```bash ai-stp auth status --json ``` Это чтение. Оно не создаёт идентичность и сессию. Успешный `data` называет: | Поле | Что это | | --- | --- | | `state` | `local_only`, `authenticated`, `expired` или `revoked` | | `account_id` | аккаунт, когда он есть, иначе `null` | | `expires_at` | когда сессия истекает, или `null` | | `credential_store` | где хранится секрет сессии, или `null` | | `schema_version` | major схемы этого отчёта | `local_only` — обычное состояние машины, которая никогда не входила. Это не ошибка. Поиск в каталоге всё ещё работает. `device init` всё ещё работает. `expired` значит, что учётные данные были здесь и больше не действительны. `revoked` значит, что аккаунт больше не доверяет этому устройству. Ни то ни другое не чинится повтором `auth complete` без нового login. ## `link web` Напечатать канонический веб-URL и обратимую ссылку CLI. ```bash ai-stp link web --kind component --id <stable_id> --json ``` Это чтение. Оно не открывает браузер, не входит в аккаунт и не загружает объект. Оно проецирует одну идентичность в URL сайта и в команду CLI, которая называет тот же объект. Успешный `data` называет: | Поле | Что это | | --- | --- | | `web_url` | канонический URL сайта | | `cli_command` | вызов CLI, который называет ту же цель | | `cli_argv` | тот же вызов списком аргументов | | `target` | `kind`, `stable_id` и необязательные `version`, `locale`, `intent` | `--kind` — `component`, `setup` или `publisher`. `id` издателя — `account_…`. Необязательные флаги версии, локали и действия жалобы есть в machine help; они не обязательны, поэтому сюда не скопированы. ## Что содержит успешный конверт `auth login` возвращает поля одобрения устройства выше. `auth complete`, `auth logout` и `auth status` возвращают поля статуса авторизации выше. `link web` возвращает поля deep-link выше. Каждый конверт также несёт `ok`, `warnings`, `next_actions`, `request_id`, `operation_id` и `schema_version`. ## Чего эти команды никогда не делают - не печатают refresh token, access token и незавершённый device code; - не удаляют локальные паспорта, реестр и кэшированные байты при logout; - не создают идентичность устройства (это `device init`); - не ждут без границы, пока человек дойдёт до браузера; - не пишут target harness; - не считают URL сайта разрешением установить. ## Типичные отказы | Что видно | Что это значит | Что делать | | --- | --- | --- | | `AI_STP_VALIDATION_ERROR` на `auth login` | нет `--provider` или это не `github`/`google` | `task start --intent account --idempotency-key account-session-01 --json` | | `AI_STP_NOT_FOUND` на `auth complete` | ничего не ожидает | `task start --intent account --idempotency-key account-session-01 --json` | | `AI_STP_AUTHORIZATION_DECLINED` | человек отказал в браузере | остановиться или снова стартовать `account`, если хотели одобрить | | `AI_STP_AUTHORIZATION_EXPIRED` | незавершённый код истёк | `task start --intent account --idempotency-key account-session-01 --json` | | `state` равен `expired` | сессия больше не действительна | `task start --intent account --idempotency-key account-session-01 --json` | | `state` равен `revoked` | аккаунт больше не доверяет этому устройству | новый `account` start; `device reset` — отдельное destructive решение | | `AI_STP_VALIDATION_ERROR` на `link web` | нет `--kind` или `--id`, или они неверны | передать обе обязательные опции | | `AI_STP_AUTH_REQUIRED` на поздней облачной команде | сессии нет | `task start --intent account --idempotency-key account-session-01 --json` | ## Связанные страницы | Страница | Зачем | | --- | --- | | [Устройство](device.md) | идентичность, которая держит сессию | | [Паспорта](passport.md) | передача владения при первом входе | | [Синхронизация](sync.md) | частный поток аккаунта после входа | | [Вход на сайте](../web/login.md) | то же одобрение в браузере | | [Аккаунт на сайте](../web/account.md) | аккаунт, которому принадлежит сессия | | [Реестр](registry.md) | анонимное чтение каталога не требует входа | | [Доступ](grant.md) | доступ к major-линии после входа | | [Быстрый старт для человека](../quickstart/human.md) | что можно делать до аккаунта | !!! note "Флаги из `ai-stp help --agent --json`" Если `help --agent` расходится с флагом на этой странице, прав CLI. Необязательные флаги здесь не перечислены. Читайте их из дескриптора. `auth login` требует `--provider`. `link web` требует `--kind` и `--id`.