First deployment classified as Production despite explicit Preview target (Hobby)

Hello,

I need a supported procedure that guarantees the first deployment of a new Hobby project is created strictly as Preview, with no Production deployment or Production alias.

Sanitized configuration:

  • Hobby plan.
  • Next.js monorepo; the configured framework, root directory, build command, install command, owner scope, and project all match in the dashboard, CLI, and read-only API.
  • While Git was connected, the Production Branch was main. The source branch was a non-production Wave 5 branch.
  • Preview Branch Tracking is enabled for all unassigned branches.
  • Nineteen application variables are scoped only to Preview and the non-production branch; Production has no application variables.
  • Vercel Authentication with Standard Protection is enabled.
  • No custom environment or custom domain is configured.

Unexpected behavior:

The first intended Preview deployment was classified as Production and assigned the default Production alias through each of four independent paths:

  1. Dashboard Preview deployment flow.
  2. Normal Git push from the non-production branch.
  3. Vercel CLI 58.0.0 with an explicit vercel deploy --target=preview.
  4. Create Deployment API with an explicit target: preview.

Every unexpected artifact and alias was deleted immediately. I have not attempted a fifth deployment.

Current safe state, independently rechecked in the dashboard, CLI, and read-only API:

  • zero deployments;
  • zero aliases;
  • no Production target;
  • Git deployment creation disabled and the repository disconnected;
  • all nineteen application variables still Preview-only and branch-scoped;
  • the CLI identity and explicit project inspection match the intended owner scope/project;
  • no stale local project link is present;
  • no real customer data, production credentials, custom domain, or real transaction is involved.

Current Vercel status reports Build & Deploy, API, Dashboard, Git Integrations, and Support Center operational. The documented behavior says a CLI deploy without --prod or with --target=preview should be Preview, and a non-production Git branch should be pre-production.

A similar first-deployment report is here: First deployment is forced to Production even for a Preview branch and --target=preview

Could a Vercel staff member confirm:

  1. whether this is a known first-deployment/bootstrap or Hobby-team classification issue;
  2. the supported procedure that guarantees target=preview before any artifact is created; and
  3. if project recreation is required, the exact creation/configuration order that prevents the first deployment from being assigned to Production?

A temporary or placeholder Production deployment is not acceptable for this project. I can provide additional sanitized diagnostics privately if staff identifies the exact fields required. I will not post project/team IDs, environment values, credentials, or private URLs publicly.

Thank you.

Hi, I independently reproduced the same core behaviour today on a separate new Hobby project using Vercel CLI 58.0.0.

The project had:

  • zero previous deployments;
  • no Git integration;
  • no Production environment variables;
  • Vercel Authentication enabled;
  • Preview-only application configuration.

Observed behaviour:

  1. vercel deploy created a deployment remotely classified as production.
  2. vercel deploy --target=preview was also classified as production.
  3. Both deployments received automatic Production .vercel.app aliases.
  4. The hashed deployment URL was protected, but the automatically assigned Production aliases served the site publicly.

I also reproduced a related aliasing behaviour:

vercel deploy --prod --skip-domain correctly skipped the primary <project>.vercel.app alias, but still assigned:

  • <project>-<team>.vercel.app
  • <project>-<author>-<team>.vercel.app

Both derived aliases were publicly accessible.

All deployments were removed by exact deployment URL. The project currently has zero deployments and no public exposure.

This appears consistent with the other reports linked in this thread, while the partial behaviour of --skip-domain may be a separate issue.

Could Vercel please confirm:

  1. Whether forcing the initial deployment to Production is expected, even with --target=preview;
  2. Whether --skip-domain intentionally excludes the two derived automatic aliases;
  3. The supported Hobby-plan procedure for creating the first deployment without temporarily exposing unfinished content;
  4. Whether Preview deployment targeting behaves normally after a Production baseline remains in place.

I can provide additional non-sensitive diagnostics privately if a Vercel team member requests specific fields.

It’s expected that the first deployment is automatically production. But you can use --skip-domain to create a staged production deployment hidden from public access with deployment protection.