How to disable Vercel auto-deploy
To stop Vercel from deploying on every push, disconnect the Git repository in Project → Settings → Git, set git.deploymentEnabled to false in vercel.json, or add an Ignored Build Step that cancels the builds you do not want. Disconnecting stops every Git build; the other two keep the repository connected and skip builds by rule.
| Way | Stops | Keeps | Best for |
|---|---|---|---|
| 1. Disconnect Git | All Git builds, production and preview | Deployments, domains, env vars | Deploying on your schedule |
2. git.deploymentEnabled | Builds for the branches you list | Git connection, other branches | Turning off one branch, in code |
| 3. Ignored Build Step | Builds your script rejects | Everything; each push still starts a deployment that gets cancelled | Rules like “only if this folder changed” |
1. Disconnect the Git repository
This is the only way that makes a push do nothing at all on Vercel.
- Write down the repository and the production branch. You need them to reconnect later.
- Open the project on vercel.com, then Settings → Git.
- Under Connected Git Repository, click Disconnect and confirm.
- Deploy by hand from a checkout of the branch:
# production deploy of the folder you are in (the build runs on Vercel)
vercel deploy --prod
# or build on your machine or in CI and upload the result
vercel build --prod
vercel deploy --prebuilt --prod
Trade-offs. No preview deployment per pull request, no automatic production deploy, and deploy hooks live in the Git settings, so they go with the connection (deploys triggers lists what can still start a build). Your existing deployments, domains and environment variables stay.
2. git.deploymentEnabled in vercel.json
The repository stays connected, but Vercel skips Git deployments for the branches you turn off. Put vercel.json in the project's root directory.
Off for every branch:
{
"git": {
"deploymentEnabled": false
}
}
Off for production only, previews keep working:
{
"git": {
"deploymentEnabled": {
"main": false
}
}
}
The keys are branch names; Vercel also accepts glob patterns such as "renovate/*": false. Then deploy production with vercel deploy --prod as above.
Trade-offs. It lives in the repository, so it is reviewed and versioned, but you need one file per project. In a monorepo every project reads its own vercel.json.
3. Ignored Build Step
Vercel runs a command before each Git build. Exit code 0 cancels the build, exit code 1 lets it run. Set it in Settings → Git → Ignored Build Step (choose Custom), or in vercel.json:
{
"ignoreCommand": "git diff --quiet HEAD^ HEAD -- ."
}
This example builds only when the last commit changed something in the project's folder. To cancel every Git build, the command is simply exit 0.
Trade-offs. Every push still creates a deployment that shows up as cancelled, and a script that errors lets the build run. The Ignored Build Step guide has tested examples and the pitfalls.
4. All projects in one click: Deploy Center
Doing way 1 by hand is fine for one project and tedious for thirty. Deploy Center does it for all of them, writes down each repository and production branch first, and then shows what is waiting to go live.
- Install the app and connect with your
vercelCLI login. - Click Turn off auto-deploy on the banner. Or in the terminal:
deploys vercel autodeploy-off --all # disconnect Git, remember repo and branch
deploys changed # what is waiting to go live
deploys deploy-changed --yes # ship the newest commit of each
The repositories are recorded in ~/.config/deploys/vercel-repos.json, so you can reconnect any project later.
Turn auto-deploy back on
- Disconnected: Settings → Git → connect the same repository again and set the production branch.
deploymentEnabled: delete the key or set it totrue, and push.- Ignored Build Step: set the setting back to Automatic, or remove
ignoreCommand.
Questions
Does disconnecting Git delete my Vercel deployments?
No. Existing deployments, domains and environment variables stay. Only new builds from Git pushes stop.
Can I keep preview deployments and only stop production?
Yes. Set "deploymentEnabled": {"main": false} in vercel.json, or use an Ignored Build Step that cancels when VERCEL_ENV is production.
Do CLI deploys still work after I turn auto-deploy off?
Yes. vercel deploy --prod works with or without a Git connection, and so does Deploy Center.
Which way saves the most?
Disconnecting, because nothing starts on a push. With the Ignored Build Step a deployment is still created and then cancelled; check your usage page to see how your plan counts it.
What do I lose?
Automatic production deploys and automatic previews. You have to remember to deploy; Deploy Center shows a count of what is waiting in the menu bar.
Do it for every project in one click.
Deploy Center is a free, open-source Mac app. It turns off auto-deploy on Vercel, Render, Netlify, Cloudflare Pages and more, shows the commits and PRs waiting to go live, and deploys what changed when you decide.