Claude Code v2.1.274 の主要アップデート - type: sdk の MCP 設定廃止と MCP 接続の安定化

Claude Code v2.1.274 の主要アップデート - type: sdk の MCP 設定廃止と MCP 接続の安定化

Claude Code v2.1.274 がリリースされました。MCP サーバーの接続待ち時間を短縮できる環境変数 `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` が追加され、非対話セッションの起動が大幅に改善されています。本記事では、このアップデートの主要な変更点と実際の効果を検証してみました。
2026.09.17

クラウド事業統括本部の石川です。Claude Code の v2.1.274(2026-09-16 公開)がリリースされました。1 回のリリースとしては変更点がかなり多く、特に MCP まわりに手が入った回だと感じます。本日は、環境変数 CLAUDE_CODE_MCP_STARTUP_WAIT_MS で非対話セッションの起動時間を短縮できることを試してみました。

前回のアップデート記事はこちらです。

https://dev.classmethod.jp/articles/20260916-cc-updates-v2-1-273/

アップデートサマリー

v2.1.274 では 108 件の変更が入りました。本記事の分類では修正が 68 件で最も多く、改善が 21 件、新機能が 13 件、セキュリティが 3 件、破壊的変更が 3 件という内訳です。

108 件のうち 41 件は [VSCode] / [Claude Code on the web] / [Claude Tag] / [Code Review] が付いた周辺プラットフォーム向けの変更で、ターミナル版に直接関係するのは残りの 67 件です。

影響範囲としては MCP サーバーを使っている方に関わる変更が目立ち、破壊的変更 3 件のうち 2 件も MCP に関するものです。残る 1 件はプラグインの配布に関わります。

注目のアップデート

MCP サーバーの起動待ちを打ち切る環境変数(新機能)

CLAUDE_CODE_MCP_STARTUP_WAIT_MS が追加されました。非対話セッションの最初のターンが、接続中の MCP サーバーを待つ時間の上限を指定できます。0 を指定すると待ちません。

CI やスクリプトからヘッドレスで回している方は、最初のターンの待ち時間をこの環境変数で抑えられると感じます。

ウィンドウ再読み込みで中断されたステップの継続(新機能・VS Code)

ウィンドウの再読み込みで中断されたステップを継続するようになりました。継続した旨はチャット内に表示され、Claude Code: Continue After Reload 設定でオフにできます。

拡張機能の更新や設定変更でウィンドウを再読み込みする機会が多い方ほど、作業のやり直しが減る変更だと感じます。

任意のブランチとの差分比較(新機能・Claude Code on the web)

クラウドセッションの差分ビューに「Compare against」のブランチピッカーが追加され、ベースブランチ以外の任意のブランチとの差分を見られるようになりました。

ベースブランチ以外との比較が要るレビューをクラウドセッションで回している方には、確認の手間が減る変更だと感じます。

「unexpected tool_use_id」で再試行が止まらない問題の修正(不具合解消)

「unexpected tool_use_id」の 400 エラーで再試行が延々と続き、セッションが停止する問題が修正されました。壊れたトランスクリプトは可能な範囲で自動的に修復され、修復できない場合は /rewind を案内するエラーでループを終了します。

長いセッションで同じエラーが延々と続いた経験のある方は、この版から復帰の見通しが立つようになると感じます。

MCP ツール呼び出しが約 5 分で切れる問題の修正(不具合解消)

Streamable HTTP の MCP ツール呼び出しが、サーバーごとに長い timeout を設定していても約 5 分でタイムアウトする問題が修正されました。

時間のかかるツールを持つ MCP サーバーを使っている方は、これまで原因不明のタイムアウトとして処理していたものが解消される可能性があると感じます。

settings.json が壊れる問題の修正(不具合解消・VS Code)

拡張機能からの設定の書き込みが重なり、~/.claude/settings.json が解析できなくなったり設定が失われたりする問題が修正されました。

ターミナルと VS Code 拡張を併用している方は、設定が壊れる経路が 1 つ減る変更だと感じます。

シークレットの表示と Bash 権限チェックの修正(セキュリティ)

権限とシークレットの扱いに関わる修正が 3 件入りました。

  • MCP 設定の ${VAR} プレースホルダーから解決された秘密情報が、MCP の接続エラーと MCP ログインツールの説明に表示されていました。
  • 特定の特殊なシェル変数をループ処理または代入するコマンドについて、Bash の権限チェックが修正されました。これらのコマンドは権限を確認するようになりました。
  • worktree で分離されたセッションが、特定の入れ子になったシェル展開を含む Bash コマンドを受け入れていました。これらは拒否されるようになりました。

権限まわりを信頼して運用している環境ほど、早めに上げておく価値があると感じます。

CLAUDE_CODE_MCP_STARTUP_WAIT_MS を試してみた

CLAUDE_CODE_MCP_STARTUP_WAIT_MS環境変数の有無で、非対話セッションの最初のターンの所要時間がどれだけ変わるかを確認しました。非対話(headless)セッション専用のアップデートです。

接続に時間がかかる MCP サーバーとして、起動後 60 秒何もしない stdio サーバーを 1 つ用意しています。

slow-mcp.json:

{
  "mcpServers": {
    "slow": { "type": "stdio", "command": "sleep", "args": ["60"] }
  }
}

なお、sleep 60 は MCP を話さないため、接続は成立も失敗もしないまま放置されます。Claude Code は一定時間で待つのをやめて先へ進むので、60 秒という値はその打ち切り時間より長ければよく、この 60 という数字自体が実行時間に現れるわけではありません。

比較の基準値として、サーバーを 1 つも持たない empty-mcp.json も使います。

empty-mcp.json:

{
  "mcpServers": {}
}

これを --mcp-config で読み込ませ、--strict-mcp-config を付けてこの設定ファイルのサーバーだけを使います。普段使っている MCP サーバーは読み込まれないので、手元の設定に影響しません。

まず基準値として、MCP サーバーを 1 つも持たない状態で実行します。

claude -p "Reply with exactly: ok" --max-turns 1 --strict-mcp-config --mcp-config empty-mcp.json

実行時間は、3.6秒でした(4 回の平均)。

次に、接続しない MCP サーバーを 1 つ持たせた状態で実行します。

claude -p "Reply with exactly: ok" --max-turns 1 --strict-mcp-config --mcp-config slow-mcp.json

実行時間は、33.4秒でした(4 回の平均)。

最後に、同じ条件で CLAUDE_CODE_MCP_STARTUP_WAIT_MS=0 を付けて実行します。

CLAUDE_CODE_MCP_STARTUP_WAIT_MS=0 claude -p "Reply with exactly: ok" --max-turns 1 --strict-mcp-config --mcp-config slow-mcp.json

実行時間は、3.5秒でした(4 回の平均)。

考察

3 条件の結果を並べます。実行時間は毎回のモデル応答で 1 秒前後ばらつくため、いずれも 4 回実行した平均です。

条件 実行時間 基準値との差
MCP サーバーなし(empty-mcp.json 3.6 秒
接続しないサーバーあり・環境変数なし 33.4 秒 +29.8 秒
接続しないサーバーあり・環境変数 0 3.5 秒 -0.1 秒

--mcp-configの場合、CLAUDE_CODE_MCP_STARTUP_WAIT_MSのデフォルトは30秒です。

基準値の 3.6 秒は、モデルを 1 回呼び出すのにかかる時間です。接続しない MCP サーバーが 1 つ増えるだけで 33.4 秒になり、差の約 30 秒がまるごと接続待ちに消えていたことになります。CLAUDE_CODE_MCP_STARTUP_WAIT_MS=0 を付けると基準値とほぼ同じ 3.5 秒に戻り、接続を待たずに最初のターンが始まっていることが分かります。

基準値との差は 4 回とも 28.6 秒から 32.3 秒の範囲に収まりました。効果がばらつきより桁違いに大きいため、傾向は安定していると見ています。

ただし、この約 30 秒がそのまま短縮幅になるわけではない点は補足が要ると感じます。今回置いたのは接続が完了しないサーバーで、打ち切りの時間まで待たされる最悪のケースです。実際に 3 秒で接続が完了するサーバーであれば待ち時間も 3 秒で、削れるのも 3 秒です。手元でどれだけ待っているかは、環境変数を付けた場合と付けない場合の差を測るのが確実だと感じます。

もう 1 点、今回は --mcp-config を明示した条件での計測です。同じ v2.1.274 の別の項目には、--input-format stream-json のセッションについて「最初のターンで最大 2 秒待つことがなくなった」という記述があり、待ち時間の既定値は実行条件によって変わるようです。

効いてくるのは、CI やスクリプトからヘッドレスで回している場合です。待ち時間はプロセスの起動ごとに発生するので、ファイル単位で claude -p をループさせるようなバッチ処理では、1 回あたりの削減幅が小さくても総量では効いてきます。接続時間が読みにくいリモートの MCP サーバーやコールドスタートのある構成では、最悪ケースの起動時間を確定させる用途にも使えると感じます。

一方で、0 を指定すると最初のターンで MCP のツールが揃わない可能性があります。最初のターンから MCP のツールを使う前提のスクリプトでは、0 ではなく数百ミリ秒程度の上限値を置くほうが無難だと感じます。なお、CHANGELOG の記載は「非対話セッションの最初のターン」に限定されているため、対話セッションでの体感が変わる変更ではありません。

アップデート内容

新機能

  • メモリ使用量が危機的な水準になったときに警告を表示し、メモリを解放する手順と安全に再起動する手順を案内するようになりました。
  • CLAUDE_CODE_MCP_STARTUP_WAIT_MS が追加されました(前述)。
  • claude_code.managed_settings_resolved という OpenTelemetry イベントが追加され、managed settings の取得元とポリシーヘルパーの状態を記録します。OTEL_LOG_MANAGED_SETTINGS=1 を指定すると、秘匿化された設定とダイジェストも出力されます。
  • OpenTelemetry のトレーススパン claude_code.llm_requesteffort 属性が追加され、api_request イベントと揃いました。
  • フルスクリーンモードで折りたたまれたチームメイトとエージェントのメッセージを、クリックで展開できるようになりました。
  • [VS Code] ウィンドウの再読み込みで中断されたステップを継続するようになりました(前述)。
  • [VS Code] Customize メニューに Memory と Instructions の項目が追加されました。Memory は自動メモリのトグル・保存されたメモリ・メモリフォルダを表示し、Instructions は CLAUDE.md ファイルを編集します。
  • [VS Code] Claude が開くエディタグループをロックしないようにする claudeCode.lockEditorGroups 設定が追加されました。
  • [Claude Code on the web] 差分ビューに「Compare against」のブランチピッカーが追加されました(前述)。
  • [Claude Tag] 管理設定の Add channel と Add workspace のフォームに Guests 設定が追加され、オーナーが Inherit・Allow・Channel only・Restrict をあらかじめ選べるようになりました。
  • セルフホストの Claude apps gateway 向けに、Postgres の接続タイムアウトを延ばす store.connect_timeout_seconds、IdP のサブジェクトを載せるテレメトリ属性 enduser.sub、上流への同時送信数が上限の 256 件を超えたときの警告が追加されました。

改善

  • --input-format stream-json のセッションの起動が改善されました。ツール検索が遅延させるツールを持つ接続中の MCP サーバーを最初のターンで最大 2 秒待つことがなくなり、そのツールは後のターンで利用できるようになります。
  • Monitor ツールの通知が改善されました。スクリプトの最終出力と終了が 2 回ではなく 1 回の通知で届き、モデルのターンを 1 回節約します。
  • /code-review が変更され、独自のチューニング設定を持たないモデルでは、多数のレビュー用サブエージェントを起動する代わりに、より軽量なインラインのレビュープロンプトを使うようになりました。
  • OTEL_LOG_RAW_API_BODIES=file:<dir> の出力が改善されました。新しい index.jsonl と、request_body_id / message.id のイベント属性により、各レスポンスをリクエストのファイルとトランスクリプトのメッセージに紐づけられます。
  • アーティファクトの公開で、古いバージョンを基にした公開は送信される前に止められ、マージすべき新しいページが示されるようになりました。あわせてローカルセッションでのアーティファクトの監視が変更され、他の場所で公開された新しいバージョンがターンを開始することはなくなりました。
  • サブモジュールのチェックアウトを含むエージェントの worktree を削除する前の安全確認が改善されました。
  • [VS Code] 会話のスクリーンリーダーでの読み上げが改善され、各メッセージが「You」または「Claude」として案内されるようになりました。ツールのステップではツール名も読み上げられます。
  • [Claude Code on the web] オーナーの GitHub 連携が失われている場合に、最初のチェックの失敗でルーティンをオフにするのではなく、最大 72 時間は実行をスキップして再試行するようになりました。
  • [Code Review] 投稿する各指摘が、誰が影響を受けるか・コードのどこが誤っているか・どう直すかを先に述べる、短く平易な文になりました。
  • このほか、/status の GitHub の行の表記、Claude Tag の進捗チェックリストの再投稿間隔、セルフホストの Claude apps gateway の起動リトライと spend limit チェックなどに改善が入っています。

修正

  • 「unexpected tool_use_id」の無限リトライを修正: 400 エラーの再試行が延々と続き、セッションが停止していました(前述)。
  • MCP ツール呼び出しの 5 分タイムアウトを修正: サーバーごとに長い timeout を設定していても約 5 分で切れていました(前述)。
  • 旧来の HTTP+SSE のみを話す MCP サーバーの接続失敗を修正: http として設定したサーバーが、最初のリクエストに 422 などの 4xx を返して接続に失敗していました。
  • フック駆動セッションの「Prompt is too long」を修正: /goal が有効な場合などに、リアクティブな圧縮の後で再びコンテキストが溢れると、圧縮されずに終了していました。あわせて、圧縮を経たセッションを --continue / --resume で再開すると有効な /goal が失われる問題も修正されています。
  • claude agents の自動アップデート後のフラグ消失を修正: 再起動の後に --model--effort--permission-mode--allow-dangerously-skip-permissions--agent を失っていました。
  • 言語サーバーの大量診断によるターンごとの遅延を修正: 数千ファイル規模のプロジェクト全体の診断が publish されると、ターンごとの処理が遅くなっていました。
  • プラグイン再読み込み後の Bash の数秒停止を修正: 再読み込みのたびにシェルプロファイルを読み直していました。プラグインの bin/ ディレクトリが変わったときだけ読み直します。
  • Stop プロンプトフックのプロンプト全文再送を修正: 会話中のブロックのたびに全文を再送していました。繰り返しのブロックは 500 文字のラベルで条件を示します。
  • [VS Code] settings.json が壊れる問題を修正: 拡張機能からの設定の書き込みが重なると発生していました(前述)。
  • [Claude Tag] 単一チャンネル内の Slack 検索エラーを修正: チャンネルを指定して検索するとエラーになっていました。そのチャンネルの該当するメッセージを返します。
  • 地味に嬉しい修正: マルチバイト文字を含むファイルで、Edit の権限プロンプトのプレビューが承認した編集とは別の箇所を表示することがある問題が修正されました。日本語を含むファイルを編集する機会が多いので、承認した箇所と別の場所が表示されなくなるのは地味にありがたい修正だと感じます。
  • このほか、MCP の権限不足エラーの表示、バックグラウンドタスクの通知、プラグインの読み込み、Claude Desktop のトランスクリプト、Wayland 上で余分に開くウィンドウなど、多数の細かな不具合が修正されています。

破壊的変更

v2.1.274 には、設定や実行環境によっては挙動が変わる変更が 3 件入っています。

1. .mcp.json などの "type": "sdk" エントリがスキップされる

.mcp.json・設定・プラグイン・エージェントファイルにある "type": "sdk" の MCP エントリが、警告付きでスキップされるようになりました。インプロセスのサーバーを登録できるのは SDK のホストアプリケーションだけです。

以下は設定例です。

変更前(〜v2.1.273):

{
  "mcpServers": {
    "my-inprocess-server": {
      "type": "sdk",
      "name": "my-inprocess-server"
    }
  }
}

変更後(v2.1.274〜):

上のエントリは警告付きでスキップされるため、設定ファイルからは外し、インプロセスのサーバーは SDK のホストアプリケーション側で登録します。

{
  "mcpServers": {}
}

2. Bedrock・Vertex・Foundry で MCP クライアント v2 が既定になる

Bedrock・Vertex・Foundry とテレメトリを無効にしたインストールでも、他のインストールと同様に、直接 HTTP の MCP サーバーに対して v2 MCP クライアントと MCP 2026-07-28 のネゴシエーションを既定で使うようになりました。

従来の挙動に戻す場合は、次のいずれかでオプトアウトします(環境変数名は CHANGELOG の記載どおりで、以下は指定例です)。

export MCP_SDK_GENERATION=v1
# または
export MCP_PROTOCOL_NEGOTIATION=legacy

3. プラグインのクローンで Git LFS のファイルがポインタのまま残る

プラグインとマーケットプレイスのクローンが、Git LFS のファイルをダウンロードせずポインタのまま残すようになりました。実体が必要な場合は、チェックアウト内で次を実行します。

git lfs pull

最後に

v2.1.274 は 108 件と件数こそ多いものの、中身は MCP まわりの接続・タイムアウト・権限の詰めと、VS Code・Web・Slack 連携の不具合修正が中心だと感じます。新機能を取り込むというより、日々の詰まりどころを減らすリリースだと見ています。

MCP サーバーを使っている方、Bedrock・Vertex・Foundry で運用している方は、アップデートして挙動を確かめてみてはいかがでしょうか。

参考文献

https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md

https://code.claude.com/docs/en/changelog

https://dev.classmethod.jp/articles/20260916-cc-updates-v2-1-273/


Claudeならクラスメソッドにお任せください

クラスメソッドは、Anthropic社とリセラー契約を締結しています。各種製品ガイドから、業種別の活用法、フェーズごとのお悩み解決などサービス支援ページにまとめております。まずはご覧いただき、お気軽にご相談ください。

サービス詳細を見る

この記事をシェアする

AI白書

関連記事