Skip to content

原文(日本語に翻訳)

プロジェクト内パスに対する Bash(mkdir *)Bash(touch *) などの許可ルールが適用されない問題を修正しました。

原文(英語)

Fixed Bash(mkdir *) , Bash(touch *) and similar allow rules not being honored for in-project paths

概要

.claude/settings.json でBashコマンドの許可ルール(Bash(mkdir *)Bash(touch *) など)を設定していても、プロジェクト内のパスに対してルールが適用されず、毎回権限確認のプロンプトが表示されていた問題が修正されました。修正後は設定した許可ルールが正しく機能し、指定したコマンドパターンが自動的に許可されます。

基本的な使い方

.claude/settings.json または ~/.claude/settings.json でBash許可ルールを設定します。

json
{
  "permissions": {
    "allow": [
      "Bash(mkdir *)",
      "Bash(touch *)",
      "Bash(cp *)",
      "Bash(mv *)"
    ]
  }
}

修正後は、これらのルールがプロジェクト内パスに対して正しく適用されます。

実践例

プロジェクトディレクトリ作成の自動許可

json
// .claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(mkdir *)",
      "Bash(mkdir -p *)"
    ]
  }
}
# 設定後の動作
> src/components/ui ディレクトリを作成してください

# 修正前: 権限確認プロンプトが表示される
# "mkdir -p src/components/ui を実行しますか?"

# 修正後: ルールが適用されて自動的に実行される
# ✓ ディレクトリを作成しました: src/components/ui

ファイル作成の自動許可

json
{
  "permissions": {
    "allow": [
      "Bash(touch *)",
      "Bash(mkdir *)"
    ]
  }
}
# 設定後の動作
> 新しいコンポーネントのスケルトンファイルを作成してください

# 修正後: touch コマンドが自動的に許可される
# ✓ ファイルを作成しました: src/components/Button.tsx

より細かいパターンの指定

json
{
  "permissions": {
    "allow": [
      "Bash(mkdir src/*)",
      "Bash(mkdir tests/*)",
      "Bash(touch src/*.ts)",
      "Bash(touch tests/*.test.ts)"
    ]
  }
}

特定のディレクトリ配下のみを許可することで、より安全な設定が可能です。

許可ルールの確認

bash
# 現在の許可ルールを確認
cat .claude/settings.json

# または Claude Code 内で
/config

注意点

  • ワイルドカード * はパスの任意の部分にマッチします。過度に広い許可ルールの設定には注意してください。
  • この修正はプロジェクト内パスに対するルールの問題でした。プロジェクト外のパスへの動作については別途確認してください。
  • 許可ルールは .claude/settings.json(プロジェクト固有)または ~/.claude/settings.json(グローバル)に設定できます。プロジェクト固有の設定を推奨します。
  • セキュリティの観点から、必要最小限の許可ルールのみを設定することを推奨します。

関連情報