有効にしても、Bash はプロジェクトの外に書けるか?
書ける。記事によれば、この設定が管理するのは Write、Edit、NotebookEdit だけで、シェルのリダイレクト、MCP ツール、フックのプログラムは対象外だ。
それらを止めるには、別途サンドボックスが必要になる。
プロジェクト設定は自分のために有効にできるが、私のために無効にもできるか?
有効にはできるが、無効にはできない。記事によれば、プロジェクト設定は自分のために有効にできるが、ユーザーが有効にした遮断は解除できず、読み込まれたどのファイルでも true なら有効になる。
完全に無効にするには、設定しているすべてのファイルからキーを削除して再起動する。
worktree を使っている場合、影響を受けるか?
受ける。記事によれば、有効な間は EnterWorktree と ExitWorktree が削除されるか拒否され、作業ディレクトリの外にあるサブエージェントの worktree への書き込みも拒否される。
isolation: worktree に頼る流れがあるなら、展開する前にテスト用プロジェクトで確認してほしい。
シンボリックリンクはどう扱われるか?
記事はシンボリックリンクの扱いも、パスの正規化も説明していない。この点を補う公式ドキュメントも見つけられなかった。
重要なディレクトリの保護をこの設定に頼る前に、プロジェクトの外を指すリンクを自分で作ってテストすることを勧める。
Claude Code v2.1.314(2026年10月30日)で permissions.blockWritesOutsideWorkingDirectories が追加された。有効にすると、Write、Edit、NotebookEdit は作業ディレクトリの外のパスへの書き込みを拒否し、それはどの権限モードでも同じだ。changelog には1行しかなく、詳細は主に Developers Digest の第三者のまとめに基づく。公式ドキュメントは直接読んでいないので、記事で不明な点は下で示す。
設定は ~/.claude/settings.json の permissions オブジェクトにあり、値は真偽値で、既定は未設定、false は未設定と同じで、v2.1.314 以上が必要だ。記事によれば、読み込まれたどの設定ファイルでも設定でき、1つのファイルでも true なら、管理側が false でも有効になる。プロジェクト自身の設定は自分のために有効にできるが、ユーザーが有効にした遮断を解除することはできない。記事は、bypassPermissions を含むすべてのモードで拒否すると述べている。
対象は Write、Edit、NotebookEdit の3つのファイルツールだけだ。対象外なのは、シェルコマンド(echo x > ~/file のようなリダイレクト)、MCP ツール、フックが実行するプログラムで、記事はこれらにはサンドボックスが必要だと述べている。プロジェクトの外にも書ける例外が少しある。プランファイル、セッションの scratchpad、バックグラウンドセッションの tmp ディレクトリ、プロジェクトの自動メモリ内の .md ファイルだ。
記事は、作業ディレクトリの中でも拒否される書き込みをいくつか挙げている。Claude Code 自身の設定ファイル(そのため設定ファイルで遮断を解除できない)、プロジェクトの additionalDirectories だけで追加されたディレクトリ、git が未追跡と報告しない限りの .claude/settings.local.json、作業ディレクトリの外にあるサブエージェントの worktree(isolation: worktree)、プロジェクト設定で指定された autoMemoryDirectory だ。副作用として、有効な間は EnterWorktree と ExitWorktree が削除されるか拒否される。
記事は完全な定義を示さず、追加の方法だけを挙げている。セッション中の /add-dir(ディレクトリが存在する必要がある)、起動時の --add-dir、ユーザー設定または管理設定の additionalDirectories だ。許可ルールではファイルツールはこの遮断を越えられず、プロジェクトの .claude/settings.json にだけ書かれたディレクトリは数えられない。Claude Code が管理設定の permissions オブジェクトを読めない場合も、遮断は有効のままだ。クラウドセッションではこのキーが適用されない可能性がある。シンボリックリンクの扱いやパスの正規化については、記事に説明がない。
テストは、Claude に Write ツールで ~/block-test.txt を作らせる(ホームが作業ディレクトリでないことが前提)。拒否メッセージは permissions.blockWritesOutsideWorkingDirectories 設定が書き込みを遮断したことを示す。解除するには、それを設定しているすべてのファイルからキーを削除して再起動する。別のファイルがまだ true であれば、1つのファイルの false は効かない。
エージェントを無人で動かす前に、この設定は安価な第一層の保険になる。パスを1つ間違えてホームディレクトリのファイルを上書きした場合の復旧コストは、真偽値を1つ切り替える5分よりはるかに高い。ただし、これで書き込みが管理できたと考えてはいけない。Bash のリダイレクト、MCP ツール、フックのプログラムは対象外で、本当の境界にはやはりサンドボックスが必要だ。まずテスト用のプロジェクトで有効にし、上の方法で拒否を確認してから、チームの管理設定に広げる。worktree やプロジェクト層の additionalDirectories に頼る流れがないかも確認したい。それらも一緒に遮断されるからだ。