1
0

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.290 権限・サンドボックスのセキュリティ修正21件と挙動変更まとめ

1
Posted at

はじめに

Claude Code v2.1.290 は、権限ルール・サンドボックス・読み取り制限をすり抜けられる不具合を 21件まとめて修正した大型リリースです。あわせて、pyright や一部の ps の承認必須化、プロジェクト設定からの Claude in Chrome 有効化の禁止といった、既存の運用に影響する挙動変更も入っています。

📌 影響を受ける人

  • permissions の deny/ask ルールや sandbox 設定でチームの安全性を担保している人
  • pyright や ps を allow 済みで自動実行している人
  • リポジトリの .claude/settings.json で Chrome 連携や CLAUDE_CODE_DISABLE_ATTACHMENTS を設定している人
  • ユーザー mod(プラグインフック)を使っている、または組織ポリシーで配布している人
  • インプロセス teammate の agent_id を参照するスクリプトを書いている人
  • Claude apps gateway を運用していて PostgreSQL のバージョン要件が気になる人

この記事では、影響の大きい順に「何が変わったか」「なぜ重要か」「何をすべきか」を整理します。

変更の全体像

セキュリティ修正の多くは、「これまで通っていた操作が承認を求められる、または拒否される」方向の変更です。自動化パイプラインでは、止まる箇所が出る可能性があります。

変更内容

1. 権限・サンドボックス・読み取り制限のセキュリティ修正(critical)

修正は21項目あり、傾向ごとに整理すると次のとおりです。

分類 主な修正内容
Bash 自動承認の判定 ワイルドカードに展開される引数を持つ読み取り専用コマンド(rg、git grep など)を自動承認していた。今後は承認を求める。zsh と bash で変数名の解釈が異なる一部コマンドも同様に承認を求める
deny/ask ルールの見逃し declare/typeset/export/readonly で設定した変数から得たコマンドやパスを見逃していた。読み取り専用コマンドのオプション値に含まれるワイルドカードにも、Read deny ルールが適用されていなかった
読み取りブロックの回避 作業ディレクトリ外へシンボリックリンクされた CLAUDE.md・ルール・AGENTS.md が、permissions.blockReadsOutsideWorkingDirectories や Read deny の下でも読み込まれていた。画像や @メンション のリンクを読み込み中に差し替えると、範囲外のファイルを読めた(--restricted 下でも)。貼り付け・ドラッグした画像パスや @メンション したフォルダのファイル名一覧にも deny が効いていなかった
mod による組織ガード回避 ユーザーがインストールした mod が組織のガードのチェックを飛ばせた。組織のプラグインをアンロードさせることもできた。今後は該当する mod の側がアンロードされる
サンドボックス git clone の短縮オプションが sandbox.excludedCommands の git * による除外を維持していた。auto-allow 下でサンドボックス化された Monitor ツールのコマンドが権限プロンプトを飛ばしていた
auto mode プランモード中に、サーバーから ask ポリシーが配信された非読み取り専用コネクタツールを分類器が承認できていた。拒否時には、ツール全体で分類器を飛ばすルールなど、不適切なルールを提案していた
フック・設定 PreToolUse フックが入力を書き換えた後、一部の権限ルールと安全チェックが適用されていなかった。シンボリックリンクされた設定ファイルのリンク先を編集する際に、設定ファイル用の権限確認が出ていなかった
MCP .mcp.json・プラグイン・エージェントで宣言された一部の MCP エントリに、disableClaudeAiConnectors と allowedMcpServers の URL ルールが適用されていなかった
その他 --channels の権限リレーで、繰り返された返信 ID が別のプロンプトを承認していた。--restricted セッションがセッション間メッセージング用ソケットを開いていた。bypass-permissions の免責事項を承認していないのに、バックグラウンドワーカーが再起動時に --allow-dangerously-skip-permissions を有効にしていた。xn-- ホストラベル内にワイルドカードを含む URL の allow/deny パターンが、プロセスごとに異なる判定になっていた

なぜ重要か。deny ルールや blockReadsOutsideWorkingDirectories は「最後の砦」として設定されることが多く、そこに抜け道があると、プロンプトインジェクションやリポジトリ内の悪意あるファイルから、意図しないファイルの読み取りや実行につながるおそれがあります。更新自体が対策になるため、優先度は最も高いです。

2. 権限まわりの挙動変更(high / Breaking)

⚠️ Breaking Change
既存の自動化や共有設定が止まる可能性があります。

項目 変更前 変更後
pyright 読み取り専用コマンド扱い Bash ツールで実行前に承認を求める
ps 一部のみ承認 承認を求める形式が増加
Claude in Chrome プロジェクト設定で有効化できた プロジェクト設定では不可。--chrome、/chrome、ユーザー設定のいずれかを使う
CLAUDE_CODE_DISABLE_ATTACHMENTS リポジトリの .claude/settings.json と .claude/settings.local.json で設定可能 リポジトリ側では設定不可。シェル・ユーザー設定・managed settings からは可
スキル/カスタムコマンドの ! シェルコマンド 制御文字を含んでも実行 タブと改行以外の生の制御文字を含むと拒否(メッセージに位置を表示)
クラウドセッションの gh api GH_HOST / GH_REPO で他ホストを指定可能 github.com 以外は拒否。--hostname かフル URL を使う

リポジトリ内の設定ファイルは、クローンした第三者のコードが書き換えている場合があります。そこから機能を有効化できないようにするのは、「信頼できない設定で強い機能を有効にしない」方向の変更と読めます。

3. WebSearch の上限が回復型に(high)

対話セッションの WebSearch は、「200回で打ち止め」から「1時間に100回分ずつ回復」に変わりました。回復レートは CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR で指定でき、0 にすると回復が止まります。長時間のリサーチ用途では、上限で止まりにくくなります。

4. /ultrareview・teleport で変更が失われる問題の修正(high)

  • /ultrareview で、Windows の git stash create 失敗時に未コミットの変更が警告なしで落ちていた問題を修正
  • unset / unspecified という名前の git フィルタドライバ配下のファイルを、フィルタせずにアップロードしていた問題を修正。今後はアップロードを止めてドライバ名の変更を求める
  • claude --teleport / /teleport で stash を選ぶと、追跡ファイルと同名のフォルダ内のファイルを削除していた問題を修正。今後は理由を示して stash を拒否する

5. mod(プラグインフック)API の拡張(medium)

追加 内容
turn.step の serverToolUses API 側で実行されたツール呼び出し(advisor)が、id・name・input・start・end 付きで入る
tool.check の agentId サブエージェントとメインセッションの権限チェックを区別できる
tool.check の ceiling 組織がそのツールに求める承認レベルを示す(question と verdict に追加)
型定義 ThemeKey と Color 型が追加され、テーマカラーがエディタで補完される
claude plugin validate ゲーティングサイトに登録された各フックと .catch の有無を一覧表示(--json では gatingHooks)

あわせて、.catch を持つフックがフックワーカーを占有し続けるとアンロードされて .catch も飛ばされる問題など、mod まわりの不具合も修正されています。

6. その他の注目点

  • teammate の agent_id(Breaking): インプロセス teammate の agent_id が、Agent の結果で name@team ではなくエージェント ID を返すようになりました。name@team 形式は teammate_id に残ります。また、teammate のサブエージェントやフォークから TeammateIdle フックが発火しなくなりました。
  • /claude-api managed-agents-onboard: URL またはクイックスタート名(deep-researcher など)から、Managed Agents の構成を ant CLI 用ファイルとして生成します。claude-api スキルの例は、必要な場合を除き Web ツールをオフにし、auto 権限ポリシーを使う形になりました。
  • claude attach <name> / claude logs <name>: セッション ID の代わりにセッション名の一部を指定できます。
  • WebFetch: 10万文字を超えるページを黙って切り捨てていた問題が直り、未読量の表示と offset による続き取得ができるようになりました。
  • Claude apps gateway: PostgreSQL の最小サポートバージョンが 14 から 11 に下がりました。サインイン承認ページに Deny ボタンも付いています。
  • Claude Tag(Slack): !fast で fast mode に切り替え、!fast off で戻せます。
  • managed settings の警告: managed settings のファイルが管理フォルダ外へのリンクの場合や、ユーザー設定のサンドボックス allowRead パス・許可ドメインを無視している場合に、警告が出ます(後者は /status と doctor)。

影響と対応

💡 Tips
更新後は /status と doctor を実行してください。managed settings がユーザー設定を無視している場合の警告も、ここで確認できます。

対応チェックリストは次のとおりです。

  1. 更新する。セキュリティ修正は設定変更では代替できません。
  2. 自動承認が止まる箇所を洗い出す。rg や git grep などワイルドカード展開を伴うコマンド、pyright、ps は承認が必要になる場合があります。CI 的な無人運用では、止まらないか確認してください。
  3. リポジトリ設定を整理する。Chrome 連携と CLAUDE_CODE_DISABLE_ATTACHMENTS は、リポジトリの .claude/settings.json に書いても効きません。
  4. mod を棚卸しする。組織のガードを飛ばしていたユーザー mod は、今後アンロードされます。
  5. teammate 連携のコードを確認する。agent_id の意味が変わっています。
  6. スキル/カスタムコマンドの ! ブロックに制御文字が混入していないか確認します。
  7. CLAUDE.md を更新する。次の内容を追記すると、チーム内の認識を揃えられます。

pyright と一部の ps は承認が必要になったため、必要なら allow ルールに追加すること。Chrome 連携はプロジェクト設定では有効化できず、--chrome または /chrome を使うこと。
WebSearch の上限は1時間100回の回復型になった。レートは CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR で調整できる(0 で回復なし)。

コード例

Chrome 連携の有効化(Before / After)

// Before: リポジトリの .claude/settings.json で有効化していた
// → v2.1.290 以降はこの方法では有効化できない
# After: 起動時のフラグ、またはセッション内コマンドで有効化する
claude --chrome
# セッション内
/chrome

ユーザー設定で有効化する方法も使えます。

WebSearch の回復レートを調整する

# 例: 1時間あたり50回分ずつ回復させる
export CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR=50

# 回復を止める(使い切ったらそれ以上増えない)
export CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR=0

セッション名での attach / logs

# Before: セッション ID が必要だった
claude attach <session-id>

# After: セッション名の一部でも指定できる
claude attach <name>
claude logs <name>

Managed Agents の構成生成

/claude-api managed-agents-onboard https://example.com/agent-pattern
/claude-api managed-agents-onboard deep-researcher

前者はページに書かれた Managed Agents パターンを ant apply 用のファイルとして生成し、後者は Console のクイックスタートテンプレートを ant CLI で構築します。

pyright を引き続き自動実行したい場合

自動実行を維持したい場合は、allow ルールに明示的に追加します。以下は Claude Code の permissions 設定の一般的な書き方を使った例です。書式はお使いのバージョンのドキュメントで確認してください。

{
  "permissions": {
    "allow": [
      "Bash(pyright:*)"
    ]
  }
}

⚠️ 注意
今回の変更は、pyright を読み取り専用とみなさなくなったものです。allow に追加するのは、チームでリスクを理解したうえでの判断にしてください。

まとめ

  • v2.1.290 は、権限・サンドボックス・読み取り制限の回避につながる不具合を21件修正したセキュリティ重視のリリースです。まず更新してください。
  • Breaking 寄りの変更として、pyright / ps の承認必須化、Chrome 連携と CLAUDE_CODE_DISABLE_ATTACHMENTS のリポジトリ設定での無効化、teammate の agent_id の意味変更があります。自動化している場合は動作確認が必要です。
  • ユーザー mod が組織のガードを飛ばせなくなり、mod API には serverToolUses・agentId・ceiling が追加されました。組織向けに mod を配布している場合は、claude plugin validate で確認してください。
  • WebSearch は 1時間100回の回復型になり、長時間のリサーチで止まりにくくなりました。attach / logs のセッション名指定や WebFetch の offset など、日々の使い勝手の改善も入っています。

更新後に承認が増えたと感じたら、不具合ではなくこれまで見逃されていた操作に確認が入るようになった可能性があります。allow ルールを追加する前に、その操作が本当に自動実行してよいものか確認することをおすすめします。

参考: Claude Code v2.1.290 リリースノート

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?