Skip to main content

Sonatype Nexus Repository 3.95.0 – 3.95.4 Release Notes

The Sonatype Nexus Repository 3.95.x release line includes exciting new features, enhancements, and bug fixes. Learn more in the sections below!

Release Timeline

  • 3.95.0 – August 5, 2026

  • 3.95.1 – August 13, 2026

  • 3.95.2 – August 21, 2026

  • 3.95.3 – August 27, 2026

  • 3.95.4 - September 12, 2026

Check Known Issues Before Upgrading

This version line contains known issues

Before upgrading, see the Known Issues & Upgrade Guidance section at the end of these release notes to determine whether any known issues or upgrade recommendations apply to your environment.

What’s New and Noteworthy in This Release?

The Sonatype Nexus Repository 3.95.x release line includes the following new features and enhancements:

Added Support for Composer Hosted and Group Repositories

Sonatype Nexus Repository now provides hosted and group repository support for Composer, completing its native support for the PHP package ecosystem. In addition to existing proxy repository support, you can now host your own Composer packages, aggregate hosted and proxy repositories into a single group repository, and manage PHP artifacts alongside the rest of your organization's open source and internal components.

For full details, see the Composer Repositories help documentation.

NuGet Hosted, Proxy, and Group Repositories Support Chocolatey Registry and Microsoft Symbol Server

Sonatype Nexus Repository now offers broader support for NuGet ecosystems by adding compatibility with Chocolatey registries and .NET symbol packages. You can now proxy and host Chocolatey packages with NuGet repositories and expose them through group repositories, giving developers a single endpoint for accessing both standard NuGet and Chocolatey packages. This simplifies repository management while making it easier to distribute and consume Windows software packages across your organization.

Nexus Repository also now supports .snupkg symbol packages and the Microsoft Symbol Server Protocol (SymSrv/SSQP), enabling on-demand delivery of Portable PDB (.pdb) files to supported debuggers. Symbol server functionality is available for hosted, proxy, and group NuGet repositories, helping development teams improve debugging workflows while managing application packages and debugging symbols from a single repository platform.

For full details, see the NuGet Repositories help documentation.

Hugging Face Proxy Repositories now Support the Latest huggingface_hub Client Workflows

Sonatype Nexus Repository now supports the latest Hugging Face client workflows by adding compatibility with the /tree/ API endpoint and inbound Bearer token authentication. These enhancements restore compatibility with the official huggingface_hub Python library versions 1.0 and later, including the changes introduced in version 1.22 that require the /tree/ endpoint for snapshot_download() and hf download.

Nexus Repository also supports the Bearer token authentication model used by newer versions of the client, eliminating the need to rely on legacy Basic authentication.

PyPI Proxy Repository Enhancements Improve Compatibility with Private and Version-Specific Repositories

PyPI proxy repositories now support repository-specific URL encoding rules, allowing you to apply format-specific behavior where needed. For example, PyPI repositories that use PEP 440 local version identifiers can encode + as %2B without affecting other repository formats. Existing global URL encoding configurations continue to work unchanged, so no action is required for current deployments.

Nexus Repository also now supports preemptive authentication for PyPI proxy repositories. This enhancement enables successful proxying of private PyPI repositories that do not issue authentication challenges, including GitLab.com-hosted PyPI repositories. Together, these improvements simplify integration with private package registries and help ensure more reliable access to Python dependencies across diverse repository implementations.

Improvements to the Nexus One UI

The Nexus One UI includes a broad set of usability, accessibility, and reliability improvements across core workflows. This release completes support for task management in the Nexus One UI, allowing you to configure, schedule, run, monitor, and manage all supported task types without switching to the legacy interface. Task configuration forms now provide a more consistent experience across task types while preserving compatibility with existing task definitions. Configuration created in either interface remains synchronized, making it easier to transition between experiences during adoption.

This release also improves the overall Nexus One UI experience with refinements to navigation, search, dashboard, browsing, and user management workflows. Updates include improved accessibility, more consistent interface behavior, clearer feedback throughout common tasks, and continued modernization of the underlying UI architecture. Together, these enhancements provide a more polished and reliable experience while establishing a stronger foundation for future Nexus One UI improvements.

Amazon ECR Proxy Repositories Now Support Temporary AWS Credentials

Sonatype Nexus Repository now supports temporary AWS credentials for Amazon ECR proxy repositories, making it easier to authenticate with modern AWS identity services. You can now configure an optional AWS session token alongside your AWS access key and secret key, enabling authentication with credentials issued by AWS Security Token Service (STS) and AWS IAM Identity Center (SSO). Existing configurations that use long-lived AWS access keys continue to work without changes.

Expanded Instance Migrator Support for Ansible Galaxy, OCI, and Terraform (Instance Migrator 1.1.28)

Sonatype Nexus Repository Instance Migrator release 1.1.28 adds support for Ansible Galaxy and OCI formats, expanding the range of repository formats you can include when moving content between Nexus Repository instances. This enhancement helps reduce manual migration work when your environment includes these formats.

Instance Migrator also adds support for Terraform state files. You can now use Terraform-managed state directly as a migration source, making it easier to migrate environments that rely on Terraform for infrastructure management without first converting or manually preparing the state data.

Firewall Success Metrics Dashboard

Sonatype Repository Firewall now includes a new Firewall Success Metrics dashboard in Enterprise Reporting, giving organizations a clearer understanding of how effectively Firewall protects their software supply chain. By bringing key operational and security insights together in one place, the dashboard helps teams measure the impact of their security policies, identify trends in component risk, and determine whether quarantine workflows are reducing exposure to malicious or vulnerable components. At a glance, teams can monitor metrics such as component evaluations, quarantines, malicious component detections, waivers, and quarantine response times to understand how Firewall is performing over time.

image-20260702-114154.png

With greater visibility into Firewall activity, security, platform, and engineering teams can make more informed decisions about policy tuning, prioritize response efforts, and demonstrate the value of their software supply chain security program. Interactive filtering and detailed reporting make it easier to investigate quarantine trends, understand why components are blocked, monitor waiver usage, and identify opportunities to reduce review times and continuously improve how open source risk is managed across the organization.

For full details, see the Firewall Success Metrics Dashboard help documentation.

Configure the Firewall for Docker Layer Download Timeout

Sonatype Nexus Repository now lets you configure the timeout used by Firewall for Docker when downloading container image layers during policy evaluation. Previously, this timeout was fixed at 10 minutes, which could prevent image evaluation from completing in environments where legitimate network conditions, such as proxy-based antivirus scanning or other network inspection, significantly increase download times. You can now adjust the timeout to up to 240 minutes by setting the nexus.firewall.container.download.timeout.minutes system property to better accommodate your environment while maintaining Firewall for Docker protection for large or slow-to-download images.

Cleanup Policy Enhancements

Note

A known issue with the Retain last N versions cleanup policy was fixed in Nexus Repository 3.95.4 and 3.96.1.

Nexus Repository provides more flexible cleanup policy management to help control repository growth across a wider range of package formats. The Retain last N versions capability is now available for all versioned repository formats that support version semantics. For the newly supported formats, this capability is available exclusively in the Nexus One UI.

Note also that this feature requires a Pro license and self-hosted deployments must use a PostgreSQL database. It is not supported for H2 databases or in Community Edition deployments.

Supported formats include:

  • Apt

  • Docker

  • Go

  • Helm

  • Maven

  • npm

  • NuGet

  • Pub

  • PyPI

  • RubyGems

  • Swift

  • Terraform

  • Yum

This enhancement helps organizations with high-volume CI/CD pipelines manage storage growth consistently across repositories without relying on custom automation.

Cleanup policy administration is also more streamlined. You can now assign a cleanup policy to multiple repositories directly from the policy configuration, view associated repositories in one place, and preview cleanup behavior across those repositories without editing each repository individually.

In addition, Nexus Repository introduces new cleanup policy REST API functionality for targeted cleanup execution, allowing you to run cleanup for a single repository on demand. The API supports synchronous dry runs that report the number of matching components and asynchronous cleanup execution with status tracking, giving administrators greater control over cleanup operations while avoiding repository-wide scheduled runs.

Bug Fixes

The tables below detail notable bug fixes in each release within this release line.

3.95.4 Bug Fixes

Issue ID

Description

NEXUS-54915

The Retain N versions cleanup policy now uses correctly normalized component versions when ranking pre-release components, preventing newer versions from being selected for deletion while older versions are retained.

3.95.3 Bug Fixes

Issue ID

Description

NEXUS-54717

Sonatype Nexus Repository now updates the lastDownloaded timestamp for Docker manifest HEAD requests, preventing actively used images from being incorrectly targeted by cleanup policies.

3.95.2 Bug Fixes

Issue ID

Description

NEXUS-54576

NuGet hosted repositories with Disable Redeploy now correctly allow new packages to be published even when those packages share common third-party PDB files with previously uploaded packages. Regular packages containing embedded PDBs are no longer misfiled as symbol packages.

NEXUS-54572

NuGet symbol assets (.snupkg and .pdb) now store the required id, version, and is_prerelease attributes, preventing HTTP 500 errors and NullPointerExceptions during search and package registration.

NEXUS-54550

Docker proxy repositories backed by Amazon ECR now accept pre-generated ECR authorization tokens (obtained via aws ecr get-login-password) as HTTP Basic authentication credentials without triggering AWS credential validation errors.

3.95.1 Bug Fixes

Issue ID

Description

NEXUS-54440

Nexus Repository now falls back to the cached PyPI JSON index when the HTML index does not contain a requested package file.

NEXUS-54371

Nexus Repository now re-queries the upstream source for NuGet V2 FindPackagesById requests, ensuring newly published or restored package versions appear while preserving warm-cache behavior for other operations such as Search.

NEXUS-54336

Nexus Repository now limits manifest scanning during Docker proxy tag requests, preventing download delays in repositories with large numbers of SHA-256 manifests.

NEXUS-54250

Fixed malware risk banner display behavior in the Nexus One user interface.

NEXUS-54143

Nexus Repository now completes blob store group member removal without repeatedly reprocessing blobs with missing .bytes files and logs remaining skipped blobs for follow-up.

3.95.0 Bug Fixes

Issue ID

Description

NEXUS-54092

Terraform module downloads from hosted repositories now succeed for all valid archive formats (.tgz, .tbz2, and .txz), including modules with standard semantic version numbers such as 4.1.1.

NEXUS-54089

Cosign signing and attestation against Docker hosted repositories with large numbers of manifests now complete in seconds, thanks to a database path index and a scan cap that prevents exhaustive manifest searches during metadata propagation.

NEXUS-54023

Users with the nx-usertoken-current privilege can now access their user tokens in the Sonatype Nexus Repository Nexus One UI as expected.

NEXUS-53975

Terraform proxy repositories now support a "Use pre-emptive authentication" option, enabling credentials to be sent on the first request to an upstream Nexus instance rather than waiting for a challenge header that never arrives.

NEXUS-53923

During upgrades, the asset blob reference migration check runs as a lightweight background task after startup rather than as a blocking scan on the main startup thread.

NEXUS-53898

The copy button in the classic UI Browse › Repositories URL column now opens the copy dialog correctly, allowing repository URLs to be copied to the clipboard.

NEXUS-53883

Components moved via staging operations retain their normalized version data, allowing Docker cleanup retain-n policies to evaluate and remove eligible components correctly.

NEXUS-53874

Dart/Pub hosted repositories now accept package names beginning with an underscore (for example, _my_private_package), aligning with the official pub.dev specification.

NEXUS-53833

Browsing the /simple/<package>/ index on PyPI hosted repositories no longer writes blob files to the blob store on each request, eliminating spurious updated-uploaded audit events and uncontrolled disk growth between Compact Blob Store task runs.

NEXUS-53830

Docker layer uploads to Azure blob store repositories now use Azure server-side copy for single-chunk transfers, eliminating the redundant download-and-re-upload cycle that previously caused large layers to take roughly twice as long to push.

NEXUS-53828

Transient GCS 503 backend errors encountered during blob attribute writes in doDelete() are now retried with exponential backoff, allowing Docker uploads and similar operations to complete successfully instead of failing immediately.

NEXUS-53826

Terraform, Ansible Galaxy, and Swift hosted repositories no longer cache "not found" responses, so post-upload verification requests correctly return the uploaded asset instead of a stale 404.

NEXUS-53816

Concurrent repository deletions now complete successfully without leaving repositories in an unrecoverable STOPPED state that previously required a full restart to resolve.

NEXUS-53778

Requests carrying a structurally invalid Authorization: Basic header—such as an unexpanded ${NPM_TOKEN} placeholder in an npm .npmrc or CI config—now receive an HTTP 400 Bad Request response instead of 401.

NEXUS-53755

The top-level search More Criteria menu now includes Name and Version fields at the generic level, allowing users to filter search results by version across all package formats without navigating into format-specific sections like Composer Repositories.

NEXUS-53733

PyPI proxy repositories now send the correct upstream ETag in outbound If-None-Match headers, allowing PyPI to return 304 Not Modified responses instead of forcing full re-downloads, and no longer write a new blob to the blob store on every simple index request.

NEXUS-53719

Permission checks for users authenticated through external realms (SAML, LDAP, Crowd, OAuth2) now resolve role-to-permission mappings a single time per login rather than once per privilege checked, eliminating the ~20-second UI load delay experienced by users with large role sets.

NEXUS-53697

NuGet hosted repositories now return 206 Partial Content with correct Content-Range headers when clients request byte ranges, eliminating full-package downloads for partial-content requests against local blob stores.

NEXUS-53670

R proxy repositories now correctly handle CDN-prefixed content-addressable archive names from r-universe and R-multiverse, and the R-multiverse pollinator resolves package details dynamically from the live index rather than relying on hardcoded versions.

NEXUS-53606

Improved JAX-RS client error logging to reduce noise in server logs.

NEXUS-53599

Blob store metrics—including BLOB COUNT and USED SIZE—are preserved correctly when a blob store is promoted to a group, eliminating the need to manually run the Recalculate Blob Store Storage task.

NEXUS-53586

The Source dropdown selection in Settings > Security > Users is now preserved after deleting a user, keeping the filtered list on the selected realm instead of reverting to Local.

NEXUS-53571

Requests carrying a malformed Base64 Authorization header now receive a 401 Unauthorized response instead of an HTTP 500 error.

NEXUS-53496

Ansible Galaxy hosted repositories now return HTTP 409 Conflict (instead of 400) with a Galaxy-compatible duplicate-version error body when a duplicate collection version is published to a write-once (ALLOW_ONCE) repository; clients that explicitly expected HTTP 400 for this case should be updated.

NEXUS-53492

PyPI group repositories now serve a single authoritative index entry per filename, giving hosted members precedence over proxy members so pip 26's hash verification receives consistent checksums and installs patched components successfully.

NEXUS-53476

Existing cached .whl.metadata assets are automatically migrated to application/octet-stream on upgrade, and PyPI proxy repositories now serve .whl.metadata files with the correct content type to prevent WAF rejections and checksum mismatches.

NEXUS-53468

Terraform proxy repositories now correctly resolve components from providers with long alphanumeric namespaces without misidentifying the namespace as an authentication token.

NEXUS-53463

PyPI group repositories automatically invalidate their cached index when Sonatype Repository Firewall (PCCS) filtering is toggled for any member proxy, ensuring all available package versions are served immediately.

NEXUS-53458

The Settings → Repositories page loads in normal time during post-upgrade blob-size copy task execution because task completion checks now cache negative results for 30 seconds.

NEXUS-53457

The "Secrets - Migrate secrets" upgrade task now completes successfully for repositories that reference non-existent cleanup policies, automatically removing stale policy names during upgrade.

NEXUS-53394

Transient GCS 503 backend errors during Compact Blob Store operations are now retried with exponential backoff, and compaction tasks that fail to hard-delete blobs correctly report as failed.

NEXUS-53383

Pub package uploads now consistently identify the root pubspec.yaml as the authoritative metadata source regardless of archive entry order.

NEXUS-53373

Telemetry script fetches in air-gapped environments now time out within a configurable window (default 5 seconds) instead of blocking the UI for up to 80 seconds, with stale cached content served as a fallback.

NEXUS-53343

Repository search indexes remain queryable throughout the "Repair - Rebuild repository search" task, with orphaned records cleaned up only after re-indexing completes.

NEXUS-53338

Pull replication now bypasses the proxy staleness check for modified assets, ensuring updated content is fetched immediately from the source.

NEXUS-53317

Stale repodata entries in the browse tree of YUM group and proxy repositories are automatically removed when merged metadata is regenerated.

NEXUS-53306

The Preview UI Firewall column now accurately displays each proxy repository’s protection state and violation counts, matching the configured Quarantine, Audit, or Unprotected status.

NEXUS-53300

NuGet v3 hosted repository query results are now correctly returned for users whose Content Selector privilege includes a path condition on PostgreSQL deployments.

NEXUS-53265

Mixed unparenthesized AND and OR expressions in content selectors now use the correct operator precedence, preventing HTTP 500 responses during NuGet tag association.

NEXUS-53263

Components remain visible in search results for users with Repository Content Selector privileges after tag association, allowing repeated tag associations to succeed without requiring broader repository privileges.

Repositories where components were updated via incremental indexing (for example, tag association) while running an earlier Nexus Repository version may require a search index rebuild after upgrade to 3.95.0 in order to restore visibility for users who rely only on Repository Content Selector privileges.

NEXUS-52995

When PCCS age-based policy filtering quarantines npm package versions, diagnostic logging now captures the catalog date and policy condition details for each affected version.

NEXUS-52942

Pagination Link headers for Docker group repositories accessed via repository URL path now correctly reference the group repository path rather than the internal member proxy path.

NEXUS-52934

Assets in group repositories remain accessible throughout a Change Repository Blob Store migration because source blobs are retained until database references are fully updated.

NEXUS-52826

Group repositories now display an aggregated Firewall Report status based on their proxy members, and the Firewall Report column header is correctly marked as non-sortable.

NEXUS-52283

The Hugging Face proxy now implements the /tree/{revision} endpoint, enabling snapshot_download() and hf download to work with huggingface_hub 1.22.0+ even for repositories with more than 1,000 files.

NEXUS-52176

IQ Server connection failures now return actionable error messages instead of the previous generic compatibility message.

NEXUS-51938

All nodes in an HA cluster now immediately evict their shared HTTP connection pool when proxy or other HTTP client settings change.

NEXUS-51661

Trailing wildcard searches with fewer than three characters before the wildcard now return HTTP 400 with a clear error message instead of silently returning empty results.

NEXUS-51526

The Repair - Data Repair Plan task now removes orphaned database records for assets whose .bytes file is missing when "Keep db records" is unchecked.

NEXUS-51524

The Repair - Execute Data Repair Plan task now displays the complete plan count by retrieving aggregated statistics from a new server-side summary endpoint.

NEXUS-51451

Conan proxy repository search now returns cached results successfully when the remote is manually blocked instead of returning a 500 error.

NEXUS-51368

Raw repository searches by filename now return correct results when the filename contains a period character.

NEXUS-50783

Removing a member from a Maven group repository now completes quickly, with orphaned asset cleanup running in the background.

NEXUS-37620

The Repair - Rebuild Maven repository metadata task now regenerates missing checksum files for maven-metadata.xml when checksum rebuilding is enabled.

NEXUS-33892

Group repository caches are automatically invalidated when routing rules are assigned, removed, or modified on any member proxy repository.

NEXUS-29245

npm dist-tag add and npm dist-tag rm commands now work against group repositories by delegating tag operations to the configured writable member repository.

NEXUS-29099

Task log file handles are now released immediately upon task completion, preventing accumulation of open file descriptors.

NEXUS-28581

When thread cooperation limits are exceeded during high-concurrency NuGet proxy requests, logs now emit a detailed warning message identifying the limit and the configuration property to adjust.

FIRE-601

Sonatype Repository Firewall enforcement remains active on all High Availability cluster nodes after a Zero Downtime Upgrade, with repository configuration automatically refreshed following the deferred database migration.

FIRE-519

The Automatic Malware Management task now completes successfully against IQ Server versions earlier than 204 by gating the quarantineEnabled field on the connected IQ Server version before sending ad-hoc evaluation requests.

Known Issues & Upgrade Guidance

This section captures known issues in the 3.95.x line as well as upgrade guidance.

Resolved Known Issues

Impacted Version(s)

Version in which Issue is Resolved

Description

3.95.0 – 3.95.3

&

3.96.0

3.95.4 & 3.96.1

For self-hosted deployments, this issue can occur after taking both of the following actions:

  1. Upgrading to version 3.95.0 or later

  2. Creating or editing a cleanup policy to use the Number of Versions field (or Retain in the API), which retains a selected number of the most recent versions, for one of these affected formats:

    1. APT

    2. Go

    3. Helm

    4. npm

    5. NuGet

    6. Pub

    7. PyPI

    8. RubyGems

    9. Swift

    10. Terraform

    11. Yum

Cloud deployments that use the Number of Versions field (or Retain in the API) with an affected format are also impacted.

Changes to version normalization can cause components created before and after the upgrade to use different normalized version formats.

When a cleanup policy uses the Number of Versions field (or Retain in the API), Nexus Repository may sort these mixed values incorrectly. As a result, the cleanup policy may select newer component versions for deletion while retaining older versions.

3.94.0 – 3.94.1 &

3.95.0 – 3.95.2

3.94.2 & 3.95.3

HEAD requests to Docker manifests no longer update an asset’s lastDownloaded timestamp.

Because container runtimes may use HEAD requests to check cached manifests, actively used images can appear inactive and become eligible for cleanup policies based on Last Downloaded.

3.94.0 – 3.95.0

3.95.1

NuGet V2 proxy repositories return locally cached results for FindPackagesById() without querying the remote repository. As a result, newly added or restored package versions might not appear, which can cause stale or incomplete dependency resolution.

As a workaround, delete all locally cached versions of the affected package to force the next FindPackagesById() request to query the remote repository.

You can also migrate the affected repository and clients to NuGet V3.

Additional Upgrade Guidance

The 3.95.x release has a few changes that require consideration and potential action when upgrading:

  • Repositories where components were updated via incremental indexing (for example, tag association) while running an earlier Nexus Repository version may require a search index rebuild after upgrade to 3.95.0 in order to restore visibility for users who rely only on Repository Content Selector privileges.

  • Ansible Galaxy hosted repositories now return HTTP 409 Conflict (instead of 400) with a Galaxy-compatible duplicate-version error body when a duplicate collection version is published to a write-once (ALLOW_ONCE) repository; clients that explicitly expected HTTP 400 for this case should be updated.