diff --git a/src/lib/components/common/InterfaceSettings.svelte b/src/lib/components/common/InterfaceSettings.svelte
index d81c23067e..2122a2112c 100644
--- a/src/lib/components/common/InterfaceSettings.svelte
+++ b/src/lib/components/common/InterfaceSettings.svelte
@@ -2,6 +2,7 @@
import {
canUseChannels,
canUseTemporaryChats,
+ canUseWebSearch,
isSettingsAdmin
} from '$lib/utils/settings-access';
import { config, settings, user } from '$lib/stores';
@@ -1638,34 +1639,36 @@
-
-
-
-
-
-
- {$i18n.t('settings.personal.interface.webSearchInChat.description')}
-
-
+ {/if}
{$i18n.t('settings.personal.interface.sections.input.title')}
diff --git a/src/lib/utils/settings-access.ts b/src/lib/utils/settings-access.ts
index 63f092019b..01e244415b 100644
--- a/src/lib/utils/settings-access.ts
+++ b/src/lib/utils/settings-access.ts
@@ -21,6 +21,9 @@ export const canUseTemporaryChats = ({ user }: SettingsAccessContext) =>
export const canUseChannels = ({ user, config }: SettingsAccessContext) =>
config?.features?.enable_channels &&
(user?.role === 'admin' || (user?.permissions?.features?.channels ?? true));
+export const canUseWebSearch = ({ user, config }: SettingsAccessContext) =>
+ config?.features?.enable_web_search &&
+ (user?.role === 'admin' || user?.permissions?.features?.web_search);
export const isSettingsAdmin = ({ user }: SettingsAccessContext) => user?.role === 'admin';
/** Only permission-gated text needs an explicit rule. Provider/disclosure state is irrelevant. */
@@ -70,5 +73,6 @@ export function canSearchSetting(
return !!canUseTemporaryChats(context);
if (stem === 'settings.personal.interface.compressImagesInChannels')
return !!canUseChannels(context);
+ if (stem === 'settings.personal.interface.webSearchInChat') return !!canUseWebSearch(context);
return true;
}