bb

vriesdemichael·vriesdemichael.bb

Bitbucket server (not cloud) command line tool. The 'gh' of bitbucket server.

winget install --id vriesdemichael.bb --exact --source winget

Latest 4.1.0·September 16, 2026

Release Notes

v4.1.0 bb v4.1.0 adds bb doctor for configuration problems and closes most of the remaining gap with gh for pull requests and repositories. It also makes failures say what actually happened: whether a request that never got an answer may have been applied, whether a listing was cut short, and which file or policy refused a command. It is a minor release with no breaking changes. Most of the behaviour that changes is a fix: v4.0.0's decision records and release notes already specified it, and this release makes the binary keep those decisions everywhere. Highlights

  • bb doctor (ADR-086, #597): Checks the stored, workspace and system configuration files and reports every problem at once:
    • schema violations, with their key and line;
    • keys a file never reads, such as require_keyring in a user's own file;
    • where each effective setting comes from;
    • whether a required OS keyring answers. It needs no Bitbucket host, makes no network call, and exits 1 when there is anything to fix.
  • Closer to gh (ADR-050, #575):
    • bb pr view, bb pr edit and bb pr close resolve, and bb pr checks shows a pull request's build statuses.
    • bb pr ready marks a draft ready for review without asking for its version, and --undo turns it back into a draft (#602).
    • bb repo get, also spelled bb repo view, describes a repository and prints its README (#605).
  • An interrupted change is no longer reported as safe to retry (ADR-011, #574):
    • The problem. Suppose bb creates a pull request or a comment, or merges one, and the connection drops, times out, or a gateway answers 502 before Bitbucket does. Bitbucket may already have applied it. bb used to report that as transient, exit 10, which is the code retry wrappers act on, so a retry could create the same pull request or comment twice.
    • Now. Such a failure is unknown_outcome and exits 13, outside the retry range, and the message says to check whether the change landed before sending it again.
    • What still exits 10. A failure before the request left the machine, and a delete or an update whose answer is lost: repeating those cannot create a second anything, so bb retries them itself (ADR-009).
  • Releases you can verify, and a self-update that stays on https unless you allow otherwise. This matters if you check what you install or mirror releases internally; the steps are in Release Verification.
    • Per-archive SBOMs (#584). Each release archive now has its own SBOM, published beside it as .spdx.json: the list of every module the binary inside it is built from, which vulnerability scanners and compliance reviews read. The .deb and .rpm are covered by the _noupdate archive's.
      • It is generated from that binary, because each platform links different modules.
      • It is attested against the archive, so gh attestation verify proves the SBOM describes that archive.
      • It replaces the single sbom.spdx.json, which inventoried the build checkout rather than any binary.
    • https for update mirrors (ADR-059). bb update fetches release mirrors over https, because over plain HTTP anyone on the network path can read or hold back what the mirror serves.
      • A mirror without TLS needs bb update --allow-http or BB_ALLOW_HTTP_UPDATE=1; without one of them the update is refused (exit 2).
      • In system policy, allow_http_update: true permits it for every user without the flag, and allow_http_update: false refuses it for every user (exit 3).
    • Pinned actions. The workflow that builds and signs releases runs GitHub Actions pinned to exact commits, so a moved tag cannot change what builds the binary.
    • Windows and macOS CI. The unit suite runs natively on Windows and macOS as well as Linux. Fixes: v4.0.0 decisions the binary now keeps everywhere
  1. Every destructive delete confirms (ADR-073).
    • The rule: destructive commands confirm when a person is present and require --yes when not, and --yes is inert on a repository inferred from the git remote.
    • v4.0.0 enforced it for bb repo delete, bb repo admin delete and bb auth gpg-key clear. Every command whose last word is delete, remove, revoke or clear now follows it: 37 of them, including bb branch delete, bb tag delete, bb webhook delete, bb build delete, bb insights report delete, bb pr review reviewer remove, bb repo permissions revoke and bb auth token revoke.
    • In a pipeline, pass --yes and name the target explicitly: --repo PROJECT/slug, or BITBUCKET_PROJECT_KEY and BITBUCKET_REPO_SLUG. A repository bb took from the git remote does not count, and --json needs --yes even at a terminal.
  2. Invalid arguments exit 2, as the v4.0.0 notes promised. A subcommand that a command group does not know printed the group's help and exited 0, which put prose on stdout under --json. It now exits 2 (validation), and the help goes to stderr.
  3. Error kinds match the taxonomy (ADR-011, #574).
    • A rejected TLS certificate or a DNS failure is permanent (exit 1). It is not transient (exit 10), which invites a retry that cannot succeed.
    • A 401 that refuses a known user is authorization, not authentication.
  4. A capped listing says it was capped (ADR-074, #573). --limit has capped the total since v4.0.0. Every listing that takes it now also reports meta.limitReached, and MCP results (limit_reached) and text output say so too. bb insights annotation list also applies the default limit of 25 it had been ignoring; pass --all for every annotation. Other fixes worth knowing
  • Error messages no longer carry raw Bitbucket responses.
    • An upstream response body is summarised, and credentials in it are redacted, before it reaches a message. Some bodies ran to 18 KB.
    • error.details carries upstreamStatus and, when Bitbucket names one, upstreamException.
    • --full-error-body prints the whole body when you need it.
  • --dry-run changes nothing on the local machine either (#571). Twelve commands used to apply their change under --dry-run and now preview it: bb auth login, logout, alias add, alias discover, alias remove, server use, setup-git, bb ai skill install and skill remove, bb clone, bb repo clone and bb pr checkout. bb ai mcp serve --dry-run is refused rather than started, because a running server cannot be previewed (#568).
  • A configuration file bb cannot read is an error, not an empty file (#567).
    • Commands name the file, point at bb doctor, and stop with permanent (exit 1), instead of reporting that you are not logged in with validation (exit 2).
    • bb auth login and bb auth logout no longer rewrite a file they could not read, which removed every other host.
    • BB_DISABLE_STORED_CONFIG=1 no longer reads the stored file at all. Deprecation
  • bb bulk is deprecated and is removed in v5.0.0 (ADR-084).
    • It warns once per invocation on stderr, so --json output stays clean.
    • Permissions, webhooks and default tasks set at project level already apply to every repository in the project. For anything else, loop over bb repo list. The full change ledger follows. Changes since v4.0.0. Compare: v4.0.0...v4.1.0 All 196 changes Features
  • update: update URLs are https unless plain HTTP is explicitly allowed (7c3c01e)
  • bb doctor checks the configuration bb would load (fe6962d)
  • repo: bb repo get describes a repository and prints its README, with gh's view as an alias (3152a9a)
  • pr: bb pr ready marks a draft ready for review without asking for its version (dc27824)
  • errors: unknown_outcome, for a request whose result never came back (7dfbf6b)
  • safety: install the destructive confirmation from one walk (a3621a2)
  • safety: confirm before deleting a branch, a tag or a webhook (56ed0a4)
  • bulk: deprecate bb bulk, and add the machinery that remembers (7d6332d)
  • pr: register the gh spellings so muscle memory resolves (bbd53fa) Fixes
  • release: ask jq for the one conclusion instead of piping into head (72b82fa)
  • release: keep a prerelease tag from deciding the next release (b6de809)
  • pr: let each half of an alias name the other, and prove doctor asks nothing (812a9b9)
  • errors: ignore a status that is not one, and tidy what the refactors left (1f726b5)
  • quality: count the endpoints bb calls from outside the services (09d6385)
  • errors: a 2xx is not proof that a mutation landed (0518320)
  • update: read the mirror as policy, and warn on the plain HTTP it reaches (ed04460)
  • pr: read the version bb pr update needs instead of demanding it (e0d699b)
  • cli: answer a request for help instead of refusing it (44a66a4)
  • cli: make the destructive confirmation say what it means (7c0b200)
  • errors: keep the transport's classification through three wrappers (3b1f04f)
  • auth: give bb auth status its TLS remedy back (d15f3a0)
  • errors: a status that arrived is the outcome (6d4346c)
  • errors: a server that refuses the handshake is permanent (54f3790)
  • doctor: report the refusals bb update would meet (51bad61)
  • config: do not let an unreadable registry policy switch a control off (7fe30c9)
  • errors: close the redaction gaps an upstream body can use (1eaf15a)
  • git: keep a clone credential out of git's command line (4243b75)
  • config: bind a stored credential to the host it was stored for (ba23a13)
  • auth: keep the git remote out of a token's scope (d3f093c)
  • cli: answer an interrupt that finds bb blocked on a read (8757850)
  • errors: show a JSON envelope under --full-error-body too (edcf1ea)
  • test: wait for Bitbucket to rescope the pull request before rebasing it (56ffc9f)
  • update: say which address was refused, and which policy refused it (a6c3502)
  • config: find a path part's name on disk in one pass that Linux runs in full (7963ded)
  • config: one keyring key per config file where the file system ignores case (e439e43)
  • errors: a 401 that refuses a known caller is authorization (b1060e6)
  • doctor: bb doctor exits 1 for any issue, with every issue in error.details (ac68f3b)
  • pr: review complete without a draft review names the command that sets the status (af1d650)

Installer type: zip

x64—7EC28582BB2E39AF6BAC8AA4E4AEA9568502A58A4F33C5F824E83659D4248D1F

Details

Homepage
https://github.com/vriesdemichael/bitbucket-server-cli
License
Apache-2.0
Publisher
vriesdemichael
Support
https://github.com/vriesdemichael/bitbucket-server-cli/issues

Tags

atlassianbitbucketbitbucket-data-centerbitbucket-serverciclidevopsgolangmcppull-requests

Older versions (63)

4.0.0
x64—BF06762E135165FE31A3C8CDE04C21FC4928BD3185727C3BEFBE6E61D04889A4
3.5.2
x64—097A6EDA9152209BF5DD7F169754D6DC7779FF181E5C5EF42123C9EB5D2426AB
3.5.1
x64—5880621F7D24C07B131113CF28A7909737988CC0D97C78A87FEBB311C8F23FAA
3.5.0
x64—890F9751EE86EFA15F19DB0B219BBD9C4B79F873BA61A76A261F200922D497E8
3.4.0
x64—0AC8615CF830B86E4BC56FA4DB10CFEF770972DD59565201DE7F7808CDE4E521
3.3.2
x64—93DDF0A5CE370C6EB7EDFABED242601BB6A8CD7606D896DD719328C23286D44A
3.3.1
x64—ADAF27BFFFC00A906450A550EE8F8FBF7E570061FC5B6E9E9D7AC200F2307841
3.3.0
x64—2B6D46B2168CBF08BC99E2B92747D400E7D7441D713379FA2371DC6C2B7BFACF
3.2.0
x64—90FE637D3AE2E2605D4F996D7757476E9731EBF2182627C242E319D306ACE7FD
3.1.0
x64—5E7E020E8F6DBF801E234104A1803E453012D370565D5699F61455AEDF9DA24B
3.0.0
x64—BC12EB55402DC98B37F6DB0E595D198308A119080F16C2A1AD11842B618F184F
2.12.0
x64—F6B4F9D204C8CD614C861A555FD84649E217026E7724F43AB8C9B88BE5C6C83C
2.11.0
x64—3BEC8B5A169B5C13BFF6E58A4684C442900BD157D2E58D759DDC51463C92D7F1
2.10.0
x64—8D7B8B56BF688A312D2E53B742065F44F80D4765063172EEC8B5D2902C9BD56E
2.9.1
x64—9957214CF05704FF8C91BD75A55A1EB00BDE96687E9BBAB88C4A044F5BFDF8AA
2.9.0
x64—2E2744E75A5BAFC78A5211F3BC77BF5530A73A0EDBFEC06F7DB017F0CDC552FA
2.8.0
x64—C23853E4EFF4CD3B467CEE861C57E9C317F927F102CDF886100F313E3B7F79D3
2.7.3
x64—6A061CB32D09B3A8EA2B38E56E526509933CA764AA8B7C3B1052F000708F3CE5
2.7.2
x64—75ED3E52411E4B37B2E927C8F699E789153FADE396F1B3AD0F5C6BF2764E5785
2.7.1
x64—6656469EE298E07A4633F27776A5863ACDF36C0B6B80625DE5A1AE632DE129C4
2.7.0
x64—2A8AABC9DA0624AE77DF42EE5F1FFA1EEBBE1F0459805E6306006094DB569344
2.6.2
x64—5317F4F5A6CA5783CBD57909F0DBD72406D0545CB2AC8B127B8180C1F0238FD7
2.6.1
x64—00ED39BE21BBBDC0377BB477B9A9223F67B72FA258F6843889DB9F93071407CE
2.6.0
x64—00397C415A9D95C78DC453F35E7255CBF9B3452A9E5073C177D07776B79A548A
2.5.0
x64—785189610909328F2C02906E14C515260CDBC8B8B206E0BC3673BC5C3F23E329
2.4.0
x64—2AEA703AF903416B74C52461C877FDCF7825AB183378406B59DA41CE0B18236A
2.3.0
x64—E468D0BB3260393B2BCE2EA736E4C17D3B283E1897960E19A6B63AC9F2AD8742
2.2.0
x64—51AF751CA42A8FE8D14D6FB28B89D8AFBCBB4208BF3DBF579400B465887D271F
2.1.0
x64—50A6522EDF9A3A3382937DE791701EE6CB8EB159EA9DA860960E228E5F2602DB
2.0.7
x64—CA8972BA00EF267C5224FDFDBBFB981FD04E7F00EC9547FD00D306892E2A66F2
2.0.6
x64—1F32653EC9E737CB81E6277A2A477859D475E15D99B9933CF00062108DF7857D
2.0.5
x64—E07B0B1AEC02E2CD96BA5444E510E2EBA6A885B979B6936B11EFE8574BA60B7F
2.0.4
x64—C0DF5A56996EE8269A8905BB130AC1B87802DC5D27B66CD099C25E0B6DD12991
2.0.3
x64—D44241AFEEA325E744DDCFF261DF58DC7F6516F21A9CEFE26602B9F2647CC8C4
2.0.2
x64—2DB15F0B92AADF66E83CD978D6DC942D30F4A81DA1122BD8F4282F5816618A98
2.0.1
x64—B91B036C16315C548D0CFB3B89D42D7CC60FA6DE815EC10941B19CA871EE0745
2.0.0
x64—A9B4561FF968C0C9D560D732E779FD84D932CF79407147A665F0EF1A47F3574C
1.38.2
x64—CBA98D92CD82496BD7E9FE7D9A70FD7DDA6CB86AD4B1CB1195C5556C4CEF8DD4
1.38.1
x64—D5DECC50E69497120B87A10BDFB4F2B7FC69FEEF963955998E07252E1C3CF709
1.38.0
x64—A71157C90CEC2DE528CB64AC0F9B5F379A7D7744D3729514C2D7DE5C94F7406B
1.37.3
x64—96C20A97EA9A07ACE90CB40BCAB9E014AE1712B1D7D559A99C824692743DAE77
1.37.2
x64—4CDBBBDCAD624E46B28881E87F050DDD677F2B8070ECB9AF0623D3ABAEB28C0D
1.37.1
x64—7265D3B0F5B3177697C99E2A9F86F280D55D31FDA48C53FD65C8036733798D19
1.37.0
x64—9872667C50004ABC3B49DDE5BC2ECB8EC1CCD8028A90038AB49285A2787512C7
1.36.0
x64—376DA8D1178606B6D36D56761A768FD98634D8B566F2DE828256758C59F85D8C
1.35.2
x64—4F86E75ECDD67239C369E6DB17BDADD5DEF2E2F9986C1036E6B25DC4CB470921
1.35.1
x64—3850FB7D227014912FCF0022D46D242CA86594D39DE97BA45A530B154488B345
1.21.0
x64—B8EBA36B817CA579AE72AE08DE6F9AC615FE151F4000D9D8B9B6A9F6F9C9F85B
1.20.1
x64—78C4CF87D59F4F89CD6849B8393FFECA5B6D6BDCFF2E12B4DF542BDB268B83AE
1.20.0
x64—6993FFE6C3E79FA6C20A0198359B0208686ED162F9FAAC22FB497667BDDF37CC
1.19.2
x64—BE4FF8EFB340D903C6DF829A0D4068790B0DDFD18DC2D0D235E4678071E18344
1.19.1
x64—4400D7702532E080D358E217B83F0C7777701C6BE48DEE6D6CE7CF7833E5C9AC
1.19.0
x64—E9E8AA59318FC1F7916CB6E03175157439B038BE331A17A684A2BD20215CB0BB
1.18.12
x64—CDA028976B16A5B70C5656463ADE7CBF51DD659896E6FFAFA8074D62C0F55D5B
1.18.11
x64—D41397BB1D2A0A4A89E1C2173DA163F7282BE21AF2523A7041FFD590965A893F
1.18.10
x64—54C1CBCC09DA6EBEEE9A6D1B88B914011FC7EAB527BF75A05ED21F4E2D247A71
1.18.9
x64—5BAB826193F8F3C6D69E801689CE001AC690E321B0A61914CA798A7FF8B18245
1.18.8
x64—39A90F0D416A1F53DACA0EDB2383387679432CD725D20826EA47D9D7901D75AC
1.18.7
x64—AEF6396728057CFC6065EFD7FA527DB834A0A6C83BD0AA566C6D906F6E6C825D
1.18.6
x64—39F3D3EEF61797A753C383D5350DEA2623AEA9147C1B025AEFB319DF6882CD73
1.18.5
x64—20288102940F794562A9EBC57A959BD399ACCFC40F262A21CDAAB19586E1C5BB
1.18.4
x64—E416EFF7E2135B60279A1158C4ED9017E25120F5B8691F6F2BA14EE96175491D
1.15.0
x64—3F9B46C0EF390DD8D93138A7420DEBB50C2D00A3BEE11EE532566570B037A81F