CC逆引きリファレンス

force push を禁止したい

13. セキュリティリスク回避

コマンド / 機能

"deny": ["Bash(git push --force*)", "Bash(git push -f*)"]

概要

Git の force push を禁止して、リモートリポジトリの履歴が意図せず書き換えられることを防ぎます。

設定例

// settings.json
{
  "permissions": {
    "deny": [
      // force push のバリエーション
      "Bash(git push --force*)",
      "Bash(git push -f*)",
      "Bash(git push --force-with-lease*)",
      "Bash(git push origin +*)",

      // その他の危険な Git 操作
      "Bash(git reset --hard*)",
      "Bash(git clean -fd*)",
      "Bash(git checkout -- *)",
      "Bash(git branch -D*)"
    ],
    // 確認付きで許可したい場合
    "ask": [
      "Bash(git push --force-with-lease*)"
    ]
  }
}

こんな時に使う

  • リモートリポジトリの履歴破壊を防ぎたい時
  • チームで安全な Git 運用をしたい時

使い方

  1. 1settings.json の permissions.deny に force push パターンを追加
  2. 2git push -f と git push --force の両方をカバー
  3. 3--force-with-lease は比較的安全だが、必要に応じて ask に
  4. 4チーム共有設定として .claude/settings.json に配置

Tips

  • --force-with-lease は他の人の変更を上書きしないので比較的安全
  • GitHub/GitLab のブランチ保護ルールも併用推奨
  • main/master ブランチへの直接 push も禁止を検討
  • git reflog で force push 前の状態を復元可能(ローカルのみ)