Skip to main content
Intune Commander includes comprehensive debug logging to help troubleshoot issues, understand app behavior, and diagnose Graph API errors.

Debug Log Window

The Debug Log Window displays real-time diagnostic messages throughout the app.

Opening the Debug Log

1

Click the Debug Log button

Click the Debug Log button in the toolbar (or menu).
2

View log entries

A separate window opens showing timestamped log messages.

Log Entry Format

Each log entry shows:
  • Timestamp: When the event occurred
  • Category: Type of operation (Auth, Graph, Cache, Export, etc.)
  • Level: Info, Warning, or Error
  • Message: Description of the event
Example:
[10:32:15] [Auth] Authenticating to tenant 12345678-1234-1234-1234-123456789012 (Commercial) as aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
[10:32:18] [Auth] Graph client created successfully
[10:32:19] [Cache] Loaded 47 device configuration(s) from cache
[10:32:19] [Cache] Loaded 12 compliance policy(ies) from cache
[10:32:20] [App] Connected to Contoso-Prod

Logging Categories

Auth

Authentication and connection events:
  • Tenant connection attempts
  • Authentication method used (Interactive, Client Secret, Device Code)
  • Token acquisition
  • Connection success/failure
  • Profile switching
Example Messages:
  • Authenticating to tenant {tenantId} ({cloud}) as {clientId}
  • Graph client created successfully
  • Connected to {profileName}
  • Authentication failed: {error}

Graph

Graph API operations:
  • Data fetching (List operations)
  • Graph API errors (throttling, 403, 404, etc.)
  • Refresh operations
  • Lazy-load triggers
Example Messages:
  • Loaded 127 application(s)
  • Loading conditional access policy(ies)...
  • Failed to load device configurations: Forbidden (403)
  • Refreshing data from Graph API...

Cache

Cache operations:
  • Cache hits/misses
  • Data loaded from cache
  • Data saved to cache
  • Cache invalidation
  • Cache age
Example Messages:
  • Loaded 47 device configuration(s) from cache
  • Saved 127 application(s) to cache
  • All data loaded from cache — skipping Graph refresh
  • Partial cache hit (4/28) — refreshing from Graph
  • Failed to load {dataType} from cache: {error}

Export

Export operations:
  • Export started/completed
  • Export progress
  • Export file paths
  • Export errors
Example Messages:
  • Exporting CA policies to: C:\Users\...\ConditionalAccessPolicies-20240325-143022.pptx
  • CA PowerPoint export completed
  • CA PowerPoint export cancelled by user
  • Failed to export: {error}

Import

Import operations:
  • Import started/completed
  • Import progress (items imported)
  • Migration table updates
  • Import errors
Example Messages:
  • Importing from: C:\Users\...\Desktop\IntuneExport
  • Imported 47 device configuration(s)
  • Failed to import {objectType}: {error}

App

General app lifecycle events:
  • Startup
  • Navigation changes
  • Window events
  • Profile loading
Example Messages:
  • Intune Commander starting...
  • Profiles loaded: 3
  • Connected nav categories (42): Overview, Device Configurations, ...
  • Nav categories rebuilt (42)

Permissions

Graph API permission checks:
  • Permission validation results
  • Missing permissions
  • Permission claims source (token vs consent)
Example Messages:
  • Check complete (claim: token) — 18/20 granted; missing: Policy.Read.All, User.Read.All
  • Permission check skipped: {reason}
Missing permissions don’t block the app from starting—features that require those permissions will return 403 errors when accessed.

Error

General errors not tied to a specific category:
  • Unhandled exceptions
  • Unexpected failures
  • Critical errors
Example Messages:
  • Connection to {profileName} failed: {error}
  • Unhandled exception: {exceptionType}: {message}

Log Levels

Info (Default)

Standard operational messages:
  • Successful operations
  • Status updates
  • Connection events

Warning

Non-critical issues:
  • Deprecated features used
  • Fallback logic triggered
  • Recoverable errors

Error

Critical failures:
  • Authentication failures
  • Graph API errors
  • Export/import failures
  • Unhandled exceptions
Error-level messages indicate something went wrong. Check the full error details in the log.

Using the Debug Log

Troubleshooting Connection Issues

1

Open Debug Log

Click Debug Log before attempting to connect.
2

Attempt connection

Try to connect to the tenant.
3

Review Auth messages

Look for [Auth] entries showing what happened during authentication.
4

Check for errors

Look for [Error] entries with details about the failure.
Common Auth Errors:
  • AADSTS50020: User account not found in directory
  • AADSTS65001: Admin consent not granted
  • AADSTS700016: Application not found in directory
  • Forbidden (403): Missing Graph API permissions

Diagnosing Graph API Errors

1

Reproduce the error

Perform the action that causes the error (e.g., load compliance policies).
2

Find the Graph error

Look for [Graph] entries with the error message.
3

Check error code

Graph errors include an error code (e.g., 403 Forbidden, 429 Too Many Requests).
4

Review permissions

For 403 errors, check the [Permissions] log to see if required permissions are missing.
Common Graph Errors:
  • 403 Forbidden: Missing permission (e.g., DeviceManagementConfiguration.ReadWrite.All)
  • 404 Not Found: Object doesn’t exist or wrong endpoint
  • 429 Too Many Requests: Graph API throttling (retry after a delay)
  • 503 Service Unavailable: Microsoft Graph temporary outage

Verifying Cache Behavior

1

Open Debug Log

Open the Debug Log window.
2

Connect to tenant

Connect to a tenant you’ve connected to before.
3

Check for cache messages

Look for [Cache] entries showing what data was loaded from cache.
Cache Hit Example:
[10:32:19] [Cache] Loaded 47 device configuration(s) from cache
[10:32:19] [Cache] Loaded 12 compliance policy(ies) from cache
[10:32:20] [Cache] All data loaded from cache — skipping Graph refresh
Cache Miss Example:
[10:32:19] [Cache] No cache found for DeviceConfigurations
[10:32:20] [Graph] Loading device configuration(s)...
[10:32:22] [Graph] Loaded 47 device configuration(s)
[10:32:22] [Cache] Saved 47 device configuration(s) to cache

Log Capacity

The debug log is an in-memory buffer with a 2000-entry limit.
  • Oldest entries are dropped when the buffer fills
  • Logs are not persisted to disk
  • Logs are cleared when the app closes
If you need to preserve logs for a bug report, copy/paste the log window contents to a text file before closing the app.

Clearing the Log

To clear all log entries:
  1. Open the Debug Log window
  2. Click the Clear button
Clearing the log does not affect app behavior—it only removes UI entries.

Advanced Debugging

Raw JSON Inspection

To view the raw Graph API response for an object:
1

Select an object

Click an object in the data grid (e.g., a device configuration).
2

Click View Raw JSON

In the detail panel, click View Raw JSON.
3

Inspect the response

A window opens showing the full JSON returned by Graph API.
Use this to:
  • Verify property values
  • Check for missing or unexpected fields
  • Compare against Graph API documentation
  • Troubleshoot export/import issues

Comparing Graph Calls

To understand what the app is sending to Graph API:
  1. Use a tool like Fiddler or Wireshark to capture HTTP traffic
  2. Filter for requests to graph.microsoft.com or graph.microsoft.us
  3. Inspect request headers, query parameters, and response bodies
Graph API responses may contain sensitive data (policy details, group names, user info). Be careful when sharing captures.

Performance Logging

The debug log includes timing information for key operations:
  • Connection time: From “Authenticating…” to “Connected to…”
  • Data load time: From “Loading…” to “Loaded X items”
  • Export time: From “Exporting…” to “Exported X items”
Example:
[10:32:15] [Auth] Authenticating to tenant...
[10:32:18] [Auth] Graph client created successfully
[10:32:18] [Graph] Loading device configuration(s)...
[10:32:20] [Graph] Loaded 47 device configuration(s)
→ Connection took 3 seconds, data load took 2 seconds

Build docs developers (and LLMs) love