Releases: dropbox/dbxcli
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.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
v3.2.1
v3.2.0
What's Changed
- Retry with exponential backoff for transient errors on uploads and downloads
- Server 500s, rate limits (honors
RetryAfter), network errors,unexpected EOF,too_many_write_operations - Max 5 retries, 1s initial backoff, 30s cap
- Server 500s, rate limits (honors
- Atomic downloads — writes to temp file then renames, preventing corrupted files on retry or crash
- Idempotent chunked uploads — detects already-accepted chunks via
incorrect_offsetrecovery - Symlink preservation — download resolves symlinks so the link is preserved
io.ErrUnexpectedEOFretry — large file downloads that drop mid-stream are retried automatically
Issues Fixed
- #211 — connection reset by peer on
upload_session/append_v2 - #185 — large file upload fails with HTTP 500
- #75 — download fails with
unexpected EOFon large files - #149 —
too_many_requestserror onput
Binaries
| Platform | File |
|---|---|
| Linux amd64 | dbxcli-linux-amd64 |
| Linux arm64 | dbxcli-linux-arm64 |
| macOS amd64 | dbxcli-darwin-amd64 |
| macOS arm64 (Apple Silicon) | dbxcli-darwin-arm64 |
| Windows amd64 | dbxcli-windows-amd64.exe |
v3.1.0
What's Changed
- Go upgraded from 1.11 to 1.25
- All dependencies updated (cobra 1.10.2, dropbox SDK 6.0.5, oauth2, pflag, etc.)
- Fix
ls /— root listing no longer fails withget_metadataregex error (#209) - Fix
put— adapted Upload call for SDK v6.0.5 (CommitInfo→UploadArg) - Remove deprecated packages —
ioutil→os/io,golang.org/x/net/context→ stdlibcontext - Lint fixes — unnecessary
fmt.Sprintf, unchecked error, ineffectual assignment,fmt.Fprintfwith non-constant format string - Unit tests added for
lscommand (validatePath, format functions, SetPathDisplayAsDeleted)
Binaries
| Platform | File |
|---|---|
| Linux amd64 | dbxcli-linux-amd64 |
| Linux arm64 | dbxcli-linux-arm64 |
| macOS amd64 | dbxcli-darwin-amd64 |
| macOS arm64 (Apple Silicon) | dbxcli-darwin-arm64 |
| Windows amd64 | dbxcli-windows-amd64.exe |
v3.0.0
Primarily dependency updates. Major changes to underlying Dropbox SDK, so bumping major version here as well.
v2.1.2
Implemented enhancements:
- Provide credentials thru environment variable? #104
Closed issues:
- Move error when moving between subfolders #102
- Using a SOCKS proxy? #97
- dbxcli doesn't detect when OAuth2 token no longer works #94
- Can't get the suthorization code. #92
- Specify auth token as an argument #63
Merged pull requests: