テック技報最新号へ →
AIコーディング

Claude Code: 作業フォルダの外への書き込みは blockWritesOutsideWorkingDirectories で止める(Bash は別に対策)

設定 permissions.blockWritesOutsideWorkingDirectories を true にすると、Write・Edit・NotebookEdit が作業ディレクトリの外のパスを拒む。どの権限モードでも効く。Claude Code 2.1.314 で入った。ただし Bash 経由の書き込みは止まらないので、サンドボックスと組み合わせる。

@st_dev0 · 投稿 2026-10-31
#claude-code#権限#安全#設定

どんな時に使う?

  • 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 で確かめる

出典

X の元の投稿を開く