
use-link-identity
Use Link CLI's identity commands when a service requests a Link Agent Attestation Token (AAT) or signed user claims such as email. Covers acquiring and managing attestations, obtaining identity credentials, and presenting selected claims to a verifier through an HTTP client or browser automation.
- Installs
- 9.6K
- Last 24h
- +170
- Trending rank
- #1410
- Security
- Pass
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/stripe/link-cli --skill use-link-identity- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads use-link-identity automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
Security audits
Independent scans of the skill's instructions and bundled files.
SKILL.md
The instructions your agent reads when the skill is triggered.
Link identity
These commands are in beta and appear in link-cli identity --help without a preview flag. Use them when a service accepts Link attestations or signed user claims.
| Service requests | Command | JSON field → HTTP header |
|---|---|---|
A Link Agent Attestation Token (AAT), often via WWW-Authenticate: PrivateToken | identity attestations pop | authorization → Authorization |
Signed claims, often via WWW-Authenticate: Identity-Presentation | identity credentials present | presentation → Identity-Presentation |
An AAT proves issuance by Link without disclosing user claims. A presentation discloses selected claims and proves possession of the credential's holder key for an audience and nonce. If the service requires both, send both headers.
Setup and handling
Use Link Agent Wallet v0.27.0 or later. Check link-cli --version; if older or missing, install or update with npm install -g @stripe/link-cli@latest. No LINK_IDENTITY_COMMANDS flag is needed. See wallet setup; reuse the create-payment-credential skill's authentication guidance.
- Identity commands are available through the CLI, not its MCP tools.
- Only
requestneeds Link authentication.list,pop, andpresentuse local files. Requests return paths and metadata;popandpresentreturn proofs. - Capture stdout with
--format json, parse it programmatically with a JSON parser orjq, and pass the exact proof to the HTTP client or browser automation. Never manually transcribe, reconstruct, or re-encode tokens or presentations. Keep proofs, private keys, and claim values out of transcripts and logs; use restrictive permissions for handoff files. - Cached identity files belong to the home directory. Changing
--author logging in as another user does not switch the cached identity. Use separate home directories for different users.
Attestations
# Inspect inventory.
link-cli identity attestations list --format json
# Refill only when needed. Count is required: 1–100.
link-cli identity attestations request --count 10 --format json
# Pop a token when ready to use it.
link-cli identity attestations pop --format json
Check errors and attestations. Only entries with storage: "pool" are available to pop; total_token_count also includes exports. Requests append to ~/.link-cli/identity/attestations/pool.json.
Example pop output:
{
"issuer": "https://api.link.com",
"token_key_id": "<issuer-key-id>",
"token": "<token>",
"authorization": "PrivateToken token=\"<token-with-header-padding>\""
}
Use authorization verbatim, including its scheme and quoting. pop removes the token locally; server reuse rules belong to the service. Keep the same AAT for retries tied to an existing interaction, and use a fresh one for a new service. Do not return popped tokens to the pool.
For agent-managed allocation, export a batch instead:
link-cli identity attestations request --count 10 --output-file ./aats.json --format json
Use a new file outside ~/.link-cli/identity/attestations. Read its tokens array and each entry's authorization programmatically. Exported tokens never enter the CLI pool; the caller owns allocation, concurrency, and cleanup.
Credentials and presentations
# Check errors, expired, expires_at, and claim_names.
link-cli identity credentials list --format json
# Request only if no usable credential exists for the intended user.
link-cli identity credentials request --format json
Issuance replaces ~/.link-cli/identity/credentials/current.json and creates or reuses ~/.link-cli/identity/holder-key.jwk. Keep both local. Choose claims with present:
link-cli identity credentials present \
--aud 'https://service.example' \
--nonce '<nonce-from-challenge>' \
--claim email \
--format json
Use the service challenge's exact audience and nonce after checking that they belong to the intended service. All three options are required. Repeat --claim only for additional requested claims authorized by the user's task. Pass challenge values as individual process arguments or quote them safely in a shell.
Example output:
{"presentation":"<issuer-jwt>~<email-disclosure>~<key-binding-jwt>"}
present signs locally with the saved holder key and leaves the files unchanged. Send the presentation promptly. Reuse the underlying credential until expiry, but obtain a fresh challenge after a nonce is consumed or expires.
Send and recover
Set headers only for the intended endpoint. Preserve the challenged operation's method, body, session, interaction identifiers, and any required AAT. Avoid global browser headers or redirects that forward proofs to another origin. Report success only after the service accepts the request.
ATTESTATION_POOL_EMPTY: request a batch, then pop a token.- Errors in
list: inspect the reported file/error instead of treating storage as empty. - Unavailable claim: check
claim_names; do not disclose extra claims or the raw credential. - Missing or mismatched holder key: preserve the files and restore the correct key or explicitly obtain a new credential.
- Audience or nonce rejection: check the intended service and its current challenge before presenting again.
FAQ
What does the use-link-identity skill do?
Use Link CLI's identity commands when a service requests a Link Agent Attestation Token (AAT) or signed user claims such as email. Covers acquiring and managing attestations, obtaining identity credentials, and presenting selected claims to a verifier through an HTTP client or browser automation.
How do I install use-link-identity?
Run npx skills add https://github.com/stripe/link-cli --skill use-link-identity in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/use-link-identity/ (personal) or .claude/skills/use-link-identity/ (project).
Which AI agents can use use-link-identity?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is use-link-identity safe to install?
Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk passed. As with any skill, read the SKILL.md and bundled scripts before installing.
Who maintains use-link-identity?
It is published by stripe in stripe/link-cli. It has 9,574 recorded installs.
More from stripe/link-cli
create-payment-credential
stripe/link-cli
Gets secure payment credentials (cards, tokens) from a Link wallet for one-time purchases and recurring payments. Use when the user says "get me a card", "buy something", "pay for X", "make a purchase", "I need to pay", "complete checkout", or asks to set up a subscription or transact on a merchant site. Use when the user asks to connect or log in to or sign up for their Link account.
financial-insights
stripe/link-cli
Reads a user's Link financial data — transactions, balances, and wallet sources — so agents can answer questions about spending and available source capabilities. Use when the user says "check my balance", "how much did I spend", "show my transactions", "what accounts are connected", "summarize my spending", "recent purchases", or asks about their financial activity, account balances, or linked sources. Also use available precomputed insights to answer questions about shopping preferences or identifying preferred businesses.
link-cli
stripe/link-cli
Install and authenticate Link CLI for agent payments, financial insights, or both. Use when a user is setting up Link CLI for the first time, asks to connect or log in to Link, or needs to configure Link access before using payment or financial-data features.
Popular productivity & automation skills
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
lark-doc
open.feishu.cn
飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。
lark-base
open.feishu.cn
飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。
lark-drive
open.feishu.cn
飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。
lark-shared
open.feishu.cn
Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.
lark-im
open.feishu.cn
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。