mcpField
C
clerk-cli

clerk-cli

github.com/clerk开发8934.2k 次安装今天更新
代码仓库

关于 clerk-cli

clerk-cli 是用于 Clerk 身份验证、项目配置和资源管理的命令行工具,提供经过认证的 API 访问,并支持项目关联、环境密钥获取及 Clerk 数据管理。

主要功能

  1. 01调用经过认证的 Backend 和 Platform API
  2. 02关联项目并获取环境密钥
  3. 03管理实例配置
  4. 04通过 OpenAPI 目录查找端点
  5. 05执行变更前预览

适用场景

  1. 01列出或更新 Clerk 用户和组织
  2. 02将代码库关联到 Clerk 应用
  3. 03应用配置更改前先行检查

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/clerk/skills --skill clerk-cli

安装后在 Claude Code 中输入/clerk-cli确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
agent-mode.md
auth.md
recipes.md

详细介绍

Clerk CLI

clerk 二进制文件是访问 Clerk Backend API 和 Platform API 的预认证网关,也提供项目级工具(身份验证、关联、拉取环境变量、实例配置)。用户提出任何涉及 Clerk 资源的请求时,优先使用 clerk,而不是手动编写 curl 命令。

对于设置或 init 请求,请以 clerk-setup 技能为准。该技能关于包运行器、无需账户、迁移以及优先使用 init 的指导,优先于下方的一般操作前提条件。

此技能适用于 clerk latest。如果 clerk --version 与最新可用 CLI 版本不一致,请使用 clerk update 更新,或通过 bunx clerk@latest 等包运行器调用最新版本。二进制文件始终是事实依据,因此请运行 clerk <command> --help 核实此技能中的所有说明。

执行环境(优先使用主机,并了解沙盒警告)

大多数 AI 编码 Agent 默认在沙盒中运行 shell 命令,而沙盒可能会限制访问用户主目录、OS 钥匙串、启动浏览器、绑定 localhost 回调或访问网络。Clerk CLI 依赖所有这些主机能力:

  • OS 凭据存储:clerk auth login 会将 OAuth 令牌存储在系统钥匙串中。无法访问钥匙串的沙盒即使在主机上已通过身份验证,也会报告“未登录”。
  • 主目录中的 Clerk 状态:已保存的配置、缓存的元数据和回退凭据都位于用户的 Clerk 配置/数据目录中。
  • 已关联的项目元数据:根据仓库的 git 远程地址和 Clerk 配置解析。仓库状态不完整或无法读取主目录的沙盒可能会错误报告“未关联”。
  • 本地 .env* 文件:由 clerk env pull 写入的 publishable key 和 secret key。
  • 到 Clerk 的出站网络访问:所有 Backend API 和 Platform API 调用都需要此访问权限。
  • 浏览器 + localhost OAuth 回调:clerk auth login 两者都需要。

在 Agent 模式下,CLI 现在会在依赖主机环境的库边界执行尽力而为、仅警告一次的检查。当检测到主机专属的 Clerk 状态或系统能力不可用时,它会输出:

Host-only Clerk state or system capabilities may be unavailable in agent mode. This may be a sandboxed run.
Re-run this command on the host shell before trusting auth, link, env, or API failures.

请将此警告视为权威信息。命令可能会继续执行,但在主机上重新运行同一命令之前,该次调用产生的任何身份验证、关联、环境变量、配置、API、浏览器或 OAuth 回调失败都不可信。

请优先在用户的主机 shell 中运行以下命令,而不是在沙盒中:

clerk doctor、clerk whoami、clerk auth login、clerk link、clerk env pull、 clerk apps ...、clerk config ...、clerk api ...。

如果命令意外在沙盒中运行,并报告 Not logged in、auth_required、not linked、缺少环境变量、钥匙串/文件权限错误或网络故障,不要将结果视为权威信息。请先在主机上重新运行该命令,再据此采取行动或向用户报告。

调用 CLI

运行任何 clerk 命令之前,先确定要调用哪个二进制文件,并在本次会话的其余时间内固定使用该选择:

# 1. Prefer a globally installed binary when it matches the skill's target version.
command -v clerk >/dev/null 2>&1 && clerk --version

如果输出 latest 或任何你信任的版本,本次会话的其余时间内直接使用 clerk。

否则,按以下顺序回退到包运行器(与 CLI 自身的 preferredRunner 逻辑一致;该逻辑优先选择与项目锁文件相匹配的运行器):

项目包管理器调用方式
bun(bun.lock*)bunx clerk@latest
npm(package-lock.json)npx -y clerk@latest
pnpm(pnpm-lock.yaml)pnpm dlx clerk@latest
yarn >= 2(yarn.lock)yarn dlx clerk@latest

Yarn Classic(v1)不支持 dlx;将这类项目视为“没有首选运行器”,并回退到上面列表中第一个位于 PATH 上的运行器。

发布到 npm 的包名是 clerk,而不是 @clerk/cli。不要将 npm install -g clerk 作为主要安装方式。如果全局 CLI 已过时,或其行为与此技能不同,请升级全局安装,或回退到上面的 latest 运行器形式。

前提条件(非安装操作需在会话开始时运行)

除非正在执行 clerk-setup,否则在会话中运行其他 Clerk 命令之前,请验证 CLI 已通过身份验证、已关联且运行正常:

clerk --version               # confirm the binary is on PATH
clerk doctor --json           # structured health check; exit 1 if anything failed

务必先运行 clerk doctor --json。 它会提前发现常见的设置问题(未登录、项目未关联、缺少密钥、CLI 版本过旧),避免后续命令因令人困惑的错误而失败。在 Agent 模式下,它还会包含 Host execution 检查;如果 Clerk 的主机端配置 / 凭据目录不可写,该检查会发出警告,这是当前调用很可能运行在沙箱中的权威信号。

每项结果都包含 name、status(pass/warn/fail)、message、可选的 detail、可选的 remedy(修复方法)以及可选的 fix(可自动修复问题的标签)。请解析结果并采取相应操作,或将其告知用户。如果 Host execution 发出警告,请在主机上重新运行命令,然后再相信同一次沙箱运行中的任何身份验证 / 关联 / 环境变量 / API 失败信息。如果后续命令开始出现异常,请重新运行 clerk doctor --json。

如果 clerk --version 报告的 CLI 版本比此技能涵盖的版本更新,请优先参阅 clerk <command> --help,并从源代码更新此技能包。反之亦然:--accountless 和 accountless JSON 键从 CLI 3.3+ 开始提供;在较旧的 CLI 上,请使用 --keyless 别名或升级。

无账户设置

clerk init 不需要运行 clerk auth login:对于支持无账户设置的框架,在未登录且未指定 --app 的情况下进行引导,或在 Agent 运行时未登录且未指定 --app、也没有现有项目关联时,都会创建一个未认领的无账户应用,并提供临时开发密钥——无需账户、无需浏览器、无需标志。(已退出登录的用户在现有项目中重新运行此命令时,会进入登录流程;--accountless 则会强制使用临时密钥路径。)之后,大多数实例命令仅凭该密钥即可运行。

使用前请注意两点:无账户路径会使用本地现有的任何 sk_ 密钥,包括 sk_live_,无论其是否已认领——因此,如果你指的是实际应用,请传入 --app <id>;clerk open 返回的认领 URL 等同于凭据,绝不可粘贴到日志或 PR 中。

哪些命令需要账户以及完整规则:auth.md。

心智模型

层级功能命令
会话 / 项目身份验证、将代码库关联到 Clerk 应用、拉取环境密钥auth login、link、unlink、whoami、env pull、doctor
实例配置管理特定实例的配置(社交登录提供方、会话时长等)config pull、config schema、config patch、config put
后端 API(默认)运行时数据:用户、组织、会话、邀请、JWT 模板、Webhookclerk api <path>
平台 API(--platform)账户级数据:应用、实例、账单clerk api --platform <path>
前端 API(--fapi)实例面向客户端的公开 API(clerk-js 调用的 API)clerk api --fapi <path>

通过 clerk link 将项目“关联”到应用。关联后,大多数命令会根据代码库的 git 远程地址自动解析目标应用和开发实例。若要指定其他目标,请传入 --app <id> 和/或 --instance dev|prod|<instance_id>。完整解析顺序请参阅 references/auth.md。

发现端点,不要死记

CLI 内置 Clerk OpenAPI 目录。请始终动态发现端点,而不是猜测路径:

clerk api ls                  # list every Backend API endpoint
clerk api ls users            # filter by keyword (matches path, summary, tag, operationId)
clerk api ls --platform apps  # list Platform API endpoints

在使用 clerk api <path> 前,请先执行此操作。如果没有找到预期的端点,它很可能未开放。

clerk api 命令(主力工具)

clerk api 可发起经过身份验证的 HTTP 调用。它会自动解析密钥,根据是否有请求体自动检测请求方法,支持从 stdin 读取内容,并可使用 --dry-run 预览变更。

# GET requests
clerk api /users                                  # list users
clerk api /users/user_abc123                      # fetch one
clerk api /users?limit=5&order_by=-created_at     # query params work inline

# Mutating requests
clerk api /users -d '{"email_address":["[email protected]"]}'          # POST (auto-detected from body)
clerk api /users/user_abc123 -X PATCH -d '{"first_name":"A"}'
clerk api /users/user_abc123 -X DELETE

# Body from file or stdin
clerk api /users --file payload.json
cat payload.json | clerk api /users

# Always preview mutations first
clerk api /users/user_abc123 -X DELETE --dry-run
clerk api /users/user_abc123 -X DELETE --yes      # skip confirmation once you've verified

# Target a specific app/instance
clerk api /users --app app_abc123 --instance prod

# Include response headers when debugging
clerk api /users --include

# Platform API (account-level, not tenant data)
clerk api /v1/platform/applications --platform

# Frontend API (the instance's public client-facing API — what clerk-js calls.
# Unauthenticated; --fapi and --platform cannot be combined, --secret-key is ignored)
clerk api --fapi /environment

在人类模式下,不带参数运行 clerk api 会打开交互式请求构建器;在 Agent 模式下,它会打印用法说明并以 0 退出——在脚本中始终显式传入端点(或 ls)。

对于实例配置,优先使用专用的 clerk config ... 命令,而不是直接调用 Platform API 的 /config 路径。与原始端点形式相比,这些命令能更妥善地处理试运行、差异比较和确认。

执行实际变更前,务必先使用 --dry-run 试运行。 然后去掉 --dry-run 重新运行(如果确定,可添加 --yes)。在 Agent 模式下会跳过交互式确认,因此对于破坏性调用,--dry-run 是唯一的安全保障。

JSON 请求体必须是有效的 JSON。 CLI 会验证并拒绝格式错误的负载。

端点路径可带或不带 /v1/ 前缀——两种形式都适用于后端 API 调用。CLI 会进行规范化。

具体用法示例(包括列出/筛选用户、创建组织、模拟身份会话等),请参阅 references/recipes.md。

检查大型输出(避免占满上下文)

users list、apps list、config pull 和大多数 clerk api GET 请求都会返回数千字节甚至数 MB 的负载。生产租户通常有数千名用户;实例配置可能有数百层字段。将这些响应读入对话会占用上下文窗口,却没有任何好处。先将响应保存到文件,再用 jq 查询所需内容:

# 1. Persist the response. Use --limit 250 to maximize page size for users list.
clerk users list --json --limit 250 > /tmp/users.json
clerk apps list --json                > /tmp/apps.json
clerk api /users/user_abc123          > /tmp/user.json

# 2. Inspect only what you need.
jq '.data | length'                       /tmp/users.json   # current page size
jq '.hasMore'                             /tmp/users.json   # are more pages available?
jq '.data[0] | keys'                      /tmp/users.json   # discover the user shape once
jq '.data[] | {id, email_addresses}'      /tmp/users.json   # project to a few fields
jq '[.data[] | select(.banned)] | length' /tmp/users.json   # aggregate without reading rows

如果无法使用 jq,可改用 Python 或 Node——两者都能读取文件,而不必完整打印文件内容:

python3 -c 'import json; d=json.load(open("/tmp/users.json")); print(len(d["data"]), d["hasMore"])'
node -e 'const d=require("/tmp/users.json"); console.log(d.data.length, d.hasMore)'

只有在一次性调试确实需要查看原始结构时,才使用 cat / head 查看文件。遍历分页内容时,将每一页分别写入文件(例如 page-${offset}.json),以便单独检查各页。

核心命令一览

命令用途关键标志
clerk init将 Clerk 脚手架搭建到项目中。未通过身份验证的引导(未指定 --app),或未通过身份验证且未指定 --app 或现有链接的 Agent 运行,默认会写入临时开发密钥,无需登录(参见无账户设置)。--starter 仅支持为 Next.js、React Router、Astro、Nuxt、TanStack Start、React、Vue 和 JavaScript 搭建引导脚手架。使用 --app/--login 的 --accountless,以及使用 --login 的 --template/--fresh,都是在开始搭建脚手架前发生的用法错误。对于解析结果为实际应用的运行(包括仅处于已登录状态时),--template/--fresh 会在策略解析后才报错,因此运行 starter 会留下已搭建的项目。--framework、--pm、--name(与 --starter 搭配)、--app、--starter、--accountless、--login、--template、--fresh、-y、--no-skills
clerk auth login通过 OAuth 浏览器登录(存储令牌)。引导或无账户实例配置无需登录。Agent 模式下若已登录,则跳过浏览器,但会尝试认领当前文件夹中 .clerk/keyless.json 对应的应用。若没有存储的会话,仍会打开浏览器并绑定 localhost 回调,因此无法无人值守运行;无头流程建议使用 CLERK_PLATFORM_API_KEY。别名:signup、signin、sign-in。顶层快捷命令:clerk login。-
clerk auth logout清除存储的凭据。别名:signout、sign-out。顶层快捷命令:clerk logout。-
clerk whoami打印已登录的电子邮件地址。-
clerk link / clerk unlink将此仓库链接到 Clerk 应用,或移除链接。Agent 模式下,unlink 需要 --yes。(参见 --help)
clerk env pull将可发布密钥和密钥写入框架的 env 文件(合并而非覆盖)。按 .env.development.local → 框架首选文件 → .env.local 的顺序解析;可用 --file 覆盖。(参见 --help)
clerk config {pull,schema}获取实例配置 JSON 或其 JSON Schema。(参见 --help)
clerk config patch对实例配置进行部分更新(PATCH)。传入 --destructive 可实际删除补丁涉及的子资源,而不是将其重置为默认值。--app、--instance、--file、--json、--dry-run、--yes、--destructive
clerk config put完整替换(PUT)实例配置。传入 --destructive 可实际删除已移除的子资源,而不是将其重置为默认值。--app、--instance、--file、--json、--dry-run、--yes、--destructive
clerk apps {list,create}列出或创建 Clerk 应用。Agent 模式下默认输出 JSON。(参见 --help)
clerk users(无子命令)人工模式下为 users 操作提供交互式选择器;Agent 模式下打印操作列表并以状态码 2 退出。Agent 必须始终传入明确的子命令。--app、--instance、--secret-key
clerk users list使用精选的 BAPI 标志列出用户。JSON 输出(管道传输时或 Agent 模式下为默认输出)格式为 {data, hasMore},调用方可以据此分页,而无需使用 /users/count。--limit 默认为 100(最大 250)。--limit、--offset、--query、--email-address、--phone-number、--username、--user-id、--external-id、--order-by、--json、--app、--instance、--secret-key
clerk users create使用精选标志或原始 BAPI 请求体创建用户。任何模式下都不会提示确认——命令会立即写入。接受 --yes,但不起作用。--dry-run 是唯一的安全保障;请先用它预览。--email、--phone、--username、--password、--first-name、--last-name、--external-id、-d, --data、--file、--dry-run、--yes、--json
clerk users open [user-id]打开用户的仪表板页面。Agent 模式下必须传入 user-id,并打印 JSON 描述符,而不是启动浏览器。(参见 --help)
clerk impersonate [user]以用户身份登录以进行调试:创建短期 Actor 令牌并打印登录 URL。别名:clerk imp。需要 clerk auth login(不能只通过 --secret-key 绕过)——每个令牌都会标记为 cli:<email>,以便审计。[user] 可接受 user_... ID、完全匹配的电子邮件地址或模糊搜索词。在生产环境中,此操作会绕过用户的 MFA,并可能占用模拟配额——请先向用户确认。--print、--open、--yes、--expires-in <seconds>(默认 3600)、--actor <context>、--app、--instance
clerk impersonate revoke <actor-token-id>撤销待处理的 Actor 令牌。令牌 id 仅在创建时打印(Backend API 没有 Actor 令牌列表端点),因此请在创建时记录。--app、--instance
clerk open [subpath]在浏览器中打开已链接应用的仪表板。Agent 模式下会打印 JSON 描述符,而不是打开页面。(参见 --help)
clerk deploy人工模式下的生产部署向导。Agent 模式下会输出只读 JSON 移交信息,并告知 Agent 是该请人工运行向导、等待配置完成、完成 OAuth,还是无需操作。--mode agent、--mode human、--verbose
clerk deploy status只读部署验证。会触发 DNS 检查,报告域名和 OAuth 的总体就绪状态,并且仅在全部完成时以状态码 0 退出。Agent 模式下默认快速检查一次;传入 --wait 可持续等待。--mode agent、--wait、--verbose
clerk webhooks listen一方本地 webhook 隧道(类似 stripe listen):打开 Svix 中继收件箱 URL,并将每次投递转发到本地处理程序。无需身份验证、无需链接项目,也不调用 Clerk API。完整流程见 references/recipes.md。--forward-to <url>(必需)、--token <c_token>、-H, --header <k:v>(可重复)、--json(NDJSON)
clerk webhooks token生成中继令牌(c_ + 10 个 base62 字符),以便在不同机器间固定使用稳定的 listen 收件箱 URL:clerk webhooks listen --token "$(clerk webhooks token)" --forward-to ...。--json
clerk webhooks verify离线验证 webhook 签名(纯本地 HMAC,无需身份验证):可使用已保存的 listen 事件行(--delivery @event.json),也可使用四个原始值。--secret <whsec>(必需)、--delivery @file、--payload @file、--id、--timestamp、--signature、--json
clerk enable orgs / clerk disable orgs在实例上切换 Organizations。有关组织功能、组件和 API 用法,请参见 clerk-orgs 技能。--force-selection、--auto-create、--max-members <n>、--domains、--dry-run、--yes、--app、--instance
clerk enable billing / clerk disable billing为用户和/或组织切换计费功能(默认同时启用两者)。有关方案、定价组件和权益,请参见 clerk-billing 技能。--for <orgs|users>、--dry-run、--yes、--no-skills(仅启用时)、--app、--instance
clerk doctor健康检查(CLI 版本、登录、链接、env、配置、补全;Agent 模式下还会探测主机执行能力)。--json、--spotlight、--verbose、--fix
clerk api [path]对 Backend/Platform API 进行经过身份验证的 HTTP 请求。-X、-d、--file、--dry-run、--yes、--include、--app、--secret-key、--instance、--platform
clerk api ls [filter]从内置 OpenAPI 目录发现端点。(参见 --help)
clerk completion [shell]打印 shell 补全脚本(bash、zsh、fish、powershell)。-
clerk update将 CLI 更新到最新版本。--channel、-y、--all
clerk <command> --help 是标志的权威来源。 此表仅供参考,不是规范。运行不熟悉的命令或标志组合前,请在每个会话中运行一次 clerk <command> --help。每个命令的源码中还定义了 setExamples([...]),--help 会将其呈现为可复制粘贴的示例块,因此通常无需猜测语法。

Agent 模式行为(重要)

当标准输出不是 TTY,或设置了 --mode agent / CLERK_MODE=agent 时,CLI 会自动检测 Agent 模式。在 Agent 模式下:

  • 已禁用交互式提示。 通常会显示选择器的命令(不带 --app 的 link、不带 --yes 的 unlink、不带子命令的 users)会自动解析或因用法错误而退出。不带参数的 clerk api 会打印用法指南并以状态码 0 退出;请明确传入端点(或 ls)。在脚本化调用中,始终传入明确的标志:--yes,以及用于指定用户提及且已存在于该账户中的应用的 --app。
  • 依赖主机环境的操作每次调用只会发出一次沙盒警告。 Clerk 主目录状态、钥匙串访问、联网的 Clerk 调用、启动浏览器以及设置 localhost OAuth 回调都可能触发上文所示的警告。如果出现此警告,请在主机上重新运行同一命令,再信任其结果。
  • 如果你的运行环境未明确显示为 Agent 模式,请强制启用。 想要 CLI 的非交互行为和沙盒警告路径稳定生效时,请使用 --mode agent 或 CLERK_MODE=agent。
  • link 支持确定性的 Agent 工作流。 在 Agent 模式下,clerk link --app <id> 会直接链接。不带 --app 时,如果新版 CLI 已先登录账户,则会认领 clerk init 在此文件夹中创建的应用;否则 CLI 会尝试静默密钥自动链接,如果无法明确确定应用,则会因用法错误而退出。
  • 如果 Clerk CLI 命令返回代码为 not_linked 的错误,请参阅文件夹未链接时。 其中涵盖沙盒检查、未认领的应用、冲突的认领文件以及较旧版本的 CLI。不要假设下一步就是运行 clerk link。
  • 对于 init,请遵循 clerk-setup。 它统一负责框架支持、无账户设置、应用链接、迁移和登录顺序指南,确保设置说明只有一个权威来源。
  • --fresh 具有破坏性。 它会替换临时应用,并在不提示的情况下覆盖环境密钥和 .clerk/keyless.json 面包屑文件,导致之前的应用及其用户失去关联。切勿仅为重新运行 init 而传入此参数。
  • Agent 模式下,unlink 必须使用 --yes。 它会检查 isAgent() && !options.yes,如果未传入该参数,则因用法错误而退出。这是例外,而非常规做法——请参阅下一条。
  • 只有 unlink 确实要求使用 --yes。 其他所有确认检查的条件都是 isHuman() && !options.yes,因此 Agent 模式会直接跳过检查:操作会在没有提示、没有错误的情况下执行。传入 --yes 无害,但不会改变任何行为。不要将它视为安全闸门——真正的安全闸门是 --dry-run。
  • Agent 模式下,impersonate 必须传入 [user] 位置参数。 如果搜索词匹配多个用户,命令会列出候选用户 ID 并以状态码 2 退出;请使用具体的 user_... ID 重试。输出为 JSON 对象({url, id, userId, actor, ...});请向用户展示 url 并记录 id——这是记录撤销句柄的唯一机会。
  • webhooks listen 会长时间运行。 请在后台运行。在 Agent 模式下(或使用 --json 时),它会输出 NDJSON:先输出一行 ready({type:"ready", relay_url, forward_to}),随后每次投递输出一行 event——每行事件都可以传回 clerk webhooks verify --delivery。
  • doctor --fix 会被忽略。 请解析 doctor --json 输出中的 remedy 字段,并自行采取相应操作。
  • 通过管道传输时,apps list 和 apps create 默认输出 JSON。
  • 与 apps 一样,通过管道传输时,users 默认输出 JSON。 Agent 模式下,clerk users list 和 clerk users create 会输出 JSON。Agent 模式下,单独运行 clerk users(不带子命令)会因用法错误而退出——请明确传入 list、create 或 open。Agent 模式下,clerk users open 必须传入 user-id 位置参数,并会打印 JSON 描述信息,而不是启动浏览器。
  • deploy 支持 Agent 交接,并设有验证关卡。 Agent 模式下,单独运行 clerk deploy 只读并输出 JSON 交接信息,绝不会运行交互式向导。不要让 Claude 或其他 Agent 运行 ! clerk deploy,因为该向导需要交互式 stdin 提示。需要部署时,请让人工在新的终端窗口中运行 clerk deploy,然后运行 clerk deploy status --mode agent 来验证是否完成。deploy 没有 --app 标志:若要部署特定应用,请先使用 clerk link --app <id> 链接文件夹。请参阅 references/agent-mode.md。
  • --input-json <json|@file|-> 会在任何命令中将 JSON 展开为标志(例如,clerk init --input-json '{"framework":"next","yes":true}')。stdin 需要明确使用 - 标记(echo '{"yes":true}' | clerk init --input-json -);不会自动检测不带标记的管道 stdin,因此 shell 循环和自行读取输入的命令(cat body.json | clerk api …)不会受到影响。请将 --input-json 放在叶子子命令之后。完整规则请参阅 references/agent-mode.md。 完整的矩阵和沙箱详情见 references/agent-mode.md。

输出格式和错误

  • JSON 输出: 在 apps list 和 doctor 中使用 --json。对于 clerk api,响应正文是原始 API JSON,因此可以自由地将其传入 jq。
  • 退出代码: 0 表示成功,1 表示运行时错误,2 表示用法或验证错误。如果任何检查失败,doctor 将返回 1。
  • 错误格式: 面向用户的错误会向 stderr 输出单行内容,并设置非零退出代码。调试时使用 --verbose 查看堆栈跟踪。

自主使用安全规则

  1. 先发现,再操作: 执行 clerk api <path> 前,先运行 clerk api ls <keyword>。
  2. 预览变更: 每次运行 config patch、config put、api -X POST/PATCH/PUT/DELETE 时都使用 --dry-run。
  3. 在生产环境中明确指定目标: 使用 --instance prod,不要依赖默认值;进行任何生产环境变更前,先向用户确认。
  4. 切勿提交密钥: env pull 会写入 .env.local(该文件应加入 gitignore)。不要将密钥粘贴到代码或聊天中。
  5. 使用 doctor --json 进行诊断,再判断 CLI 是否损坏。

参考资料

  • references/auth.md - 认证流程、密钥解析顺序、主机与沙箱的行为差异、--app/--instance 目标指定方式、Backend API 与 Platform API。
  • references/recipes.md - 常见 Clerk 任务的可复制粘贴配方。
  • references/agent-mode.md - Agent 模式行为矩阵、沙箱警告语义、退出代码、错误格式。

评论

支持 Markdown