Skip to content

permissions.additionalDirectoriesのミッドセッション変更が即座に適用されなかった問題の修正

原文(日本語に翻訳)

permissions.additionalDirectoriesの変更がセッション中間に適用されなかった問題を修正しました。削除されたディレクトリへのアクセスは即座に失われ、追加されたディレクトリは再起動なしで動作するようになりました。

原文(英語)

Fixed permissions.additionalDirectories changes not applying mid-session — removed directories lose access immediately and added ones work without restart

概要

permissions.additionalDirectoriesはClaude Codeがアクセスを許可する追加ディレクトリを設定するオプションです。このバグでは、Claude Codeのセッション中に設定ファイルを変更してディレクトリを追加・削除しても、その変更が即座に反映されない問題がありました。特にセキュリティ上重要なのは「削除」の場合で、アクセスを取り消したはずのディレクトリにセッション終了まで引き続きアクセスできてしまっていた点です。v2.1.98でこの問題が修正され、変更が即座に適用されるようになりました。

基本的な使い方

修正前の動作(問題のある挙動)

json
// .claude/settings.json の初期設定
{
  "permissions": {
    "additionalDirectories": ["/home/user/project-a", "/home/user/project-b"]
  }
}
bash
# Claude Code 起動中に settings.json を変更
# "project-b" を additionalDirectories から削除

# 修正前の動作:
# → project-b は引き続きアクセス可能(セッション終了まで変更が反映されない)
$ claude
> cat /home/user/project-b/sensitive.txt
# → アクセスできてしまう(本来は拒否されるべき)

修正後の動作(v2.1.98以降)

bash
# settings.json の変更が即座に反映される

# ディレクトリを削除した場合:
# → 即座にアクセスが拒否される ✓

# ディレクトリを追加した場合:
# → 再起動なしで即座にアクセス可能 ✓

実践例

シナリオ1:動的なディレクトリアクセス管理(修正後)

プロジェクトの作業範囲に応じて、追加ディレクトリを動的に管理できます。

bash
# 作業開始時:新しいプロジェクトディレクトリを追加
# settings.json を編集して additionalDirectories に追加
{
  "permissions": {
    "additionalDirectories": [
      "/home/user/current-project",
      "/home/user/new-project" 追加
    ]
  }
}
# 修正後:Claude Code を再起動しなくても /home/user/new-project にアクセス可能

# 作業終了後:ディレクトリを削除
{
  "permissions": {
    "additionalDirectories": [
      "/home/user/current-project"
      # /home/user/new-project を削除
    ]
  }
}
# 修正後:即座に /home/user/new-project へのアクセスが拒否される

シナリオ2:セキュリティ要件に基づくアクセス制御(修正後)

機密ディレクトリへのアクセスを動的に制御できます。

bash
# 機密情報を含むディレクトリへの一時的なアクセス付与と即時取り消し

# 1. 作業開始前: 設定にディレクトリを追加
{
  "permissions": {
    "additionalDirectories": ["/home/user/confidential-data"]
  }
}

# 2. Claude Code で機密データを含む処理を実行

# 3. 処理完了後: 設定からディレクトリを削除
{
  "permissions": {
    "additionalDirectories": []  # 空にする
  }
}
# 修正後:即座にアクセスが遮断される(セッション継続中でも)

シナリオ3:チーム開発での動的ディレクトリ管理(修正後)

共有の Claude Code 設定を使ったチーム環境での活用。

bash
# スクリプトによる動的な設定更新
#!/bin/bash
# add_project_dir.sh

PROJECT_DIR="$1"
SETTINGS_FILE="$HOME/.claude/settings.json"

# jq を使って additionalDirectories に追加
jq ".permissions.additionalDirectories += [\"$PROJECT_DIR\"]" \
    "$SETTINGS_FILE" > /tmp/settings_tmp.json && \
    mv /tmp/settings_tmp.json "$SETTINGS_FILE"

echo "Added $PROJECT_DIR to additionalDirectories"
echo "修正後:Claude Code を再起動しなくても即座に有効になります"

シナリオ4:削除と追加の即時反映の確認方法(修正後)

bash
# 動作確認手順

# 1. Claude Code を起動
$ claude

# 2. 別のターミナルで settings.json を編集してディレクトリを追加
# (settings.json に /tmp/test-dir を追加)

# 3. Claude Code セッションで確認
> ls /tmp/test-dir
# 修正後:再起動なしでアクセス可能 ✓

# 4. settings.json からディレクトリを削除

# 5. Claude Code セッションで確認
> ls /tmp/test-dir
# 修正後:即座にアクセス拒否 ✓

注意点

  • この修正により、セッション中の設定変更がリアルタイムで反映されるようになりました。設定ファイルを変更する際は意図しないアクセス変更が発生しないよう注意してください。
  • additionalDirectoriesの変更はClaude Codeが設定ファイルを再読み込みするタイミングで適用されます。反映が遅れる場合は、設定ファイルが正しく保存されているか確認してください。
  • 削除の場合は即座にアクセスが失われますが、実行中のコマンドが完了するまでは影響が出ない場合があります。
  • permissions.additionalDirectoriesはデフォルトのプロジェクトディレクトリ(カレントディレクトリ)へのアクセスを置き換えるのではなく、追加するものです。

関連情報