Release notes and what's new in each version of MDE Toolkit.
Enterprise telemetry + in-app guide release. Fixes the fields that were empty or wrong in the Azure Table row, adds richer columns for Power BI, and turns the Knowledge Base into a full offline guide for both MDE and the toolkit itself. No breaking changes β drop-in over 3.2.0.
The following columns used to arrive empty, Unknown, or wrong in the storage table. All now populate with real values on every uploaded snapshot:
AntivirusEngineVersion, SignatureVersion, PlatformVersion, ServiceVersion. CIM is preferred; registry (Windows Defender\Signature Updates\AVSignatureVersion) + filesystem (ProgramData\Microsoft\Windows Defender\Platform\*, MpEngine.dll FileVersion) act as fallbacks when CIM returns blank under SYSTEM.LastQuickScanUtc, LastFullScanUtc. Derived from the CIM age (days) fields, with the Windows Defender\Scan registry as backup.LastBootTimeUtc (from Environment.TickCount64) and IpAddress (first non-loopback IPv4 from NetworkInterface).MdeOrgId from HKLM\SOFTWARE\Microsoft\Windows Advanced Threat Protection\Status\OrgId.PowerShellExecutionPolicy (machine policy β per-shell β default) and a smarter PowerShellStatus that considers execution policy, CLM, and script-block logging.SmartScreenExplorerMode now carries the raw Explorer value (RequireAdmin / Warn / Off).TpmVersion now falls back to Win32_Tpm (CIM) when the registry key is missing.AppControlStatus used to say NotConfigured on machines with 28 audit-mode .cip policies deployed. Now:
C:\Windows\System32\CodeIntegrity\CIPolicies\Active\*.cip and reports the real count in AppControlPolicyCount.Enforced / Audit / Configured (N policies, not enforced) / NotConfigured.DeviceControlStatus, ControlledFolderAccessStatus, and ExploitProtectionStatus β they now report Disabled / NotConfigured instead of falling through to Unknown.The DeviceTag, OrgUnit, and Environment values from HKLM\SOFTWARE\Policies\MDE-Toolkit were already inside every uploaded JSON but the Function App wasn't writing them as table columns. The ingestion function now promotes all three to top-level, sliceable columns β Power BI slicers on DeviceTag / OrgUnit / Environment start returning values on newly upserted rows.
FunctionApp/HealthReportIngestion/run.ps1 now maps every new field above to a typed Table Storage column.DeviceTag, OrgUnit, Environment, PlatformVersion, AntivirusEngineVersion, SignatureVersion, MdeOrgId, LastQuickScanUtc, LastFullScanUtc, LastBootTimeUtc, IpAddress, AppControlPolicyCount, AppControlEnforcementMode, PowerShellExecutionPolicy, SmartScreenExplorerMode.ReportJson slim logic β existing deployments upgrade cleanly.The Knowledge Base page (left-nav β book icon) has been refreshed to serve as the primary in-app guide for both learning MDE and learning the toolkit. Everything is available offline β no external calls required.
<Option> in the WDAC schema with description, recommendation level (Recommended / Conditional / NotRecommended / Required), a worked example, and the exact Set-RuleOption / -Delete PowerShell to apply or remove it.Doubles as the tool's own How to use MDE Toolkit guide. Each Components article calls out which pages in the toolkit surface that pillar and what a "healthy" result looks like β for example, the ASR component explains which cards on the Defender Policies and Advanced Hunting pages to check. New operators can open the KB, read a component article, and immediately know which page to open in the app.
AuthorityHostOverride, CollectWfpFilters, CollectNetworkInfo, DisableAdvancedNetworking, and an entire new Logging section (LogLevel, LogFilePath, MaxLogSizeMb). Added a New Table Columns reference table.run.ps1 sample matches the tested production script; the Data Destination Reference now lists all ~100 columns grouped by category.js/copy-code.js; no per-page markup changes required.MDE-Toolkit-3.2.1.msiHKLM\SOFTWARE\MDE-Toolkit\Version = 3.2.1msiexec /i MDE-Toolkit-3.2.1.msi /qnrun.ps1 to pick up the new columns. Azure Table Storage is schemaless per row β existing rows keep their original columns; newly upserted rows carry the new fields.App Control Deep-Dive: six new workflow features and a completely rebuilt ticket-attachment export pipeline. This is the biggest App Control release since 3.1.0.
.cip is actually signed.*.json snapshot next to the report(s) β useful when Tier III wants to re-analyze the collection.%LocalAppData%\MDE-Monitoring-App\export-prefs.json).Single self-contained .html file β no frameworks, no external assets, no CDN references. Same "attach it to a ticket, no assets folder" story as the PDF.
scroll-margin-top so anchors don't land under the sticky nav).<details> β WDAC policies collapse by default so a 20-policy machine still opens on one screen.prefers-color-scheme.The Triage Report's HTML output now uses the same visual language as the Export Report β dark-mode, sticky TOC, verdict banner, collapsible sections, sortable tables, in-page search. The Save-File dialog now defaults to HTML with Markdown as the second option. Markdown output is unchanged for pasting into ticket bodies (still renders natively in ServiceNow, Azure DevOps, GitHub, Confluence).
The silent-mode App.xaml.cs handlers are now rewired through the same ExportReportAsync pipeline the GUI uses. Everything the dialog offers is exposed as a flag:
--export-html <file> β HTML mirror of --export-pdf.--format <pdf|html|both> β explicit format selection.--include-json β also emit the raw *.json snapshot.--redact <list> β comma list: none / all / machine / upn / ip / serial.--include-sections <list> β comma list of section names, or all / default / none.Backwards compatible: --export-pdf alone still produces exactly one PDF at the given path. Batch mode (--machines-file / --export-dir) now honours every new flag; per-host filenames get the appropriate extensions when --format both is used.
scroll-margin-top.PolicyObject.Rules for OptionType.EnabledAuditMode.MinHeight / MinWidth plus a bounded picker..cip policies.MDE-Toolkit-3.2.0.msiHKLM\SOFTWARE\MDE-Toolkit\Version = 3.2.0msiexec /i MDE-Toolkit-3.2.0.msi /qn--collect / --upload tasks are unchanged. New export flags are additive.MainViewModel.ExportPdfAsync remains available for existing automation. New code should prefer ExportReportAsync.Focus release: the policies the Advanced Hunting page exports now actually compile and enforce. A pile of rule-quality, accuracy, and usability fixes built on top of 3.1.1.
ConvertFrom-CIPolicy for you and drops the binary .cip file next to the .xml. No more switching to PowerShell.SigningScenarios wiring that tells WDAC which rules apply to user-mode binaries vs kernel drivers, so the policy compiled but did nothing. Now every Allow / Deny / Signer is correctly wired into the right scenario (UMCI for .exe / .dll, KMCI for .sys).ConvertFrom-CIPolicy with "There is an error in XML document" or "the signer ID is incorrect". The recommender walks the next fallback level instead.<Allow> elements without any matching constraint.MDE-Toolkit-3.1.2.msiHKLM\SOFTWARE\MDE-Toolkit\Version = 3.1.2msiexec /i MDE-Toolkit-3.1.2.msi /qnConfigCI module (built into Windows 11) or RSAT-WDAC (Windows Server). If neither is installed the toggle stays available but the export reports a clear "module not available" message and leaves the .xml for manual compilation.New App Control for Business → Advanced Hunting sub-page that pulls live WDAC events from Microsoft Defender for Endpoint, compares them against your local or custom App Control policies, and recommends the right allow rules to author β with the same -Level / -Fallback precedence semantics as PowerShell New-CIPolicy.
DeviceTvmInfoGathering, audit / enforced blocks, signing-info, script blocks) from the Microsoft Defender for Endpoint Advanced Hunting API. All four sovereign clouds are supported out of the box: Commercial, US Gov GCC, US Gov GCC High, and US Gov DoD — the right endpoint and authority host are picked automatically.Consolas so they line up.ActionType filter via regex so your custom WHERE clauses survive. Save / load .kql files to share queries with the team..cip in C:\Windows\System32\CodeIntegrity\CIPolicies\Active plus SiPolicy.p7b in one click, or browse to a folder of .cip / .p7b / .xml policies (recursive optional). Each event is evaluated as Allowed, Denied (explicit), or Would Still Block across every selected policy. Explicit Deny wins over Allow anywhere in the set, matching how WDAC merges policies at runtime.-Level / -Fallback)Hash, FileName, FilePath, SignedVersion, Publisher, FilePublisher, LeafCertificate, PcaCertificate, RootCertificate, WHQL, WHQLPublisher, WHQLFilePublisher, and PFN.-Level and the rest become -Fallback in order. A live Consolas-styled preview shows the resulting PowerShell-equivalent command. Order is persisted to %LOCALAPPDATA%\MDE-Toolkit\advanced-hunting-prefs.json.New-CIPolicy. Defaults to Microsoft’s recommended FilePublisher β Publisher β SignedVersion β FileName β Hash β FilePath on first launch.<Allow> per algorithm (SHA256, SHA1, and their Authenticode variants). App Control evaluates the strongest hash first and ignores any algorithm the running kernel can’t compute, so emitting every variant maximises match rate — exactly what PowerShell New-CIPolicy -Level Hash produces.<!-- WARNING --> comment instead of an empty Hash="".%LOCALAPPDATA% is no longer flagged — Hash pins exact bytes regardless of where the file lives. The RISK badge now only appears for FilePath rules in user-writable folders, FileAttribute / FileName rules for unsigned files in user-writable folders, or anything kernel-mode (.sys)..xml exporter now emits one short section header per rule type (Publisher / FileAttribute / FilePath / Hash) instead of repeating each fragment’s own multi-line comment dozens of times. Files exported with lots of Hash recommendations are dramatically smaller while still being valid input for ConvertFrom-CIPolicy.AdvancedHuntingService built on Microsoft.Identity.Client 4.76.0 (interactive auth, FOCI client ID, per-cloud authority + resource URIs, legacy WDATP endpoint fallback).AppControlPolicyComparerService uses Microsoft.Security.CodeIntegrity 3.1.1 to parse .cip / .p7b / .xml policies; sanitises unknown <Option> values so newer Wizard-generated policies load cleanly.MDE-Toolkit-3.1.1.msiHKLM\SOFTWARE\MDE-Toolkit\Version = 3.1.1msiexec /i MDE-Toolkit-3.1.1.msi /qn%LOCALAPPDATA%\MDE-Toolkit\advanced-hunting-prefs.json stores the chosen cloud, tenant, KQL window, custom policy folder, and the rule-precedence order.Focused on scrolling quality of life across every page and grid in the app.
gpupdate /force button now uses a "document with text" icon for better visual clarity.MDE-Toolkit-3.1.0.msiHKLM\SOFTWARE\MDE-Toolkit\Version = 3.1.0msiexec /i MDE-Toolkit-3.1.0.msi /qnFull release notes and downloads for older versions live on the GitHub releases page.