AgentElevate deliberately lets a non-administrator process trigger a curated set of operations as SYSTEM
without a UAC prompt. That is the entire point of the project, and it is only safe under a specific model.
AgentElevate is for a SINGLE-USER, SINGLE-ADMIN Windows machine that you personally own and control: a developer or automation workstation where the one interactive user is also the administrator. In that model the "attacker" is unprivileged malware running as that same user, and the broker is a hardened, allow-listed, audited reduction of UAC friction.
Caution
Do NOT deploy AgentElevate on:
- Multi-user machines (more than one human logs in). A standard user could drive the broker.
- Domain-joined, Active Directory, or enterprise-managed machines.
- Shared, kiosk, server, or production hosts.
- Any machine where "the local user" and "a local administrator" are different trust levels.
On those systems the broker is a local privilege-escalation surface, not a convenience. You would be
lowering the security posture of a machine whose threat model assumes standard users should not reach
SYSTEM. Don't do it.
If your situation is not the single-user-owner model, you almost certainly want interactive elevation
instead. Use gsudo or the Windows 11 native sudo, which keep the UAC prompt.
- It does not disable UAC globally, Windows Defender, SmartScreen, or any OS protection.
- It runs only operations that are (a) enabled in the admin-only
broker-policy.jsonand (b) whose every parameter is on that operation's admin-curated allow-list. It never executes attacker-supplied code or shell strings. - The trust anchor is the admin-only path ACL plus Administrators ownership of
C:\Program Files\AgentElevate\(no signing certificate), re-verified on every run. Requests are read through one exclusive handle that refuses reparse points and hard links. Every request is recorded in a fail-closed, tamper-evident audit log attributed to the OS-set file owner.
- An allow-listed
wingetpackage still runs its vendor installer asSYSTEM. That is inherent to installing packages without UAC. List only package ids you trust at that privilege level. - Install-time integrity rests on you running a reviewed
setup-agentelevate.ps1from a trusted clone. SHA-256 source and deployed pins plus reparse checks are defense in depth. Runtime is bounded by the admin-only path and ownership, re-verified every run. - The at-most-once request removal is path-based, so a request owner can race a re-run of an already allow-listed op (the same as submitting it twice). It is bounded by the allow-list and the per-run cap. Not an escalation.
Report security issues privately. Do not open a public issue for anything exploitable.
- Preferred: GitHub private vulnerability reporting, this repo's Security tab, then Report a vulnerability.
- Include repro steps, the affected file and line, and the impact under the threat model above.
This is a personal open-source project provided "as is" with no warranty (see LICENSE) and no SLA. Credible reports will be looked at and credited. Responsible disclosure is appreciated: give a reasonable window before public disclosure.
The broker has been through multiple adversarial review rounds (Codex gpt-5.5, Grok-4.3, and a parallel
Claude multi-agent workflow that ran empirical proof-of-concept attacks on a live machine), with no unresolved
Critical or High findings. It ships with a unit, functional, integration, and regression test suite that
passes on both Windows PowerShell 5.1 and PowerShell 7. That does not make it risk-free. Read this document
and curate the allow-list conservatively.