原文(日本語に翻訳)
複合Bashコマンド(例:cd /tmp && git fetch && git push)に対して、コマンド全体を1つとして扱うのではなく、サブコマンドごとにスマートなプレフィックスを計算するよう「常に許可」プレフィックス提案を改善しました。
原文(英語)
Improved "always allow" prefix suggestions for compound bash commands (e.g. cd /tmp && git fetch && git push) to compute smarter per-subcommand prefixes instead of treating the whole command as one
概要
Claude Codeの「常に許可(Always allow)」機能において、&& で結合された複合Bashコマンドのプレフィックス提案が改善されました。従来はコマンド全体を1つの文字列として扱い、長くて使いにくいプレフィックスが提案されていましたが、新しい実装ではサブコマンドごとにインテリジェントなプレフィックスを計算します。これにより、より精度の高い権限管理と直感的な許可設定が可能になります。
基本的な使い方
「常に許可」の設定方法
Claudeがコマンドを提案した際に「常に許可」を選択すると、設定が保存されます:
bash
# Claudeが以下のコマンドを実行しようとした場合
cd /tmp && git fetch && git push
# 旧動作: コマンド全体で1つのルール(使いにくい)
# Bash(cd /tmp && git fetch && git push)
# 新動作: サブコマンドごとにスマートなルール
# Bash(cd /tmp:*)
# Bash(git fetch:*)
# Bash(git push:*)パーミッション設定の確認
bash
# 現在の権限設定を確認
/permissions設定は settings.local.json(プロジェクト固有)または ~/.claude/settings.json(グローバル)に保存されます。
実践例
開発ワークフローコマンドの許可設定
bash
# Claudeが実行しようとするコマンド
cd /project && npm install && npm run build
# 新しい提案(サブコマンドごと)
# → cd /project を常に許可
# → npm install を常に許可
# → npm run build を常に許可
# それぞれ個別に承認・拒否できるCI/CD関連コマンドの管理
bash
# Claudeが実行しようとするコマンド
git add -A && git commit -m "fix" && git push origin main
# 新しいサブコマンドごとのプレフィックス提案により
# git push のみを都度確認、git add と git commit は常に許可
# という細かい設定が可能ワイルドカードパターンの活用
bash
# settings.json での設定例
{
"permissions": {
"allow": [
"Bash(git fetch:*)",
"Bash(npm *)",
"Bash(cd /project/*)"
],
"deny": [
"Bash(git push --force:*)",
"Bash(rm -rf:*)"
]
}
}セキュリティ向上の観点
bash
# 以前は &&でつながれたコマンドで
# 許可済みコマンドの後に予期しないコマンドが実行される
# セキュリティリスクがありました
# 例(セキュリティ上の問題)
ls -la && rm -rf /important-dir # lstは許可されていても...
# 改善後:サブコマンドごとに評価されるため
# 各コマンドが個別に権限チェックされる注意点
- サブコマンドの分割は
&&演算子を基準に行われます。|(パイプ)や;(セミコロン)で区切られたコマンドは別途評価される場合があります - 既存の「常に許可」設定は変更されません。新しい動作は今後の提案から適用されます
denyルールはallowルールよりも優先されます。危険なコマンドは明示的にdenyに追加することを推奨します- グローバル設定(
~/.claude/settings.json)に追加した許可は、すべてのプロジェクトに適用される点に注意してください