コンテンツにスキップ
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 への課金が必要