Are you calling Auth::forge()? Without parameters?
You don't need to do that, the default instance (configured in the auth.php config file) in instantiationed automatically when you call your first Auth method.
If you don't need the default instance but a named instance, you need to pass that to Auth::forge().
So the code is wrong in the sense that it should check for an empty $custom array, and throw an exception if that is the case. I'll put that on the todo.
// make sure custom is an array $custom = ! is_array($custom) ? array('driver' => $custom) : $custom;
// driver must be set if (empty($custom['driver']) or ! is_string($custom['driver'])) { throw new \AuthException('No auth driver specified when calling forge().'); }
// Driver is given as array key or just string in custom $config = \Config::get('auth.'.$custom['driver'].'_config', array()); $config = array_merge($config, $custom);
Looked again, weird that you got this error in the first place.
When Auth is called the first time, its init method will create the default instance based on your auth config. So when you call Auth::instance(), it should already exist, and forge() should not be called.
This suggests there is an issue with your auth config.