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
Two related fail-open bypasses of the pre-push gate:
prov off PATH (githooks/pre-push:17-19): when command -v prov returns non-zero, the wrapper silently exit 0s with no stderr warning. PATH stripping or an uninstalled binary disables the gate without the user noticing.
P1 — privacy fail-open by environment. Confidence 100.
Evidence
githooks/pre-push:17-19 — the command -v prov defensive branch.
git push --mirror upstream semantics — includes notes refs by default.
Possible fixes
Wrapper: when prov is missing, write to stderr (prov pre-push hook installed but prov binary not found; aborting push) and exit 1. Treat the gate as fail-closed when its dependency is gone.
Add a --mirror test scenario to cli_pre_push.rs.
Consider an install-time / prov doctor check that warns when the wrapper exists but prov is unreachable.
Summary
Two related fail-open bypasses of the pre-push gate:
githooks/pre-push:17-19): whencommand -v provreturns non-zero, the wrapper silentlyexit 0s with no stderr warning. PATH stripping or an uninstalled binary disables the gate without the user noticing.git push --mirror: mirror's refspec includesrefs/notes/prompts-private. Combined with bypass feat: Prov v1 foundation — workspace, schema/storage, redactor (U1+U2+U6) #1 (or with a chained-hook stdin bypass), private notes ship to the remote.Severity
P1 — privacy fail-open by environment. Confidence 100.
Evidence
githooks/pre-push:17-19— thecommand -v provdefensive branch.git push --mirrorupstream semantics — includes notes refs by default.Possible fixes
provis missing, write to stderr (prov pre-push hook installed but prov binary not found; aborting push) andexit 1. Treat the gate as fail-closed when its dependency is gone.--mirrortest scenario tocli_pre_push.rs.prov doctorcheck that warns when the wrapper exists butprovis unreachable.Acceptance criteria
git push --mirror originagainst a notes ref containing planted private content — push aborts non-zero.Reference
/tmp/compound-engineering/ce-code-review/20260502-075634-3af3d047/adversarial.json(#3).