Preferences Runtime Settings

This page is part of the Preferences docs:

Settings (runtime behavior and safety)

These are “knobs” that change how the server behaves at runtime. Common user-visible effects:

  • Smaller responses (row limits for queries/previews)
  • Formatting behavior (DAX/M formatting on/off)
  • Data masking behavior for returned results (PII/numeric masking, with exclusions)

Scope note (important): runtime settings behave like server configuration. If you ask for “model-specific settings”, the assistant may suggest using a separate MCP server instance or using rules/guardrails instead, depending on what you’re trying to achieve.

Runtime settings you can ask to change

If you’re not sure what’s available in your environment, ask:

“List all available runtime settings and show current values.”

These are regular user settings, not “expert-only” settings.
If your mode/policy allows edits, you can set them directly through manage_preferences.

Settings typically override built-in defaults for this server environment, but admins can still centrally lock down capabilities (for example, online formatting).

Common settings:

  • Output size: max_query_rows, max_preview_rows
  • Completion: completion_fuzzy_enabled, completion_fuzzy_threshold
  • Notifications: notification_log_level

Formatting settings (regular users)

These control how online formatters behave when formatting is used.

Setting IDTierAccepted valuesWhat it controls
dax_formatting_enabledFreetrue / falseEnables/disables online DAX formatting for this server session/environment.
dax_formatting_line_styleFreeshort / longDAX line wrapping style.
dax_formatting_spacing_styleFreebest_practice / no_spaceDAX function spacing style.
dax_formatting_list_separatorFreesingle characterDAX list separator (for example , or ;).
dax_formatting_decimal_separatorFreesingle characterDAX decimal separator (for example . or ,).
m_formatting_enabledFreetrue / falseEnables/disables online Power Query (M) formatting.
m_formatting_line_widthFreeinteger >= 1Target line width for formatted M code.
m_formatting_indent_lengthFreeinteger >= 1Indentation width for M formatting.
m_formatting_indent_styleFreespaces / tabsIndentation style for M formatting.

Important:

  • Formatting settings are global runtime settings.
  • Formatting still requires consent in write operations that call online formatters.
  • If your org centrally disables online formatting, turning it on via settings may still be blocked.

Prompts:

“Set dax_formatting_line_style=long and dax_formatting_spacing_style=best_practice.” “Set m_formatting_indent_style=spaces, m_formatting_indent_length=4, and m_formatting_line_width=120.” “Disable online DAX and M formatting in this environment.”

Masking settings (Pro, but regular usage)

Masking settings are frequently used in day-to-day analyst/consultant workflows.

Setting IDTierAccepted valuesWhat it controls
pii_masking_enabledProtrue / falseToggles PII masking in query/preview outputs.
pii_masking_exclude_tablesProstring listTables that should never be PII-masked.
pii_masking_exclude_columnsProstring listColumns that should never be PII-masked.
pii_masking_force_tablesProstring listTables that should always be treated as PII-sensitive when masking is enabled.
pii_masking_force_columnsProstring listColumns that should always be treated as PII-sensitive when masking is enabled.
numeric_masking_enabledProtrue / falseToggles numeric masking in query/preview outputs.
numeric_masking_exclude_tablesProstring listTables that should never be numerically masked.
numeric_masking_exclude_columnsProstring listColumns that should never be numerically masked.
numeric_masking_force_tablesProstring listTables whose numeric values should always be masked when numeric masking is enabled.
numeric_masking_force_columnsProstring listColumns whose numeric values should always be masked when numeric masking is enabled.

String-list format for exclude and force lists:

  • comma/semicolon/newline separated: Date,Calendar
  • JSON array: ["Date","Calendar"]
  • columns can be unqualified (CustomerId) or qualified (Customers[CustomerId] / Customers.CustomerId)

Prompts:

“Enable PII masking and numeric masking.” “Exclude table Date from numeric masking.” “Exclude Customers[CustomerId] and Customers[CustomerNumber] from PII masking.” “Set pii_masking_exclude_columns to [\"Customers[Email]\",\"Customers[Phone]\"].” “Always mask Customers[Handle] and FinanceFacts[Revenue] when masking is enabled.”

Masking settings only control returned results. They do not change the semantic model, and they are not an access-control boundary. For high-risk environments, combine masking with row limits, least-privilege data access, and reviewed force/exclude lists.

Current masking behavior is culture-aware:

  • PII masking can use localized model labels and model culture to recognize common person/contact fields.
  • Numeric masking can use model culture to recognize regional reference-code and ratio labels while still preserving useful structural values such as dates, keys, and percentages.
  • Freeform text fields such as comments, notes, and messages are usually redacted span-by-span when structured sensitive values are found, rather than replacing the whole comment.

Model annotations vs runtime settings

Runtime settings are not the only masking signal. SemanticOps MCP also honors model annotations that express masking intent on tables and columns:

  • McpEngine_PiiMasking: force or exclude
  • McpEngine_NumericMasking: force or exclude

Use runtime settings when you want environment-specific behavior that can change quickly. Use annotations when you want masking intent to live with the model metadata itself.

What masking is and isn’t configurable in Preferences

What you can configure with manage_preferences settings:

  • on/off toggles for PII and numeric masking,
  • table/column exclusion lists.
  • table/column force lists (*_force_columns, *_force_tables)

What is currently deployment/admin-level (not end-user manage_preferences settings):

  • custom PII regex patterns (MCP_ENGINE_PII_PATTERNS),
  • PII detector and semantic profile defaults,
  • free-text masking mode,
  • numeric hint profile defaults and culture-derived profile behavior,
  • base masking enable flags (MCP_ENGINE_PII_MASKING, MCP_ENGINE_NUMERIC_MASKING),
  • default masking exclusions from deployment config.

What is not currently user-configurable via manage_preferences:

  • the built-in masking profile catalog,
  • numeric masking scalar range.

If a setting change is rejected, ask:

“Explain why this setting can’t be changed here (mode, policy, or license), and propose a safe alternative.”

Note: in some org deployments, online formatting can be centrally disabled. In that case, the assistant can help you turn it off, but turning it on may still be blocked.

Example prompts:

“Set query results to max 200 rows and table previews to max 50 rows.” “Turn on dax_formatting_enabled and set DAX style to long + best_practice.” “Enable numeric masking, but exclude Date and Calendar tables.”

Next page