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.
Updated dependencies [aeb5bfa]
Updated dependencies [0a170fd]
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.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 to error (exit 1) when the specified project is not connected to the resource, instead of exiting 0 with a "not found" message.
vercel connect revoke-tokens subcommand to revoke tokens issued from a connector._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.experimentalServices from Build Output API config during vercel build.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.env support for the new service-ref shape for services.--standalone flag in pnpm monorepos by skipping external node_modules symlinks and copying traced files at their logical paths instead.--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.--type, --service, and --search filter flags to vercel connect list.vercel domains check subcommand for registrar availability and extend
vercel domains price to support bulk price lookups for multiple domains.--format=json.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.
Updated dependencies [fa25cb7]
Updated dependencies [972cc84]
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:
.vercel/repo.json linked projects without prompting (matches by name or ID)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.
Updated dependencies [e6dc048]
Updated dependencies [2cd64ea]
Updated dependencies [23eee91]
Updated dependencies [79d9508]
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.--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.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
Updated dependencies [bb61428]
Updated dependencies [137e5d1]
Updated dependencies [f45e466]
Updated dependencies [744e96c]
Updated dependencies [7923d34]
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
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.--follow for vercel logs to stream deployment logs. Passing a deployment argument or --deployment now uses historical deployment log filtering by default.services with an explicit env configuration.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.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.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.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).vercel dev exitvc curl while resolving project auth from the target URL.VERCEL_ANALYZE_BUILD_OUTPUT=1.services schema supportvercel 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).--format=json support to vercel project token, direct token output to stdout instead of stderr.@vercel/cli-config, use @effect/schema for config validation.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.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.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.--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.vercel deploy continue --error to mark manual deployments as failed with an optional error message.--filter/-f <NAME> flag to vercel project ls for filtering projects by name (substring match).vercel link --yes --project cross-team search, so team-scoped tokens can still link projects they can access.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>.
vc env update failing when updating sensitive environment variables.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.--token from help output for commands that don't support it (login, switch).56880dd: vercel edge-config tokens <id-or-slug> --format json no longer includes plaintext token values. Each row now contains id, label, partialToken, and createdAt.
If your scripts read the token field to identify or remove a token, switch to id instead. For example, vercel edge-config tokens <id-or-slug> --remove <id> --yes.
Plaintext tokens are still printed once at creation via --add <label>.
4ae5eca: Adds vercel connex open <clientIdOrUid> — opens a Connex client's detail page in the Vercel dashboard. Gated behind FF_CONNEX_ENABLED.
scl_ client ID or a UID (e.g. slack/my-bot); resolves UIDs to the canonical scl_ ID via GET /v1/connex/clients/:id before building the dashboard URL (the dashboard route is a single [clientId] segment).--format=json (emits { "url": "..." }) and stdout.isTTY (non-TTY writes the URL to stdout so it can be piped).vercel integration open: presence-checks the client first so a bad id/uid fails fast with a CLI error instead of a 404 in the browser.d071a00: Add vercel connex remove command to delete a Connex client by id or uid. Refuses when projects are connected unless --disconnect-all is passed (mirrors vercel integration-resource remove); supports --yes and --format=json.
f0c17c0: Add masked token value column to vercel edge-config tokens table output.
bc302e4: vercel flags sdk-keys ls now surfaces the server-masked partialKeyValue preview (e.g. vf_server_abc********) in a new column of the default table output, between Label and Created. The --json output also includes partialKeyValue on each row.
c56f851: Upgrade to TypeScript 5.9
vercel connex commands so users are not re-prompted on every invocation. Personal-scope selections are rejected since connex clients are team-owned.vercel edge-config subcommands to the locally linked project's team by default, matching vercel env, vercel crons, etc. Falls back to the globally configured team when no project is linked.vc link --scope project lookup to the requested scope.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.disconnectBoth 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.
Updated dependencies [3019788]
Updated dependencies [fe893ec]
Updated dependencies [fddeb55]
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.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.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).▲ 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.✓ 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.🔗, 🔍, ⏳) on Linked / Inspect / Production rows (across both vc deploy and vc redeploy).Building: prefix from the build-logs spinner. Each streamed log line is shown verbatim instead of Building: <line>.(created .vercel and added it to .gitignore) parenthetical from Linked — git status surfaces it on demand.[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