バックナンバー · BACK ISSUE
v2.1.118
vim のビジュアルモード、名前付きカスタムテーマ、MCP ツールフックを追加し、/cost と /stats を /usage に統合。MCP の OAuth や認証情報の修正を多数含みます。
-
選択・オペレータ・視覚的フィードバックを備えた vim のビジュアルモード(
v)とビジュアル行モード(V)を追加しました。詳しく
入力欄を vim キーバインドで操作している人向けに、テキストを範囲選択するビジュアルモードが追加されました。vで文字単位、Vで行単位の選択を始められ、選択した範囲に対して削除やコピーといったオペレータを適用でき、選択箇所が画面上でハイライト表示されます。これまで vim モードに無かった選択操作が使えるようになり、エディタに近い感覚でテキストを編集できます。 -
/themeから名前付きのカスタムテーマを作成・切り替えでき、~/.claude/themes/の JSON ファイルを手で編集することもできます。プラグインもthemes/ディレクトリでテーマを提供できます。詳しく
見た目の配色(テーマ)を自分で作成し、名前を付けて切り替えられるようになりました。/themeから作成・切り替えができるほか、~/.claude/themes/に置かれた JSON ファイルを直接編集して細かく調整することも可能です。さらにプラグイン側もthemes/ディレクトリにテーマを同梱して配布できるため、好みの配色や配布されたテーマを手軽に使いたい人に便利です。 -
フックが
type: "mcp_tool"で MCP ツールを直接呼び出せるようになりました。詳しく
フック(特定のタイミングで自動実行される処理)から MCP ツール(外部サービスと連携する仕組み)を直接呼び出せるようになりました。フック設定にtype: "mcp_tool"を指定すると、これまでシェルコマンド経由などで間接的に行っていた MCP ツールの実行を、フックから直接呼べます。フックと MCP を組み合わせた自動化を組みたい人に役立ちます。 -
手動の
claude updateを含むすべての更新経路を完全にブロックするDISABLE_UPDATES環境変数を追加しました。DISABLE_AUTOUPDATERより厳格です。詳しく
更新をすべて止めるためのDISABLE_UPDATES環境変数が追加されました。既存のDISABLE_AUTOUPDATERは自動更新だけを止めますが、DISABLE_UPDATESは手動のclaude updateを含むあらゆる更新経路を完全にブロックする、より厳格な設定です。バージョンを固定して運用したい環境や、勝手に更新されては困る管理下のマシンで役立ちます。 -
Windows の WSL が、
wslInheritsWindowsSettingsポリシーキーを介して Windows 側の管理設定を継承できるようになりました。詳しく
Windows 上の WSL(Linux 環境)で動かす際に、Windows 側で管理者が設定したポリシーを引き継げるようになりました。wslInheritsWindowsSettingsというポリシーキーを有効にすると、WSL 内でも Windows 側の管理設定が適用されます。WSL を使う組織で、設定を二重に管理せず統一して適用したい管理者に関係します。 -
バージョン検証付きでプラグインのリリース用 git タグを作成する
claude plugin tagを追加しました。詳しく
プラグインのリリース用 git タグを作成するclaude plugin tagコマンドが追加されました。バージョンの検証付きでタグを生成するため、バージョン指定の誤りを防ぎながらリリースタグを打てます。プラグインを開発・配布している人のリリース作業を手助けします。
-
/costと/statsを/usageに統合しました。どちらも該当タブを開く入力ショートカットとして残ります。詳しく
利用状況を確認する/costと/statsが/usageという単一のコマンドに統合されました。これまでは別々のコマンドでしたが、今後は/usageに集約され、従来の/costや/statsと打っても/usageの該当タブが開くショートカットとして引き続き使えます。コマンドを打ち替えなくてもこれまで通りの情報にアクセスできます。 -
Auto モード:
autoMode.allow・autoMode.soft_deny・autoMode.environmentに"$defaults"を含めると、組み込みのリストを置き換えずにカスタムルールを追加できます。詳しく
Auto モードの権限ルールを設定する際、組み込みの初期ルールを残したまま独自ルールを追加できるようになりました。autoMode.allow・autoMode.soft_deny・autoMode.environmentの中に"$defaults"を含めると、これまでのように既定リストを丸ごと置き換えてしまうのではなく、既定リストに自分のルールを足し合わせる形になります。既定の挙動を維持しつつ細かく追加調整したい人に便利です。 -
Auto モードのオプトインプロンプトに「Don't ask again」オプションを追加しました。
詳しく
Auto モードを有効にするか尋ねる確認プロンプトに「Don't ask again」(次回以降聞かない)の選択肢が追加されました。これまでは毎回プロンプトが出ていましたが、この選択肢を選ぶと以後は確認されなくなります。Auto モードを使うか毎回問われるのを煩わしく感じていた人に役立ちます。 -
--continue/--resumeが、/add-dirで現在のディレクトリを追加したセッションを見つけられるようになりました。詳しく
過去のセッションを再開する--continue/--resumeが、対象セッションをより的確に見つけられるようになりました。以前は起点ディレクトリでしか検索できませんでしたが、今後は/add-dirで現在のディレクトリを後から追加したセッションも候補に含まれます。複数ディレクトリをまたいで作業していた人が、目的のセッションを再開しやすくなります。 -
リモートコントロールが接続されているとき、
/colorがセッションのアクセントカラーを claude.ai/code に同期するようになりました。詳しく
セッションのアクセントカラーを変える/colorが、リモートコントロール(claude.ai/code から接続する機能)使用時にも反映されるようになりました。リモートコントロールが接続されている間は、/colorで設定した色が claude.ai/code 側にも同期されます。ブラウザ側からセッションを操作している人が、ターミナルと同じ色味で識別できるようになります。 -
カスタム
ANTHROPIC_BASE_URLゲートウェイを使うとき、/modelピッカーがANTHROPIC_DEFAULT_*_MODEL_NAME/_DESCRIPTIONの上書きを尊重するようになりました。詳しく
独自のゲートウェイ(ANTHROPIC_BASE_URLで指定する API の中継先)を使う際に、モデル選択画面の表示を上書き設定で調整できるようになりました。/modelピッカーがANTHROPIC_DEFAULT_*_MODEL_NAME/_DESCRIPTIONで指定したモデル名や説明文を反映するようになり、ゲートウェイ越しに使うモデルをわかりやすい名前で表示できます。社内ゲートウェイ経由で利用する企業ユーザーに関係します。 -
別のプラグインのバージョン制約で自動更新がプラグインをスキップしたとき、そのスキップが
/doctorと/pluginの Errors タブに表示されるようになりました。詳しく
あるプラグインが別のプラグインのバージョン制約により自動更新を見送られた場合、その事実が表示されるようになりました。これまでは黙ってスキップされて気づきにくかったのが、/doctorと/pluginの Errors タブにスキップ理由が出るようになります。プラグインが古いまま更新されない原因を把握しやすくなります。
-
headersHelperで設定したサーバーで/mcpメニューが OAuth の Authenticate/Re-authenticate アクションを隠す問題と、カスタムヘッダー付きの HTTP/SSE MCP サーバーが一時的な 401 の後に「needs authentication」で止まる問題を修正。詳しく
MCP サーバーの認証に関する 2 つの不具合が修正されました。1 つはheadersHelperを使って設定したサーバーで、/mcpメニューに OAuth の Authenticate/Re-authenticate(認証/再認証)操作が表示されない問題です。もう 1 つは、カスタムヘッダー付きの HTTP/SSE 接続の MCP サーバーが、一時的な 401 エラーの後に「needs authentication」表示のまま固まる問題です。カスタムヘッダー付きの MCP サーバーを使う人が、正しく認証できるようになります。 -
OAuth トークンの応答に
expires_inが欠ける MCP サーバーが、毎時の再認証を要求する問題を修正。詳しく
OAuth 認証を使う一部の MCP サーバーで、毎時のように再認証を求められてしまう問題が修正されました。原因は、トークン応答に有効期限を示すexpires_inが含まれないサーバーの扱いで、有効期限が極端に短いものとみなされていたことです。該当するサーバーを使っていた人が、頻繁な再ログインから解放されます。 -
サーバーの
insufficient_scope403 が現在のトークンに既にあるスコープを指す場合、MCP のステップアップ認可が再同意を求めず無言で更新する問題を修正。詳しく
MCP のステップアップ認可(より高い権限を求める追加の認可)が正しく動かないケースが修正されました。サーバーがinsufficient_scopeの 403 エラーで、現在のトークンが既に持っているスコープを要求してきた場合に、本来は再同意を促すべきところを無言でトークン更新だけして処理が進んでしまっていました。今後はこうした状況で適切に再同意が求められます。 -
MCP サーバーの OAuth フローがタイムアウトまたはキャンセルされたときの、未処理の Promise の拒否を修正。
詳しく
MCP サーバーの OAuth 認証フローがタイムアウトしたりキャンセルされたりした際に、未処理の Promise 拒否(プログラム内部の例外)が発生していた問題が修正されました。認証を途中でやめたり時間切れになったりしても、内部エラーにならず安定して扱われるようになります。MCP サーバーへログインする途中でやめることがある人に関係します。 -
競合状態で MCP の OAuth 更新が、プロセス間ロックなしで進行する問題を修正。
詳しく
複数のプロセスが同時に MCP の OAuth トークンを更新しようとした際の競合に関する不具合が修正されました。本来はプロセス間で排他制御(ロック)を取ってから更新するはずが、競合時にロックを取らずに更新が進んでしまっていました。複数のセッションを並行して動かすときに、トークン更新がより安全に行われます。 -
並行する MCP トークンの更新が、更新したばかりの OAuth トークンを上書きして予期しない「Please run /login」プロンプトを引き起こす macOS キーチェーンの競合を修正。
詳しく
macOS のキーチェーン(認証情報の保管庫)で起きる競合状態が修正されました。MCP のトークン更新が並行して走ると、更新したばかりの OAuth トークンを古い処理が上書きしてしまい、突然「Please run /login」と再ログインを求められることがありました。macOS で複数セッションを使う人が、意図しないログイン要求に悩まされにくくなります。 -
サーバーがローカルの有効期限より前にトークンを失効させたとき、OAuth トークンの更新が失敗する問題を修正。
詳しく
サーバー側がトークンを早めに失効させた場合に、OAuth トークンの更新が失敗していた問題が修正されました。手元で記録している有効期限よりも前にサーバーがトークンを無効化すると、更新処理がうまくいかなくなっていました。サーバー側でトークンが早期に取り消される環境でも、再認証が正しく行われるようになります。 -
Linux/Windows での認証情報の保存クラッシュが
~/.claude/.credentials.jsonを破損させる問題を修正。詳しく
Linux と Windows で認証情報を保存する際にクラッシュが起き、~/.claude/.credentials.jsonファイルが壊れてしまう問題が修正されました。ファイルが破損すると認証情報が失われ、再ログインが必要になることがありました。これらの OS を使う人の認証情報がより確実に保存されます。 -
CLAUDE_CODE_OAUTH_TOKENで起動したセッションで/loginが効かない問題を修正。環境変数のトークンがクリアされ、ディスクの認証情報が有効になるようになりました。詳しく
環境変数CLAUDE_CODE_OAUTH_TOKENを設定して起動したセッションで、/loginを実行しても切り替わらない問題が修正されました。以前は環境変数のトークンが優先され続けていましたが、今後は/login時に環境変数のトークンがクリアされ、新たにログインしてディスクに保存した認証情報が有効になります。トークンを環境変数で渡したまま別アカウントへログインし直したい人に役立ちます。 -
「new messages」のスクロールピルと
/pluginのバッジで読みにくいテキストを修正。詳しく
「new messages」と表示されるスクロール用のピル(丸いラベル)や、/plugin画面のバッジで、文字が読みにくくなっていた表示の不具合が修正されました。背景と文字色のコントラストが取れず判読しづらかったものが、はっきり読めるようになります。見た目の改善で、状態を確認しやすくなります。 -
--dangerously-skip-permissionsで実行しているとき、プラン承認ダイアログが「bypass permissions」ではなく「auto mode」を提示する問題を修正。詳しく
--dangerously-skip-permissions(権限確認をスキップして実行するオプション)で起動しているときの、プラン承認ダイアログの表示誤りが修正されました。本来は「bypass permissions」を提示すべきところで、誤って「auto mode」を提示していました。このオプションを使う人に、状況に合った正しい選択肢が表示されるようになります。 -
StopやSubagentStop以外のイベント向けに設定したとき、agent 型のフックが「Messages are required for agent hooks」で失敗する問題を修正。詳しく
agent 型のフックをStopやSubagentStop以外のイベントに設定したときに、「Messages are required for agent hooks」というエラーで失敗していた問題が修正されました。これまでは特定のイベントでしか動かせなかったものが、他のイベントでも正しく動作するようになります。フックを使ってエージェントの挙動をカスタマイズしている人に関係します。 -
agent フックの検証用サブエージェントが行うツール呼び出しで、
promptフックが再発火する問題を修正。詳しく
promptフックが余計に再発火していた問題が修正されました。agent フックの検証用に内部で動くサブエージェントがツールを呼び出した際にもpromptフックが反応してしまっていましたが、今後はそうした内部のツール呼び出しでは発火しなくなります。フックが想定外に多重実行されて困っていた人に役立ちます。 -
/forkが fork ごとに親会話の全体をディスクに書き込む問題を修正。ポインタを書き込み、読み込み時に展開するようになりました。詳しく
会話を分岐させる/forkが、分岐するたびに親会話の全内容をディスクに丸ごと書き込んでいた非効率な動作が修正されました。今後は実体をコピーする代わりに親会話への参照(ポインタ)だけを書き込み、読み込み時に内容を展開するようになります。会話を何度も分岐させる人にとって、ディスク使用量と書き込み負荷が抑えられます。 -
Alt+K / Alt+X / Alt+^ / Alt+_ がキーボード入力を固める問題を修正。
詳しく
Alt+K、Alt+X、Alt+^、Alt+_ のキー操作でキーボード入力が固まってしまう問題が修正されました。これらのキーを押すと入力を受け付けなくなることがありましたが、解消されています。該当のキー組み合わせを使う人が、入力が止まる不具合に遭わなくなります。 -
リモートセッションへの接続が、
~/.claude/settings.jsonのローカルのmodel設定を上書きする問題を修正。詳しく
リモートセッションへ接続すると、手元の~/.claude/settings.jsonにあるローカルのmodel設定が上書きされてしまう問題が修正されました。これまでは接続後にローカルで選んでいたモデル設定が書き換わってしまうことがありましたが、今後は保持されます。リモートセッションを使いつつ、ローカルでは別のモデルを既定にしている人に関係します。 -
/で始まるファイルパスを貼り付けたときに、先読み入力が「No commands match」エラーを表示する問題を修正。詳しく
/で始まるファイルパスを貼り付けたときに、コマンド候補の先読み入力(typeahead)が誤って「No commands match」とエラーを表示する問題が修正されました。/をスラッシュコマンドの入力と勘違いしていたのが原因です。絶対パスなど/始まりのパスを貼り付ける人が、不要なエラー表示に悩まされなくなります。 -
既にインストール済みのプラグインに対する
plugin installが、誤ったバージョンでインストールされた依存を再解決しない問題を修正。詳しく
既にインストール済みのプラグインに対してplugin installを実行しても、誤ったバージョンで入っている依存プラグインを正しいバージョンに直してくれない問題が修正されました。今後は再インストール時に依存関係が解決し直され、適切なバージョンに揃えられます。依存バージョンの不整合に困っていたプラグイン利用者に役立ちます。 -
無効なパスやファイルディスクリプタの枯渇による、ファイルウォッチャーからの未処理エラーを修正。
詳しく
ファイルの変更を監視するファイルウォッチャーが、無効なパスやファイルディスクリプタ(同時に開けるファイル数の枠)の枯渇に直面した際に、未処理エラーを起こしていた問題が修正されました。こうした状況でも内部エラーで落ちず、安定して扱われるようになります。大量のファイルを扱うプロジェクトで作業する人の安定性が向上します。 -
JWT 更新中の一時的な CCR 初期化の乱れで、リモートコントロールセッションがアーカイブされる問題を修正。
詳しく
リモートコントロールのセッションが、意図せずアーカイブ(終了扱い)されてしまう問題が修正されました。原因は、JWT(認証トークン)の更新中に CCR の初期化が一時的に乱れる現象で、その瞬間にセッションがアーカイブされていました。リモートコントロールでセッションを継続している人が、一時的な接続の揺らぎでセッションを失わずに済むようになります。 -
SendMessageで再開したサブエージェントが、生成時に指定された明示的なcwdを復元しない問題を修正。詳しく
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