vercel deploy --prod: Ship to Production from CI
Running vercel with no subcommand deploys the current directory; vercel --prod promotes that deployment to the production domain.
The Vercel CLI deploys whatever is in the working directory. In CI you skip the dashboard build by deploying a prebuilt output and passing a token so nothing prompts.
What it does
vercel uploads the project and triggers a build on Vercel, printing a unique preview URL. vercel --prod aliases the result to the production domain. With --prebuilt it deploys a local .vercel/output produced by vercel build instead of building on Vercel.
Common usage
vercel deploy --prod --token "$VERCEL_TOKEN" --yes
# build locally, then deploy the prebuilt output
vercel build --prod --token "$VERCEL_TOKEN"
vercel deploy --prebuilt --prod --token "$VERCEL_TOKEN" --yesOptions
| Flag | What it does |
|---|---|
| --prod | Deploy to production (alias to the production domain) |
| --token <t> | Authenticate non-interactively with an access token |
| --yes | Skip all confirmation prompts (assume yes) |
| --prebuilt | Deploy a local .vercel/output from vercel build |
| --env KEY=val | Set a build-time env var for this deploy |
| --scope <team> | Deploy under a specific team slug |
In CI
Pass --token "$VERCEL_TOKEN" and --yes on every invocation so the CLI never waits for input. Set VERCEL_ORG_ID and VERCEL_PROJECT_ID as env vars (from .vercel/project.json) so the deploy targets the right project without an interactive link step.
Common errors in CI
"Error: No existing credentials found. Please run vercel login" means no token was supplied; pass --token or set VERCEL_TOKEN. "Error: Your codebase isn't linked to a project on Vercel" means VERCEL_ORG_ID and VERCEL_PROJECT_ID are missing; set both. "Error: The specified token is not valid" means an expired or wrong token.