はじめに
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 の構成をantCLI 用ファイルとして生成します。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 がユーザー設定を無視している場合の警告も、ここで確認できます。
対応チェックリストは次のとおりです。
- 更新する。セキュリティ修正は設定変更では代替できません。
-
自動承認が止まる箇所を洗い出す。
rgやgit grepなどワイルドカード展開を伴うコマンド、pyright、psは承認が必要になる場合があります。CI 的な無人運用では、止まらないか確認してください。 -
リポジトリ設定を整理する。Chrome 連携と
CLAUDE_CODE_DISABLE_ATTACHMENTSは、リポジトリの.claude/settings.jsonに書いても効きません。 - mod を棚卸しする。組織のガードを飛ばしていたユーザー mod は、今後アンロードされます。
-
teammate 連携のコードを確認する。
agent_idの意味が変わっています。 -
スキル/カスタムコマンドの
!ブロックに制御文字が混入していないか確認します。 - 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 ルールを追加する前に、その操作が本当に自動実行してよいものか確認することをおすすめします。