jackwener/OpenCLI · error · AuthRequiredError

auth

Error message

auth

What it means

An AuthRequiredError raised by verifyDribbbleIdentity when the in-page identity probe returns { kind: 'auth' }, meaning the page loaded but Dribbble redirected the user to a login state — the session cookie exists or the page loaded, but the identity endpoint reports an unauthenticated visitor. The wrapped result.detail explains what the page reported.

Source

Thrown at clis/dribbble/auth.js:27

    await page.goto(DRIBBBLE_ORIGIN);
    // Dribbble serves an AWS WAF challenge before the real document on fresh
    // tabs. Three seconds is not enough consistently; probing early turns a
    // valid session into a false AUTH_REQUIRED result.
    await page.wait(5);
    const result = await page.evaluate(`(() => {
        const profile = document.querySelector('a[title="Open profile"]');
        const signOut = document.querySelector('form[action$="/session"] input[name="_method"][value="delete"]');
        const href = profile?.getAttribute('href') || '';
        if (!signOut || !/^\\/[^/]+$/.test(href)) {
            return { kind: 'auth', detail: 'Dribbble header does not show a logged-in profile' };
        }
        return {
            ok: true,
            username: href.slice(1),
            profile_url: new URL(href, location.href).href,
        };
    })()`);
    if (result?.kind === 'auth') throw new AuthRequiredError(DRIBBBLE_HOST, result.detail);
    if (!result?.ok) throw new CommandExecutionError(`Unexpected Dribbble identity response: ${JSON.stringify(result)}`);
    return { username: result.username, profile_url: result.profile_url };
}

registerSiteAuthCommands({
    site: 'dribbble',
    domain: DRIBBBLE_HOST,
    loginUrl: `${DRIBBBLE_ORIGIN}/session/new`,
    columns: ['username', 'profile_url'],
    quickCheck: hasDribbbleSessionCookie,
    verify: verifyDribbbleIdentity,
    poll: async (page) => {
        if (!await hasDribbbleSessionCookie(page)) {
            throw new AuthRequiredError(DRIBBBLE_HOST, 'Waiting for Dribbble session cookies');
        }
        return verifyDribbbleIdentity(page);
    },
});

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Re-login to dribbble.com in the managed browser and retry the command.
  2. Retry after a longer delay so the AWS WAF challenge completes before the identity probe runs.
  3. Clear stale dribbble.com cookies and perform a fresh login.
  4. Check result.detail in the error message for the specific auth wall the page reported.
Defensive patterns

Strategy: retry

Try / catch

try {
  await run('dribbble auth');
} catch (e) {
  if (e.name === 'AuthRequiredError') {
    await run('dribbble login'); // session present but rejected — re-authenticate
    return run('dribbble auth');
  }
  throw e;
}

Prevention

When it happens

Trigger: Calling `dribbble auth` where the in-page script detects a login redirect/auth wall (result.kind === 'auth') — typically a session cookie that is present but expired/invalid, or the AWS WAF challenge page replacing the real document.

Common situations: Expired Dribbble session (cookie survives but token invalid server-side); the 5-second WAF wait insufficient so the probe ran against the challenge page; login revoked from another device.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/5a10cd16aaa893c5. Report an issue: GitHub.