different-ai/openwork · warning

Desktop integration is disabled for test profiles.

Error message

Desktop integration is disabled for test profiles.

What it means

The desktopIntegrationInstall IPC handler refuses to install OS-level desktop integration (app shortcuts/registrations via linuxDesktopIntegration) when the app was launched in BLANK_SLATE mode — an isolated test/development profile (fresh home/userData) used for deterministic testing. Installing shortcuts from a throwaway profile would pollute the real desktop, so it is hard-disabled.

Source

Thrown at apps/desktop/electron/main.mjs:1862

      return showDesktopNotification(args[0] ?? {});
  },
  "desktopSentrySetSession": async (event, ...args) => {
      const input = args[0] ?? {};
      return {
        enabled: setOpenworkSentrySession({
          userId: input.userId,
          orgId: input.orgId,
        }),
      };
  },
  "desktopSentryClearSession": async (event, ...args) => {
      return { enabled: clearOpenworkSentrySession() };
  },
  "desktopIntegrationStatus": async (event, ...args) => {
      return linuxDesktopIntegration.getStatus();
  },
  "desktopIntegrationInstall": async (event, ...args) => {
      if (BLANK_SLATE_LAUNCH.enabled) throw new Error("Desktop integration is disabled for test profiles.");
      return linuxDesktopIntegration.install(args[0] ?? {});
  },
  "desktopIntegrationRemove": async (event, ...args) => {
      if (BLANK_SLATE_LAUNCH.enabled) throw new Error("Desktop integration is disabled for test profiles.");
      return linuxDesktopIntegration.remove();
  },
  "getUiControlBridgeInfo": async (event, ...args) => {
      try {
        const raw = await readFile(path.join(app.getPath("userData"), "openwork-ui-control.json"), "utf8");
        return JSON.parse(raw);
      } catch {
        return null;
      }
  },
  "getOpenworkUiMcpCommand": async (event, ...args) => {
      if (process.env.OPENWORK_DEV_MODE === "1") {
        return ["node", path.resolve(__dirname, "../../..", "packages/openwork-ui-mcp/index.mjs")];
      }

View on GitHub (pinned to 2b7df46e8a)

Solutions

  1. Relaunch the app normally (without the blank-slate/test-profile flags) before installing desktop integration.
  2. Hide or disable the desktop-integration install UI when a test profile is active.
  3. Skip the integration step in test/E2E flows and assert status only via desktopIntegrationStatus.
  4. If you control the harness, disable BLANK_SLATE_LAUNCH for manual validation runs that need real shortcuts.

Example fix

// before: installing regardless of profile
await window.api.desktopIntegrationInstall({});
// after: gate on profile
if (!isBlankSlateProfile()) {
  await window.api.desktopIntegrationInstall({});
}
Defensive patterns

Strategy: try-catch

Validate before calling

// detect blank-slate/test launch before attempting install
const isTestProfile = process.env.OPENWORK_EVAL_FATAL_DESKTOP_BOOTSTRAP_FAILURE !== undefined ||
  process.env.OPENWORK_BLANK_SLATE === '1';

Try / catch

try {
  await window.api.desktopIntegrationInstall({});
} catch (err) {
  if (err.message.includes('disabled for test profiles')) {
    // expected under blank-slate/test launch — skip, do not retry
    return { skipped: true };
  }
  throw err;
}

Prevention

When it happens

Trigger: Calling the desktopIntegrationInstall IPC (or UI button backed by it) while the app runs with BLANK_SLATE_LAUNCH.enabled — e.g. launched via eval/test harness flags like OPENWORK_EVAL blank-slate profile env variables.

Common situations: Running automated desktop tests/E2E with a blank-slate profile and clicking the desktop-integration install control; a settings screen exercising all IPC handlers regardless of profile.

Related errors


AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01). Data as JSON: /api/errors/91af9d1e9eeaf488. Report an issue: GitHub.