trailofbits / trailofbits/claude-code-config
git push hook regex false-positives on branch names containing "main"
Nobody has claimed this yet.
- Dominant language
- Shell
- Stars
- 2.1k
- Forks
- 161
- Avg merge
- 3d 59m
- Merged PRs (30d)
- 1
Description
The git push PreToolUse hook matches main/master anywhere in the command string, blocking pushes to branches that contain these as substrings:
git push -u origin deps/aiohttp-3.13.5-remaining # blocked — "main" in "remaining"
git push origin feature/maintain-state # blocked — "main" in "maintain"
git push origin fix/mainframe-bug # blocked — "main" in "mainframe"
The fix requires main/master to appear as a standalone ref target by checking the preceding character is a whitespace, colon (refspec), slash (fully-qualified ref), or + (force-push prefix):
-git[[:space:]]+push.*(main|master)
+git[[:space:]]+push[[:space:]].*([[:space:]]|:|/|\+)(main|master)([[:space:]]|$)
This matches the rigor level applied to the rm hook in #33.
Blocked:
git push origin maingit push -u origin maingit push origin feature:main(refspec)git push origin refs/heads/main(fully-qualified)git push origin +main(force prefix)git push origin HEAD:refs/heads/main
Allowed:
git push -u origin deps/aiohttp-3.13.5-remaininggit push origin feature/maintain-stategit push origin fix/mainframe-buggit push(bare push to tracking branch)
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Find the git push PreToolUse hook and inspect its current branch-name regex, then compare its matching rules with the rm hook referenced in #33. Update the matching behavior so the listed protected refs are blocked while the allowed branch names and bare push remain allowed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- shell
- Domain
- cli, tooling
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100