# What changed in @sentry/cli

> 39 changes in @sentry/cli 3 from its official release notes, upgrade guides and advisories: 6 breaking, 6 security, 8 new APIs and options. Each one cited. Sources checked 2026-10-20. HTML: https://unstale.sh/npm/@sentry/cli/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @sentry/cli 3

### Breaking changes

- The URL and non-embedded auth token are no longer combined when they come from different configuration files; configure them in the same file or through CLI arguments and environment variables. (3.6.2) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.6.2)
- The experimental flag was removed from build commands. (3.5.1) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.1)
- The experimental flag was removed from snapshots commands. (3.5.1) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.1)
- Events no longer send environment variables. (2.58.6, 3.4.3) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.3), [release notes](https://github.com/getsentry/sentry-cli/releases/tag/2.58.6)
- Rejects snapshot uploads with a PR number but no base SHA because comparisons require a base reference. (3.4.3) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.3)
- String and number options now validate input types, and array values are no longer flattened into separate CLI arguments. (3.4.2) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.2)

### Security

- Xcode Info.plist preprocessing is disabled by default during release inference; use this option only for trusted projects that require preprocessing. (2.58.6, 3.4.3) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.3), [release notes](https://github.com/getsentry/sentry-cli/releases/tag/2.58.6)
- TLS verification is disabled only when this setting is `false`, case-insensitively. (2.58.6, 3.4.3) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.3), [release notes](https://github.com/getsentry/sentry-cli/releases/tag/2.58.6)
- Generated arguments, including paths, tags, release names, and the CLI path, are shell-escaped. (2.58.6, 3.4.3) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.3), [release notes](https://github.com/getsentry/sentry-cli/releases/tag/2.58.6)
- Maintains restrictive file permissions when updating existing config files. (2.58.6, 3.4.3) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.3), [release notes](https://github.com/getsentry/sentry-cli/releases/tag/2.58.6)
- Verifies the downloaded binary checksum before replacing the current executable. (2.58.6, 3.4.3) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.3), [release notes](https://github.com/getsentry/sentry-cli/releases/tag/2.58.6)
- Snapshot uploads no longer send the Sentry auth token to Objectstore. (3.4.2) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.2)

### New APIs and options

- Adds PE DWARF companion support. (3.5.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.0)
- Adds a command for locally comparing directories of PNG snapshot images using odiff. (3.5.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.0)
- Adds a command for downloading baseline snapshot images from Sentry. (3.5.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.0)
- Adds a flag for detecting image removals and renames in selective builds. (3.5.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.0)
- Adds a flag for detecting image removals and renames in selective builds. (3.5.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.0)
- Adds Windows ARM64 PE unwind support. (3.5.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.0)
- Adds --selective to indicate that a snapshot upload contains only a subset of images. (3.4.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.0)
- Adds --exclude to specify custom glob patterns for excluding files or directories from source collection. (3.4.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.0)

### Performance

- The preprod snapshot manifest is compressed with zstd. (3.6.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.6.0)
- Skips uploading images that already exist in objectstore by batch-checking with HEAD requests first. (3.4.3) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.3)
- Image hashing is parallelized with rayon. (3.4.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.0)

### Behavior and default changes

- Snapshot images are uploaded to the objectstore usecase chosen by the server instead of a hardcoded one. (3.8.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.8.0)
- When multiple files strip to the same URL, subsequent duplicates are skipped with a warning pointing users to --exclude to scope the bundle to a single variant. (3.4.1) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.1)

### Tooling

- IPA uploads now support dSYM files. (3.7.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.7.0)
- Can run directly on a project root, collecting JVM source files while respecting .gitignore and excluding common build output directories. (3.4.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.0)

### Fixes and other changes

- Snapshot builds are created for selective uploads with no affected images when a complete filename manifest is provided. (3.7.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.7.0)
- Debug IDs are now generated by hashing both the JS and sourcemap bytes, preventing collisions between distinct JS files with identical sourcemaps. (3.6.1) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.6.1)
- Uses the new archive endpoint, triggering the archive build and polling until it is ready before downloading. (3.6.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.6.0)
- Shows a clear project-renamed error when uploading to a renamed project slug instead of a cryptic JSON parse failure. (3.6.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.6.0)
- The update nagger now shows when a newer version is available. (3.6.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.6.0)
- Respects this environment variable when configuring TLS certificate authorities. (3.5.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.0)
- Improves the error message shown when the organization slug is missing from configuration. (3.5.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.0)
- Respects this environment variable when configuring TLS certificate authorities. (3.5.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.5.0)
- Bundle URLs now strip the module and source-set path prefix so Symbolicator can resolve them from package-based stack traces. (3.4.1) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.1)
- Uploads are chunked to avoid file descriptor exhaustion and 413 errors when uploading hundreds of images. (3.4.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.0)
- When the progress bar is disabled, completion messages no longer produce spurious stderr output that some CI systems treat as errors. (3.4.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.0)
- Manifest keys preserve subdirectory structure instead of flattening paths to bare filenames. (3.4.0) — [release notes](https://github.com/getsentry/sentry-cli/releases/tag/3.4.0)
