一覧へ戻る v2.1.118

バックナンバー · BACK ISSUE

v2.1.118

6 新機能 7 改善 21 修正 · 34 件の変更

vim のビジュアルモード、名前付きカスタムテーマ、MCP ツールフックを追加し、/cost/stats/usage に統合。MCP の OAuth や認証情報の修正を多数含みます。

新機能 Feature 6
  • 選択・オペレータ・視覚的フィードバックを備えた vim のビジュアルモード(v)とビジュアル行モード(V)を追加しました。

    ui

    詳しく
    入力欄を vim キーバインドで操作している人向けに、テキストを範囲選択するビジュアルモードが追加されました。v で文字単位、V で行単位の選択を始められ、選択した範囲に対して削除やコピーといったオペレータを適用でき、選択箇所が画面上でハイライト表示されます。これまで vim モードに無かった選択操作が使えるようになり、エディタに近い感覚でテキストを編集できます。
  • /theme から名前付きのカスタムテーマを作成・切り替えでき、~/.claude/themes/ の JSON ファイルを手で編集することもできます。プラグインも themes/ ディレクトリでテーマを提供できます。

    uiplugins

    詳しく
    見た目の配色(テーマ)を自分で作成し、名前を付けて切り替えられるようになりました。/theme から作成・切り替えができるほか、~/.claude/themes/ に置かれた JSON ファイルを直接編集して細かく調整することも可能です。さらにプラグイン側も themes/ ディレクトリにテーマを同梱して配布できるため、好みの配色や配布されたテーマを手軽に使いたい人に便利です。
  • フックが type: "mcp_tool" で MCP ツールを直接呼び出せるようになりました。

    hooksmcp

    詳しく
    フック(特定のタイミングで自動実行される処理)から MCP ツール(外部サービスと連携する仕組み)を直接呼び出せるようになりました。フック設定に type: "mcp_tool" を指定すると、これまでシェルコマンド経由などで間接的に行っていた MCP ツールの実行を、フックから直接呼べます。フックと MCP を組み合わせた自動化を組みたい人に役立ちます。
  • 手動の claude update を含むすべての更新経路を完全にブロックする DISABLE_UPDATES 環境変数を追加しました。DISABLE_AUTOUPDATER より厳格です。

    updaterconfig

    詳しく
    更新をすべて止めるための DISABLE_UPDATES 環境変数が追加されました。既存の DISABLE_AUTOUPDATER は自動更新だけを止めますが、DISABLE_UPDATES は手動の claude update を含むあらゆる更新経路を完全にブロックする、より厳格な設定です。バージョンを固定して運用したい環境や、勝手に更新されては困る管理下のマシンで役立ちます。
  • Windows の WSL が、wslInheritsWindowsSettings ポリシーキーを介して Windows 側の管理設定を継承できるようになりました。

    windowsenterprise

    詳しく
    Windows 上の WSL(Linux 環境)で動かす際に、Windows 側で管理者が設定したポリシーを引き継げるようになりました。wslInheritsWindowsSettings というポリシーキーを有効にすると、WSL 内でも Windows 側の管理設定が適用されます。WSL を使う組織で、設定を二重に管理せず統一して適用したい管理者に関係します。
  • バージョン検証付きでプラグインのリリース用 git タグを作成する claude plugin tag を追加しました。

    pluginscli

    詳しく
    プラグインのリリース用 git タグを作成する claude plugin tag コマンドが追加されました。バージョンの検証付きでタグを生成するため、バージョン指定の誤りを防ぎながらリリースタグを打てます。プラグインを開発・配布している人のリリース作業を手助けします。
改善 Improvement 7
  • /cost/stats/usage に統合しました。どちらも該当タブを開く入力ショートカットとして残ります。

    usagecommands

    詳しく
    利用状況を確認する /cost/stats/usage という単一のコマンドに統合されました。これまでは別々のコマンドでしたが、今後は /usage に集約され、従来の /cost/stats と打っても /usage の該当タブが開くショートカットとして引き続き使えます。コマンドを打ち替えなくてもこれまで通りの情報にアクセスできます。
  • Auto モード: autoMode.allowautoMode.soft_denyautoMode.environment"$defaults" を含めると、組み込みのリストを置き換えずにカスタムルールを追加できます。

    permissionsconfig

    詳しく
    Auto モードの権限ルールを設定する際、組み込みの初期ルールを残したまま独自ルールを追加できるようになりました。autoMode.allowautoMode.soft_denyautoMode.environment の中に "$defaults" を含めると、これまでのように既定リストを丸ごと置き換えてしまうのではなく、既定リストに自分のルールを足し合わせる形になります。既定の挙動を維持しつつ細かく追加調整したい人に便利です。
  • Auto モードのオプトインプロンプトに「Don't ask again」オプションを追加しました。

    permissionsui

    詳しく
    Auto モードを有効にするか尋ねる確認プロンプトに「Don't ask again」(次回以降聞かない)の選択肢が追加されました。これまでは毎回プロンプトが出ていましたが、この選択肢を選ぶと以後は確認されなくなります。Auto モードを使うか毎回問われるのを煩わしく感じていた人に役立ちます。
  • --continue/--resume が、/add-dir で現在のディレクトリを追加したセッションを見つけられるようになりました。

    agents

    詳しく
    過去のセッションを再開する --continue/--resume が、対象セッションをより的確に見つけられるようになりました。以前は起点ディレクトリでしか検索できませんでしたが、今後は /add-dir で現在のディレクトリを後から追加したセッションも候補に含まれます。複数ディレクトリをまたいで作業していた人が、目的のセッションを再開しやすくなります。
  • リモートコントロールが接続されているとき、/color がセッションのアクセントカラーを claude.ai/code に同期するようになりました。

    uiagents

    詳しく
    セッションのアクセントカラーを変える /color が、リモートコントロール(claude.ai/code から接続する機能)使用時にも反映されるようになりました。リモートコントロールが接続されている間は、/color で設定した色が claude.ai/code 側にも同期されます。ブラウザ側からセッションを操作している人が、ターミナルと同じ色味で識別できるようになります。
  • カスタム ANTHROPIC_BASE_URL ゲートウェイを使うとき、/model ピッカーが ANTHROPIC_DEFAULT_*_MODEL_NAME/_DESCRIPTION の上書きを尊重するようになりました。

    modelsenterprise

    詳しく
    独自のゲートウェイ(ANTHROPIC_BASE_URL で指定する API の中継先)を使う際に、モデル選択画面の表示を上書き設定で調整できるようになりました。/model ピッカーが ANTHROPIC_DEFAULT_*_MODEL_NAME/_DESCRIPTION で指定したモデル名や説明文を反映するようになり、ゲートウェイ越しに使うモデルをわかりやすい名前で表示できます。社内ゲートウェイ経由で利用する企業ユーザーに関係します。
  • 別のプラグインのバージョン制約で自動更新がプラグインをスキップしたとき、そのスキップが /doctor/plugin の Errors タブに表示されるようになりました。

    plugins

    詳しく
    あるプラグインが別のプラグインのバージョン制約により自動更新を見送られた場合、その事実が表示されるようになりました。これまでは黙ってスキップされて気づきにくかったのが、/doctor/plugin の Errors タブにスキップ理由が出るようになります。プラグインが古いまま更新されない原因を把握しやすくなります。
修正 Fix 21
  • headersHelper で設定したサーバーで /mcp メニューが OAuth の Authenticate/Re-authenticate アクションを隠す問題と、カスタムヘッダー付きの HTTP/SSE MCP サーバーが一時的な 401 の後に「needs authentication」で止まる問題を修正。

    mcpauth

    詳しく
    MCP サーバーの認証に関する 2 つの不具合が修正されました。1 つは headersHelper を使って設定したサーバーで、/mcp メニューに OAuth の Authenticate/Re-authenticate(認証/再認証)操作が表示されない問題です。もう 1 つは、カスタムヘッダー付きの HTTP/SSE 接続の MCP サーバーが、一時的な 401 エラーの後に「needs authentication」表示のまま固まる問題です。カスタムヘッダー付きの MCP サーバーを使う人が、正しく認証できるようになります。
  • OAuth トークンの応答に expires_in が欠ける MCP サーバーが、毎時の再認証を要求する問題を修正。

    mcpauth

    詳しく
    OAuth 認証を使う一部の MCP サーバーで、毎時のように再認証を求められてしまう問題が修正されました。原因は、トークン応答に有効期限を示す expires_in が含まれないサーバーの扱いで、有効期限が極端に短いものとみなされていたことです。該当するサーバーを使っていた人が、頻繁な再ログインから解放されます。
  • サーバーの insufficient_scope 403 が現在のトークンに既にあるスコープを指す場合、MCP のステップアップ認可が再同意を求めず無言で更新する問題を修正。

    mcpauth

    詳しく
    MCP のステップアップ認可(より高い権限を求める追加の認可)が正しく動かないケースが修正されました。サーバーが insufficient_scope の 403 エラーで、現在のトークンが既に持っているスコープを要求してきた場合に、本来は再同意を促すべきところを無言でトークン更新だけして処理が進んでしまっていました。今後はこうした状況で適切に再同意が求められます。
  • MCP サーバーの OAuth フローがタイムアウトまたはキャンセルされたときの、未処理の Promise の拒否を修正。

    mcpauth

    詳しく
    MCP サーバーの OAuth 認証フローがタイムアウトしたりキャンセルされたりした際に、未処理の Promise 拒否(プログラム内部の例外)が発生していた問題が修正されました。認証を途中でやめたり時間切れになったりしても、内部エラーにならず安定して扱われるようになります。MCP サーバーへログインする途中でやめることがある人に関係します。
  • 競合状態で MCP の OAuth 更新が、プロセス間ロックなしで進行する問題を修正。

    mcpauth

    詳しく
    複数のプロセスが同時に MCP の OAuth トークンを更新しようとした際の競合に関する不具合が修正されました。本来はプロセス間で排他制御(ロック)を取ってから更新するはずが、競合時にロックを取らずに更新が進んでしまっていました。複数のセッションを並行して動かすときに、トークン更新がより安全に行われます。
  • 並行する MCP トークンの更新が、更新したばかりの OAuth トークンを上書きして予期しない「Please run /login」プロンプトを引き起こす macOS キーチェーンの競合を修正。

    mcpauthmacos

    詳しく
    macOS のキーチェーン(認証情報の保管庫)で起きる競合状態が修正されました。MCP のトークン更新が並行して走ると、更新したばかりの OAuth トークンを古い処理が上書きしてしまい、突然「Please run /login」と再ログインを求められることがありました。macOS で複数セッションを使う人が、意図しないログイン要求に悩まされにくくなります。
  • サーバーがローカルの有効期限より前にトークンを失効させたとき、OAuth トークンの更新が失敗する問題を修正。

    auth

    詳しく
    サーバー側がトークンを早めに失効させた場合に、OAuth トークンの更新が失敗していた問題が修正されました。手元で記録している有効期限よりも前にサーバーがトークンを無効化すると、更新処理がうまくいかなくなっていました。サーバー側でトークンが早期に取り消される環境でも、再認証が正しく行われるようになります。
  • Linux/Windows での認証情報の保存クラッシュが ~/.claude/.credentials.json を破損させる問題を修正。

    auth

    詳しく
    Linux と Windows で認証情報を保存する際にクラッシュが起き、~/.claude/.credentials.json ファイルが壊れてしまう問題が修正されました。ファイルが破損すると認証情報が失われ、再ログインが必要になることがありました。これらの OS を使う人の認証情報がより確実に保存されます。
  • CLAUDE_CODE_OAUTH_TOKEN で起動したセッションで /login が効かない問題を修正。環境変数のトークンがクリアされ、ディスクの認証情報が有効になるようになりました。

    auth

    詳しく
    環境変数 CLAUDE_CODE_OAUTH_TOKEN を設定して起動したセッションで、/login を実行しても切り替わらない問題が修正されました。以前は環境変数のトークンが優先され続けていましたが、今後は /login 時に環境変数のトークンがクリアされ、新たにログインしてディスクに保存した認証情報が有効になります。トークンを環境変数で渡したまま別アカウントへログインし直したい人に役立ちます。
  • 「new messages」のスクロールピルと /plugin のバッジで読みにくいテキストを修正。

    ui

    詳しく
    「new messages」と表示されるスクロール用のピル(丸いラベル)や、/plugin 画面のバッジで、文字が読みにくくなっていた表示の不具合が修正されました。背景と文字色のコントラストが取れず判読しづらかったものが、はっきり読めるようになります。見た目の改善で、状態を確認しやすくなります。
  • --dangerously-skip-permissions で実行しているとき、プラン承認ダイアログが「bypass permissions」ではなく「auto mode」を提示する問題を修正。

    permissionsui

    詳しく
    --dangerously-skip-permissions(権限確認をスキップして実行するオプション)で起動しているときの、プラン承認ダイアログの表示誤りが修正されました。本来は「bypass permissions」を提示すべきところで、誤って「auto mode」を提示していました。このオプションを使う人に、状況に合った正しい選択肢が表示されるようになります。
  • StopSubagentStop 以外のイベント向けに設定したとき、agent 型のフックが「Messages are required for agent hooks」で失敗する問題を修正。

    hooksagents

    詳しく
    agent 型のフックを StopSubagentStop 以外のイベントに設定したときに、「Messages are required for agent hooks」というエラーで失敗していた問題が修正されました。これまでは特定のイベントでしか動かせなかったものが、他のイベントでも正しく動作するようになります。フックを使ってエージェントの挙動をカスタマイズしている人に関係します。
  • agent フックの検証用サブエージェントが行うツール呼び出しで、prompt フックが再発火する問題を修正。

    hooksagents

    詳しく
    prompt フックが余計に再発火していた問題が修正されました。agent フックの検証用に内部で動くサブエージェントがツールを呼び出した際にも prompt フックが反応してしまっていましたが、今後はそうした内部のツール呼び出しでは発火しなくなります。フックが想定外に多重実行されて困っていた人に役立ちます。
  • /fork が fork ごとに親会話の全体をディスクに書き込む問題を修正。ポインタを書き込み、読み込み時に展開するようになりました。

    agentsperformance

    詳しく
    会話を分岐させる /fork が、分岐するたびに親会話の全内容をディスクに丸ごと書き込んでいた非効率な動作が修正されました。今後は実体をコピーする代わりに親会話への参照(ポインタ)だけを書き込み、読み込み時に内容を展開するようになります。会話を何度も分岐させる人にとって、ディスク使用量と書き込み負荷が抑えられます。
  • Alt+K / Alt+X / Alt+^ / Alt+_ がキーボード入力を固める問題を修正。

    ui

    詳しく
    Alt+K、Alt+X、Alt+^、Alt+_ のキー操作でキーボード入力が固まってしまう問題が修正されました。これらのキーを押すと入力を受け付けなくなることがありましたが、解消されています。該当のキー組み合わせを使う人が、入力が止まる不具合に遭わなくなります。
  • リモートセッションへの接続が、~/.claude/settings.json のローカルの model 設定を上書きする問題を修正。

    modelsagentsconfig

    詳しく
    リモートセッションへ接続すると、手元の ~/.claude/settings.json にあるローカルの model 設定が上書きされてしまう問題が修正されました。これまでは接続後にローカルで選んでいたモデル設定が書き換わってしまうことがありましたが、今後は保持されます。リモートセッションを使いつつ、ローカルでは別のモデルを既定にしている人に関係します。
  • / で始まるファイルパスを貼り付けたときに、先読み入力が「No commands match」エラーを表示する問題を修正。

    uicommands

    詳しく
    / で始まるファイルパスを貼り付けたときに、コマンド候補の先読み入力(typeahead)が誤って「No commands match」とエラーを表示する問題が修正されました。/ をスラッシュコマンドの入力と勘違いしていたのが原因です。絶対パスなど / 始まりのパスを貼り付ける人が、不要なエラー表示に悩まされなくなります。
  • 既にインストール済みのプラグインに対する plugin install が、誤ったバージョンでインストールされた依存を再解決しない問題を修正。

    plugins

    詳しく
    既にインストール済みのプラグインに対して plugin install を実行しても、誤ったバージョンで入っている依存プラグインを正しいバージョンに直してくれない問題が修正されました。今後は再インストール時に依存関係が解決し直され、適切なバージョンに揃えられます。依存バージョンの不整合に困っていたプラグイン利用者に役立ちます。
  • 無効なパスやファイルディスクリプタの枯渇による、ファイルウォッチャーからの未処理エラーを修正。

    ui

    詳しく
    ファイルの変更を監視するファイルウォッチャーが、無効なパスやファイルディスクリプタ(同時に開けるファイル数の枠)の枯渇に直面した際に、未処理エラーを起こしていた問題が修正されました。こうした状況でも内部エラーで落ちず、安定して扱われるようになります。大量のファイルを扱うプロジェクトで作業する人の安定性が向上します。
  • JWT 更新中の一時的な CCR 初期化の乱れで、リモートコントロールセッションがアーカイブされる問題を修正。

    agentsauth

    詳しく
    リモートコントロールのセッションが、意図せずアーカイブ(終了扱い)されてしまう問題が修正されました。原因は、JWT(認証トークン)の更新中に CCR の初期化が一時的に乱れる現象で、その瞬間にセッションがアーカイブされていました。リモートコントロールでセッションを継続している人が、一時的な接続の揺らぎでセッションを失わずに済むようになります。
  • SendMessage で再開したサブエージェントが、生成時に指定された明示的な cwd を復元しない問題を修正。

    agents

    詳しく
    SendMessage で再開したサブエージェントが、起動時に明示的に指定された作業ディレクトリ(cwd)を復元しない問題が修正されました。これまでは再開後に意図しないディレクトリで動いてしまうことがありましたが、今後は元の cwd が正しく引き継がれます。特定のディレクトリで動かすよう指定したサブエージェントを使う人に関係します。
原文 Markdown を表示
## 2.1.118

- Added vim visual mode (`v`) and visual-line mode (`V`) with selection, operators, and visual feedback
- Merged `/cost` and `/stats` into `/usage` — both remain as typing shortcuts that open the relevant tab
- Create and switch between named custom themes from `/theme`, or hand-edit JSON files in `~/.claude/themes/`; plugins can also ship themes via a `themes/` directory
- Hooks can now invoke MCP tools directly via `type: "mcp_tool"`
- Added `DISABLE_UPDATES` env var to completely block all update paths including manual `claude update` — stricter than `DISABLE_AUTOUPDATER`
- WSL on Windows can now inherit Windows-side managed settings via the `wslInheritsWindowsSettings` policy key
- Auto mode: include `"$defaults"` in `autoMode.allow`, `autoMode.soft_deny`, or `autoMode.environment` to add custom rules alongside the built-in list instead of replacing it
- Added a "Don't ask again" option to the auto mode opt-in prompt
- Added `claude plugin tag` to create release git tags for plugins with version validation
- `--continue`/`--resume` now find sessions that added the current directory via `/add-dir`
- `/color` now syncs the session accent color to claude.ai/code when Remote Control is connected
- The `/model` picker now honors `ANTHROPIC_DEFAULT_*_MODEL_NAME`/`_DESCRIPTION` overrides when using a custom `ANTHROPIC_BASE_URL` gateway
- When auto-update skips a plugin due to another plugin's version constraint, the skip now appears in `/doctor` and the `/plugin` Errors tab
- Fixed `/mcp` menu hiding OAuth Authenticate/Re-authenticate actions for servers configured with `headersHelper`, and HTTP/SSE MCP servers with custom headers being stuck in "needs authentication" after a transient 401
- Fixed MCP servers whose OAuth token response omits `expires_in` requiring re-authentication every hour
- Fixed MCP step-up authorization silently refreshing instead of prompting for re-consent when the server's `insufficient_scope` 403 names a scope the current token already has
- Fixed an unhandled promise rejection when an MCP server's OAuth flow times out or is cancelled
- Fixed MCP OAuth refresh proceeding without its cross-process lock under contention
- Fixed macOS keychain race where a concurrent MCP token refresh could overwrite a freshly-refreshed OAuth token, causing unexpected "Please run /login" prompts
- Fixed OAuth token refresh failing when the server revokes a token before its local expiry time
- Fixed credential save crash on Linux/Windows corrupting `~/.claude/.credentials.json`
- Fixed `/login` having no effect in a session launched with `CLAUDE_CODE_OAUTH_TOKEN` — the env token is now cleared so disk credentials take effect
- Fixed unreadable text in the "new messages" scroll pill and `/plugin` badges
- Fixed plan acceptance dialog offering "auto mode" instead of "bypass permissions" when running with `--dangerously-skip-permissions`
- Fixed agent-type hooks failing with "Messages are required for agent hooks" when configured for events other than `Stop` or `SubagentStop`
- Fixed `prompt` hooks re-firing on tool calls made by an agent-hook verifier subagent
- Fixed `/fork` writing the full parent conversation to disk per fork — now writes a pointer and hydrates on read
- Fixed Alt+K / Alt+X / Alt+^ / Alt+_ freezing keyboard input
- Fixed connecting to a remote session overwriting your local `model` setting in `~/.claude/settings.json`
- Fixed typeahead showing "No commands match" error when pasting file paths that start with `/`
- Fixed `plugin install` on an already-installed plugin not re-resolving a dependency installed at the wrong version
- Fixed unhandled errors from file watcher on invalid paths or fd exhaustion
- Fixed Remote Control sessions getting archived on transient CCR initialization blips during JWT refresh
- Fixed subagents resumed via `SendMessage` not restoring the explicit `cwd` they were spawned with