Published on 2026-06-26

disable Chrome's AI features with a macOS config profile

I reach for Claude all day to write code. That part I chose. What I did not choose was Chrome putting its own AI in my address bar: an “AI Mode” button on the right, and an “Ask Google about this page” row down in the suggestions.

I started where all the guides do, in chrome://flags. I turned off the AI Mode entry points and the contextual suggestions, relaunched, and the bar was quiet again. Then Chrome updated. The toggles were back on, with a couple of new flags next to the old ones. Flags are stored once for the whole Chrome install, not per Chrome profile, so covering all of mine was never the problem. They just do not stick. Google rolls these out in stages and flips them back.

So I asked Claude for help. Turns out Chrome reads enterprise policy on macOS. The policies come from a configuration profile, the same .mobileconfig an IT department pushes to a managed work laptop 🤮. Except on my own Mac I can write one myself. She found the policy that covers this, GenAiDefaultSettings, which sets the default for Chrome’s whole “covered” generative-AI set. The doc is blunt about the value I wanted:

2 = Do not allow the feature.

the profile

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict>  <!-- the one payload this profile carries -->  <key>PayloadContent</key>  <array>    <dict>      <!-- the app these keys configure -->      <key>PayloadType</key>      <string>com.google.Chrome</string>      <!-- payload format version (always 1) -->      <key>PayloadVersion</key>      <integer>1</integer>      <!-- unique id for this payload -->      <key>PayloadIdentifier</key>      <string>ch.caillou.chrome.disableAI.payload</string>      <!-- any uuid; just macOS bookkeeping -->      <key>PayloadUUID</key>      <string>16E1D735-1060-4D16-971E-DA04529204F4</string>      <!-- label for this payload -->      <key>PayloadDisplayName</key>      <string>Chrome: Disable AI Features</string>      <!-- switch this payload on -->      <key>PayloadEnabled</key>      <true/>      <!--        disable Chrome's whole "covered"        generative-AI set      -->      <key>GenAiDefaultSettings</key>      <integer>2</integer>      <!--        disable the AI Mode omnibox button.        1 = do not allow; only 0 and 1 exist      -->      <key>AIModeSettings</key>      <integer>1</integer>    </dict>  </array>  <!-- the outer dict is the profile itself -->  <key>PayloadType</key>  <string>Configuration</string>  <!-- profile format version (always 1) -->  <key>PayloadVersion</key>  <integer>1</integer>  <!-- profile id; the same id replaces on reinstall -->  <key>PayloadIdentifier</key>  <string>ch.caillou.chrome.disableAI</string>  <!-- any uuid; just macOS bookkeeping -->  <key>PayloadUUID</key>  <string>96B0E260-8A89-48A4-9B6E-1F4A24EAF040</string>  <!-- name shown in Device Management -->  <key>PayloadDisplayName</key>  <string>Disable Chrome AI Features</string>  <!-- apply machine-wide, every user account -->  <key>PayloadScope</key>  <string>System</string>  <!-- false = I can remove it later -->  <key>PayloadRemovalDisallowed</key>  <false/></dict></plist>

The two PayloadUUIDs and the PayloadIdentifiers are macOS bookkeeping, so it can track the profile to update or remove later. Any unique values work; I made mine with uuidgen.

One value bit me. My first draft set AIModeSettings to 2, by analogy with the line above it. That value does not exist. The Chromium source defines only 0 (allow) and 1 (do not allow). 1 is the one I wanted.

installing it

Double-click the file. macOS reports a profile was downloaded, then waits. The install lives in System Settings, under General, then Device Management (older macOS files it under Privacy & Security, as Profiles). Select “Disable Chrome AI Features”, install it, enter the admin password, then quit and reopen Chrome.

chrome://policy is where I confirmed it took: GenAiDefaultSettings and AIModeSettings both show up as mandatory, source Platform. Because they come from the OS layer below Chrome, they apply to every Chrome profile at once, and a Chrome update cannot flip them back.

One feature still slips past. GenAiDefaultSettings reliably kills the AI Mode button, but the “Ask Google about this page” row may not fall under it. If that one survives, the omnibox-contextual-* flags are the cleanup, with the usual caveat that flags drift back.

I will switch browsers eventually. Looking at you, Vivaldi. For now this holds, and I like the small irony of it: I asked an AI to turn off an AI. She dug up the policy and wrote the profile. I clicked install. I learned a lot today.

P.S. the same trick on Windows

On Windows the same policies live in the registry, under Software\Policies\Google\Chrome. The profile becomes a .reg file with the same keys and values:

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]; disable Chrome's whole "covered" generative-AI set"GenAiDefaultSettings"=dword:00000002; disable the AI Mode omnibox button (only 0 and 1 exist)"AIModeSettings"=dword:00000001

HKEY_LOCAL_MACHINE is the counterpart of PayloadScope: System, machine-wide and admin-only. HKEY_CURRENT_USER works per-user without admin rights. Double-click the file to import it, restart Chrome, and chrome://policy shows the same two mandatory Platform policies. Deleting the values undoes it.