Skip to content

作業ディレクトリ外のパターンファイルを読み取る際にgrep/rgがプロンプトを表示しない問題の修正

原文(日本語に翻訳)

作業ディレクトリ外のパターンファイルを読み取る際に grep -f FILE / rg -f FILE が確認プロンプトを表示しない問題を修正しました。

原文(英語)

Fixed Bash grep -f FILE / rg -f FILE not prompting when reading a pattern file outside the working directory

概要

Claude CodeのBashツールで grep -f FILErg -f FILE を使用してパターンファイルを読み取る場合、そのパターンファイルが作業ディレクトリの外に存在していても、Claude Codeのセキュリティ確認プロンプトが表示されずにファイルが読み取られてしまう問題がありました。この修正により、作業ディレクトリ外のファイルをパターンとして読み取る場合も適切なセキュリティチェックが行われるようになります。

基本的な使い方

修正前の動作

bash
# 作業ディレクトリ外のパターンファイルを使用
grep -f /etc/sensitive-patterns.txt /home/user/project/source.txt

# 修正前: セキュリティプロンプトが表示されず、
# /etc/sensitive-patterns.txt が暗黙的に読み取られていた
# → 意図しないディレクトリ外のファイルアクセスが無確認で行われていた

修正後の動作

bash
# 同じコマンドを実行
grep -f /etc/sensitive-patterns.txt /home/user/project/source.txt

# 修正後: 作業ディレクトリ外のファイルアクセスにはセキュリティプロンプトが表示される
# ⚠️ 作業ディレクトリ外のファイルにアクセスしようとしています:
# /etc/sensitive-patterns.txt
# 許可しますか? [y/n]

実践例

### 作業ディレクトリ内でのパターンファイル使用(影響なし)

作業ディレクトリ内のパターンファイルを使用する場合は引き続き正常に動作します:

bash
# 作業ディレクトリ内のパターンファイル(影響なし、そのまま動作)
grep -f ./patterns.txt ./source.txt

# rg でも同様
rg -f ./search-patterns.txt ./src/

### 作業ディレクトリ外のパターンファイルが必要な場合

正当な理由で作業ディレクトリ外のパターンファイルが必要な場合:

bash
# ホームディレクトリのパターンファイルを使用
grep -f ~/common-patterns.txt ./source.txt

# 修正後: 確認プロンプトが表示され、ユーザーが明示的に許可できる
# ユーザーが許可すれば正常に実行される

### セキュリティ上の考慮が必要なシナリオ

bash
# /etc/ 配下のファイルをパターンとして使用しようとする場合
grep -f /etc/hostname ./config.txt

# 修正後: システムファイルへのアクセスに確認が入り、
# 意図しない情報漏洩を防ぐことができる

注意点

  • この修正は セキュリティの改善 です。作業ディレクトリ外のファイルへのアクセスには、他のファイルアクセスと同様の確認が必要になります。
  • -f FILE オプションは greprg で同様の動作をし、指定したファイルからパターンを読み取ります。このオプションが作業ディレクトリ外のファイルを指定していた場合に確認が行われます。
  • 作業ディレクトリ(pwd で確認できるディレクトリ)内のファイルを -f で指定した場合は、今まで通り確認なしで使用できます。
  • CI/CDスクリプトやバッチ処理で grep -f を使用していた場合、v2.1.98以降では権限設定を確認する必要がある場合があります。

関連情報