diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts
index c99fe4750a65..96726718098c 100644
--- a/src/core/task/Task.ts
+++ b/src/core/task/Task.ts
@@ -2426,7 +2426,7 @@ export class Task extends EventEmitter implements TaskLike {
 			const modelInfo = this.api.getModel().info
 			const modelSupportsBrowser = (modelInfo as any)?.supportsImages === true
 
-			const canUseBrowserTool = modelSupportsBrowser && modeSupportsBrowser && (browserToolEnabled ?? true)
+			const canUseBrowserTool = modelSupportsBrowser && modeSupportsBrowser && (browserToolEnabled ?? false)
 
 			return SYSTEM_PROMPT(
 				provider.context,
diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts
index 91b868796689..a2e05a9ea66b 100644
--- a/src/core/webview/ClineProvider.ts
+++ b/src/core/webview/ClineProvider.ts
@@ -1911,7 +1911,7 @@ export class ClineProvider
 			maxOpenTabsContext: maxOpenTabsContext ?? 20,
 			maxWorkspaceFiles: maxWorkspaceFiles ?? 200,
 			cwd,
-			browserToolEnabled: browserToolEnabled ?? true,
+			browserToolEnabled: browserToolEnabled ?? false,
 			telemetrySetting,
 			telemetryKey,
 			machineId,
@@ -2133,7 +2133,7 @@ export class ClineProvider
 			maxOpenTabsContext: stateValues.maxOpenTabsContext ?? 20,
 			maxWorkspaceFiles: stateValues.maxWorkspaceFiles ?? 200,
 			openRouterUseMiddleOutTransform: stateValues.openRouterUseMiddleOutTransform,
-			browserToolEnabled: stateValues.browserToolEnabled ?? true,
+			browserToolEnabled: stateValues.browserToolEnabled ?? false,
 			telemetrySetting: stateValues.telemetrySetting || "unset",
 			showRooIgnoredFiles: stateValues.showRooIgnoredFiles ?? false,
 			maxReadFileLine: stateValues.maxReadFileLine ?? -1,
diff --git a/src/core/webview/generateSystemPrompt.ts b/src/core/webview/generateSystemPrompt.ts
index 0920a6164826..b575e9358dac 100644
--- a/src/core/webview/generateSystemPrompt.ts
+++ b/src/core/webview/generateSystemPrompt.ts
@@ -64,8 +64,8 @@ export const generateSystemPrompt = async (provider: ClineProvider, message: Web
 	const modelSupportsBrowser = modelInfo && (modelInfo as any)?.supportsImages === true
 
 	// Only enable browser tools if the model supports it, the mode includes browser tools,
-	// and browser tools are enabled in settings
-	const canUseBrowserTool = modelSupportsBrowser && modeSupportsBrowser && (browserToolEnabled ?? true)
+	// and browser tools are enabled in settings (default to OFF when unset)
+	const canUseBrowserTool = modelSupportsBrowser && modeSupportsBrowser && (browserToolEnabled ?? false)
 
 	const systemPrompt = await SYSTEM_PROMPT(
 		provider.context,
diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts
index af5f9925c353..1d837991260c 100644
--- a/src/core/webview/webviewMessageHandler.ts
+++ b/src/core/webview/webviewMessageHandler.ts
@@ -1562,7 +1562,7 @@ export const webviewMessageHandler = async (
 			await provider.postStateToWebview()
 			break
 		case "browserToolEnabled":
-			await updateGlobalState("browserToolEnabled", message.bool ?? true)
+			await updateGlobalState("browserToolEnabled", message.bool ?? false)
 			await provider.postStateToWebview()
 			break
 		case "language":
diff --git a/webview-ui/src/components/chat/AutoApproveDropdown.tsx b/webview-ui/src/components/chat/AutoApproveDropdown.tsx
index 08e4a90f6bb5..280d1b479de3 100644
--- a/webview-ui/src/components/chat/AutoApproveDropdown.tsx
+++ b/webview-ui/src/components/chat/AutoApproveDropdown.tsx
@@ -23,6 +23,7 @@ export const AutoApproveDropdown = ({ disabled = false, triggerClassName = "" }:
 
 	const {
 		autoApprovalEnabled,
+		browserToolEnabled,
 		setAutoApprovalEnabled,
 		alwaysApproveResubmit,
 		setAlwaysAllowReadOnly,
@@ -109,8 +110,12 @@ export const AutoApproveDropdown = ({ disabled = false, triggerClassName = "" }:
 	)
 
 	const handleSelectAll = React.useCallback(() => {
-		// Enable all options
-		Object.keys(autoApproveSettingsConfig).forEach((key) => {
+		// Enable all visible options based on current browser tool setting
+		const keys = browserToolEnabled
+			? Object.keys(autoApproveSettingsConfig)
+			: Object.keys(autoApproveSettingsConfig).filter((k) => k !== "alwaysAllowBrowser")
+
+		keys.forEach((key) => {
 			onAutoApproveToggle(key as AutoApproveSetting, true)
 		})
 		// Enable master auto-approval
@@ -118,14 +123,18 @@ export const AutoApproveDropdown = ({ disabled = false, triggerClassName = "" }:
 			setAutoApprovalEnabled(true)
 			vscode.postMessage({ type: "autoApprovalEnabled", bool: true })
 		}
-	}, [onAutoApproveToggle, autoApprovalEnabled, setAutoApprovalEnabled])
+	}, [onAutoApproveToggle, autoApprovalEnabled, setAutoApprovalEnabled, browserToolEnabled])
 
 	const handleSelectNone = React.useCallback(() => {
-		// Disable all options
-		Object.keys(autoApproveSettingsConfig).forEach((key) => {
+		// Disable all visible options based on current browser tool setting
+		const keys = browserToolEnabled
+			? Object.keys(autoApproveSettingsConfig)
+			: Object.keys(autoApproveSettingsConfig).filter((k) => k !== "alwaysAllowBrowser")
+
+		keys.forEach((key) => {
 			onAutoApproveToggle(key as AutoApproveSetting, false)
 		})
-	}, [onAutoApproveToggle])
+	}, [onAutoApproveToggle, browserToolEnabled])
 
 	const handleOpenSettings = React.useCallback(
 		() =>
@@ -143,13 +152,21 @@ export const AutoApproveDropdown = ({ disabled = false, triggerClassName = "" }:
 	// Calculate enabled and total counts as separate properties
 	const settingsArray = Object.values(autoApproveSettingsConfig)
 
+	// Filter out Browser toggle when browser tool is disabled
+	const visibleSettingsArray = React.useMemo(
+		() => settingsArray.filter((s) => browserToolEnabled || s.key !== "alwaysAllowBrowser"),
+		[settingsArray, browserToolEnabled],
+	)
+
+	const visibleKeys = React.useMemo(() => visibleSettingsArray.map((s) => s.key), [visibleSettingsArray])
+
 	const enabledCount = React.useMemo(() => {
-		return Object.values(toggles).filter((value) => !!value).length
-	}, [toggles])
+		return visibleKeys.filter((key) => !!toggles[key as keyof typeof toggles]).length
+	}, [visibleKeys, toggles])
 
 	const totalCount = React.useMemo(() => {
-		return Object.keys(toggles).length
-	}, [toggles])
+		return visibleKeys.length
+	}, [visibleKeys])
 
 	const { effectiveAutoApprovalEnabled } = useAutoApprovalState(toggles, autoApprovalEnabled)
 
@@ -157,7 +174,7 @@ export const AutoApproveDropdown = ({ disabled = false, triggerClassName = "" }:
 		!effectiveAutoApprovalEnabled || enabledCount === 0
 			? t("chat:autoApprove.tooltipManage")
 			: t("chat:autoApprove.tooltipStatus", {
-					toggles: settingsArray
+					toggles: visibleSettingsArray
 						.filter((setting) => toggles[setting.key])
 						.map((setting) => t(setting.labelKey))
 						.join(", "),
@@ -216,7 +233,7 @@ export const AutoApproveDropdown = ({ disabled = false, triggerClassName = "" }:
 						
 					
 					
-						{settingsArray.map(({ key, labelKey, descriptionKey, icon }) => {
+						{visibleSettingsArray.map(({ key, labelKey, descriptionKey, icon }) => {
 							const isEnabled = toggles[key]
 							return (
 								
diff --git a/webview-ui/src/components/settings/AutoApproveToggle.tsx b/webview-ui/src/components/settings/AutoApproveToggle.tsx
index e6540f3d8966..63f87af12012 100644
--- a/webview-ui/src/components/settings/AutoApproveToggle.tsx
+++ b/webview-ui/src/components/settings/AutoApproveToggle.tsx
@@ -3,6 +3,7 @@ import type { GlobalSettings } from "@roo-code/types"
 import { useAppTranslation } from "@/i18n/TranslationContext"
 import { cn } from "@/lib/utils"
 import { Button, StandardTooltip } from "@/components/ui"
+import { useExtensionState } from "@/context/ExtensionStateContext"
 
 type AutoApproveToggles = Pick<
 	GlobalSettings,
@@ -107,10 +108,15 @@ type AutoApproveToggleProps = AutoApproveToggles & {
 
 export const AutoApproveToggle = ({ onToggle, ...props }: AutoApproveToggleProps) => {
 	const { t } = useAppTranslation()
+	const { browserToolEnabled } = useExtensionState()
+
+	const visibleConfigs = Object.values(autoApproveSettingsConfig).filter(
+		(cfg) => browserToolEnabled || cfg.key !== "alwaysAllowBrowser",
+	)
 
 	return (
 		
-			{Object.values(autoApproveSettingsConfig).map(({ key, descriptionKey, labelKey, icon, testId }) => (
+			{visibleConfigs.map(({ key, descriptionKey, labelKey, icon, testId }) => (