Claude Code: 作業フォルダの外への書き込みは blockWritesOutsideWorkingDirectories で止める(Bash は別に対策)
設定 permissions.blockWritesOutsideWorkingDirectories を true にすると、Write・Edit・NotebookEdit が作業ディレクトリの外のパスを拒む。どの権限モードでも効く。Claude Code 2.1.314 で入った。ただし Bash 経由の書き込みは止まらないので、サンドボックスと組み合わせる。
どんな時に使う?
- auto モードや acceptEdits で回していて、
~/.zshrcや別リポジトリを書き換えられるのが怖い - 複数リポジトリを
--add-dirで開いていて、その範囲だけに書き込みを絞りたい - チームの managed settings で「作業フォルダの外は触らせない」を一律にかけたい
設定
~/.claude/settings.json(またはプロジェクトの .claude/settings.json):
json
{
"permissions": {
"blockWritesOutsideWorkingDirectories": true
}
}- 作業ディレクトリは起動したフォルダと、
--add-dir・additionalDirectoriesで足したフォルダ - 対象はファイル編集ツール(Write/Edit/NotebookEdit)。権限モードが bypass でも拒否される
注意点
- Bash は対象外。
echo >> ~/.bashrcやcpでの書き込みは通る。Bash も絞るならサンドボックス(/sandbox)を有効にする - Bash の deny ルールも抜け道がある。
{"permissions":{"deny":["Bash(rm *)"]}}はrmという文字列には効くが、/bin/rmやbash -c "rm ..."は止められない、と @taka_claudecode が注意している。危ないコマンドを確実に止めたいなら、deny ルールだけに頼らずサンドボックスや PreToolUse フック(Claude Code: 止めるフックは exit 2、入力は stdin の JSON。違反を起こして止まるのを見るまで「防げる」と書かない)を使う - 2.1.314 より前のバージョンでは設定が無視される。
claude --versionで確かめる
出典
- @st_dev0 · 2026-10-31
- @taka_claudecode 2026-10-31(Bash deny の抜け道): @taka_claudecode · 2026-10-31
- Claude Code CHANGELOG 2.1.314: github.com