Files
passepartout/scripts/pre-push-release-guard
Amr Gharbeia e05d23f34e hardening: pre-push hook blocks tag pushes without release token
Token file: /tmp/passepartout-release-approved
Hook at: scripts/pre-push-release-guard
Documented in: docs/CONTRIBUTING.org

This is a hard enforcement of the AGENTS.md release-permission rule.
I physically cannot push a tag unless the user creates the token file.
Token is consumed (deleted) on first successful push.
2026-05-08 11:29:25 -04:00

35 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
# Pre-push hook: block tag pushes without release token.
# Tag pushes are blocked unless /tmp/passepartout-release-approved exists.
# The token is consumed (deleted) on first successful push.
#
# Install:
# ln -sf ../../scripts/pre-push-release-guard .git/hooks/pre-push
#
# Returns 0 (pass) or 1 (blocked).
set -euo pipefail
BLOCKED=0
while read -r local_ref local_oid remote_ref remote_oid; do
case "$remote_ref" in
refs/tags/*)
if [ ! -f /tmp/passepartout-release-approved ]; then
echo "" >&2
echo "============================================================" >&2
echo " BLOCKED: tag push requires release token" >&2
echo " Only the user may authorize a release." >&2
echo " To grant permission: touch /tmp/passepartout-release-approved" >&2
echo "============================================================" >&2
echo "" >&2
BLOCKED=1
else
rm /tmp/passepartout-release-approved
fi
;;
esac
done
exit $BLOCKED