Skip to content

update from Bitbucket private repositories: HTTP 401 errors since end of February 2026 (possible OAuth 1 → OAuth 2 change) #605

@garubi

Description

@garubi

Hello,

I have been using plugin-update-checker for several years to distribute updates for private plugins hosted on Bitbucket Cloud repositories.

The setup has been stable for years, but starting recently (around early March 2026) all update checks against Bitbucket private repositories started failing with HTTP 401 errors.

Nothing has changed in my plugins or configuration.

Environment

  • WordPress: 6.9.4
  • plugin-update-checker: latest version from this repository
  • Hosting: standard PHP hosting
  • Repository provider: Bitbucket Cloud (private repositories)

Code used

I use the Bitbucket integration with OAuth consumer credentials as described in the documentation:

add_action( 'plugins_loaded', 'pandplan_autoload_library', 0 );
function pandplan_autoload_library(){

   $myUpdateChecker = PucFactory::buildUpdateChecker(
       'https://bitbucket.org/ottomedia/pandora-planning/',
       __FILE__,
       'pandora-planning'
   );

   $myUpdateChecker->setAuthentication(array(
       'consumer_key' => 'XXXX',
       'consumer_secret' => 'YYYY',
   ));
}

This configuration has worked reliably for years.

Errors ### returned

When checking for updates from the WordPress dashboard, I now get:

BitBucket API error. Base URL: "https://api.bitbucket.org/2.0/repositories/ottomedia/pandora-fattureincloud/src/master/readme.txt", HTTP status code: 401.

BitBucket API error. Base URL: "https://api.bitbucket.org/2.0/repositories/ottomedia/pandora-fattureincloud/refs/tags?sort=-target.date", HTTP status code: 401.

BitBucket API error. Base URL: "https://api.bitbucket.org/2.0/repositories/ottomedia/pandora-fattureincloud/refs/branches/master", HTTP status code: 401.

Could not retrieve version information from the repository.

The problem affects all my plugins hosted on Bitbucket private repositories.

Possible cause

My suspicion is that this is related to Bitbucket Cloud authentication changes.

Bitbucket has recently deprecated OAuth 1.0 / legacy authentication and is transitioning to OAuth 2 and access tokens (brownout period started late February 2026).
Reference:
https://developer.atlassian.com/cloud/bitbucket/changelog/
Since plugin-update-checker currently authenticates to Bitbucket using:

consumer_key
consumer_secret

it may rely on the old OAuth flow that Bitbucket is deprecating.

Questions

Are there plans to update the Bitbucket integration to support the new authentication model?

I would be happy to help test any fixes if needed.

Thanks for maintaining this library — it has been extremely useful for distributing private plugin updates.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions