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 運用をしたい時
使い方
- 1settings.json の permissions.deny に force push パターンを追加
- 2git push -f と git push --force の両方をカバー
- 3--force-with-lease は比較的安全だが、必要に応じて ask に
- 4チーム共有設定として .claude/settings.json に配置
Tips
- --force-with-lease は他の人の変更を上書きしないので比較的安全
- GitHub/GitLab のブランチ保護ルールも併用推奨
- main/master ブランチへの直接 push も禁止を検討
- git reflog で force push 前の状態を復元可能(ローカルのみ)