---
title: vercel comments
product: vercel
url: /docs/cli/comments
canonical_url: "https://vercel.com/docs/cli/comments"
last_updated: 2026-08-19
type: reference
prerequisites:
  - /docs/cli
related:
  - /docs/comments
  - /docs/vercel-toolbar
  - /docs/comments/using-comments
  - /docs/cli
  - /docs/cli/global-options
summary: Review and manage Vercel Toolbar comment threads from the terminal with the vercel comments CLI command.
install_vercel_plugin: npx plugins add vercel/vercel-plugin
---

# vercel comments

> The vercel comments command is available on all plans

The `vercel comments` command lets you review and manage existing [Vercel Toolbar Comments](/docs/comments) from the terminal. You can list, inspect, reply to, resolve, reopen, and open threads, as well as update or delete their messages. Use the [Vercel Toolbar](/docs/vercel-toolbar) to create new comment threads.


<!-- docsgraph:related -->
## Related pages

> **For AI agents:** Follow these links to understand how this page connects to the rest of the Vercel ecosystem. For the full cross-link map (inbound, outbound, prerequisites, and semantic neighbors), see the .graph.md link below.

- [Manage Vercel Toolbar comments from the CLI](https://vercel.com/changelog/manage-vercel-toolbar-comments-from-the-cli)
- [vercel api](https://vercel.com/docs/cli/api) — Learn how to make authenticated HTTP requests to the Vercel API using the vercel api CLI command.
- [Integrations for Comments](https://vercel.com/docs/comments/integrations) — Learn how Comments integrates with Git providers like GitHub, GitLab, and Bitbucket, as well as the Vercel app for Slack
- [vercel changelog](https://vercel.com/docs/cli/changelog) — Read recent Vercel product updates and search the changelog from your terminal using the Vercel CLI.
- [vercel logs](https://vercel.com/docs/cli/logs) — View and filter runtime logs or CDN request records for your Vercel project.
- [vercel list](https://vercel.com/docs/cli/list) — Learn how to list out all recent deployments for the current Vercel Project using the vercel list CLI command.

Full cross-link map for this page: [/docs/cli/comments.graph.md](/docs/cli/comments.graph.md)
<!-- /docsgraph:related -->

## Usage

```bash filename="terminal"
vercel comments [subcommand]
```

*Manage comments for a project. Without a subcommand, \`vercel comments\` runs
\`list\`.*

## Scope and thread identifiers

The `list` command uses the linked project and filters by the current Git branch when it can infer one. Pass `--project` to select another project. Branch inference applies only when that project matches the current checkout. Use `--git-branch` or `--all-branches` to set the branch scope explicitly.

Commands that act on a thread accept its ID or full `vercel.com` comment URL. The URL's team is used unless you pass `--scope` or `--project`.

## Common options

These options apply across the `vercel comments` command:

| Option                       | Type    | Description                                               |
| ---------------------------- | ------- | --------------------------------------------------------- |
| `-p, --project <NAME_OR_ID>` | String  | Select project and team context by project name or ID.    |
| `--json`                     | Boolean | Output JSON. Available on every subcommand except `open`. |

## Commands

### list

`vercel comments list` lists unresolved comments by default. Because `list` is the default subcommand, you can omit it.

```bash filename="terminal"
vercel comments
vercel comments --all-branches --status all
vercel comments --scope my-team --project my-project --git-branch main
```

*Vercel CLI prints each thread's ID, age, author, page path, excerpt, and reply
summary.*

#### Options

| Option                  | Type    | Default                      | Description                                                                                                                             |
| ----------------------- | ------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `--git-branch <BRANCH>` | String  | Current branch when inferred | Filter by a Git branch. Repeat for multiple branches.                                                                                   |
| `--all-branches`        | Boolean | `false`                      | Include every branch. You can't combine this option with `--git-branch`.                                                                |
| `--status <STATUS>`     | String  | `unresolved`                 | Filter by `unresolved`, `resolved`, or `all`.                                                                                           |
| `--page-path <PATH>`    | String  | None                         | Filter by a recorded page path or glob. Repeat for multiple paths. Rewrites can cause the recorded path to differ from the browser URL. |
| `--author <USER>`       | String  | None                         | Filter by a user ID or `me`. Repeat for multiple authors. `me` requires user authentication, and usernames are not supported.           |
| `--content <CONTENT>`   | String  | None                         | Filter by a content management system (CMS) content ID. Repeat for multiple IDs.                                                        |
| `-q, --query <TEXT>`    | String  | None                         | Search comment content.                                                                                                                 |
| `-n, --limit <NUMBER>`  | Number  | `20`                         | Return 1 to 100 threads per page.                                                                                                       |
| `--next <CURSOR>`       | String  | None                         | Show the next page using the cursor from the previous output.                                                                           |

When another page is available, text output includes the `--next` command with the next cursor. JSON output returns the cursor as `pagination.next`.

### inspect

`vercel comments inspect` shows every message in a thread and its message ID. Pass the message ID to `update` or `delete`.

```bash filename="terminal"
vercel comments inspect [thread]
vercel comments inspect <thread> --context
```

If you omit `[thread]` in an interactive terminal, Vercel CLI lets you choose from unresolved comments for the linked project, filtered by the current branch when it can infer one. Pass `--context` to include framework and device details.

### open

`vercel comments open` opens a comment thread on `vercel.com` in your default browser.

```bash filename="terminal"
vercel comments open <thread>
```

### reply

`vercel comments reply` adds a Markdown reply to an existing thread. Provide the reply with `--message`, `--file`, or standard input.

```bash filename="terminal"
vercel comments reply <thread> --message 'Fixed in **main**.'
vercel comments reply <thread> --file ./reply.md
git log -1 --format=%s | vercel comments reply <thread>
```

*A successful reply prints a confirmation with the thread ID. JSON output
returns the created message object.*

#### Options

| Option             | Type   | Description                                                                                                    |
| ------------------ | ------ | -------------------------------------------------------------------------------------------------------------- |
| `--message <TEXT>` | String | Add Markdown message content.                                                                                  |
| `--file <PATH>`    | String | Read Markdown content from a file. Use `-` for standard input. You can't combine this option with `--message`. |
| `--attach <URL>`   | String | Attach a file by HTTPS URL. Repeat to attach up to 10 files. Local file uploads are not supported.             |

When an interactive terminal receives no content options or piped input, Vercel CLI prompts for a one-line message. Attachments can form a reply without message text.

### resolve and reopen

`vercel comments resolve` resolves threads, while `vercel comments reopen` marks resolved threads as unresolved. Both subcommands accept one or more thread IDs or URLs.

```bash filename="terminal"
# Resolve one thread
vercel comments resolve <thread>

# Add a closing reply, then resolve the thread
vercel comments resolve <thread> --message 'Fixed in the latest deployment.'

# Reopen multiple threads without a confirmation prompt
vercel comments reopen <thread-1> <thread-2> --yes
```

For multiple threads, Vercel CLI asks for confirmation in an interactive terminal. Pass `--yes` in non-interactive or JSON mode. You can add a closing reply with `--message` only when resolving one thread.

#### Options

| Option             | Type    | Applies to | Description                                                                                     |
| ------------------ | ------- | ---------- | ----------------------------------------------------------------------------------------------- |
| `--message <TEXT>` | String  | `resolve`  | Add a closing reply before resolving one thread. This option does not support multiple threads. |
| `-y, --yes`        | Boolean | Both       | Skip the confirmation prompt for multiple threads.                                              |

Bulk operations continue after an individual thread fails and exit with a nonzero status if any operation fails.

### update

`vercel comments update` replaces the Markdown content of a message. Run `vercel comments inspect <thread>` to find message IDs.

```bash filename="terminal"
vercel comments update <thread> <message-id> --message 'Updated wording'
vercel comments update <thread> <message-id> --file ./updated-reply.md
```

Pass the new Markdown content with `--message` or `--file`. You can't combine these options. Updating message content preserves existing attachments.

### delete

`vercel comments delete` removes a message from a thread. Run `vercel comments inspect <thread>` to find message IDs.

```bash filename="terminal"
vercel comments delete <thread> <message-id>
vercel comments delete <thread> <message-id> --yes
```

Deletion cannot be undone. The command asks for confirmation by default. Pass `--yes` in non-interactive or JSON mode.

## JSON output

Use `--json` with any subcommand except `open`. JSON output does not prompt for missing input or confirmation.

```bash filename="terminal"
vercel comments --json | jq '.threads[].id'
vercel comments inspect <thread> --json
```

JSON responses use the following shapes:

| Command                                      | Output                                                                  |
| -------------------------------------------- | ----------------------------------------------------------------------- |
| `list`                                       | An object with `scope`, `filters`, `pagination`, and `threads`.         |
| `inspect`                                    | The thread object with the complete `messages` array.                   |
| `reply` and `update`                         | The created or updated message object.                                  |
| `resolve` and `reopen` with one thread       | An object with `thread` and `replied`.                                  |
| `resolve` and `reopen` with multiple threads | An object with a `results` array containing the result for each thread. |
| `delete`                                     | An object containing the deleted message `id`.                          |

Validation and API errors in JSON mode return an `error` object with `code` and `message` fields and a nonzero exit status.

## Related

- [Comments overview](/docs/comments)
- [Using Comments](/docs/comments/using-comments)
- [Vercel CLI overview](/docs/cli)

## Global Options

The following [global options](/docs/cli/global-options) can be passed when using the `vercel comments` command:

- [`--cwd`](/docs/cli/global-options#current-working-directory)
- [`--debug`](/docs/cli/global-options#debug)
- [`--global-config`](/docs/cli/global-options#global-config)
- [`--help`](/docs/cli/global-options#help)
- [`--local-config`](/docs/cli/global-options#local-config)
- [`--no-color`](/docs/cli/global-options#no-color)
- [`--non-interactive`](/docs/cli/global-options#non-interactive)
- [`--scope`](/docs/cli/global-options#scope)
- [`--token`](/docs/cli/global-options#token)
- [`--version`](/docs/cli/global-options#version)

For more information on global options and their usage, refer to the [options section](/docs/cli/global-options).


---

[View full sitemap](/docs/sitemap)


If you encounter incorrect information, can’t find what you need, need a capability Vercel doesn’t currently offer, or have any other feedback to report, please do it by following the instructions at https://vercel.com/feedback.md.
