Claude Code の作業ディレクトリと add-dir|外への書き込みを止める新設定(v2.1.314)【2026年10月】
Claude Code v2.1.314(2026年10月30日公開)で、作業ディレクトリの外への書き込みを全モードで止める permissions.blockWritesOutsideWorkingDirectories が加わりました。作業ディレクトリの範囲、--add-dir・/add-dir・additionalDirectories の違い、読み取りを止める設定との比較、止まらないもの、版の確認まで、公式情報と実機で解説します。

Claude Code のバージョン 2.1.314(2026年10月30日 UTC 公開、日本時間では同日9時ごろ)で、permissions.blockWritesOutsideWorkingDirectories という設定が加わりました。 true にすると、Claude のファイル編集ツール(Write・Edit・NotebookEdit)が、作業ディレクトリの外のファイルへの書き込みを、どの権限モードでも拒否します(以下、書き込みブロック)。これまで同じことを読み取りについて行う permissions.blockReadsOutsideWorkingDirectories(2.1.257 から。以下、読み取りブロック)はありましたが、書き込み側は、特殊な起動方法の --restricted を除けば、権限モードやルールの組み合わせで止めるしかありませんでした。
使う前にやることは2つです。claude --version で 2.1.314 以上かを確かめ、作業に使うフォルダが「作業ディレクトリ」に入っているかを確認します。外のフォルダも編集させたいなら、--add-dir や /add-dir で作業ディレクトリに加えます。
本記事では、2026年10月31日に取得した公式ドキュメントと CHANGELOG、Claude Code 2.1.314 の本体に含まれる設定の説明文を原典に、作業ディレクトリの考え方と、その外への読み書きを止める設定をまとめます。2026年10月31日時点で、書き込みブロックは公式の設定リファレンスにまだ載っていません。手元で実行して確かめた内容と、ドキュメント・本体の記載から分かる内容は書き分けています。
この記事を読むとわかること
- バージョン 2.1.314 で加わった
blockWritesOutsideWorkingDirectoriesが止めるものと止めないもの - 「作業ディレクトリ」とは何か、どこまでが含まれるか
--add-dir・/add-dir・permissions.additionalDirectoriesの違い- 読み取りを止める
blockReadsOutsideWorkingDirectoriesとの違い - 設定を書く場所、リポジトリの設定ファイルでの扱い、解除のしかた
- 古い版では設定が黙って無視されること(実機で確認)
結論:作業ディレクトリの外は「足す」か「止める」かを決める
作業ディレクトリとは、Claude が許可なくファイルを読める範囲で、Claude Code を起動したフォルダと、そこに足したフォルダからなります。 2026年10月時点で押さえる点は次の4つです。
- 外のフォルダを使わせたいなら作業ディレクトリに足す:その場だけなら
/add-dir、起動時に決めるなら--add-dir、毎回使うなら設定ファイルのpermissions.additionalDirectoriesです - 外への書き込みを確実に止めたいなら 2.1.314 の新設定:
"blockWritesOutsideWorkingDirectories": trueで、ファイル編集ツールの外への書き込みが、bypassPermissionsを含むすべての権限モードで拒否されます - 外の読み取りも止めたいなら
blockReadsOutsideWorkingDirectories:2.1.257 からある読み取り側の設定です。2つは別々のキーで、片方を入れてももう片方は効きません - どちらも「ファイルツール」の制限で、完全な隔離ではない:シェルコマンドや MCP ツールによる書き込みは書き込みブロックの対象外です。シェルまで閉じ込めるにはサンドボックスや
--restrictedを組み合わせます
Claude Code そのものの概要はClaude Code の基本、権限モードの全体像はClaude Code の auto モードで紹介しています。
2.1.314 で追加された blockWritesOutsideWorkingDirectories
permissions.blockWritesOutsideWorkingDirectories とは、Claude のファイル編集ツールが作業ディレクトリの外へ書き込むのを、権限モードに関係なく拒否させる設定です。 CHANGELOG の記載は次の1行です。
Added
permissions.blockWritesOutsideWorkingDirectories: Write, Edit and NotebookEdit refuse paths outside the working directories in every permission mode (出典: Claude Code CHANGELOG 2.1.314)
これまで、外への書き込みは権限モードの扱いに任されていました。たとえば acceptEdits モードが自動で承認するのは作業ディレクトリと追加ディレクトリの中の編集で、外の編集は確認を求めます。auto モードでは外の編集を自動判定のモデル(classifier)が承認するかどうか決め、bypassPermissions では確認そのものが出ません。確認に「はい」と答えれば書き込めます。書き込みブロックは、この「答え方しだい」「モードしだい」の部分を外し、ファイル編集ツールでは外に書けない状態を固定します。
何が止まるか
2.1.314 の本体に含まれる設定の説明文(Claude Code が設定を検証するときに使う定義)から、次のことが分かります。
| 項目 | 内容 |
|---|---|
| allow ルールとの関係 | allow ルールでは解除できない |
| 複数の設定ファイルにある場合 | どれか1つでも true なら有効 |
| Claude Code の設定ファイル | 作業ディレクトリの中にあっても、ファイル編集ツールでは書き換えられない |
| worktree の出入り | 作業ディレクトリを動かす EnterWorktree・ExitWorktree ツールが使えなくなる |
対象のツール・権限モード・例外は、後の読み取りブロックとの比較表にまとめています。
Claude Code の設定ファイルまで止める理由について、本体のメッセージは「設定ファイルでこのブロックを外せてしまうから」と説明しています。Claude 自身が .claude/settings.json を書き換えて制限を外す、という抜け道をふさぐ狙いと考えられます。
例外として書けるのは、plan ファイル・scratchpad・バックグラウンドジョブのフォルダ・そのプロジェクトの auto memory です。どれも Claude Code がセッション中に自分で使う作業用のファイルです。ただし、環境変数やリポジトリの設定ファイルで auto memory の保存先を別の場所に変えている場合は、例外になりません。
作業ディレクトリの外に書こうとして拒否されると、Claude には次の趣旨のメッセージが返ります。
Writes outside the working directories are blocked (permissions.blockWritesOutsideWorkingDirectories). Add the directory with /add-dir, or remove that setting.
訳すと「作業ディレクトリの外への書き込みはブロックされています。/add-dir でディレクトリを加えるか、この設定を外してください」です。本体には、Claude に向けて「ディレクトリを加えるか設定を外すよう、利用者に頼むこと」と指示する文も含まれています。
公式ドキュメントとの関係
2026年10月31日時点で、公式の設定リファレンスと権限のページには、読み取りブロックは載っていますが、書き込みブロックはまだ載っていません。CHANGELOG と、本体に含まれる説明文が今のところの原典です。リファレンスに載った時点で、細かな例外の書き方が変わる可能性があります。
作業ディレクトリとは
作業ディレクトリとは、Claude が許可なくファイルを読める範囲で、既定では Claude Code を起動したフォルダです。 公式ドキュメントでは、起動したフォルダを「primary working directory(主な作業ディレクトリ)」と呼びます。ここに追加したフォルダ(追加ディレクトリ)を合わせたものが「作業ディレクトリ」です(出典: Configure permissions — Working directories)。
作業ディレクトリの中と外では、次のように扱いが変わります。
| 操作 | 作業ディレクトリの中 | 作業ディレクトリの外 |
|---|---|---|
| ファイルの読み取り(Read・Grep・Glob) | 確認なしで読める | 権限モードによる。読み取りブロックを入れると拒否 |
| ファイルの編集 | 権限モードに従う(acceptEdits・auto なら自動承認) | default・acceptEdits は確認、auto は classifier が判定、dontAsk は拒否、bypassPermissions は確認なし。書き込みブロックを入れるとどのモードでも拒否 |
読み取り専用のシェルコマンド(ls・cat など) | 確認なしで動く | 読み取りブロックを入れると確認が出ることがある |
.git や .claude、.vscode などの「保護パス」は、作業ディレクトリの中でも書き込みが自動承認されません。default・acceptEdits では確認、auto では classifier が判定し、例外は bypassPermissions と、bypass が使える対話型ターミナルの plan モードです。作業ディレクトリかどうかとは別の仕組みです(出典: Choose a permission mode — Protected paths)。
/cd で主な作業ディレクトリを移す
セッションの途中で主な作業ディレクトリそのものを移したいときは /cd <パス> を使います。会話は続いたまま、移った先の CLAUDE.md やプロジェクト設定が読み込まれます。/add-dir が「範囲を足す」のに対し、/cd は「起点を移す」操作です。移る前に --add-dir や /add-dir で足したフォルダは残ります。
作業ディレクトリを広げる3つの方法
外のフォルダを Claude に扱わせるには、そのフォルダを追加ディレクトリとして作業ディレクトリに加えます。 方法は3つあり、効く期間と、設定ファイルを読み込むかどうかが違います。
| 方法 | 書き方 | 効く期間 | 追加先の設定(skills など)を読むか |
|---|---|---|---|
起動時の --add-dir | claude --add-dir ../apps ../lib | そのセッションだけ | 一部を読む |
セッション中の /add-dir | /add-dir ../shared | そのセッションだけ | 一部を読む |
設定の permissions.additionalDirectories | "additionalDirectories": ["../docs/"] | 設定ファイルがある限り毎回 | 読まない |
--add-dir は、渡したパスがディレクトリとして存在するかを起動時に確かめます。セッションを閉じると消えるので、毎回同じフォルダを使うなら設定ファイルの permissions.additionalDirectories に書きます(出典: CLI reference、Settings reference)。
{
"permissions": {
"additionalDirectories": ["../docs/"]
}
}
追加ディレクトリの中のファイルは、元の作業ディレクトリと同じ権限ルールに従います。読み取りは確認なし、編集は権限モードしだいです。
追加したフォルダの設定は基本的に読み込まれない
追加ディレクトリが与えるのは「ファイルを読み書きする範囲」であって、設定の読み込み元にはなりません。追加したフォルダの .claude/ にある設定は、ほとんど読み込まれません。
例外があるのは --add-dir と /add-dir で足したフォルダだけで、読み込まれるのは次のものです(出典: Additional directories grant file access, not configuration)。
| 追加したフォルダの中身 | --add-dir・/add-dir で足した場合 |
|---|---|
.claude/skills/ の skills | 読み込む(変更もすぐ反映) |
.claude/commands/ のコマンド | 読み込む。同じ名前があれば元のプロジェクト側が優先 |
.claude/agents/ のサブエージェント | 読み込む |
.claude/settings.json などの設定 | enabledPlugins と extraKnownMarketplaces だけ |
CLAUDE.md・.claude/rules/ | 環境変数 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 を設定したときだけ |
設定ファイルの additionalDirectories で足したフォルダからは、上のどれも読み込みません。hooks や権限ルールも、追加したフォルダからは読み込まれません。
追加ディレクトリの CLAUDE.md の扱いはClaude Code の CLAUDE.md とメモリで詳しく紹介しています。
ネットワーク上のフォルダは足せない
\\server\share のような共有フォルダ(UNC パス)など、ネットワーク上のパスの多くは追加ディレクトリにできません。調べるだけで相手のサーバーに接続してしまうためです。Windows では、共有フォルダをドライブ文字(Z: など)に割り当て、起動時に claude --add-dir Z:\ のように渡します。
作業ディレクトリの外への読み書きを止める2つの設定
作業ディレクトリの外を「足さない限り触らせない」状態にするのが、読み取り用と書き込み用の2つのブロック設定です。 どちらも permissions の下に true で書きます。
| 項目 | blockReadsOutsideWorkingDirectories | blockWritesOutsideWorkingDirectories |
|---|---|---|
| 必要な版 | 2.1.257 以上 | 2.1.314 以上 |
| 止めるツール | Read・Grep・Glob・LSP | Write・Edit・NotebookEdit |
| 権限モード | すべて(bypassPermissions を含む) | すべて(bypassPermissions を含む) |
| 例外 | ~/.claude の skills・plugins・rules・agents・commands・CLAUDE.md など、Claude Code が動くのに必要なファイル | plan ファイル、scratchpad、バックグラウンドジョブのフォルダ、そのプロジェクトの auto memory |
| 作業ディレクトリ内の設定ファイル | 対象外(読める) | ファイル編集ツールでは書けない |
| シェルコマンド | 同じ形では止めないが、外を読むコマンドや追えないコマンドは確認を求める | 止めない |
| 公式リファレンス | 記載あり | 2026年10月31日時点で未記載 |
読み取り側の詳細は公式の設定リファレンス、書き込み側は本記事の前半で紹介した本体の説明文が原典です。
読み取りブロックの要点
読み取りブロックを入れると、作業ディレクトリの外のファイルを Read・Grep・Glob・LSP で読もうとしたとき、Claude Code はそれを拒否し、/add-dir でディレクトリを加えるよう利用者に頼むよう Claude に伝えます。
シェルコマンドについては、ファイルツールと同じ形では止めません。外を読むシェルコマンドは確認を求めます。また、cd を何度もする・サブシェルを使うなど、Claude Code が中身を追えない Bash コマンドは、auto モードや bypassPermissions でも確認を求めます。サンドボックスが有効でブロックを強制できる場合は、この確認は出ません。
auto モードの「初回の読み取り」確認
読み取りブロックが入っていない auto モードでは、Claude が作業ディレクトリの外を初めて Read・Grep・Glob で読もうとしたとき、確認が出ます。選択肢は4つです(出典: The first read outside the working directories)。
| 選択肢 | 結果 |
|---|---|
| はい、今後も外の読み取りを許可する | 読み取りが進み、以後は確認が出ない |
| いいえ、今後は外の読み取りをブロックする | 拒否され、ユーザー設定に blockReadsOutsideWorkingDirectories: true が書き込まれる |
| いいえ、次回また確認する | 今回だけ拒否 |
| はい、ただし次回また確認する | 今回だけ許可し、何も保存しない |
この確認は claude -p の実行やバックグラウンドのセッションでは出ません。書き込みブロックには、2026年10月31日時点で同じような確認の仕組みは CHANGELOG・ドキュメントともに見当たりません。auto モードの判定のしかたはClaude Code の auto モードで詳しく扱っています。
書き込みブロックで止まらないもの
書き込みブロックが止めるのは Claude のファイル編集ツールだけで、シェルコマンドや外部ツールを通した書き込みは止めません。 本体の説明文は、制限しないものとして次の4つを挙げています。
- シェルコマンド(Bash ツール。
echo ... > ファイルやcp、sed -iなど) - MCP ツール(外部サービスやファイル操作を行う MCP サーバーのツール)
- hooks が実行するプログラム
- memory ツール(例外になる auto memory のファイルとは別の、メモを書き込むためのツール)
さらに、Claude Code on the web などのクラウドセッションでは、ファイルツールがコンテナの中で動き、コンテナ自体が境界になるため、この設定を適用しないことがあると書かれています。
つまり、書き込みブロックは「Claude がうっかり外のファイルを編集する」ことを防ぐ設定であり、「どんな手段でも外を変えられない」ことを保証する設定ではありません。シェルの書き込みまで止めたいときは、次のような仕組みを重ねます。
| 止めたいもの | 使う仕組み |
|---|---|
| シェルコマンドによる外への書き込み | サンドボックス(書き込みできる場所をファイルシステムの単位で限る) |
| 特定のコマンドそのもの | permissions.deny ルール(例:Bash(rm *)) |
| コマンド実行そのもの | --restricted での起動(2.1.248 以上) |
| MCP ツール | 使うサーバー・ツールを絞る(MCP 連携の記事) |
| hooks のプログラム | hooks の中身を確認・管理する(hooks の記事) |
--restricted は、評価用の仕組みなどが共有マシンで Claude Code を動かすための起動方法です。コマンドやコードを実行する組み込みツールと WebFetch を外し、ファイルツールを作業ディレクトリに閉じ込め、管理設定と --settings だけを読み、bypassPermissions を拒否します(出典: CLI reference)。普段の開発で使うものではありませんが、コマンド実行そのものを外す点で、ここに挙げた中で最も強い選択肢です。
設定方法と解除のしかた
書き込みブロックは、設定ファイルの permissions に "blockWritesOutsideWorkingDirectories": true を書くと有効になります。 読み取りブロックと一緒に入れる例は次のとおりです。
{
"permissions": {
"blockReadsOutsideWorkingDirectories": true,
"blockWritesOutsideWorkingDirectories": true
}
}
どの設定ファイルに書くか
| 書く場所 | 効く範囲 | 向いている場面 |
|---|---|---|
~/.claude/settings.json(ユーザー設定) | 自分のすべてのプロジェクト | 個人として常に外を触らせたくない |
.claude/settings.json(プロジェクト設定) | そのリポジトリを開いた全員 | チームでそのリポジトリだけ閉じたい |
| 管理設定(managed settings) | 組織が配る全端末 | 情報システム部門が全社で固定したい |
前述のとおり、どこか1つの設定ファイルで true なら有効です。チームのリポジトリに書いておけば、各自のユーザー設定で false にしても外せません。社内導入の観点での権限設計はClaude Code のセキュリティと社内導入で整理しています。
設定ファイルの値は真偽値で書きます。後述のとおり、2.1.314 で --settings に "yes" のような文字列を渡したところ、「この設定ファイルは読み込まれなかった」と表示され、中身が丸ごと効かなくなりました。
リポジトリの設定ファイルで足したフォルダの扱い
読み取りブロックを入れているとき、どの足し方が作業ディレクトリとして数えられるかは、公式ドキュメントに次のように書かれています。
| 足し方 | 作業ディレクトリとして数えるか |
|---|---|
--add-dir・/add-dir | 数える |
ユーザー設定・管理設定の additionalDirectories | 数える |
.claude/settings.json の additionalDirectories | 数えない |
.claude/settings.local.json の additionalDirectories | git がそのファイルを「追跡していない」と報告する場合だけ数える。git で管理していないフォルダでは数えない |
公式ドキュメントは、読み取りブロックについて「リポジトリは自分でブロックを有効にできるが、利用者のブロックを外すことはできない」と説明しています。リポジトリの設定で外のフォルダを足してブロックを抜ける、という使い方を防ぐためと考えられます。
読ませたいフォルダは、ユーザー設定の additionalDirectories に書くか、起動時に --add-dir で渡します。書き込みブロックについて同じ扱いになるかは、2026年10月31日時点でドキュメントに記載がありません。同じ運用にしておくのが無難です。
解除のしかた
読み取りブロックは、そのキーを書いているすべての設定ファイルから消し、新しいセッションを始めると解除されます(公式ドキュメントの記載)。どこか1つでも true が残っていると有効なままです。書き込みブロックも同じで、全ファイルから消す必要があります。新しいセッションが要るかどうかは書き込みブロックについては記載がありませんが、読み取りブロックと同じと考えて、消した後はセッションを始め直すのが確実です。auto モードの確認で「今後はブロックする」を選んだ場合、読み取りブロックはユーザー設定に書き込まれているので、~/.claude/settings.json も確認します。
外のフォルダを一時的に使いたいだけなら、ブロックを外すより /add-dir でそのフォルダを足すほうが安全です。
版の確認:2.1.312 では設定が黙って無視される
書き込みブロックは 2.1.314 以上でないと効かず、手元の 2.1.312 では設定を書いてもエラーにならずに無視されました。 npm では 2.1.312(2026年10月27日 UTC 公開)の次が 2.1.314 で、2.1.313 は公開されていません。
2026年10月31日に、ログインしていない状態の Claude Code を、設定を持たない作業用のホームフォルダで起動し、--settings で設定を渡して確かめました。
$ claude --version
2.1.314 (Claude Code)
$ claude -p hi --settings '{"permissions":{"blockWritesOutsideWorkingDirectories":"yes"}}'
These settings files did not load, so nothing in them is in effect, including hooks and permission rules. Each loads again once the problem listed for it is fixed:
--settings (inline JSON) (permissions.blockWritesOutsideWorkingDirectories): Expected boolean, but received string
Not logged in · Please run /login
2.1.314 では、真偽値でない値を渡すと「この設定ファイルは読み込まれなかったので、hooks や権限ルールを含めて中身は何も効いていない」と表示されました。true を渡したときは、このエラーは出ませんでした。
同じことを 2.1.312 で行うと、"yes" を渡しても何も表示されず、そのまま「Not logged in」で終わりました。2.1.312 の本体にはこのキーの名前自体が含まれておらず、知らないキーとして読み飛ばしていると考えられます。それより前の版で試してはいませんが、同じくキーを持たないので、同じように無視されると考えられます。
なお、ログインが必要なため、実際に外への書き込みが拒否される様子は確かめていません。拒否されたときの挙動は、CHANGELOG と本体の説明文・メッセージに基づいて書いています。
stable チャンネルにはまだ届いていない
自動更新を「stable」チャンネルにしている場合、2.1.314 はまだ届きません。2026年10月31日に配信サーバーを確認したところ、最新版(latest)は 2.1.314、安定版(stable)は 2.1.308 でした。stable はおおむね1週間前の版を配り、大きな不具合のある版を飛ばします(出典: Settings reference — autoUpdatesChannel)。
チーム全員に書き込みブロックを効かせたいなら、全員の版が 2.1.314 以上になったことを確かめてから「止まっているはず」と扱います。更新のしかたとチャンネルの選び方はClaude Code のアップデート方法で解説しています。
目的別の選び方
どの設定を使うかは、「外のフォルダを使わせたいのか」「外を触らせたくないのか」で決まります。
| やりたいこと | 使うもの |
|---|---|
| 今のセッションだけ隣のリポジトリも編集させたい | /add-dir ../other-repo |
| 起動時から複数のフォルダを扱わせたい | claude --add-dir ../apps ../lib |
| 毎回同じフォルダを使わせたい | ユーザー設定の permissions.additionalDirectories |
| 起点そのものを別のフォルダに移したい | /cd <パス> |
| 外のファイルをうっかり編集させたくない | blockWritesOutsideWorkingDirectories: true(2.1.314 以上) |
| 外のファイル(認証情報など)を読ませたくない | blockReadsOutsideWorkingDirectories: true(2.1.257 以上) |
| シェル経由も含めて外を触らせたくない | 2つのブロック+サンドボックス、または --restricted |
| 変更前に計画だけ確認したい | plan モード |
複数のリポジトリを並行して触る場合は、作業ディレクトリを広げるより、リポジトリごとにセッションを分けるほうが安全なこともあります。worktree を使った並行作業はClaude Code の worktree 並行作業で紹介しています。書き込みブロックを入れると、作業ディレクトリを動かす EnterWorktree・ExitWorktree ツールは使えなくなる点に注意してください。
よくある質問
まとめ
- Claude Code 2.1.314(2026年10月30日公開)で
permissions.blockWritesOutsideWorkingDirectoriesが加わり、ファイル編集ツールの作業ディレクトリ外への書き込みを、すべての権限モードで拒否できるようになりました - 作業ディレクトリは起動したフォルダと追加ディレクトリの合計で、
--add-dir・/add-dir・permissions.additionalDirectoriesで広げられます - 読み取りを止める
blockReadsOutsideWorkingDirectories(2.1.257 以上)とは別のキーです。両方止めたいなら両方入れます - シェルコマンド・MCP ツール・hooks・memory ツールは書き込みブロックの対象外です。シェルまで止めるにはサンドボックスや
--restrictedを組み合わせます - 手元の 2.1.312 では設定が黙って無視されました。
claude --versionで 2.1.314 以上かを確かめ、stable チャンネルの利用者は配信を待ちます





