原文(日本語に翻訳)
Edit(//path/**) および Read(//path/**) のallow ruleが、要求されたパスだけでなく、解決されたシンボリックリンクのターゲットもチェックするように修正されました。
原文(英語)
Fixed Edit(//path/**) and Read(//path/**) allow rules to check the resolved symlink target, not just the requested path
概要
これまでは Edit や Read ツールでシンボリックリンクを扱う際、allow ruleのチェックがリンク自体のパスに対してのみ行われていました。この修正により、シンボリックリンクが指す実際のターゲットパスもallow ruleでチェックされるようになりました。シンボリックリンクを通じてallow ruleで保護されたパス外のファイルにアクセスできてしまう問題が解消されます。
基本的な使い方
allow ruleはCLAUDE.mdまたは設定ファイルで定義します:
yaml
# .claude/settings.yaml
permissions:
allow:
- "Edit(//project/src/**)"
- "Read(//project/docs/**)"修正前は、/project/src/ 配下にあるシンボリックリンクが /etc/passwd などを指していた場合でも、リンク自体がallow rule対象のパスにあればアクセスが許可されてしまいました。修正後は、リンク先のターゲットパスもチェックされるため、意図しないファイルへのアクセスが防止されます。
実践例
シンボリックリンクを含むプロジェクト構成
bash
# プロジェクト構成例
/project/src/config -> /etc/app-config # シンボリックリンク
# allow rule設定
# Edit(//project/src/**)
# 修正前: /etc/app-config への Write が許可されてしまう可能性があった
# 修正後: /etc/app-config は allow rule 対象外のため拒否されるallow ruleのデバッグ確認
bash
# どのパスにallow ruleが適用されているか確認する
claude --debug
# シンボリックリンクの実体を確認する
ls -la /path/to/symlink
readlink -f /path/to/symlink注意点
- この修正はセキュリティ上重要な変更です。シンボリックリンクを多用するプロジェクトでは、allow ruleが意図どおりに機能しているか再確認することを推奨します
- シンボリックリンクのターゲットが正規のallow rule対象ディレクトリ内にある場合は、引き続き正常にアクセスできます
- 修正によって既存のワークフローが影響を受ける場合は、allow ruleにターゲットパスを明示的に追加してください