different-ai/openwork · error · DenApiError

desktop_signup_deprecated

desktop_signup_deprecated

Error message

Create your account in the browser to choose a secure password.

What it means

signUpEmail is intentionally unsupported: desktop email/password signup was deprecated in favor of the browser-based Den signup flow (which provides password-strength feedback and invite handling). Any call throws a 410 Gone DenApiError with code "desktop_signup_deprecated". The parameters are ignored.

Source

Thrown at apps/app/src/app/lib/den.ts:2941

    async signInEmail(email: string, password: string): Promise<DenAuthResult> {
      const payload = await requestJson<unknown>(baseUrls, "/api/auth/sign-in/email", {
        method: "POST",
        body: {
          email: email.trim(),
          password,
        },
      });
      return { user: getUser(payload), token: getToken(payload) };
    },

    /**
     * @deprecated Desktop email/password signup is no longer supported directly.
     * Open the Den browser signup flow with `buildDenAuthUrl(baseUrl, "sign-up")`
     * so password-strength feedback and invite handling stay server-compatible.
     */
    async signUpEmail(_email: string, _password: string): Promise<DenAuthResult> {
      throw new DenApiError(
        410,
        "desktop_signup_deprecated",
        "Create your account in the browser to choose a secure password.",
      );
    },

    async signOut() {
      await requestJson<unknown>(baseUrls, "/api/auth/sign-out", {
        method: "POST",
        token,
        body: {},
      });
    },

    async getSession(): Promise<DenUser> {
      const payload = await requestJson<unknown>(baseUrls, "/v1/me", {
        method: "GET",
        token,

View on GitHub (pinned to 2b7df46e8a)

Solutions

  1. Replace signUpEmail calls with opening buildDenAuthUrl(baseUrl, "sign-up") in the browser
  2. Route the user through the browser signup and complete sign-in via the desktop handoff flow
  3. Remove dead signup UI from the desktop app

Example fix

// before
await client.auth.signUpEmail(email, password);
// after
openExternal(buildDenAuthUrl(baseUrl, "sign-up"));
const result = await exchangeHandoffAndSignIn(grant, { baseUrl });
Defensive patterns

Strategy: validation

Validate before calling

const supportsDesktopSignup = false; // deprecated upstream
if (wantsSignUp) openExternal(buildDenAuthUrl(baseUrl, "sign-up"));

Try / catch

try {
  await client.auth.signUpEmail(email, password);
} catch (err) {
  if (err instanceof DenApiError && err.code === "desktop_signup_deprecated") {
    openExternal(buildDenAuthUrl(baseUrl, "sign-up"));
  } else throw err;
}

Prevention

When it happens

Trigger: Calling client.auth.signUpEmail(email, password) directly from the desktop app.

Common situations: Old code paths or custom scripts written before the deprecation that attempted in-app account creation.

Related errors


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