本体を書き換える拡張が、壊れてもセッションを道連れにしない──Claude Code v2.1.289が、開けたばかりの扉に“防火壁”を足した
Claude Code v2.1.289 が10月3日公開。本体内で動く拡張「Mods」が描画中に壊れてもセッションを道連れにしない隔離を導入し、環境変数の陰に隠れた危険コマンドの見逃しも修正。拡張用の agent.spawn を足す一方、無サンドボックスという本質的リスクは残る。
開けたばかりの扉に、翌日さっそく補強が入る
Anthropic は10月3日、Claude Code v2.1.289 を公開しました。直前の v2.1.287(10月1日)で導入された「Mods(モッズ)」は、JavaScript/TypeScript で書いたコードを Claude Code 本体のプロセス内で走らせ、ツール呼び出し・プロンプト・画面描画といった内部の挙動まで差し替えられる仕組みです。拡張の自由度が一気に上がった一方で、「本体の中で動くコードが壊れたらどうなるのか」という不安も残っていました。v2.1.289 は、その不安に正面から手を入れた更新です。
この版は新機能の追加よりも、壊れた拡張の被害を閉じ込める「隔離」と、すり抜けていた権限ルールの穴ふさぎが中心です。派手さはありませんが、無人・常駐でエージェントを回す運用にとっては効き目の大きい変更が並びます。
壊れる拡張が、セッションごと道連れにしなくなった
これまでは、Mod が画面を描く途中でエラーを起こすと、セッション全体が「復旧不能なインターフェイスエラー」で終わってしまうことがありました。v2.1.289 は、この“巻き添え”を一つずつ断ち切ります。公式チェンジログの記載をもとに要点を整理します。
- 描画中の例外を単独で落とす:Mod の表示部(Client)が描画中に例外を投げても、それだけが失敗して
ui.faultを上げるようになり、周囲の描画やセッションは生き残ります。 - 非同期の例外・暴走する領域を遮断:Mod の画面ハンドラが非同期で例外を投げたり、高さを持たない表示領域が際限なく伸び続けたりしても、監視付き(supervised)・バックグラウンドのセッションは終了しなくなりました。
- 描けない値はエンジンが肩代わり:Mod の
ui.renderが返した値で行の描画が失敗する場合、エンジンが自前の行を代わりに描いてセッションを続けます。
あわせて、タブや制御文字を含むテキストが下の行にはみ出す、帯(band)が一瞬描けずにカードを押しのける、右寄せの内容が閉じるボタンに重なる——といった、拡張まわりの描画崩れも個別に直されています。
拡張が“同僚”を増やせるようになった
隔離を固める一方で、Mod にできることも広がりました。v2.1.289 では、プラグイン向けに agent.spawn が加わり、Mod からチームメイト(teammate)となるエージェントを起動できるようになります。あわせてプラグインのフックイベント全体で同じエージェント ID が使えるようになり、$.agent.list() には「待機中(idle)」「待ち(waiting)」の状態が足されました。拡張の側から複数エージェントの並走を組み立て、その状態を読み取れる土台が整った形です。
すり抜けていた『rm -rf』を、環境変数の陰まで追う
セキュリティ面では、サンドボックスが安全なコマンドを自動的に許可する際の“抜け穴”がふさがれました。これまでは、危険なコマンドを拒否・確認する deny/ask ルールが、次のような書き方だと素通りしてしまうことがありました。
- 環境変数の接頭辞で隠す:
TZ="$HOME" rm -rf buildのように、展開される値を持つ環境変数をコマンドの前に置いた場合。 - 先頭の変数代入:コマンドの前に単独の変数代入が挟まっている場合。
v2.1.289 は、サンドボックスの自動許可下でもこれらを取りこぼさず、ルールを効かせるようにしました。加えて、Read の拒否ルールが、symlink を経由して @ で参照・変更・選択したファイルに適用されていなかった不具合や、ユーザーが入れたプラグインが組織管理下の MCP サーバーのサインイン用ツールの説明文を書き換えられてしまう問題も修正されています。拡張の自由度を広げつつ、組織が引いた線は越えさせない、という方向の手当てです。
便利さと引き換えの“同じ鍵”は、まだそこにある
隔離や穴ふさぎが進んでも、Mod の本質的なリスクが消えたわけではありません。Anthropic 自身が明記しているとおり、Mods はサンドボックス化されず、あなたと同じ権限で動きます。ファイルの読み書き、プロセス起動、ネットワーク通信に加え、環境変数や設定ファイルに置いた API キーまで読み得ます。ユーザーに見せる許可プロンプトだけは書き換えられない設計ですが、裏を返せば硬い境界はそこだけだとも指摘されています。v2.1.289 が守るのは「壊れた拡張でセッションが落ちないこと」であって、「悪意ある拡張が何もできないこと」ではない点に注意が要ります。
導入前の確認手段は用意されています。claude plugin validate でその Mod が扱うイベントと要求する操作を一覧でき、--safe-mode で全カスタマイズを一時停止、組織運用では管理設定でユーザー導入の Mod を制限できます。Anthropic の警告は一貫して「信頼できる作者・マーケットプレイスからのみ導入せよ」です。
無人・常駐運用にとっての意味
この更新の値打ちは、エージェントを長時間・無人で走らせる現場ではっきりします。監視付き/バックグラウンドのセッションが、拡張一つの描画バグで丸ごと止まらなくなったことは、常駐運用の稼働率に直結します。拡張を“入れっぱなし”にして自動化を組む設計が、少し現実的になったと言えます。
一方で、agent.spawn のように拡張の権能が広がるほど、「どの Mod に自分の権限を預けるか」の判断は重くなります。実運用では、まず公式サンプルと plugin validate での事前確認を習慣にし、組織では管理設定で読み込める拡張の既定線を決めておくのが無難でしょう。扉を広く開けるほど、入り口の点検が効いてきます。
参照: Claude Code Docs — Changelog (v2.1.289) / Releasebot — Claude Code updates / AI TLDR — Claude Code 2.1.289 / Mixed News — Claude Code mods are not sandboxed


