Skip to content

Releases: dropbox/dbxcli

v3.4.0

22 Jun 06:15
d93086b

Choose a tag to compare

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

17 Jun 06:18
b56260a

Choose a tag to compare

v3.3.3

v3.3.2

17 Jun 05:19
d35b0c1

Choose a tag to compare

Merge pull request #241 from dropbox/bundled-team-app-keys

Bundle team app keys and fix ls error handling

v3.3.1

15 Jun 20:02
89d9b1b

Choose a tag to compare

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 login

Legacy 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 key

Environment 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/-r explicitly allows removing non-empty folders
  • --permanent permanently deletes instead of moving to Dropbox trash
  • --force/-f still works (equivalent to --recursive)
  • Verbose mode (-v) prints what was deleted
dbxcli rm -r /non-empty-folder
dbxcli rm --permanent /file.txt

Full Changelog

  • Add --recursive, --permanent flags and verbose output to rm — #236
  • Switch OAuth to PKCE with offline refresh tokens — #235
  • Add login command with OAuth flow and app credential prompting — #234
  • Support DBXCLI_ACCESS_TOKEN and DBXCLI_AUTH_FILE environment variables — #233

v3.3.0

12 Jun 16:01
d7c23c7

Choose a tag to compare

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-folder

Unified 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 -p flag to suppress error on existing directories — #225
  • Update README with accurate command list and version — #224
  • Add --sort, --reverse, --time, and --time-format flags to ls and search — #223

v3.2.1

09 Jun 05:10
d3125f3

Choose a tag to compare

Bug Fixes

  • Fix exit codes (#120): Commands now return exit code 1 on error instead of 0. mv and cp properly propagate errors.
  • Fix search output (#132): Search results now display one match per line with tabwriter-aligned columns in -l mode.

Full Changelog

v3.2.0...v3.2.1

v3.2.0

08 Jun 16:51
60fb550

Choose a tag to compare

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
  • Atomic downloads — writes to temp file then renames, preventing corrupted files on retry or crash
  • Idempotent chunked uploads — detects already-accepted chunks via incorrect_offset recovery
  • Symlink preservation — download resolves symlinks so the link is preserved
  • io.ErrUnexpectedEOF retry — 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 EOF on large files
  • #149too_many_requests error on put

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

08 Jun 06:12
75e8da5

Choose a tag to compare

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 with get_metadata regex error (#209)
  • Fix put — adapted Upload call for SDK v6.0.5 (CommitInfoUploadArg)
  • Remove deprecated packagesioutilos/io, golang.org/x/net/context → stdlib context
  • Lint fixes — unnecessary fmt.Sprintf, unchecked error, ineffectual assignment, fmt.Fprintf with non-constant format string
  • Unit tests added for ls command (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

30 Jan 19:53

Choose a tag to compare

Primarily dependency updates. Major changes to underlying Dropbox SDK, so bumping major version here as well.

v2.1.2

05 Dec 06:44
f0a17d9

Choose a tag to compare

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:

  • Add feature for adding keys by environment variables #107 (vaithak)
  • Fix bug in moving files between subfolders. #105 (vaithak)
  • docs(README): Add TravisCI build badge #103 (anishkny)
  • Update binary version on README #98 (okmttdhr)