Cursor OIDC tokens — это short-lived OIDC JWT, которые Cloud Agent минтит с локального Unix socket на своей VM и использует, чтобы принять облачную роль или вызвать внутренний сервис без long-lived credentials в Secrets. Канон: OIDC tokens. Это API локально на машине агента; оно не связано с Cloud Agents API и API keys.
Соседи: Cloud Agents, Secrets, Self-Hosted Workers, Cloud Agents API. Pillar: n8n / автоматизация.
Зачем OIDC вместо ключей в Secrets
Long-lived AWS_ACCESS_KEY_ID в Secrets tab удобен, но живёт месяцами и легко утекает в transcript/commit. OIDC даёт JWT на ~5 минут под конкретный aud. Managed VM ставят claim agent_runtime: managed; self-hosted с --identity-socket — agent_runtime: self_hosted.
| Параметр | Значение по доке | Заметка |
|---|---|---|
| Socket | CURSOR_AGENT_SOCKET (managed: /run/cursor/api.sock) |
HTTP поверх Unix socket; hostname в URL игнорируется |
| Endpoint | POST /v1/tokens/oidc |
Content-Type: application/json; body ≤ 4 KB |
| Алгоритм | RS256 JWT | kid в header; проверка по JWKS |
| Issuer | https://api.cursor.com |
Не старый api2.cursor.sh |
| TTL | ~5 минут (exp = iat + 300) |
Refresh нет — минтите снова |
| Обязательный aud | да, до 512 printable ASCII | Verifier обязан резать чужой aud |
Сверка: cursor.com/docs/cloud-agent/identity (проверка 2026-09-19).
Mint с агента
В промпт агенту можно дать ссылку на док identity. Пример mint:
curl --unix-socket "${CURSOR_AGENT_SOCKET:-/run/cursor/api.sock}" \
-H 'Content-Type: application/json' \
-d '{"aud":"sts.amazonaws.com"}' \
http://cursor-agent/v1/tokens/oidc
Ответ: token (JWT) и expires_at (Unix seconds). Опционально nonce для replay binding и sub_claim (team_id / organization_id / environment_id), если verifier матчит только sub+aud. Cursor не allowlist-ит audiences — это зона вашего verifier.
Verify: discovery и JWKS
- Discovery:
https://api.cursor.com/.well-known/openid-configuration - JWKS:
https://api.cursor.com/keys - Проверяйте: RS256 + kid,
iss,aud,nbf/exp(nbf = iat − 5), нужные claims. x_cursor_audience_bound: true— не принимайте токен с чужим aud.
Старый discovery https://api2.cursor.sh/cloud-agent/identity ещё может отвечать, но minted tokens больше не несут тот issuer.
Claims, на которые опираться
Всегда есть: iss, sub (user:<id> или service_account:<id>, не email), aud, iat, nbf, exp, jti, cloud_agent_id (bcId), agent_runtime. Условно: team_id, repo_url/repo_urls, branch_name, environment_id, source (WEBSITE/API/SLACK/AUTOMATIONS), turn_id после старта coding turn. Для allowlist лучше sub / owner_user_id, не email.
Self-hosted
agent worker --pool gpu --identity-socket start
# My Machines без pool:
agent worker --identity-socket start
Флаг по умолчанию выключен. Worker открывает socket на claimed agent и выставляет CURSOR_AGENT_SOCKET. Контракт mint тот же; metadata API на self-hosted worker не отдаёт.
Trust model коротко
Токен идентифицирует Cloud Agent run, не один процесс. Агент, код, который он запустил, и hooks с доступом к socket могут минтить. Scope прав — как для всего run целиком.
Маршрут на один вечер
- Выберите cloud role / Vault audience и настройте verifier на iss + JWKS api.cursor.com.
- В промпте Cloud Agent укажите mint по identity docs с нужным aud.
- Проверьте claims (
cloud_agent_id,repo_url,team_id) в STS/IdP. - Уберите long-lived access keys из Secrets, если роль уже через OIDC.
- Для своего флота включите
--identity-socketна worker.
Типичные ошибки
- Путать OIDC socket API с Cloud Agents HTTP API (api.cursor.com/v1/agents + API key).
- Принимать токен с любым aud.
- Кешировать JWT дольше 5 минут без повторного mint.
- Строить allowlist на email вместо sub / owner_user_id.
- Забывать —identity-socket на self-hosted worker.
FAQ: Cursor OIDC tokens
Что такое Cursor OIDC tokens?
Short-lived OIDC JWT, которые Cloud Agent минтит с локального Unix socket на VM и отдаёт в AWS/GCP/Azure/Vault или ваш verifier. Канон: cursor.com/docs/cloud-agent/identity. Это не Cloud Agents API с API key.
Где минтится токен?
На машине агента через CURSOR_AGENT_SOCKET. На managed VM путь обычно /run/cursor/api.sock. Self-Hosted Workers отдают socket, если worker запущен с —identity-socket.
Сколько живёт OIDC JWT?
TTL около 5 минут: exp = iat + 300. Refresh endpoint нет — нужно минтить снова. Алгоритм RS256, issuer https://api.cursor.com.
Чем OIDC отличается от Secrets tab?
Secrets хранят long-lived креды в dashboard. OIDC выдаёт короткоживущий JWT под aud verifier без хранения AWS_ACCESS_KEY_ID в Secrets. Для cloud roles дока рекомендует OIDC.
Какие URL нужны verifier?
Issuer https://api.cursor.com, discovery https://api.cursor.com/.well-known/openid-configuration, JWKS https://api.cursor.com/keys. Старый issuer api2.cursor.sh/cloud-agent/identity больше не ставить в mint.
Кто может минтить токен на VM?
Trust model: токен идентифицирует run целиком. Любой процесс с доступом к socket (агент, его код, hooks) может минтить. Права выдавайте на уровень всего run.
Вывод
OIDC tokens — короткий JWT с socket агента под ваш aud. Issuer api.cursor.com, TTL ~5 минут, проверка через JWKS. Для управления агентами снаружи нужен отдельный Cloud Agents API; для кредов в env — Secrets tab.
Хотите нейросети под свои задачи, а не «для всех»?
Когда базовых гайдов уже мало, помогает разбор под вашу работу. Наставничество, курсы и подписка Артём Денисов — все форматы на странице обучения. Тех-pillar — n8n для начинающих.