All rules managed by Caster are tracked in this config file rules.tomllocated in Caster User Directory settings folder. This configuration file allows you not only to see what rules are active but change with the whitelist which rules are loaded by Caster during startup. Rules are loaded from Caster User Directory Rules folder and/or the Caster source code directly typically Documents\Caster\Rules.

Rules can exist in different states:

  • Loaded During startup Caster loads all available rules on startup into the speech recognition engine. If a rule is not loaded, it cannot be enabled/disabled, and the rule's commands cannot be recognized.
  • Active/Inactive rule state denotes whether or not a rule is available for recognition. For instance if you say disable Firefox, the Firefox rule will become Inactive. When the Firefox application is launched, the commands will not be available for recognition until the Firefox rule is set to active with the enable Firefox command.
  • Newly created rules will not be registered in rules.toml until Caster restarts and are disabled by default.

Enabled Ordered

Enabled ordered represents all active rules. When you enable the rule, its class name is added to the _enabled_ordered list. When the rule is disabled, it is removed from the list. It's a great way to see what rules are currently available. Note: This list should not be modified manually.

Internal Rules

A handful of rules get special treatment by the Grammar Manager as represented in _internal. These "internal" rules are the rules which are generated by/for Caster loaded content. They do not belong in the set of rules which can be reloaded. You can turn them off, but it is strongly discouraged as they are required for Caster to function.


The number of Caster rules has grown immensely in the past few years, which is great, but means that the initial load time has grown as well. In order to reduce boot time, a WhiteList has been added to allow the user to control which rules get loaded. Most users will not be using all of the available rules, so it does not make sense to encumber users with unused rules.

New users will be provided a core set of starter rules to get started with and then expected to manage which rules load for them via the [whitelisted] feature. Rules are defined as true in the Whitelist load when Caster starts. However if a rule is set to false, it is not loaded and therefore cannot be enabled or disabled.

  • All rules loaded by Caster including from AppData\Local\caster\Rules (user made) and Documents\Caster\castervoice\Rules (Caster Starter Rules) will automatically be added to [whitelisted] as true during startup when the rule is first detected.
  • Caster must be restarted for changes in [whitelisted] to take effect.

The following rules.toml is a mock representation of the default settings. _enabled_ordered shows the default enabled grammars when Caster first starts. Defaults may vary by Caster version and engine.

_enabled_ordered = ["Alphabet", "Navigation", "NavigationNon", "Numbers", "Punctuation", "Keyboard", "CasterRule", "HardwareRule", "MouseAlternativesRule", "WindowManagementRule", "LegionGridRule", "DouglasGridRule", "RainbowGridRule", "SudokuGridRule", "HMCRule", "HMCConfirmRule", "HMCDirectoryRule", "HMCHistoryRule", "HMCLaunchRule", "HMCSettingsRule", "HistoryRule", "ChainAlias", "Alias", "DragonRule", "BringRule", "Again", "GrammarActivatorRule", "HooksActivationRule"]
_internal = ["GrammarActivatorRule", "HooksActivationRule", "TransformersActivationRule", "ManualGrammarReloadRule"]

AcrobatRule = true
Again = true
Alias = true
Alphabet = true
AtomRule = true
Bash = true
BringRule = true
CPP = true
CSSTreeRule = true
CSharp = true
CasterRule = true
ChainAlias = true
ChromeRule = true
Dart = true
Python = true
PythonNon = true
VSCodeNonCcrRule = true
VisualStudioRule = true

# Truncated created for brevity