AlistGo/alist · error

user not found: %w

Error message

user not found: %w

What it means

Returned by authenticateToken (server/mcp/auth.go:75) when the JWT parsed fine but op.GetUserByName(claims.Username) fails — the username encoded in the token no longer exists in the database. The token's signature and expiry are valid; the account behind it was deleted.

Source

Thrown at server/mcp/auth.go:75

		}
		if guest.Disabled {
			return nil, fmt.Errorf("guest user is disabled")
		}
		if err := loadRoles(guest); err != nil {
			return nil, err
		}
		return guest, nil
	}

	// JWT token
	claims, err := common.ParseToken(token)
	if err != nil {
		return nil, fmt.Errorf("invalid token: %w", err)
	}

	user, err := op.GetUserByName(claims.Username)
	if err != nil {
		return nil, fmt.Errorf("user not found: %w", err)
	}

	if claims.PwdTS != user.PwdTS {
		return nil, fmt.Errorf("password has been changed")
	}
	if user.Disabled {
		return nil, fmt.Errorf("user is disabled")
	}

	if err := loadRoles(user); err != nil {
		return nil, err
	}
	return user, nil
}

func loadRoles(user *model.User) error {
	if len(user.Role) > 0 {
		roles, err := op.GetRolesByUserID(user.ID)

View on GitHub (pinned to 843d9dc814)

Solutions

  1. Re-login as an existing user and replace the token in the MCP configuration
  2. Remove stale credentials from tooling when accounts are deleted
  3. Purge cached tokens on auth failures instead of retrying them
Defensive patterns

Strategy: fallback

Try / catch

if err != nil && strings.Contains(err.Error(), "user not found") { invalidateCachedToken(); promptReLogin() }

Prevention

When it happens

Trigger: An MCP client keeps using a login token after the referenced user account was deleted from the admin panel; a database restore that dropped user rows while tokens persisted in clients.

Common situations: Offboarding a user while their automation tokens remain configured; environments rebuilt from partial backups.

Related errors


AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15). Data as JSON: /api/errors/48c7244d0da0ad47. Report an issue: GitHub.