Claude Code は git や gh を実行する前に、毎回確認ダイアログを出してきます。.claude/settings.json の permissions.allow にコマンドを登録すると、その確認を減らせます。
今回は README だけのローカルリポジトリを、Claude Code に GitHub 公開させながら、.claude/settings.json を少しずつ足していきました。
この記事でわかること
settings.jsonのpermissions.allowで確認ダイアログを減らす方法- 設定を足しても確認が出るとき(
git add漏れなど)の対処 &&でつないだ複合コマンドが1本の許可ルールに合致しない理由
先に結論だけ: コマンドを permissions.allow に書けば確認は減らせます。ただし && や ; でつないだコマンドはサブコマンドごとに照合されるため、1本のルールではまとめて許可されません(本記事で実際にハマった箇所です)。
この記事は連載「AIにコードを書かせる前に知っておきたい設定ファイル」の第2回です。第1回(CLAUDE.mdとは?効いた・効かなかった3パターンで検証)も公開しています。
📦 最終的な設定ファイル:xpendev/claude-setting.json
何も設定せずに GitHub 公開を頼む
ローカルには README.md だけをコミットした main があり、GitHub 上にはまだリポジトリがありません。gh auth login 済みです。
GitHub上にpublicなプロジェクト(claude-setting.json)を作成し、プッシュしてください。
gh repo create の実行前に、確認ダイアログが出ました。

「2(このセッション中だけ許可)」を選んで進め、リポジトリは作成できました。

gh を常に許可する
セッションをまたいでも聞かれないように、.claude/settings.json を作ります。
ghコマンドを常に許可するように、.claude/settings.jsonを作成してください。
{
"permissions": {
"allow": [
"Bash(gh *)",
"PowerShell(gh *)"
]
}
}

この状態で「コミットしたので push して」と頼むと、gh まわりは確認なしで通りました。

git commit も許可する
.claude/settings.jsonにgit commitを追加してください。
Bash(git commit *) と PowerShell(git commit *) が追記されました。

git add が足りなかった
「コミットしてから push」と頼むと、今度は git add の許可を求められました。

git addも許可するように.claude/settingsを修正してください。

&& 連結だと許可ルールに合わない
再度「コミットした後で push」と頼みました。
.claude/settings.jsonをコミットした後で、プッシュもしてください。
Claude はこう判断し、コマンドを1本ずつ実行しました。
連続コマンドだと許可ルールに合致せず確認が必要になっているようなので、コマンドを分けて実行します。
git add ... && git commit ... && git push ... のような複合コマンドは、1本の allow ルールではまとめて許可されません。公式ドキュメント では、&& や ; でつないだ場合、サブコマンドごとにルールが照合されるとされています。
今回のケースでは、Claude が複合実行を避けて1本ずつ実行しました。その結果、git add → git commit → git push まで確認なしで完了しました。

最終的な settings.json は GitHub にも公開しています。

{
"permissions": {
"allow": [
"Bash(gh *)",
"PowerShell(gh *)",
"Bash(git commit *)",
"PowerShell(git commit *)",
"Bash(git add *)",
"PowerShell(git add *)"
]
}
}
git push はこのファイルには入れていません。図8で push が通ったのは、手元に残っていた個人設定(settings.local.json)の影響の可能性があります。リポジトリの設定だけで push まで無確認にしたい場合は、同じ要領で Bash(git push *) / PowerShell(git push *) も足してください。
まとめ
.claude/settings.jsonのpermissions.allowに書いたコマンドは、確認なしで実行されやすくなる- Windows では
BashとPowerShellの両方を書いておくと確実 - 設定はセッションをまたいで有効(その都度「このセッションだけ許可」する手間がなくなる)
git addのように足し忘れたコマンドがあると、途中で確認が再び出る&&/;でつないだ複合コマンドはサブコマンド単位で照合される。Claude は分けて実行することで通したgit pushを無確認にしたい場合はBash(git push *)/PowerShell(git push *)も追加する
次のステップ
検証に使った設定は xpendev/claude-setting.json で公開しています。手元で git clone して、.claude/settings.json の中身を確かめてみてください。
連載ナビ

コメント