CMTrace Open

Adam Gell·AdamGell.CMTraceOpen

An open-source log viewer inspired by Microsoft's CMTrace.exe.

winget install --id AdamGell.CMTraceOpen --exact --source winget

Latest 1.5.0·July 27, 2026

Release Notes

Stable downloads: https://download.cmtraceopen.com/?source=github-release CMTrace Open v1.5.0 Open-source CMTrace log viewer with built-in Intune diagnostics. What's New Added

  • ESP Diagnostics workspace: Added a dedicated, full-width, no-sidebar workspace for troubleshooting Windows Autopilot Enrollment Status Page, Autopilot Device Preparation, and software deployment failures. It combines scenario/phase progress, actionable evidence-backed findings, workload state, enrollment/profile/registry/event evidence, Delivery Optimization, coverage gaps, and a live What MSIEXEC is doing now sampler on one page. Live Windows sessions continue collecting while the log surface is collapsed or another workspace is active; captured CMTrace Open evidence folders, manifests, CABs, and ZIPs are also supported. Features include failure detection (InstallationState / ErrorHresult from Sidecar registry), live current-task hero showing what's installing now with progress, session capture/replay (export live/failed sessions as JSON for offline analysis), workloads search/filter (name, ID, status) plus Failed / Running / Installed / Queued category chips, section jump navigation (sticky bar with per-section jump pills and return-to-top), and timeline GUID→name resolution (Intune app names in event stream). Read-only throughout except one opt-in, backed-up remediation action: on Windows with elevation, a Force past ESP button backs up the failing app's registry key, sets InstallationState=3, clears ErrorHresult, and offers one-click restore—allowing a Try again to proceed when ESP is blocked by a false negative.
  • Bounded live deployment evidence: Added curated IME, ConfigMgr, Patch My PC, PSAppDeployToolkit, installer, and shallow high-signal temporary-log discovery with rotation/truncation handling and explicit retention limits. The live-log surface is collapsed by default, vertically resizable when docked, expandable to the full workspace, and available from a prominent Open live logs app-chrome action. No deep-scan or full-drive route is provided.
  • Optional ESP Microsoft Graph enrichment: When the existing Graph option is enabled and its WAM connection is already authenticated, the workspace can add managed-device, Autopilot profile/event, ESP configuration, app, policy, certificate, platform-script, and remediation context while preserving raw local IDs. Per-section permission, offline, throttled, skipped, beta, partial, cancelled, and ambiguous-device states remain visible; connecting never queues work or opens a second sign-in flow. The managed-device correlation now captures the device's Entra device ID via NetGetAadJoinInformation (the same source Windows dsregcmd uses), so device matching resolves reliably and Graph sections enrich even on re-imaged VMs where serial-number fallback would fail.
  • User-triggered Graph permission upgrade: Settings now offers Request missing permissions for an authenticated partial WAM connection. One explicit click re-requests the fixed five delegated read permissions; successful candidates can add capabilities without removing working ones. Unchanged, cancelled, denied, or failed outcomes retain the existing in-memory partial connection, while a stale outcome leaves the newer authoritative authentication state untouched. Startup and ESP refresh never initiate the upgrade, and tokens remain excluded from IPC and logs.
  • Window state persistence (#260, closes #253): The app now restores its window size, position, and maximized state across launches via the official Tauri window-state plugin, so a resized, moved, or maximized window comes back the way you left it. The configured 1200×800 geometry remains the first-launch default. Changed
  • Administrator coverage guidance and retained sessions: ESP Diagnostics now checks elevation on workspace entry, recommends administrator access before collection when needed, and offers an explicit administrator restart on supported Windows builds. Non-elevated sessions remain usable but identify the protected registry, event-log, process-command-line, SYSTEM-temp, and user-temp evidence that could not be read. Every device and user enrollment session remains available through latest, all-session, and individual-session views.
  • Redesigned native application menu: Reworked and synchronized the native application menu — a centralized action layer behind the menu items, synchronized menu state, and platform-consistent accelerators. Window items (Toggle Details/Info panes, Always on Top) now live under a View submenu, with Always on Top preserved as a checkable item that reflects and persists the window's pinned state.
  • Rust MSRV raised to 1.88 (#289): The minimum supported Rust toolchain moved from 1.77.2 → 1.88, required by the sha2 0.11 and serde_with/darling 0.23 upgrades in this release. The sha256 hex formatting was reworked to be sha2 0.11-ready ahead of the crate bump, and CI's MSRV gate now validates against 1.88. Fixed
  • Failure detection and phase propagation: The reducer now reads the authoritative per-app Sidecar registry (InstallationState / ErrorHresult) instead of the mid-state OMA-DM diagnostics value, so failed apps now correctly report as Failed with their error code (e.g. 0x80079C69), and the session phase reflects Failed when any tracked app fails. Previously, a failed app could remain stuck showing inProgress.
  • Graph app enrichment (referencedAppIds): The frontend was silently dropping app GUIDs from Graph requests by matching against a bare GUID with an anchored regex, but real Win32 workload identifiers are decorated (Win32App__1). Now GUIDs are extracted from the decorated identifier, so the request carries the full list of apps to Graph and the Applications section enriches instead of skipping.
  • Capture/replay validation (FILETIME QWORDs): Session captures (40+ MB on real devices) were failing to load because registry FILETIME values are ~1.34e17, above JavaScript's safe-integer limit. The wire validator now accepts any integer-valued number for display-only registry values while keeping strict safe-integer validation for structural counts. Both real captures now round-trip cleanly.
  • Import button routing: "Import captured evidence" now routes a session JSON to the replay loader (not the bundle analyzer), so either import button works for session files.
  • Decorated GUID handling across the UI: Timeline entries, findings, and the workload table now uniformly extract GUIDs from decorated identifiers and resolve them to app names via the shared name map, so workload identifiers like Win32App__1 render as "Citrix Workspace" or "Windows Autopatch Client Broker" instead of raw GUIDs across every surface.
  • Message column sizing on open (#292, closes #254): Opening a log almost always produced a horizontal scrollbar, because the Log Text column auto-expanded to the widest line in the file, capped only by a 1200px bound unrelated to how much room the window actually had. The measured width is now clamped to the space genuinely left over — container width minus the other visible columns and the row-marker gutter, floored at the column's own minWidth — so a freshly opened file fits the window. Explicit Fit this column (double-click) and drag-resize still widen past the viewport: once a width is user-owned, the auto-sizer leaves it alone. Security
  • Read-only analysis with one backed-up write action: ESP Diagnostics performs registry queries, event/process observation, bounded file reads/tailing, archive inspection, and read-only Graph GETs (including bounded $batch POSTs whose subrequests are GET-only). Analysis findings and UI surfaces remain fully read-only. One explicit opt-in exception exists: the Actions section (Windows-only, local non-replayed sessions, elevation-required) offers Force past ESP on a failed app — it backs up the Sidecar key values, sets InstallationState=3, and clears ErrorHresult so ESP stops blocking, after which a Try again can proceed; a one-click Restore reverts the backup. The button requires explicit confirmation stating it writes to the device, does not install the app, and requires administrator access. It does not sync MDM, retry/install software, control services, import registry files, or mutate Intune. Graph uses the existing memory-only WAM token path and five delegated read scopes; authorization headers and raw response bodies are not logged.
  • ESP evidence privacy and archive limits: Sensitive identity/NodeCache fields are classified and masked by default, installer command lines are sanitized before IPC/logging, raw hardware hashes are excluded from normal surfaces, and CAB/ZIP inputs enforce entry, size, path, type, and extraction-root limits with cleanup.
  • Close time and serde_with advisories (#290): Dropped the vendored time 0.3.36 backport and its [patch.crates-io] override; time now resolves from crates.io at 0.3.54, closing GHSA-r6v5-fh4h-64xc (stack-exhaustion DoS) — which the backport did not cover — and restoring cargo audit visibility that the path dependency had hidden. serde_with moves 3.17.0 → 3.21.0, closing GHSA-7gcf-g7xr-8hxj (KeyValueMap panic). Both patched releases required the Rust 1.88 MSRV from #289. The RFC 2822 nesting-bound regression test is retained and now guards the upstream crate instead of a local copy. Build & CI

Installer types: portable, msi

x64portable559FD27986088982885548A45821ABCEBF9F2667D092BA198FC6F34D8C68AB90
arm64portable71A9EF5F606841DDED7A0CBE742C7761EB7464B503C0CBC45EC76D733F5801C7
x64machinemsi2539C0E0F6838541F8C7CD35E63DCEC0EFBA210A6732FE2D9595A759CE02A437
arm64machinemsi0E568305EF45CB91157E9402BBF71E176D9D81999E05D6404D1F86C50A76DCFA

Details

Homepage
https://github.com/adamgell/cmtraceopen
License
MIT
Publisher
Adam Gell
Support
https://github.com/adamgell/cmtraceopen/issues

Tags

cmtraceintune

Older versions (14)

1.4.0
x64portableBE9FEA73A753FE082FD11278E16583CE9BD42DC09C2EA425282F507269D5BECD
arm64portableE005BBF786DACE55813A93D9265DF53A033D19BDE6E28B5B2884093112ABFCF0
x64machinemsiA65FEF3EBACAB48E2D713D8F04CDC79D6F0C587A2DCE72A28FB91D915A2D2F0A
arm64machinemsi412B68FAF9092585B85C60B5BEF25951D1709D50E4C2D9B66105ED92880DB3B5
1.3.2
x64portable5734FF7AE1E4F77C014A9BE075A14BC9435C36DF661B965A8A20AD3C63D7B540
arm64portableF44550ED45125F0A386361B8CCD03D550F4F66C1B4A6AD1D36AC0EC3A79FA55A
x64machinemsi42E993B33E54B34DAF2FAB0C839902278B4C32B29C44FD92204BD85F6FD53754
arm64machinemsi6ABEBFFEBDCFEC47C09EF32299A36D01EED2770586B5AE9C04D52DCE83CF3F22
1.3.1
x64portable08A288E0B89964A5199DDDF81943AC4A5E971B7F92B22536DEA109D7168573EF
arm64portableE143383C723F4273ED33F101B3C714FAE34AC03C84406DDBEC4BD079E0E99B96
x64machinemsi6F624869324D532146263465FF260FE7FCC39AAF8DC7E2387712168E979A9B58
arm64machinemsi5C6C2A02CD1D556CA3ADFBBB562D6E25695CE32C3B12989A3C0FF3D57B62D2B0
1.3.0
x64portableBE75A26D345C102EE673E9807EDACD61A1762D3DBBB643A57648F51F60820AD2
arm64portableD3ED6A9D6A4146D5F26D9B84AB38A744A4DA4E9ED59DE9D04FC763EA195B80CF
x64machinemsi6CE9B56F7DD08637285036BC95525F223332C47620CAC547194F12FD80FCFF71
arm64machinemsi5FAD3A3673725B316480341176CBE110054042B13BDF08BB5EA5B2F4FEE4E80D
1.2.1
x64portable97E70DB2F181A53680F4C749CA72A9DDD158261384857AC0E1DDB73C5D5A9812
arm64portableD0569F551770DD39D7E184CFE8B9805DC5ED051A62D713AFB5266AC6A11F3273
x64machinemsi605E649EC1F95915B7087F776AF9249F188040907C4E594A3EB7419B3B75DCA8
arm64machinemsi00458B5D041FBC19DAD01EE9BEDDFE14E7D73D65D06363D9F10C250EEBEF07E9
1.2.0
x64portableE2A8EF3E52411E3A161DF274EAB0C0F77A0D729D663D8B3B236EEDFCE4403E95
arm64portable97B610ED07163A18D19BFEC5647569BA0F4F40CB8A97AF6E3F92F0FD77DDEBD1
x64machinemsi483AA76753528D707D576BAB0C8BC975A7643CD9A1AE3EC56B767494456144E5
arm64machinemsi5CAB98BC0969D5EFDB7EDB2D6379122996E4CBCE0C6F20706F02E864D2803CB3
1.1.0
x64portableA9E999E793BD1F43CB4C31B39F7E1569DD7D7364E5CA3B6FFFFF1F3F8C589AEC
arm64portable013FC381239800FC940815105F524B773EF72944A16235483497AD3D5BB50358
x64machinewix57A69DBC2145CDB50DBF3659910A4D20543D6F3F9E795CABFC00CF05C75CB0B6
arm64machinewixC23A83BC4BF0B2F3E882DCDAFCEB109D3B81F60AA52B02FEC74C658E96A9E250
1.0.2
x64portableFE09348575F353B7DFD54DB7BFBAFB38C14D3796DB70F7EC1A25EED688A7FEF9
arm64portableDD843C116430CB5BEE468D84B0054920BCCA2B623CA6C085B6184AE3A03FD81F
x64machinenullsoftF1A7F0BD3C93374953605B3A8279333670C20400556ED8CA4A9A3F611BB82BE5
x64machinewix8F5B7E452BAC697103A9B9E71D217F41A6696600BD7F2D0A42ADCB4510A8D250
arm64machinenullsoft213530C181001F22769E0C7AF3DBFB031891CEC145C303B6AC1B16892D28193E
arm64machinewixA9B3B6800BE69DFA00807D4F2125D772C4EF35FE623097ED7885E88EC630DEA7
1.0.1
x64portable42C9C1625E6860D2B236D8DE165184141AF305CA72104393AD01E3C624B16B7C
arm64portable8C403697EF24E15EADD5BA5C57FE9FDFF00A0D22D0A47C896583C517BBD5A506
x64machinewixFCA72A6E2C06FE1A389EA5891EADAAD15CA57C8609BA0E6E4FD60119DDC00E39
arm64machinewix9C9AFC120576ECE8985B0B03DF10D0C177C5FB4026393ED45A452323527267FA
1.0.0
x64portable08D19DD83243C3CE6ECDD104B4535BA27E9FFF47B5DB58BC383F1D95B9EE9107
arm64portableEC38C1ED9A1BBDA10DA399777B1B82C008BE2DBE42F77893918D1D0BA90D3265
x64machinewixF148A3666F67D30DC2F05D55D665101CBA1D72046A4EDFFA9947F9E821CCE119
arm64machinewix4534CB8539FE0006520DDD5BFFE46656FF0A3E23E16149BEE41D0F5C41B6DE04
0.5.1
x64portable80F6F2129137B629F81784B15912B3996DD503B0495BA3516903B2F1FC98ABA5
arm64portable926958660425D021B36F66E3E6EE9C612B4B9DCDB768F8172931DEDD437DAB69
x64machinewix53184506FCA50750E9127B5B0948EB04D2FAAAF67AEC53DBB7B109E413B8E5AA
arm64machinewix74D19E56D0A116EEBD8D5A7A1F3B45A134B3DFB5A292D85AAA921323EB2CB44A
0.5.0
x64portable64F6705ECDCEAE2FD5AB9C5DF59F3743D3E08F3360880622A764EAAD83CC9A5C
arm64portable68F219ACBA86C0026D0896E8E9407DF9B314356EB5D3AAF4E399748DC0C0D6E9
x64machinewixEEFC04AC5D782E70963760E32ED2E9B63F04E57BF697ECCF0A6110EEE0D2717C
arm64machinewixA6FEED90E382C732ED3348E336D06BDF0E4ACA816F99A09B88D19DA5EE019C19
0.4.0
arm64BA816AE95AE4C41F34E105AF4E68C1D8181BB5CA4CE851D81C5036F1A43C95A4
x64F82DA194B5F96BD44530002A46368699C8D48A6EC213C16CE64EE8CA69AD264B
0.3.0
arm645B8A24BADD2B621A632998C935899552082AD4263CCBFE8E28C46C0C04B8D98C
x64304AA889C27385930A90273CAC1A4187FBE80F320CA0642EB8B458A283EC82B5