Sentry sourcemaps upload fails with "Nothing to upload, all files are on the server" (v3 vs v2 regression)
BugCLI
### CLI Version
3.3.5
### Operating System and Architecture
- [ ] macOS (arm64)
- [ ] macOS (x86_64)
- [ ] Linux (i686)
- [ ] Linux (x86_64)
- [ ] Linux (armv7)
- [ ] Linux (aarch64)
- [ ] Windows (i686)
- [x] Windows (x86_64)
### Operating System Version
Windows 10
### Link to reproduction repository
_No response_
### CLI Command
sentry-cli releases new 0.0.21 --finalize && sentry-cli sourcemaps upload --release 0.0.21 --log-level=debug dist/client/
### Exact Reproduction Steps
### Steps to reproduce
1. Build the web app (production build output is generated)
2. Ensure sourcemaps are present in the build output
3. Create a new release: `sentry-cli releases new 0.0.21 --finalize`
4. Upload sourcemaps using CLI v3: `sentry-cli sourcemaps upload --release 0.0.21 --log-level=debug dist/client/`
5. Observe output showing detected files but no upload:
“Found 2 files”
“Bundled 2 files for upload”
“Nothing to upload, all files are on the server”
### Expected Results
### Problem
Sentry CLI sourcemaps upload works in version v2, but fails in v3 with the message:
`Nothing to upload, all files are on the server`
Despite valid build artifacts being present, sourcemaps are not actually uploaded.
**Expected behavior**
Sourcemaps should be detected and uploaded for the given release and correctly attached to the build output.
### Actual Results
### Actual behavior (v3)
CLI reports success but skips uploading files:
> Found 2 files
> Analyzing 2 sources
> Bundled 2 files for upload
> Bundle ID: 9a17c079-a87f-52c7-b5ca-bcc4649dcc01
...
> Nothing to upload, all files are on the server
> File upload complete (processing pending on server)
Files are detected, but upload is skipped.
### Working behavior (v2)
Same command in v2 successfully uploads sourcemaps.
### Logs
> sentry-cli sourcemaps upload --release 0.0.21 --dist 3 --log-level=debug dist/client/
INFO 2026-04-16 10:18:53.935373800 +03:00 Loaded config from C:\project\test-project\.sentryclirc
DEBUG 2026-04-16 10:18:53.937126500 +03:00 sentry-cli version: 3.3.5, platform: "windows", architecture: "x86_64"
INFO 2026-04-16 10:18:53.937648900 +03:00 sentry-cli was invoked with the following command line: "C:\project\test-project\node_modules\@sentry\cli-win32-x64\bin\sentry-cli.exe" "sourcemaps" "upload" "--release" "0.0.21" "--dist" "3" "--log-level=debug" "dist/client/"
DEBUG 2026-04-16 10:18:53.938440500 +03:00 using token authentication
DEBUG 2026-04-16 10:18:53.938564500 +03:00 retry number 0, max retries: 5
DEBUG 2026-04-16 10:18:54.156845800 +03:00 > GET /api/0/organizations/test-project/chunk-upload/ HTTP/1.1
DEBUG 2026-04-16 10:18:54.157103 +03:00 > Host: test-host
DEBUG 2026-04-16 10:18:54.157324 +03:00 > Accept: */*
DEBUG 2026-04-16 10:18:54.157505200 +03:00 > User-Agent: sentry-cli/3.3.5
DEBUG 2026-04-16 10:18:54.157832400 +03:00 > Authorization: Bearer a126b17c***
DEBUG 2026-04-16 10:18:54.224241500 +03:00 < HTTP/1.1 200 OK
DEBUG 2026-04-16 10:18:54.224536500 +03:00 < Content-Language: en
DEBUG 2026-04-16 10:18:54.224725900 +03:00 < Content-Length: 343
DEBUG 2026-04-16 10:18:54.224895900 +03:00 < Content-Security-Policy: frame-src 'self'; default-src 'self'; font-src 'self' data:; connect-src 'self' https://*.test.com; style-src 'self'; img-src 'self'; script-src 'self' https://*.test.com 'sha256-iRcDQ27XiXX4k+jbJ8nGeQFBnBOjmII7FdMlixb6QE4='
DEBUG 2026-04-16 10:18:54.225136100 +03:00 < Content-Type: application/json; charset=utf-8
DEBUG 2026-04-16 10:18:54.225380500 +03:00 < Cross-Origin-Opener-Policy: same-origin
DEBUG 2026-04-16 10:18:54.225536900 +03:00 < Referrer-Policy: same-origin
DEBUG 2026-04-16 10:18:54.225759600 +03:00 < Vary: Accept-Language, origin
DEBUG 2026-04-16 10:18:54.225927600 +03:00 < X-Content-Type-Options: nosniff
DEBUG 2026-04-16 10:18:54.226128600 +03:00 < X-Frame-Options: DENY
DEBUG 2026-04-16 10:18:54.226332 +03:00 < Date: Thu, 16 Apr 2026 07:18:53 GMT
DEBUG 2026-04-16 10:18:54.226634800 +03:00 body: {"url": "https://test-host/api/0/organizations/test-project/chunk-upload/", "chunkSize": 33554432, "chunksPerRequest": 1, "maxFileSize": 2147483648, "maxRequestSize": 33554432, "concurrency": 1, "hashAlgorithm": "sha1", "compression": ["gzip"], "accept": ["debug_files", "release_files", "pdbs", "sources", "artifact_bundles"]}
DEBUG 2026-04-16 10:18:54.228734500 +03:00 built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 6 required extensions, 0 regexes (from globset)
DEBUG 2026-04-16 10:18:54.231406700 +03:00 ignoring dist\client\(auth)\index.html: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.232745400 +03:00 ignoring dist\client\(main)\report.html: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.233302100 +03:00 ignoring dist\client\(team-info)\index.html: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.233540900 +03:00 ignoring dist\client\+not-found.html: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.234543700 +03:00 ignoring dist\client\assets\assets\fonts\UAFSans-Bold.cd1a186f9100e391bb59abff41cef3bf.ttf: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.234684800 +03:00 ignoring dist\client\assets\assets\fonts\UAFSans-Medium.dbfb26cea961c453d2de604698bdf95f.ttf: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.234813400 +03:00 ignoring dist\client\assets\assets\fonts\UAFSans-Regular.01702f904206d64e8db570a65c463ba2.ttf: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.234964100 +03:00 ignoring dist\client\assets\assets\fonts\UAFSans-SemiBold.44dd86e5e2b4f882bbe155341c2391b2.ttf: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.235496100 +03:00 ignoring dist\client\assets\assets\images\web-bg-dark.c30c95909328a1a2ba419e7696515644.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.235647600 +03:00 ignoring dist\client\assets\assets\images\web-bg-light.66d13458b7ea123a8cb74da7c493362b.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.236226700 +03:00 ignoring dist\client\assets\assets\rivs\logoloader.23cccfd47037be66839fd247fbb474c9.riv: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.238223700 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\back-icon-mask.0a328cd9c1afd0afe8e3b1ec5165b1b4.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.238406500 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\back-icon.35ba0eaec5a4f5ed12ca16fabeae451d.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.238538500 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.238673400 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@2x.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.238822100 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@3x.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.239002600 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@4x.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.239190700 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\close-icon.808e1b1b9b53114ec2838071a7e6daa7.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.239352400 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\close-icon.808e1b1b9b53114ec2838071a7e6daa7@2x.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.239501900 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\close-icon.808e1b1b9b53114ec2838071a7e6daa7@3x.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.239707600 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\close-icon.808e1b1b9b53114ec2838071a7e6daa7@4x.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.239911400 +03:00 ignoring dist\client\assets\node_modules\@react-navigation\elements\lib\module\assets\search-icon.286d67d3f74808a60a78d3ebf1a5fb57.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.241269600 +03:00 ignoring dist\client\assets\node_modules\expo-router\assets\arrow_down.017bc6ba3fc25503e5eb5e53826d48a8.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.241443200 +03:00 ignoring dist\client\assets\node_modules\expo-router\assets\error.d1ea1496f9057eb392d5bbf3732a61b7.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.241608200 +03:00 ignoring dist\client\assets\node_modules\expo-router\assets\file.19eeb73b9593a38f8e9f418337fc7d10.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.241758800 +03:00 ignoring dist\client\assets\node_modules\expo-router\assets\forward.d8b800c443b8972542883e0b9de2bdc6.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.241902200 +03:00 ignoring dist\client\assets\node_modules\expo-router\assets\pkg.ab19f4cbc543357183a20571f68380a3.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.242003200 +03:00 ignoring dist\client\assets\node_modules\expo-router\assets\sitemap.412dd9275b6b48ad28f5e3d81bb1f626.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.242260600 +03:00 ignoring dist\client\assets\node_modules\expo-router\assets\unmatched.20e71bdf79e3a97bf55fd9e164041578.png: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.242890600 +03:00 ignoring dist\client\favicon.ico: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.243087500 +03:00 ignoring dist\client\index.html: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.243222900 +03:00 ignoring dist\client\report.html: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.243719800 +03:00 ignoring dist\client\_expo\.routes.json: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.244432400 +03:00 ignoring dist\client\_expo\static\css\flatpickr-d83e7a34dff8a06185b652ea196b1a86.css: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.244617500 +03:00 ignoring dist\client\_expo\static\css\flatpickr.custom-f78b6f2aca200f8768fc1c9d7fd59968.css: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.244768600 +03:00 ignoring dist\client\_expo\static\css\tooltip.module-3cc0c718502094ddbe27e91944f89c3c.css: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.244920600 +03:00 ignoring dist\client\_expo\static\css\tourPopover.module-deeedf084cb45958e3bbab5fe837c080.css: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
DEBUG 2026-04-16 10:18:54.245789 +03:00 whitelisting dist\client\_expo\static\js\web\entry-bc340e1ddab57b3524d320791687b96c.js: Whitelist(IgnoreMatch(Types(Glob(Matched { def: FileTypeDef { name: "js", globs: ["*.js"] } })))) (from ignore)
INFO 2026-04-16 10:18:54.245961500 +03:00 found: dist\client\_expo\static\js\web\entry-bc340e1ddab57b3524d320791687b96c.js (4905792 bytes)
DEBUG 2026-04-16 10:18:54.248703100 +03:00 whitelisting dist\client\_expo\static\js\web\entry-bc340e1ddab57b3524d320791687b96c.js.map: Whitelist(IgnoreMatch(Types(Glob(Matched { def: FileTypeDef { name: "map", globs: ["*.map"] } })))) (from ignore)
INFO 2026-04-16 10:18:54.248932 +03:00 found: dist\client\_expo\static\js\web\entry-bc340e1ddab57b3524d320791687b96c.js.map (16500143 bytes)
DEBUG 2026-04-16 10:18:54.258584500 +03:00 ignoring dist\client\_sitemap.html: Ignore(IgnoreMatch(Types(Glob(UnmatchedIgnore)))) (from ignore)
> Found 2 files
> Analyzing 2 sources
> Analyzing completed in 0.022s
> Rewriting sources
> Rewriting completed in 0.303s
> Adding source map references
> Bundling completed in 0.776s
> Bundled 2 files for upload
> Bundle ID: 9a17c079-a87f-52c7-b5ca-bcc4649dcc01
> Optimizing completed in 0.016s
DEBUG 2026-04-16 10:18:55.385774300 +03:00 using token authentication
DEBUG 2026-04-16 10:18:55.386018700 +03:00 json body: {"checksum":"b57daa65775a26559b53ec965a841ca1c1e01ab0","chunks":["b57daa65775a26559b53ec965a841ca1c1e01ab0"],"projects":["test-project-web"],"version":"0.0.21","dist":"3"}
DEBUG 2026-04-16 10:18:55.386359700 +03:00 retry number 0, max retries: 5
DEBUG 2026-04-16 10:18:55.387004200 +03:00 > POST /api/0/organizations/test-project/artifactbundle/assemble/ HTTP/1.1
DEBUG 2026-04-16 10:18:55.387190400 +03:00 > Host: test-host
DEBUG 2026-04-16 10:18:55.387362800 +03:00 > Accept: */*
DEBUG 2026-04-16 10:18:55.387486500 +03:00 > User-Agent: sentry-cli/3.3.5
DEBUG 2026-04-16 10:18:55.387654600 +03:00 > Authorization: Bearer a126b17c***
DEBUG 2026-04-16 10:18:55.387846300 +03:00 > Content-Type: application/json
DEBUG 2026-04-16 10:18:55.387968300 +03:00 > Content-Length: 171
DEBUG 2026-04-16 10:18:55.489722600 +03:00 < HTTP/1.1 200 OK
DEBUG 2026-04-16 10:18:55.490044 +03:00 < Content-Language: en
DEBUG 2026-04-16 10:18:55.490352900 +03:00 < Content-Length: 41
DEBUG 2026-04-16 10:18:55.490525700 +03:00 < Content-Security-Policy: frame-src 'self'; default-src 'self'; font-src 'self' data:; connect-src 'self' https://*.test.com; style-src 'self'; img-src 'self'; script-src 'self' https://*.test.com 'sha256-iRcDQ27XiXX4k+jbJ8nGeQFBnBOjmII7FdMlixb6QE4='
DEBUG 2026-04-16 10:18:55.490724400 +03:00 < Content-Type: application/json; charset=utf-8
DEBUG 2026-04-16 10:18:55.490911700 +03:00 < Cross-Origin-Opener-Policy: same-origin
DEBUG 2026-04-16 10:18:55.491102600 +03:00 < Referrer-Policy: same-origin
DEBUG 2026-04-16 10:18:55.491295100 +03:00 < Vary: Accept-Language, origin
DEBUG 2026-04-16 10:18:55.491491400 +03:00 < X-Content-Type-Options: nosniff
DEBUG 2026-04-16 10:18:55.491641 +03:00 < X-Frame-Options: DENY
DEBUG 2026-04-16 10:18:55.491782900 +03:00 < Date: Thu, 16 Apr 2026 07:18:54 GMT
DEBUG 2026-04-16 10:18:55.491961 +03:00 body: {"state": "created", "missingChunks": []}
> Nothing to upload, all files are on the server
DEBUG 2026-04-16 10:18:55.492711800 +03:00 using token authentication
DEBUG 2026-04-16 10:18:55.492816800 +03:00 json body: {"checksum":"b57daa65775a26559b53ec965a841ca1c1e01ab0","chunks":["b57daa65775a26559b53ec965a841ca1c1e01ab0"],"projects":["test-project-web"],"version":"0.0.21","dist":"3"}
DEBUG 2026-04-16 10:18:55.492922500 +03:00 retry number 0, max retries: 5
DEBUG 2026-04-16 10:18:55.493198700 +03:00 > POST /api/0/organizations/test-project/artifactbundle/assemble/ HTTP/1.1
DEBUG 2026-04-16 10:18:55.493285500 +03:00 > Host: test-host
DEBUG 2026-04-16 10:18:55.493390400 +03:00 > Accept: */*
DEBUG 2026-04-16 10:18:55.493470700 +03:00 > User-Agent: sentry-cli/3.3.5
DEBUG 2026-04-16 10:18:55.493566800 +03:00 > Authorization: Bearer a126b17c***
DEBUG 2026-04-16 10:18:55.493645800 +03:00 > Content-Type: application/json
DEBUG 2026-04-16 10:18:55.493738600 +03:00 > Content-Length: 171
DEBUG 2026-04-16 10:18:55.590060 +03:00 < HTTP/1.1 200 OK
DEBUG 2026-04-16 10:18:55.590235400 +03:00 < Content-Language: en
DEBUG 2026-04-16 10:18:55.590327800 +03:00 < Content-Length: 41
DEBUG 2026-04-16 10:18:55.590449600 +03:00 < Content-Security-Policy: frame-src 'self'; default-src 'self'; font-src 'self' data:; connect-src 'self' https://*.test.com; style-src 'self'; img-src 'self'; script-src 'self' https://*.test.com 'sha256-iRcDQ27XiXX4k+jbJ8nGeQFBnBOjmII7FdMlixb6QE4='
DEBUG 2026-04-16 10:18:55.590582 +03:00 < Content-Type: application/json; charset=utf-8
DEBUG 2026-04-16 10:18:55.590683600 +03:00 < Cross-Origin-Opener-Policy: same-origin
DEBUG 2026-04-16 10:18:55.590791100 +03:00 < Referrer-Policy: same-origin
DEBUG 2026-04-16 10:18:55.590885400 +03:00 < Vary: Accept-Language, origin
DEBUG 2026-04-16 10:18:55.591003700 +03:00 < X-Content-Type-Options: nosniff
DEBUG 2026-04-16 10:18:55.591146600 +03:00 < X-Frame-Options: DENY
DEBUG 2026-04-16 10:18:55.591264800 +03:00 < Date: Thu, 16 Apr 2026 07:18:54 GMT
DEBUG 2026-04-16 10:18:55.591384 +03:00 body: {"state": "created", "missingChunks": []}
> Processing completed in 0.099s
> File upload complete (processing pending on server)
> Organization: test-project
> Projects: test-project-web
> Release: 0.0.21
> Dist: 3
> Upload type: artifact bundle
Source Map Upload Report
Scripts
~/_expo/static/js/web/entry-bc340e1ddab57b3524d320791687b96c.js (sourcemap at entry-bc340e1ddab57b3524d320791687b96c.js.map, debug id 55d28553-1064-4ca8-8580-6be529c4ba38)
Source Maps
~/_expo/static/js/web/entry-bc340e1ddab57b3524d320791687b96c.js.map (debug id 55d28553-1064-4ca8-8580-6be529c4ba38)
INFO 2026-04-16 10:18:55.598286500 +03:00 Skipping update nagger update check
关闭于 2026-04-18 6 条评论