beekeeper-studio/beekeeper-studio · error

Memberships are only available in cloud workspaces

Error message

Memberships are only available in cloud workspaces

What it means

UtilMembershipModule deliberately throws for every local mutation/action via the localOnly helper. Memberships are a cloud-workspace-only concept, so the module intentionally rejects all local operations (save, remove, etc.) instead of storing membership data in the local database.

Source

Thrown at apps/studio/src/store/modules/data/membership/UtilMembershipModule.ts:12

import _ from "lodash";
import { IMembership } from "@/common/interfaces/IMembership";
import {
  DataState,
  DataStore,
  mutationsFor,
} from "@/store/modules/data/DataModuleBase";

type State = DataState<IMembership>;

const localOnly = () => {
  throw new Error("Memberships are only available in cloud workspaces");
};

export const UtilMembershipModule: DataStore<IMembership, State> = {
  namespaced: true,
  state: {
    items: [],
    loading: false,
    error: null,
    pollError: null,
  },
  mutations: mutationsFor<IMembership>({}, { field: "name", direction: "asc" }),
  actions: {
    async initialize() {
      // noop
    },
    async load() {
      // no-op: memberships are cloud-only
    },

View on GitHub (pinned to 4e3e03e322)

Solutions

  1. Check the current workspace type before touching membership actions: only call them for cloud workspaces.
  2. Gate membership UI/sync behind the cloud-workspace flag in the store or component.
  3. Wrap calls in try/catch and ignore the error for local workspaces if the operation is optional.
  4. Use the correct cloud membership module/API instead of the local util module.

Example fix

// before
store.dispatch('data/utilMembership/save', membership);
// after
if (store.state.workspace?.type === 'cloud') {
  store.dispatch('data/utilMembership/save', membership);
}
Defensive patterns

Strategy: type-guard

Validate before calling

if (store.state.utilWorkspace?.isCloud !== true) return; // skip membership ops for local workspaces

Type guard

function isCloudWorkspace(ws: { type?: string } | null | undefined): ws is { type: 'cloud' } {
  return ws?.type === 'cloud';
}

Try / catch

try {
  store.dispatch('data/utilMembership/save', membership);
} catch (e) {
  if (!/cloud workspaces/.test(e.message)) throw e; // ignore on local workspace
}

Prevention

When it happens

Trigger: Any commit/dispatch against the 'utilMembership' store namespace (e.g. utilMembership/save, utilMembership/remove) while not connected to a cloud workspace, or any code path invoking these actions unconditionally.

Common situations: Calling membership sync code in a local (non-cloud) workspace; feature code that assumes a cloud connection and calls membership actions unconditionally; tests running without a cloud workspace context.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of beekeeper-studio/beekeeper-studio@4e3e03e322 (2026-08-31). Data as JSON: /api/errors/195fac38af39c605. Report an issue: GitHub.