bitwarden/server · error · BadRequestException

Cannot autoscale on a self-hosted instance.

Error message

Cannot autoscale on a self-hosted instance.

What it means

Error "Cannot autoscale on a self-hosted instance." thrown in bitwarden/server.

Source

Thrown at src/Api/AdminConsole/Controllers/OrganizationUsersController.cs:785

    [HttpPut("enable-secrets-manager")]
    [Authorize<ManageUsersRequirement>]
    public async Task BulkEnableSecretsManagerAsync(Guid orgId,
        [FromBody] OrganizationUserBulkRequestModel model)
    {
        var orgUsers = (await _organizationUserRepository.GetManyAsync(model.Ids))
            .Where(ou => ou.OrganizationId == orgId && !ou.AccessSecretsManager).ToList();
        if (orgUsers.Count == 0)
        {
            throw new BadRequestException("Users invalid.");
        }

        var additionalSmSeatsRequired = await _countNewSmSeatsRequiredQuery.CountNewSmSeatsRequiredAsync(orgId, orgUsers.Count);
        if (additionalSmSeatsRequired > 0)
        {
            // Self-hosted instances can't autoscale their Stripe subscription, so reject before touching billing.
            if (_globalSettings.SelfHosted)
            {
                throw new BadRequestException(new V2_UpdateUserCommand.CannotAutoscaleSecretsManagerSeatsOnSelfHost().Message);
            }

            var organization = await _organizationRepository.GetByIdAsync(orgId);
            var plan = await _pricingClient.GetPlanOrThrow(organization!.PlanType);
            var update = new SecretsManagerSubscriptionUpdate(organization, plan, true)
                .AdjustSeats(additionalSmSeatsRequired);
            await _updateSecretsManagerSubscriptionCommand.UpdateSubscriptionAsync(update);
        }

        foreach (var orgUser in orgUsers)
        {
            orgUser.AccessSecretsManager = true;
        }

        await _organizationUserRepository.ReplaceManyAsync(orgUsers);
    }

    /// <summary>

View on GitHub (pinned to e93b962371)

Solutions

  1. Set explicit seat counts instead of using autoscale; self-hosted instances manage seats via the license.
  2. Contact Bitwarden sales/support to adjust the licensed seat count for the self-hosted installation.

When it happens

Trigger: Thrown when a request attempts to enable or use seat autoscaling on a self-hosted Bitwarden instance, where autoscaling is only supported on the cloud service.

Common situations: See trigger scenarios.


AI-assisted analysis of bitwarden/server@e93b962371 (2026-08-13). Data as JSON: /api/errors/fad6ee5a11f2e2aa. Report an issue: GitHub.