Zenn Dev Karaage0703 Articles 5113cedc2238df
huskyでmainブランチへの直接pushを禁止する方法
- URL: https://zenn.dev/karaage0703/articles/5113cedc2238df
- 日付: 2026-06-26
- Tier: Tier 3
- 要旨: Claude Code や Codex などの AI エージェントが誤って main ブランチへ直接 push してしまうリスクに対し、Node.js プロジェクトで husky の pre-push フックを使ってローカルレベルでブロックする方法を紹介している。フック自体は数行のシェルスクリプトで、push 先が refs/heads/main の場合に exit 1 を返す仕組み。–no-verify や GitHub Web UI からの操作は防げないため、チーム開発では GitHub の branch protection rules への課金が確実だと明示している。
詳細
- 背景: claude –dangerously-skip-permissions を使った自動化開発で、AI が意図せず git push origin main を実行するリスクへの対処
- 前提: Node.js プロジェクト、husky インストール済み(npm install husky –save-dev && npx husky init)
- フック: .husky/pre-push に remote_ref が refs/heads/main のときに exit 1 するシェルスクリプトを配置
- chmod +x .husky/pre-push で実行権限付与が必要
- ブランチからの push は正常に動作することを確認済み
- 抜け穴: husky 未設定環境、git push –no-verify、GitHub Web UI からの操作は防げない
- Python / 非 Node.js プロジェクトの代替: .git/hooks/pre-push に直接配置(Git 標準機能)、または pre-commit フレームワーク(筆者未検証)
- 確実な保護にはプライベートリポジトリで GitHub branch protection rules への課金が必要