Claude Code 2.1.118 リリース — Vim Visual Mode、カスタムテーマ、MCP OAuth大規模修正

anthropics/claude-code

Claude Code 2.1.118では、Vim visual modeの追加やカスタムテーマ管理機能といった新機能に加え、MCP OAuth周りの多数のバグ修正が行われました。特にMCP認証フローの信頼性が大幅に改善されています。

背景

CHANGELOG.mdへの追記として公開された本リリースノートは、エディタ操作の改善、設定管理の統合、フック機能の拡張、そして広範なバグ修正という4つの柱で構成されています。MCP(Model Context Protocol)のOAuth実装に関しては多数の修正が集中しており、認証フローの実装が成熟段階に移行しつつあることを示しています。

技術的な変更

エディタ・UI機能の追加

入力インターフェースが大きく強化されました。Vim visual modevキー)とvisual-line modeVキー)がサポートされ、選択操作とオペレーターによるテキスト編集が可能になっています。また、/cost/stats コマンドが /usage に統合されました。両コマンドは引き続きタイピングショートカットとして機能し、それぞれ対応するタブを開く形で後方互換性が維持されています。

カスタムテーマ管理

/theme コマンドから名前付きカスタムテーマの作成と切り替えが可能になりました。テーマの定義は ~/.claude/themes/ 配下にJSONファイルとして手動編集でき、プラグインも themes/ ディレクトリを通じてテーマを同梱・提供できます。

フック機能の拡張

フックから直接MCPツールを呼び出せるようになりました。type: "mcp_tool" を指定することで、フックのコールバック内でMCPサーバーのツールを呼び出すことができます。また、prompt フックがエージェントフック検証サブエージェントによるツールコール時に再発火していた問題も修正されています。

管理・運用向けの追加

更新制御が強化されています。新設の DISABLE_UPDATES 環境変数は、手動の claude update を含む全ての更新パスを完全にブロックします。既存の DISABLE_AUTOUPDATER よりも厳格な制御として位置付けられています。WSL環境では、wslInheritsWindowsSettings ポリシーキーによってWindows側で管理された設定を継承できるようになりました。

Auto Modeの改善

"$defaults"autoMode.allowautoMode.soft_denyautoMode.environment に含めることで、組み込みリストを置き換えるのではなく、カスタムルールを追加する形で設定できるようになりました。また、auto modeのオプトインプロンプトに「Don't ask again」オプションが追加されています。

セッション・ナビゲーションの修正

--continue/--resume オプションが、/add-dir で追加されたディレクトリを含むセッションを正しく検索できるよう修正されました。/fork コマンドはフォークごとに親会話全体をディスクに書き込んでいましたが、ポインタを書き込んで読み取り時にハイドレートする方式に変更され、ディスク使用量が削減されています。

MCP OAuth認証の大規模修正

MCP OAuthフローに関して、以下の問題が修正されています:

  • expires_in を省略したOAuthトークンレスポンスで毎時間再認証を要求される問題
  • サーバーの insufficient_scope 403レスポンスが現在のトークンに既に含まれるスコープを指名した場合に、再同意プロンプトではなくサイレントリフレッシュが行われる問題
  • OAuthフローのタイムアウト・キャンセル時の未処理Promise rejection
  • クロスプロセスロックの競合下でOAuthリフレッシュがロックなしで進行する問題
  • macOSキーチェーンの競合状態でMCPトークンの並行リフレッシュが新鮮なトークンを上書きし、予期せぬ「Please run /login」プロンプトが表示される問題
  • サーバーがローカルの有効期限前にトークンを失効させた場合のトークンリフレッシュ失敗
  • headersHelper で設定されたサーバー、およびカスタムヘッダー付きHTTP/SSE MCPサーバーで認証アクションが非表示になる問題
  • CLAUDE_CODE_OAUTH_TOKEN 環境変数で起動したセッションで /login が無効になる問題(環境変数トークンをクリアしてディスクの認証情報を有効化するよう修正)

その他のバグ修正

  • Linux/WindowsでのCredential保存クラッシュによる ~/.claude/.credentials.json 破損
  • --dangerously-skip-permissions 実行時にauto modeではなくbypass permissionsを正しく表示
  • Stop / SubagentStop 以外のイベント向けに設定されたエージェント型フックが「Messages are required for agent hooks」エラーで失敗する問題
  • Alt+K / Alt+X / Alt+^ / Alt+_ によるキーボード入力フリーズ
  • リモートセッション接続時にローカルの model 設定が上書きされる問題
  • ファイルパスのペースト時に「No commands match」エラーが表示されるタイプアヘッドの問題
  • 誤ったバージョンでインストールされた依存関係の再解決が行われない plugin install の問題
  • 無効なパスやfdの枯渇時のファイルウォッチャーの未処理エラー
  • JWT リフレッシュ中のCCR初期化一時的障害によるRemote Controlセッションのアーカイブ
  • SendMessage で再開されたサブエージェントが明示的な cwd を復元しない問題

設計判断

MCP OAuth修正群に共通するのは、分散・非同期処理における競合状態の排除という観点です。クロスプロセスロックの競合、macOSキーチェーンの並行アクセス、トークン有効期限の境界ケースなど、複数のプロセスやシステムリソースが絡む箇所に修正が集中しています。CHANGELOGが示す修正の密度は、MCP認証フローが実運用で様々なエッジケースに遭遇していることを反映しています。

/fork の変更は、従来の親会話全体をディスクに書き込む方式から、ポインタを書き込んで読み取り時にハイドレートする方式への切り替えです。この変更により、フォーク操作ごとに発生していた重複データのディスク書き込みが解消されています。

DISABLE_UPDATES は既存の DISABLE_AUTOUPDATER より厳格な制御として明示的に位置付けられており、CHANGELOGにもその違いが記載されています。更新制御に2段階の粒度を持たせることで、異なる管理要件に対応しています。

まとめ

Claude Code 2.1.118は、MCPのOAuth認証実装の信頼性向上を最大の焦点としつつ、Vim visual modeやカスタムテーマといったUX改善、DISABLE_UPDATESによる運用制御の強化を同時に達成したリリースです。MCP認証フローの競合状態に対する修正の集中は、本機能が本番利用において様々なエッジケースに遭遇してきた経緯を反映しており、安定性への継続的な投資が続いていることを示しています。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
358e4a9c

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
2回 (改善を経て承認)
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文(総論)、背景・技術詳細・設計判断(各論)、まとめ(結論)という「総論→各論→結論」の構成が明確に適用されており、非常に理解しやすい構造です。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

記事フッターのGitHubコミットへのリンク記法が `[abc1234](URL)` の形式に準拠しており、正しく使用されています。ファイル名付きシンタックスハイライトは使用されていませんが、記事の性質上不要であり問題ありません。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

「MCP OAuth」「WSL」「フック」といった専門用語を前提として解説しており、専門知識を持つエンジニアという対象読者に完全に適合しています。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクション、各パラグラフが要点を先に述べるトピックセンテンスで始まっており、構造が明快です。1段落1トピックの原則も守られており、可読性が高いです。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事で言及されている新機能やバグ修正は、すべて提供されたCHANGELOGのDiff内容と正確に一致しています。情報の欠落や改変は見られません。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「MCP OAuth」「`expires_in`」「macOSキーチェーン」など、Diffに記載の技術用語を正確に使用しており、誤用は見られません。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

`/fork`コマンドの変更や`DISABLE_UPDATES`環境変数の位置づけなど、Diffの内容を技術的に正確かつ分かりやすく解説できています。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事内のすべての主張は、提供されたCHANGELOGのDiff内容によって裏付けられています。「設計判断」セクションの考察も、Diffから論理的に導き出せる範囲内であり、ハルシネーションは検出されませんでした。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

バージョン番号「2.1.118」、コミットID「925200d」、各種コマンド名や環境変数名など、すべての数値・固有名詞は正確です。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事タイトルは、PRの内容(CHANGELOG.mdの更新)の要点を的確に捉え、読者の興味を引くように要約されており、内容との整合性は完璧です。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

記事内容はすべて提供されたCHANGELOGの情報に基づいており、バージョンのサポート状況やリリース日程といったPR外の知識の追記はありません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

「〜が追加されました」「〜が修正されています」といった表現が使われており、CHANGELOGに記載された完了済みの変更点を正確に反映しています。時間表現の歪曲はありません。