Repository navigation
security(admission): preserve uv Python-provider evidence when a global option value is run #438
Description
Agent Artifact Admission's uv Python-provider classifier scanned raw tokens with position("run") / position("pip") instead of reusing the parser-aware active-command boundary. A parser-valid uv global value could therefore be mistaken for the run command.
Concrete hostile shape:
uv --project run pip install cwl-example==1.2.3 --require-hashes --no-deps --no-python-downloads --managed-python
--project is a documented uv global value option; a directory literally named run is a realistic parser-valid value, not a command boundary. The inherited classifier returned false before recording explicit Python-provider authority, so the request still failed closed generically but lost causal AlternateInstallRoot evidence.
Acceptance
- hostile test-only exact head first demonstrates semantic RED with production source byte-identical;
ForbiddenCommandremains present for the deliberately unsupported global-option command shape;AlternateInstallRootis preserved for exact--managed-python/--no-managed-pythonprovider selection when the parser-active command is notuv run;- actual
uv runremains outside install-authority semantics and does not gainAlternateInstallRootfrom child/run arguments; - exact submitted argv hashing remains unchanged;
- minimum repair reuses the existing parser-aware uv command-boundary helper instead of introducing a second parser or runtime/execution authority.
Executed RED -> GREEN -> serialized integration
- Test-only exact
ea9c817a8d0edd0e78052d18493a1f1f0954e91festablished hosted semantic RED: the value tokenrunconsumed by global--projecterased causal provider evidence whileForbiddenCommandremained. - Minimum causal repair exact
1dfcdcb38b5ef9bc2bee25e48dc63a15e65117a5removed the duplicate raw token-order heuristic and reusedpolicy::uv_active_command_index(); Fuzz35428398273was GREEN. CI35428398285exposed only rustfmt in the new regression fixture, not a production semantic defect. - Exact child
#439@f84787e5b6bb4148be417a98957b24e102dd1137contains the repaired source plus canonical rustfmt-only fixture follow-ups. Fresh exact-head CI35460113884and Fuzz35460113893are terminal SUCCESS; reviews and review threads were empty; its parent remained exactly#129@fdd3e3dbd73a2838ffdabad41134a9c156cddca6. - fix(admission): preserve uv provider evidence across global option values #439 was therefore marked Ready and normally merged with fixed expected-head protection into feat(security): gate AI-agent artifact installation #129 as merge commit
9efc804006057f099190d8ffcaa7096c955abe0d. No force update, destructive rebase, self/model approval, gate weakening or bypass was used. - Root movement invalidated every predecessor feat(security): gate AI-agent artifact installation #129 conclusion. On unchanged exact
#129@9efc804006057f099190d8ffcaa7096c955abe0d, CI35477678285, Fuzz35477678328, SAST35477678290, and Security35477678327are terminal SUCCESS. Required CodeQL35477678309is terminal FAILURE only at the delegated current-head settlement boundary: exact-head language detection succeeded, the compatibility job read the current-head verdict and failed atRelease runner or enforce current-head CodeQL verdict, and the subsequent dispatch job succeeded. The same-head specimen is already handed to canonical central owner.github#1929; this is not Wardnet source/test/SARIF RED and does not justify source/no-op churn, synthetic status, copied central workflow logic or routine bypass.
Keep this issue open until the effective repair reaches protected main through #129 or a verified complete successor. Central hosted-runner/OpenCode and delegated CodeQL settlement remain .github#712/#1234 and .github#1929 ownership; generic solo-maintainer approval remains .github#772. Wardnet does not copy those workflows, churn source to redispatch, synthesize status, self/model approve, weaken gates or routinely bypass protection.
Activity
seonghobae commentedon Sep 19, 2026
Fresh child status: #439 predecessor
d5ccf81300ca7dfa830ab8431999728a8034a972materialized. Fuzz35444660193was SUCCESS; CI35444660171failed only at deterministiccargo fmt --checkoutput (import order + two long fixture lines), before tests/Clippy. Those exact formatter changes are now applied; current child head isf84787e5b6bb4148be417a98957b24e102dd1137, still based exactly on #129fdd3e3dbd73a2838ffdabad41134a9c156cddca6and mechanically mergeable. Fresh CI35460113884and Fuzz35460113893are queued. Issue remains open; no GREEN/merge claim until unchanged current head is terminal-valid and the effective delta eventually reaches protectedmainor a verified complete successor.