Skip to content

原文(日本語に翻訳)

Linux上で大規模なディレクトリツリーに対するサンドボックスのdenyRead/allowReadのglobがBashツールの説明を巨大にしてセッションを使用不能にする問題を修正

原文(英語)

Fixed a sandbox denyRead/allowRead glob over a large directory tree making the Bash tool description enormous and the session unusable on Linux

概要

Linuxのサンドボックス設定でdenyReadまたはallowReadにワイルドカードglobパターンを使用した場合、大規模なディレクトリツリーに対してすべてのパスが展開されBashツールの説明文が巨大になり、セッションが動作不能になる問題がありました。この修正により、大規模なプロジェクトでもサンドボックス設定を安全に使用できます。

基本的な使い方

.claude/settings.jsonでサンドボックスのglobパターンを設定する際、大規模なディレクトリに対しても安全に動作するようになりました。

json
{
  "sandbox": {
    "denyRead": ["/etc/secrets/**", "/home/**/.ssh/**"],
    "allowRead": ["/workspace/**"]
  }
}

実践例

プロジェクトルートのアクセス制御

json
// .claude/settings.json
{
  "sandbox": {
    "denyRead": [
      "**/.env",
      "**/.env.local",
      "**/secrets/**",
      "**/*.pem",
      "**/*.key"
    ],
    "allowRead": [
      "src/**",
      "tests/**",
      "docs/**"
    ]
  }
}

大規模モノレポでの設定

json
// 数千ファイルを含むモノレポでも正常動作
{
  "sandbox": {
    "denyRead": [
      "packages/*/node_modules/**",
      "**/.git/**"
    ],
    "allowRead": [
      "packages/my-app/src/**"
    ]
  }
}

注意点

  • この問題はLinux環境固有で、macOSでは発生しませんでした
  • 数万ファイルを含むディレクトリ(node_modules等)に対するglobパターンが特に問題を引き起こしていました
  • 修正後は、globパターンの展開ではなくパターン文字列自体をツール説明に使用するよう改善されています
  • セッションが使用不能になった場合は、~/.claude/settings.jsondenyRead/allowRead設定を見直すことで回避できます

関連情報