Vercel CLI's August 2026 project and domain commands block CI: 8 prompts have no skip flag
Summary. On 21 August 2026 Vercel published a changelog post announcing dedicated vercel dns, vercel domains and vercel project commands, and closed it with a single sentence: "All of the new commands support structured JSON output for scripts and agents." The reference documentation for those same commands says something different. Across /docs/cli/project (frontmatter last_updated: 2026-07-07) and /docs/cli/domains (2026-07-15), eight subcommands are documented as asking for confirmation with no flag to skip it, and one of them, vercel project web-analytics, spells out the consequence: "The --format json option only changes the output format and the confirmation will come first." The npm vercel package reached 59.5.0 on 22 August 2026 under Apache-2.0, requiring Node 18 or later. Two of the affected commands are billable. Web Analytics costs $0.03 per 1,000 additional events on Pro, with a Web Analytics Plus add-on at $10.00 per month per team, which is exactly why the prompt exists. The gap matters because Vercel's own CLI page has carried a "Using in a CI/CD environment" section for years, and these commands cannot use it.
What actually shipped on 21 August 2026
The changelog post, credited to David Lee and Melkey Moksyakov and dated 21 August 2026, groups the release into four areas: inspecting and updating DNS records in place by record ID, renewing domains bought on Vercel, controlling project state and observability, and adding or removing project members.
The DNS work is the least contentious part. vercel dns update takes a record ID and rewrites name, type, value, TTL, MX priority or comment without deleting and re-adding the record. The type list is closed: A, AAAA, ALIAS, CAA, CNAME, MX, SRV and TXT. SRV records are the trap here, because the reference states that --srv-priority, --srv-weight, --srv-port and --srv-target must all be provided together. Pass three of the four and the update will not do what you meant. vercel dns ls defaults to 20 records with a maximum of 100, so any team with a real zone needs pagination on day one.
The second half is where the automation story breaks.
The eight prompts that have no skip flag
Read the reference pages rather than the announcement and a pattern appears. Vercel documents a -y, --yes flag on some commands and explicitly rules it out on others, inside the same release.
| Command | JSON output | Skip-confirmation flag | Documented guidance |
|---|---|---|---|
vercel project token |
--format=json |
-y, --yes |
Usable from a script or CI environment |
vercel domains rm |
not documented | --yes |
Bypasses the prompt |
vercel project pause |
--format json |
none | "run the command in an interactive terminal" |
vercel project resume |
--format json |
none | "run it in an interactive terminal" |
vercel project members add / remove
|
--format json |
none | "run them in an interactive terminal" |
vercel project web-analytics enable / disable
|
--format json |
none | "the confirmation will come first" |
vercel project speed-insights enable / disable
|
--format json |
none | "the confirmation will come first" |
vercel project observability enable / disable
|
--format json |
none | "run the command in an interactive terminal" |
vercel domains renew |
--format=json |
none | "still requires an interactive confirmation of the charge" |
Counting each documented pair separately, that is eight subcommand groups that ship a JSON output mode and no way to answer the prompt from a script.
vercel project pause is the hardest of them. The reference says that because pausing takes production offline, "the command always asks you to type the project name to confirm. There is no flag to skip the confirmation." Typing a project name is not a y/n prompt that a yes | pipe will satisfy in any predictable way, and Vercel does not document the exact string, the prompt text, or a non-interactive fallback. If your incident runbook says "pause the project," that step stays manual.
Why the changelog and the docs both look correct
Neither statement is false on its own terms. Every new subcommand does accept --format json. Billable and destructive actions do require explicit confirmation, as the changelog's second-to-last sentence says. The problem is the word "and" between them.
"Structured JSON output for scripts and agents" reads as a capability claim about unattended execution. It is a claim about output serialisation only. An agent that shells out to vercel project observability enable --format json in a container with no TTY does not get JSON; it gets a prompt it cannot answer, and depending on how the CLI handles a closed stdin, either a hang or a non-zero exit that looks like an authentication failure. The reference page anticipates this and tells you to use an interactive terminal. The changelog does not repeat that caveat anywhere.
The inconsistency is sharper because the CLI documents a first-class CI path. /docs/cli has a "Using in a CI/CD environment" section that tells you to create a token and either set VERCEL_TOKEN or pass --token, and recommends the environment variable because a flag is visible in process lists and logs. That guidance is sound, and it does nothing for the eight commands above. Authentication was never the blocker.
The sibling release goes the other way
Vercel shipped vercel comments the day before, on 20 August 2026, and it treats JSON mode as a non-interactive contract rather than a formatting switch. Its reference page states plainly: "JSON output does not prompt for missing input or confirmation." Deleting a message is irreversible there, and --yes exists.
So within 48 hours the same CLI shipped two opposite conventions. In vercel comments, --json suppresses the gate on an irreversible delete. In vercel project, --format json leaves the gate in place on a reversible pause. A team writing a wrapper around both has to remember which is which, and the changelog posts give no signal at all.
Who this affects, and how to tell if it is you
You are affected if any of the following is true today:
Your deploy pipeline or platform-engineering tooling shells out to vercel project for anything other than list, inspect or token. Everything read-only is fine. Everything that changes billable state or membership is not.
You are building an agent or MCP wrapper over the Vercel CLI and treated the changelog's "for scripts and agents" line as a specification. Test each subcommand with stdin closed before you ship the wrapper, not after.
You automate project offboarding. vercel project members remove is the natural command for a leaver workflow and it is one of the eight. The REST API remains the route for that.
You run scheduled cost control that toggles Speed Insights or Web Analytics on preview projects. On Hobby, Web Analytics is free within the documented limits and Speed Insights is limited to one project; on Pro and Enterprise, enabling either incurs charges, which is what triggers the prompt.
What to do about it
Pin the version and know what you pinned. vercel@latest on the npm registry was 59.5.0, published 22 August 2026. The canary dist-tag was still 51.7.0 from 17 April 2026, eight major versions behind latest and predating this release entirely. Anyone who reached for vercel@canary expecting newer code got an older CLI without these commands at all. Install vercel@59.5.0 explicitly in CI rather than latest or canary.
Split your automation by whether a prompt exists. Read paths (project list, project inspect, dns ls, domains ls, comments list) are safe to script with --format json. Write paths that touch billing, membership or production traffic should go through the Vercel REST API, where there is no prompt to answer. The CLI is not a complete API client for those operations, and treating it as one is where pipelines break at 3am.
For DNS specifically, prefer vercel dns update <record-id> over remove-and-re-add. Changing a record in place keeps the ID stable, which matters if you track records in your own inventory. Send all four --srv- options together when you touch an SRV record. And remember Vercel's own note that new DNS records can take up to 24 hours to propagate, so a script that updates and immediately asserts is a script that will flake.
For anything involving vercel project token, note that it does have -y, --yes and does return a development OIDC token scoped to a project, which is the one genuinely CI-friendly addition in the release.
India-specific considerations
Indian teams running production on Vercel with a follow-the-sun on-call rotation feel this most in the handover. A Gurugram or Bengaluru team that inherits a pause/resume runbook from a US shift cannot promote it to an automated remediation step, because the pause requires typing the project name at an interactive prompt. Budget for that as a manual page-and-confirm action rather than a scripted one.
Membership automation carries a second consideration. vercel project members add and remove are the CLI surface for access changes, and under the Digital Personal Data Protection Act 2023 an organisation is expected to be able to evidence who had access to systems processing personal data and when it was revoked. A manual, interactive removal step is harder to evidence than an API call with a logged response. Route offboarding through the REST API and keep the response body.
The role matrix also constrains what you can automate: the reference states that Contributors can hold any project role, Developers can only be added as ADMIN, Security members as ADMIN or PROJECT_DEVELOPER, and team Members and Owners already have access to every project. A leaver script that assumes PROJECT_VIEWER is always grantable will fail on a Developer.
What is still unknown
Vercel has not documented the exit code or behaviour when these commands run with stdin closed, so "hangs" versus "exits non-zero" is untested territory you should establish in your own CI before relying on either. There is no published deprecation note saying the missing --yes flags are coming. The /docs/cli/project and /docs/cli/domains pages both carry last_updated dates in July 2026, before the 21 August changelog, so the reference text describing these commands predates the announcement of them, which suggests the commands existed behind the docs before they were announced, and that the changelog was written against the feature rather than against the page.
If you are auditing other parts of the same platform, our analysis of Vercel always-on tracing pricing gaps and Vercel Connect connector token handling covers two more places where the changelog and the reference docs diverge. The same pattern shows up outside Vercel: see Cloudflare's Wrangler OAuth scope documentation gap. For teams standardising this properly, it belongs in the same conversation as release engineering and CI/CD platform work and the broader web platform developer guide.
FAQ
Which Vercel CLI commands cannot run in a CI job?
Eight documented subcommand groups: project pause, project resume, project members add and remove, project web-analytics enable and disable, project speed-insights enable and disable, project observability enable and disable, and domains renew. Each is documented as asking for confirmation with no flag to skip it, so an unattended job cannot answer the prompt.
Does passing --format json skip the confirmation prompt?
No. The vercel project reference states that the --format json option only changes the output format and the confirmation will come first. The vercel domains page says the same about renew: the renewal still requires an interactive confirmation of the charge before the JSON result is printed to standard output.
Why does vercel project pause behave differently from other prompts?
Because pausing takes production traffic offline, the command always asks you to type the project name to confirm rather than accepting a yes or no answer. Vercel documents no flag to skip that confirmation, so the step cannot be scripted and belongs in a manual incident runbook instead.
What version of the Vercel CLI has these commands?
The npm vercel package published 59.5.0 on 22 August 2026 under the Apache-2.0 licence, requiring Node 18 or later. The canary dist-tag was still 51.7.0 from 17 April 2026, eight major versions behind latest, so installing vercel@canary gets you an older CLI without this release.
Which new commands are safe to automate?
Read-only paths are safe: project list, project inspect, dns ls and domains ls all accept JSON output without a prompt. The vercel project token subcommand documents a -y, --yes flag and returns a project-scoped development OIDC token, which makes it the one genuinely CI-friendly write path in the release.
How should I automate project membership changes instead?
Use the Vercel REST API rather than the CLI. Both project members add and project members remove ask for confirmation with no skip flag. An API call also returns a logged response body, which is easier to evidence during an access review than an operator confirming a prompt in a terminal session nobody recorded.
What changed about updating DNS records?
The vercel dns update command rewrites an existing record in place using its record ID, covering name, type, value, TTL, MX priority and comment. Valid types are A, AAAA, ALIAS, CAA, CNAME, MX, SRV and TXT. All four SRV options must be passed together, and record listing defaults to 20 with a maximum of 100.
Does the vercel comments command follow the same rules?
No, it inverts them. Its reference page states that JSON output does not prompt for missing input or confirmation, and deletion cannot be undone. So within 48 hours Vercel shipped two opposite conventions: JSON suppresses the gate in comments and preserves the gate in project, with no note in either changelog post.
How eCorpIT can help
eCorpIT builds and hardens release pipelines for teams running production on Vercel, AWS and Cloudflare, and this is the class of defect we look for first: a vendor capability that reads as automatable in the announcement and is not automatable in the reference. Our senior engineering teams map every write path in your deploy tooling to a prompt-free API call, pin CLI versions explicitly, and record the access changes your DPDP and ISO 27001:2022 evidence needs. If your pipeline currently shells out to a CLI for billable or membership operations, book a release-pipeline review with our platform team and we will show you which steps will hang the next time a runner has no TTY.
References
- Vercel CLI expands support for DNS, domains, and project commands — Vercel changelog, 21 August 2026.
- vercel project CLI reference — Vercel docs, last updated 7 July 2026.
- vercel domains CLI reference — Vercel docs, last updated 15 July 2026.
- vercel dns CLI reference — Vercel docs, last updated 15 July 2026.
- Vercel CLI overview, including the CI/CD environment section — Vercel docs.
- vercel comments CLI reference — Vercel docs.
- Manage Vercel Toolbar comments from the CLI — Vercel changelog, 20 August 2026.
- vercel package on the npm registry — dist-tags, publish times and licence metadata, read 24 August 2026.
- Vercel Web Analytics limits and pricing — Vercel docs.
- Vercel Observability documentation — Vercel docs.
- Vercel OIDC documentation — Vercel docs.
- Vercel changelog index — read 24 August 2026.
Last updated: 24 August 2026.
Top comments (0)