1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code v2.1.260の重大セキュリティ修正と/diffパネル追加を解説

1
Posted at

はじめに

2026年9月4日にリリースされた Claude Code v2.1.260 は、機能追加以上にセキュリティ修正の重みが大きいアップデートです。特に「括弧を含むパスの権限ルールが無視され、read-only 指定したフォルダが実際には書き込み可能だった」という critical severity のバグは、権限設定を信頼して運用しているすべてのユーザーに影響します。

あわせて、フルスクリーンモードに未コミット差分を表示する /diff パネル、プロンプトキャッシュミスの原因表示など開発体験を向上させる新機能や、Claude Fable 5.1 のコンテキストウィンドウ・キャッシュ関連の修正も含まれています。この記事では severity が critical/high の変更を中心に、「何が起きていたか」「なぜ危険か」「どう対応すべきか」を整理します。

📌 影響を受ける人

  • .claude/settings.json などで Edit/Write/Read の権限ルールにパス制限をかけている人
  • zsh をデフォルトシェルにして Claude Code の Bash ツールを使っている人
  • claude.ai の Enterprise/Team アカウントで、過去に /login で API キーを設定したことがある人
  • Claude Fable 5.1 を利用している人
  • 2.1.259 で導入された Read() deny ルールの挙動を前提に権限設計をしていた人

変更の全体像

今回のアップデートを「セキュリティ修正」「破壊的変更」「新機能」「Fable 5.1 関連」の4系統に分けて整理すると、影響範囲は以下のようになります。

変更内容

🔴 critical: 括弧を含むパスの権限ルールが無視されていた問題

Edit/Write/Read の権限ルールで、パスに () が含まれると、そのルールが無効として破棄されるか、Bash サンドボックスで無視されるという不具合がありました。つまり Edit(deny:./secrets(prod)/**) のように括弧入りパスで read-only を指定しても、実際には書き込みができてしまう状態でした。

さらに悪いことに、閉じられていない [ などコンパイル不能な正規表現を含む権限ルールが1つでも存在すると、Invalid regular expression エラーですべてのファイル編集が失敗するという副作用もありました。

修正後は、該当するような deny ルールは記述された文字列どおりのパスとして扱われ、正しく保護されます。

⚠️ Breaking Change
括弧を含むパスに Edit/Write/Read の deny ルールを設定している場合、これまで「効いていなかった」保護が今回から実際に効くようになります。意図しない挙動変化になる可能性があるため、該当するルールがあれば必ず動作確認してください。

🟠 high: zsh のコマンド置換が権限チェックをバイパスしていた問題

REPORTTIMEREPORTMEMORYDIRSTACKSIZE といった zsh 固有の変数への代入にコマンド置換を隠す形で埋め込むと、Bash 権限チェックが検出できず自動承認されてしまうバグがありました。これは Bash 権限チェックを迂回する経路であり、悪意あるコード(または悪意あるプロンプトインジェクション)が承認なしにコマンドを実行できてしまう深刻な問題です。修正後は通常どおり承認プロンプトが表示されます。

🟠 high: Enterprise/Team ユーザーで managed settings が未適用

claude.ai の Enterprise/Team アカウントでサインインしていても、過去に /login で設定した API キーが端末に残っていると、管理者が配布した managed settings が読み込まれないという問題がありました。組織のセキュリティポリシーやツール制限が意図せず適用されない状態になっていた可能性があります。/status の表示も改善され、使用されていない認証情報には明示的に印が付くようになりました。

🟠 high: 2.1.259 の Read() deny ルール変更をリバート

前バージョン 2.1.259 で導入された「Read() の deny ルールを Bash 引数にも適用する」変更は、Read(./**/build/**) のようなルール下で npm run build が全モードで拒否されたり、auto モードでも cd … && grep のようなコマンドで不要な承認プロンプトが出るなど副作用が大きく、今回撤回されました。2.1.259 時点の挙動に依存した権限設計を行っていた場合は再確認が必要です。

その他の主な変更(medium/low)

変更 種別 概要
/diff パネル 新機能 フルスクリーンで未コミット差分を表示、Claude の編集に追従して更新
/cost キャッシュミス原因表示 新機能 ツール定義変更・TTL 超過アイドルなどキャッシュミスの推定原因を表示
Fable 5.1 の [1m] タグ無視 不具合修正 1M コンテキスト指定が無視され黙って 200K で動作していた
Fable 5.1 が /model ピッカー未表示 不具合修正 利用可能でも一覧に出ず、直接入力のみ受付
Fable 5.1 ツール結果後キャッシュ漏れ 不具合修正 ツール呼び出しのたびに未キャッシュ入力として再送信されていた
/effort 変更時のキャッシュ無効化停止 不具合修正 セッション途中の /effort 変更でキャッシュが無駄に破棄されなくなった
1M コンテキストの auto-compact 改善 改善 Opus/Fable が上限直前で圧縮、大規模コンテキストの 10 分タイムアウトを解消
Claude in Chrome が組織ポリシーに従う 破壊的変更 管理者が無効化すると --chrome/chrome が使用不可に
不正な権限ルールをエラー報告 破壊的変更 Bash(ls) x のような無効ルールが黙って無視されず設定エラーとして表面化
! bash モードの sandbox 挙動変更 破壊的変更 strict sandbox でもユーザー直接入力コマンドはサンドボックス外で実行
Bedrock の証明書エラー修正 不具合修正 企業ルート CA が OS ストアのみの環境でのモデル検出失敗を解消
Bedrock 中断リクエストのトークン計数 改善(要対応) 無料の CountTokens API を使用、bedrock:CountTokens 権限が必要

影響と対応

以下のアクションを、該当する環境ではなるべく早めに確認することを推奨します。

  1. 権限ルールの再点検: Edit/Write/Read のルールに括弧 () を含むパスがある場合、今回の修正で保護が有効化されるため意図した挙動か確認する。あわせて壊れた正規表現ルールが混在していないかもチェックする。
  2. zsh ユーザーは特別な作業不要: 自動承認バイパスの修正はアップデートするだけで適用される。ただし、この種のバイパスが存在していたことを踏まえ、機密性の高いリポジトリでは権限ルールとサンドボックス設定を見直すと安心。
  3. Enterprise/Team ユーザーは /status を確認: 古い API キーが残っていないか、managed settings が正しく適用されているかを確認する。
  4. 2.1.259 で権限周りの挙動変化に対応していた場合は再確認: Read() deny ルールの Bash 引数適用がリバートされたため、2.1.259 の挙動を前提にワークアラウンドを入れていたなら不要になった可能性がある。
  5. Bedrock 運用者: 中断リクエストのトークン計数に bedrock:CountTokens の IAM 権限が必要になったため、付与漏れがないか確認する。
  6. Claude in Chrome を使うワークフロー: 組織管理者がブラウザ機能を無効化している場合、--chrome/chrome が使えなくなる点をチームに周知する。

コード例

括弧を含むパスの権限ルールが、修正前後でどう扱われるかのイメージです。

Before(v2.1.259 以前): 括弧入りパスの deny ルールが無視される

{
  "permissions": {
    "deny": [
      "Edit(./configs(production)/**)",
      "Write(./configs(production)/**)"
    ]
  }
}
# 実際の挙動
$ claude
> configs(production)/db.yaml を編集して
# → deny ルールが無効として破棄され、書き込みが成功してしまう

After(v2.1.260): 記述どおりのパスとして正しく保護される

$ claude
> configs(production)/db.yaml を編集して
# → deny ルールが有効に機能し、編集が拒否される

/cost のキャッシュミス原因表示は、次のように理由付きで表示されるようになります。

$ /cost
...
prompt_cache: miss (reason: system prompt changed)

まとめ

  • 最重要: 括弧を含むパスの権限ルールが無視され read-only フォルダが書き込み可能だった critical バグと、zsh のコマンド置換で権限チェックが自動承認されていた high severity のセキュリティバグが修正された。権限設定を運用している場合は必ず挙動を確認する。
  • Enterprise/Team アカウントで managed settings が読み込まれない問題も high severity で修正されており、/status での確認が推奨される。
  • 2.1.259 で入った Read() deny ルールの Bash 引数適用は副作用が大きく撤回された。
  • 新機能としては /diff パネルと /cost のキャッシュミス原因表示が便利で、日常的な開発体験の改善につながる。
  • Claude Fable 5.1 利用者は、コンテキストウィンドウとキャッシュ関連の複数の修正の恩恵を受けられる。
  • 破壊的変更(Claude in Chrome の組織ポリシー適用、不正ルールのエラー化、strict sandbox での ! コマンド挙動)は影響範囲が限定的だが、該当環境では事前確認をしておくと安全。

セキュリティ修正が中心のリリースであるため、特に権限まわりの設定をしているチームは早めのアップデートを検討することをおすすめします。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?