diff --git a/res/xml/private_space_hide_locked.xml b/res/xml/private_space_hide_locked.xml
index d166b73..56dd151 100644
--- a/res/xml/private_space_hide_locked.xml
+++ b/res/xml/private_space_hide_locked.xml
@@ -21,7 +21,8 @@
     <com.android.settingslib.widget.IllustrationPreference
         android:key="private_space_hide_illustration"
         settings:searchable="false"
-        settings:lottie_rawRes="@raw/private_space_hide_when_locked_illustration"/>
+        settings:lottie_rawRes="@raw/private_space_hide_when_locked_illustration"
+        settings:controller="com.android.settings.privatespace.HidePrivateSpaceIllustrationController"/>
 
     <com.android.settingslib.widget.MainSwitchPreference
         android:key="hide_when_locked"
@@ -35,7 +36,9 @@
         settings:searchable="false" />
 
     <PreferenceCategory
-        android:title="@string/private_space_access_header">
+        android:key="private_space_access"
+        android:title="@string/private_space_access_header"
+        settings:controller="com.android.settings.privatespace.HidePrivateSpaceCategoryController">
 
         <Preference
         android:key="search_when_locked_footer"
diff --git a/src/com/android/settings/privatespace/HidePrivateSpaceCategoryController.java b/src/com/android/settings/privatespace/HidePrivateSpaceCategoryController.java
new file mode 100644
index 0000000..d754b20
--- /dev/null
+++ b/src/com/android/settings/privatespace/HidePrivateSpaceCategoryController.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import android.content.Context;
+import android.content.res.Resources;
+
+import androidx.annotation.NonNull;
+
+import com.android.settings.widget.PreferenceCategoryController;
+
+public class HidePrivateSpaceCategoryController extends PreferenceCategoryController {
+    public HidePrivateSpaceCategoryController(@NonNull Context context, @NonNull String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if (android.multiuser.Flags.privateSpaceSearchIllustrationConfig()) {
+            boolean configValue =
+                    Resources.getSystem()
+                            .getBoolean(
+                                    com.android.internal.R.bool
+                                            .config_enableSearchTileHideIllustrationInPrivateSpace);
+            return configValue ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+        }
+        return AVAILABLE;
+    }
+}
diff --git a/src/com/android/settings/privatespace/HidePrivateSpaceIllustrationController.java b/src/com/android/settings/privatespace/HidePrivateSpaceIllustrationController.java
new file mode 100644
index 0000000..1606498
--- /dev/null
+++ b/src/com/android/settings/privatespace/HidePrivateSpaceIllustrationController.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import android.content.Context;
+import android.content.res.Resources;
+
+import androidx.annotation.NonNull;
+
+import com.android.settings.core.BasePreferenceController;
+
+public class HidePrivateSpaceIllustrationController extends BasePreferenceController {
+
+    public HidePrivateSpaceIllustrationController(@NonNull Context context, @NonNull String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if (android.multiuser.Flags.privateSpaceSearchIllustrationConfig()) {
+            boolean configValue =
+                    Resources.getSystem()
+                            .getBoolean(
+                                    com.android.internal.R.bool
+                                            .config_enableSearchTileHideIllustrationInPrivateSpace);
+            return configValue ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+        }
+        return AVAILABLE;
+    }
+}
