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
- Relaunch the app normally (without the blank-slate/test-profile flags) before installing desktop integration.
- Hide or disable the desktop-integration install UI when a test profile is active.
- Skip the integration step in test/E2E flows and assert status only via desktopIntegrationStatus.
- 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
- Hide desktop-integration controls when a test/blank-slate profile is active.
- In E2E specs, assert desktopIntegrationStatus instead of calling install/remove.
- Document that OS-integration features require a normal user profile launch.
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
- A valid transferId is required.
- transferId is already active.
- Could not start OpenWork UI control bridge.
- Electron desktop helper is unavailable: ${command}
- Electron desktop helper is unavailable: ${prop}
AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01).
Data as JSON: /api/errors/91af9d1e9eeaf488.
Report an issue: GitHub.