fix settings docs: correct group ordering, add missing settings, merge enrollment summary into agent parameters

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Oliver Kieselbach
2026-04-03 14:26:21 +02:00
parent 26d0ae5ea7
commit d0842913c6
@@ -46,6 +46,27 @@ export function SectionSettings() {
Below is a reference for every available option.
</p>
{/* ═══════════════════════════════════════════════════════
TENANT GROUP
═══════════════════════════════════════════════════════ */}
{/* Access Management */}
<SettingsGroup title="Access Management" color="bg-gray-100 text-gray-800" borderColor="border-gray-200">
<SettingsRow name="Team Members &amp; Roles">
Manage who has access to the portal and at what level. New members are added by entering their UPN
(e.g. <span className="font-mono text-xs bg-gray-100 px-1 py-0.5 rounded">user@contoso.com</span>).
The first user to sign in for a tenant is automatically granted Admin rights. Each member is assigned
one of three roles:
<ul className="mt-2 space-y-1 list-disc list-inside text-sm">
<li><strong>Admin</strong> — Full access to all tenant configuration, sessions, diagnostics, and settings.</li>
<li><strong>Operator</strong> — Can view sessions, manage settings, and execute actions on devices.</li>
</ul>
<span className="block mt-2 text-xs text-gray-500">
Admins can enable or disable individual members, update roles, and grant bootstrap token management permissions.
</span>
</SettingsRow>
</SettingsGroup>
{/* Enrollment Device Validation */}
<SettingsGroup title="Enrollment Device Validation" color="bg-purple-50 text-purple-900" borderColor="border-purple-200">
<SettingsRow name="Autopilot Device Validation" defaultVal="Disabled">
@@ -79,97 +100,6 @@ export function SectionSettings() {
</SettingsRow>
</SettingsGroup>
{/* Agent Collectors */}
<SettingsGroup title="Agent Collectors" color="bg-emerald-50 text-emerald-900" borderColor="border-emerald-200">
<SettingsRow name="Performance Collector" defaultVal="Enabled, 30 s interval">
When enabled, the agent periodically collects CPU, memory, disk, and network metrics during enrollment and
streams them to the portal. The interval (30–300 seconds) controls how often samples are taken. Disabling
this reduces network traffic but removes the performance timeline from session diagnostics.
Core collectors (enrollment event tracking, Windows Hello detector) are always active and cannot be disabled.
</SettingsRow>
<SettingsRow name="Hello Wait Timeout" defaultVal="30 seconds">
How long the agent waits for the Windows Hello wizard to appear after ESP exit (range: 30–300 seconds).
If Hello does not appear within this window, the agent proceeds with enrollment completion. Increase this
value if your devices consistently take longer to reach the Hello screen.
</SettingsRow>
</SettingsGroup>
{/* Agent Parameters */}
<SettingsGroup title="Agent Parameters" color="bg-violet-50 text-violet-900" borderColor="border-violet-200">
<SettingsRow name="Self-Destruct on Complete" defaultVal="Enabled">
After enrollment finishes, the agent removes its scheduled task and all agent files from the device.
This is the recommended mode — the agent is temporary by design and should not remain on enrolled devices.
</SettingsRow>
<SettingsRow name="Keep Log File" defaultVal="Disabled">
Only available when Self-Destruct is enabled. If turned on, the agent&apos;s local log file is preserved on
the device even after self-destruct. Useful for troubleshooting when you need a local record of what happened.
</SettingsRow>
<SettingsRow name="Reboot on Complete" defaultVal="Disabled">
Triggers an automatic reboot of the device once the Autopilot enrollment is detected as complete.
When enabled, a configurable <strong>Reboot Delay</strong> (0–3600 seconds, default 10 s) gives the user
a brief window to see the result before the reboot happens.
</SettingsRow>
<SettingsRow name="Geo-Location Detection" defaultVal="Enabled">
The agent queries an external IP geolocation service to capture the device&apos;s public IP address,
approximate location, and ISP at enrollment time. This data appears in the session detail view and can
help identify where devices are being enrolled. Disable this if your security policy prohibits outbound
requests to third-party services.
</SettingsRow>
<SettingsRow name="IME Pattern Match Log" defaultVal="Disabled">
When enabled, the agent writes matched Intune Management Extension (IME) log lines to a local file at{" "}
<span className="font-mono text-xs bg-gray-100 px-1 py-0.5 rounded">%ProgramData%\AutopilotMonitor\Logs\ime_pattern_matches.log</span>.
Useful for offline analysis of app deployment patterns captured during enrollment.
</SettingsRow>
<SettingsRow name="Show Script Output (stdout)" defaultVal="Enabled">
When enabled, standard output from PowerShell scripts (platform and remediation scripts tracked by IME) is
shown in the session timeline. Disable this if scripts may output sensitive data. Note: error output (stderr)
is always shown regardless of this setting.
</SettingsRow>
<SettingsRow name="Log Level" defaultVal="Info">
Controls the verbosity of the agent&apos;s own log file.{" "}
<strong>Info</strong> covers normal operation, <strong>Debug</strong> adds detailed step tracing for
troubleshooting, and <strong>Verbose</strong> produces a full trace of every internal operation.
Only change this if actively diagnosing an agent issue — Verbose can produce large log files.
</SettingsRow>
</SettingsGroup>
{/* Enrollment Summary Dialog */}
<SettingsGroup title="Enrollment Summary Dialog" color="bg-teal-50 text-teal-900" borderColor="border-teal-200">
<SettingsRow name="Show Enrollment Summary" defaultVal="Disabled">
Displays a visual enrollment summary dialog to the end user after enrollment completes (on both success and failure).
Requires the SummaryDialog companion to be deployed alongside the agent.
</SettingsRow>
<SettingsRow name="Auto-Close Timeout" defaultVal="60 seconds">
How long the summary dialog remains open before closing automatically (range: 0–3600 seconds).
Set to 0 to disable auto-close — the user must close the dialog manually. Only available when
Show Enrollment Summary is enabled.
</SettingsRow>
<SettingsRow name="Launch Retry Timeout" defaultVal="120 seconds">
How long the agent retries launching the summary dialog when the desktop is locked by credential UI
(e.g. Windows Hello setup). Set to 0 to disable retries (range: 0–3600 seconds). Only available when
Show Enrollment Summary is enabled.
</SettingsRow>
<SettingsRow name="Branding Image URL" defaultVal="None">
Optional URL to a banner image displayed at the top of the summary dialog. Recommended size: 540 &times; 80 px.
Larger images will be center-cropped to fit. Only available when Show Enrollment Summary is enabled.
</SettingsRow>
</SettingsGroup>
{/* Agent Analyzers */}
<SettingsGroup title="Agent Analyzers" color="bg-orange-50 text-orange-900" borderColor="border-orange-200">
<SettingsRow name="Local Admin Analyzer" defaultVal="Enabled">
Detects pre-enrollment local admin account creation — a known Autopilot bypass technique. The analyzer
runs at enrollment start and completion, comparing local accounts against an expected baseline.
Unexpected accounts trigger an alert visible in the session detail view.
</SettingsRow>
<SettingsRow name="Allowed Local Accounts">
Accounts considered expected on enrolled devices (will not trigger alerts). Built-in Windows accounts
(Administrator, Guest, DefaultAccount, WDAGUtilityAccount, defaultuser0–2, etc.) are always allowed and
shown as read-only. Use this list to add custom service accounts or local accounts that are expected
in your environment. Only available when Local Admin Analyzer is enabled.
</SettingsRow>
</SettingsGroup>
{/* Notifications */}
<SettingsGroup title="Notifications" color="bg-indigo-50 text-indigo-900" borderColor="border-indigo-200">
<SettingsRow name="Notification Provider">
@@ -208,6 +138,136 @@ export function SectionSettings() {
</SettingsRow>
</SettingsGroup>
{/* Bootstrap Sessions */}
<div className="mb-2 flex items-start gap-2 rounded-md border border-cyan-300 bg-cyan-50 px-4 py-2.5 text-sm text-cyan-900">
<svg className="mt-0.5 h-5 w-5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M12 2a10 10 0 100 20 10 10 0 000-20z" />
</svg>
<span>
Bootstrap Sessions is an optional feature that is enabled on request only.
To get access, open a{" "}
<a href="https://github.com/okieselbach/Autopilot-Monitor/issues" target="_blank" rel="noopener noreferrer" className="font-medium underline hover:text-cyan-700">
GitHub issue
</a>{" "}
to request activation for your tenant.
</span>
</div>
<SettingsGroup title="Bootstrap Sessions" color="bg-cyan-50 text-cyan-900" borderColor="border-cyan-200">
<SettingsRow name="Bootstrap Tokens">
Bootstrap tokens allow new devices to register with Autopilot Monitor before device validation is fully
configured. Each token generates a unique short code and URL that can be shared with technicians or
included in provisioning scripts. Tokens have a configurable validity duration
(1 h, 4 h, 8 h, 24 h, 48 h, or 7 days) and can be revoked at any time. The token list shows status
(Active, Expired, Revoked), creation date, expiry, creator, and usage count. A copy button provides
both the URL and a ready-to-use PowerShell command.
</SettingsRow>
</SettingsGroup>
{/* ═══════════════════════════════════════════════════════
AGENT GROUP
═══════════════════════════════════════════════════════ */}
{/* Agent Parameters */}
<SettingsGroup title="Agent Parameters" color="bg-violet-50 text-violet-900" borderColor="border-violet-200">
<SettingsRow name="Self-Destruct on Complete" defaultVal="Enabled">
After enrollment finishes, the agent removes its scheduled task and all agent files from the device.
This is the recommended mode — the agent is temporary by design and should not remain on enrolled devices.
</SettingsRow>
<SettingsRow name="Keep Log File" defaultVal="Disabled">
Only available when Self-Destruct is enabled. If turned on, the agent&apos;s local log file is preserved on
the device even after self-destruct. Useful for troubleshooting when you need a local record of what happened.
</SettingsRow>
<SettingsRow name="Reboot on Complete" defaultVal="Disabled">
Triggers an automatic reboot of the device once the Autopilot enrollment is detected as complete.
When enabled, a configurable <strong>Reboot Delay</strong> (0–3600 seconds, default 10 s) gives the user
a brief window to see the result before the reboot happens.
</SettingsRow>
<SettingsRow name="Geo-Location Detection" defaultVal="Enabled">
The agent queries an external IP geolocation service to capture the device&apos;s public IP address,
approximate location, and ISP at enrollment time. This data appears in the session detail view and can
help identify where devices are being enrolled. Disable this if your security policy prohibits outbound
requests to third-party services.
</SettingsRow>
<SettingsRow name="Set Timezone Automatically" defaultVal="Disabled">
Only available when Geo-Location Detection is enabled. Automatically sets the device timezone based on
the IP geolocation result using <span className="font-mono text-xs bg-gray-100 px-1.5 py-0.5 rounded">tzutil /s</span>.
Useful for shared device scenarios where devices may be enrolled in different time zones.
</SettingsRow>
<SettingsRow name="IME Pattern Match Log" defaultVal="Disabled">
When enabled, the agent writes matched Intune Management Extension (IME) log lines to a local file at{" "}
<span className="font-mono text-xs bg-gray-100 px-1 py-0.5 rounded">%ProgramData%\AutopilotMonitor\Logs\ime_pattern_matches.log</span>.
Useful for offline analysis of app deployment patterns captured during enrollment.
</SettingsRow>
<SettingsRow name="Show Script Output (stdout)" defaultVal="Enabled">
When enabled, standard output from PowerShell scripts (platform and remediation scripts tracked by IME) is
shown in the session timeline. Disable this if scripts may output sensitive data. Note: error output (stderr)
is always shown regardless of this setting.
</SettingsRow>
<SettingsRow name="Log Level" defaultVal="Info">
Controls the verbosity of the agent&apos;s own log file.{" "}
<strong>Info</strong> covers normal operation, <strong>Debug</strong> adds detailed step tracing for
troubleshooting, <strong>Verbose</strong> produces a full trace of every internal operation, and{" "}
<strong>Trace</strong> enables full diagnostic output including low-level details.
Only change this if actively diagnosing an agent issue — Verbose and Trace can produce large log files.
</SettingsRow>
<SettingsRow name="Show Enrollment Summary" defaultVal="Disabled">
Displays a visual enrollment summary dialog to the end user after enrollment completes (on both success and failure).
Requires the SummaryDialog companion to be deployed alongside the agent. When enabled, the following
sub-settings become available:
</SettingsRow>
<SettingsRow name="Auto-Close Timeout" defaultVal="60 seconds">
How long the summary dialog remains open before closing automatically (range: 0–3600 seconds).
Set to 0 to disable auto-close — the user must close the dialog manually. Only available when
Show Enrollment Summary is enabled.
</SettingsRow>
<SettingsRow name="Launch Retry Timeout" defaultVal="120 seconds">
How long the agent retries launching the summary dialog when the desktop is locked by credential UI
(e.g. Windows Hello setup). Set to 0 to disable retries (range: 0–3600 seconds). Only available when
Show Enrollment Summary is enabled.
</SettingsRow>
<SettingsRow name="Branding Image URL" defaultVal="None">
Optional URL to a banner image displayed at the top of the summary dialog. Recommended size: 540 &times; 80 px.
Larger images will be center-cropped to fit. Only available when Show Enrollment Summary is enabled.
</SettingsRow>
</SettingsGroup>
{/* Agent Collectors */}
<SettingsGroup title="Agent Collectors" color="bg-emerald-50 text-emerald-900" borderColor="border-emerald-200">
<SettingsRow name="Performance Collector" defaultVal="Enabled, 30 s interval">
When enabled, the agent periodically collects CPU, memory, disk, and network metrics during enrollment and
streams them to the portal. The interval (30–300 seconds) controls how often samples are taken. Disabling
this reduces network traffic but removes the performance timeline from session diagnostics.
Core collectors (enrollment event tracking, Windows Hello detector) are always active and cannot be disabled.
</SettingsRow>
<SettingsRow name="Hello Wait Timeout" defaultVal="30 seconds">
How long the agent waits for the Windows Hello wizard to appear after ESP exit (range: 30–300 seconds).
If Hello does not appear within this window, the agent proceeds with enrollment completion. Increase this
value if your devices consistently take longer to reach the Hello screen.
</SettingsRow>
</SettingsGroup>
{/* Agent Analyzers */}
<SettingsGroup title="Agent Analyzers" color="bg-orange-50 text-orange-900" borderColor="border-orange-200">
<SettingsRow name="Local Admin Analyzer" defaultVal="Enabled">
Detects pre-enrollment local admin account creation — a known Autopilot bypass technique. The analyzer
runs at enrollment start and completion, comparing local accounts against an expected baseline.
Unexpected accounts trigger an alert visible in the session detail view.
</SettingsRow>
<SettingsRow name="Allowed Local Accounts">
Accounts considered expected on enrolled devices (will not trigger alerts). Built-in Windows accounts
(Administrator, Guest, DefaultAccount, WDAGUtilityAccount, defaultuser0–2, etc.) are always allowed and
shown as read-only. Use this list to add custom service accounts or local accounts that are expected
in your environment. Only available when Local Admin Analyzer is enabled.
</SettingsRow>
<SettingsRow name="Software Inventory &amp; Vulnerability Analyzer" defaultVal="Disabled">
<span className="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-semibold bg-emerald-100 text-emerald-700 border border-emerald-200 mr-1">Experimental</span>
<span className="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-semibold bg-amber-100 text-amber-700 border border-amber-200 mr-1">Pre-Release</span>
{" "}Collects installed software from the Windows registry at enrollment start and completion.
Produces a normalized inventory snapshot, detects software installed during enrollment (delta detection),
and correlates findings against known vulnerabilities (NVD CVEs, CISA KEV, MSRC).
</SettingsRow>
</SettingsGroup>
{/* Diagnostics Package */}
<SettingsGroup title="Diagnostics Package" color="bg-amber-50 text-amber-900" borderColor="border-amber-200">
<SettingsRow name="Blob Storage Container SAS URL">
@@ -262,62 +322,6 @@ export function SectionSettings() {
</SettingsRow>
</SettingsGroup>
{/* Data Management */}
<SettingsGroup title="Data Management" color="bg-rose-50 text-rose-900" borderColor="border-rose-200">
<SettingsRow name="Data Retention Period" defaultVal="90 days (range: 7–180)">
Sessions and their associated events are automatically deleted after this many days. Deletion runs as part
of a periodic maintenance job. Reduce this value to limit storage usage; increase it if you need a longer
history for auditing or trend analysis.
</SettingsRow>
<SettingsRow name="Session Timeout" defaultVal="5 hours (range: 1–12)">
Sessions that remain in <em>In Progress</em> state beyond this threshold are automatically marked as{" "}
<em>Failed – Timed Out</em> by the maintenance job. Set this to match (or slightly exceed) your
Enrollment Status Page (ESP) timeout so stalled sessions don&apos;t permanently inflate your in-progress count.
</SettingsRow>
</SettingsGroup>
{/* Access Management */}
<SettingsGroup title="Access Management" color="bg-gray-100 text-gray-800" borderColor="border-gray-200">
<SettingsRow name="Team Members &amp; Roles">
Manage who has access to the portal and at what level. New members are added by entering their UPN
(e.g. <span className="font-mono text-xs bg-gray-100 px-1 py-0.5 rounded">user@contoso.com</span>).
The first user to sign in for a tenant is automatically granted Admin rights. Each member is assigned
one of three roles:
<ul className="mt-2 space-y-1 list-disc list-inside text-sm">
<li><strong>Admin</strong> — Full access to all tenant configuration, sessions, diagnostics, and settings.</li>
<li><strong>Operator</strong> — Can view sessions, manage settings, and execute actions on devices.</li>
</ul>
<span className="block mt-2 text-xs text-gray-500">
Admins can enable or disable individual members, update roles, and grant bootstrap token management permissions.
</span>
</SettingsRow>
</SettingsGroup>
{/* Bootstrap Sessions */}
<div className="mb-2 flex items-start gap-2 rounded-md border border-cyan-300 bg-cyan-50 px-4 py-2.5 text-sm text-cyan-900">
<svg className="mt-0.5 h-5 w-5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M12 2a10 10 0 100 20 10 10 0 000-20z" />
</svg>
<span>
Bootstrap Sessions is an optional feature that is enabled on request only.
To get access, open a{" "}
<a href="https://github.com/okieselbach/Autopilot-Monitor/issues" target="_blank" rel="noopener noreferrer" className="font-medium underline hover:text-cyan-700">
GitHub issue
</a>{" "}
to request activation for your tenant.
</span>
</div>
<SettingsGroup title="Bootstrap Sessions" color="bg-cyan-50 text-cyan-900" borderColor="border-cyan-200">
<SettingsRow name="Bootstrap Tokens">
Bootstrap tokens allow new devices to register with Autopilot Monitor before device validation is fully
configured. Each token generates a unique short code and URL that can be shared with technicians or
included in provisioning scripts. Tokens have a configurable validity duration
(1 h, 4 h, 8 h, 24 h, 48 h, or 7 days) and can be revoked at any time. The token list shows status
(Active, Expired, Revoked), creation date, expiry, creator, and usage count. A copy button provides
both the URL and a ready-to-use PowerShell command.
</SettingsRow>
</SettingsGroup>
{/* Unrestricted Mode */}
<div className="mb-2 flex items-start gap-2 rounded-md border border-amber-300 bg-amber-50 px-4 py-2.5 text-sm text-amber-900">
<svg className="mt-0.5 h-5 w-5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
@@ -342,6 +346,24 @@ export function SectionSettings() {
</SettingsRow>
</SettingsGroup>
{/* ═══════════════════════════════════════════════════════
MAINTENANCE GROUP
═══════════════════════════════════════════════════════ */}
{/* Data Management */}
<SettingsGroup title="Data Management" color="bg-rose-50 text-rose-900" borderColor="border-rose-200">
<SettingsRow name="Data Retention Period" defaultVal="90 days (range: 7–180)">
Sessions and their associated events are automatically deleted after this many days. Deletion runs as part
of a periodic maintenance job. Reduce this value to limit storage usage; increase it if you need a longer
history for auditing or trend analysis.
</SettingsRow>
<SettingsRow name="Session Timeout" defaultVal="5 hours (range: 1–12)">
Sessions that remain in <em>In Progress</em> state beyond this threshold are automatically marked as{" "}
<em>Failed – Timed Out</em> by the maintenance job. Set this to match (or slightly exceed) your
Enrollment Status Page (ESP) timeout so stalled sessions don&apos;t permanently inflate your in-progress count.
</SettingsRow>
</SettingsGroup>
{/* Danger Zone */}
<div className="border border-red-200 rounded-lg overflow-hidden">
<div className="px-4 py-2.5 bg-red-50 text-red-900">