You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add an explicit opt-in strict application-control mode for Windows classrooms that require the stronger guarantee:
restricted student may execute only explicitly approved application surfaces
unknown executable/browser -> denied by default
This is deliberately separate from the default compatibility policy in #254.
The default managed-browser policy must continue to support legitimate centrally installed classroom applications without requiring an exhaustive application catalog. That compatibility requirement makes it impossible to also guarantee that an arbitrary previously unknown browser placed by an administrator under Program Files will be denied: AppLocker cannot infer "this executable is a browser" generically.
Strict mode resolves that contradiction by changing the contract explicitly rather than silently tightening the default.
approved browser(s) allowed
explicitly approved classroom applications allowed
required Windows/OpenPath runtime allowed
all other restricted-user executable/script surfaces denied by default
The configuration/state must make the active profile unambiguous. Do not infer strict mode merely from the presence of an app list.
Design requirements
1. Explicit approved-application catalog
Strict mode needs a durable operator-managed application approval contract.
Prefer stable identities in this order where practical:
publisher/product/binary constraints for properly signed applications
safe path rule only when the location is admin-controlled and cannot be written by restricted users
hash for unsigned/pinned binaries when no safer stable identity exists
Do not use a broad path Allow over a location writable by standard users.
Do not require hashes for routinely updated signed software when a sufficiently constrained publisher rule can express the intended trust.
Define schema/versioning and validation for application approvals. Reject ambiguous/unsafe entries instead of silently widening policy.
2. Approved browsers remain a first-class subset
approvedStudentBrowsers remains authoritative for browsers.
Strict mode must not require operators to duplicate the approved browser in a generic app list. Generate the required verified browser application surface from the canonical browser discovery/release contract.
Firefox Release approval must not accidentally approve Tor Browser or Firefox Portable.
3. Windows/OpenPath baseline must be minimal and explicit
Inventory every OS/OpenPath executable/script surface the restricted student legitimately needs.
Do not preserve %PROGRAMFILES%\* merely for convenience: that would defeat strict mode.
Use the smallest maintainable combination of:
Windows system path/publisher rules
OpenPath-owned runtime paths
Microsoft packaged-app rules where product-required
specific approved application rules
Document every broad baseline rule and why it cannot be abused to execute arbitrary third-party code.
4. Unknown installed executable must be denied
This is the differentiating strict-mode invariant.
Prepare a benign synthetic executable as administrator in a managed install location, for example:
C:\Program Files\FutureBrowser\future.exe
Do not add a FutureBrowser deny rule.
For the restricted student in strict mode:
Test-AppLockerPolicy / real execution -> denied by default
The same test is intentionally not a requirement of compatibility mode #254.
If candidate validation fails, restore/retain the previous known-good boundary and report the transition failure.
Do not persist StrictApplicationAllowlist as active before effective validation succeeds.
Switching back to compatibility mode must likewise remove strict-mode managed rules deterministically without deleting unrelated administrator-managed AppLocker rules.
7. Health/readiness includes profile identity
When strict mode is configured, health must verify the effective policy corresponding to strict mode, not merely "some AppLocker policy exists".
has no generic restricted-user Program Files allow
allows required OS/OpenPath baseline
allows approved Firefox Release
allows explicitly approved test application
does not contain FutureBrowser-specific deny
FutureBrowser remains unmatched by Allow -> denied by default
Assert previous known-good profile/policy remains recoverable and active state is truthful.
Phase 4 — real Windows E2E
Under the same standard local student context prove:
Firefox approved -> allowed
Edge unapproved -> denied
portable PE -> denied
FutureBrowser synthetic Program Files PE -> denied without brand-specific rule
approved classroom app -> allowed
same app not approved -> denied
required Windows shell/session functionality -> works
OpenPath runtime/watchdog -> works
administrator recovery -> works
Then switch back to compatibility profile and prove managed classroom application compatibility returns without leaving stale strict managed rules.
Acceptance criteria
Strict mode is explicit and opt-in; default compatibility behavior does not silently change.
Strict mode has a validated/versioned approved-application catalog.
Approved browsers are derived from the canonical browser contract and need no duplicate generic app entry.
Restricted-user strict policy has no blanket arbitrary third-party Program Files execution allowance.
Synthetic unknown FutureBrowser executable under Program Files is denied by default with no brand-specific deny rule.
Explicitly approved representative classroom application is allowed.
Summary
Add an explicit opt-in strict application-control mode for Windows classrooms that require the stronger guarantee:
This is deliberately separate from the default compatibility policy in #254.
The default managed-browser policy must continue to support legitimate centrally installed classroom applications without requiring an exhaustive application catalog. That compatibility requirement makes it impossible to also guarantee that an arbitrary previously unknown browser placed by an administrator under
Program Fileswill be denied: AppLocker cannot infer "this executable is a browser" generically.Strict mode resolves that contradiction by changing the contract explicitly rather than silently tightening the default.
Related:
This issue does not block #253/#255 unless the release decision explicitly requires strict mode to ship atomically.
Product contract
Introduce two intentionally different policy profiles (names may follow repository conventions):
Compatibility profile
Strict profile
The configuration/state must make the active profile unambiguous. Do not infer strict mode merely from the presence of an app list.
Design requirements
1. Explicit approved-application catalog
Strict mode needs a durable operator-managed application approval contract.
Prefer stable identities in this order where practical:
Do not use a broad path Allow over a location writable by standard users.
Do not require hashes for routinely updated signed software when a sufficiently constrained publisher rule can express the intended trust.
Define schema/versioning and validation for application approvals. Reject ambiguous/unsafe entries instead of silently widening policy.
2. Approved browsers remain a first-class subset
approvedStudentBrowsersremains authoritative for browsers.Strict mode must not require operators to duplicate the approved browser in a generic app list. Generate the required verified browser application surface from the canonical browser discovery/release contract.
Firefox Release approval must not accidentally approve Tor Browser or Firefox Portable.
3. Windows/OpenPath baseline must be minimal and explicit
Inventory every OS/OpenPath executable/script surface the restricted student legitimately needs.
Do not preserve
%PROGRAMFILES%\*merely for convenience: that would defeat strict mode.Use the smallest maintainable combination of:
Document every broad baseline rule and why it cannot be abused to execute arbitrary third-party code.
4. Unknown installed executable must be denied
This is the differentiating strict-mode invariant.
Prepare a benign synthetic executable as administrator in a managed install location, for example:
Do not add a
FutureBrowserdeny rule.For the restricted student in strict mode:
The same test is intentionally not a requirement of compatibility mode #254.
5. Legitimate classroom apps require explicit approval
Use at least one representative signed classroom application fixture/real app in E2E:
Prove an application update behaves according to the selected identity type:
6. Policy transition must be transactional
Switching from compatibility to strict mode can make applications stop launching.
Required transition:
If candidate validation fails, restore/retain the previous known-good boundary and report the transition failure.
Do not persist
StrictApplicationAllowlistas active before effective validation succeeds.Switching back to compatibility mode must likewise remove strict-mode managed rules deterministically without deleting unrelated administrator-managed AppLocker rules.
7. Health/readiness includes profile identity
When strict mode is configured, health must verify the effective policy corresponding to strict mode, not merely "some AppLocker policy exists".
Stable diagnostics should distinguish at least:
Integrate with #186 rather than creating a second health subsystem.
8. Recovery remains possible
Administrators/SYSTEM must retain a tested recovery path even when the strict student policy is malformed.
Do not scope student denies to administrators accidentally.
Implementation order for an LLM agent
Phase 0 — design inventory before code
AGENTS.mdandwindows/AGENTS.mdcompletely.windows/lib/AppControl.psm1and AppLocker tests completely.Do not implement strict mode by simply deleting
%PROGRAMFILES%allows and then chasing failures one executable at a time.Phase 1 — schema/config tests
TDD:
Phase 2 — policy generation tests
Prove strict policy:
Phase 3 — transactional transition tests
Inject failures at:
Assert previous known-good profile/policy remains recoverable and active state is truthful.
Phase 4 — real Windows E2E
Under the same standard local student context prove:
Then switch back to compatibility profile and prove managed classroom application compatibility returns without leaving stale strict managed rules.
Acceptance criteria
FutureBrowserexecutable under Program Files is denied by default with no brand-specific deny rule.Non-goals
Completion report
Report:
Final invariant: