Changelog
A curated summary of recent releases. The full, machine-generated changelog lives in the GitHub repository and is updated on every release.
Unreleased — Typo suggestions and remediation hints
Section titled “Unreleased — Typo suggestions and remediation hints”- “Did you mean …?” on a mistyped command or enum value. Unknown top-level
commands (
bb prr→(Did you mean pr?)), everymust be one ofoption (--state,--kind,--priority,--sort,--status,--role,--strategy,--color),bb config get|set <key>, each bad token inbb pr activity --type, and both HTTP-method forms ofbb api. Matching folds case, and a value that is right apart from its case gets its own message:(Values are case-sensitive — use OPEN.) - Remediation hints on
401,403and404failures — one actionable line pointing atbb auth login, at Token Scopes, or at the id/slug and--workspace/--repoyou passed. Under--jsonthe text arrives as a new optional top-levelhintfield; existing envelope keys are unchanged. The404hint is suppressed where the message already names the missing resource and forbb api, where you supplied the URL. bb help <command>now works (bb help pr,bb help pr comments); it previously failed withtoo many arguments.bb --json pr listnow explains that--jsonswallowedpras its field list and shows the correct flag position.- Behavior change:
bb pr diff --color <when>validates its value. A typo such as--color alwyasused to silently disable color and exit0; it now fails with the valid values and a suggestion.
Known limitation: bb --json <typo> with nothing following still prints root
help and exits 0 — it is indistinguishable from a genuine field list.
1.22.0 — Pull request comment threads
Section titled “1.22.0 — Pull request comment threads”Four new bb pr comments subcommands complete the surface, and list can now
filter by resolution state.
bb pr comments view <pr-id> <comment-id>shows one comment with its author, date, state ([resolved]/[unresolved]/[pending]) and raw content.bb pr comments reply <pr-id> <comment-id> <message>posts a threaded reply attached to the parent comment.bb pr comments resolve/unresolve <pr-id> <comment-id>close and reopen a thread. Bitbucket returns only a resolution record forresolveand no body forunresolve, so their--jsonpayloads carry identifiers rather than the full comment — read it back withbb pr comments view.bb pr comments listgained aStatuscolumn (resolved,pending, oropen) plus--resolved/--unresolvedfilters. The active filter is echoed underfilters.resolutionin--json.
bb pr comments list 42 --unresolvedbb pr comments reply 42 987654 "Fixed in the follow-up commit."bb pr comments resolve 42 987654Bug fixes: bb pr comments edit and reply no longer fail with
Bad request — the update payload was sending a type key the endpoint
rejects. bb pr comments resolve now sends an empty JSON body, which that
endpoint requires. API errors also carry Bitbucket’s error.fields detail now,
so a rejected payload reports Bad request (type: extra keys not allowed)
instead of a bare Bad request.
See the PR comments reference for the full flag list.
1.21.0 — Six new command groups
Section titled “1.21.0 — Six new command groups”Commit & status — bb commit list and bb commit view <sha> show commit
history and details. bb status list <sha> lists build statuses for a commit;
bb status set <sha> --key <key> --state <state> creates or updates a build
status idempotently (CI re-runs can safely re-report the same key).
Issues — bb issue list, view, create, edit, close, and comment
mirror gh issue ergonomics. Filters include --state, --kind, --assignee,
--reporter, and a raw --query escape hatch. Disabled issue trackers surface
a clear 404 pointing to Repository settings.
Pipelines — bb pipeline list (filter by --status/--branch, paginated),
bb pipeline view <id> (details + per-step summary), bb pipeline run
(trigger on branch, with --commit, custom --pipeline, and --var key=value),
bb pipeline stop <id>, and bb pipeline logs <id> (--step by UUID or index).
Pipeline IDs accept build numbers or UUIDs everywhere.
Workspace & project — bb workspace list shows every workspace you can
access (filter by --role); bb workspace view [slug] shows details.
bb project list, bb project view <key>, and bb project create --key <KEY> --name <name> handle project discovery and creation.
All six groups emit stable --json envelopes and integrate with repo-scoped
context resolution.
Infrastructure — Read requests now retry up to 3 times with exponential
backoff on transient network failures (GET/HEAD/OPTIONS only). Concurrent
OAuth token refreshes are serialized behind an in-flight lock so parallel
requests share a single refresh. Shell completion is now derived from the live
command tree and includes flag-value completion for enum options (e.g.
bb pr merge --strategy <Tab> suggests valid strategies).
1.20.0 — bb api
Section titled “1.20.0 — bb api”A raw, authenticated passthrough to any Bitbucket Cloud 2.0 API endpoint —
the escape hatch for anything not yet wrapped by a typed command. Mirrors
gh api, reusing the same authenticated stack (auth, OAuth refresh, retry,
secret redaction).
bb api [method] <endpoint>— method may be a leading verb (bb api GET /user) or path-only (bb api /user); defaults toGET, orPOSTwhen fields/body are present.-f/--raw-field(string) and-F/--field(typed:true/false/null, numbers,@file,@-stdin). OnGET/HEADfields become query params, otherwise a JSON body.--inputsends a raw body from a file or stdin;-H/--headeradds headers;-i/--includeprints the status line and response headers.--paginatefollows thenextcursor and merges every page’svalues.{workspace}/{repo}placeholders are filled from--workspace/--repoor the current repo;--json/--jqfilter the response (--jqworks without--jsonhere). Absolute URLs are restricted toapi.bitbucket.org.
bb api /user # current userbb api /repositories/{workspace}/{repo}/pullrequests --paginatebb api POST /repositories/my-ws/my-repo/issues -f title=Bug -F priority=3bb api /repositories/my-ws --jq '.values[].name' # filter with jqSee the API command reference for the full flag list and examples.
Patch releases in 1.20 added configurable request timeouts (BB_HTTP_TIMEOUT),
--with-token for piping secrets via stdin, and fixes for --jq shell
completion. A drift-guard test now fails CI when the completion tables fall out
of sync with the live command tree.
1.19.0 — BB_WORKSPACE
Section titled “1.19.0 — BB_WORKSPACE”BB_WORKSPACEis now actually read. It slots into workspace resolution between git context and the config file, so the full order is--workspace→ git remote →BB_WORKSPACE→config.defaultWorkspace. Previously the variable was advertised in.env.examplebut consulted nowhere.- New Global Flags reference page consolidating every flag that works on every command.
- The environment-variable reference gained rows for
BB_WORKSPACE,BB_LOCALE, andBB_NO_UNICODE, and clarified thatDEBUGmust be the literal stringtrue.
1.18.0 — Pagination hints and --all
Section titled “1.18.0 — Pagination hints and --all”List commands now make truncation visible and let you opt out of pagination in one flag.
--allfetches every page and overrides--limit. Available on everylist-style command.- When
--limittruncates a list, a dim footer printsShowing 25 repositories. Use --limit <n> or --all to see more.— no more silently-clipped output. The hint is suppressed in--jsonmode. - Bug fix: table cells containing newlines, carriage returns, or tabs
(e.g. a repo description with a line break) are now collapsed to a single
space so rows stay aligned. Multi-line
text()output is unaffected.
See Global Flags → --all for the current
list of supported commands.
1.17.0 — Locale, Unicode toggle, spinner, global --no-truncate
Section titled “1.17.0 — Locale, Unicode toggle, spinner, global --no-truncate”- Locale-aware dates via
--locale <tag>andBB_LOCALE. Resolution walks--locale→BB_LOCALE→LC_TIME→LC_ALL→LANG→en-US. --no-unicode/BB_NO_UNICODEswap separators, arrows, and status icons for ASCII fallbacks. Useful for older terminals, constrained CI, or fonts that render the glyphs as tofu boxes. Mirrorsgh’sGH_NO_UNICODE.- Global
--no-truncatedisables column truncation across every list command. The old command-local flag onbb pr comments listis now subsumed and no longer needs to be passed separately. - Spinners for long-running operations —
bb pr create,bb pr merge,bb repo clone. Auto-disabled in JSON mode, non-TTY streams, and tests, so scripts are unaffected.
1.16.0 — bb browse
Section titled “1.16.0 — bb browse”Open Bitbucket Cloud web pages — repo home, files, branches, commits, pull
requests, pipelines, settings — directly from the terminal. Mirrors
gh browse.
- Smart positional resolution:
bb browse 217opens PR #217,bb browse abc1234opens a commit,bb browse src/cli.ts:42opens a file at a line on the current branch. - Resource flags for every top-level repo page:
--pr,--prs,--branch,--branches,--commit(defaults to HEAD),--commits,--pipelines,--pipeline,--downloads,--issue,--issues,--wiki,--settings. --no-browserprints the URL to stdout;--json urlemits{ "url": "..." }for scripting.
bb browse # repo homebb browse src/cli.ts:42 # file at a line on the current branchbb browse --branch release/2.0 # branch treebb browse 217 # PR #217bb browse --pipelines # pipelines tabbb browse --pr 217 --json url # capture the URL for a scriptSee the Browse command reference for the full flag list and examples.
Patch releases in the 1.16 line tightened help text, made the API client’s
retry messages route through the output service (silenced in --json mode),
and standardised the --yes confirmation gate across destructive commands:
without -y/--yes they now fail uniformly with Use --yes to confirm. rather
than prompting.
1.15.0 — Output consistency
Section titled “1.15.0 — Output consistency”- Empty-result messages on list commands use a consistent
ℹinfo icon. - Dividers across framed output (
pr view,pr checks,snippet view, the version-update banner) share a single helper, so they all render at the same width and colour.
1.14.0 — --json <fields> projection and --jq <expression>
Section titled “1.14.0 — --json <fields> projection and --jq <expression>”Match the gh CLI’s JSON formatting flags so muscle memory and scripts port
over cleanly.
--json [fields]accepts an optional comma-separated field list (e.g.--json id,title,author.display_name). Bare--jsonkeeps the existing full-object output for backwards compatibility.--jq <expression>runs the JSON output through an embeddedjq-wasmengine. Requires--json.- Field projection drops the wrapper around list-style results
(e.g.
pullRequests,repositories,snippets) and projects per-item, matchingghsemantics. - Dotted paths (
author.display_name) traverse nested objects. - Invalid jq expressions exit non-zero with the underlying jq error.
bb pr list --json id,title,statebb pr list --json author --jq '.[].author.display_name'bb pr list --json id,title,state --jq '.[] | select(.state == "OPEN") | .title'See the Scripting & Automation guide for end-to-end examples.
1.13.x — Stability and CI hardening
Section titled “1.13.x — Stability and CI hardening”- CI runs the full test + build matrix on Ubuntu, macOS, and Windows. Bun and every GitHub Action are pinned to explicit versions/SHAs, and the release pipeline no longer tags or publishes until lint, format, and tests all pass.
--limit 0now errors instead of silently returning no results.parseLimitrejects any non-positive or non-finite value with aVALIDATION_INVALIDBBError.- Generated API client refreshed from the latest Bitbucket Cloud OpenAPI
spec, with a post-generation patch that dedupes duplicate enum declarations
and corrects
PipelineSelector.typeoptionality.
1.13.0 — Default reviewers
Section titled “1.13.0 — Default reviewers”bb repo default-reviewerslets you inspect and manage the default reviewers configured on a repository, the same list Bitbucket suggests when someone opens a PR through the web UI.bb pr createpicks up those default reviewers automatically when theprCreateIncludeDefaultReviewersconfig key is enabled. Seebb pr createfor the full flow.
Older releases
Section titled “Older releases”For releases prior to 1.13.0 — and the complete per-PR commit log — see the full CHANGELOG on GitHub.