What hook to add at start of WordPress load

The earliest hook accessible from external code is muplugins_loaded. In order to use it, create a directory mu-plugins in your wp-content directory and put a PHP file into that directory.

Sample code, will have side effects(!):

add_action( 'muplugins_loaded', function() {
    print current_filter();
});

This is, of course, not “before anything else in WordPress executes”. WordPress has to run some code to load such a mu-plugin. You can find the hook it in /wp-settings.php. Right above that call, you can see what happens before.

The real question here is why you think you need to run code so early. This is almost never needed.

If you want to require a log-in for some sites, wait for plugins_loaded (is_user_logged_in() doesn’t work earlier) and do something like this:

add_action( 'plugins_loaded', function() {

    if ( is_user_logged_in() )
        return;

    $protected_sites = [1, 4, 7];

    if ( in_array( get_current_blog_id(), $protected_sites ) )
        auth_redirect();
});