Skip to content
Docs

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-10-08

  • 2a4156d: vercel domains buy and vercel domains renew now work without a terminal, so agents and scripts can buy and renew domains. Without --amount, they charge nothing and return the price, the team that pays, the renewal terms, and the exact command to run once a person approves the price. Without a terminal, the team must be named with --scope or VERCEL_ORG_ID. A failed or unconfirmed charge returns a JSON error, and the charge request is never retried, so it can't go through twice. domains buy takes registrant details as options (--first-name, --last-name, --email, --phone, --address, --city, --state, --zip, --country, --company), and --use-billing-details fills the rest from the team's billing info. Without a terminal, domains buy also needs --auto-renew or --no-auto-renew: auto-renew has no default there, since it starts a recurring charge. --json prints the result as JSON.

Published 2026-10-08

  • e324375: Speed up vercel deploy describe on large build outputs: check each mapped source file once instead of once per function that maps it, and run the build output checks concurrently.

Published 2026-10-08

  • 3733132: Fix package-manager upgrades in the native CLI runtime. Read subprocess stdout through the callback API instead of relying on promisify metadata removed by the native packager. Pass mutable copies of the trusted startup environment to detection, metadata queries, and installation so the native subprocess wrapper can add its runtime variables without modifying the frozen snapshot.

Published 2026-10-08

  • 17637ac: Always detect and upgrade the vercel package for package-manager installations, regardless of whether the CLI runs in Node.js or its native runtime. Preserve the originating vercel launcher across the native handoff so npm, pnpm, Yarn, and Bun can identify the installation correctly. Package-manager upgrades no longer target the legacy @vercel/vc-native wrapper. Users who installed that package directly must remove it and install vercel with the same package manager. Vercel installer-managed updates are unchanged.
  • f91d6d3: Require interactive confirmation before activating Password Protection because it can incur charges. Automation must hand first-time activation to a person using an interactive terminal or the Vercel dashboard. Updating an existing password, disabling protection, and other add-on flows retain their existing behavior.
  • e041037: Add an optional service to function-target schedules, naming the service that owns function. function is then the path within that service. vercel dev does not run service-hosted schedule targets yet.
  • 7431c35: Add stable diagnostics for uncoded build failures and report vercel build error codes in telemetry. Preserve existing upstream error codes and non-interactive output fields.
  • ef7fdaf: Track the host libc (glibc or musl) on Linux in CLI telemetry, detected once and cached in telemetry-device.json.
  • 76b6025: Retry transient upload and deployment status failures, improve network diagnostics, and clarify errors when a deployment outcome cannot be confirmed.
  • 0fce17f: A firewall rule refused because the project is not a Priority project now says that rule requires a Priority project, names the project's team, and points at vercel project priority enable --scope <team> (or vercel buy pro --scope <team> on Hobby). That covers adding a rule (including interactive and --ai), editing, enabling, and listing. With --json, the failure is a structured error document. Metrics and firewall charts show that same command without the extra sentence around it. Disabling a rule in that state points at vercel firewall rules remove instead, because the API still validates the rule's conditions. That suggestion keeps --team-level and an explicit --project, and it does not pass --yes, so removal still asks for confirmation. Linked to https://github.com/vercel/api/pull/96886.
  • bfde787: Update CLI command behavior.
  • 552f87b: Mark the Linux native packages as glibc-only with libc, and look for a musl native package on musl hosts such as Alpine, which fall back to the JavaScript CLI until musl packages are published.
  • 331b358: Add vercel project priority enable so a person can upgrade a project to Priority in a terminal. Confirmation names the project's team. Failures with --json are a structured error document. Hobby is sent to buy pro first while copy still names Priority. Firewall 402s follow the API product: Plus on Hobby is buy pro, Priority is interactive enable. Agents cannot confirm the Priority charge. A metrics 402 suggests the purchase for the team the query used, and uses that team's plan when it is already cached. Recovery that enables Observability Plus for a project leaves off --non-interactive, because that command needs a person to confirm.

Published 2026-10-07

  • 978350d: Add --local (-L) to Schedules management commands to connect to the running vercel dev broker for the current project directory without cloud login or linking. Discover the actual local endpoint, verify its session identity, and reject stale or ambiguous sessions without falling back to the cloud. Local execution history remains unsupported.

Published 2026-10-06

  • f954b92: Add vercel pricing to list Hobby, Pro, and Enterprise features from the public pricing table. Pin redirects to vercel.com, bound the response size, sanitize remote strings, and reject incomplete tables. Stop deploy event-stream retries after abort so CLI unit tests do not leak handles.
  • aa84773: Add --group-by to vercel flags evaluations (variant, flag, sdk-key, client, environment, reason) and make the flag argument optional so evaluations can be queried across every flag in the project, for example to see which SDK keys and services still evaluate flags after a key rotation.
  • 06e5c99: Add vercel flags targets list|add|remove to manage direct targets (entity values that always receive a fixed variant), matching the dashboard's direct targeting. add accepts entity.attribute=value|label to set the value's label in the same step.
  • 368d3f6: webhooks, schedules, storage, global-config, traces, and rolling-release now use inspect as the subcommand name for showing one item, matching the rest of the CLI. get (and fetch for rolling-release) still works but prints a deprecation warning.
  • 5937035: Time ranges now use -s, --since <TIME> and -u, --until <TIME> everywhere. usage and schedules executions list replace --from and --to, accept ISO 8601 or relative times (7d), and default --until to now. --from and --to still work but print a deprecation warning. alerts, activity, logs, traces, firewall, and agent-runs gain the -s and -u short flags, and every --since and --until describes its format and default the same way in help.
  • c1d2298: Print JSON Lines responses from vercel api as text instead of failing to parse them as JSON.
  • 121506c: Use the project-scoped tracing drain API for vercel traces config ls, set, and rm so commands manage Vercel tracing rather than derived external-drain rules. Disable tracing when its final sampling rule is removed.
  • ea89cc4: Mark vercel api, vercel curl, and vercel webhooks as generally available. They no longer show a beta notice in the version banner or a [beta] tag in vercel --help.
  • db6985f: The native build worker now accepts connections before it starts preloading, reports ready once the vercel build command has loaded while the vlt Builder imports keep preloading in the background, and runs that build without loading the rest of the CLI unless the invocation needs it. A build reuses the single vlt preload instead of starting another load. The worker reports its own timings (listen, build module loaded, ready, vlt preload, handoff), Node version, and compile cache entry counts with its ready, preload, and terminal messages. The vc.cli span records directBuild and, on fallback, fallbackReason. vlt Builder imports record the preload state and wait time, which Builders were freshly installed or reused, plus the time spent ensuring and loading them, on the vc.importBuilders span. Importing an already installed vlt Builder no longer loads the full embedded Builder graphs or the vlt installer. The native binary ships a small builder-index.json with each Builder's graph hash and version; an installed Builder is located from it and required directly. The graphs and @vltpkg/* are only loaded to install a Builder that is missing from the cache.

Published 2026-10-05

  • 94f6cea: Flat path schedules accept an optional requestMethod of GET or POST, defaulting to POST. vercel build writes it to Build Output, and vercel dev invokes path schedules with it.
  • 1888ae0: Exit codes now follow one contract: 0 for success and help, 1 for an operational failure, and 2 for a usage error. - An unknown option, an option missing its value, a missing or invalid argument or flag value, and an unknown subcommand now exit with code 2 instead of 1, in both human and non-interactive output. - A command group run without a subcommand, such as vercel env, now prints its help to stdout and exits with code 0 instead of printing it to stderr and exiting with code 1 or 2. An unknown option on a bare group exits with code 2. - vercel help <command> now shows the same help as vercel <command> --help for hidden commands, instead of exiting with code 1. - Help for a command path that does not exist, such as vercel env nope --help or vercel help nope, now names the unknown command and exits with code 2, instead of showing the parent's help or the deploy help. - vercel flags prepare now rejects unknown options. - vercel help help shows root help. vercel /absolute/dir --help and vercel help <dir> show the deploy help, like a relative path does.
  • ed0126f: Paginate vercel ai-gateway api-keys ls: add --limit and --next, include pagination.next in JSON output, and print a next-page hint. Key lookup by name now searches every key instead of the first page.
  • 8455317: Write API endpoint listings to stdout so they can be piped and filtered.
  • 8ac5320: Add an experimental workspace-scoped install path for Node builds to avoid installing unrelated monorepo workspaces.

Published 2026-10-02

  • 8a2668d: Accept trace IDs or request IDs in vercel traces get.
  • a7ef28c: Accept a top-level daemons field in vercel.json. vercel dev warns that it doesn't run daemons, and vercel build doesn't build them yet.
  • eed4b48: Attach the originating invocation ID to every CLI telemetry event, including events sent through the detached flush process.
  • 796be12: tokens, teams, kms, vcr, global-config, project, flags sdk-keys, and alerts rules now show create as the subcommand name in help and examples, since they create a new standalone resource. add still works as an alias.
  • 1f558d0: vercel dev runs schedules that target an entrypoint. It plans them into the same functions vercel build does, such as _vercel/schedules/default, registers each one with the local scheduler, and builds it with the entrypoint's builder. Schedule functions are only invoked by the scheduler, never by a public URL. Projects with services still reject schedule entrypoints in vercel dev.
  • 004d50b: [metrics] Warn that First Input Delay is sunset on November 1st when querying or inspecting vercel.speed_insights.fid_ms.

Published 2026-10-01

  • 55b7402: Add vercel ci grep to search the task logs of recent Vercel CI runs for the current repository. It searches the last 20 runs on the current branch by default, and --all-branches, --status, --runs, and --level narrow the search. Each match shows its run, job, task, and execution locator. Safely quoted commands to open the full log are included only when the exact current execution is uniquely addressable; historical or ambiguous executions retain their locators without a misleading command. Count distinct runs across unfiltered pages and apply status filters only to each run's current attempt, so historical failures do not displace newer runs. Scans examine at most 100 pages and 100 distinct candidates. If a scan reaches either limit, search the runs already selected and report partial results instead of discarding them. JSON results include selection.requestedRuns, selection.scannedRuns, and selection.limited; hasMore continues to describe matching log-line truncation. Human output warns on stderr, and non-interactive messages identify partial results, including when no runs were selected. Distinguish missing collection endpoints from missing or inaccessible individual runs when reporting 404 responses. Keep terminal matches Unicode-safe and on one line, preserve raw JSON logs, and generate safely quoted task-log commands with the current team and directory context. Non-interactive empty and nonempty results consistently include status, message, and next.
  • bd8d0ce: Add --grep to vercel ci logs to search the logs of every task in a Vercel CI run at once. Matching lines are prefixed with their task name, and the filter combines with --failed, --task, and --level. Sanitize terminal control sequences in human-readable search values, task labels, and matching task and setup logs while preserving raw values in JSON output. Highlight literal matches with Unicode-aware case-insensitive matching without changing the log text.
  • 23ddb89: Add vercel ci logs to show task logs for a Vercel CI run. Filter with --failed, --task, and --level, stream a running task with --follow, and get setup logs when a run fails before any tasks start. Follow mode makes a final full-snapshot read without the stream's timestamp cursor when a task completes, reconnects healthy stream timeouts, handles JSON snapshot responses, respects stdout backpressure, preserves JSONL errors, and bounds interrupted or invalid response retries. Empty logs for completed retried tasks produce a stderr warning when no level filter is applied, without failing valid quiet, cached, or skipped tasks; JSON mode emits a structured stderr warning and keeps stdout reserved for log records. Human output sanitizes terminal control sequences and distinguishes runs without failures yet from completed runs; empty --failed JSON results include run.finished. Commands resolve the latest attempt from the attempts endpoint instead of trusting list-row ordering. Reconnects replay retained logs and deduplicate by timestamp, level, message, and occurrence count, preserving repeated identical lines and older late arrivals in append-only history. Replay stops explicitly at its 8 MiB estimated-state or 50,000 distinct-record limit instead of evicting records silently. The final snapshot recovers retained logs suppressed within the active stream. Without server record IDs, an ingestion cursor, and a completion watermark, logs ingested after the final snapshot cannot be guaranteed; the final read drains logs available at that point, not future ingestion.
  • 9817262: Add vercel ci rerun to start a new attempt of a finished Vercel CI run. Preview the repository, branch, commit, and previous status, refresh the latest attempt before starting, and require an explicit run ID to rerun a succeeded or skipped HEAD run. Report unsupported sources and stale attempts accurately without retrying remote mutations. With --wait, retain the started attempt receipt and exact-attempt recovery on wait errors, and report a failed run with exit code 1 and a matching non-interactive error payload.
  • deb48cd: Accept a flat schedules format in vercel.json that is aligned with crons (schedule plus one of path, function, topic, or entrypoint), and emit schedules in the flat format in Build Output API config.json. The nested expression/target format is still accepted.
  • 7500aeb: Add shared cursor pagination helpers for list commands: a --next cursor option, --limit validation, a next-page hint, and a fetch-all-pages helper for internal lookups.
  • f5d4be8: [cli] Skip the user and team lookups before commands that only show the team name, such as vercel project ls, vercel domains ls, and vercel dns ls. The team's name is saved in the global config when it is looked up, is looked up again after 24 hours, and is forgotten when a request to that team is refused.
  • ccfc864: [connect] Read unlisted-URL discovery from the service discovery result, and send its server URL with --data credentials so the connector gets the discovered server config
  • 308b09b: Use the native binary by default on macOS unless explicitly opted out.
  • 6e22efc: Fix vercel teams ls crashing with an unhandled "Cannot read properties of undefined (reading 'value')" TypeError when the API returns no usable team data for the current credential (e.g. a personal-account-only OAuth grant with no visible team memberships). The command now prints a clear, actionable error and exits non-zero instead of throwing.

Published 2026-09-30

  • 4b90488: Allow vc traces search to search spans across all projects in a team when no project is specified.

Published 2026-09-29

  • 6074677: --help now prints to stdout and exits with code 0 for every command. Previously most commands printed help to stderr and exited with code 2. vercel git connect --help and vercel git disconnect --help now show their own help, and vercel builders preinstall --help shows help instead of running.
  • ac72831: Allow strict function affinity to be configured outside a service.
  • c4acfea: [cli] Speed up --scope resolution: look the team up directly by slug instead of fetching the full team list, and persist resolved scopes in the global config so repeated invocations skip the user and teams lookups.
  • e211dcd: Cleanup of the Firewall Overview OWASP call to action.
  • f6485cb: Help examples use each command's canonical name instead of an alias (for example ls, rm, or integration-resource) and no longer reference legacy zeit.rocks domains.
  • ddb2f0e: Show the full command path on the first line of every help page, e.g. vercel firewall rules add instead of vercel firewall add.
  • ac53485: Hide native installer track and slot from user-facing installer and vc version output.
  • 20c4706: Add an optional --ready-file to the internal build worker so callers can observe preload readiness without connecting.
  • 86268cb: List up to 100 .vercelignore violations needed by prebuilt functions, including each path's effective matching rule and line number, before truncating the deployment warning.
  • a54fb30: Fix vercel pull and vercel env pull with project-scoped tokens by resolving the project without requiring access to its owning user or team.

Published 2026-09-29

  • 1efc1ae: Require Node.js 20 or later to run Vercel CLI. Node.js 18 is no longer supported; upgrade Node.js before installing this release. Update @vercel/fun to 1.3.6 to remove the deprecated stream-to-promise and tar@7.5.7 dependencies. Check fresh npm and pnpm installs of the packed CLI for deprecated dependencies, unsupported Node.js engines, and CLI startup failures before release.
  • ef66cd6: vercel api now prints single-line JSON when output is piped or captured, the same as --raw, so grep and other tools work without extra flags. Interactive output is unchanged.
  • 04555cc: Group AI Gateway coding-agent instructions, mark required Cursor setup, and remove the duplicate backup receipt.
  • 33df1f9: Require each CLI command and declared subcommand to expose a Boolean --json output flag or be listed as a known gap in the option-uniformity test.
  • febcbe7: Support vc upgrade for CLIs installed with the curl installer. vc upgrade and vc version use <version|latest> now share one install path for installer-managed CLIs, and --dry-run/--json report installationType: "installer". The update notification now links to the release notes at https://vercel.com/docs/cli/release-notes instead of a GitHub release page that no longer exists.
  • 58f2658: vercel deploy --prod now points its "check the response" next step at the assigned production address and adds productionUrl to JSON and agent output. It stays null when no production address was assigned.
  • b9c3cc1: vercel deploy now says when Deployment Protection is on for the project and points to vercel curl to access it. JSON and agent output include a deploymentProtection list.
  • 77e75ab: vercel integration add now explains why browser setup is needed and prints the setup URL. Agents and non-interactive runs get an action_required result with the URL instead of a browser opening.
  • febcbe7: Fix vc build hiding the real error behind Converting circular structure to JSON when a failure's cause contains circular objects. Errors written to builds.json are now always JSON-safe. Preview Builder tarballs are also served as application/gzip so edge compression no longer breaks their integrity checks in native builds.
  • 882c16f: Check worker socket permissions before connecting to avoid racing listener cleanup in tests.
  • d675fc0: Recommend vercel setup in the signup success output.
  • c84f007: vercel integration resource connect now asks for --yes before any lookups when there is no terminal, and prints the exact command to rerun.
  • 882c16f: Upgrade the bundled sandbox CLI to 4.4.0, which includes usage telemetry that respects the Vercel CLI telemetry preference. Pass the CLI invocation ID to the bundled sandbox CLI so sandbox telemetry can be linked to the parent Vercel CLI invocation.
  • ae52682: Explain when a temporary deployment cannot be used for the current attempt before falling back to login.
  • 882c16f: fix delivery type narrowing in the schedule broker test.
  • febcbe7: Fix native vc build and vc dev failing with ENOTEMPTY while installing Builders. The vlt package-info cache is now removed only after its pending background writes finish, with retries, and a cleanup failure no longer fails the install.

Published 2026-09-26

  • 5082546: Build Python schedule entrypoints. A .py entrypoint such as jobs/nightly.py runs as a script once per firing in a private function under _vercel/schedules/. Entrypoints with the same functions config share one function, which runs the script for the dispatched schedule name, so the project's dependencies are bundled once per distinct config instead of once per script. Entrypoints without functions config share _vercel/schedules/default; the others' function is named after the functions patterns their config came from, such as _vercel/schedules/jobs/report. Schedule names must be unique within a shared function. Declared schedule entrypoints are not served as static files, but other files follow the normal static rules. When a project with Python schedule entrypoints publishes other .py files from its root, through the zero-config static fallback or outputDirectory: ".", vercel build now warns and lists them. Add findMatchingFunction to @vercel/build-utils, which returns the functions entry that applies to a function.

Published 2026-09-25

  • 80d02cb: Read Builder package manifests without relying on platform-specific tar command options.
  • ce781dc: Match hosted schedule and execution IDs in local development. Generate ULID-based schedule IDs and deterministic execution IDs from the schedule ID and nominal timestamp, while continuing to dispatch repeated manual invocations at the same millisecond. - @vercel/python@17.0.0

Published 2026-09-25

  • 693a289: Accept BLOCKED in vercel list --status, show blocked deployments as Blocked instead of UNKNOWN in vercel list and vercel inspect, and include readyStateReason in vercel inspect output when the API provides it.
  • e3cd2cb: Align schedule states, queue topic validation, and API errors with vss-server.
  • 6bf3ba4: Use installed CLI help for command discovery, consolidate overlapping skill references, and route retained setup, targeting, and workflow guidance by task. Check rendered help instead of requiring duplicate command catalogs in skill references.
  • 3481854: Report partial domain reassignment before suggesting recovery, preserve project and environment context in optional storage refresh commands, and retain the client setup and authentication handoff after MCP configuration.
  • 2b3c086: Add vercel schedules executions list <name> to list schedule execution history with pagination, time-range filtering, and JSON output.
  • c7a92e3: Run authored and builder-native static schedules in local development. Validate complete snapshots before publishing function and queue registrations and preserve the last valid snapshot on invalid reloads. Static definitions reject payload; function callbacks receive only schedule metadata through bodyless events using ce-id and ce-vssscheduledat. Queue deliveries include executionId and scheduledAt and retain API-managed payloads. Local schedules and management state are in memory and reset on a full dev-server restart. The combined authored and native schedule definitions form one full source snapshot. Changing any schedule definition reapplies all static definitions, as a deployment would, while preserving retained schedules' IDs, disabled state, and API-managed payloads. Unchanged source snapshots and unrelated code or environment reloads preserve API edits, deletions, and same-name dynamic replacements without revalidating core timing or ownership. A changed source snapshot that conflicts with a dynamic schedule is rejected without replacing the accepted registries.
  • abe00bb: Show the active team plan in vercel whoami output.

Published 2026-09-24

  • 1cfef7b: vercel usage now matches the Usage page in the Vercel dashboard. It defaults to your current billing cycle, shows each product's usage in its own units, labels usage included in your plan, separates subscription seats from infrastructure usage, and reports costs in your account's billing unit. BREAKING: vercel usage --json has a new output format. The fields pricingQuantity, pricingUnit, billedCost, effectiveCost, and chargeCount have been removed. Read costs from cost and costUnit, and product usage from the new quantity and unit fields. Note that the old pricingQuantity was a cost amount, not a usage quantity, so scripts that used it should read cost.
  • 62d909b: Host an authenticated local Schedules API in vercel dev, with dynamic schedule management, Queue delivery, and a --schedules-port option. Validate Queue topics on create and update, preserve existing schedules on invalid updates, and dispatch bodyless function events while retaining dynamic Queue payloads. Queue envelopes use executionId and scheduledAt; function events use ce-id and ce-vssscheduledat without the legacy ce-time or ce-vssscheduleexecutionid headers.
  • 53767ce: Add vercel project dangerously-delete-immutable-static-asset command for permanently deleting an immutable static asset from storage (interactive-only, typed-path confirmation)
  • 1cfef7b: Add the existing optional planIteration and subscription-period fields to the billing type.
  • d8f388e: Clarify command help for project link precedence, Blob credentials, environment file destinations and readable values, routing publication, domain reassignment, storage previews, integration disconnection, comment attachments, cache operations, deploy hook URLs, and CLI upgrades.
  • 97f2ca3: [flags] Timestamp attributes only accept the comparison operators gt, gte, lt, and lte (also spelled after, at-or-after, before, and at-or-before), matching the operators the dashboard supports. on-or-after and on-or-before keep working as aliases.
  • 57aeab5: Add an explicitly started, project-scoped local Schedules broker with timezone-aware timers and an isolated dispatch boundary.
  • 62d909b: Match production schedule name and namespace validation by allowing leading periods, underscores, and hyphens. Preserve the 1-256 character limit and rejection of slashes. This parity fix accompanies local Schedules API hosting without changing scheduler behavior.
  • 6e68e60: Add onMiss to Prerender. ``ts onMiss?: 'sync' | 'dynamic'; Declares how a request is served when no prerendered output is available for it yet. Absent means sync: block the response on rendering it. dynamic` serves the request dynamically while the static shell is regenerated in the background. The value is carried unvalidated so an unknown mode cannot fail a deploy.
  • 2e24d25: Distinguish unavailable storage variable names from known empty changes in human connection previews and results. Identify rolling release requests and their deployment without claiming traffic has finished moving.

Published 2026-09-23

  • 2a134f6: Accept Python module:attr proxy entrypoints.
  • 2989dec: Add Critical-only delivery settings for alert rule notification destinations.
  • 4a83ab3: Fix an intermittent test failure where withDirectoryLock could strand the native update cache lock: a single transient owner-file read error during release (common on Windows due to antivirus/indexer file-sharing violations) was indistinguishable from "another owner now holds this lock", so release was silently skipped. The release check now retries briefly and defaults to releasing the lock we hold, since a live lock can never be legitimately reassigned out from under its owner. Also give each native-auto-update.test.ts test its own cache directory so concurrent-write sub-tests can never contend with locks left over from another test case.
  • 52b3923: Discover development functions through builder getDevManifest hooks and conventional per-entrypoint builds. Keep an output-path registry for direct invocation, derive Queue subscriptions from normalized triggers, and retain optional Schedule metadata without scheduling it. Deliver Queue events directly to the selected runtime without public rewrites, while preserving delivery state across configuration reloads. Defer entrypoint delivery during watcher reconciliation, validate Queue tuning bounds, and select variable-version builder outputs using their effective result version.
  • a6fee9a: Accept minute-precision --at values for one-time schedules. Omitted seconds are stored as :00; any other seconds value is rejected.
  • 7eb63c0: Accept runtime-specific schedule entrypoints and provide build plumbing for lowering dedicated entrypoints to function targets. All schedule entrypoints must use one runtime, including for static frameworks and framework: null. Entrypoints must also match the runtime of frameworks that own one (Next.js, FastAPI, Express). The builder contract still supports multiple entrypoints per function for future runtimes.
  • 14f7a0b: Expose the running CLI version as VERCEL_CLI_VERSION to framework dev commands started by vercel dev, including multi-service projects.

Published 2026-09-22

Published 2026-09-22

Published 2026-09-22

  • c610f14: Restore automatic native CLI enrollment for Vercel team members, keeping automatic enrollment separate from explicit preferences. Preserve explicit opt-outs and allow npm-installed CLI users to disable native execution even when the native binary cannot start.
  • e71d1cf: Fix Windows service dev commands to resolve port placeholders, and resolve the matching nested esbuild executable in native snapshots.
  • ca4bb81: Allow vercel domains check, vercel domains price, and vercel domains search without logging in.

Published 2026-09-21

  • 6887089: Add vercel signup --email <email> to create a Vercel account and sign in from the CLI. It opens the signup page with the email prefilled and, once the account is created, completes the device authorization so the CLI is signed in.
  • 360ffab: Re-add @vercel-internals/runtimes as a dev dep to fs-detectors.
  • 09789a9: Set ENABLE_TOOL_SEARCH=true in the Claude Code settings written by vercel ai-gateway coding-agents setup. Claude Code disables tool search when ANTHROPIC_BASE_URL points at a non-first-party host, so every MCP tool schema was loaded into context on every turn through the AI Gateway. The gateway forwards tool_reference blocks, so tool search can stay on.
  • 6885004: Align schedule validation, delete receipts, and API error output with vss-server.
  • 3a40061: [connect] Stop polling and exit when a browser-based vercel connect create is canceled instead of waiting for the timeout
  • 250d956: Report cached, bounded CLI installation context and rollout preferences from the detached telemetry flush process.
  • 95fed29: Revert the authentication recovery changes from #949, restoring the temporary deployment guidance for logged-out users.

Published 2026-09-18

  • 512045c: Restore native CLI self-spawn behavior for embedded JavaScript helpers, including VLT cleanup processes.

Published 2026-09-18

  • ad8483e: Show authoritative build duration, billing usage, and machine assignment details in vercel inspect.

Published 2026-09-17

  • e22e20f: Add a migration assistant for experimentalServices which converts a legacy experimentalServices config into services with top-level service rewrites. Available under vercel dev, vercel link and vercel deploy.
  • d70474b: Add vercel budgets to show and manage Spend Management for on-demand charges after included credit.
  • 46d8636: Show the model's actual providers in the virtual-model create prompts

Published 2026-09-17

  • a953d36: Serve Vercel Queues and Runtime Cache from dedicated local ports in vercel dev, including projects without configured queue services. Poll-mode consumers can create consumer groups on first receive and read retained messages from the beginning of a topic. Every service, sidecar, function, and framework dev command receives the direct local endpoints, while container services use authenticated /_svc routes as container-reachable proxy aliases. The ports can be pinned with --queue-port and --runtime-cache-port; otherwise occupied defaults are incremented automatically. A RUNTIME_CACHE_ENDPOINT you set yourself still takes precedence.
  • dedd060: Introduce nostics error codes for vercel dev to replace raw error strings with stable errors
  • 38f1f48: Add vercel setup, a single command that installs the Vercel plugin for Claude Code and Codex and connects local coding agents to the AI Gateway. Use --plugin or --gateway to run one step, repeatable --agent flags to select agents, --dry-run to preview, and --yes to skip prompts. Report failed plugin migrations and missing confirmation with a nonzero exit code, emit actionable JSON for non-interactive plugin setup, and distinguish canceled or delegated Gateway setup from completed configuration. Reject unexpected setup arguments before applying changes, emit JSON for setup errors in non-interactive mode, and report missing plugin files or skipped Gateway updates without claiming completion. Install and enable the native Codex marketplace plugin through the Codex CLI, verify the installed state, surface pending account connections, and include per-agent plugin results in non-interactive output. Preserve agent selection in confirmation retries and forward it to Gateway setup.

Published 2026-09-16

  • 05755a8: Add vercel schedules get and vercel schedules list for inspecting schedules in a linked project.
  • 8b2e178: [cli] List virtual models in ai-gateway models list with a --virtual filter
  • 5389ba4: [cli] Add vercel ai-gateway virtual-models create
  • 8913ad9: [cli] Add vercel ai-gateway virtual-models edit
  • 70dc3b2: [cli] Add vercel ai-gateway virtual-models inspect
  • 1e47cca: [cli] Add vercel ai-gateway virtual-models list
  • a4a42fb: [cli] Add vercel ai-gateway virtual-models remove and restore
  • ed30b0f: [cli] Guide the virtual-models create wizard: searchable model catalog, pick-then-prompt fields, validated entries
  • 1b48ec4: Bound detached native update checks and telemetry flushes with abortable deadlines, and record native update timing and outcomes.
  • 491c6d9: Preserve sibling environment targets when removing a variable from one environment.
  • 526dd68: Show deployment build machine resource configuration in vercel inspect output.

Published 2026-09-16

  • 0504db6: Publish native Vercel CLI binaries for Windows x64 and ARM64.
  • bd74093: Expose encoded trace pagination tokens in JSON output so scripts can request the next or previous page.

Published 2026-09-16

  • 1a9e230: Support Custom Environments when installing, connecting, and disconnecting Marketplace resources.
  • 5e24681: Add a --turbo option to vercel deploy for using a Turbo build machine.
  • e01b1b2: Add opaque pagination cursors for Agent Run trace streams.
  • c0f723b: Explain authentication failures with a concise login instruction and credential-specific recovery. Return structured authentication errors for agents, including the credential source, retry guidance, and required user action. Keep team access failures distinct from rejected credentials in vercel whoami.
  • ff6d318: Add JSON output support to domains inspect.
  • a7f03ea: Support enabling CLI debug output with VERCEL_CLI_DEBUG=1.
  • 1531b21: Release native update cache locks reliably on Windows.
  • 888f7b9: Make unavailable billing-cost responses identify the requested usage period without silently changing the query.

Published 2026-09-15

  • a7e7bdc: Add vercel experiments commands, currently available in limited preview.
  • 122b7f2: Explain permission and billing failures to agents, preserve recovery guidance in JSON, and avoid unrelated project suggestions. Suggest unambiguous command and option corrections using the installed CLI's accepted names. Record safe error categories and command outcomes by invocation for agent recovery analysis.
  • e9df442: Add bounded production and PR tracks with A/B slots for curl-installed native CLIs. Enable native automatic updates by default, check for releases once per day in a dedicated detached process, retry interrupted staging, and add vc version check to select production after its background update completes.
  • a88afa0: Route Ruby services and zero-config Ruby projects (Rails and Rack) to the experimental Ruby buildpack container builder behind VERCEL_EXPERIMENTAL_BUILDPACK_RUBY=1. The buildpack is selected only when a Gemfile sits at the build root and no file entrypoint narrows the build; services with an explicit .rb/.ru entrypoint keep building with @vercel/ruby. vercel dev reports that Ruby projects and services are not supported yet.
  • a52dbfb: Use a configured VLT Builder cache when running the native CLI and add a hidden command to preinstall its embedded Builder graphs.
  • ac5134e: Use connector default scopes when requesting a Connect token unless --no-default-scopes is specified.
  • c4c4f3f: Install the exact latest Vercel CLI version during foreground upgrades, while automatic upgrades leave @latest unpinned so package managers apply minimum release-age settings without prompting, bypassing policy, or downgrading. Support explicit version targets, and offer a choice between installing the newest release allowed by package manager settings or persisting minimum release-age bypass consent for npm and pnpm. Explain the configured minimum release age, including pnpm 11+'s implicit 24-hour default, in interactive and non-interactive failures. Resolve metadata using the detected global installation configuration for npm, pnpm, Yarn, and Bun; use the environment and temporary directory captured at startup so project dotenv values cannot alter update executables or working directories; and reject local, unknown, and vlt-managed installations with actionable guidance instead of assuming global npm. Keep dry-run and JSON previews free of settings mutations, and save explicit bypass consent even when already up to date. Preserve the completed command's exit code if optional update notifications or automatic updates throw. Handle npm 12's JSON metadata arrays and verify real global installation, detection, upgrade, release-age rejection, and bypass using the preview CLI with pinned npm and pnpm versions, while covering Yarn and Bun command construction and detection deterministically.

Published 2026-09-14

  • 66d10da: Add vercel firewall bot-management and treat Bot Protection, AI Bots, and BotID as reserved managed rules in rules list, inspect, and edit.
  • 66d10da: vercel firewall bot-management now lists top unknown bot traffic (by category) alongside the managed rules, matching the dashboard's bot-management card.
  • 5697600: Add attribute value label management with vercel flags labels, including paginated list discovery and positional attribute targets.
  • adbe28a: Add vercel storage list|create|get|delete for managing storage resources across store types. create takes --type (blob or global-config) plus the product's own flags (--access/--region for Blob, --items for Global Config), list and get work for every store type behind the storage surface, and delete resolves the type from the store itself. get and delete accept --type to pick between a Blob store and a Global Config that share a name. Support for each product lives in one provider entry, so adding another store type is a single registration. delete cannot be undone and drops every project connection, so it always requires interactive confirmation and returns an action_required payload in non-interactive contexts.
  • 757f284: Prevent best-effort telemetry user attribution from refreshing expired sessions or starting an interactive login.
  • f523f6d: Prevent excluded files from being published by static builds with a configured output directory.
  • 66d10da: vercel firewall traffic list now reads verified bots from vercel.firewall_action.count (non-empty botName) so the panel works without Observability Plus, and groups Top AS Names by asnName and asnId.
  • b1377e9: Report whether an auto-provisioned integration resource connected to its project in JSON output.
  • b0e7c57: Accept now as the end time for vercel logs --until.
  • 66e443e: Fix native CLI build/dev worker dispatch, preserve the system Node executable for shell commands, resolve project analytics versions outside the binary snapshot, pair dynamically installed builders with compatible build-utils versions, and lazily materialize the packaged esbuild executable for JavaScript and TypeScript configuration files.
  • 66e443e: Run the existing CLI integration suite against Linux x64 PR binaries after upload, reporting failures in an optional merge check.
  • e096a14: Preserve the selected project and environment in non-interactive build recovery commands so retrieving missing settings does not accidentally enter project creation.

Published 2026-09-11

  • 0239c8e: vercel firewall traffic list, traffic inspect, overview and persistent-actions inspect now read traffic from the Observability API — the ClickHouse query engine vercel metrics uses — instead of the older /v2/observability/query service. --filter takes KQL rather than OData (an OData expression is still passed to the API, with a deprecation notice), and the dimension names it accepts are the schema's camelCase ones: clientIp, wafAction, wafRuleId, requestHostname, requestPath, botVerified. Run vercel metrics schema vercel.firewall_action.count for the full list.
  • 0239c8e: Add vercel firewall traffic list / inspect for exploring firewall traffic: requests by action over a window, top lists per dimension, and one dimension value in detail with a breakdown by another.
  • 156e3ce: Add --json to vercel flags inspect to output the flag definition on stdout.
  • 54a6d73: Require schedule jitter to be an integer from 1 to 15 minutes in vercel.json and Build Output API config, matching the maximum SQS message delay. Duration strings are no longer accepted.
  • 3d16792: Add an optional IANA timezone to schedules in vercel.json and Build Output API config. Omitted timezones use UTC. Validate configured timezones before building.
  • 0b68fd0: Add alert rule notification destination commands for listing linked destinations and linking or unlinking Slack installations and account webhooks.
  • 348e6f1: Bump @vercel/microfrontends from 1.2.2 to 2.4.0 so @vercel/client uses patched path-to-regexp@6.3.0 (GHSA-9wv6-86v2-598j). This is the request-time matcher, unlike the CLI's vendored compile-only copy. 2.x signatures: findConfig takes customConfigFilename, and inferMicrofrontendsLocation takes applicationContext instead of applicationName. Passing undefined for customConfigFilename keeps the old search for microfrontends.json / microfrontends.jsonc.
  • 0239c8e: The firewall commands now name vercel buy addon observability-plus when a traffic, alerts or persistent-actions query is refused for want of an Observability Plus subscription, rather than reporting only what is missing. vercel metrics offers it for that refusal alone, where it previously offered it for any 402 — including a spent query quota and Web Analytics gates, neither of which the purchase clears.
  • 0239c8e: vercel firewall persistent-actions no longer presents what a plan withholds as real data. The API silently trims the start of the search window to 24 hours (7 days on Enterprise), so a wider --since came back trimmed while the header still claimed the window that was asked for; list now trims it itself, says so, reports requestedStartTime in --json, and fails with that reason when the whole window is older than the retention. On the same plans the API replaces an older row's hostname, IP and rule with ***, which was read as a Custom Rule, counted as a distinct blocked address, and could be charted as though *** were a client; those rows now report as hidden, stay out of the address counts, and are footnoted in the table.
  • 2a57243: More robust Next.js framework version detection
  • 62bec4e: Deduplicate dependency installation across development services that resolve to the same package root.
  • 0239c8e: vercel metrics now names vercel buy addon observability-plus when a query is rejected for want of an Observability Plus subscription, rather than pointing only at the billing dashboard. JSON output is unchanged.
  • 7f1e9ff: Stop advertising custom alerts in static CLI help until their availability can be determined for the current user.

Published 2026-09-10

  • bf9ade1: Warn on --prebuilt deploys when a filePathMap entry is excluded by .vercelignore. An upcoming release will fail closed instead of uploading without those files. Default-ignored dependency directories (node_modules, .next, etc.) are still kept. The CLI records telemetry when a deploy would fail closed.

Published 2026-09-09

  • ffbc04b: Emit manifest for static builds.
  • 55e8d1e: Reduce CLI startup and deployment preparation time through lazy shared dependencies, smaller bundles, parallel Git metadata and file collection, and native executable startup caching. Allow deployment options to resolve asynchronously while the client collects local files. Keep startup regression tests compatible with asynchronous prompts and Windows Git paths, and allow the NestJS build fixture sufficient time for cold dependency installation.
  • 38ab4a2: Use services returned by programmatic Vercel configuration when running vercel dev.

Published 2026-09-09

  • a2ad023: Add vercel flags entities create to create entities and attributes with schema validation.
  • 4766ac4: Add vercel flags entities ls to list the entity schema used for flag targeting, including JSON output and setup guidance for projects that do not yet use Flags.
  • 98b4ea3: Add vercel flags entities rm with confirmation and reference checks across active and archived flags and segments.
  • e6f1378: Add vercel flags entities update to edit entity labels and attributes. Removing or retyping an attribute is blocked while flags or segments still reference it.
  • 7f78bd1: Prevent lazily generated service configuration from duplicating framework root routes during build output assembly.

Published 2026-09-09

  • 664c7b7: Clarify rolling-release errors when no linked project is found by documenting the --project alternative.

Published 2026-09-08

  • 1ec44db: Add vercel firewall alerts list / inspect and vercel firewall persistent-actions list / inspect for DDoS episodes and persistent WAF actions against client IPs.
  • 1bc42b6: vercel firewall overview now reports the last day of activity beneath the configuration block: traffic by action, the busiest rules, and alerts raised in the same window. Accounts without Observability Plus continue to get the configuration block on its own.
  • 1bc42b6: vercel firewall status --json now reports the request pipeline as data: requestFlow, the stages a request passes through in order, matching the dashboard's firewall diagram — including its grouping, its per-stage descriptions, and the routing stages a request reaches when nothing blocks it — and bypasses, giving the system and custom bypass kinds with the stages each one skips. Each stage separates static topology (order, group, label, description, configurable, skippableBy) from this project's configuration (state, count, action, rulesets, skippedBy), so skippedBy reports what a project's bypasses actually skip rather than what could skip the stage. A system bypass the plan cannot read is reported as state: "unknown" with no count, instead of being indistinguishable from no bypasses at all. overview --json gains activityUnavailable, which names a plan-gated activity window that previously appeared only as null fields. Its traffic rows move from rules to topRules, so the key does not collide with the rule counts status --json reports under rules, and each entry in series drops the total that stats already reports for the same action.
  • 1bc42b6: Add vercel firewall status, showing firewall configuration in execution order — bypass, system mitigations, attack mode, IP blocks, rules, and managed rulesets. --json additionally reports the pipeline as ordered data and a bypassUnavailable field explaining why bypass is null. firewall overview now renders the same block, so it reports managed rulesets too, and its rows use the shared aligned-label layout.
  • e1fb368: Add vercel storage — a provider-neutral surface for connecting storage resources to projects. vercel storage connect|status|update|disconnect <store> takes the same resource identifier (store name or ID) for Vercel Blob, Marketplace resources, and the other first-party stores. --auth oidc is the default, so the CLI opts in to the OIDC credential path instead of leaving it behind an undocumented request header; static credentials require an explicit --add-rw-token. Every mutating subcommand prints the exact environment-variable change set before it applies anything, in text or JSON, and --dry-run stops there. disconnect removes environment variables from the project, so it has no --yes and always requires interactive confirmation; non-interactive contexts (CI, scripts, or agents) get an action_required payload with reason interactive_confirmation_required and can only --dry-run.
  • 38a4acd: Use a vlt-based importer for release-pinned Builders in native CLI installations, storing materialized installations in the platform cache directory.
  • a919cc2: Fetch traces through the Observability Query Engine.
  • 7411247: Move vercel alerts rules to the public alert-rules API and add scope, schema, pagination, and output support.
  • ef5c9f7: Use the new Observability metrics API by default, surface its rate limits without retrying, and add FF_LEGACY_METRICS=1 to restore the legacy metrics behavior.
  • b174f14: Raise the client-side maxDuration validation limit to 3600 seconds.
  • 1bc42b6: vercel firewall overview now scopes its alerts request to the window it reports, instead of taking the newest 100 alert groups and silently dropping the rest — on a project with frequent bot alerts that could push mitigated attacks out of the summary entirely. It also lists an attack that began before the window and is still running, which was counted but not shown.
  • 1bc42b6: vercel firewall overview now reports permission denials and timeouts distinctly instead of as generic API failures, matching firewall status, and only suggests re-running when a retry could succeed.
  • 1bc42b6: vercel firewall now recognises Security+ enabled on a single project, not just team-wide. Projects carrying it themselves were told OWASP required an upgrade they had already bought, and firewall status --json reported requiresUpgrade for them. firewall overview also counts a DDoS episode reported only by the alerts API, which is where Security+ accounts receive them.
  • 38a4acd: Flip the PR binary current-sha pointer after the first platform uploads, report the installed Git commit separately from the binary checksum, and tell vercel version use pr/N when this SHA exists but this platform is not ready yet.
  • 2d541b2: Close unconsumed WebSocket upgrade connections in Next.js local development.

Published 2026-09-04

  • 1109c9e: Update CLI command behavior.

Published 2026-09-02

  • ac6a489: Fix vercel build on Windows for nested static App Router routes (NEXT_MISSING_LAMBDA). Lambda keys from getServerlessPages now use posix separators so routes like /a/b look up correctly.
  • 5a11891: Skip the "Did you mean to deploy the subdirectory" warning when the current directory is already linked via .vercel/project.json or a matching project in .vercel/repo.json, so commands like vc ai-gateway are not flagged just because a matching folder exists.

Published 2026-09-01

  • 66ecd0e: Prefix each build-output line with a service tag during multi-service builds. Because each service now builds in its own forked worker with piped stdout/stderr, the CLI reads and tags every line the build produces — including output from subprocesses the builder spawns (e.g. next build) — with [vc:service:<name>]. The Vercel build-container strips this tag and uses it to attribute each build log line to a service. Single-project builds are unaffected.

Published 2026-09-01

  • a652a99: Propagate top-level schedules from vercel.json into the Build Output API config.json during vercel build, and validate the property against the schedules schema
  • daf77cd: Resolve --scope for teams that the user can access without a direct membership.

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.

Published 2026-07-24

  • 7dd4301: Make service bindings type optional.
  • 3a066fe: Add a resolved attribute to the vc.importBuilders trace span recording each Builder's resolved version and source directory
  • b40db5b: Improve vc alerts and vc alerts rules output for custom alerts, including readable inspect views, custom alert rule filtering, compact rule tables, and normalized alert timestamps.
  • fca6de2: Added a notice when a project's first vercel deploy (without --prod) is assigned to production by the API. The notice explains that this is expected behavior for the first deployment and that future deployments will be preview deployments unless --prod is used. In non-interactive mode, the hint is included in the JSON payload and the "Promote to production" next command is omitted since the deployment is already production.
  • 6e29745: Gate the native CLI binary trampoline behind an explicit opt-in. The native @vercel/vc-native-* binary is only spawned when the user opts in via vercel upgrade --enable-binary (or the useNativeBinary global config flag); members of the vercel team are auto-opted-in when their teams are already loaded. Adds a zod-free @vercel/cli-config/paths subpath so the opt-in flag can be read on the CLI startup hot path without loading zod.
  • e4a7a58: Fix the native trampoline resolving the native binary through NODE_PATH: require.resolve() consults NODE_PATH and the global folders even when paths is given, so the native package is now located with an explicit walk up this install's own node_modules tree
  • a5439da: Expose pprState in vc logs output, alongside the existing cache status and reason, so users can see how a PPR page was served (fully_static / partially_dynamic / fully_dynamic).
  • 3540322: Preserve the selected team scope across re-authentication. vercel login no longer resets currentTeam to the default team when re-authenticating: the previous selection is kept when the authenticated user is still a member of that team, and only falls back to the default scope (with a warning) otherwise. vercel teams switch no longer hard-fails when the persisted team is stale (deleted or membership revoked), so it can always be used to switch away.
  • ae12b01: Expose the resolved rewrite destination as the request path observed by Python framework applications, and warn affected Python projects about the behavior change.

Published 2026-07-22

  • ab9c775: Add vercel ai-gateway budgets set/list/remove commands
  • 83c72a4: Recover from sensitive Environment Variable step-up challenges in every command that fetches Environment Variables (vercel dev, vercel pull, vercel env run, vercel build, vercel link, OIDC token refresh), not just vercel env pull. The device-code re-authentication flow now lives at the shared env-records layer, so any challenge_required response triggers it when running interactively.
  • 4e9df75: Add vercel comments — a project-aware inbox for Vercel Toolbar comments. List unresolved comments for the linked project (focused on the current Git branch), inspect full threads, reply, resolve/reopen (optionally with a closing reply via -m), and edit/delete messages. Supports --format json with a stable envelope for scripting and agents.
  • b789421: Precompile vercel.json validation to improve CLI startup performance.

Published 2026-07-20

  • c973e6b: Declare builders as optional peerDependencies and use the declared versions to pin dynamic Builder installs: bare specs install the version this CLI release was published with instead of latest, stale .vercel/builders copies are reinstalled, @vercel/build-utils is pinned to the CLI's own version, and post-install resolution failures now report a per-Builder reason instead of "Something went wrong!". Explicit Builder version pins are unchanged and always win. Builders remain in dependencies.
  • 604de7c: Do not emit curl request body flags for generated GET API requests.
  • 4486556: Suppress DEP0169 url.parse() deprecation warnings in the native binary
  • 48e840d: Fix an infinite launcher loop when vercel and @vercel/vc-native are both installed globally. The launcher no longer resolves a native binary when already running inside one (VERCEL_VC_NATIVE=1), and only resolves the native package from its own install tree, ignoring NODE_PATH.
  • 09f2642: Persist the rotated refresh token after the vc env pull step-up authentication. The step-up rotates the token pair server-side and revokes the previous refresh token, so keeping the old one caused subsequent step-ups to fail with Device authorization request failed and eventually forced a re-login.
  • 02c3933: Remove alias for flag evaluations

Published 2026-07-20

  • ed28e18: Add vercel flags evaluations for viewing compact, per-variant evaluation charts and bucket-level JSON data with truncation metadata. Examples: ``bash vercel flags evaluations my-feature vercel flags evaluations my-feature --since 24h --granularity 1h vercel flags evaluations my-feature --since 24h --json
  • 37a95cd: Include cron jobs emitted by services in the project build output so deployments register them.

Published 2026-07-18

  • 145eb34: Improve vercel ai-gateway coding-agents setup prompts: use the searchable team picker, keep the multiselect key legend visible after the first selection, and narrow the prompt lines by moving context off the question line. The apply step now offers a coding-agent handoff: when the key is stored in the macOS Keychain it asks whether to write the files or "Copy a prompt for my agent" (which creates the key, stores it in the Keychain, and copies agent-ready setup instructions — with no plaintext key — to the clipboard); without the Keychain it stays a plain yes/no confirm. A new --apply <edit|prompt> flag drives this non-interactively — --apply prompt writes the prompt to stdout so it can be piped into an agent (… --apply prompt --yes | claude -p), and in machine mode it rides along as a prompt JSON field.

Published 2026-07-17

  • b08b736: Support linked-project deploys with project-scoped tokens that cannot fetch owner user/team resources.

Published 2026-07-16

  • 238543c: Support Python services that declare their web app and development workflow sidecars through a pyproject.toml entrypoint in vercel dev.
  • d5751d6: Allow Env, Target, Flags rules, Routes, Redirects, Firewall, and Git commands to select a project explicitly with --project, including from an unlinked directory.
  • 1d8e0ee: Extract project-link validation shared by routes, redirects, and firewall commands.
  • b0aa678: Consolidate suggested-command and subcommand-argument helpers while preserving explicit project context and required-argument validation.
  • c06b596: Fix vercel domains add sending the alias mutation under a stale ambient team scope. When run inside a directory linked to a project in another team, the command now resolves the local project link (like vercel domains ls) and scopes the domain/alias request to the linked team, so a same-name project in the ambient team can no longer be targeted by mistake.
  • a39869e: Fix vercel dev returning 404 for api/ functions using the rust, python, ruby, or go runtimes when the project has a framework dev command (e.g. Next.js). These runtimes are registered by backend framework presets, which caused the dev server to misclassify api/ functions as the frontend build and skip building them.
  • a55e7df: Replace user-facing experimentalServices references with services in error/warning messages and rename error codes (NO_EXPERIMENTAL_SERVICES_CONFIGURED → NO_SERVICES_CONFIGURED, MISSING_EXPERIMENTAL_SERVICES → MISSING_SERVICES). The deprecated v1 config key should no longer appear in guidance shown to users.
  • e4866e9: Skip the Rust target/ directory by default for Rust projects. Rust projects produce a target/ directory of build artifacts that can be hundreds of MB. It's rebuilt on Vercel during the deployment (and cached server-side), so uploading it only slows deployments down. When a root Cargo.toml is detected, target/ is now ignored by default during vercel deploy and vercel dev. Users can opt back in with !/target in their .vercelignore. Also hardened the local file scanner used by vercel dev so that a directory removed mid-scan (a common race with cargo build churning target/) is skipped instead of crashing the process.
  • 7ea6c7a: Preserve buildCommand and combine preDeployCommand when writing inferred services config to vercel.json in V2 format.
  • 4cce813: Write [SENSITIVE] placeholder instead of an empty string when vercel env pull encounters sensitive environment variables whose values cannot be read, so an unset value is distinguishable from a redacted one

Published 2026-07-15

  • ce094f1: Show a specific error message when purchasing v0 credits without a paid v0 plan, instead of the generic unexpected-error fallback.
  • 3e0e6a8: Refactor linked project resolution to use named options.
  • 877c1ba: Allow vercel env ls to target a project explicitly without linking the current directory.
  • 81360cf: Use /v5/certs instead of legacy /v5/now/certs when listing custom certs for a domain.
  • a6af051: Add vercel flags versions <flag> and vercel flags versions diff <flag> --revision <number> to inspect feature flag version history and changes. Examples: ``bash vercel flags versions my-flag vercel flags versions my-flag --environment production vercel flags versions diff my-flag --revision 4
  • 51c7c32: vercel logs --follow now resolves a deployment automatically instead of erroring. When no deployment is specified it follows, in order: the latest deployment on the current git branch (using the provider-agnostic branch filter, which also matches deployments from unrecognized git remotes), your latest deployment, then the latest production deployment. --environment production streams the latest production deployment directly, and --environment preview restricts resolution to preview deployments.
  • 51c7c32: vercel logs now defaults to --expand output when stderr is not a TTY (agents, pipes, CI), printing every log message in full instead of truncating messages to a fixed-width table column.
  • def07fc: Migrate @vercel/client and @vercel/build-utils from node-fetch to native fetch. This removes the last url.parse() usage from the CLI bundle, which triggered a DEP0169 DeprecationWarning on Node 24 (visible in the standalone binary during vercel deploy). BREAKING CHANGE (@vercel/client): the agent?: http.Agent option was replaced with dispatcher?: FetchDispatcher (an undici dispatcher, e.g. undici.ProxyAgent), since native fetch does not support Node.js HTTP agents. The CLI now threads its proxy-aware dispatcher through automatically, so HTTP_PROXY/HTTPS_PROXY behavior is unchanged for CLI users.
  • 75342cb: Resolve an explicit scope before looking up a project for local builds.
  • b16a9a2: Standardize explicit project resolution across existing project-aware commands.
  • 075dc0c: Respect explicit project and scope selection when resolving project context.

Published 2026-07-14

  • 997d319: vercel env add now accepts a comma-separated list of environments to create a single Environment Variable entry spanning multiple targets, e.g. vercel env add API_URL production,preview,development. Invalid environment names fail locally with a clear error (invalid_environment in non-interactive mode), custom Environment slugs are resolved to ids, and a Git branch is rejected unless Preview is the only target. Non-interactive missing_environment, missing_requirements, and sensitivity-conflict payloads now suggest the multi-target command form.
  • e6b11f0: Add finer-grained vc.doBuild spans (vc.readConfigInputs, vc.prepareFlagsDefinitions, vc.getFiles, vc.populateFilesMap, and vc.setMonorepoDefaultSettings) so build-container traces can attribute previously unaccounted CLI orchestration time.
  • 383c0a0: Fix native-trampoline test hardcoding 55.0.0 that broke after version bump to 56.1.0. The test now reads the version from packages/cli/package.json and strips NODE_PATH/VITEST env vars so require.resolve inside the temp install does not leak the repo's pnpm store. Also fixes VERCEL_VC_NATIVE leak on ENOENT/EACCES fallback (JS fallback was mislabeled as "(native)") and updates the stale Part-1 comment in src/vc.js.
  • 351a9b6: Exclude vercel.ts config file variants from static file serving

Published 2026-07-13

  • fac79dc: Make the CLI bin native-aware: resolve and spawn a @vercel/vc-native-* binary when present, otherwise no-op into the existing JS CLI. Part 1 of 2; no optionalDependencies are wired yet, so this release is a no-op that confirms the JS path is unaffected. Part 2 wires the release flow to publish natives before vercel.
  • e01c1d2: Harden filesystem trust boundaries: vercel init no longer materializes symlink or hardlink entries from downloaded example archives (blocking tar link-following path traversal, CVE-2024-12905 / CVE-2025-48387, and upgrading tar-fs to 1.16.5), the deploy root-directory check now normalizes paths before the containment test so a sibling directory sharing the project's path prefix can no longer be selected, and ai-gateway coding-agents setup now flags in its plan when a target config path is a symlink so the approval prompt reflects the file the write actually lands on.

Published 2026-07-13

  • 4998ec8: vercel routes export now uses --output (-o) instead of --format to select the output file format (json or ts, dotted forms like .ts also accepted). This frees --format to align with the standard output-format convention used by other commands. Update any scripts from routes export --format ts to routes export --output ts.
  • 5ae15fa: Add vercel ai-gateway coding-agents setup to connect Claude Code to the AI Gateway from an existing API key (--key): it sets the gateway base URL and authentication in ~/.claude/settings.json (honoring CLAUDE_CONFIG_DIR), never pins a default model, is idempotent, masks the key in output, skips unparseable configs instead of clobbering them, edits existing config files in place so your own keys and formatting are untouched, and emits a structured JSON result in non-interactive mode.
  • 24c2b3c: Automatically install a marketplace product's declared agent skills after vercel integration add provisions it, replacing the interactive confirmation prompt. The transcript ends with an install summary linking to the product's marketplace page, and failed installs fall back to printing the manual npx skills add command.
  • 607f0ef: Add service information to deploy-manifest.
  • 8642a47: Remove the vercel oauth-apps sub-command, reverting the OAuth / connected apps parity scope.
  • 57e2091: vercel env pull now keeps variables that only exist in the local env file instead of deleting them. Kept variables are listed in the command output. CLI-managed variables (VERCEL_OIDC_TOKEN and analytics IDs) are still removed when they no longer exist upstream.
  • 2a403e2: Add Codex support to vercel ai-gateway coding-agents setup. It writes a vercel model provider to ~/.codex/config.toml (OpenAI-compatible base URL, responses wire API) without pinning a default model, and exports the gateway API key via your shell rc (honoring CODEX_HOME and fish/ZDOTDIR). Merging into an existing config.toml edits assignments in place, preserving your comments and formatting.
  • 683f013: ai-gateway coding-agents setup can now **provision a key** for you: run it without --key and it creates an AI Gateway API key (prompting for the owning team and a name, or using --name/--scope and the current scope with --yes), then writes that key into the agent configs. Re-running when everything is already set up is no longer a dead end: it prompts to **rotate the key or switch team**, and --reconfigure does the same non-interactively (useful for a rotated or expired key, or a different org). A plain re-run stays a no-op.
  • e64b222: ai-gateway coding-agents setup now detects the Codex desktop app and asks for consent before configuring Codex, since the desktop app cannot use custom model providers and stops working when one is set (the Codex CLI keeps working). Non-interactive and --yes runs configure Codex only when it is explicitly requested with --agent/--all; JSON output gains a warnings array and a requires_consent skip reason, and a run refused for lack of consent exits 1 with a self-contained requires_consent error payload (structured warnings, skip entries, and a runnable next[] command). A declined agent's configuration is left untouched.
  • 7190684: ai-gateway coding-agents setup now configures only the agents detected on the machine when run non-interactively without --agent/--all, exits with code 1 (without creating an API key) when no agent configuration can be written, and on Windows reports the environment variable to set instead of writing a shell file that is never loaded (unless --shell-rc is passed explicitly). Non-interactive re-runs with --key on an already-configured macOS Keychain setup now refresh the stored key instead of silently keeping the old one.
  • 097395b: ai-gateway coding-agents setup can now put **limits** on a key it creates: a spend cap (--budget with --refresh-period / --include-byok) and an expiry (--expiration 7d|30d|60d|90d|1y|none). Interactively it asks whether to set each. The limits are sent only when creating a key; reusing one with --key is unaffected.
  • fcdf5cd: Store the coding-agents setup API key in the macOS login Keychain instead of writing it into plaintext config files. When available it's used automatically: env-based agents resolve the key from the shell at runtime (a managed shell-rc block runs security find-generic-password), so the secret never lands in a config file. Pass --no-keychain, or run off macOS, to embed the key directly; it also falls back to embedding if the Keychain write fails.
  • c66bae3: Add OpenCode support to vercel ai-gateway coding-agents setup. It supplies the gateway API key to OpenCode's native vercel provider in ~/.config/opencode/opencode.json (honoring XDG_CONFIG_HOME) without pinning a default model. With the macOS Keychain in use, the key is kept out of the config and resolved from AI_GATEWAY_API_KEY (exported from the shell rc) at runtime instead.
  • 2ffbf59: Add Pi support to vercel ai-gateway coding-agents setup. It writes the gateway credential to Pi's native vercel-ai-gateway auth entry in ~/.pi/agent/auth.json (created 0600, honoring PI_CODING_AGENT_DIR) without pinning a default model.
  • bb16ec9: ai-gateway coding-agents setup now previews before it writes. --dry-run and the pre-apply summary show the planned per-file changes as a masked diff, the resolved key/quota/expiry, and the .bak backups it would create (suppressed with --no-backup), then ask for confirmation before applying. For non-standard setups, --agent-config <id>=<path> overrides an agent's config-file location and --shell-rc <path> the shell rc; interactively it offers a custom path when an agent isn't found at its default location.
  • 35fba40: Attribute marketplace agent-skill auto-installs in the skills CLI's install telemetry by passing --metadata (origin, flow, integration and product slugs) to the npx skills add invocation. Older skills versions (< 1.5.16) ignore the flag and install unchanged.
  • fd8e544: Preserve an environment's serving mode when feature flag rules are added, updated, moved, or removed. When the environment is serving a fixed variant, the CLI identifies that variant and warns that rule changes will not affect flag evaluation until the environment uses targeting again.

Published 2026-07-09

  • 8f10c0b: Require an explicit team signal when linking without a TTY. In non-interactive mode or without a terminal, vercel link (and other commands that set up a link) no longer fall back to the globally selected team from vc switch or the login default, and --yes no longer guesses a team. The team now resolves only from --scope/--team, the scope property in vercel.json, VERCEL_ORG_ID, or a single available team; otherwise the command fails with action_required: missing_scope (JSON in non-interactive mode) before any project discovery runs, before a new project is created, and before the existing .vercel/project.json is deleted. This also removes the slow all-teams project search from non-interactive vercel link runs.
  • 8f10c0b: Every command that establishes a link — vercel deploy, vercel pull, vercel dev, vercel git connect, and vercel link itself — now uses the same flow: resolve the team first (explicit --scope/--team, vercel.json scope, VERCEL_ORG_ID, a single available team, or the searchable team picker), then offer project suggestions scoped to that team, preferring projects linked to the local Git repository (which produce a repo-style .vercel/repo.json link) over folder-name matches. The cross-team project sweep and its SSO fallback prompt are removed entirely; project discovery never queries teams other than the one that was resolved. An explicit project name (--project, --name, or vercel.json name) skips the suggestions and resolves directly within the team. An explicit team signal now also skips the team prompt in every command, not just vercel link.
  • 8f10c0b: --yes no longer selects a team on its own. It answers confirmations, not data questions: when the account has multiple teams and no explicit signal (--scope/--team, vercel.json scope, VERCEL_ORG_ID), an interactive terminal now asks Which team? once and continues auto-confirmed, instead of silently using the globally selected team from vc switch or the login default. This also removes the all-teams project sweep from vercel link --yes; matches are resolved within the chosen team, and a single Git-linked root-directory match still links automatically.
  • 0922f27: Add vercel integration resource inspect <resource> (alias status) to show a marketplace resource's details and live status fetched fresh from the provider, rather than the cached status shown by vercel integration list. Supports --format=json.
  • 8f10c0b: vercel link now honors VERCEL_ORG_ID and VERCEL_PROJECT_ID as an explicit project-owner pair: when both are set, the command resolves and confirms exactly that pair without prompting and without --yes, and leaves local link files untouched. An unresolvable pair errors instead of falling back to prompts. The new-project Name? prompt also suggests a creatable default: when the folder name is already a project in the selected team, it suggests <folder-name>-<short suffix> instead of a name that can only fail "Project already exists" validation.
  • 176d939: Add vercel vcr login [engine] to authenticate docker, podman, or buildah with the Vercel Container Registry using an OIDC token.
  • 2522d0a: [ai-gateway] add models ls and models endpoints commands
  • 8e93bc1: Fix vc build behavior in an unlinked directory. The link flow now runs before the "Run vercel pull?" prompt instead of firing as a side effect of the pull, and the freshly-established link is picked up on the same run — previously the first build computed a wrong work path (e.g. apps/api/apps/api) that only corrected itself on a subsequent run.
  • 6b93f07: Add per-Builder install reasons to the vc.installBuilders trace span, distinguishing Builders that are not installed from ones whose entrypoint fails to load and from explicit version or range mismatches
  • 8f10c0b: Ask interactive vercel link users to choose a team before project discovery, add searchable team and existing-project pickers, and allow Escape to cancel prompts cleanly. After team selection, the project picker prioritizes projects linked to the local Git repository with the matching Root Directory, then falls back to an exact folder-name match before offering full project search or project creation. Git matches persist the repository mapping in .vercel/repo.json. The project-name prompt allows Up to return to the picker, and project selection and search provide choices for returning to the previous step. Explicit --scope and --team values skip the team prompt and restrict project lookup to that team.
  • f03f001: Stopped showing the "Update available … Would you like to upgrade now?" prompt immediately after running vercel upgrade. The running process still holds the pre-upgrade version in memory, so the notifier would ask the user to upgrade again right after a successful upgrade.
  • f03f001: vercel upgrade no longer classifies the installation as local without positive evidence (a lockfile found above the CLI's install location). Previously, when the installation layout was not recognized, the upgrade defaulted to running npm i vercel@latest in the current working directory — silently adding vercel to whatever project (or home directory) the user happened to be standing in. Unrecognized layouts now degrade to a global npm upgrade, which runs from a temporary directory and cannot modify the current project.
  • f03f001: Fixed vercel upgrade misdetecting pnpm 11 global installs as local npm installs. pnpm 11 moved global packages to isolated directories under PNPM_HOME/global/v11/ backed by the global virtual store, which the previous detection did not recognize — causing the upgrade to run npm i vercel@latest in the current working directory (creating a stray node_modules) while reporting success without upgrading the real installation. Detection now recognizes installs running from inside PNPM_HOME, and no longer crashes when the entrypoint path cannot be resolved on disk.
  • 8d25cea: Apply functions configuration (memory, maxDuration, architecture, regions, functionFailoverRegions, experimentalTriggers, supportsCancellation) to container runtime outputs. The @vercel/container builder now resolves matching vercel.json / per-service functions entries at build time, and the CLI writes those settings into the container .vc-config.json.
  • 067a068: Finish CLI deployments from alias-assigned build stream events while retaining deployment polling as a fallback.
  • 456d388: Add CLI support for managing conditional feature flag rules. Example command runs: ``bash vercel flags rules ls my-feature --environment production vercel flags rules ls my-feature --environment production --json vercel flags rules add my-feature --environment production --condition user.plan:eq:pro --variant on vercel flags rules add my-feature --environment production --condition segment:eq:seg_beta123 --variant on vercel flags rules add my-feature --environment production --condition user.plan:eq:pro --by user.userId --weight off=90 --weight on=10 --position 1 vercel flags rules update my-feature rule_123 --environment production --condition user.plan:eq:enterprise vercel flags rules update my-feature rule_123 --environment production --variant off vercel flags rules move my-feature rule_123 --environment production --position 1 vercel flags rules remove my-feature rule_123 --environment production
  • d213d27: Include build logs in vercel inspect --logs --format json output.
  • 3b98912: Add --limit support to additional paginated CLI list commands and preserve next-page hints when custom limits are used.
  • 8f10c0b: Skip the Which team? prompt when the account has exactly one team choice (for example a token scoped to a single team). The resolved team is shown as an aligned Team row instead, and the project picker hides Choose a different team when there is no other team to choose. Team picker labels now match vc switch: Name (slug), a bold (current) marker, and a lock for teams that require SSO.
  • 5b29d19: Forward alert rule scope and format flags to nested subcommands.
  • 7b30856: Add vercel dev support for Python queue subscribers defined in pyproject.toml.
  • c556d0d: Fix vercel upgrade on pnpm installs: pnpm v10+ requires approval to run dependency build scripts (e.g. esbuild's postinstall) and would prompt or skip them during the upgrade. Global pnpm upgrade commands now pre-approve the required build script via --allow-build, which applies to that single install only and persists no policy.

Published 2026-07-07

  • 1e774e8: Preserve generated service routes when Build Output services are merged from framework output into a custom build output directory.
  • c9c9edb: Add --project support to project-scoped flags, cache, crons, and rolling-release commands. - @vercel/static-build@2.11.4

Published 2026-07-06

  • cc74129: Enable monorepo subdirectory build fixes by default (previously gated behind VERCEL_RESOLVE_ROOT_DIRECTORY=1), scoped to directories the workspace actually claims. When a project is linked in place (apps/api/.vercel/project.json) and vc build is run from that directory, the build now re-anchors to the workspace root and expresses the project as its path relative to that root — so builders trace correctly, hoisted dependencies are packaged, and --standalone output preserves package-manager symlinks so dependencies resolve at runtime. Re-anchoring only happens when an ancestor workspace manifest (pnpm-workspace.yaml or package.json#workspaces) actually declares the linked directory as a member package. Membership is decided by matching the directory's path against the manifest's declared patterns (including negations like !apps/legacy) plus a package.json existence check — pure string matching with no filesystem traversal, so large repositories and recursive patterns like ** cost nothing. A project that merely sits inside an unrelated repository — a vendored folder, a fixture, a scratch project in a company monorepo, or a plain git repo with no workspace — is left untouched and builds from its own directory exactly as before. The rootDirectory setting is interpreted relative to the link's location and honored when it points at a folder that exists; otherwise (e.g. a redundant apps/api setting on a link at apps/api, which previously crashed with ENOENT .../apps/api/apps/api/...) it is ignored in favor of the link's own location and a warning is emitted. To restore the previous behavior, pin an earlier CLI version.
  • 001a879: Do not duplicate global flags (e.g. --scope) in agent-output next[] command suggestions when the command template already carries the flag
  • d15f17c: Resolve projects for domains inspect and domains rm from the domain's project-domains instead of scanning every project in the account
  • 3190211: Show list help instead of transfer-in help for vercel domains ls --help
  • 85c897e: Run framework detection during vc build (opt-in via VERCEL_FRAMEWORK_DETECTION=1): detect the framework on a project's first deployment (VERCEL_FIRST_DEPLOYMENT=1) when none is configured and record it as detectedFramework in builds.json, cross-check the configured framework against the source code in the background without slowing the build, and validate the build output after it is written. Adds a detectionConfidence annotation to framework definitions for detections that are commonly incidental (e.g. Storybook as a devDependency) so they are never suggested as a framework override.
  • 3f3ca56: [cli] integration add now installs a product's declared agent skills after provisioning. It reads the product's agentSkills (public GitHub SKILL.md links) and runs npx skills add for each — prompting first in an interactive terminal (default yes), or auto-installing for non-interactive callers (agents, CI). --format=json stays read-only: it surfaces a skills array instead of installing. Non-GitHub or unparseable links are skipped.
  • 3aa331b: Emit structured agent-output JSON (project_not_found with runnable next suggestions) when vercel list <project> does not resolve in non-interactive mode
  • 24b012c: Update the CLI's sandbox dependency from 3.1.2 to 3.4.0.
  • d8307a7: Add a project update command for changing framework and build settings.

Published 2026-07-03

  • 4b1306c: List vercel agent-runs in the root CLI help output.
  • 0b64f51: Add missing commands to the root vercel --help list: ai-gateway, edge-config, oauth-apps, sandbox, and tokens

Published 2026-07-03

  • b9e4f06: Add a vercel agent-runs command for Agent Runs observability: list lists Agent Runs for a project, inspect <runId> shows run metadata, events, usage, and subagents, trace <runId> shows the full trace (turns, messages, reasoning, and tool calls), and projects lists projects in the team with Agent Runs activity. All subcommands support --json for machine-readable output.

Published 2026-07-02

  • 2c87793: Add vercel vcr commands to manage Vercel Container Registry repositories and images.
  • 84c01ff: Add install as an alias for vercel integration add.
  • 08d234f: Merge routes from generated Build Output config with builder routes when nesting Services V2 output, so framework routes and generated service or custom routes are all preserved.
  • 6e004b1: Accept all marketplace integration legal documents (addendum, privacy policy, terms of service) with a single confirmation instead of one prompt each. The links are now listed together, each on its own line, before asking.

Published 2026-07-01

  • 4d9394b: Bridge WebSocket close to response close
  • c4667d3: Fix vc build run from a monorepo subdirectory (gated behind VERCEL_RESOLVE_ROOT_DIRECTORY=1). When a project is linked in place (apps/api/.vercel/project.json) and vc build is run from that directory, the build previously treated the linked subdirectory as the repository root. Because the project's dependencies are typically hoisted to the monorepo root above it, this broke builds in several ways that share one root cause: - A rootDirectory setting that restates the link's own location (e.g. apps/api for a link at apps/api) double-appended into apps/api/apps/api, failing with ENOENT … /apps/api/apps/api/.next/package.json. - With --standalone, the package-manager symlink that makes a dependency resolvable (apps/api/node_modules/hono → ../../node_modules/.pnpm/.../hono) was skipped because its target pointed outside the subdirectory, so the deployed function failed at runtime with Cannot find module 'hono' even though the dependency's files were packaged. - Builders traced from the wrong root, so Next.js set an incorrect outputFileTracingRoot/turbopack.root (Turbopack errors; Webpack .nft.json omits hoisted dependencies). With the flag enabled, a per-directory link is resolved like a repository-level link: the repository root is detected (workspace markers, then git) and the project is expressed as its path relative to that root, so the build is anchored correctly regardless of which directory the command is run from. The rootDirectory setting is interpreted relative to the link's location and honored when it points at a folder that exists; otherwise (e.g. the redundant apps/api/apps/api case) it is ignored in favor of the link's own location and a warning is emitted. Standalone builds additionally preserve the package-manager symlinks (rather than skipping them) so dependencies resolve at runtime. Behavior is unchanged when the flag is not set.

Published 2026-06-30

  • e833330: Point rolling release start at the dedicated rolling-release start API endpoint.

Published 2026-06-30

  • 0eea3d6: Expose cacheReason in vc logs output, alongside the existing cache status, so users can see why a request was a cache MISS/BYPASS/STALE. - @vercel/static-build@2.11.4

Published 2026-06-29

  • 16cf8f6: Surface the builds rate-limit upgrade hint on vercel deploy. The hint previously never printed (the error was dropped before conversion) and pointed at the CLI self-updater; it now renders the backend's plan-appropriate call to action (ctaLabel/ctaUrl, or legacy action/link) from the error, falling back to a plan-agnostic nudge.
  • 56875d2: Remove the non-functional vercel buy v0 subcommand; use vercel buy credits v0 to purchase v0 credits.
  • 6c5aa14: Support lazily generated Build Output services configs during vc build.

Published 2026-06-29

  • 262e935: Fixed vercel dev for the container framework when used as a top-level build (outside of services). - The dev server now maps the container preset's <detect> sentinel to a discovered Dockerfile (Dockerfile.vercel, Containerfile.vercel, Dockerfile, or Containerfile), so the build is recognized instead of warning that it "did not match any source files". - The @vercel/container build() path no longer throws ` vercel dev cannot build container images from a Dockerfile during dev. Containers are always built from a Dockerfile/Containerfile (there is no prebuilt-image input); in dev the image is built and run locally by startDevServer, so build() returns a stable local tag without pushing to a registry. - The dev server no longer treats a container build output (an OCI image reference, runtime: "container") as a zip-based function. It previously failed with output.createZip is not a function while trying to spin the image up under fun; container outputs are now skipped there and served by the builder's startDevServer instead. - The dev path (startDevServer) now discovers the Dockerfile.vercel / Containerfile.vercel opt-in markers when the container entrypoint is the <detect> sentinel, matching the build path. Previously it only looked for a bare Dockerfile, so a project using a .vercel marker failed with "Container service must specify an entrypoint…" even though deploys worked. The discovery helper is now shared between the build and dev paths. - vercel dev now fails fast with a clear message when the Docker daemon isn't running ("Could not connect to the Docker daemon. Start Docker…") instead of a cryptic Container "undefined" exited (code 125) before becoming ready.. Container start failures also now name the actual container and include the underlying Docker error output. - The container dev server is now reused across requests. Previously the image was rebuilt and a fresh container started on every HTTP request (the result was missing the persistent` flag); now a live container is kept and reused for the same service, matching how other persistent builders behave.
  • 9e3f9cd: [services] service name validation
  • 9e3f9cd: Align services and experimentalServicesV2 service-name validation with the platform schema.

Published 2026-06-28

  • 1a1c745: [services] fix bare static service builds, allow services with only 'root' to resolve at @vercel/static - @vercel/static-build@2.11.4

Published 2026-06-27

  • 6b49a17: Apply per-service functions config when building experimental V2 services. Previously, function configuration declared under services.<name>.functions in vercel.json (experimentalTriggers, maxDuration, memory, architecture, regions, functionFailoverRegions, supportsCancellation) was dropped at build time — only the top-level functions map was honored. The build now feeds each service's functions to its lambdas for both single-lambda builders (@vercel/node, etc., via writeBuildResultV3) and framework builders that read config.functions (e.g. @vercel/next, via the builder config). Derived queue/v2beta consumer groups are now scoped by the owning service name so two services that declare the same function path + topic no longer collide.

Published 2026-06-26

  • 4f8b5b1: - Migrate service auto-detection to V2 format. - Layout auto-detect now resolves via the V2 resolver and generates top-level service-targeted rewrites and per-service path transform routes. - CLI build and dev server merge auto-detected rewrites into the route table.
  • 50276e7: Show the flags command in the top-level CLI help output.
  • 6881d74: Use Node.js native fetch for the CLI API client, removing legacy URL parser deprecation warnings from standalone binaries while preserving proxy routing and local middleware behavior.
  • 6514009: Fix CLI update notification showing a stale or incorrect version number. The update prompt now performs a fresh registry lookup before displaying the target version, and the upgrade success message reports the actually installed version instead of the prompted version.
  • 69f15ee: vercel flags ls now uses the v2 flag list endpoint and supports filtering by --tag, --created-by, and --maintainer-id, plus cursor pagination via --limit (page size) and --next (resume cursor).
  • c1641e4: Update integration error and warning hints to suggest the canonical vercel integration resource form instead of the legacy vercel integration-resource alias
  • ee389a1: Support WebSockets for WSGI apps (e.g. Flask via flask-sock). The runtime now exposes the raw connection socket in the WSGI environ as werkzeug.socket / gunicorn.socket for WebSocket upgrade requests, and ends the request lifecycle once the 101 handshake is written so the platform can begin bidirectional streaming — matching the ASGI websocket.accept behavior.
  • 62a884e: Simplify isolated services and experimentalServicesV2 runtime outputs by emitting their function at index instead of _svc/<service-name>/index.

Published 2026-06-25

  • f76b357: Improve vercel domains add: skip project/deployment configuration guidance when no project is provided, return a specific error explaining only apex domains can be added without a project, treat a domain already assigned to the requested project as a success instead of failing with an "assigned to another project" error, and point users to vercel domains verify <domain> for DNS configuration instead of printing hardcoded DNS records.

Published 2026-06-25

  • 6eb572e: Add vercel edge-config backups for listing, inspecting, and restoring Edge Config backups. Examples: - vercel edge-config backups my-store - vercel edge-config backups my-store --backup-version <backup-version-id> --format json - vercel edge-config backups my-store --restore <backup-version-id> --yes
  • 7cecf55: Make hand-written service-targeted route/rewrite destination config less repetitive and verbose by making the type discriminator optional. ``diff { "rewrites": [{ - "type": "service", "service": "my_backend", "path": "/api/$1" }] } The explicit { "type": "service", "service": NAME } format continues to validate. Normalized route output continues to include "type": "service"`, so machine-facing config remains canonical.
  • 5d37c78: Handle deployments containing very large files without crashing. Files larger than Node's fs.readFile limit (~2 GiB) are now hashed and uploaded by streaming instead of being read into a single Buffer (which threw ERR_FS_FILE_TOO_LARGE — "File size ... is greater than 2 GiB"), and the CLI upload progress no longer assumes every file is held in memory. When a file still exceeds the server's per-request upload limit (HTTP 413), the CLI now suggests --archive=tgz, which uploads the deployment in smaller chunks. - @vercel/build-utils@13.32.1 - @vercel/next@4.20.1 - @vercel/redwood@2.5.0 - @vercel/rust@1.3.0 - @vercel/static-build@2.11.3

Published 2026-06-25

  • 2f85145: Expose ordering controls, returned ordering metadata, and a --prod shortcut for metrics queries, and update Speed Insights metric examples.
  • aeb8bf1: vc build now writes experimentalServicesV2 services into the Build Output API config.json services array (previously only experimentalServices were included), so V2 services are recorded on the deployment.

Published 2026-06-24

  • 222d43b: Fix websocket upgrade events for services V2.
  • 96e9513: Add vercel deploy --dry to inspect the detected framework preset and local deployment file set without uploading or creating a deployment, with complete JSON output for non-TTY consumers.
  • 801b8e2: [vc dev] Remove the trailing slash from service binding URL env vars injected by vercel dev.
  • 82bda7d: Fix the deploy size-limit warning so it prints the skipped file and plan upgrade link instead of crashing.
  • 3f0488d: Surface the action/link (and newer ctaLabel/ctaUrl) fields on repo_links_exceeded_limit errors from vercel git connect instead of dropping them, so users hitting the projects-per-repository limit see the relevant next step and URL.
  • 8dc4702: Fix vercel dev for standalone Node servers, including projects without a package.json, and reuse the server process between requests.

Published 2026-06-24

  • 9fb2976: Add services as the canonical multi-service project configuration and keep experimentalServicesV2 as a deprecated backwards-compatible alias.
  • 260b0be: Support the VQS idempotency key header in the local development server.
  • 6a43bf2: Adding 2 additional headers to Vercel API calls
  • 186014d: Fix vc dev erroring with "Project framework is set to 'services', but no services are declared" for experimentalServicesV2 (services) projects. When the dev server already has resolved services, it now skips zero-config builder detection and lets the services orchestrator build and run them. Previously detectBuilders ran with the remote framework: "services" setting but no service config threaded in, which failed even though detection had succeeded.
  • 186014d: Add an experimental container service runtime. A service with runtime: "container" either builds its Dockerfile/Containerfile and pushes the resulting OCI image to the Vercel Container Registry (VCR), or passes a prebuilt image reference through as build output. - **@vercel/container** (new builder): authenticates to VCR with the project's VERCEL_OIDC_TOKEN, ensures the repository exists, builds and pushes the image, and emits a digest-pinned reference in handler (container functions are type: "Lambda" with runtime: "container"; the platform surfaces handler as the image downstream). Uses docker on developer machines and buildah (daemonless) in the Vercel build container behind a shared ContainerEngine interface. Supports vc dev via startDevServer (local build/run, env parity, log forwarding) and prepareCache for buildah layer reuse between builds. Build flow is instrumented with tracing spans (non-secret diagnostics) and debug logging gated on BUILDER_DEBUG. - **@vercel/build-utils**: add the ContainerImage build-output type. - **@vercel/fs-detectors**: resolve container services from vercel.json (the services config and its deprecated experimentalServices / experimentalServicesV2 aliases). A Dockerfile, Containerfile, or *.dockerfile entrypoint triggers a build; any other entrypoint is treated as a prebuilt OCI image reference. - **vercel**: wire container output into vercel build result writing and config validation. Buildah specifics in the build container: host networking for RUN steps, native overlay storage on the XFS /vercel volume (deferring to the image's storage.conf), zstd push compression, and registry credentials read from the provisioned auth file when present. Several knobs are available for debugging: VERCEL_CONTAINER_ENGINE, VERCEL_VCR_STRICT_STORAGE, VERCEL_VCR_DISABLE_LAYER_CACHE, and VERCEL_VCR_FORCE_LOGIN.
  • 007af8f: Deduplicate the team billing settings URL into a shared getTeamBillingUrl helper.
  • edb7256: [vc dev] Apply route transforms under vercel dev.
  • 1c5d3b3: Fixed scope resolution for Northstar accounts whose username collides with the slug of their default team. - Commands now scope API requests to the Northstar default team on every invocation, not just at login. Previously the default team was resolved for display (vc whoami showing "Active team: my-user") while requests were sent with no teamId, silently scoping to the resource-less personal account. This caused commands like vc projects ls to report "No projects found" even though the team has projects. - --scope <name> now resolves against the user's teams before falling back to personal-account handling. A team whose slug matches the user's username (e.g. a Northstar default team) can now be selected by name instead of being rejected with "You cannot set your Personal Account as the scope."
  • ded2d92: Refresh VERCEL_OIDC_TOKEN after vercel link without overwriting other variables or formatting in an existing .env.local file.

Published 2026-06-23

  • b14be80: vercel inspect now supports Vercel dashboard URLs and deployment IDs without prefixes.
  • 2158ab6: [vc dev] Add support to experimentalServicesV2 for bindings in vc dev

Published 2026-06-23

  • 8dec9ea: Add deploy-manifest as an extension of project manifest.
  • d99dbf8: Add vercel domains verify <domain> for DNS misconfiguration feedback. The command checks the domain's DNS configuration, reports dashboard-aligned configuration and project-verification states, triggers a verification re-check when needed, and lists actionable fixes: recommended A/CNAME records, Vercel nameservers, conflicting records, DNSSEC guidance, and the TXT ownership challenge. Domains eligible for automatic configuration also receive a Domain Connect URL, with manual DNS guidance as a fallback. Supports --project, --strict, and --format json; non-interactive runs emit structured status, simultaneous issue details, automatic-configuration metadata, and shell-safe, context-preserving next commands. Human and structured output share one diagnosis so status, remediation, and exit behavior stay consistent. The command exits non-zero when action is required so scripts and agents can gate on it.
  • a5245fd: Add vercel flags segments commands for listing, inspecting, creating, updating, and deleting feature flag segments. Examples: ``bash vercel flags segments ls vercel flags segments inspect beta-users --json vercel flags segments create beta-users --label "Beta users" --add include:user.id=user_123 --add include:user.id=user_456 vercel flags segments create enterprise-users --label "Enterprise users" --add rule:user.plan:eq:enterprise vercel flags segments update beta-users --add include:user.id=user_789 --remove include:user.id=user_123 vercel flags segments update enterprise-users --add rule:user.email:ends-with:@company.com --remove rule:user.plan:eq:pro vercel flags segments update enterprise-users --data '{"rules":[],"include":{"user":{"email":[{"value":"me@company.com"}]}},"exclude":{}}' vercel flags segments rm beta-users --yes
  • 970b82b: Fix Windows standalone binary builds with the custom Node.js 24 small-ICU runtime and a compatible Windows toolchain.
  • c4afec8: [routing-utils] support request.path transforms on routes and high-level rewrites, lowering path-to-regexp parameters such as /:path* to low-level capture references such as /$1 [config] support request path transforms in the router builder [cli] preserve request path transform syntax and environment metadata across AI/manual route edits
  • 300af0d: Increase Connex setup polling timeout to 115 minutes.
  • 4253eaa: Avoid applying the current Git branch to explicitly selected projects in vc logs, and follow the latest READY production deployment when using --project --follow.
  • a19feac: Rename the gantt value for vercel traces get --view to waterfall.

Published 2026-06-20

  • d1e1d69: Stop prompting to install the Vercel plugin after login and link commands.
  • 7aa52be: Show bounded progress while upgrading native and package-installed CLIs, and report when no newer version is available without running the installer.
  • e2043e6: Build standalone Vercel CLI binaries with Node.js 24.14.1.

Published 2026-06-17

  • 8e56ad5: Add experimental shim to enable Next.js WebSocket upgrade support in vc dev.
  • 07d3fe2: [cli] Add traces create as an alias for curl --trace

Published 2026-06-17

  • 3d6f057: [cli] Make vercel blob store commands work non-interactively for agents
  • 28dda45: Update Claude Code Vercel plugin prompts and remember accepted plugin updates for future automatic updates.
  • d55310f: Add CLI UX guidance and improve CLI output consistency.
  • b341a19: Improve CLI version output: the native binary now prints Vercel CLI <version> without the Node.js suffix, and vercel upgrade reports the version it upgraded to and says "No upgrade available" when already on the latest version.
  • 7f5f0f2: Fix telemetry flushing when running the CLI as a native binary.
  • 7866d3d: Allow vercel buy addon customEnvironment <quantity> by adding customEnvironment to the CLI add-on allowlist and help examples.
  • b7fbaec: Improve vc metrics: source groupable dimensions from the metric schema instead of a hardcoded list, preserve the requested time bounds so the query endpoint owns bucket rounding, and add an optional --bucket-timezone flag for calendar bucket alignment (it only affects bucket boundaries, not the --since/--until range or output timestamps).
  • e9aa6f5: Remove hidden --functions-beta / --no-functions-beta deploy flags and the size-limit hint messaging
  • fd26487: Remove deprecated public from deployment test fixtures and helpers, and stop the CLI from sending the removed public field on deploy (including the --public flag).
  • 5ed337e: Allow vercel metrics to combine repeated --filter/-f values with OData and.
  • aeea9f2: Render the ▲ gutter once per deploy summary: on the Aliased row, falling back to the Production row when no Aliased row will print (--no-wait, --skip-domain)

Published 2026-06-14

  • 210748e: [cli] Add vercel ai-gateway rules add/list/edit/remove commands

Published 2026-06-12

  • 128ad88: Add --category / -c filter to vercel integration discover and a new vercel integration categories subcommand. The filter scopes marketplace integrations to a single category (e.g. storage, ai, monitoring) — filtering happens server-side. The new categories subcommand lists the valid slugs (Slug | Title table or --json for scripts/agents).

Published 2026-06-11

Published 2026-06-11

  • 800286e: vercel connect create --data now accepts @<path> to read the JSON from a file and @- to read it from stdin, so non-managed connector credentials (e.g. client secrets) no longer have to be passed inline where they leak into shell history and process listings. Inline --data still works but now warns when it looks like it contains a secret.
  • 800286e: Strip ANSI escape sequences from team-controlled connector names, UIDs, and project names in all vercel connect command output (attach, detach, remove, revoke-tokens, and the list table's type/projects cells), not just the list UID/name cells. Prevents terminal escape injection from maliciously-named connectors visible across a team.
  • 1e64d1f: Added vc api --spec-url <url> for loading endpoints from a custom OpenAPI spec instead of the default public Vercel spec. Custom specs are fetched fresh, can use the current CLI token to pass Vercel deployment protection via the SSO handshake, and replace the public spec entirely for listing, interactive selection, and tag/operation resolution.

Published 2026-06-11

  • 5757bca: [services] add support to vc dev for experimentalServicesV2.
  • 663307f: Fix CLI self-upgrade failing with EUNSUPPORTEDPROTOCOL inside pnpm/yarn workspaces
  • 32a730e: Elevate maximum maxDuration to 1800s

Published 2026-06-10

  • 8d8e871: Evaluate the maxDuration upper bound at validation time so VERCEL_CLI_SKIP_MAX_DURATION_LIMIT works regardless of import order. The gate was read when @vercel/build-utils' functionsSchema was constructed and when the CLI compiled its vercel.json validator — both at module load. Any process that imports these modules before setting the env var baked in the default 900-second maximum and ignored the flag, failing with Invalid vercel.json - functions[...].maxDuration should be <= 900. @vercel/build-utils now exposes getFunctionsSchema(), which reads the limit at call time (the existing functionsSchema const is kept but deprecated). The CLI builds and compiles its config validator lazily, caching one validator per resolved limit, so setting the variable after import takes effect. Default behavior is unchanged — the 900s maximum, the lower bound, and the integer check are all still enforced when the variable is unset.

Published 2026-06-10

  • fc7b557: Ensure project manifest includes framework for non-service builds.
  • bc8dc95: Fix the darwin-arm64 native CLI binary crashing with SIGSEGV on most commands. The custom Node runtime was stripped with bare strip, which removes the exported napi_* symbols that native addons (@napi-rs/keyring) bind against at dlopen time. The runtime is now stripped with strip -SXx, which keeps exported symbols. Also makes the @vercel/vc-native bin shim launch the platform binary directly when the postinstall script did not run (pnpm blocks dependency build scripts by default), instead of always failing.
  • bc8dc95: Fix vercel upgrade crashing with ENOENT: no such file or directory, realpath '…/.pkg-staging/pkg.js' in the native binary. The command tried to realpath process.argv[1], which points into the binary's virtual filesystem snapshot. Native installs now detect the package manager (npm, pnpm, or yarn) from the binary's real install location and suggest the matching global upgrade command.

Published 2026-06-09

  • 4f82914: Bump the embedded sandbox CLI to 3.1.2 (@vercel/sandbox 2.1.1) to fix vc sandbox commands crashing with a segmentation fault. - @vercel/node@5.8.14

Published 2026-06-09

  • 0f7844c: Fix the native CLI binary crashing on auth commands (login, whoami, logout, and any command that reads config) with ERR_MODULE_NOT_FOUND: '@vercel/cli-auth'. The package is now staged into the binary. The binary release is also hardened with a real command smoke test and a build-time check that every statically-imported dependency is bundled, so a binary missing a required package can no longer be released.

Published 2026-06-08

Published 2026-06-08

  • 0774460: Bump @vercel/prepare-flags-definitions
  • f6a6e55: Only offer the Claude Code plugin in projects that have actually been used with Claude Code. Previously the prompt could appear in any directory as long as a ~/.claude directory existed on disk. The CLI now checks whether the current project (walking up from the working directory) appears in Claude Code's per-project history before offering the plugin.
  • a4f7dc9: CLI help and command-schema cleanups from the docs audit: - blob: remove orphan addStoreSubcommand, removeStoreSubcommand, and getStoreSubcommand exports that duplicated the wired create-store / delete-store / get-store specs. Handlers and telemetry now import the actual wired subcommand definitions. - dns list: the <domain> argument is now declared required: false to match the runtime, which already supports listing every domain's records when no argument is given. - routes delete: declare the <name-or-id> argument as multiple: true so the help synopsis and schema match the variadic behavior already supported by the handler and shown in the existing examples. - init: fix the "Initialize example project into specified directory" help example, which was missing the init literal (vercel <example> <dir> → vercel init <example> <dir>). - promote status and rollback status: declare --timeout on the status subcommand options so --help matches the examples (promote status --timeout 30s, rollback status --timeout 30s). The flag is also kept on the parent command, where parsing actually happens.
  • 33efa25: Added non-managed Connex connector creation with --data and optional --connector-type.
  • 3a2d61e: Add vercel domains search <query> for client-side Domain Discovery with fast bulk availability and registrar pricing, renewal pricing, --available and exact TLD filters, ordering, candidate windows of up to 200 domains, and JSON output.
  • c5eeb30: Gate the client-side 900-second maxDuration upper bound behind the VERCEL_CLI_SKIP_MAX_DURATION_LIMIT environment variable. The limit is now owned by a single helper in @vercel/build-utils instead of being hardcoded in multiple validators. When the variable is set to 1, the client-side maximum is skipped and validation defers to the server. Default behavior is unchanged — the maximum, the lower bound, and the integer check are all still enforced when the variable is unset.
  • 9f9eed3: Nest Build Output API files for experimentalServicesV2 under .vercel/output/services/<name>.
  • fb30b76: Strip ANSI escape sequences from connector UID and name cells in connect list table output.

Published 2026-06-04

  • f5ab607: [evals] Shrink eval result uploads and fix run discovery The eval ingest transform (transform-agent-eval-to-canonical.js) now excludes raw transcripts (transcript-raw.jsonl) from the --upload-artifacts all path, roughly halving each ingest payload. The parsed transcript.json is still uploaded and still read for resolvedModels metadata. It also normalizes provider-prefixed model paths before upload. Models that resolve to provider/model (e.g. openai/gpt-5.5-pro) write results one directory deeper, pushing the timestamp past the experiment/model/timestamp shape the ingest endpoint discovers runs from, which previously failed with Could not discover any experiment/model/timestamp runs. The model is now collapsed to a single segment (openai-gpt-5.5-pro) so discovery succeeds.
  • 2b31813: Fix vc build --standalone failing to zip Lambdas when run from a monorepo subdirectory. When dependencies are hoisted to the monorepo root (e.g. pnpm's node_modules/.pnpm/...), the recorded function file paths could escape the function root (../../node_modules/...), which later caused zipping to fail with invalid relative path: ../../node_modules/.... These paths are now re-anchored inside the function so the standalone output is self-contained.
  • 252c6eb: [cli] Show claim in vercel integration resource --help The claim subcommand was missing from resourceSubcommand.subcommands, so vercel integration resource --help only listed connect, disconnect, remove, and create-threshold. The legacy vercel integration-resource --help and the dispatcher's runtime resolution both already included claim — this was purely a help/discoverability gap on the canonical nested path. Adds claimSubcommand to the subcommand list and updates the parent description accordingly.
  • 0a170fd: [services] wire experimentalServicesV2 into fs-detectors.

Published 2026-06-03

  • fb4fb2d: Add support for claiming sandbox marketplace resources (Stripe, Shopify) from the CLI. integration list shows a new Claim column, integration-resource claim <name> opens the provider claim URL in the browser and polls until completion, and integration add offers to claim sandbox resources after provisioning with new --claim / --no-claim flags.
  • 338cc35: Add isPackageInstalled util for detecting dependencies during build. Fix Vercel Flags dependency detection for emitting datafiles during builds with OIDC tokens.

Published 2026-06-03

  • fddeb55: Add configurable credentials storage handling across the CLI auth stack. Storage of credentials can be configured by the new credStorage key in global config.json or the new VERCEL_TOKEN_STORAGE environment variable. The environment variable takes precedence over the configuration key. Accepted values are file (store credentials in auth.json), keyring (store credentials in system keyring, e.g macOS Keychain or Secrets Service on Linux), and auto (try storing in keyring if available, fall back to file if keyring is not available). @vercel/oidc supports keyring-stored authentication credentials by delegating the OIDC minting to the CLI executable via @vercel/cli-exec.
  • a869874: [connect] Rename user-facing "client" references to "connector" Updates the vercel connect CLI commands to use the official "connector" terminology in all user-facing surfaces: help text argument names (remove/attach/detach), usage strings in error messages, and the --format=json output key (clients → connectors) for vercel connect list.
  • 200aa3b: [connect] Forward --scopes and --installation-id into the authorize/install recovery URL When vercel connect token hits an action-required error (user_authorization_required or client_installation_required), the CLI builds an authorize/install URL for the user to complete consent in the browser. Previously this URL carried only teamId and request_code, dropping the --scopes and --installation-id the user supplied. As a result the consent flow fell back to provider defaults (e.g. Slack's users.profile:read), and the post-authorization token retry mismatched the requested scopes. The CLI now forwards scopes (comma-joined) and installationId as query params, which the authorize and install endpoints already accept.
  • 3019788: [services] Remove the services field from vercel.json and the VERCEL_USE_SERVICES gate.
  • fe893ec: [services] Add experimentalServicesV2 field to vercel.json implementing the new schema for services.
  • d22d812: [cli] Nest integration-resource under integration resource and add integration resource connect The marketplace resource subcommands (disconnect, remove, create-threshold) are now discoverable under vercel integration resource <sub>. The standalone vercel integration-resource and vc ir forms still work as hidden aliases — no scripts or tests break. Adds a new vercel integration resource connect <resource> [project] command (the inverse of disconnect). Accepts --environment (repeatable, defaults to all three), --prefix for env var namespacing, --yes, and --format=json. Defaults to the project linked in the current directory when <project> is omitted. Tightens disconnect to error (exit 1) when the specified project is not connected to the resource, instead of exiting 0 with a "not found" message. Both commands emit a structured outputAgentError payload with reason: confirmation_required and a next: [{command}] retry hint when run in non-interactive / agent mode without --yes. When connect fails because an env var with the same name already exists on the target project, the error names the conflicting variable and suggests --prefix or vercel env rm as remediation.

Published 2026-06-01

  • 1180675: Revert "[flags] fix dep detection for build embedding (#16242)"

Published 2026-06-01

  • 0b4e1ef: Add vercel connect revoke-tokens subcommand to revoke tokens issued from a connector.
  • ba6e7c6: Internal: fix _deploy eval grader passing --token "" in the Docker sandbox where VERCEL_TOKEN isn't in process env. Only pass --token when set; CLI falls back to auth.json otherwise.
  • 92988c2: Handle sensitive Environment Variable pull challenges in the CLI.
  • 3986bb0: Stop retrying intentionally aborted requests so the CLI exits promptly after a deployment is ready.
  • 64f5484: Allow SAML re-authentication to use device-code flow in non-TTY sessions.
  • 97fdbbe: [flags] fix dep detection for build embedding

Published 2026-05-28

  • 1444502: Support discovering experimentalServices from Build Output API config during vercel build.
  • 7ba4713: Reorder vercel env add to ask whether a value is sensitive before collecting the value and selecting environments. Sensitive adds hide Development; teams with the sensitive env policy still prompt, and non-sensitive adds are limited to Development with clearer messaging.

Published 2026-05-28

  • af3e0bd: adding version node + cli version to top of every command
  • 6495585: [services] drop top-level env support for the new service-ref shape for services.

Published 2026-05-27

  • 57ea4ba: Reduce duplicate user and team lookups during CLI scope resolution.
  • b66bd3e: Fix prebuilt deployments failing with "invalid relative path" when using the --standalone flag in pnpm monorepos by skipping external node_modules symlinks and copying traced files at their logical paths instead.
  • 9ad632d: Handle CLI update flows safely for native binary installs.

Published 2026-05-26

  • 6860c32: Add project manifest to rust builder.
  • 2c17a12: Added --open and --view flags to vercel traces get. --open opens the trace in the Vercel Dashboard instead of printing the markdown summary. --view <timeline|tree|gantt> selects the dashboard view and is only valid with --open.
  • 620bcfa: Add --type, --service, and --search filter flags to vercel connect list.
  • ff2a980: Add a vercel domains check subcommand for registrar availability and extend vercel domains price to support bulk price lookups for multiple domains.

Published 2026-05-22

  • 8fed091: Suppress metrics query status output when using --format=json.

Published 2026-05-22

  • 9d9532d: Wire builder entrypoint detection into service setup.
  • 972cc84: Support workflow-triggered job services in queue infrastructure Add isWorkflowTriggeredService() and isQueueBackedService() helpers so workflow services are recognized by the queue broker, dev server, and build pipeline. Update Python runtime to bootstrap workflow services as queue-backed workers.

Published 2026-05-21

  • 8fabeba: vercel curl --trace now sends the _vercel_session cookie alongside the trace cookie, scopes the session API call via query parameters, sends hostname instead of deploymentId, and parses the request id from the x-vercel-id response header.
  • f2c60d6: [vercel-flags] check flags pkgs for build embedding
  • 8ac2af6: Add --project <NAME_OR_ID> flag to build, deploy, pull, and dev for non-interactive CI/CD and agent-driven use. When --project is provided, the CLI will: - Disambiguate monorepo .vercel/repo.json linked projects without prompting (matches by name **or** ID) - Resolve the project via the API when no local link is present - Fail fast with a clean "Project ... was not found" error if the value cannot be resolved (never silently creates a new project) - In non-interactive contexts (CI, agents) the same failure also emits a structured JSON payload with a next array of suggested follow-up commands. This is particularly important for agents (which run non-interactively by default): they can now target a specific project in monorepos and unlinked directories without relying on interactive setup prompts or the project picker. The flag is also accepted on vercel deploy init (excluded on vercel deploy continue because --id already identifies the deployment). The new API-based resolution is opt-in via the explicit --project flag, so commands like vercel deploy in an unlinked directory keep their existing behavior of falling back to interactive setup.
  • a2e79a8: Added vercel traces get <request-id> to fetch and render a trace summary for a request. Resolves project/team from the linked project, with --scope and --project flag fallbacks.
  • b0d4dba: Add OIDC auth support to vercel blob commands and upgrade @vercel/blob to 2.4.0. When VERCEL_OIDC_TOKEN and BLOB_STORE_ID are set in the environment (or .env.local), or when --oidc-token and --store-id are passed together, the CLI uses them as the credential source. The --rw-token flag remains exclusive — when provided, it always wins and never falls back to OIDC. The OIDC token is now forwarded to the SDK via the native oidcToken option (added in @vercel/blob 2.4.0) rather than by mutating process.env.
  • c6fa2d1: Revert non-interactive Marketplace terms acceptance for integration accept-terms. This change requires human interactive confirmation for terms acceptance and removes --yes from integration accept-terms guidance.
  • a5b231a: Update vercel env pull to add .env* to .gitignore for default .env.local pulls.

Published 2026-05-19

  • 39850ef: Add vercel connect update <id> subcommand to change connector branding. Accepts --icon (PNG or JPEG path, uploaded to Vercel and sent as SHA-1), --background-color, and --accent-color (both #RRGGBB). Gated behind the existing FF_CONNEX_ENABLED flag.
  • 63a66d4: Add --icon, --background-color, and --accent-color flags to vercel connect create. The icon is uploaded to Vercel before the connector is created. When the API requires a browser registration step, branding is appended to the dashboard URL so the create form can prefill itself; the CLI also applies a follow-up PATCH after the browser flow as a safety net for the dashboard rollout. Gated behind the existing FF_CONNEX_ENABLED flag.
  • 137e5d1: Allow builder V2 to expose startDevServer.
  • b1aa926: [vc dev] handle process errors in dev server
  • a3a1a5a: Added CLI eval support for comparable agent/model experiment runs and restored transcript artifact uploads via chunked result ingestion.
  • 18e9fd6: fix(cli): point vc connect open and registration error URLs at the renamed /connect dashboard route
  • 4118600: Fix standalone CLI binary latest-version worker startup.
  • 80e8e06: Track Vercel plugin active-session markers in CLI telemetry.
  • bb61428: Include framework slug in output/config.json
  • f45e466: Add opt-in automatic CLI updates via vercel upgrade --enable-auto and prompt users to enable them after a successful manual upgrade.
  • a3a1a5a: Add offline-friendly local modes for CLI eval discovery and dashboard fixture generation, and expand Vercel CLI eval coverage for project, list, inspect, logs, and pull commands.
  • a3a1a5a: Relaxed the CLI env/add eval grader to accept equivalent JSON format syntax and shell-variable env names when outputs prove the variable was added.
  • a3a1a5a: Simplified the implicit curl eval grader to only require that the agent ran vercel curl or vc curl.
  • 8fb4dc8: Add vercel flags split to configure weighted Vercel Flags splits from the CLI. Configure a split interactively by letting the CLI prompt for the environment, bucketing attribute, weights, fallback variant, and revision message. vercel flags split welcome-message Configure a boolean flag split in production with 95/5 traffic. vercel flags split redesigned-checkout --environment production --by user.userId --weight off=95 --weight on=5 Configure a string flag split with an explicit fallback variant. vercel flags split welcome-message -e production --by user.userId --default-variant control --weight control=90 --weight treatment=10 Exclude a variant from receiving traffic by setting its weight to 0. vercel flags split checkout-copy -e preview --by user.userId --default-variant control --weight control=50 --weight treatment=50 --weight legacy=0

Published 2026-05-15

  • 9aead7a: Add vercel connect detach to detach a Vercel project from a connector via DELETE /v1/connect/connectors/:id/projects/:projectId. Mirrors vercel connect attach and matches the project-scope "Disconnect" button in the dashboard. Add --triggers, --trigger-branch, and --trigger-path flags to vercel connect attach. When --triggers is set, the project is also registered as a trigger destination on the connector via PATCH /v1/connect/connectors/:id/trigger-destinations so verified webhooks get forwarded to it. Requires the connector to support triggers; warns if the connector was created without triggers.enabled. Both features gated behind the existing FF_CONNEX_ENABLED flag.
  • b1db109: Enable vercel connect by default and mark it as beta in --help. The command was previously gated behind the internal FF_CONNEX_ENABLED env var; it is now available out of the box and surfaces in vercel --help as connect [cmd] Manage connectors [beta]. The subcommand description also reads Manage connectors (Beta). Fix vercel connect open to link to the renamed /~/connect/ dashboard route directly instead of relying on the legacy /~/connex/ → /~/connect/ 308 redirect.
  • e8deaa1: Rename vercel connex command to vercel connect. The command remains gated behind the existing FF_CONNEX_ENABLED flag.
  • cc30efd: Refresh the vc setup-and-link flow and post-deploy output for clarity and visual consistency. **Prompt copy** - Want to modify these settings? → Customize settings?. - Which scope should contain your project? → Which team?. Matches dashboard + docs vocabulary. - What's your project's name? → Name?. The directory-derived default still renders inline via the inquirer default. - Loading scopes… spinner → Loading teams…. **Flow changes** - Removed the Set up and deploy "/path"? confirmation prompt. Intent is implied by running vc; the path is surfaced as a status line ( Set up "/path") and Ctrl-C remains the escape hatch. - The In which directory is your code located? prompt now fires when (a) the current directory is a workspace (monorepo with multiple packages), (b) the user explicitly chose "Choose a different root directory" via the inferred-services picker, **or (c) framework detection at the root finds nothing — covers nested-monolith layouts like repo/app/package.json where the app lives in a subdir.** Single-app projects with a framework detected at the root still default the root to . and skip the prompt. **Output format** - Auto-detected Project Settings for X line replaced with a single bold Detected X (Build Command: …, Output Directory: …) line. Title Case labels match the checkbox panel below. Only Detected is bold; framework name and parens render plain/dim. - Introduced a new aligned-label format for status output via the printAlignedLabel helper (12-char bold label column, value column at terminal column 14). Applied to Linked / Inspect / Production / Preview / Aliased / Added rows. - vc redeploy output now uses the same aligned-label format as vc deploy — Inspect / Production / Preview / Aliased rows are consistent across both commands. No more emoji-prefix / aligned-label mixing in the same session. - vc link --repo info messages (No Projects are linked…, Found N Project(s) linked…, Detected N new Project(s)…, Created new Project: …) dropped the gray > prefix and now use the 2-space indent that matches the rest of the link/setup flow. - Path-in-prompt for vc link --repo confirm message uses chalk.dim instead of chalk.cyan — paths are not URLs, so dim is the correct treatment per the color rules (cyan reserved for URLs). - Introduced a "gutter" semantic system: column 0 is reserved for semantic glyphs. ▲ marks Production deploys (▲ Production URL) and breaks out of the indent — bookending the session with the ▲ brand mark at the top. Preview deploys stay in-column without the triangle. - Added a terminal ✓ Ready in Xs line at deploy completion (green ✓ at column 0, bold Ready, dim duration). Skipped when --no-wait is set and the deployment hasn't reached READY yet. - Dropped the emoji prefixes (🔗, 🔍, ⏳) on Linked / Inspect / Production rows (across both vc deploy and vc redeploy). - Dropped the Building: prefix from the build-logs spinner. Each streamed log line is shown verbatim instead of Building: <line>. - Dropped the (created .vercel and added it to .gitignore) parenthetical from Linked — git status surfaces it on demand. - Dropped the [Xs] timing suffix from URL lines. URLs are results, not operations — timing belongs on the build / ready signal. **Defensive fix** - services-setup.ts now uses an optional chain on detectServicesResult.resolved?.source. This was crashing the setup flow before any prompts could fire when no services were detected (common for empty or simple fixtures). **New helper** - packages/cli/src/util/output/print-aligned-label.ts exports printAlignedLabel(label, value, options?: { gutter?: string }) and the ALIGNED_LABEL_WIDTH constant (12). Used by every aligned-row print site.
  • 4fc110b: [services] add preDeployCommand for experimentalServices
  • 5f4e55b: Skip redundant deploy project and final deployment fetches in the CLI success path.
  • fbffcb3: Reduce the CLI startup bundle by lazy-loading error reporting and extension execution paths. Use a Brotli-compressed small-ICU Node runtime for the macOS arm64 release binary.
  • fbffcb3: Add yao-pkg binary build configuration and native npm package publishing for the CLI.

Published 2026-05-13

  • db207b1: Require --follow for vercel logs to stream deployment logs. Passing a deployment argument or --deployment now uses historical deployment log filtering by default.
  • d874af6: Add support for env vars injection that reference other services in services with an explicit env configuration.
  • b3b5ed8: Preserve the source deployment or alias ID/URL when assigning aliases from the CLI.
  • 8324ac7: Rename "Connex client" to "Connex connector" in user-visible vc connex strings (help text, spinners, error/success messages) to match the dashboard rename. Flag names, command names, positional argument names, types, file paths, and API endpoints are unchanged.
  • b6b162c: Fix project token creation when project is not in the default team

Published 2026-05-11

  • 88fb6c1: Add vercel connex attach <client> to attach a Vercel project to a Connex client for one or more environments. Defaults to the current linked project + all environments (production, preview, development). Pass -e/--environment (repeatable, comma-separated) to restrict, -p/--project <name_or_id> to target a different project, and --yes / --format=json for non-interactive use. When the project is already attached with the same environments, the command exits early as a no-op; when the environments differ, the prompt shows a current-vs-new diff before replacing.
  • 66a2105: vercel dev now exposes VERCEL_PROJECT_ID and VERCEL_ORG_ID from the linked .vercel/project.json to the dev process, mirroring how the platform sets them in prod and preview. Existing values in process.env or .env files take precedence and are not overridden.
  • b4bb157: Fix vercel dev double-appending rootDirectory when run from inside a project subdirectory whose name already matches the project's rootDirectory setting (e.g. monorepo/project1 → monorepo/project1/project1).
  • 858c1dc: [cli] reliably kill experimentalServices child processes on vercel dev exit
  • 05fae25: Support full URLs and bare hosts in vc curl while resolving project auth from the target URL.
  • 657a3b1: Improve function size log message to show warning when limit is reached or almost reached, and always display function size with dependencies breakdown. Requires VERCEL_ANALYZE_BUILD_OUTPUT=1.
  • 979d70a: [services] services schema support

Published 2026-05-10

Published 2026-05-09

Published 2026-05-09

  • dbfcc04: vercel connex list now defaults to clients linked to the current project. When no project is linked, it falls back to listing every Connex client in the team (same as --all-projects). Use --all-projects to force the team-wide view; the table includes a Projects column with the linked project names per client (with a + more suffix when truncated).
  • 3b368bd: Add --format=json support to vercel project token, direct token output to stdout instead of stderr.
  • 34f595a: Extract CLI global config and auth config helpers into new @vercel/cli-config, use @effect/schema for config validation.
  • b4ada64: Implement scheduled jobs for JS/TS.
  • 1dae59c: Allow vc logs <deployment-url> to resolve the project from the deployment instead of requiring a linked local project, and include the current scope in related lookup errors.
  • 7e64cc2: Show a clearer error instead of querying logs for deployments that never reached Ready.
  • 2dac1cb: Use Git repository and root directory matches before folder-name matches when linking projects.

Published 2026-05-06

  • 3898acb: Add vercel firewall command for managing project firewall configuration. Supports custom rules (add, edit, delete, enable, disable, reorder), IP blocking, system bypass rules, attack challenge mode, and system mitigations.
  • 0cf132c: vercel connex create now accepts a --triggers flag. When passed, the request body includes triggers: { enabled: true } so the server wires webhook triggers into the created client. Without the flag, triggers: { enabled: false } is sent.
  • 1d766af: Let --yes enable the browser recovery flow for vercel connex token even in non-TTY contexts (e.g., coding agents), so a single command can open the browser, poll, and return the token without round-tripping through the agent's chat.
  • dd27e25: Added vercel deploy continue --error to mark manual deployments as failed with an optional error message.
  • 2f2b3f1: Added --filter/-f <NAME> flag to vercel project ls for filtering projects by name (substring match).
  • b2c2541: Avoid resolving the configured default team before unscoped vercel link --yes --project cross-team search, so team-scoped tokens can still link projects they can access.
  • 5f3cf99: Skip SAML-protected ("limited") teams during vercel link's cross-team auto-detect so it no longer forces device-code re-authentication for scopes the user did not explicitly choose. The project is still linked from any accessible team where it's found, and limited scopes remain available through the standard scope picker (selectOrg) or --scope <slug>. - @vercel/python@6.38.0

Published 2026-05-04

  • 4a5be0b: Fixed vc env update failing when updating sensitive environment variables.
  • 2ffd7bc: Tighten the SdkKey type so plaintext keyValue, tokenValue, and connectionString can no longer appear on list responses. flags sdk-keys ls --json already omitted these via an explicit allowlist; the type split makes the guarantee static. Create-time output from flags sdk-keys add is unaffected.
  • e6cb5bc: Hide --token from help output for commands that don't support it (login, switch).
  • 8a5aa6a: Ensure synthetic SPA fallbacks are merged after builder-produced routes.
  • bab5a60: Handle stale Claude Code Vercel plugin registry entries during plugin migration.

Published 2026-05-01

  • 5cf1179: Use services orchestrator for single web services in local dev.
  • 3aa821e: Allow adding Development Environment Variables on teams that enforce sensitive Environment Variables.

Published 2026-04-30

Published 2026-04-30

  • bf07448: Revert "auth: Make it possible to store CLI credentials in OS keychain (#16083)"
  • a00740e: vc whoami now shows both the logged-in user and the active team, and surfaces when the active team is set by a local project link rather than the globally-selected team.

Published 2026-04-29

  • 24686d0: Add configurable auth token storage with keyring-backed persistence and file fallback support.

Published 2026-04-22

Published 2026-04-20

Published 2026-04-17

Published 2026-04-17

Published 2026-04-16

Published 2026-04-16

Published 2026-04-15

Published 2026-04-15

Published 2026-04-14

Published 2026-04-13

Published 2026-04-13

Published 2026-04-13

Published 2026-04-11

Published 2026-04-10

Published 2026-04-08

Published 2026-04-07

Published 2026-04-06

Published 2026-04-03

Published 2026-04-02

Published 2026-04-01

Published 2026-04-01

Published 2026-04-01

Published 2026-03-27

Published 2026-03-27

Published 2026-03-26

Published 2026-03-24

Published 2026-03-21

Published 2026-03-20

Published 2026-03-19

Published 2026-03-19

Published 2026-03-19

Published 2026-03-18

Published 2026-03-17

Published 2026-03-12

Published 2026-03-12

Published 2026-03-12

Published 2026-03-11

Published 2026-03-11

Published 2026-03-11

Published 2026-03-11

Published 2026-03-11

Published 2026-03-10

Published 2026-03-09

Published 2026-03-05

Published 2026-03-04

Published 2026-03-04

Published 2026-03-04

Published 2026-03-03

Published 2026-03-02

Published 2026-03-02

Published 2026-02-28

Published 2026-02-27

Published 2026-02-27

Published 2026-02-27

Published 2026-02-26

Published 2026-02-24

Published 2026-02-24

Published 2026-02-24

Published 2026-02-20

Published 2026-02-19

Published 2026-02-19

Published 2026-02-18

Published 2026-02-17

Published 2026-02-17

Published 2026-02-16

Published 2026-02-13

Published 2026-02-13

Published 2026-02-12

Published 2026-02-11

Published 2026-02-11

Published 2026-02-10

Published 2026-02-10

Published 2026-02-07

Published 2026-02-06

Published 2026-02-06

Published 2026-02-06

Published 2026-02-06

Published 2026-02-05

Published 2026-02-05

Published 2026-02-04

Published 2026-02-04

Published 2026-02-04

Published 2026-02-03

Published 2026-01-30

Published 2026-01-29

Published 2026-01-29

Published 2026-01-29

Published 2026-01-29

Published 2026-01-28

Published 2026-01-28

Published 2026-01-28

Published 2026-01-28

Published 2026-01-27

Published 2026-01-27

Published 2026-01-27

Published 2026-01-27

Published 2026-01-26

Published 2026-01-26

Published 2026-01-26

Published 2026-01-23

Published 2026-01-23

Published 2026-01-23

Published 2026-01-21

Published 2026-01-20

Published 2026-01-20

Published 2026-01-19

Published 2026-01-16

Published 2026-01-15

Published 2026-01-15

Published 2026-01-15

Published 2026-01-15

Published 2026-01-14

Published 2026-01-14

Published 2026-01-13

Published 2026-01-13

Published 2026-01-12

Published 2026-01-06

Published 2026-01-06

Published 2026-01-05

Published 2025-12-19

Published 2025-12-17

Published 2025-12-17

Published 2025-12-16

Published 2025-12-12

Published 2025-12-11

Published 2025-12-10

Published 2025-12-08

Published 2025-12-05

Published 2025-12-05

Published 2025-12-04

Published 2025-12-02

Published 2025-11-27

Published 2025-11-27

Published 2025-11-26

Published 2025-11-25

Published 2025-11-25

Published 2025-11-25

Published 2025-11-24

Published 2025-11-22

Published 2025-11-21

Published 2025-11-21

Published 2025-11-21

Published 2025-11-20

Published 2025-11-20

Published 2025-11-19

Published 2025-11-17

Published 2025-11-14

Published 2025-11-14

Published 2025-11-13

Published 2025-11-13

Published 2025-11-12

Published 2025-11-07

Published 2025-11-03

Published 2025-11-03

Published 2025-10-31

Published 2025-10-30

Published 2025-10-30

Published 2025-10-29

Published 2025-10-28

Published 2025-10-28

Published 2025-10-28

Published 2025-10-28

Published 2025-10-28

Published 2025-10-23

Published 2025-10-21

Published 2025-10-19

Published 2025-10-16

Published 2025-10-15

Published 2025-10-08

Published 2025-10-08

Published 2025-10-08

Published 2025-10-07

Published 2025-10-07

Published 2025-10-07

Published 2025-10-07

Published 2025-10-06

Published 2025-10-06

Published 2025-10-02

Published 2025-10-02

Published 2025-09-24

Published 2025-09-24

Published 2025-09-23

Published 2025-09-23

Published 2025-09-23

Published 2025-09-22

Published 2025-09-19

Published 2025-09-18

Published 2025-09-16

Published 2025-09-15

Published 2025-09-12

Published 2025-09-11

Published 2025-09-10

Published 2025-09-10

Published 2025-09-10

Published 2025-09-10

Published 2025-09-09

Published 2025-09-09

Published 2025-09-04

Published 2025-09-03

Published 2025-09-03

Published 2025-09-03

Published 2025-09-02

Published 2025-09-02

Published 2025-08-29

Published 2025-08-28

Published 2025-08-27

Published 2025-08-26

Published 2025-08-26

Published 2025-08-18

Published 2025-08-16

Published 2025-08-15

Published 2025-08-15

Published 2025-08-14

Published 2025-08-13

Published 2025-08-05

Published 2025-08-04

Published 2025-08-02

Published 2025-07-31

Published 2025-07-31

Published 2025-07-28

Published 2025-07-25

Published 2025-07-25

Published 2025-07-25

Published 2025-07-24

Published 2025-07-23

Published 2025-07-22

Published 2025-07-22

Published 2025-07-22

Published 2025-07-18

Published 2025-07-16

Published 2025-07-16

Published 2025-07-11

Published 2025-07-10

Published 2025-07-09

Published 2025-07-07

Published 2025-07-04

Published 2025-07-03

Published 2025-07-02

Published 2025-07-02

Published 2025-07-01

Published 2025-06-27

Published 2025-06-26

Published 2025-06-25

Published 2025-06-25

Published 2025-06-25

Published 2025-06-25

Published 2025-06-24

Published 2025-06-24

Published 2025-06-23

Published 2025-06-23

Published 2025-06-19

Published 2025-06-16

Published 2025-06-13

Published 2025-06-11

Published 2025-05-30

Published 2025-05-27

Published 2025-05-20

Published 2025-05-20

Published 2025-05-20

Published 2025-05-15

Published 2025-05-15

Published 2025-05-13

Published 2025-05-10

Published 2025-05-07

Published 2025-05-06

Published 2025-04-29

Published 2025-04-22

Published 2025-04-16

Published 2025-04-10

Published 2025-04-07

Published 2025-03-13

Published 2025-03-11

Published 2025-03-06

Published 2025-03-04

Published 2025-02-27

Published 2025-02-25

Published 2025-02-24

Published 2025-02-21

Published 2025-02-14

Published 2025-02-14

Published 2025-02-13

Published 2025-02-13

Published 2025-02-11

Published 2025-02-10

Published 2025-02-06

Published 2025-02-05

Published 2025-02-04

Published 2025-01-31

Published 2025-01-31

Published 2025-01-29

Published 2025-01-29

Published 2025-01-13

Published 2025-01-07

Published 2025-01-03

Published 2025-01-02

Published 2024-12-12

Published 2024-12-12

Published 2024-12-09

Published 2024-12-04

Published 2024-11-26

Published 2024-11-22

Published 2024-11-19

Published 2024-11-19

Published 2024-11-18

Published 2024-11-18

Published 2024-11-14

Published 2024-11-14

Published 2024-11-13

Published 2024-11-12

Published 2024-10-30

Published 2024-10-29

Published 2024-10-22

Published 2024-10-21

Published 2024-10-18

Published 2024-10-16

Published 2024-10-10

Published 2024-10-09

Published 2024-10-09

Published 2024-10-08

Published 2024-10-07

Published 2024-10-03

Published 2024-09-26

Published 2024-09-23

Published 2024-09-20

Published 2024-09-19

Published 2024-09-11

Published 2024-09-10

Published 2024-09-05

Published 2024-09-03

Published 2024-08-28

Published 2024-08-28

Published 2024-08-26

Published 2024-08-23

Published 2024-08-22

Published 2024-08-21

Published 2024-08-14

Published 2024-08-09

Published 2024-08-02

Published 2024-07-30

Published 2024-07-25

Published 2024-07-24

Published 2024-07-18

Published 2024-07-17

Published 2024-07-17

Published 2024-07-16

Published 2024-07-16

Published 2024-07-15

Published 2024-07-09

Published 2024-07-03

Published 2024-06-25

Published 2024-06-12

Published 2024-06-07

Published 2024-06-04

Published 2024-05-30

Published 2024-05-24

Published 2024-05-23

Published 2024-05-23

Published 2024-05-15

Published 2024-05-13

Published 2024-05-13

Published 2024-05-13

Published 2024-05-11

Published 2024-05-09

Published 2024-05-07

Published 2024-05-03

Published 2024-04-30

Published 2024-04-30

Published 2024-04-29

Published 2024-04-25

Published 2024-04-24

Published 2024-04-18

Published 2024-04-18

Published 2024-04-11

Published 2024-04-10

Published 2024-04-05

Published 2024-04-03

Published 2024-03-28

Published 2024-03-15

Published 2024-03-14

Published 2024-03-08

Published 2024-03-06

Published 2024-02-28

Published 2024-02-22

Published 2024-02-13

Published 2024-02-09

Published 2024-01-30

Published 2024-01-29

Published 2024-01-25

Published 2024-01-19

Published 2024-01-10

Published 2024-01-03

Published 2023-12-20

Published 2023-12-18

Published 2023-12-13

Published 2023-12-12

Published 2023-12-11

Published 2023-12-01

Published 2023-11-30

Published 2023-11-21

Published 2023-11-16

Published 2023-11-15

Published 2023-11-08

Published 2023-11-07

Published 2023-11-07

Published 2023-10-20

Published 2023-10-03

Published 2023-10-03

Published 2023-09-22

Published 2023-09-21

Published 2023-09-18

Published 2023-09-15

Published 2023-09-14

Published 2023-09-13

Published 2023-09-11

Published 2023-09-08

Published 2023-08-24

Published 2023-08-24

Published 2023-08-22

Published 2023-08-21

Published 2023-08-17

Published 2023-08-15

Published 2023-08-14

Published 2023-08-08

Published 2023-08-02

Published 2023-07-31

Published 2023-07-28

Published 2023-07-26

Published 2023-07-25

Published 2023-07-18

Published 2023-07-13

Published 2023-07-10

Published 2023-06-28

Published 2023-06-28

Published 2023-06-20

Published 2023-06-14

Published 2023-06-07

Published 2023-06-06

Published 2023-06-03

Published 2023-06-02

Published 2023-06-01

Published 2023-05-24

Published 2023-05-22

Published 2023-05-19

Published 2023-05-19

Published 2023-05-18

Published 2023-05-17

Published 2023-05-16

Published 2023-05-16

Published 2023-05-11

Published 2023-05-10

Published 2023-05-10

Published 2023-05-03

Published 2023-05-03

Published 2023-04-30

Published 2023-04-30

Published 2023-04-29

Published 2023-04-27

Published 2023-04-20

Published 2023-04-19

Published 2023-04-11

Published 2023-04-07

Published 2023-03-29

Published 2023-03-28

Published 2023-03-23

Published 2023-03-22

Published 2023-03-16

Published 2023-03-07

Published 2023-03-06

Published 2023-03-02

Published 2023-03-02

Published 2023-03-01

Published 2023-02-28

Published 2023-02-28

Published 2023-02-24

Published 2023-02-23

Published 2023-02-23

Published 2023-02-22

Published 2023-02-21

Published 2023-02-16

Published 2023-02-16

Published 2023-02-16

Published 2023-02-16

Published 2023-02-15

Published 2023-02-14

Published 2023-02-13

Published 2023-02-09

Published 2023-02-07

Published 2023-02-06

Published 2023-02-01

Published 2023-01-30

Published 2023-01-27

Published 2023-01-26

Published 2023-01-23

Published 2023-01-20

Published 2023-01-18

Published 2023-01-18

Published 2023-01-18

Published 2023-01-17

Published 2023-01-13

Published 2023-01-13

Published 2023-01-11

Published 2023-01-09

Published 2023-01-05

Published 2023-01-03

Published 2022-12-23

Published 2022-12-21

Published 2022-12-14

Published 2022-12-07

Published 2022-12-03

Published 2022-12-02

Published 2022-11-30

Published 2022-11-29

Published 2022-11-21

Published 2022-11-17

Published 2022-11-17

Published 2022-11-15

Published 2022-11-15

Published 2022-11-14

Published 2022-11-14

Published 2022-11-09

Published 2022-11-08

Published 2022-11-07

Published 2022-11-02

Published 2022-11-02

Published 2022-10-18

Published 2022-10-16

Published 2022-10-11

Published 2022-10-11

Published 2022-10-06

Published 2022-10-05

Published 2022-10-03

Published 2022-09-28

Published 2022-09-27

Published 2022-09-27

Published 2022-09-22

Published 2022-09-21

Published 2022-09-21

Published 2022-09-19

Published 2022-09-12

Published 2022-09-09

Published 2022-09-07

Published 2022-09-01

Published 2022-09-01

Published 2022-08-25

Published 2022-08-24

Published 2022-08-23

Published 2022-08-23

Published 2022-08-22

Published 2022-08-16

Published 2022-08-16

Published 2022-08-13

Published 2022-08-12

Published 2022-08-09

Published 2022-08-08

Published 2022-08-04

Published 2022-08-04

Published 2022-08-04

Published 2022-08-02

Published 2022-07-29

Published 2022-07-29

Published 2022-07-28

Published 2022-07-27

Published 2022-07-21

Published 2022-07-15

Published 2022-07-15

Published 2022-07-14

Published 2022-07-13

Published 2022-07-13

Published 2022-07-12

Published 2022-07-11

Published 2022-07-10

Published 2022-07-07

Published 2022-07-05

Published 2022-06-30

Published 2022-06-29

Published 2022-06-28

Published 2022-06-28

Published 2022-06-08

Published 2022-06-06

Published 2022-06-02

Published 2022-05-31

Published 2022-05-19

Published 2022-05-13

Published 2022-05-12

Published 2022-05-09

Published 2022-04-29

Published 2022-04-11

Published 2022-03-22

Published 2022-02-16

Published 2021-08-09

Published 2021-08-06

Published 2021-08-05

Published 2021-06-15

Published 2021-05-25

Published 2021-04-22

Published 2021-04-21

Published 2021-03-08

Published 2021-03-02

Published 2021-02-26

Published 2021-02-26

Published 2021-02-04

Published 2021-01-30

Published 2021-01-27

Published 2021-01-25

Published 2021-01-14

Published 2020-11-22

Published 2020-11-20

Published 2020-11-12

Published 2020-11-12

Published 2020-10-08

Published 2020-09-21

Published 2020-08-28

Published 2020-08-24

Published 2020-07-21

Published 2020-07-10

Published 2020-06-16

Published 2020-06-11

Published 2020-05-11

Published 2020-05-07

Published 2020-03-03

Last updated July 8, 2026

Was this helpful?

supported.