Mintplex-Labs/anything-llm · error · Error

Username must be at least 2 characters

Error message

Username must be at least 2 characters

What it means

Thrown by User.validations.username when the stringified input is shorter than 2 characters. The username regex and length bounds together require 2-64 characters. Runs on user create and on username update paths.

Source

Thrown at server/models/user.js:41

    "role",
    "suspended",
    "dailyMessageLimit",
    "bio",
  ],
  validations: {
    /**
     * Unix-style username regex:
     * - Must start with a lowercase letter
     * - Can contain lowercase letters, digits, underscores, hyphens, @ signs, and periods
     * - 2-64 characters long
     */
    username: (newValue = "") => {
      try {
        const username = String(newValue);
        if (username.length > 64)
          throw new Error("Username cannot be longer than 64 characters");
        if (username.length < 2)
          throw new Error("Username must be at least 2 characters");
        if (!User.usernameRegex.test(username))
          throw new Error(
            "Username must start with a lowercase letter and only contain lowercase letters, numbers, underscores, hyphens, and periods"
          );
        return username;
      } catch (e) {
        throw new Error(e.message);
      }
    },
    role: (role = "default") => {
      const VALID_ROLES = ["default", "admin", "manager"];
      if (!VALID_ROLES.includes(role)) {
        throw new Error(
          `Invalid role. Allowed roles are: ${VALID_ROLES.join(", ")}`
        );
      }
      return String(role);
    },

View on GitHub (pinned to 526360e320)

Solutions

  1. Provide a username of at least 2 characters.
  2. If generating handles programmatically, pad or choose a longer base name.
  3. Validate length on the client before submit.
Defensive patterns

Strategy: validation

Validate before calling

if (typeof username !== 'string' || username.trim().length < 2) {
  throw new Error('Username must be at least 2 characters');
}

Type guard

const isMinLengthOk = (u) => typeof u === 'string' && u.length >= 2;

Prevention

When it happens

Trigger: Creating or updating a user with a single-character username, or an empty/whitespace string (once coerced).

Common situations: Form allows a 1-character handle. Automated import maps an empty field to a placeholder single character. Typo in a migration script.

Related errors


AI-assisted analysis of Mintplex-Labs/anything-llm@526360e320 (2026-08-13). Data as JSON: /api/errors/6942a1367a47bde5. Report an issue: GitHub.