Claude Code で git push だけ毎回確認させる ask 設定
Claude Code でコミットまでは自動で進めつつ、git push の直前だけ必ず確認を挟むための permissions.ask の書き方を解説します。allow と ask が両方一致したときの挙動、ブランチごとの許可、動作確認の手順も紹介します。
「コミットまでは自分で進めてほしいが、push はリモートに影響するので最後に自分で確認したい」。この要望は、permissions.ask に git push を書くだけで実現できます。
ask は「allow に一致していても、必ず確認する」ためのルールです。Git の読み取り系やコミットを allow で自動化しつつ、push だけを止められます。
KEY POINT
この記事で分かること
git pushだけ確認させる ask の書き方- allow と ask が両方一致したときの優先順位
- 確認ダイアログの選択肢と、その後の設定への影響
設定例
{
"permissions": {
"allow": [
"Bash(git status)",
"Bash(git diff:*)",
"Bash(git log:*)",
"Bash(git add:*)",
"Bash(git commit:*)"
],
"ask": [
"Bash(git push:*)"
],
"deny": [
"Bash(git push --force:*)",
"Bash(git push -f:*)"
]
}
}
この設定では、git status、git diff、git add、git commit は確認なしで実行され、git push のときだけダイアログが出ます。force push は deny で完全に禁止しています。
用語解説
3 つのルールの優先順位: deny > ask > allow の順に強く、同じコマンドが複数に一致した場合は強い方が適用されます。Bash(git:*) を allow に書いていても、ask に Bash(git push:*) があれば push は確認されます。
確認ダイアログの選択肢
git push の実行時には、次のような選択肢が表示されます。
| 選択肢 | 効果 |
|---|---|
| 今回だけ許可 | この 1 回だけ実行する |
| 今後も許可 | settings.local.json の allow に追記する。ただし ask のルールが残っていれば次回も確認される |
| 拒否 | 実行せず、Claude に理由を伝えられる |
「今後も許可」を選んでも ask が残る点は、意図した挙動です。「push は毎回自分で確認する」という方針を、うっかり解除してしまわないための仕組みとして働きます。
特定のブランチだけ自動許可する
自分専用の作業ブランチへの push は自動にしたい場合、allow に限定したパターンを書きます。ただし ask の Bash(git push:*) が残っていると確認されるため、ask 側もブランチを限定します。
{
"permissions": {
"allow": [
"Bash(git push origin feature/*:*)"
],
"ask": [
"Bash(git push origin main:*)",
"Bash(git push origin develop:*)"
]
}
}
この書き方は、Claude が git push origin feature/xxx の形でコマンドを組み立てることに依存します。git push だけで実行された場合はどちらにも一致せず、defaultMode の挙動に従います。確実さを優先するなら、ブランチ限定はせず「push は常に確認」に統一する方が事故が少ないです。
動作を確認する
- 設定を保存して Claude Code を再起動します。
- 小さな変更を加え、「コミットして push して」と指示します。
- コミットは確認なしで進み、push の直前にダイアログが出れば成功です。
関連する設定
全体の設計方針は親記事の settings.json で permissions を設計する を参照してください。force push を完全に禁止する書き方は git push --force を禁止する deny 設定 にまとめています。
まとめ
permissions.askにBash(git push:*)を書くと、push の直前に必ず確認が入る- ask は allow より優先されるため、Git 操作全体を allow にしていても push は止まる
- 「今後も許可」を選んでも ask が残る限り確認は続く
- ブランチ限定は Claude のコマンドの組み立て方に依存するので、確実さを優先するなら「push は常に確認」に統一する
よくある質問
- allow に git 全体を書き、ask に git push を書いた場合はどちらが優先されますか?
- ask が優先され、git push の前には確認が入ります。ask は「allow に一致しても確認する」ためのルールです。
- 確認ダイアログで「今後も許可」を選ぶとどうなりますか?
- settings.local.json の allow に追記されますが、ask のルールが残っていれば引き続き確認されます。ask を外したい場合は設定ファイルを直接編集してください。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。