All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Added Alpine Upstream support for managing upstream configurations.
- Added
--tagoption todownloadcommand for filtering packages by tags - Added download command documentation to README with comprehensive usage examples
- Added
--filenameoption todownloadcommand for filtering by package filename, with support for glob patterns (e.g.,--filename '*.snupkg') - Added
--download-allflag todownloadcommand to download all matching packages instead of erroring on multiple matches - Multiple packages table now includes a Filename column for easier disambiguation
- Added
vulnerabilitiescommand to retrieve security scan results for a package- Summary View (Default): Displays a high-level count of vulnerabilities broken down by severity (Critical, High, Medium, Low, Unknown).
- Assessment View
--show-assessment(-A): Provides a detailed breakdown where vulnerabilities are:- Grouped by the specific affected upstream package / dependency.
- Sorted by severity (Critical first).
- Richly formatted tables.
- Filtering Capabilities:
- By Severity:
--severityShow only specific levels (e.g., just Critical and High). - By Status:
--fixable | --non-fixableFilter to show only "Fixable" vulnerabilities (where a patch exists) or "Non-Fixable" ones.
- By Severity:
- Supports
--output-format json | pretty_jsonfor programmatic usage
- Added
vulnerabilitiescommand to retrieve security scan results for a package- Summary View (Default): Displays a high-level count of vulnerabilities broken down by severity (Critical, High, Medium, Low, Unknown).
- Assessment View
--show-assessment(-A): Provides a detailed breakdown where vulnerabilities are:- Grouped by the specific affected upstream package / dependency.
- Sorted by severity (Critical first).
- Richly formatted tables.
- Filtering Capabilities:
- By Severity:
--severityShow only specific levels (e.g., just Critical and High). - By Status:
--fixable | --non-fixableFilter to show only "Fixable" vulnerabilities (where a patch exists) or "Non-Fixable" ones.
- By Severity:
- Supports
--output-format json | pretty_jsonfor programmatic usage
- Added
CLOUDSMITH_NO_KEYRINGenvironment variable to disable keyring usage globally. SetCLOUDSMITH_NO_KEYRING=1to skip system keyring operations. - Added
--request-api-keyflag tocloudsmith authcommand for fully automated, non-interactive API token retrieval. Auto-creates a token if none exists, or auto-rotates (with warning) if one already exists. Compatible with--save-configandCLOUDSMITH_NO_KEYRING. - Added
--verbose(-v) flag tocloudsmith whoamito show detailed authentication information including active method (API Key or SSO Token), credential source, token metadata, and SSO status. Supports--output-format json. - Added
cloudsmith logoutcommand to clear stored authentication credentials and SSO tokens.- Clears credentials from
credentials.iniand SSO tokens from the system keyring --keyring-onlyto only clear SSO tokens from the system keyring--config-onlyto only clear credentials fromcredentials.ini--dry-runto preview what would be removed without making changes- Supports
--output-format jsonfor programmatic usage
- Clears credentials from
- The
--tokenflag oncloudsmith authis deprecated. Use--request-api-keyinstead. - The
--forceflag oncloudsmith authis deprecated. Use--request-api-keyinstead (force behavior is implied). - The
--jsonflag oncloudsmith authis deprecated. Use--output-format jsoninstead.
- Added Model Context Protocol (MCP) server support via
cloudsmith mcpcommands. Only STDIO transport is supported for now. - Auto-configure supported clients (Claude Desktop, Cursor, VS Code, Gemini CLI) with
cloudsmith mcp configure - List available tools with
cloudsmith mcp list_toolsand tool groups withcloudsmith mcp list_groups - Filter tools via
mcp_allowed_toolsandmcp_allowed_tool_groupsconfiguration options to control which API operations are exposed
- Added Generic Format support for pushing packages to repositories.
- Added Upstream support for managing upstream proxy configurations.
- Migrate from CircleCI to GitHub Actions for testing and release workflows.
- Remove CircleCI workflows.
- Migrate from using
shivfor zipapp generation topexin order to support specific platform/arch and improve testing framework. - Add zizmor for GitHub Actions code scans, part of workflow and pre-commit.
- Support output format for
--versionin order to allow JSON parsing.
- The
--jsonflag used incloudsmith authcommand will be removed in upcoming releases. Please migrate to--output-format jsoninstead.
- Fixed JSON output for all commands
- Informational messages, warnings, and interactive prompts are now routed to stderr when
--output-format jsonis active. - Error messages are now formatted as structured JSON on stdout when JSON output is requested.
- Informational messages, warnings, and interactive prompts are now routed to stderr when
- Set
--show-allto alias--page-all - Add the ability to use a shortcut within
--page-sizeto use pass-1or*to retrieve all pages i.e.--page-size -1or--page-size *(note the wildcard may require escaping in some shell environments) - Added support for deny policy management commands (list, create, get, update, delete)
- Issue #250 - Updated
requests_toolbeltdependency to>=1.0.0to ensure compatibility withurllib3>=2.5and avoidurllib3.contrib.appengineimport errors.
- Fixed quarantine block/add command
- Upgraded
urllib3fromv1.26.20tov2.5.0. - Added
mock_keyringfixture to prevent SSO token refresh attempts during individualtest_rest.pytest which runs in pipelines (full suite passes). Caused by HTTPretty issue 484. - Entitlement token list command now fixed
- Drop click dependency from
v8.2.0tov8.1.8to fix dependency issue for Python 3.9
No code changes in this release. Version bump performed for release process consistency and to address packaging/metadata updates.
- [Issue-170] - Add flag to get all pages
- Issue-235 - Fix for latest zipapp releases not working on < python@3.14
- Click v8.3.0 was a breaking update which impacted conversion of Sentinel.UNSET values which impacted the auth --token workflow. Locking to 8.2.x versions and restricted 8.3.0 explicitly.
- New minor version release includes v1.8.8 changes.
--jsonflag for the auth command now outputs json only.
- Added Python 3.14 support
- Added
downloadcommand to download package binaries directly from Cloudsmith repositories- Support for downloading packages with version, format, OS, and architecture filters
- Progress bar with download speed and size information
- Automatic checksum verification (MD5, SHA256, SHA1)
- Dry-run mode to preview downloads without downloading
- Auto-selection mode with
--yesflag for scripting --all-filesoption to download all associated files (POM, sources, javadoc, SBOM, etc.) for Maven, NuGet, and other multi-file packages- Downloads all files into a folder named
{package-name}-{version} - Supports custom output directory with
--outfileoption - Shows file type tags (pkg, pom, sources, javadoc, cyclonedx, sbom)
- Reports download progress and success/failure summary for each file
- Downloads all files into a folder named
Cloudsmith auth -o <org> --tokennow creates a new token if none previously existed.- Added support for json output for auth via
--jsonparam. - Added new
createcommand for tokens. If authenticated and no previous token exists, this allows for new token creation.
- Added
--forceparameter to the Auth command to be used in conjunction with--tokento refresh tokens without interactive prompts i.e automatic. - Added
--forceparameter to the Tokens refresh command to automatically refresh without an interactive prompt.
- Support for Conda, Cargo, Go, and Hugging Face upstreams (#214)
- Added 'swift' and 'hex' as available upstream formats.
- Make an sdist available as part of the release.
- Fix bug that caused configuration to be dropped in the authenticate command.
- Fix bug in the default configuration schema.
- Added support for managing User API Tokens (#192)
- Added a fix for certain login error messages being suppressed (#196)
- Added support for 2FA authentication when logging in (#188)
- Added
--extra-filesparameter for Maven upload command (#190)
- Added html templates for saml response endpoints
- Added json support for whoami
- Added support for additional headers to be passed to the saml authentication flow
- Added
--sortflag for package list command (#185)
- Fixed
cloudsmith authcommand where it results in403(#183)
- Update cloudsmith-api to v2.0.16 (#181)
- Dropped support for Python 3.8. (#137)
- Missing dependency from
setup.pyfile (#177)
- The
authcommand, enabling users to authenticate against the API with their organization's configured SAML provider (#174)
- Produce CLI zipapp artefact on release (#164)
- Show pagination info for
repos get(#163)
- Support for Swift package uploads (#161)
- Support for CRAN upstreams (#157)
- Revert change to urllib3 Retry constructor
method_whitelist/allowed_methodskwarg (#148)
- Added support for large file uploads (#143)
- Removed more unused dependencies relating to python 2.7 compatibility (#142)
- Dropped support for EOL versions of Python (<3.8). (#134)
- Added
upstreamcommands (#131)
- Added
--sbt-versionand--scala-versionsupport for maven upload (#128)
- Added
--ivy-filesupport for maven upload (#125)
- Removed type annotations from
maybe_truncate_listandmaybe_truncate_stringto fix python 2.7 support (#120)
- Added support for
package_query_stringto license and vulnerability policy management (#118)
cloudsmith whoamino longer errors for Services (#116)
- Added support for license policy management (#113)
- Added support for vulnerability policy management (#111)
- Write Python 2 deprecation message to stderr. (#109)
- Added deprecation warning to output for Python 2. (#106)
- Updated incorrect push format parameter descriptions.
- Pinned urllib3 due to it dropping support for py2.
- Try harder to find a user's
~/.cloudsmithacross operating systems, so config files are found.
- Revert minimum allowed version of
clickto7.0.0.
- Bump minimum allowed version of
clickto8.0.3.
- Temporarily disable client-side validation within the cloudsmith-api.
- Fixed an issue where datetime objects couldn't be serialised when outputting as JSON.
- Updated to support cloudsmith-api v.2.0.0
- Fixed a typo in permission exceptions.
- Removed linting noqas from help docs.
- add '.' to config search paths (#78)
- add quarantine add/rm command (#80)
- Update API client initialization to support newer versions of
cloudsmith-api.
- Fixed issue with JSON-based output for the
dependenciescommand.
- Added the
cloudsmith dependenciessub-command, to list package dependencies.
- The ordering of the columns in the quota command has been fixed.
cloudsmith pushwill now pause/sleep the process when calling the status endpoint during pushes (thanks to bagoston).
- Documentation generation for PyPi was broken; converted to markdown and fixed.
Documentation release.
Documentation release.
- Automatic releasing of CLI via CircleCI fixed.
- Support for Python 2 with the new package and token metrics changes
Note: This release requires cloudsmith-api >= 0.57.1.
- Rework package and token metrics
Note: This release requires cloudsmith-api >= 0.54.15.
- Support for Organization Usage Metrics API
- Fix for rendering Entitlement Token restrictions via the CLI
- Fixed formatting JSON results for the
metricsandquotacommands;-F jsonshould work now.
Note: This release requires cloudsmith-api >= 0.53.79.
- Resolves breaking changes in Bandwidth Usage Metrics.
- Implements Bandwidth controls for Entitlment Tokens.
- The builtin rate-limiting will no longer throttle at exit (prevents hanging on shutdown).
- The builtin rate-limiting will display a message when throttled by 429 responses.
- The push command will now display how long it took to sync/fail a package upload.
- The synch wait interval is now a minimum bound, and increases over time.
- The synch progress bar will now display immediately, instead of being delayed.
Note: This release requires cloudsmith-api >= 0.53.3.
- Support for Quota API limits & history
- Fixed Python3 compatibility (removed f-string)
Note: This release requires cloudsmith-api >= 0.52.92.
- Support for Package Usage Metrics API
Note: This release requires cloudsmith-api >= 0.52.79.
- Support for Usage Metrics API
Note: This release requires cloudsmith-api >= 0.52.0.
- Support for package tagging:
list,add,clear,removeandreplacetags. - Support for debian DSC (source file) uploading.
- Publishing a duplicate package without specifying
--publishor--no-republishwill now default to the repository republish settings.
- Support for Terraform modules.
- Update for (C/C++) Conan push command to allow an optional name and version to be provided.
- Update for (C/C++) Conan packages.
- Support for (C/C++) Conan packages.
- Support for repositories API and subcommands (
list,create,retrieve,updateanddelete).
- Version specifier set by
0.20.0wasn't compatible with older versions of Python.
Note: This release pins the Cloudsmith API library to version 0.x due to
changes in the versioning of the library. If you're having issues with an older
version of the CLI that installs the latest API, please upgrade your CLI
version, or install cloudsmith-api==0.49.94.
- Pinned the Cloudsmith API library version to 0.x+ (excl. 1.x+ series).
- Credentials config file not being populated with API key by
cloudsmith login.
- Missing README information on PyPi.
- Support for (Objective-C and Swift) CocoaPod packages.
- Support for (Google) Dart packages.
- Fixed issue with displaying entitlements.
- Regression with the
cloudsmith loginandcloudsmith tokencommands where they didn't execute correctly.
cloudsmith logincommand (so that it is properly recognised) (thanks to @robmadole for reporting).
- Upgraded suggested version of python-click to >=7.0.
- Renamed the
cloudsmith tokencommand tocloudsmith login(token still works).
- Parsing of booleans from config files.
- Tolerance of booleans without values in config files (thanks to @Mno-hime for reporting).
- Support for --content-type when uploading Raw packages.
- Support for NuGet packages (via API update).
- Support for --without-api-ssl-verify to turn off SSL verification.
- Support for Go modules.
- Support for R/CRAN packages.
- Ordering of parameter decorators.
- Support for LuaRocks modules.
- Removed duplicated --dry-run parameter in push command (thanks to @SeanTAllen of @ponylang).
- Support for Cargo registry crates.
- Support for Docker registry image containers.
- Issue with executing in py2/py3 using entrypoint.
- Support for Helm repository charts/packages (https://github.com/helm/charts).
- Support for republishing packages (overwrite existing versions).
- Python 3.x compatibility due to not decoding request responses properly.
- 501, 502, 503 and 504 errors received from the API will now be retried, with exponential backoff.
- Entitlement command output will now respect pretty format properly and not send non-output to sysout.
- Support for Alpine Linux and NPM/npm packages.
- Updated and pinned cloudsmith-api dependency to 0.32.11.
- Compatibility with upcoming API changes for listing repositories.
- Regression in listing packages caused by typo.
- When calling
ls repos, the CLI will now list all repositories that the user can see.
- Compatibility with API changes for listing repositories.
- Pinned cloudsmith-cli to 0.30.7 to fix issues with entitlements actions.
- Updated and pinned cloudsmith-api dependency to 0.30.3.
- Added support for latest API (0.30.x+) which changed how packages are referenced (slug -> identifier).
- Added support for latest API (0.30.x+) which changed how entitlements are referenced (slug_perm -> identifier).
- Always print rate limit information at exit (if throttled).
- #5: Credentials file not loading when explicitly specified via command-line parameter.
- #6: Ensure that a non-zero status is always returned on errors/failures.
- Exit with an error after running out of sync attempts.
- Issue with entitlements create command crashing because
--namewas left off.
- Issue with the move subcommand due to typo in string formatting.
- Issue with entitlements due to issue in API library.
- Issue with status subcommand failing due to API mismatch.
- Issue with package synchronisation stalling due to typo in status check.
- Display status reason text when a package fails, and give up attempting if it was fatal.
- Support for aliased subcommands, starting with
delete=rm,list=lsandpush=upload. - Support for retrieving rate limits from the API via
check limits. - Support for searching packages via
-q|--querysearch query parameter. - Support for
copy(cp), move (mv) andresyncpackage subcommands. - Support for automatic resyncing when the sync fails (attempts can be controlled using
--sync-attempts). - Support for formatting the output of
listsubcommands (distros,packagesandjson) as JSON using-For--output-format). - Support for entitlements API and subcommands (
list,create,update,delete,refreshandsync). - Automatic rate limiting based on usage across all API calls (it can be turned off using
-R). - Utility for printing tables (internal only, but expect consistent tables for list-based results).
- Minimum API version required is now 0.26.0+.
- The check command is now a list of sub-commands, and
check serviceis now for checking the service status.
- Support for pagination (page and page size) for lists, such as listing packages and repositories.
- Made documentation for cloudsmith push clearer for formats that support distro/release.
- Serialization for API headers (especially Authorization) - No impact for most users.
- When writing a default
credentials.inifile, useug+rwfor permissions instead of world-readable.
- Issue #2: Not able to upload in Python3-based environments due to code incompatibility.
- Silly (but nice) ASCII art banner for help command.
- Default creds/non-creds config files are now created/initialised on
cloudsmith token. - Support for
CLOUDSMITH_CONFIG_FILEandCLOUDSMITH_CREDENTIALS_FILEenvironment variables. - Support for adding arbitrary headers to the API via
--api-headersandCLOUDSMITH_API_HEADERS.
- Pin for
cloudsmith-apiis now correctly set to0.21.3.
Phase 2 release.
- Configuration profiles, to support multiple environments.
- Options for
api_host,api_proxyandapi_user_agentin config file. - The
helpcommand for those who need more than-hand--help. - Support for uploading multiple package files at once.
- Tox-based testing for Python2.x and Python3.x.
- Pre-flight checks to push/upload command.
- The
listcommand with support for listing distros, packages and repos.
- Environment variables to use a
CLOUDSMITH_prefix (not backwards compatible).
- Validation for
pushcommands that require a distribution. - Token endpoint failing because API key overrides login/password.
- Python3 compatibility so that it now runs with Py3. :-)
Phase 1 release (initial release).