vercel project
The vercel project command manages your Vercel Projects from the terminal: list, add, inspect, update, rename, and remove projects, pause and resume production traffic, plus configure framework and build settings, deployment checks, deployment protection, access groups, project members, Web Analytics, Speed Insights, Observability Plus, and project-scoped OIDC tokens.
vercel projects is an alias for the same command.
vercel project lsUsing the vercel project ls command to list projects in the current scope.
Subcommands that take a project argument (shown as [name], [project], or <name>) accept the project name (the name shown in the dashboard and vercel project ls) or its ID, for example my-app or prj_abc123. When the argument is optional and you omit it, the linked project is used.
Aliases: ls.
Show all projects in the selected scope. This is the default subcommand, so vercel project and vercel project ls behave the same way.
vercel project list [options]| Option | Description |
|---|---|
-N, --next | Show the next page of results. Pass the timestamp (ms since the UNIX epoch) cursor. |
--format | Output format. Supports json. |
--update-required | Filter to projects affected by an upcoming Node.js runtime deprecation. |
-f, --filter | Filter projects by name (substring match). |
# Paginate results
vercel project ls --next 1584722256178
# Projects affected by an upcoming Node.js deprecation, as JSON
vercel project ls --update-required --format=json
# Substring filter
vercel project ls --filter my-appCreate a new project. The name argument is required; vercel project add with no name (or with more than one positional) prints a usage error and exits.
vercel project add <name>Wrap names that contain spaces in quotes:
vercel project add "My Project"Show details for a project by name. Defaults to the linked project.
vercel project inspect [name]# Inspect the linked project
vercel project inspect
# Inspect a project by name
vercel project inspect my-projectAliases: set.
Update the framework preset and build settings for a project. Only the settings you pass are changed; omitted settings remain unchanged. Defaults to the linked project. At least one setting option is required.
vercel project update [name] [options]| Option | Description |
|---|---|
--framework <SLUG> | Set the framework preset by slug (for example nextjs). Use other to clear the preset. |
--build-command <COMMAND> | Set the build command. |
--dev-command <COMMAND> | Set the development command. |
--install-command <COMMAND> | Set the install command. |
--output-directory <DIR> | Set the output directory. |
--auto-detect <SETTING> | Reset a setting to automatic detection: build-command, dev-command, install-command, or output-directory. Repeat the flag or pass a comma-separated list. Can't be combined with the explicit flag for the same setting. |
--sandbox-region <REGION> | Set the default region for sandboxes created in the project. Use "" to clear. |
--sandbox-failover-regions <REGIONS> | Set the ordered, comma-separated failover regions for sandboxes created in the project. Must not include the main region. Use "" to clear. Available on Pro and Enterprise plans, excluding Pro trials. |
--format | Output format. Supports json. |
vercel project update --framework nextjs
vercel project update my-project --framework vite
vercel project update my-project --build-command "pnpm build" --output-directory dist
vercel project update my-project --auto-detect build-command --auto-detect output-directory
vercel project update my-project --sandbox-region sfo1 --sandbox-failover-regions cle1,iad1
vercel project update my-project --framework other --format jsonRename an existing project.
vercel project rename <name> <new-name>vercel project rename my-project my-renamed-projectAliases: rm.
Remove a project.
vercel project rm <name>List, add, or remove deployment checks for a project.
vercel project checks [name]
vercel project checks add [name] [options]
vercel project checks remove <id> [name]# List checks for the linked project
vercel project checks
# Checks that block production alias assignment
vercel project checks --blocks deployment-alias
# Add a check from a JSON file
vercel project checks add my-app --file ./check.json
# Add a check with flags (requires integration/webhook setup in the body via --file or --source)
vercel project checks add --check-name "CI" --requires deployment-url --blocks deployment-alias
# Remove a check by ID
vercel project checks remove chk_abc123 my-appShow or toggle deployment protection settings for a project. Pass enable or disable as the action; omit both to show current settings.
vercel project protection [action] [name] [options]| Option | Description |
|---|---|
--sso | Apply the action to SSO protection. |
--password | Apply the action to password protection. Requires an eligible plan. |
--customer-support-code-visibility | Apply the action to customer support code visibility protection. |
--skew | Apply the action to skew protection. |
--skew-max-age <SECONDS> | When enabling --skew, set the max age in seconds. Defaults to 2592000 (30 days). |
--protection-bypass | Apply the action to automation protection bypass secrets. |
--protection-bypass-secret <SECRET> | Optional bypass secret value. Required when disabling bypass. |
--git-fork-protection | Apply the action to Git fork protection. |
--format | Output format. Supports json. |
# Show protection settings for the linked project
vercel project protection
# Named project as JSON
vercel project protection my-app --format json
# Toggle individual protections
vercel project protection enable my-app --password
vercel project protection disable my-app --password
vercel project protection enable my-app --customer-support-code-visibility
vercel project protection enable my-app --skew
vercel project protection enable my-app --skew --skew-max-age 604800
vercel project protection enable my-app --sso
vercel project protection enable my-app --git-fork-protection
# Bypass secret
vercel project protection enable my-app --protection-bypass
vercel project protection disable my-app --protection-bypass --protection-bypass-secret <secret>Aliases: member.
List, add, or remove project members for a project.
vercel project members [project] [options]
vercel project members add <project> <member> --role <role>
vercel project members remove <project> <member>For add and remove, both arguments are required and <member> can be an email address, username, or user ID. rm is an alias for remove. Adding a member requires a Pro or Enterprise team, and the member must already be a confirmed member of the team. Invite them first with vercel teams invite if needed. The available project roles also depend on the member's team role: 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.
Both add and remove ask for confirmation and have no flag to skip it, so run them in an interactive terminal.
| Option | Description |
|---|---|
--search | Filter project members by name, username, or email (list only). |
--limit | Limit number of project members returned (1-100) (list only). |
--role | Required for add. Project role to grant: ADMIN, PROJECT_DEVELOPER, PROJECT_VIEWER, or PROJECT_GUEST. |
--format | Output format. Supports json. |
# List members for the linked project
vercel project members
# List members for a named project as JSON
vercel project members my-project --format json
# Add a member to a project by email
vercel project members add my-project user@example.com --role PROJECT_VIEWER
# Add a member by username (the role is case-insensitive)
vercel project members add my-project octocat --role admin
# Remove a member from a project
vercel project members remove my-project user@example.com
# Remove a member using the rm alias
vercel project members rm my-project octocatAliases: accessgroups.
List access groups for a project. Here [name] is the project (name or ID), not an access group; omit it to use the linked project.
vercel project access-groups [name] [options]| Option | Description |
|---|---|
--search | Search access groups by name. |
--limit | Limit number of access groups returned (1-100). |
-N, --next | Show the next page of results. Pass the timestamp (ms since the UNIX epoch) cursor. |
--format | Output format. Supports json. |
# List access groups for the linked project
vercel project access-groups
# List access groups for a named project as JSON
vercel project access-groups my-project --format jsonAliases: summary.
Show member counts by team role for project access. Requires the access groups entitlement.
vercel project access-summary [name] [options]| Option | Description |
|---|---|
--format | Output format. Supports json. |
# Summary for the linked project
vercel project access-summary
# Summary for a named project as JSON
vercel project access-summary my-app --format jsonEnable or disable Web Analytics for a project. The action can be enable or disable. When omitted, the command enables Web Analytics. When name is omitted, the command uses the linked project.
vercel project web-analytics [action] [name] [options]Both enable and disable ask for confirmation and have no flag to skip it, so run the command in an interactive terminal. On Hobby, Web Analytics is free within the documented limits. On Pro and Enterprise, enabling incurs charges. The --format json option only changes the output format and the confirmation will come first.
| Option | Description |
|---|---|
--format | Output format. Supports json. |
# Enable for the linked project
vercel project web-analytics
# Enable for a named project
vercel project web-analytics enable my-project
# Disable for a named project
vercel project web-analytics disable my-project
# Disable and print the result as JSON
vercel project web-analytics disable my-project --format jsonEnable or disable Speed Insights for a project. The action can be enable or disable. When omitted, the command enables Speed Insights. When name is omitted, the command uses the linked project.
vercel project speed-insights [action] [name] [options]Both enable and disable ask for confirmation and have no flag to skip it, so run the command in an interactive terminal. On Hobby, Speed Insights is only available for one project. On Pro and Enterprise, enabling incurs charges. The --format json option only changes the output format and the confirmation will come first.
| Option | Description |
|---|---|
--format | Output format. Supports json. |
# Enable for the linked project
vercel project speed-insights
# Enable for a named project
vercel project speed-insights enable my-project
# Disable for a named project
vercel project speed-insights disable my-project
# Disable and print the result as JSON
vercel project speed-insights disable my-project --format jsonEnable or disable Observability Plus for a project. The action argument is required and must be enable or disable. When name is omitted, the command uses the linked project.
vercel project observability <action> [name] [options]Enabling Observability Plus incurs charges on your account and requires a Pro or Enterprise team. Both enable and disable ask for confirmation and have no flag to skip it, so run the command in an interactive terminal.
| Option | Description |
|---|---|
--format | Output format. Supports json. |
# Enable for the linked project (prompts for confirmation)
vercel project observability enable
# Disable for a named project
vercel project observability disable my-project
# Disable and print the result as JSON
vercel project observability disable my-project --format jsonPause production traffic for a project. While paused, the production deployment stops serving traffic and visitors see an error page. Defaults to the linked project.
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, so run the command in an interactive terminal.
vercel project pause [project] [options]| Option | Description |
|---|---|
--format | Output format. Supports json. |
# Pause the linked project
vercel project pause
# Pause a project by name
vercel project pause my-project
# Pause a project and print the result as JSON
vercel project pause my-project --format jsonAliases: unpause.
Resume production traffic for a paused project. Defaults to the linked project. The command asks for confirmation before restoring traffic, so run it in an interactive terminal.
vercel project resume [project] [options]| Option | Description |
|---|---|
--format | Output format. Supports json. |
# Resume the linked project
vercel project resume
# Resume a project by name
vercel project resume my-project
# Resume a project and print the result as JSON
vercel project resume my-project --format jsonGet a development OIDC token for a project. Useful when you need a project-scoped token from a script or CI environment without going through the dashboard.
vercel project token [name] [options]| Option | Description |
|---|---|
-y, --yes | Skip the confirmation prompt. |
--format | Output format. Supports json. |
# Token for the linked project
vercel project token
# Token for a named project
vercel project token my-project
# Token as JSON
vercel project token my-project --format=jsonThe following global options can be passed when using the vercel project command:
--cwd--debug--global-config--help--local-config--no-color--non-interactive--scope--team--token--version
For more information on global options and their usage, refer to the options section.
Was this helpful?