settings.jsonって何?確認ダイアログを減らすまでの実録

Claude Code は gitgh を実行する前に、毎回確認ダイアログを出してきます。.claude/settings.jsonpermissions.allow にコマンドを登録すると、その確認を減らせます。

今回は README だけのローカルリポジトリを、Claude Code に GitHub 公開させながら、.claude/settings.json を少しずつ足していきました。

この記事でわかること

  • settings.jsonpermissions.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 の実行前に、確認ダイアログが出ました。

図1:gh repo create の確認ダイアログ
図1:gh repo create の確認ダイアログ

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

図2:GitHub上に claude-setting.json ができた
図2:GitHub上に claude-setting.json ができた

gh を常に許可する

セッションをまたいでも聞かれないように、.claude/settings.json を作ります。

ghコマンドを常に許可するように、.claude/settings.jsonを作成してください。
{
  "permissions": {
    "allow": [
      "Bash(gh *)",
      "PowerShell(gh *)"
    ]
  }
}
図3:gh を許可した settings.json
図3:gh を許可した settings.json

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

図4:push が確認なしで完了
図4:push が確認なしで完了

git commit も許可する

.claude/settings.jsonにgit commitを追加してください。

Bash(git commit *)PowerShell(git commit *) が追記されました。

図5:git commit の許可が追加された
図5:git commit の許可が追加された

git add が足りなかった

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

図6:settings.json が未ステージの状態
図6:settings.json が未ステージの状態
git addも許可するように.claude/settingsを修正してください。
図7:git add の許可も追加された
図7:git add の許可も追加された

&& 連結だと許可ルールに合わない

再度「コミットした後で push」と頼みました。

.claude/settings.jsonをコミットした後で、プッシュもしてください。

Claude はこう判断し、コマンドを1本ずつ実行しました。

連続コマンドだと許可ルールに合致せず確認が必要になっているようなので、コマンドを分けて実行します。

git add ... && git commit ... && git push ... のような複合コマンドは、1本の allow ルールではまとめて許可されません。公式ドキュメント では、&&; でつないだ場合、サブコマンドごとにルールが照合されるとされています。

今回のケースでは、Claude が複合実行を避けて1本ずつ実行しました。その結果、git addgit commitgit push まで確認なしで完了しました。

図8:add → commit → push が個別実行で完了
図8:add → commit → push が個別実行で完了

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

図9:GitHub上の最終版 settings.json
図9:GitHub上の最終版 settings.json
{
  "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.jsonpermissions.allow に書いたコマンドは、確認なしで実行されやすくなる
  • Windows では BashPowerShell の両方を書いておくと確実
  • 設定はセッションをまたいで有効(その都度「このセッションだけ許可」する手間がなくなる)
  • git add のように足し忘れたコマンドがあると、途中で確認が再び出る
  • && / ; でつないだ複合コマンドはサブコマンド単位で照合される。Claude は分けて実行することで通した
  • git push を無確認にしたい場合は Bash(git push *) / PowerShell(git push *) も追加する

次のステップ

検証に使った設定は xpendev/claude-setting.json で公開しています。手元で git clone して、.claude/settings.json の中身を確かめてみてください。

連載ナビ

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次