OIDC 短期身份令牌
从 Agent 本地 socket 获取签名 JWT,并按 audience、主体和运行范围授权。
OIDC token 让运行中的 Agent 向云平台或内部服务证明身份,无需保存长期 key。它通过执行机器的本地 Unix socket 获取,与外部 Cloud Agents API 的 API Key 认证不同。
获取令牌
下面命令由运行环境中的 Agent 或脚本执行:
curl --unix-socket "${CURSOR_AGENT_SOCKET}" \
-H 'Content-Type: application/json' \
-d '{"aud":"sts.amazonaws.com"}' \
http://cursor-agent/v1/tokens/oidc托管 VM 的 CURSOR_AGENT_SOCKET 为 /run/cursor/api.sock;URL hostname 被忽略。请求必须 POST JSON,body 最多 4 KB,aud 为无空白的可打印 ASCII,最长 512 字符。
响应包含 token 和 Unix 秒 expires_at,有效期 5 分钟,无 refresh endpoint,到期重新 mint。可选 nonce 用于验证方的重放绑定;可选 sub_claim 将支持的 claim 投影为 <name>:<value> 主体,目前支持 team_id、organization_id、environment_id,缺值或不支持会失败。
验证方配置
| 配置 | 当前地址 |
|---|---|
| Issuer | https://api.cursor.com |
| Discovery | https://api.cursor.com/.well-known/openid-configuration |
| JWKS | https://api.cursor.com/keys |
验证 RS256 签名、kid、iss、预期 aud、nbf/exp 和授权主体。Cursor 不限制请求者选择 aud,所以接收端必须拒绝其他 audience;旧 api2.cursor.sh/cloud-agent/identity 仍提供 discovery,但已不是新 token 的 issuer。
默认 sub 为 user:
自托管与信任范围
worker 默认不提供身份 socket,需要 agent worker --identity-socket start,pool 也使用此开关。每个 claim 有独立 socket,token 带 agent_runtime:self_hosted,托管为 managed。
token 代表整个运行,能访问 socket 的代码、Hooks 和 Agent 都可 mint;自托管同一 OS 用户的其他进程也可访问。它不证明某条调用只来自模型本身,授权范围应按整个运行确定。
频率与错误
每个 claimed Agent 每分钟最多 30 次,突发最多 10;socket 最多 8 个并发连接,托管环境与 metadata 共用。缓存尚未过期 token,避免每个 API 调用都 mint。
429、503、500、502、504 使用退避重试并遵循 Retry-After;403 视为不可继续的授权失败。换取 AWS/GCP 等服务凭据仍需出站网络,即使 mint 本身走本地 socket。