Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .changeset/api-error-formatting.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/api-validate-json-body.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/auth-success-page-command-cards.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/auth-success-page-edits.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/auth-success-page.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/autoclaim-managed-workspace.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/deploy-plan-unsupported-features.md

This file was deleted.

17 changes: 0 additions & 17 deletions .changeset/deploy-wizard-copy.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/fx-mcp-client.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changeset/grow-1233-cli-deploy-telemetry.md

This file was deleted.

42 changes: 42 additions & 0 deletions packages/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,47 @@
# clerk

## 3.4.0

### Minor Changes

- Add fx (https://fx.sh) as a supported client for `clerk mcp install`, `list`, and `uninstall`. The Clerk MCP server is written to fx's user-global `~/.fx/mcp.json` as a direct Streamable HTTP entry (`{ "type": "http", "url": … }` under top-level `mcp`) — fx connects to the URL natively, so no `clerk mcp run` bridge is involved. Detected via the presence of `~/.fx/`; target it explicitly with `--client fx`. ([#460](https://github.com/clerk/cli/pull/460)) by [@manovotny](https://github.com/manovotny)

### Patch Changes

- Improve how API error responses are displayed: when a response contains multiple errors they are now all shown instead of just the first, and bodies that carry a plain `error` or `message` field are surfaced directly rather than as raw JSON. ([#351](https://github.com/clerk/cli/pull/351)) by [@wyattjoh](https://github.com/wyattjoh)

- Reject an invalid `clerk api` request body on your machine instead of sending it. The error echoes what arrived and, when a `-d` value reached the CLI with its double quotes stripped or wrapped in literal single quotes, names the shell quoting behind it — an unquoted body in a POSIX shell, or PowerShell before 7.3 and cmd.exe on Windows — and suggests the same request with `--file`, which no shell can mangle. Those shell-quoting rejections carry the error code `invalid_json_shell_quoting`; other parse failures keep `invalid_json`. ([#464](https://github.com/clerk/cli/pull/464)) by [@dmoerner](https://github.com/dmoerner)

- Replace the Clerk Skills install box on the sign-in success page with three command cards — install, customize, and deploy — showing what the CLI can do right after authentication. ([#473](https://github.com/clerk/cli/pull/473)) by [@eatmorespinach](https://github.com/eatmorespinach)

- Simplify the sign-in success page so the command cards sit directly beneath the confirmation, and keep the page readable on short screens. ([#494](https://github.com/clerk/cli/pull/494)) by [@maxyinger](https://github.com/maxyinger)

- Restyle the sign-in success page with a theme-aware Clerk mark, the command cards grouped into a banner along the bottom, and a staggered entrance animation. ([#473](https://github.com/clerk/cli/pull/473)) by [@eatmorespinach](https://github.com/eatmorespinach)

- `clerk auth login` now explains why a keyless application could not be claimed when the active workspace is managed by an integration such as Vercel Marketplace or Stripe. When the Platform API rejects the claim with the error code `accountless_application_managed_workspace`, the CLI prints the API message, for example "Unable to claim - The target application cannot be claimed into the current workspace. Select a different workspace and try again.", instead of the generic "no active organization" warning, and keeps the local claim token so the next `clerk auth login` from a workspace you own claims the application. ([#471](https://github.com/clerk/cli/pull/471)) by [@Zertsov](https://github.com/Zertsov)

- Fix `clerk deploy` not listing which features your plan doesn't cover when the Platform API rejects the deploy for an insufficient subscription plan. ([#477](https://github.com/clerk/cli/pull/477)) by [@djgould](https://github.com/djgould)

- `clerk deploy` copy fixes: ([#484](https://github.com/clerk/cli/pull/484)) by [@shane-kercheval](https://github.com/shane-kercheval)

- `clerk deploy --help` describes what the bare command does and the JSON report it prints under an agent.
- The preamble says a hosting provider's generated URL can't be the production domain.
- The confirmation screen lists all five DNS record hosts, including DKIM, and says DNS records will be needed for them once the instance exists.
- The DNS check reports records as "not found yet" with a minutes-not-days expectation, tells you what to do based on what's actually pending, and links the Dashboard Domains page for changing the domain.
- `clerk auth login` prints the claimed app's Dashboard URL; the wizard prints the new production instance's URL and its next steps say the pulled keys go on the host alongside the other Clerk variables.
- The Google walkthrough adds a tip explaining that the OAuth consent screen's app name is what users see when they sign in, and to choose the name they should see.
- The DNS check footer points at the "Check again" prompt that follows it instead of telling you to quit and re-run; the closing screen no longer says "Production ready", "sign up at your domain", or "Success" when DNS verification was skipped.
- Resuming the wizard shows only the DNS records still outstanding, not ones Clerk already verified. When none are outstanding, the DNS screen says what is (the SSL certificate, Clerk finalizing, or a record list Clerk didn't return) instead of a "Configure DNS" page with no records, and the closing screen says "Not yet verified" rather than "DNS pending" so it is right when DNS is done and something else is pending.
- Each DNS record host is named the same way on every screen, the note about what Clerk manages moved off the rows the user has to add, the Domains-page pointer carries its link, and the closing line says what happens next instead of implying that skipping the check finishes the deploy, and no longer promises an OAuth step on resume when OAuth has already run.
- Agent-mode `nextAction` tells the agent to add pending DNS records instead of polling, at `complete` says the production keys still have to reach the host, and names OAuth providers the CLI could not configure so an agent doesn't report OAuth as done. Human-mode `clerk deploy status` prints the pending records, never says "ask the user", and resumes with `clerk deploy` rather than a flag that only affects agents.
- The wizard's new sentences wrap at 76 columns so they stay inside the gutter on an 80-column terminal. The agent JSON report gains a `urls` field with the production instance's Dashboard page and its Domains page. Human-mode `deploy status` now renders its sentence from the same classification of the report as `nextAction` rather than by rewriting that sentence; both read the same as before this change.

- Record `clerk deploy status` on an unfinished deploy as incomplete rather than an error in usage telemetry, and give the ways a `clerk deploy` run can end their own error codes — a skipped step, an interrupted prompt and a wait on Clerk's provisioning were previously indistinguishable. Every `clerk deploy` and `clerk deploy status` event now also records the state the deploy was in when the run ended, so a run that stopped short says where, and which of DNS, SSL, email DNS and OAuth had been verified at that point — recorded only from a read that actually succeeded, so a failed status call is never reported as a failed check. Output and exit codes are unchanged. ([#492](https://github.com/clerk/cli/pull/492)) by [@shane-kercheval](https://github.com/shane-kercheval)

`clerk doctor` now names the check that crashed instead of printing an anonymous "Check crashed" line (which `--json` labelled "Unknown check"), says the crash is a bug in the CLI instead of reporting issues with your integration, and reports a crashed check as `doctor_check_crashed` rather than `doctor_failed`, so a bug in the CLI is distinguishable from a real problem with your integration. Its `--json` results carry `crashed: true` on that check. The exit code is unchanged.

`clerk api`, `clerk users create` and `clerk mcp install --json` failures now carry an error code in usage telemetry — each prints the failure itself instead of throwing, which used to leave the event with a bare error. An API response with a Clerk error code records that code; one without is recorded by its HTTP status as `api_rate_limited` (429), `api_not_found` (a 404 on a path the person typed), `cli_endpoint_not_found` (a 404 on a path the CLI built, from its endpoint catalog or a hardcoded route), `api_client_error` (other 4xx) or `api_error` (5xx). `mcp install --json` records the same code human mode already did. Nothing printed changes and exit codes are unchanged.

## 3.3.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "clerk",
"version": "3.3.0",
"version": "3.4.0",
"private": true,
"description": "Clerk CLI",
"keywords": [
Expand Down
Loading