Claude Code で git push だけ毎回確認させる ask 設定

Claude Code 公開:

Claude Code でコミットまでは自動で進めつつ、git push の直前だけ必ず確認を挟むための permissions.ask の書き方を解説します。allow と ask が両方一致したときの挙動、ブランチごとの許可、動作確認の手順も紹介します。

検証日 2026年9月7日 仕様変更が早い分野です。最新の公式ドキュメントも併せてご確認ください。
目次
  1. 設定例
  2. 確認ダイアログの選択肢
  3. 特定のブランチだけ自動許可する
  4. 動作を確認する
  5. 関連する設定
  6. まとめ

「コミットまでは自分で進めてほしいが、push はリモートに影響するので最後に自分で確認したい」。この要望は、permissions.askgit 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 statusgit diffgit addgit 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 は常に確認」に統一する方が事故が少ないです。

動作を確認する

  1. 設定を保存して Claude Code を再起動します。
  2. 小さな変更を加え、「コミットして push して」と指示します。
  3. コミットは確認なしで進み、push の直前にダイアログが出れば成功です。

関連する設定

全体の設計方針は親記事の settings.json で permissions を設計する を参照してください。force push を完全に禁止する書き方は git push --force を禁止する deny 設定 にまとめています。

まとめ

  • permissions.askBash(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 が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。