ucp-identity-linking — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ucp-identity-linking (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
中文摘要:通过 UCP 公共能力 dev.ucp.common.identity_linking 确立买家身份——游客结算 vs OAuth 2.0 账号绑定,申请最小 scope,把 bearer token 带进 checkout session。需要账号信息或 商家 profile 声明该能力为必需时用。dev.ucp.common.identity_linking (declared in ucp.capabilities).Otherwise prefer guest checkout — supply buyer fields inline on the checkout session. 否则用游客结算,直接在 session 上填 buyer。
dev.ucp.common.identity_linking lets a platform "obtain authorization to perform actions on a user's behalf via OAuth 2.0" (per the UCP spec). The resulting bearer token is sent on checkout requests as Authorization: Bearer {token}, alongside the required UCP-Agent header.
Two paths:
buyer: { first_name, last_name, email, phone_number } on the session.Inputs: merchant /.well-known/ucp profile (OAuth config), mode (guest|oauth), minimal scopes.
Outputs
{ "identity": {
"mode": "oauth",
"access_token": "***", // sent as: Authorization: Bearer ***
"token_type": "Bearer",
"expires_in": 3600,
"scope": "profile addresses orders.read"
} }Guest: { "identity": { "mode": "guest" } } → fill buyer on the session instead.
agent never touches raw credentials.
Authorization: Bearer {token} (plus UCP-Agent,Idempotency-Key, Request-Id). Track expires_in; refresh as needed; never log tokens.
User: "Use my Acme account so addresses autofill."
oauth, scopes profile addresses.expires_in:3600) → send Authorization: Bearer … on PUT /checkout-sessions/{id}.No write scopes requested.
ucp-checkout-session~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.