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
{{ message }}
Repository navigation
tool guard: other spellings of a hook-skipping push aren't refused #993
The tool guard refuses an agent's push that skips the pre-push hook only when the skip is spelled exactly. Other spellings git accepts are let through, and git then skips the hook (measured on main 40ef312, in a scratch repo with a local bare remote and a refusing hook). The exact forms are held privately (#707). Found by the second review of #932 round 6.
Impact is limited (inferred): agents have no push credentials, and the push gate on the server side is unaffected.
Fix, by design: read push and commit option words the way git does: unique long-option prefixes, plus aliases from -c and from the repo config. Alternatively, refuse any line whose git subcommand is an alias, or whose option is an abbreviation, when the hook could be skipped. This is the same direction as #979, which refuses shell evaluation in git's words.
Until this is fixed, pushgate.no-hatch-skip-swap is not counted as covered on the #707 scoreboard.
Activity
Adversarial suite: kills are assertions, anchors start in code, lane …
fix(guardrails): read env's options from the parsed words, not the li…
fix(guardrails): read git's own git-push and git-config programs as g…
fix(guardrails): ask git which names are its own commands instead of …
test(guardrails): pin env's options given as words of find -exec (#993)
docs(guardrails): say which ordinary lines the push guard newly refus…
fix(guardrails): read git, env and the hookless push programs only in…
fix(guardrails): narrow git's command list only where the line remove…
docs(guardrails): claim only the measured newly refused lines, and na…
fix(guardrails): read a runner's command by its option grammar, not t…
fix(guardrails): allow git config reads of an alias, include or help.…
docs(guardrails): runner grammar, git config reads, the PATH wording …
fix(guardrails): read git config and runner options by their own argu…
fix(guardrails): read env's option clusters as getopt does (#993)
fix(guardrails): read git config's short options as git's parse-optio…
test(guardrails): env --chdir's value, -iuNAME and an attached -uNAME (…
fix(guardrails): strace's --silent takes an attached value only; list…
test(guardrails): check each runner's value options against the insta…
Merge pull request #1101 from jayden1711/issue-993-hook-skip-spellings