Skip to content

Vercel CLI Release Notes

Release notes for Vercel CLI and its related packages. Each release lists its changes grouped by semantic versioning impact:

  • Major changes: Breaking changes that may require you to update your usage.
  • Minor changes: New features and improvements that are backwards compatible.
  • Patch changes: Bug fixes and small improvements.

To update to the latest version, see updating Vercel CLI or run vercel upgrade.

Published 2026-08-29

  • 1758dcc: Run multi-service builds in parallel behind VERCEL_EXPERIMENTAL_BUILD_CONCURRENCY. The default of 1 preserves fully-sequential behavior; values above 1 (an integer, a percentage of available parallelism, or auto) run fork-eligible service builds concurrently, grouped by install scope so package-manager installs never race.
  • b107e95: Add vercel connect contacts add to register phone contacts for Connect connectors.
  • 5434ad6: Accept ISO 8601 date/time input in vercel flags rules and segment rules for Timestamp attributes. Input needs a full date and time; without a timezone, the machine's timezone applies.
  • 9f6868e: Add flags use-targeting to enable rules, keeping the current fallthrough unless --default-variant replaces it.
  • 0d356fa: Centralize CLI version and install context so vc version describes installer, native, and package-manager installs with the same language. When the package manager is unknown, vc version says npm is assumed. vc upgrade --disable-binary now fails on the native CLI instead of writing a no-op config change.

Published 2026-08-27

  • aad9541: Run on-disk JavaScript workers with a lazily resolved system Node.js executable in native CLI installations, and install the matching Build Utils preview tarball for dynamically installed Builders.
  • be09801: Added the Vercel Connect guide to vercel connect --help and its subcommands.

Published 2026-08-26

  • f42a78a: Serve a shared Runtime Cache from vercel dev. Every service, sidecar, function, and framework dev command is pointed at one in-memory store owned by the dev server, so a value written by one process is readable by the others the way it is in a deployment. Previously each process fell back to its own in-process cache and cross-service reads always missed. A RUNTIME_CACHE_ENDPOINT you set yourself still takes precedence.
  • b9339d3: Derive monorepo-aware default build commands for services Projects that define services in vercel.json took a build path that bypassed monorepo default settings entirely, so a service in a Turborepo/Nx workspace fell through to its leaf package.json build script instead of running through the monorepo task graph and build cache — unlike the equivalent non-services project. Each configured service without an explicit buildCommand now gets a default derived from its own root (e.g. turbo run build). Explicit services.<name>.buildCommand values, service roots with a vercel-build script, services on a non-JavaScript runtime (Python, Go, Rust, Ruby, container), and repos without a detected monorepo manager are all left untouched. Gated behind VERCEL_BUILD_MONOREPO_SUPPORT.
  • b612eaa: connect create <server-url> auto-picks the connection method the API resolved for that URL instead of re-asking through the target and method choosers.

Published 2026-08-26

  • 7ab8f26: Split flag evaluation bucket variants into variantId and variantValue, and label evaluations that used the code default as Default in Code.
  • 44be84d: Default middleware.[jt]s to the Node.js runtime for projects created on or after 2026-09-01, and warn that the edge runtime is deprecated. Outside of vercel dev the new default also requires VERCEL_MIDDLEWARE_DEFAULT_RUNTIME_NODEJS=1, which the platform sets during rollout. An explicit export const config = { runtime: 'edge' } keeps the edge runtime.
  • 1240946: Recover vcr login from a stale macOS keychain entry ("The specified item already exists in the keychain. (-25299)") by logging out of the registry and retrying the login once.

Published 2026-08-22

  • 4b50862: Add vercel traces config ls, which lists the trace sampling rules for a project as a table of environment, path prefix, and percentage rate, along with the count against the ten-rule limit. A project with no rules prints an empty state and the command that adds one. --json prints the bare rows in the same vocabulary the command line uses, and non-interactive runs print an agent envelope with the project, a message, and suggested next commands. A bare vercel traces config prints the group help. The project comes from the linked directory, or from --project looked up in the scope --scope selects; both are resolved to ids before the request, so a team slug cannot silently read a same-named project in the personal account. A --scope that disagrees with the linked project is reported instead of applied. When the API refuses the request, a non-interactive run reports it on stdout with a machine-readable reason.
  • 5ee0eac: Add vercel traces config rm <environment> [requestPath], which removes trace sampling rules. A path prefix removes the one rule that carries it, --default removes only the rule that covers all paths, and neither removes every rule for that environment. rm any removes only the rules that apply to every environment, not every rule in the project. The command lists every rule it is about to remove and asks once to confirm. That answer is the only consent it takes: no flag stands in for it, so a session that cannot prompt — --non-interactive, an agent, or a caller with no TTY — is refused rather than left waiting. It fails without writing and reports which rules were at risk, along with the command to run by hand. The path prefix in that command is quoted, so a prefix carrying shell metacharacters cannot run as a second command when it is pasted into a shell. When nothing matches, the command fails and makes no write. Drain domains and ignore paths are read and written back untouched.
  • d65e137: Add vercel traces config set <environment> <rate> [requestPath], which adds or replaces one trace sampling rule without a confirmation prompt. The environment is any, preview, or production, and the rate is a whole percentage from 1 to 100; both are checked before the command calls the API. A rule is identified by its environment and path prefix, so running set again on the same pair replaces the rate and the success line reports the old rate, the new rate, and the rule count. Drain domains and ignore paths are read and written back untouched, as is every rule the command was not asked to change: only the rule being written is rebuilt from the command line, so a rate the CLI cannot spell — the API accepts any fraction, the command line whole percentages — is not rounded by an edit to a different rule. An eleventh rule is refused with an error that names the ten-rule limit.
  • b83c139: Remove the beta wording from vercel connect ahead of general availability.
  • f8add0a: Replace prerenderClassification on Prerender with initialMetadata. The platform consumes only the request-time compute mode and the HTML shell size, so the flattened four-field taxonomy (routeType, response, compute, htmlSize) is reduced to a single grouped field: ``ts initialMetadata?: { compute: 'blocking' | 'resuming' | 'static'; htmlSize?: number; } The group is named initialMetadata because the values describe the deployment as it was built: revalidation can regenerate a route's output over the deployment's lifetime, so readers must treat them as initial values, not live state. @vercel/next reads compute and htmlSize off the v4 prerender-manifest taxonomy and deliberately ignores routeType and response; the values are still carried unvalidated so a compute mode added by a future framework release cannot hard-fail a deploy, and they are still set only on the primary output of each prerender group. htmlSize: 0 is a real size (a shell that postponed everything); htmlSize is absent when there is no HTML shell to measure (route handlers, Pages Router). Absence of the whole group remains legitimate (notFoundRoutes, Pages Router fallback: false`, older frameworks).
  • 803da2a: Restrict anonymous deployment credentials to the current user.

Published 2026-08-22

  • ef9297e: Remove --yes from vercel blob delete-store. Deleting a Blob store cannot be undone, so it now always requires interactive confirmation and can no longer be run non-interactively (CI, scripts, or agents).
  • c016930: Add SRV record support to vercel dns update via --srv-priority, --srv-weight, --srv-port, and --srv-target
  • ddd4e85: Add project-level sandbox region support. vercel project update accepts --sandbox-region and --sandbox-failover-regions, and vercel project inspect prints a Sandbox section with the configured regions.
  • 6eb5539: Add vercel project resume to restore production traffic for a paused project
  • 0cefeea: Accept npm-selected Builders when a tarball (preview pack) pin fails to install. The fallback install already reported the version drift as allowed, but the tarball-pin check ignored that and failed the build with preview-pack-mismatch, so a recoverable install error became fatal.
  • f31661a: Detect frameworks for unlinked zero-config projects when running vercel dev --local.
  • 0b08df6: Canonicalized internal service contract ownership.
  • 19c9259: Moved service topology detection to a private internal package. Service APIs previously exported by @vercel/fs-detectors are no longer available.
  • bddd317: Fix the vercel dev file watcher ignoring anchored ignore patterns. Absolute paths from the watcher were passed to a filter that expects paths relative to the project root, so any pattern with a leading slash never matched. This left the default /target rule inert for Cargo projects, causing vercel dev to recursively watch the entire build directory, and silently ignored anchored entries such as /dist in a .vercelignore.
  • 814e456: Add family-level --help examples for recently added commands: dns update and dns inspect in vercel dns --help, domains renew and domains auto-renew in vercel domains --help, and project pause, project resume, project members add/remove, project observability, project web-analytics, and project speed-insights in vercel project --help
  • eea89b5: vercel dns update now confirms before overwriting a record and handles non-interactive/agent mode. Interactive runs prompt for confirmation (no --yes flag); when a prompt isn't possible (non-interactive, agent, or no TTY) the command refuses to act and emits a structured agent-output payload (interactive_confirmation_required) telling the caller a human must re-run it in a terminal. Local validation errors are likewise surfaced as parseable JSON in non-interactive mode instead of stderr-only text.
  • 96448a9: Add vercel domains auto-renew <domain> on|off for registrar-managed domains, with structured JSON output (--json/--format) and structured errors when run in non-interactive/agentic mode
  • fbc9a07: Add vercel domains renew <domain> for registrar-managed domains
  • 8b48533: Add vercel project members add to add a member to a project by email, username, or user id with a role. The add requires interactive confirmation and is refused for agents and non-TTY pipes with a structured confirmation_required payload. Invalid team/project role combinations are translated into actionable guidance listing which project roles each team role can hold.
  • 91d676b: Add vercel project members remove to remove a member from a project (resolves email/username/uid via the project members listing, with --yes to skip confirmation)
  • f1a8015: Add vercel project observability enable and vercel project observability disable to toggle Observability Plus for a project. Both actions ask for confirmation first and emit an action_required payload in non-interactive or agent contexts.
  • 3e60cd4: Always send config/secret visibility from vercel env add and vercel env update. Remove the VERCEL_ENV_VAR_CONFIG_SECRET_UI opt-in. Allow secrets in Development.
  • b923215: Moved service-aware builder coordination to the internal CLI builder integration package.
  • f57bde1: Add vercel project speed-insights disable to turn off Speed Insights. Disabling asks for confirmation and emits an action_required payload in non-interactive or agent contexts.
  • 3946cae: Add vercel project web-analytics disable to turn off Web Analytics for a project. Enabling now asks for confirmation first; in non-interactive or agent contexts it emits an action_required payload instead of enabling silently. On Hobby the confirmation explains that Web Analytics is free with the limits documented at https://vercel.com/docs/analytics/limits-and-pricing, while Pro and Enterprise keep the paid-feature charges warning. Disabling also asks for confirmation and emits an action_required payload in non-interactive or agent contexts.

Published 2026-08-20

  • ebc8fa4: Add --bypass-all-settings to vercel ai-gateway api-keys create. When passed, the key is created with the bypassAll metadata fact exempting it from all of the team's restrictions (ZDR-only models, the provider/model allowlist, and the HIPAA and disallow-prompt-training filters); the API only accepts it from team owners. Adds telemetry tracking for the new flag and surfaces it in api-keys inspect.
  • 404207d: Add commands to view and search the Vercel changelog.
  • aa64b5c: Fix domain order error code mapping: the registrar order API returns hyphenated error codes (payment-failed / unexpected-error), but the CLI compared underscored literals, making the "Your card was declined." branch unreachable for domains buy and domains transfer-in

Published 2026-08-17

  • b8d7cd8: Fix vercel comments crashing in the native binary when rendering comment previews.

Published 2026-08-15

  • 69955f8: Accept the npm-selected Builder version when a CLI-pinned version is unavailable.

Published 2026-08-13

  • d7760a7: Removed CLI purchase support for the deprecated SIEM add-on.
  • d87479d: Advertise kebab-case names for the Custom Environment and Observability Plus add-ons while continuing to accept their camelCase aliases.
  • a44c461: Add support for purchasing Observability Plus with vercel buy addon observabilityPlus.
  • 466716e: Remove duplicate Blob command tests.
  • 466716e: Remove duplicate and mutation-insensitive CLI command tests.
  • 466716e: Remove ineffective and obsolete CLI integration test code.
  • 9980fab: Remove duplicate CLI utility test equivalence classes.

Published 2026-08-13

  • 299d5cd: vercel deploy without credentials can create a temporary anonymous project and deploy prebuilt output to it, running vercel build locally first when needed. Interactive users confirm before the first deployment, while --yes skips the prompt and non-interactive use requires it until .vercel/anonymous.json records the temporary project. The anonymous credential is reused until it expires, and each deploy prints a claim URL to keep the deployment by signing in. When anonymous deployments are unavailable, the previous login behavior applies.
  • 9daa87d: Add vc security check for reading the team security report from the terminal.
  • 65ba1e0: Start linked deployments before project lookups finish without sending the repository root marker as the Root Directory.
  • 1b8d228: Fix duplicated route tables for services built through the Build Output API.

Published 2026-08-12

  • 3df8e01: Add vercel blob put-image <file-or-url>. The command runs an image through Vercel Image Optimization and stores only the optimized output in the Blob store, printing the resulting blob URL (or the full result with --json). It accepts a local file or a public http(s) URL as the source, with --width (required), --quality (default 75), and --format (jpeg/png/webp/avif, original preserved when omitted) controlling the transformation and --pathname (required) setting where the result is stored. The command warns when the optimizer kept the original image because the optimized output would have been larger. Requires OIDC credentials (--oidc-token + --store-id, or VERCEL_OIDC_TOKEN + BLOB_STORE_ID). Uses the new putImage method from @vercel/blob 2.8.0; the stored content type always comes from the optimizer output, so there is no --content-type flag.
  • da6b94c: Support multiple middlewares in vc dev.
  • e570d3c: Remove duplicate Blob command tests.
  • cb76527: Remove ineffective and obsolete CLI integration test code.
  • 7d1c33b: vercel ai-gateway coding-agents setup no longer treats Cline, Cursor, Hermes, Kilo Code, and OpenClaw as experimental. They now appear in the interactive agent picker, are pre-selected when detected, and are included by --all and by the detected-agents default, alongside Claude Code, Codex, OpenCode, and Pi. Selecting them explicitly with --agent <id> already worked and is unchanged.
  • 4cc87f8: Emit connect as the telemetry command name for vercel connect, and track the previously-missing create service argument, --name and --format, plus all token arguments and options.
  • 59d5225: The Cursor guidance in ai-gateway coding-agents setup points at the dedicated /cursor/v1 gateway endpoint. Cursor's request format is rejected by the generic /coding-agent/v1 surface; the dedicated endpoint normalizes it.

Published 2026-08-12

  • 28a2dd0: Expose the resolved rewrite destination as the request path observed by containers, and warn affected container projects about the behavior change.
  • 2fa7e02: Revert the linked deploy optimization that can send an invalid root directory.

Published 2026-08-11

  • a7fc7e8: Expose the resolved rewrite destination as the request path observed by standalone Go servers, and warn affected Go projects about the behavior change.
  • 22ce405: Do not prompt for a Git remote while gathering project link suggestions; offer "Switch Git remote" in the project picker instead when multiple remotes exist. Ask about connecting a detected Git repository before creating the project (default No).

Published 2026-08-11

  • 4b22527: Improved vercel upgrade for native binary installs: the suggested update command now targets the correct install method instead of assuming a package manager, and self-updates are resilient to /tmp being on a different filesystem than the install directory.
  • e62af7f: Point native binary installer and PR binary downloads at the production domain (api-frameworks.vercel.sh) instead of a branch preview URL.

Published 2026-08-11

  • 33cdc9e: Remove CLI tests that do not execute production behavior.
  • b971158: Materialize the Next.js vc dev WebSocket preload shim to ~/.vercel/runtime/<version>/ so child Node processes can --require it (including native SEA installs whose /snapshot paths are not visible to external Node).

Published 2026-08-10

  • 73b3efd: Support app principal tokens in scope resolution via token introspection
  • ce81015: Document and regression-test horizontal option uniformity across the Vercel CLI.
  • 337f9ed: vercel ai-gateway coding-agents setup now points Cursor, Hermes, Kilo Code, and OpenClaw at the gateway's generic coding-agent surface, https://ai-gateway.vercel.sh/coding-agent/v1, instead of the generic /v1 base URL. Claude Code and Codex keep their dedicated compatibility endpoints, and Cline, OpenCode, and Pi are unaffected because they use their native gateway providers rather than a base URL. This also fixes Cursor, whose previous base URL https://ai-gateway.vercel.sh/v1/cursor is not a route the gateway serves and returned a 404.
  • 03b264b: Migrate domains REST API calls off /v4/domains to the current documented versions: GET /v5/domains/:domain (get domain), GET /v5/domains/:domain/records (list DNS records), POST /v7/domains (add domain), and GET /v6/domains/:domain/config (domain config). vercel domains add now sends zone: true explicitly, preserving the DNS-zone creation that the API only defaults on for v4 and below.

Published 2026-08-08

  • f4c7bc0: Preserve existing Claude Desktop sessions when configuring the Vercel AI Gateway.
  • 9508026: Preserve existing Codex Desktop sessions when configuring the Vercel AI Gateway.
  • 6989e14: Add an experimental Cline agent to vercel ai-gateway coding-agents setup. Writes Cline's first-party vercel-ai-gateway provider entry in ~/.cline/data/settings/providers.json (the same 0600 file cline auth manages), preserving any existing schema version and provider entries. Select it explicitly with --agent cline.
  • a29784e: Add the Codex Desktop session-migration engine: a deterministic, atomic copy of Codex rollout sessions into the Vercel AI Gateway provider (UUIDv5 destinations, no-clobber writes, originals never modified). This is the internal capability; it is wired into ai-gateway coding-agents setup in a follow-up.
  • 20629d5: Add experimental Cursor support to vercel ai-gateway coding-agents setup. Cursor stores its BYOK settings in its own account-synced store, so setup provisions the AI Gateway key into the shell environment and walks through the manual steps in Cursor's Models settings (base URL override, adding gateway model ids), instead of writing config files. Select it explicitly with --agent cursor.
  • 823940c: Stage the UUID dependency in native binaries and validate binaries after CLI source changes.
  • eaf633f: Add an experimental Hermes agent to vercel ai-gateway coding-agents setup. Writes a gateway provider to ~/.hermes/config.yaml using key_env (the key stays in the shell environment) with model auto-discovery enabled. Select it explicitly with --agent hermes.
  • 4e93b80: Add an experimental Kilo Code agent to vercel ai-gateway coding-agents setup. Writes an openai-compatible provider to ~/.config/kilo/kilo.json using Kilo's {env:AI_GATEWAY_API_KEY} substitution so the key never lands in the file; the model picker auto-populates from the gateway's /v1/models. Select it explicitly with --agent kilo.
  • edd4e56: Add an experimental OpenClaw agent to vercel ai-gateway coding-agents setup. Writes a models.providers entry to ~/.openclaw/openclaw.json with a ${AI_GATEWAY_API_KEY} reference OpenClaw resolves itself, plus a starter model list. Select it explicitly with --agent openclaw.
  • 9508026: vercel ai-gateway coding-agents setup no longer drops env exports that other agents previously wrote into the managed shell block. A codex-only rerun used to rewrite the block with just its own exports, wiping claude-code's ANTHROPIC_AUTH_TOKEN — which silently disabled gateway model discovery in Claude Code.

Published 2026-08-08

Published 2026-08-08

Published 2026-08-08

Published 2026-08-08

Published 2026-08-08

Published 2026-08-07

  • fa93c8f: Add --trigger-project, --trigger-path, --trigger-branch, and --trigger-environment to vercel connect create so trigger-enabled connectors can atomically register full destination routing, defaulting to the linked project.
  • c5caaf8: Add vercel vcr config <repository> --public <true|false> to configure a container registry repository's visibility.
  • 19c6a71: Skip owner and project lookups before deploying a linked project.
  • b7ec19b: Scope the pre-compilation install's VERCEL_INSTALL_COMPLETED marker to the package.json it installed. Previously, a vercel.toml/vercel.ts config caused vc build to install at the repo root and then silently skip every later default install, so services whose install root is a different workspace (its own package.json/lockfile) built without dependencies.

Published 2026-08-05

  • e089b31: Suppress version/beta banner and deploy-subdirectory warnings for vercel api and --json / --format json so agents can parse machine-readable output.

Published 2026-08-05

  • f054187: Add --team-level flag to vercel firewall rules, ip-blocks, diff, publish, and discard commands for managing the team-level firewall configuration, which applies to every project in the team. Requires an Enterprise plan and team owner role; no linked project is needed.

Published 2026-07-27

  • 843bb99: Support attaching Connect connectors to project custom environments by slug or stable ID.
  • d277bd9: Add custom-environment targeting for Connex trigger destinations.
  • 4502520: Support Node.js Routing Middleware entrypoints through proxy.entrypoint, with optional path matching through proxy.matcher. The matcher may be configured in the entrypoint source or vercel.json, but not both.
  • 506487b: Removed the VERCEL_TOML_CONFIG_ENABLED feature flag. vercel.toml configuration file support is now always enabled.
  • c71e6f9: Recover interactive commands from stale stored login sessions by starting a fresh device login, and retry Environment Variable reads after legacy authentication challenges.
Last updated July 8, 2026

Was this helpful?