diff --git a/enterprise/backend/src/metabase_enterprise/advanced_config/file/users.clj b/enterprise/backend/src/metabase_enterprise/advanced_config/file/users.clj
index ce989d7003484cf54b7f066486072841ef372373..a03ccb53288bda6f532190316a743c727ba41e44 100644
--- a/enterprise/backend/src/metabase_enterprise/advanced_config/file/users.clj
+++ b/enterprise/backend/src/metabase_enterprise/advanced_config/file/users.clj
@@ -1,8 +1,10 @@
 (ns metabase-enterprise.advanced-config.file.users
   (:require
    [clojure.spec.alpha :as s]
-   [metabase-enterprise.advanced-config.file.interface :as advanced-config.file.i]
+   [metabase-enterprise.advanced-config.file.interface
+    :as advanced-config.file.i]
    [metabase.models.user :refer [User]]
+   [metabase.setup :as setup]
    [metabase.util :as u]
    [metabase.util.i18n :as i18n :refer [trs]]
    [metabase.util.log :as log]
@@ -30,23 +32,16 @@
   [_section]
   (s/spec (s/* ::config-file-spec)))
 
-(defn- init-from-config-file-is-first-user?
-  "For [[init-from-config-file!]]: `true` if this the first User being created for this instance. If so, we will ALWAYS
-  create that User as a superuser, regardless of what is specified in the config file. (It doesn't make sense to
-  create the first User as anything other than a superuser)."
-  []
-  (zero? (t2/count User)))
 
 (defn- init-from-config-file!
   [user]
-  ;; TODO -- if this is the FIRST user, we should probably make them a superuser, right?
   (if-let [existing-user-id (t2/select-one-pk User :email (:email user))]
     (do
       (log/info (u/colorize :blue (trs "Updating User with email {0}" (pr-str (:email user)))))
       (t2/update! User existing-user-id user))
-    ;; create a new user. If they are the first User, force them to be an admin.
+    ;; create a new user. If they are the first non-internal User, force them to be an admin.
     (let [user (cond-> user
-                 (init-from-config-file-is-first-user?) (assoc :is_superuser true))]
+                 (not (setup/has-user-setup)) (assoc :is_superuser true))]
       (log/info (u/colorize :green (trs "Creating the first User for this instance. The first user is always created as an admin.")))
       (log/info (u/colorize :green (trs "Creating new User {0} with email {1}"
                                         (pr-str (str (:first_name user) \space (:last_name user)))
diff --git a/enterprise/backend/test/metabase_enterprise/advanced_config/file/users_test.clj b/enterprise/backend/test/metabase_enterprise/advanced_config/file/users_test.clj
index cb9a970ad67a7cd33ee2fbda6de8b40afb21fadf..97117c32e531d7dba4b6c38375e20f4471ee97e7 100644
--- a/enterprise/backend/test/metabase_enterprise/advanced_config/file/users_test.clj
+++ b/enterprise/backend/test/metabase_enterprise/advanced_config/file/users_test.clj
@@ -2,8 +2,8 @@
   (:require
    [clojure.test :refer :all]
    [metabase-enterprise.advanced-config.file :as advanced-config.file]
-   [metabase-enterprise.advanced-config.file.users :as advanced-config.file.users]
    [metabase.models :refer [User]]
+   [metabase.setup :as setup]
    [metabase.test :as mt]
    [metabase.util.password :as u.password]
    [toucan2.core :as t2]))
@@ -70,7 +70,7 @@
                                                                     :email        "cam+config-file-admin-test@metabase.com"
                                                                     :password     "2cans"
                                                                     :is_superuser false}]}}]
-          (with-redefs [advanced-config.file.users/init-from-config-file-is-first-user? (constantly true)]
+          (with-redefs [setup/has-user-setup (constantly false)]
             (is (= :ok
                    (advanced-config.file/initialize!)))
             (is (partial= {:first_name   "Cam"