---
schema_version: 1
route: /t/sentry-cli.md
tool: "sentry-cli"
---

# sincecutoff.com /t/sentry-cli — Sentry CLI

- name: Sentry CLI
- kind: cli
- children: none
- homepage: <https://docs.sentry.io/cli/>

Changes to the tools coding agents drive, since a model's training cutoff, each linked to its first-party source. Check installed versions and limitations before acting; a cutoff date does not establish what a model knows.
Original editorial content: [Apache 2.0](https://sincecutoff.com/v1/data-license.txt), by [0xPatrick](https://0xpatrick.dev). Preserve applicable license and [NOTICE](https://sincecutoff.com/notice.txt) attribution when redistributing. Third-party source text and examples retain their own rights. [License scope and attribution](https://sincecutoff.com/v1/license.json).
To stay current, read the changes feed: [`/v1/changes.md?tool=sentry-cli`](https://sincecutoff.com/v1/changes.md?tool=sentry-cli) (or `.json`), adding `since=YYYY-MM-DD` for your training cutoff. Entries for registered children are included; the registry itself is `/v1/tools.json`. How to page and save your place: [llms.txt](https://sincecutoff.com/llms.txt).

### sentry-cli build upload adds dSYM support for IPA files (2026-08-28)
- slug: sentry-cli-build-upload-adds-dsym-support-for-ipa-files-69f7d7409904
- score: 0.98

How to use it:

When uploading an IPA with dSYM bundles, run `sentry-cli build upload` with `--dsym <PATH>` for each bundle, directory, or ZIP to include. This option is documented for IPA uploads.

Examples:

```
sentry-cli build upload <ipa-path> --dsym <dsym-path>
```

- why_it_matters: Upload an IPA with its app debug symbols using the sentry-cli build command.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.7.0>, <https://github.com/getsentry/sentry-cli/pull/3393>, <https://github.com/getsentry/sentry-cli/blob/3.7.0/tests/integration/_cases/build/build-upload-help-macos.trycmd>
- gotchas: "Version: 3.7.0"; "<PATH> (required): Path to the build to upload; supported types include IPA."; "--dsym <PATH>: Path to a dSYM bundle, directory containing dSYM bundles, or ZIP of either to include with an IPA upload. May be repeated."; "Prerequisite: The build upload feature only works with Sentry SaaS."; "The option applies to IPA uploads through the `build` command."

### sentry-cli snapshots diff compares PNG snapshot directories (2026-06-02)
- slug: sentry-cli-snapshots-diff-compares-png-snapshot-directories-c539bf723a10
- score: 0.97

How to use it:

When comparing two local PNG snapshot directories, run `sentry-cli snapshots diff <base-dir> <head-dir>`; the command compares them using odiff.

Examples:

```
sentry-cli snapshots diff <base-dir> <head-dir>
```

- why_it_matters: Compare two directories of PNG snapshot images locally.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.5.0>, <https://blog.sentry.io/snapshots-available-beta/>
- gotchas: "Version: 3.5.0"; "<base-dir> (required): Path to the base snapshot directory."; "<head-dir> (required): Path to the local snapshot directory to compare against the base."; "--fail-on-diff: Used in the documented local verification invocation; its effect is not described on the official page found."; "--selective: Used in the documented local verification invocation; its effect is not described on the official page found."; "Compares directories of PNG snapshot images locally."

### sentry-cli snapshots download fetches Sentry baselines (2026-06-02)
- slug: sentry-cli-snapshots-download-fetches-sentry-baselines-b731f5361c77
- score: 0.92

How to use it:

When the repository needs Sentry baseline images, run `sentry-cli snapshots download` with the app ID and branch. The release note confirms the command downloads baseline snapshot images; the official release page does not document its flags.

- why_it_matters: Download baseline snapshot images from Sentry for a repository's snapshot workflow.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.5.0>
- gotchas: "Version: 3.5.0"

### sentry-cli snapshots upload detects removals and renames in selective builds (2026-06-02)
- slug: sentry-cli-snapshots-upload-detects-removals-and-renames-in-selective-builds-07ecc105aa47
- score: 0.90

How to use it:

For a selective snapshot build, supply the full test suite's image names to detect removals and renames. Run `sentry-cli snapshots upload <image-dir> --app-id <app-id>` with either `--all-image-file-names <comma-separated-names>` or `--all-image-file-names-file <path>`; each flag enables selective mode.

Examples:

```
sentry-cli snapshots upload <image-dir> --app-id <app-id> --all-image-file-names '<image1>,<image2>'
```

```
sentry-cli snapshots upload <image-dir> --app-id <app-id> --all-image-file-names-file <names-file>
```

- why_it_matters: Upload snapshots from a selective build while detecting removed or renamed images.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.5.0>, <https://github.com/getsentry/sentry-cli/blob/3.5.0/src/commands/snapshots/upload.rs>
- gotchas: "Version: 3.5.0"; "<image-dir> (required): Directory containing images to upload."; "--app-id <app-id> (required): Application identifier."; "--all-image-file-names <names>: Comma-separated full-suite image names, including subdirectory paths; enables selective mode and detects removals and renames. Mutually exclusive with `--all-image-file-names-file`."; "--all-image-file-names-file <path>: File path containing full-suite image names, including subdirectory paths, one per line; enables selective mode and detects removals and renames. Mutually exclusive with `--all-image-file-names`."; "The flags apply to selective builds."

### sentry-cli release inference disables Xcode Info.plist preprocessing by default (2026-05-21)
- slug: sentry-cli-release-inference-disables-xcode-info-plist-preprocessing-by-default-5afe8ad4f083
- score: 0.97

How to use it:

When Xcode release auto-discovery needs Info.plist preprocessing, run `sentry-cli releases propose-version --allow-xcode-infoplist-preprocessing` only for a trusted project; otherwise use the default, which disables preprocessing. The same flag is documented in `send-event`; the release note also names `bash-hook --send-event` and `react-native xcode` as affected.

Examples:

```
sentry-cli releases propose-version --allow-xcode-infoplist-preprocessing
```

```
sentry-cli send-event --allow-xcode-infoplist-preprocessing
```

- why_it_matters: Infer a release from an Xcode project using sentry-cli.
- before: Allow Xcode `Info.plist` preprocessing by default during release auto-discovery.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/2.58.6>, <https://github.com/getsentry/sentry-cli/blob/2.58.6/src/commands/releases/propose_version.rs>, <https://github.com/getsentry/sentry-cli/blob/2.58.6/src/commands/send_event.rs>, <https://github.com/getsentry/sentry-cli/blob/2.58.6/src/utils/args.rs>
- gotchas: "Version: 2.58.6"; "--allow-xcode-infoplist-preprocessing: Boolean flag; allows Info.plist preprocessing with `cc`, passing Xcode project settings to the compiler. Do not use with untrusted code."; "Prerequisite: Use the flag only for trusted projects that require preprocessing."; "Preprocessing is enabled only when `--allow-xcode-infoplist-preprocessing` is used for a trusted project that requires it."; "The change affects release inference for `sentry-cli releases propose-version`, `sentry-cli send-event`, `sentry-cli bash-hook --send-event`, and auto-release detection for `sentry-cli react-native xcode`."

### sentry-cli build snapshots adds --selective (2026-04-20)
- slug: sentry-cli-build-snapshots-adds-selective-036a8fc393f4
- score: 0.92

How to use it:

When the snapshot directory contains only a subset of images, run `sentry-cli build snapshots` with `--selective` to mark the upload as selective. On PRs, removals and renames cannot be detected for selective uploads.

Examples:

```
sentry-cli build snapshots <IMAGE_DIRECTORY> --app-id <APP_ID> --project <PROJECT_SLUG> --selective
```

- why_it_matters: When building a snapshot upload that contains only a subset of images, mark it as selective.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.4.0>, <https://github.com/getsentry/sentry-cli/blob/3.4.0/src/commands/build/snapshots.rs>, <https://github.com/EmergeTools/SnapshotPreviews/blob/main/README.md>
- gotchas: "Version: 3.4.0"; "<IMAGE_DIRECTORY> (required): Path to the folder containing images to upload."; "--app-id <APP_ID> (required): Application identifier."; "--project <PROJECT_SLUG> (required): Project selection; the command accepts the shared project argument."; "--selective: Marks the upload as containing only a subset of images; removals and renames cannot be detected on PRs."; "Prerequisite: Use sentry-cli 3.4.0 or later."; "Prerequisite: The command requires an authenticated Sentry CLI session to upload snapshots."; "Use this flag when the upload contains only a subset of images."

### sentry-cli bundle-jvm collects JVM sources from project roots (2026-04-20)
- slug: sentry-cli-bundle-jvm-collects-jvm-sources-from-project-roots-d6c44ec0ee25
- score: 0.97

How to use it:

When bundling JVM sources from a project root, run `sentry-cli debug-files bundle-jvm` with the required input directory, output directory, and debug UUID; repeat `--exclude` for custom glob patterns. The v3.4.0 source also collects extensions beyond those listed in the release note, so the supported extension set is not fully documented here.

Examples:

```
sentry-cli debug-files bundle-jvm <project-root> --output <output-dir> --debug-id <UUID> --exclude '<glob-pattern>'
```

- why_it_matters: Bundle JVM sources from a project root, including a multi-module repository, while excluding files or directories that match custom glob patterns.
- before: Do not run `bundle-jvm` directly on a project root.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.4.0>, <https://raw.githubusercontent.com/getsentry/sentry-cli/3.4.0/src/commands/debug_files/bundle_jvm.rs>
- gotchas: "Version: 3.4.0"; "PATH (required): Directory containing source files to bundle."; "--output PATH (required): Output folder; command writes a ZIP named with the debug UUID."; "--debug-id UUID (required): Debug ID used for the source bundle."; "--exclude PATTERN: Glob pattern for files/directories to exclude; can be repeated."; "Prerequisite: Use sentry-cli version 3.4.0 or later for the project-root collection and `--exclude` changes."; "Prerequisite: The input path must exist and be a directory."; "Automatic collection is limited to JVM source files with the listed extensions."; "The collection respects `.gitignore` and excludes common build output directories."; "Docs conflict: The release note lists `.java`, `.kt`, `.scala`, and `.groovy`; the v3.4.0 source's extension list additionally includes `.sc`, `.gvy`, `.gy`, `.gsh`, `.clj`, and `.cljc`. This difference is not used to override the release note."

### sentry-cli build download retrieves installable builds by build ID (2026-03-25)
- slug: sentry-cli-build-download-retrieves-installable-builds-by-build-id-ea1187fdcbd2
- score: 0.92

How to use it:

When the build is installable, run `sentry-cli build download --build-id <build_id>` to save its IPA or APK in the current directory. The command is experimental and requires an organization-scoped context and an `org:read` personal token.

Examples:

```
sentry-cli build download --build-id <build_id>
```

- why_it_matters: Download an installable IPA or APK build by its build ID while working on a mobile app repository.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.3.4>, <https://github.com/getsentry/sentry-cli/pull/3221/files>, <https://github.com/getsentry/sentry-cli/pull/3221>
- gotchas: "Version: 3.3.4"; "--build-id <build_id> (-b) (required): ID of the build to download."; "--org <ORG> (-o): Organization ID or slug; select the organization for the build."; "--output <output>: Output file path; defaults to `preprod_artifact_<build_id>.<ext>` in the current directory (`ipa` or `apk`)."; "Prerequisite: Requires a personal auth token with the `org:read` scope."; "Prerequisite: Only installable builds can be downloaded; the command is marked experimental."; "Downloads installable builds in IPA or APK format."; "Requires a build ID."

### sentry-cli code-mappings upload bulk uploads repository code mappings (2026-03-25)
- slug: sentry-cli-code-mappings-upload-bulk-uploads-repository-code-mappings-763f99ba978f
- score: 0.93

How to use it:

When configuring repository code mappings, create a nonempty JSON array of mappings with nonempty `stackRoot` and `sourceRoot` values, then run `sentry-cli code-mappings upload <PATH>` for the target organization. Repository and default branch can be inferred from local Git; set `--repo` and `--default-branch` explicitly when needed.

Examples:

```
sentry-cli code-mappings upload <PATH> --org <ORG>
```

```
sentry-cli code-mappings upload <PATH> --org <ORG> --repo <OWNER/REPO> --default-branch <BRANCH>
```

```
[{"stackRoot":"com/example/module","sourceRoot":"src/main/java/com/example/module"}]
```

- why_it_matters: Configure Sentry code mappings for a repository so error stack traces can show source context and link to code.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.3.4>, <https://github.com/getsentry/sentry-cli/pull/3207/files>, <https://github.com/getsentry/sentry-cli/pull/3208>
- gotchas: "Version: 3.3.4"; "PATH (required): Path to a JSON file containing a nonempty array of code mappings; each mapping requires nonempty `stackRoot` and `sourceRoot`."; "--org (required): Organization ID or slug."; "--repo: Repository name, e.g. `owner/repo`; defaults to the Git remote."; "--default-branch: Default branch name; shown with default `main`."; "stackRoot (required): Stack trace path root to map; must not be empty."; "sourceRoot (required): Corresponding source path in the repository; must not be empty."; "Prerequisite: Use an authenticated Sentry CLI invocation; the command accepts `--auth-token <AUTH_TOKEN>`."; "Prerequisite: When repo and branch are inferred, the CLI uses the configured VCS remote first, then best-effort remote detection: upstream, origin, then first remote."; "Mappings link stack trace paths to source paths in the repository."; "Large mapping files are automatically split into batches for upload."

### sentry-cli preprod snapshots upload adds VCS parameters (2026-03-10)
- slug: sentry-cli-preprod-snapshots-upload-adds-vcs-parameters-53b3aa03b446
- score: 0.94

How to use it:

When uploading preprod snapshots, use `build snapshots upload` and provide VCS metadata with the documented flags; the command also supports automatic metadata collection in most CI environments.

Examples:

```
sentry-cli build snapshots upload --org <org> --project <project> <path> --app-id <app-id> --head-sha <head-sha> --base-sha <base-sha> --vcs-provider <provider> --head-repo-name <owner/repo> --base-repo-name <owner/repo> --head-ref <branch> --base-ref <branch> --pr-number <number>
```

```
sentry-cli build snapshots upload --org <org> --project <project> <path> --app-id <app-id>
```

- why_it_matters: Upload preprod build snapshots with VCS metadata from a coding repository.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.3.2>, <https://github.com/getsentry/sentry-cli/pull/3200>, <https://github.com/getsentry/sentry-cli/blob/3.3.2/src/commands/build/snapshots.rs>, <https://github.com/getsentry/sentry-cli/blob/3.3.2/src/utils/args.rs>
- gotchas: "Version: 3.3.2"; "Availability: preprod"; "PATH (required): Folder containing images to upload."; "--app-id APP_ID (required): Application identifier."; "--org ORG / --project PROJECT: Organization ID/slug and project ID/slug; command resolves them from configuration if omitted."; "--head-sha SHA: VCS commit SHA; defaults to current commit."; "--base-sha SHA: Base VCS commit SHA; defaults to merge base of current and remote branch."; "--vcs-provider PROVIDER: VCS provider; defaults to current provider."; "--head-repo-name NAME: Head git repository name, e.g. `organization/repository`; defaults to current repository."; "--base-repo-name NAME: Base git repository name, e.g. `organization/repository`; defaults to current repository."; "--head-ref REF: Head branch/reference; defaults to current reference."; "--base-ref REF: Base branch/reference; defaults to merge base with remote tracking branch."; "--pr-number NUMBER: Pull request number; auto-detected in GitHub Actions pull_request workflows when omitted."; "--force-git-metadata: Force collection and sending of git metadata; conflicts with `--no-git-metadata`."; "--no-git-metadata: Disable collection and sending of git metadata; conflicts with `--force-git-metadata`."; "Prerequisite: Authenticate with a Sentry CLI configuration/token and select an organization and project; organization/project may come from config."; "Prerequisite: The command is marked experimental and may have breaking changes or be removed in any Sentry CLI release."

### sentry-cli proguard uuid computes mapping-file UUIDs (2026-03-04)
- slug: sentry-cli-proguard-uuid-computes-mapping-file-uuids-80bc1575f50f
- score: 0.90

How to use it:

When debugging a Sentry upload and you have a ProGuard mapping file, run `sentry-cli proguard uuid <PATH>` to compute and print its UUID.

Examples:

```
sentry-cli proguard uuid <PATH>
```

- why_it_matters: Inspect a ProGuard mapping file while debugging a Sentry upload.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.3.0>
- gotchas: "Version: 3.3.0"; "<PATH> (required): Path to the ProGuard mapping file."

### sentry-cli JavaScript API releases.newDeploy() supports multiple projects (2026-01-12)
- slug: sentry-cli-javascript-api-releases-newdeploy-supports-multiple-projects-09ac4cb8bbac
- score: 0.95

How to use it:

When creating a deployment release for multiple projects through the JavaScript API, pass `projects: [<project-slug>, ...]` in the options argument to `releases.newDeploy()`.

Examples:

```
await cli.releases.newDeploy('<release-version>', { projects: ['<project-slug-1>', '<project-slug-2>'], env: '<environment>' });
```

- why_it_matters: Create a deployment release for multiple Sentry projects through the JavaScript API.
- before: Before this change, `newDeploy()` did not support a `projects` option; the API change added project flag forwarding for deployments.
- sources: <https://github.com/getsentry/sentry-cli/releases/tag/3.1.0>, <https://github.com/getsentry/sentry-cli/pull/3001>
- gotchas: "Version: 3.1.0"; "projects: Array of project slugs to deploy the release to; if omitted, the deployment is created for all projects associated with the release."; "release (required): First argument to `newDeploy`; release version string."; "env: Deployment environment; passed as `--env`."
