Skip to content

Frontend: login/signup block any email containing "@agpt.co" (agpt.com, agpt.co.uk, ...) with a Google SSO message #15290

Description

@capy-ai

Summary

The login and signup pages refuse password auth for any email containing the substring @agpt.co and tell the user to "use Google SSO", which also matches unrelated domains such as agpt.com, agpt.co.uk or agpt.company. The server-side guard added for the same rule only matches the exact domain agpt.co, so the two halves disagree.

Affected code

  • autogpt_platform/frontend/src/app/(no-navbar)/login/useLoginPage.ts:98 (data.email.includes("@agpt.co"))
  • autogpt_platform/frontend/src/app/(no-navbar)/signup/useSignupPage.ts:127 (same check)
  • Reference behavior: autogpt_platform/frontend/src/lib/auth/team-email-policy.ts:14-29 (isTeamEmail compares the domain exactly and case-insensitively; its doc comment says "Only the exact domain counts" and "The sign-up page refuses these addresses in the browser; this is the server half").

Trigger / steps to reproduce

  1. Open /signup (or /login) and enter an email such as someone@agpt.com, someone@agpt.co.uk or someone@agpt.company, plus a valid password.
  2. Submit.
    "someone@agpt.com".includes("@agpt.co") is true (also for .co.uk, .company, .coffee...), so the handler shows "Please use Google SSO ..." and returns before calling the server action.

Expected vs actual

Expected: only addresses whose domain is exactly agpt.co are routed to Google SSO (like isTeamEmail); agpt.com etc. use normal password auth.
Actual: anyone whose domain merely starts with agpt.co cannot sign up or log in with a password from the UI, and gets a message about "an AutoGPT email" that does not apply to them (no workaround on the page since SSO only vouches for real agpt.co Google accounts). In the other direction SOMEONE@AGPT.CO is not caught by the client check (case-sensitive) but is caught by the server.

Severity

Low. Affects only users on look-alike domains, but for them signup/login is blocked entirely.

How confirmed

Read both handlers and team-email-policy.ts; ran the exact expression in Node: a@agpt.com, a@agpt.co.uk, a@agpt.company -> true; a@previews.agpt.co -> false; A@AGPT.CO -> false. Not verified in a browser.

Fix feasibility

Yes: reuse isTeamEmail from lib/auth/team-email-policy.ts (it has no server-only imports besides APIError type use; if that import is a concern, extract the pure domain check) instead of includes.

Activity

  1. ntindle commented on Oct 8, 2026

    @ntindle
    Member

    Backfill validation: reproduced

    Image: significantgravitas/autogpt:latest @ sha256:122929723f57b8927af016d606ae21b21c03a012c2de1d9c30b1c8359e9157f1 (Hub v0.8.3 / sha-73cae306b4f6b197d2e1eaaa3162c326ec0ab076 / oci_revision 73cae306b4f6b197d2e1eaaa3162c326ec0ab076), pulled 2026-10-08 13:08 CT (ok_up_to_date), run sweep-20261008T1808.

    Verdict: reproduced (built frontend bundle plus node evaluation)

    What we checked

    The built login and signup chunks contain a.email.includes("@agpt.co") and show the "Please use Google SSO…" toast. In node this returns true for someone@agpt.com, someone@agpt.co.uk and someone@agpt.company, and false for SOMEONE@AGPT.CO.

    Limits

    Did not submit the form in a browser.

    Suggestion

    Reuse the exact, case-insensitive isTeamEmail domain check on the client.

    Host evidence: /workspace/autogpt-backfill/evidence/15290/sweep-20261008T1808/ (host-local)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions