
Claude Code v2.1.286 の主要アップデート - --bare の変更とプラグインの npm ソース制限
クラウド事業統括本部の石川です。Claude Code の v2.1.286(2026 年 9 月 30 日 UTC 公開)がリリースされました。既存の使い方に影響する変更も含まれているため、更新前に目を通しておきたいリリースだと感じます。本日は、プラグインの npm ソース制限を試してみました。
前回のアップデート記事はこちらです。
アップデートサマリー
v2.1.286 では 88 件の変更が入りました。本記事の分類では修正 45 件、改善 19 件、新機能 7 件、破壊的変更 7 件、セキュリティ 6 件などで、半数以上を不具合の修正が占めます。CLI 本体のほか、VS Code 拡張機能、クラウドセッション、Claude Tag の変更も含まれています。
注目のアップデート
--bare の動作変更(破壊的変更)
--bare を指定した場合、コマンドラインで指定した MCP サーバーにのみ接続するようになりました。あわせて、モデルにシステムリマインダーを送らず、バックグラウンドタスクも開始しません。また --bare では、タイムアウトに達したシェルコマンドがバックグラウンドへ移らずに停止するようになりました。
CI やスクリプトで --bare を使い、コマンドラインで指定していない MCP サーバーのツールを前提にしていた場合は動作が変わるため、呼び出し方を確認しておくのがよいと考えます。
プラグインの npm ソース制限(破壊的変更)
プラグインのインストール時に、git リポジトリやフォルダーを指す npm ソースが拒否されるようになりました。プラグインの依存関係も、レジストリのパッケージからのみインストールされます。
社内向けにプラグインを npm ソースで配布している場合は、指定がレジストリのパッケージになっているかを更新前に確認しておくのがよいと考えます。
VS Code 拡張機能のブックマーク
VS Code 拡張機能にブックマーク機能が追加されました。Claude の応答を保存し、Bookmarks サイドパネルに表示しておけます。
VS Code で長い会話をしながら作業する方は、後で参照したい応答を手元に残しておけるので便利だと感じます。
コミット直前の verify スキル実行
プロジェクトまたはユーザーのスキルに verify という名前のものがある場合、Claude はコミットの直前にそれを実行するよう指示されるようになりました。ドキュメントのみ、テストのみのコミットは対象外です。
テストや lint の手順を verify という名前のスキルにまとめておけば、コミット前に実行させたい確認を Claude に伝えやすくなると感じます。
--resume / --continue で履歴が失われる問題の修正
以前のセッションがクラッシュまたは強制終了されていた場合に、claude --resume や --continue が並列ツール呼び出しの後のターンをすべて失うことがある問題が修正されました。
並列でツールを呼ぶ長い作業がセッションの異常終了で中断した場合でも、再開時に履歴を失う心配が減る修正だと感じます。
モデルが拒否されたときのリトライ
デフォルトのモデルやモデルエイリアスの解決先のモデルを Anthropic API が拒否した場合に、すべてのターンが失敗する問題が修正されました。Claude Code は同じ階層(tier)の 1 つ前のモデルで 1 回リトライします。
デフォルトのモデルやエイリアスに任せて使っている方にとっては作業が止まらずに済む修正だと考えますが、1 つ前のモデルで応答が続く場合がある点は把握しておきたいところです。
エラーメッセージやログでの認証情報のマスキング修正
認証情報やシークレットが表示されてしまう問題が 4 件修正されました。
- キー名の前に「Bearer」や「Basic」が付いている場合に、MCP のエラーメッセージに認証情報の値が表示される問題
- パーセントエンコードされた Bearer トークンが、エラーメッセージで一部しかマスクされない問題
- キー名にゼロ幅スペースなどの不可視文字が含まれるシークレットが、マスク済みのログやトランスクリプトに表示される問題
)・引用符・]・&・2 つ目の@などを含む URL のパスワードの一部が、ログやトランスクリプトに表示される問題
MCP サーバーのエラーメッセージやログ、トランスクリプトを問い合わせなどで共有する機会がある方にとって、認証情報が含まれるリスクを減らす修正だと考えます。共有前の目視確認は引き続き行うのがよいと感じます。
組織のポリシーで無効化した Remote Control の切断
組織のポリシーで Remote Control が無効化された後も、Remote Control セッション(claude remote-control を含む)が接続されたままになる問題が修正されました。通知を表示して切断されます。
Remote Control を組織のポリシーで管理している管理者は、無効化の設定が接続中のセッションにも反映されるようになった点を把握しておきたいと考えます。
アップデート内容
新機能
- 複数の権限リクエストが溜まったとき、権限プロンプトに「2 of 5」のような件数が表示されるようになりました。
- フルスクリーンモードのリストの「N more」行がマウス操作に対応しました。クリックするとリストのその端へ移動し、ホバー時・押下時の表示もあります。
- VS Code 拡張機能に、Claude の応答を保存して Bookmarks サイドパネルに表示できるブックマーク機能が追加されました。
- VS Code 拡張機能で、Claude の質問とユーザーの回答が会話に残るようになりました。質問カードに回答すると、各質問と選んだ内容を示す Questions 行が表示されます。
- VS Code 拡張機能のチャットパネルの質問カードに、選択中の選択肢のモックアップやスニペットを選択肢の横または下に表示するプレビューが追加されました。
- VS Code 拡張機能で、メッセージの下に、一緒に送ったターミナル出力・ブラウザータブ・ブラウザーへの指示・選択したコードを開ける行が追加されました。
- 管理設定の Claude Tag の利用上限ページに Add channel ボタンが追加されました。チャンネル ID または Slack のリンクから、プライベートチャンネルを含む任意のチャンネルに上限を設定できます。
改善
- プロジェクトまたはユーザーのスキルに
verifyという名前のものがある場合、Claude はコミットの直前にそれを実行するよう指示されるようになりました(ドキュメントのみ・テストのみのコミットを除く)。 - サブエージェントのビューでの send now(ctrl+enter)が、サブエージェントの実行中コマンドをバックグラウンドへ移すようになり、メッセージがすぐに読まれるようになりました。
- Bash・PowerShell・Monitor の権限プロンプトで、コマンドが破線で挟まれて表示されるようになりました(ファイル編集のプロンプトに合わせた表示)。
- 外部エディター(Ctrl+G)が、行番号を受け取れるエディターの場合はプロンプト内でカーソルがある行を開くようになりました。
- 多数のスキルやプラグインコマンドがインストールされている場合の、入力中のスラッシュコマンド候補の応答性が改善されました。コマンドの説明は単語の前方一致で照合されます。
- モデルのフォールバック通知と autocompact-thrashing エラーが、フォールバックによってコンテキストウィンドウが 1M から 200K トークンに減った場合にそのことを示すようになりました。
/hooksが、設定済みのフックをイベントごとにまとめた 1 つのリストで開くようになり、フックの表示に必要な Enter が 3 回から 1 回になりました。- このほか、fetch やスキルなどの権限プロンプトの見た目の統一、リスト画面の表示、send-now キーでのスキルのシェルコマンドの扱い、クラウドセッションのルーティンの表示、Slack から開始したセッションのタイトルなどが改善されています。
セキュリティ
注目のアップデートで紹介した Remote Control の切断と、認証情報のマスキングに関する 4 件の修正のほか、次の変更があります。
- claude.ai のアーティファクトリンクの読み込みで、WebFetch が Artifact ツールの read と同じ確認を行うようになりました(セッションのネットワークアクセスが有効な間は確認なし、無効な間はアーティファクトごとに 1 回)。また、ユーザー本人しか答えられない確認では auto モードの承認が有効として扱われなくなりました。
修正
--resume/--continueで履歴が失われる問題を修正: 以前のセッションがクラッシュまたは強制終了されていた場合に、並列ツール呼び出しの後のターンがすべて失われることがありました。- モデルが拒否されたときに全ターンが失敗する問題を修正: 同じ階層(tier)の 1 つ前のモデルで 1 回リトライするようになりました。
gcpAuthRefresh/awsAuthRefreshの期限切れでブラウザーが複数開く問題を修正: 認証情報が期限切れになった際、複数の Claude Code プロセスや IDE 拡張機能がそれぞれログイン用のブラウザーを開いていました。- ツールやフックの戻り値による API 400 エラーを修正: テキストではなくオブジェクト・数値・真偽値が返された後に発生していました(再開したセッションを含む)。
claude auth statusの認証方式の表示を修正: Console サインインで保存された API キーをclaude.aiと報告していました。api_keyと報告されるようになり、VS Code 拡張機能もそのセッションを API キーのセッションとして扱います。- MCP コネクタのツールが表示されない問題を修正: サーバーが古い MCP ハンドシェイクを廃止した後、最大 1 日ツールが一覧表示されませんでした。
- フォアグラウンドのサブエージェントでタスク管理ツールが使えない問題を修正: タスク管理ツール(TaskCreate/Get/Update/List、TodoWrite)が有効なセッションで、これらのツールを使えないことがありました。
- worktree 分離のサブエージェントによる CLAUDE.md の再読み込みを修正: 最初のファイル読み込み時に、プロジェクトの CLAUDE.md とそのインポートを worktree のコピーから再度読み込んでいました。
- 地味に嬉しい修正: バックグラウンドエージェントやチームメイトのトランスクリプトを表示中に入力した
/compact・/clear・/rewindが、何も表示せずにメインの会話に対して実行される問題が修正され、対象を示すダイアログで事前に確認するようになりました。バックグラウンドエージェントの画面を見ながら/clearを入力し、メインの会話のほうを消してしまう事態を防げるのは地味に嬉しいと感じます。 - このほか、Remote Control、サブエージェント、VS Code 拡張機能、クラウドセッション、Claude Tag など、多数の細かな不具合が修正されています。
破壊的変更・非推奨
本記事では、次の 7 件を既存の使い方に影響する変更として扱います。なお、CHANGELOG に非推奨の記載はありません。
--bare の動作変更
v2.1.286 から、--bare では次のように動作します。
- コマンドラインで指定した MCP サーバーにのみ接続します
- モデルにシステムリマインダーを送りません
- バックグラウンドタスクを開始しません
- タイムアウトに達したシェルコマンドは、バックグラウンドへ移らずに停止します
CHANGELOG の記載から、変更前はコマンドラインで指定していない MCP サーバーにも接続していたと推測します。v2.1.286 の claude --help の --bare の説明では、コンテキストを明示的に渡す方法の 1 つとして --mcp-config が挙げられています。以下は設定例です。
変更前(〜v2.1.285):
# 例: MCP サーバーをコマンドラインで指定せずに --bare で実行
claude --bare -p "Issue の一覧を要約して"
変更後(v2.1.286〜):
# 例: --bare で使う MCP サーバーは --mcp-config で明示する
claude --bare --mcp-config ./mcp.json -p "Issue の一覧を要約して"
プラグインの npm ソース制限
プラグインのインストールで、git リポジトリやフォルダーを指す npm ソースが拒否され、プラグインの依存関係はレジストリのパッケージからのみインストールされるようになりました。以下は、公式ドキュメント(Marketplace reference)の npm プラグインソースの形式に沿った設定例です。git リポジトリやフォルダーの具体的な指定形式は CHANGELOG に記載がないため、プレースホルダーにしています。
変更前(〜v2.1.285):
{
"name": "formatter",
"source": {
"source": "npm",
"package": "<git リポジトリまたはフォルダーを指す指定>"
}
}
変更後(v2.1.286〜):
{
"name": "formatter",
"source": {
"source": "npm",
"package": "@your-org/formatter",
"version": "^2.0.0"
}
}
なお、公式ドキュメントでは、git リポジトリから取得するプラグインソースとして github や url が用意されています。
VS Code 拡張機能の Stop / Escape
| 操作 | 変更前(〜v2.1.285) | 変更後(v2.1.286〜) |
|---|---|---|
| Stop / Escape | 現在のターンを終了(バックグラウンドエージェントも止まっていたと読めますが、推測です) | 現在のターンのみ終了し、バックグラウンドエージェントは実行を続ける |
| バックグラウンドエージェントの停止 | CHANGELOG に記載なし | エージェントマップから 1 つずつ停止できる |
API リクエストのリトライ上限
| 項目 | 変更前(〜v2.1.285) | 変更後(v2.1.286〜) |
|---|---|---|
| リトライ上限の単位 | 1 回のモデル呼び出し全体ではなかったと読めます(推測) | 1 回のモデル呼び出し全体に 1 つの上限 |
| デフォルトのリトライ設定で、失敗する呼び出しが送る最大リクエスト数 | CHANGELOG に記載なし | 14 回 |
/ultrareview の出力のブラウザーリンク削除
| 対象 | 変更前(〜v2.1.285) | 変更後(v2.1.286〜) |
|---|---|---|
/ultrareview・claude ultrareview の出力 |
ブラウザーのリンクを含む | ブラウザーのリンクを含まない |
出力スタイル・テーマの選択画面での数字キー
| 画面 | 変更前(〜v2.1.285) | 変更後(v2.1.286〜) |
|---|---|---|
| 出力スタイルの選択画面 | 数字キーでスタイルを選択できる | 数字キーでは選択できない。Default ではなく現在のスタイルで開き、各スタイルの説明が名前の下の行に表示される |
| テーマの選択画面 | 数字キーでテーマを選択できる | 数字キーでは選択できない。プレビューを画面外に押し出さない、ターミナルに収まるスクロール式のリストになる |
プラグインの npm ソース制限を試してみた
Claude Code v2.1.286 で、プラグインのインストール時に git リポジトリやフォルダーを指す npm ソースが拒否されるようになりました。このハンズオンでは、テスト用のマーケットプレイスを手元に作り、npm ソースでフォルダーや git リポジトリを指定したプラグインのインストールが拒否されることを確かめます。
- 確認すること: 同じマーケットプレイスに 3 つのプラグインエントリを定義し、相対パスのソースはインストールでき、フォルダーや git リポジトリを指す npm ソースはインストール時に拒否されること
- 普段の設定への影響: 環境変数
CLAUDE_CONFIG_DIRで設定ディレクトリを一時ディレクトリに切り替えるため、~/.claudeの設定には書き込みません
全体の流れ
テスト用のマーケットプレイスに、次の 3 つのエントリを定義してインストールします。
| エントリ名 | ソース | 指定の内容 |
|---|---|---|
hello-relative |
相対パス | マーケットプレイス内のフォルダー ./plugins/hello-plugin |
hello-npm-folder |
npm | file: で始まるフォルダーの指定 |
hello-npm-github |
npm | github: で始まる git リポジトリの指定 |
Step:1. 作業ディレクトリと設定ディレクトリを用意する
一時ディレクトリを作って移動し、CLAUDE_CONFIG_DIR をその中に向けます。CLAUDE_CONFIG_DIR は、Claude Code が設定やプラグインなどを保存するディレクトリ(既定は ~/.claude)を変更する環境変数です。この変数を設定したシェルで実行した claude コマンドだけが、一時ディレクトリ側の設定を使います。
% WORK="$(mktemp -d)" && cd "$WORK"
% export CLAUDE_CONFIG_DIR="$WORK/claude-config"
Step:2. テスト用のプラグインを作る
スキルを 1 つだけ持つプラグイン hello-plugin を、マーケットプレイスのフォルダー内に作ります。
% mkdir -p test-marketplace/.claude-plugin \
test-marketplace/plugins/hello-plugin/.claude-plugin \
test-marketplace/plugins/hello-plugin/skills/hello
% cat > test-marketplace/plugins/hello-plugin/.claude-plugin/plugin.json <<'EOF'
{
"name": "hello-plugin",
"description": "A greeting plugin for the npm source hands-on",
"version": "1.0.0",
"author": { "name": "Your Name" }
}
EOF
% cat > test-marketplace/plugins/hello-plugin/skills/hello/SKILL.md <<'EOF'
---
name: hello
description: Greet the user
---
Greet the user in one short sentence.
EOF
以下のファイルやディレクトリが作成されました。
% tree -a
.
└── test-marketplace
├── .claude-plugin
│ └── marketplace.json
└── plugins
└── hello-plugin
├── .claude-plugin
│ └── plugin.json
└── skills
└── hello
└── SKILL.md
Step:3. マーケットプレイスを定義して検証する
3 つのエントリを持つ marketplace.json を作ります。hello-npm-folder の file: には手順 2 で作ったフォルダーの絶対パスを入れるため、このヒアドキュメントだけは <<EOF(引用符なし)にして $WORK を展開させています。
% cat > test-marketplace/.claude-plugin/marketplace.json <<EOF
{
"name": "test-marketplace",
"description": "Hands-on marketplace for npm source restrictions",
"owner": { "name": "Your Name" },
"plugins": [
{ "name": "hello-relative", "source": "./plugins/hello-plugin" },
{ "name": "hello-npm-folder", "source": { "source": "npm", "package": "file:$WORK/test-marketplace/plugins/hello-plugin" } },
{ "name": "hello-npm-github", "source": { "source": "npm", "package": "github:your-org/hello-plugin" } }
]
}
EOF
$ claude plugin validate ./test-marketplace
Validating marketplace manifest:
/private/var/folders/pk/lwtwfbyd5svbgb_4jry_tghr0000gn/T/tmp.o2uD2yfNEn/test-marketplace/.claude-plugin/marketplace.json
✔ Validation passed
検証は通ります。フォルダーや git リポジトリを指す npm ソースは、この段階ではエラーになりません(以下の出力では、一時ディレクトリのパスを $WORK に置き換えています。macOS では、このパスは先頭に /private が付いて表示されます)。
Step:4. マーケットプレイスを登録して 3 つのプラグインをインストールする
マーケットプレイスの登録と hello-relative のインストールは成功します。出力の「user settings」は、手順 1 で切り替えた一時ディレクトリ側の設定ファイルを指します。
% claude plugin marketplace add ./test-marketplace
✔ Successfully added marketplace: test-marketplace (declared in user settings)
% claude plugin install hello-relative@test-marketplace
✔ Successfully installed plugin: hello-relative@test-marketplace (scope: user)
hello-npm-folder と hello-npm-github は拒否され、終了コード 1 で終わります。
% claude plugin install hello-npm-folder@test-marketplace
Installing plugin "hello-npm-folder@test-marketplace"...
✘ Failed to install plugin "hello-npm-folder@test-marketplace": "file:/var/folders/pk/lwtwfbyd5svbgb_4jry_tghr0000gn/T/tmp.o2uD2yfNEn/test-marketplace/plugins/hello-plugin" was not installed: it is not an http or https link. An npm plugin source must name a registry package (name or name@version) or link to a tarball file. For a plugin in a git repository, use a "github", "url" or "git-subdir" source.
% claude plugin install hello-npm-github@test-marketplace
Installing plugin "hello-npm-github@test-marketplace"...
✘ Failed to install plugin "hello-npm-github@test-marketplace": "github:your-org/hello-plugin" was not installed: it is not an http or https link. An npm plugin source must name a registry package (name or name@version) or link to a tarball file. For a plugin in a git repository, use a "github", "url" or "git-subdir" source.
メッセージには、npm ソースで指定できるのはレジストリのパッケージ(name または name@version)か tarball ファイルへのリンクであること、git リポジトリのプラグインには github・url・git-subdir のソースを使うことが示されています。
Step:5. インストールされたプラグインを確認する
% claude plugin list
Installed plugins:
❯ hello-relative@test-marketplace
Version: 1.0.0
Scope: user
Status: ✔ enabled
インストールされているのは hello-relative だけです。
補足: 検証したプラグインの削除
、マーケットプレイスの登録を削除すると、そこからインストールしたプラグインもアンインストールされます。最後に環境変数を解除し、一時ディレクトリを削除します。
% claude plugin marketplace remove test-marketplace
unset CLAUDE_CONFIG_DIR
cd ~ && rm -rf "${WORK:?}"
✔ Successfully removed marketplace: test-marketplace
Also uninstalled 1 plugin from this marketplace:
hello-relative@test-marketplace
The removal also deletes their saved options, secrets and data where it can.
To use a plugin again, add the marketplace back and reinstall the plugin.
結果のまとめ
| エントリ名 | ソース | claude plugin validate |
claude plugin install |
|---|---|---|---|
hello-relative |
相対パス | 通過 | 成功 |
hello-npm-folder |
npm(file: のフォルダー指定) |
通過 | 拒否(終了コード 1) |
hello-npm-github |
npm(github: の git リポジトリ指定) |
通過 | 拒否(終了コード 1) |
claude plugin validateは、フォルダーや git リポジトリを指す npm ソースをエラーにしません。拒否はインストール時に発生します。- 筆者の環境では、
git+https://で始まる git リポジトリの指定も、上と同じメッセージで拒否されました。 - CHANGELOG にある「プラグインの依存関係はレジストリのパッケージからのみインストールする」という変更は、このハンズオンでは確認していません。
最後に
VS Code のブックマークや、verify という名前のスキルをコミット直前に実行するよう Claude に指示する変更など、日々の作業に関わる変更が印象に残りました。破壊的変更は 7 件と多めなので、内容を把握したうえで更新したいと考えます。
--bare を使ったスクリプトやプラグインの配布に関わっている方は、破壊的変更の節を確認したうえで、アップデートして試してみてはいかがでしょうか。
参考文献





