Preview deployments incorrectly routed to Production

I need help investigating a Vercel Hobby project where every explicitly requested Preview deployment was recorded as Production.

Project configuration:

  • Production branch: production-disabled
  • Preview tracking: all unassigned branches
  • Staging branch: prod-012-d5b-staging
  • Commit: 6b02227dffed6f83ba430c22f1c2523bd4272ec7
  • Expected environment: Preview with VERCEL_ENV=preview
  • Actual environment: Production, confirmed by both vercel ls and the Vercel Activity log

Four independent methods produced the same result:

  1. CLI deployment without --prod
  2. CLI deployment with explicit --target=preview
  3. Git deployment from prod-012-d5b-staging
  4. Dashboard action explicitly labeled “Create Preview Deployment”

No deployment was promoted or redeployed to Production.

The repository already contains:

{
  "$schema": "https://openapi.vercel.sh/vercel.json",
  "framework": "nextjs",
  "git": {
    "deploymentEnabled": {
      "*": false,
      "prod-012-d5b-staging": true
    }
  }
}

Every incorrectly routed deployment was immediately deleted, and the project currently has zero deployments.

Can a Vercel team member inspect the deployment-target metadata or explain why this project overrides every Preview request to Production? I need confirmation that a new deployment from prod-012-d5b-staging will be created with target=preview and VERCEL_ENV=preview without first creating a Production deployment.

Hi Agnipickles,

One thing I’d separate here: the git.deploymentEnabled block only controls whether a Git push creates a deployment. It does not decide whether that deployment is Preview or Production.

The target should mainly come from the project’s Production Branch setting or from an explicit CLI target. So I’d check Project Settings → Environments → Production → Branch Tracking and confirm the production branch is exactly:

production-disabled

Then I’d try one very small smoke test with a branch name that does not include prod or production, just to remove naming/rules confusion:

git checkout -b vercel-preview-smoke-test 6b02227dffed6f83ba430c22f1c2523bd4272ec7
git push origin vercel-preview-smoke-test

If that new branch also becomes a Production deployment, then I think you have a strong case that the project’s deployment target metadata is wrong or stale, because it would not match the normal Preview/Production behavior.

If that new branch becomes Preview, then I’d look specifically at whether prod-012-d5b-staging is being matched by some environment/branch-tracking rule or old project state.

For the follow-up, I’d include the branch name, deployment URL/ID, and what VERCEL_ENV shows for that smoke-test deployment, but avoid posting project IDs or anything from env vars.