結論:修正内容と自社の許可境界は別に確認する

Claude Code 2.1.289は、managed machine上でuser-installed modの承認が、compound shell commandの内側にあるdeny・ask ruleを正しく維持しない問題を修正しました。同じchangelogには、環境変数のprefixの後ろにあるBash commandでdeny・askが抜けるケースや、symlink経由のRead denyに関する修正も記載されています。

これは「更新すれば全ての危険操作が止まる」という意味ではありません。Anthropic公式のClaude Code changelogで修正対象のversionを確認し、permissions公式資料でdeny・ask・allowの優先順位とBashのpatternを読み、settings公式資料で設定scopeを特定する必要があります。従来のrm安全対策は破壊的削除が主題でしたが、本稿は2.1.289の許可判定の再現試験に限定します。

2.1.289で何が変わったか

確認対象公式更新の要点現場の確認
compound shell command内側のdeny・askがmodの承認で失われない修正外側と内側のcommandを別々に記録
環境変数prefix展開後に実行されるBash commandの判定抜けを修正NAME=value command形式を試験
symlinkIDEで選択・変更・@mentionしたファイルのRead denyを修正実体pathとlink pathを分ける
設定scopemanaged、project、userなどの出所が結果を左右/statusと設定ファイルを証跡化

公式資料にない「脆弱性が完全に解消した」「誤実行がゼロになる」といった保証は置きません。専用の追加料金や新しい利用上限を示す更新ではないため、料金を安全性の根拠にしないことも重要です。契約・provider・実行modeが別管理なら、今回のテスト記録へそれぞれの条件を併記します。

8手順で権限境界を再現する

  1. claude --versionの結果、2.1.289以上か、配布経路、更新日時を保存します。
  2. 本番・home・共有mountを外し、ダミーrepositoryとテストファイルを作ります。
  3. managed settings、user、project、localの設定scopeと、実際に適用された値を記録します。
  4. 単純なread、write、Bash commandを実行し、deny・ask・allowの期待値を表にします。
  5. 環境変数を前置きしたcommandを同じ対象へ行い、表示文字列と実行されたcommandを分けて保存します。
  6. ;、&&、pipe、bash -cを含むcompound commandを一つずつ試します。
  7. mod、plugin、IDEのsymlink、@mentionを組み合わせず、経路ごとに一条件だけ変えます。
  8. 期待と異なる時は実行を続けず、設定出所・version・ログ・再現手順を保全して管理者へ上げます。

試験の成功はcommandが通ることではなく、危険な内側の操作が想定したdeny・askで止まり、許可した操作の範囲が説明できることです。実データを削除したり外部へ送ったりして確認しません。

deny・ask・allowの設計を比較する

ルール向く用途企業運用の注意
deny機密path、破壊的操作、外部送信の停止広いdenyは例外を作れず、対象を分類して記録
ask人間が意図と対象を確認する操作無人jobでは停止または失敗になる
allow低リスクで反復するread-only処理shell wrapperやwildcardで範囲が広がらないか確認

Permissions公式資料の順序はdeny、ask、allowです。より具体的なallowを書いても、広いdenyの例外にはなりません。また、promptで承認した事実と、組織として恒久的に許可する判断は別です。開発者のlocal設定だけで安全境界を作らず、managed settings、監査、更新後の再試験を一つの運用にします。

公開前チェックリスト

  • 2.1.289以上のversionと更新方法を記録した
  • managed・user・project・localの設定scopeを特定した
  • 単純commandとcompound commandを別テストにした
  • 環境変数prefix、pipe、redirect、shell wrapperを確認した
  • mod・plugin・IDE・symlinkを経路ごとに分離した
  • 実データを使わず、拒否理由とログを保存した
  • 期待外の判定時の停止担当と再承認条件がある

公開運用では、修正versionを全端末へ配布するだけでなく、設定が古い端末をどう隔離するかを決めます。特に、無人CIと対話型の開発端末で同じ設定を共有すると、askが待ち続けるか、allowが広がるかのどちらかに偏りやすくなります。実行主体、対象データ、復旧方法を別欄にした台帳を作ると、変更審査が容易になります。

FAQ

2.1.289の修正だけで追加のdenyは必要ですか?
必要性は環境によります。公式修正は判定の欠陥を直しますが、自社の機密pathや無人実行の停止条件までは決めません。期待値を作って再現試験します。
allow ruleを削除すれば安全ですか?
それだけでは不十分です。managed settings、permission mode、shell展開、symlink、実行主体を確認し、危険操作はdenyまたは人間確認へ置きます。
権限設計を無料診断できますか?
できます。version、設定scope、対象データ、CIの実行mode、ログ、停止条件を無料診断(60秒)へまとめてください。

更新直後の確認では、修正された事象と自社の追加リスクを混ぜないことが大切です。changelogの行、設定ファイルのhash、端末version、テスト結果を同じ変更記録へ紐付け、次回更新時に同じケースを再実行します。判断できない場合は自動実行を止め、管理者が影響範囲を確認してから再開します。設定の基礎はClaude Code権限設定ガイド、開発環境の境界はworkspace trustの確認手順にも分けて記録します。

Claude Codeの権限は、モデルへの指示だけでなく、実行環境のルールとして設計します。2.1.289への更新を入口に、compound command、環境変数、mod、symlinkという境界条件を自社のチェック項目へ落とすことが、日々の運用で再現できる安全対策になります。更新後の差分が小さく見えても、承認経路と対象データの組み合わせを省略せず、四半期ごとに同じダミー試験を行います。

試験結果は端末単位で残し、未更新端末を本番作業から外す判断にも使います。