cut・paste・column・awkコマンドや%を含むファイル名で誤って権限プロンプトが表示されていた問題の修正
原文(日本語に翻訳)
cut -d /、paste -d /、column -s /、awk '{print $1}' file、および%を含むファイル名に対する誤ったBash権限プロンプトを修正しました。
原文(英語)
Fixed false Bash permission prompts for cut -d /, paste -d /, column -s /, awk '{print $1}' file, and filenames containing %
概要
Claude Codeの権限チェックは、コマンドが安全かどうかを解析して判断しています。このバグでは、特定のコマンドパターンが誤って危険なコマンドと判定され、不必要な権限プロンプトが表示されていました。具体的には、区切り文字として/を使うcut -d /、paste -d /、column -s /コマンド、フィールドを参照するawk '{print $1}'、そして%を含むファイル名が対象でした。これらはいずれも安全なテキスト処理コマンドですが、パスや特殊文字の解析で誤検知が発生していました。v2.1.98でこの問題が修正されました。
基本的な使い方
修正前の動作(問題のある挙動)
bash
# 修正前:安全なコマンドなのに権限プロンプトが表示されていた
# cut コマンドでスラッシュを区切り文字として使用
cut -d / -f1 /etc/passwd # → 不必要な権限プロンプト
# paste コマンドでスラッシュを区切り文字として使用
paste -d / file1.txt file2.txt # → 不必要な権限プロンプト
# column コマンドでスラッシュを区切り文字として使用
column -s / -t /etc/fstab # → 不必要な権限プロンプト
# awk でフィールド参照
awk '{print $1}' data.txt # → 不必要な権限プロンプト
# % を含むファイル名
cat file%20with%20spaces.txt # → 不必要な権限プロンプト
ls *.%ext # → 不必要な権限プロンプト修正後の動作(v2.1.98以降)
bash
# 修正後:安全なコマンドは適切に自動許可される
cut -d / -f1 /etc/passwd # → 自動許可 ✓
paste -d / file1.txt file2.txt # → 自動許可 ✓
column -s / -t /etc/fstab # → 自動許可 ✓
awk '{print $1}' data.txt # → 自動許可 ✓
cat file%20with%20spaces.txt # → 自動許可 ✓実践例
シナリオ1:テキスト処理パイプラインの活用(修正後)
データ解析や変換作業でよく使われるコマンドが、権限プロンプトで中断されなくなります。
bash
# CSV/TSVファイルの処理(修正後はスムーズに実行可能)
cat data.csv | cut -d / -f2 | sort | uniq -c
# → 各ステップが自動許可で実行される ✓
# パスのパース処理
echo "/usr/local/bin/python" | cut -d / -f4
# → 自動許可 ✓
# 複数ファイルの行を結合
paste -d / names.txt emails.txt > combined.txt
# → 自動許可 ✓シナリオ2:awkを使ったデータ処理(修正後)
awkコマンドを使ったデータ処理が中断されなくなります。
bash
# ログファイルの解析(修正後)
awk '{print $1}' /var/log/access.log | sort | uniq -c | sort -rn
# → 自動許可 ✓
# フィールド抽出
awk '{print $1, $3}' data.txt
# → 自動許可 ✓
# 条件付き処理
awk '$2 > 100 {print $1}' scores.txt
# → 自動許可 ✓
# パターンマッチング
awk '/error/ {print $0}' app.log
# → 自動許可 ✓シナリオ3:URLエンコードされたファイル名の処理(修正後)
ダウンロードしたファイルやWebから取得したファイルに%エンコードが含まれる場合も正常に処理できます。
bash
# URLエンコードされたファイル名(修正後)
ls ~/downloads/file%20report%202025.pdf # → 自動許可 ✓
cat ~/data/value%3Akey.txt # → 自動許可 ✓
mv "report%20final.pdf" report_final.pdf # → 自動許可 ✓
# デコード処理
python3 -c "import urllib.parse; print(urllib.parse.unquote('file%20name.txt'))"
# → 自動許可 ✓シナリオ4:column コマンドによる整形(修正後)
表形式データの整形がスムーズに行えます。
bash
# fstab ファイルの見やすい表示(修正後)
column -s / -t /etc/fstab
# → 自動許可 ✓
# CSVの列整形
column -s , -t data.csv
# → 自動許可 ✓
# スペースで整形
cat report.txt | column -t
# → 自動許可 ✓注意点
- この修正は「誤検知」の修正です。セキュリティが低下するものではなく、安全なコマンドが正しく認識されるようになりました。
cut -d /、paste -d /、column -s /の区切り文字としての/が、ファイルパスの/と誤認識されていたことが原因でした。awk '{print $1}'の$1がシェル変数展開と誤認識されていた可能性があります。%を含むファイル名の問題は、URLエンコードのパターンがコマンドインジェクションと誤認識されていた可能性があります。- これらのコマンドが依然として機密ファイル(
/etc/shadowなど)を対象にする場合は、ファイルパスに基づいた権限チェックが別途行われます。