Public mode

No access to your tenant or devices. Every item links to its source. What this means

Some sources or documents need attention: 258/260 feeds/APIs · 416/439 docs · checked 10:42 UTC Customize Public modeDiscuss ChangeIntel on Discord

Microsoft 365 Apps Group Policy settings

2,420 settings · 5568.1000 · 10 Aug 2026

Back to the list

Microsoft Word 2016 › Word Options › Proofing

Mark grammar errors as you type

UserNeeds changes for IntuneL_Checkgrammarasyoutype

Supported on SUPPORTED_Windows7 (defined in the Windows templates)

What it does

Defines color to use for marking grammatical errors.

What it writes

Hive
HKEY_CURRENT_USER
Registry key
software\policies\microsoft\office\16.0\word\options
Why it needs changes for Intune
  • Policy references a Windows supportedOn definition.
  • ADMX-INTUNE-WINDOWS-SUPPORTEDON-REFERENCE

Options

OptionTypeRegistry valueAllowed values
Check to enforce setting on; uncheck to enforce setting off Checkbox autogrammar On (1) or off (0)
Color for marking grammatical errorsDefault: Green Drop-down list software\policies\microsoft\shared tools\proofing toolsgrammarwavyunderlinecolor
  • Black0
  • Blue255
  • Dark Blue128
  • Light Blue3368703
  • Sky Blue52479
  • Pale Blue10079487
  • Blue Gray6710937
  • Green65280
  • Dark Green32768
  • Darker Green13056
  • Light Green13434828
  • Olive Green3355392
  • Sea Green3381606
  • Red16711680
  • Dark Red8388608
  • Yellow16776960
  • Dark Yellow8421376
  • Light Yellow16777113
  • White16777215
  • Brown10040064
  • Orange16737792
  • Light Orange16750848
  • Cyan65535
  • Dark Cyan32896
  • Light Cyan13434879
  • Magenta16711935
  • Dark Magenta8388736
  • Dark Teal13158
  • Indigo3355545
  • Lime10079232
  • Aqua3394764
  • Gold16763904
  • Plum10040166
  • Rose16751052
  • Tan16764057
  • Lavender13408767
  • Gray8421504
  • Gray 25%12632256
  • Gray 50%8421504

Configure and deploy

Choose a state and the option values; the output below is generated from the template for exactly that.

State
Options used when Enabled

Enabled · User · template defaults

Registry file (.reg)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\word\options]
"autogrammar"=dword:00000001

[HKEY_CURRENT_USER\software\policies\microsoft\shared tools\proofing tools]
"grammarwavyunderlinecolor"=dword:0000FF00


PowerShell

$ErrorActionPreference = 'Stop'

function Set-RegistryValue {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name,
        [Parameter(Mandatory = $true)][string] $PropertyType,
        [Parameter(Mandatory = $true)][object] $Value
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        New-Item -Path $Path -Force | Out-Null
    }

    New-ItemProperty -LiteralPath $Path -Name $Name -PropertyType $PropertyType -Value $Value -Force | Out-Null
}

function Remove-RegistryValue {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name
    )

    if (Test-Path -LiteralPath $Path) {
        Remove-ItemProperty -LiteralPath $Path -Name $Name -Force -ErrorAction SilentlyContinue
    }
}

function Clear-RegistryKeyValues {
    param(
        [Parameter(Mandatory = $true)][string] $Path
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        return
    }

    foreach ($propertyName in (Get-Item -LiteralPath $Path).Property) {
        Remove-ItemProperty -LiteralPath $Path -Name $propertyName -Force -ErrorAction SilentlyContinue
    }
}

# Policy: Mark grammar errors as you type
# Name: L_Checkgrammarasyoutype
# Scope: User
# State: Enabled
# Source: word16.admx

Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\word\options' -Name 'autogrammar' -PropertyType 'DWord' -Value 1

Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\shared tools\proofing tools' -Name 'grammarwavyunderlinecolor' -PropertyType 'DWord' -Value 65280
  • The OMA-URI is an inferred ADMX-backed Policy CSP candidate derived from the source ADMX file name and policy name.
  • Some Microsoft policies use built-in Policy CSP pages whose area names don't match the ADMX file name, so verify the candidate against Microsoft Learn before deployment.
  • The generated payload is incomplete because one or more ADMX element values were not supplied: L_checktoenforcesettingonunchecktoenforcesettingoff0

ADMX profile candidate (OMA-URI)

./User/Vendor/MSFT/Policy/Config/ADMX_word16/L_Checkgrammarasyoutype
Intune remediation scripts

Detection

$ErrorActionPreference = 'Stop'
$reasons = [System.Collections.Generic.List[string]]::new()

function Test-RegistryValueExists {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        return $false
    }

    return $null -ne (Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction SilentlyContinue)
}

function Test-RegistryValueEquals {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name,
        [Parameter(Mandatory = $true)][string] $Kind,
        [Parameter(Mandatory = $true)][object] $Expected
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        return $false
    }

    $valueObject = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction SilentlyContinue
    if ($null -eq $valueObject) {
        return $false
    }

    $actual = $valueObject.$Name
    switch ($Kind) {
        'String' { return [string]$actual -ceq [string]$Expected }
        'ExpandString' { return [string]$actual -ceq [string]$Expected }
        'DWord' { return [uint32]$actual -eq [uint32]$Expected }
        'QWord' { return [uint64]$actual -eq [uint64]$Expected }
        'MultiString' {
            $actualArray = @($actual)
            $expectedArray = @($Expected)
            if ($actualArray.Count -ne $expectedArray.Count) { return $false }
            for ($index = 0; $index -lt $actualArray.Count; $index++) {
                if ([string]$actualArray[$index] -cne [string]$expectedArray[$index]) { return $false }
            }
            return $true
        }
        'Binary' {
            $actualArray = [byte[]]$actual
            $expectedArray = [byte[]]$Expected
            if ($actualArray.Length -ne $expectedArray.Length) { return $false }
            for ($index = 0; $index -lt $actualArray.Length; $index++) {
                if ($actualArray[$index] -ne $expectedArray[$index]) { return $false }
            }
            return $true
        }
        default { return [string]$actual -ceq [string]$Expected }
    }
}

# Policy: Mark grammar errors as you type
# Name: L_Checkgrammarasyoutype
# Scope: User
# State: Enabled
# Source: word16.admx

$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\word\options' -Name 'autogrammar' -Kind 'DWord' -Expected 1
if (-not $isMatch) {
    $reasons.Add('Value mismatch: HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\word\options\autogrammar') | Out-Null
}

$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\shared tools\proofing tools' -Name 'grammarwavyunderlinecolor' -Kind 'DWord' -Expected 65280
if (-not $isMatch) {
    $reasons.Add('Value mismatch: HKEY_CURRENT_USER\software\policies\microsoft\shared tools\proofing tools\grammarwavyunderlinecolor') | Out-Null
}

if ($reasons.Count -eq 0) {
    Write-Output 'Compliant'
    exit 0
}

$reasons | ForEach-Object { Write-Output $_ }
exit 1

Remediation

$ErrorActionPreference = 'Stop'

function Set-RegistryValue {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name,
        [Parameter(Mandatory = $true)][string] $PropertyType,
        [Parameter(Mandatory = $true)][object] $Value
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        New-Item -Path $Path -Force | Out-Null
    }

    New-ItemProperty -LiteralPath $Path -Name $Name -PropertyType $PropertyType -Value $Value -Force | Out-Null
}

function Remove-RegistryValue {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name
    )

    if (Test-Path -LiteralPath $Path) {
        Remove-ItemProperty -LiteralPath $Path -Name $Name -Force -ErrorAction SilentlyContinue
    }
}

function Clear-RegistryKeyValues {
    param(
        [Parameter(Mandatory = $true)][string] $Path
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        return
    }

    foreach ($propertyName in (Get-Item -LiteralPath $Path).Property) {
        Remove-ItemProperty -LiteralPath $Path -Name $propertyName -Force -ErrorAction SilentlyContinue
    }
}

# Policy: Mark grammar errors as you type
# Name: L_Checkgrammarasyoutype
# Scope: User
# State: Enabled
# Source: word16.admx

Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\word\options' -Name 'autogrammar' -PropertyType 'DWord' -Value 1

Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\shared tools\proofing tools' -Name 'grammarwavyunderlinecolor' -PropertyType 'DWord' -Value 65280

History 1 retained release

  1. 5568.100010 Aug 2026
    • Already present in the first release ChangeIntel keeps.

Template

Internal name
L_Checkgrammarasyoutype
Namespace
word16.Office.Microsoft.Policies.Windows
Template file
word16.admx
Release
Microsoft 365 Apps 5568.1000 · file set 8be05d876aae137d…
Definition, editor controls and support

Definition

<policy class="User" displayName="$(string.L_Checkgrammarasyoutype)" explainText="$(string.L_Definescolortouseformarkinggrammaticalerrors)" key="software\policies\microsoft\office\16.0\word\options" name="L_Checkgrammarasyoutype" presentation="$(presentation.L_Checkgrammarasyoutype)" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="word16.Office.Microsoft.Policies.Windows:L_Proofing" />
      <supportedOn ref="Microsoft.Policies.Windows:SUPPORTED_Windows7" />
      <elements>
        <boolean id="L_checktoenforcesettingonunchecktoenforcesettingoff0" valueName="autogrammar">
          <trueValue>
            <decimal value="1" />
          </trueValue>
          <falseValue>
            <decimal value="0" />
          </falseValue>
        </boolean>
        <enum id="L_Colorformarkinggrammaticalerrors" key="software\policies\microsoft\shared tools\proofing tools" valueName="grammarwavyunderlinecolor">
          <item displayName="$(string.L_Black)">
            <value>
              <decimal value="0" />
            </value>
          </item>
          <item displayName="$(string.L_Blue)">
            <value>
              <decimal value="255" />
            </value>
          </item>
          <item displayName="$(string.L_DarkBlue)">
            <value>
              <decimal value="128" />
            </value>
          </item>
          <item displayName="$(string.L_LightBlue)">
            <value>
              <decimal value="3368703" />
            </value>
          </item>
          <item displayName="$(string.L_SkyBlue)">
            <value>
              <decimal value="52479" />
            </value>
          </item>
          <item displayName="$(string.L_PaleBlue)">
            <value>
              <decimal value="10079487" />
            </value>
          </item>
          <item displayName="$(string.L_BlueGray)">
            <value>
              <decimal value="6710937" />
            </value>
          </item>
          <item displayName="$(string.L_Green)">
            <value>
              <decimal value="65280" />
            </value>
          </item>
          <item displayName="$(string.L_DarkGreen)">
            <value>
              <decimal value="32768" />
            </value>
          </item>
          <item displayName="$(string.L_DarkerGreen)">
            <value>
              <decimal value="13056" />
            </value>
          </item>
          <item displayName="$(string.L_LightGreen)">
            <value>
              <decimal value="13434828" />
            </value>
          </item>
          <item displayName="$(string.L_OliveGreen)">
            <value>
              <decimal value="3355392" />
            </value>
          </item>
          <item displayName="$(string.L_SeaGreen)">
            <value>
              <decimal value="3381606" />
            </value>
          </item>
          <item displayName="$(string.L_Red)">
            <value>
              <decimal value="16711680" />
            </value>
          </item>
          <item displayName="$(string.L_DarkRed)">
            <value>
              <decimal value="8388608" />
            </value>
          </item>
          <item displayName="$(string.L_Yellow)">
            <value>
              <decimal value="16776960" />
            </value>
          </item>
          <item displayName="$(string.L_DarkYellow)">
            <value>
              <decimal value="8421376" />
            </value>
          </item>
          <item displayName="$(string.L_LightYellow)">
            <value>
              <decimal value="16777113" />
            </value>
          </item>
          <item displayName="$(string.L_White)">
            <value>
              <decimal value="16777215" />
            </value>
          </item>
          <item displayName="$(string.L_Brown)">
            <value>
              <decimal value="10040064" />
            </value>
          </item>
          <item displayName="$(string.L_Orange)">
            <value>
              <decimal value="16737792" />
            </value>
          </item>
          <item displayName="$(string.L_LightOrange)">
            <value>
              <decimal value="16750848" />
            </value>
          </item>
          <item displayName="$(string.L_Cyan)">
            <value>
              <decimal value="65535" />
            </value>
          </item>
          <item displayName="$(string.L_DarkCyan)">
            <value>
              <decimal value="32896" />
            </value>
          </item>
          <item displayName="$(string.L_LightCyan)">
            <value>
              <decimal value="13434879" />
            </value>
          </item>
          <item displayName="$(string.L_Magenta)">
            <value>
              <decimal value="16711935" />
            </value>
          </item>
          <item displayName="$(string.L_DarkMagenta)">
            <value>
              <decimal value="8388736" />
            </value>
          </item>
          <item displayName="$(string.L_DarkTeal)">
            <value>
              <decimal value="13158" />
            </value>
          </item>
          <item displayName="$(string.L_Indigo)">
            <value>
              <decimal value="3355545" />
            </value>
          </item>
          <item displayName="$(string.L_Lime)">
            <value>
              <decimal value="10079232" />
            </value>
          </item>
          <item displayName="$(string.L_Aqua)">
            <value>
              <decimal value="3394764" />
            </value>
          </item>
          <item displayName="$(string.L_Gold)">
            <value>
              <decimal value="16763904" />
            </value>
          </item>
          <item displayName="$(string.L_Plum)">
            <value>
              <decimal value="10040166" />
            </value>
          </item>
          <item displayName="$(string.L_Rose)">
            <value>
              <decimal value="16751052" />
            </value>
          </item>
          <item displayName="$(string.L_Tan)">
            <value>
              <decimal value="16764057" />
            </value>
          </item>
          <item displayName="$(string.L_Lavender)">
            <value>
              <decimal value="13408767" />
            </value>
          </item>
          <item displayName="$(string.L_Gray)">
            <value>
              <decimal value="8421504" />
            </value>
          </item>
          <item displayName="$(string.L_Gray25)">
            <value>
              <decimal value="12632256" />
            </value>
          </item>
          <item displayName="$(string.L_Gray50)">
            <value>
              <decimal value="8421504" />
            </value>
          </item>
        </enum>
      </elements>
    </policy>

Editor controls

<presentation id="L_Checkgrammarasyoutype" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
        <checkBox refId="L_checktoenforcesettingonunchecktoenforcesettingoff0">Check to enforce setting on; uncheck to enforce setting off</checkBox>
        <dropdownList defaultItem="7" noSort="true" refId="L_Colorformarkinggrammaticalerrors">Color for marking grammatical errors</dropdownList>
      </presentation>

Supported platforms and category

word16.Office.Microsoft.Policies.Windows:category:L_MicrosoftOfficeWord
<category displayName="$(string.L_MicrosoftOfficeWord)" name="L_MicrosoftOfficeWord" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
word16.Office.Microsoft.Policies.Windows:category:L_Proofing
<category displayName="$(string.L_Proofing)" name="L_Proofing" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="word16.Office.Microsoft.Policies.Windows:L_WordOptions" />
    </category>
word16.Office.Microsoft.Policies.Windows:category:L_WordOptions
<category displayName="$(string.L_WordOptions)" name="L_WordOptions" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="word16.Office.Microsoft.Policies.Windows:L_MicrosoftOfficeWord" />
    </category>
word16.Office.Microsoft.Policies.Windows:unresolved:Microsoft.Policies.Windows:SUPPORTED_Windows7
<unresolved reference="Microsoft.Policies.Windows:SUPPORTED_Windows7" />
word16.Office.Microsoft.Policies.Windows:category:L_MicrosoftOfficeWord
<category displayName="$(string.L_MicrosoftOfficeWord)" name="L_MicrosoftOfficeWord" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
<strings><string id="word16.Office.Microsoft.Policies.Windows:L_MicrosoftOfficeWord">Microsoft Word 2016</string></strings>
word16.Office.Microsoft.Policies.Windows:category:L_Proofing
<category displayName="$(string.L_Proofing)" name="L_Proofing" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="word16.Office.Microsoft.Policies.Windows:L_WordOptions" />
    </category>
<strings><string id="word16.Office.Microsoft.Policies.Windows:L_Proofing">Proofing</string></strings>
word16.Office.Microsoft.Policies.Windows:category:L_WordOptions
<category displayName="$(string.L_WordOptions)" name="L_WordOptions" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="word16.Office.Microsoft.Policies.Windows:L_MicrosoftOfficeWord" />
    </category>
<strings><string id="word16.Office.Microsoft.Policies.Windows:L_WordOptions">Word Options</string></strings>
ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 20 Oct 10:42 UTC · 258 of 260 readable · 256 fully read · documentation 416/439 current