Releases: dropbox/dbxcli
Release list
v3.6.1
Added:
- Added a global
--timeoutflag to bound Dropbox network operations (e.g.--timeout 30s;0disables). - Threaded
context.Contextthrough all Dropbox API calls so operations respect cancellation and deadlines.
Changed:
putnow preserves the source file's modification time asClientModifiedinstead of the upload time (stdin uploads use the spool file mtime).- The retry loop now respects context cancellation during backoff and never retries context errors.
Infrastructure:
- Added scheduled/manual OSSF Scorecard scanning without public Scorecard API publishing.
- Replaced standalone Staticcheck workflow steps with a narrow
golangci-lintconfiguration. - Added explicit
go.sumcache dependency paths foractions/setup-go. - Added race detector, workflow linting, and CodeQL security scanning to CI.
- Hardened CI workflows with explicit read-only permissions.
- Generate a non-constant OAuth2
statevalue to resolve the CodeQLgo/constant-oauth2-statealert.
v3.6.0
What's New
Added
--if-exists fail|skipforcpandmvcommands--limitflag forlsandrevscommands--recursiveflag forls- JSON command manifests with
input_schemafor machine-readable command discovery commands.schema.jsonfor per-command success and input validation- Richer JSON
error.detailsfields (operation context, paths, URLs, revisions, emails, member IDs, API summaries, retry-after) - Typed error details schema and deprecated-command warnings in JSON errors
- Dependabot configuration for Go modules and GitHub Actions
- WinGet manifest templates and render script for Windows package manager
govulncheckandstaticcheckto CI and release workflows- Version resolution from
debug.ReadBuildInfoforgo installusers
Changed
- Upgraded Dropbox SDK from v6.0.5 to v6.2.0
- Bumped
actions/checkoutfrom v6 to v7 - Updated Homebrew formula to v3.5.1 with doc installation
- Replaced subset schema validator with
santhosh-tekuri/jsonschema/v6
Fixed
ls --only-deleted --limitcounting filtered entries correctly- Trailing period in
logouterror message (staticcheck finding)
Full Changelog: v3.5.1...v3.6.0
v3.5.1
Added
- Structured
logout --output=jsonoutput with saved-credential removal, token-revoke status, and already-logged-out reporting. result.authinaccount --output=jsonexposing credential source, refreshability, and auth file type.--content,--limit, and--order-byflags forsearchcommand.- Stable exit codes (0-8) mapped from JSON error codes for shell/CI scripting.
partial_transfererror code for stdout download failures after partial output.
Changed
- Go module path bumped to
github.com/dropbox/dbxcli/v3. - README restructured into focused topic docs under
docs/.
Fixed
- Interface pointer comparison in share-link error parsers (reflection-based
samePointerhelper). - Error assertions migrated to
errors.Isfor correct wrapped-error handling. - Reflection-based
ErrorSummaryextraction fixed to avoidCanInterfacepitfalls.
v3.5.0
Added
- Structured
--output=jsonsupport across core file, share, account, team, usage, and version commands. - Stable JSON success/error envelopes with schema v1, warning objects, stable error codes, and structured error details.
- JSON help manifests via
--help --output=jsonfor machine-readable command discovery. - Root namespace auto-detection for team-folder access.
- Generated command reference docs with CI drift detection.
putchunk-size validation: 4-128 MiB, multiple of 4 MiB.
Changed
- Normalized JSON result shapes around
input,results, andwarnings. - Refreshed README and moved detailed JSON schema docs to
docs/json-schema/v1/. - Improved
put --chunksizeand--workershelp text.
Infrastructure
- Added JSON contract tests with golden schema/output fixtures.
v3.4.0
Shared link command family: - share-link create: create or return existing shared links with --expires, --allow-download, --disallow-download, --access, --audience, --password-prompt, --remove-expiration - share-link list: list shared links with optional path filter and pagination - share-link info: display shared link metadata with --path and password support - share-link download: download shared link files with --path, --recursive, and password support - share-link update: update shared link settings (expiration, audience, password, allow/disallow download) - share-link revoke: revoke by URL or --path Other changes: - Add --if-exists flag to put command - Add Unix pipe support for put and get commands (stdin/stdout with -) - Migrate search command to SearchV2 - Improve revs and restore commands - Update README with installation instructions
v3.3.3
v3.3.2
Merge pull request #241 from dropbox/bundled-team-app-keys Bundle team app keys and fix ls error handling
v3.3.1
What's New
PKCE authentication with automatic token refresh
OAuth login no longer requires an app secret — only the app key is needed. The flow now uses PKCE (S256) with offline access, so credentials include a refresh token and are refreshed automatically when expired.
dbxcli loginLegacy auth.json entries (bare token strings) are still read transparently.
Login command
New dbxcli login command handles OAuth authorization interactively. Supports personal, team-access, and team-manage token types.
dbxcli login # personal
dbxcli login team-access # team access
dbxcli login --app-key=your-key # custom app keyEnvironment variable authentication
DBXCLI_ACCESS_TOKEN— use a short-lived token directly (not saved or refreshed)DBXCLI_AUTH_FILE— custom path for the credentials file
rm: --recursive, --permanent flags
--recursive/-rexplicitly allows removing non-empty folders--permanentpermanently deletes instead of moving to Dropbox trash--force/-fstill works (equivalent to--recursive)- Verbose mode (
-v) prints what was deleted
dbxcli rm -r /non-empty-folder
dbxcli rm --permanent /file.txtFull Changelog
v3.3.0
What's New
Recursive folder download (get -r)
Download entire folder trees from Dropbox, preserving directory structure including empty directories. Errors on individual files are reported without aborting the whole operation.
dbxcli get -r /remote/folder ./local-folderUnified cp/mv destination logic
Both cp and mv now consistently detect folder destinations via:
- Multiple sources automatically treat destination as folder
- Trailing slash (
/dest/) - GetMetadata check for existing folders
Improved error messages
cp and mv now show quoted paths and actual API error text instead of dumping Go struct literals.
Fixed local path handling
Fixed path.Join misuse for local filesystem paths in get, logout, and token file resolution — now correctly uses filepath.Join on all platforms.
Full Changelog
- Add recursive folder download (
get -r) — #232 - Unify cp/mv destination logic and fix local path handling — #231
- Infer filename in mv when destination is an existing folder — #230
- Resolve put folder destinations before upload — #229
- Add recursive directory upload (
put -r) — #227 - Add Output abstraction and fix logout with expired tokens — #226
- Add
mkdir -pflag to suppress error on existing directories — #225 - Update README with accurate command list and version — #224
- Add
--sort,--reverse,--time, and--time-formatflags to ls and search — #223