Claude Code更新 Forkサブエージェント・MCPフック・Vim強化【4/19〜25】

記事タイトルとURLをコピーする

Claude Code更新 Forkサブエージェント・MCPフック・Vim強化【4/19〜25】

はじめに

サーバーワークスの池田です。

今週(4/19〜4/25)の Claude Code は v2.1.114 から v2.1.119 まで5バージョン(※ v2.1.115 はスキップ)がリリースされました。会話を丸ごと継承する Forked subagents の正式提供開始、Hooks から MCP ツールを直接呼び出す mcp_tool タイプの登場、Vim visual mode とカスタムテーマ によるターミナル UI の強化という3本柱が中心です。あわせて --from-pr の GitLab・Bitbucket・GitHub Enterprise 対応や、Anthropic 自身が 4 月 23 日に公開した 品質低下に関する postmortem など、運用観点で押さえるべきトピックもまとまっています。

この記事で分かること

  • 親会話のシステムプロンプト・ツール・履歴をすべて継承する Forked subagents/fork)の使い方と、プロンプトキャッシュ共有による入力トークン削減の仕組み
  • Hooks の新タイプ mcp_tool で、シェルを介さず MCP サーバーのツールを直接呼び出す方法と、PostToolUse 系で追加された duration_ms フィールド
  • Vim visual mode(v / Vカスタムテーマ機能/theme)で、ターミナル UI の操作性と見た目がカスタマイズできるようになった
  • v2.1.116 で入った extended thinking のインライン進捗表示・応答中の /doctor 起動・fullscreen スクロール改善など、毎日触る部分の UX 改修
  • 今週改名されたコマンドや、/usage/resume/model/config などの既存コマンドの主要アップデート
  • --from-pr の外部 PR ホスティング対応、Pro プラン除外騒動、Anthropic 公式の品質回復 postmortem など、今週の周辺トピック

今週の主要アップデート一覧

機能 バージョン 主な変更点 参照
Forked subagents v2.1.117〜v2.1.119 CLAUDE_CODE_FORK_SUBAGENT=1 で有効化される会話継承型サブエージェント。/fork コマンドが /branch の alias から独立 公式ドキュメント
Hooks mcp_tool タイプ v2.1.118〜v2.1.119 Hooks から MCP サーバーのツールを直接呼び出せる新タイプ。PostToolUse 系入力に duration_ms 追加 公式ドキュメント
Vim visual mode とカスタムテーマ v2.1.118 Vim の visual / visual-line モード(v / V)と、/theme から作成・切替可能なカスタムテーマが追加。プラグインから themes/ ディレクトリ経由でテーマ配布も可能 Releases v2.1.118

注目アップデート1 Forked subagents 会話を継承するサブエージェント

何が変わったのか

v2.1.117 で Forked subagents が外部ビルドでも有効化できるようになり、v2.1.119 でディスク書き込みの効率化(フォークごとに親会話の全体を書き出すのではなく、ポインタを書いて読み出し時に展開する方式)が入って実用フェーズに到達しました。親セッションのシステムプロンプト・ツール・モデル・メッセージ履歴をそっくり継承するサブエージェントで、「同じ前提知識をもったまま、本筋とは別のサイドタスクを走らせる」用途を狙っています。

実際に /fork Claude Codeについて調査して。 を実行した直後の画面がこちらです。プロンプト入力欄の下に メインセッション(main)と起動したフォーク(claude-code)が行として並ぶパネルが表示され、右側には経過時間(10s)と使用トークン数(↓ 30.6k tokens)も出ます。フォーク名はディレクティブの最初の数語から自動命名されます(この例では「Claude Code」が拾われて claude-code になっています)。

プロンプト入力欄の下にメインとフォークが行として並ぶパネル。↑/↓ で選択、Enter で transcript 表示、x で停止

パネルでフォーク行を選択して Enter を押すと、フォーク側の transcript ビューに切り替わり、フォーク内部の進捗が読めます。右上に @<フォーク名> バッジが出てフォーカスがフォーク側にあることを示し、下部のフォーク行には現在実行中のステップ(下の例では Reading v2.1.119.md changelog)がライブで流れます。

Enter で開いたフォーク内部のビュー。右上の @claude-code バッジでフォーカス先がわかり、下部にライブの実行ステップが流れる

フォークの作業が完了すると、結果がメイン会話にメッセージとして合流し、しばらくすると下部のパネル自体も消えます。フォークの結果を別ウィンドウへ読みに行く必要はなく、メイン会話の流れの中で完結する設計です。

完了したフォークの結果はメイン会話にメッセージとして合流し、パネルは一定時間後に自動で消える

なお、このパネルは /fork 専用 UI ではなく、CLAUDE_CODE_FORK_SUBAGENT=1 有効時にバックグラウンド実行されるすべてのサブエージェントが対象です。/fork を明示的に呼ばなくても、Claude が Agent ツール経由で名前付きサブエージェント(下の例では claude-code-guide)をバックグラウンド起動すると、同じパネルに main と並んで表示され、そこから進捗を追えます。

/fork を実行せず通常のプロンプトを送ったケースでも、バックグラウンド起動した claude-code-guide がパネルに並ぶ

有効化と起動方法

Forked subagents は 対話モード限定の機能で、環境変数 CLAUDE_CODE_FORK_SUBAGENT1 に設定すると有効化されます。

export CLAUDE_CODE_FORK_SUBAGENT=1
claude

有効化されると、Claude Code は次の3つの挙動変化を起こします。

  • 通常 general-purpose サブエージェントが使われる場面で、代わりにフォークが起動するようになる(Explore など名前付きサブエージェントは従来通り)
  • すべてのサブエージェント呼び出しがバックグラウンド実行になる(CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 で従来の同期実行に戻せる)
  • /fork コマンドが /branch の alias ではなく、フォーク起動の専用コマンドになる

ユーザー側からは /fork にディレクティブを渡してフォークを生成できます。フォーク名は最初の数語から自動命名されます。

/fork draft unit tests for the parser changes so far

実行すると、入力欄の下のパネルにメインセッションとフォークが並び、フォークはバックグラウンドで進みつつ、完了するとメイン会話にメッセージとして結果が戻ってきます。

名前付きサブエージェントとの違い

公式ドキュメントのサブエージェント解説では、フォークと従来の名前付きサブエージェントは次の点で対比されています。

Fork 名前付きサブエージェント
コンテキスト 会話履歴をすべて継承 プロンプトだけを渡したフレッシュな状態
システムプロンプト・ツール メインセッションと同じ サブエージェント定義ファイルから取得
モデル メインセッションと同じ サブエージェント定義の model フィールドから取得
権限 プロンプトはターミナルに表示される 起動前に事前承認、それ以降は自動拒否
プロンプトキャッシュ メインセッションと共有 別キャッシュ

このうち実務で効くのが プロンプトキャッシュの共有で、フォークは最初のリクエストでメインセッションのキャッシュ接頭辞を再利用するため、フレッシュなサブエージェントを立ち上げるより入力トークンコストを抑えられると公式ドキュメントは説明しています。「親と同じ前提を理解させるためにシステムプロンプトを膨らませる」必要のある作業ほど、フォークの方が安くなります。

なお、Claude が Agent ツール経由でフォークを起動するときは isolation: "worktree" を付けることで、フォークのファイル編集を別の git worktree に書き出して、メイン作業ツリーと分離できます。

起動中のフォークを操作するパネル

フォークが動いている間、プロンプト入力欄の下に常設パネルが表示され、メインセッションと各フォークが行として並びます。

キー 動作
/ 行を移動
Enter 選択したフォークの transcript を開いてフォローアップメッセージを送る
x 完了したフォークの dismiss、または実行中のフォークの停止
Esc プロンプト入力欄にフォーカスを戻す

注意点・制約

  • フォークは 対話モードでのみ動作します。-p(headless モード)や Agent SDK では無効化されます。
  • フォークから更にフォークを生成することはできません
  • フォークは権限プロンプトを事前承認しません。実行中に必要になった権限は、メインセッションのターミナルに表示されます。
  • 名前付きサブエージェントは従来通りの挙動なので、フォークモードを有効化してもプロジェクトの既存サブエージェント運用には影響しません。

注目アップデート2 Hooks の MCP tool 直接呼出

何が変わったのか

v2.1.118 で Hooks に type: "mcp_tool" が追加され、Hooks から 既に接続済みの MCP サーバーのツールを直接呼び出せるようになりました。これまで Hooks の選択肢は command(シェルコマンド)・http(HTTP POST)・prompt(LLM 評価)・agent(検証用サブエージェント起動)の 4 種類でしたが、ここに mcp_tool が加わって 5種類体制になりました。あわせて v2.1.119 では PostToolUsePostToolUseFailure の入力に duration_ms(ツール実行時間、許可プロンプトと PreToolUse hook の所要時間は除外)が追加され、ツール呼び出しのレイテンシ計測がフックから取れるようになりました。

5 種類の Hook タイプ

公式ドキュメントでは、Hooks の各タイプが次のように整理されています。

タイプ 動作
command シェルコマンドを実行。スクリプトはイベントの JSON 入力を stdin で受け取り、結果は exit code と stdout で返す
http イベントの JSON 入力を HTTP POST で送信。レスポンスボディで結果を返す
mcp_tool 接続済み MCP サーバーのツールを直接呼び出す。ツールのテキスト出力は command hook の stdout と同じ扱い
prompt Claude モデルに単発でプロンプトを送って yes/no 判定を返す(プロンプトベースのフック)
agent サブエージェントを起動し、Read・Grep・Glob などのツールで条件を検証してから判定を返す(実験的、変更の可能性あり)

mcp_tool の設定例

mcp_tool を使う最小構成は次のような JSON です。server で接続済みの MCP サーバー名を、tool でそのサーバー上のツール名を指定し、input でツール呼び出しの引数を渡します。引数には ${tool_input.file_path} のように、フックを発火させたツール呼び出しの入力フィールドを参照する変数も使えます。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "mcp_tool",
            "server": "my_server",
            "tool": "security_scan",
            "input": { "file_path": "${tool_input.file_path}" }
          }
        ]
      }
    ]
  }
}

これまでは「Edit や Write の前にセキュリティスキャンを走らせたい」と思ったとき、command hook でシェルスクリプトを書き、その中から MCP ツールを叩くという二段構えになりがちでした。mcp_tool タイプの登場で シェルを経由せずに MCP ツールを直接呼べるようになり、許可されたエンドポイントだけを安全に呼び出すフックを書きやすくなりました。

duration_ms で実行時間を取る

v2.1.119 では PostToolUsePostToolUseFailure の入力に duration_ms フィールドが追加されました。これは ツール本体の実行時間(ミリ秒単位)で、許可プロンプトの待機時間と PreToolUse hook の処理時間は含まれていません。

{
  "tool_name": "Edit",
  "tool_input": { "file_path": "src/index.ts" },
  "tool_use_id": "toolu_01ABC123...",
  "duration_ms": 12
}

PostToolUse のフックスクリプトを書いておけば、「特定のツールが N ミリ秒以上かかったときだけ通知する」といった監視を組めます。Agent SDK の TypeScript 型定義(PostToolUseHookInput / PostToolUseFailureHookInput)にも duration_ms?: number; が追加されているため、SDK 経由でフックを書く場合も型安全に扱えます。

全イベントが 5 タイプ対応というわけではない

mcp_tool を含む全 5 タイプを使えるイベントは、PreToolUse / PostToolUse / PostToolUseFailure / PostToolBatch / PermissionRequest / Stop / SubagentStop / TaskCreated / TaskCompleted の 9 種類です。SessionStart のようなライフサイクル系イベントは commandmcp_tool の 2 種類のみ対応となっており、イベントごとに使えるタイプが異なる点には注意が必要です。詳細は Hooks リファレンスを参照してください。

注目アップデート3 Vim visual mode とカスタムテーマ

何が変わったのか

v2.1.118 でターミナル UI の操作性と見た目に踏み込んだ強化が入りました。Vim の visual モード(v)と visual-line モード(Vが NORMAL モードに加わり、選択・operator・visual feedback に対応しました。あわせて /theme コマンドからカスタムテーマを作成・切替できるようになり、~/.claude/themes/ 以下の JSON を直接編集することでも管理できます。プラグイン側からも themes/ ディレクトリ経由でテーマを配布できるため、チームでテーマを統一する運用も組めるようになりました。

Vim visual mode の使い方

まず前提として、Claude Code の Vim モード自体を有効化しておく必要があります。/config を開き、Editor modevim に切り替えてください(~/.claude.jsoneditorMode"vim" に直接書いても同じです)。Vim モードを有効化していない状態で vV を押しても、ただの文字入力として扱われます。

/config → Config タブの Editor mode 行で Space で値を切り替え、Enter で保存。vim を選ぶと NORMAL/INSERT/VISUAL のモード遷移が有効になる

Vim モードが有効でも、入力欄は INSERT モードで開始します。Esc を押して NORMAL モードに遷移してから、v(文字単位の visual モード)または V(行単位の visual-line モード)を押すと、選択モードに入って hjkl で選択範囲を広げていけます。VISUAL モードに入ると、入力欄下のステータスライン左端に -- VISUAL -- インジケータが表示されるので、現在のモードがひと目でわかります。

VISUAL モードに入るとステータスライン左端に -- VISUAL -- が点灯する。NORMAL や INSERT のときはここの表示が変わる

選択したテキストに対しては Vim の operator(dcy)が利用でき、選択範囲がハイライトされる visual feedback も入っています。

キー 動作 開始モード
Esc INSERT モードを抜けて NORMAL モードへ INSERT
v 文字単位の visual モードに入る NORMAL
V 行単位の visual-line モードに入る NORMAL
d 選択範囲を削除 VISUAL / VISUAL LINE
c 選択範囲を変更(削除後 INSERT モードへ) VISUAL / VISUAL LINE
y 選択範囲をヤンク VISUAL / VISUAL LINE
Esc NORMAL モードに戻る VISUAL / VISUAL LINE

VISUAL モード(v)で hjkl を押すと、選択範囲が文字単位でハイライトされる。この状態で dcy を押すとそれぞれ削除・変更・ヤンクが効く

エディタ内のキューイング済みメッセージとの干渉も整理されており、INSERT モードで Esc を押したときにキュー内のメッセージが入力欄に戻ってこなくなりました。Esc をもう一度押すと従来通り中断扱いになります。

カスタムテーマの作成と切替

v2.1.118 で /theme メニューに 新しいカスタムテーマ…New custom theme…)が追加され、対話的にテーマ名と色トークンを指定して作成できるようになりました。プリセットテーマだけでは違和感がある場合や、社内のターミナル配色に合わせたい場合の選択肢になります。

/theme

/theme を実行するとプリセット 7 種類(Auto / Dark mode / Light mode / それぞれの colorblind-friendly / ANSI colors only)の下に New custom theme… エントリが並びます。下部にはシンタックスハイライトと diff のプレビューも表示されるので、選択中のテーマの見た目をその場で確認できます。

/theme のメニュー。プリセットの一番下に New custom theme… があり、ここから対話的にカスタムテーマの作成に入れる。下半分にはシンタックスハイライトと diff のプレビュー

New custom theme… を選ぶと、ベーステーマ(既存のプリセットいずれか)を継承した上で、カラートークンを個別に編集する画面に切り替わります。下の例では dark-daltonized をベースに ikeda-theme を作成中です。autoAcceptbackgroundbashBorder などトークン単位で ↑/↓ 移動 → Enter で値編集 → Tab でデフォルトへリセット → Esc で確定、という操作になります。

ikeda-theme · based on dark-daltonized のヘッダーが継承元プリセットを示す。各トークン(autoAcceptbackground 等)を個別に編集でき、選択中の色は current: rgb(102,178,255) のように表示される。確定すると ~/.claude/themes/ikeda-theme.json として保存される

ファイルベースで管理したい場合は ~/.claude/themes/ 以下に JSON を直接置くこともでき、/theme で一覧に出てくるようになります。プラグインの場合は themes/ ディレクトリにテーマ JSON を入れて配布する形で、プラグインのインストール時に追加テーマが取り込まれます。

注意点・制約

  • Vim visual mode は NORMAL モードからの遷移を前提としており、/configEditor mode で Vim モードを有効化していない場合は反応しません(旧バージョンにあった /vim コマンドは v2.1.92 で廃止済みです)。
  • カスタムテーマの JSON スキーマはまだ公式ドキュメントで詳述されていないため、現状は /theme の対話的な作成 UI 経由で雛形を作って、必要な部分を JSON で書き換える運用が現実的です。

今週のコマンド改名

/fewer-permission-prompts/less-permission-prompts の改名

先週の記事で取り上げた /less-permission-prompts スキルが、v2.1.114 で /fewer-permission-prompts に改名されました。機能内容は変わらず、transcript を解析して read-only な Bash・MCP ツール呼び出しの allowlist を .claude/settings.json に提案するものです。

スキル一覧で fewer-permission-prompts として表示されるようになった。説明文や挙動は旧 /less-permission-prompts と同じ

既存コマンドのアップデート

/usage /cost/stats の統合先

v2.1.118 で /cost/stats が削除され、それらを統合した /usage が標準コマンドになりました。/cost/stats はタイピング用のショートカットとして残され、それぞれが対応するタブを直接開く動作になっています。セッションコスト・プラン使用量・アクティビティ統計の 3 領域をタブで切り替える UI に整理された形です。

/usage を実行するとタブ切替式の UI が開き、旧 /cost/stats の内容が一画面に統合される。/cost/stats はそれぞれ該当タブに直接ジャンプするショートカットとして残存

/resume 大規模セッションでの大幅高速化

v2.1.116 で /resume の実装が見直され、40MB を超える巨大セッションファイルで最大 67% の高速化が報告されました。dead-fork エントリを多く含むセッションのハンドリングも効率化され、続く v2.1.117 では大規模セッションについて /resume 側から「先に要約してから読み込み直すか?」と提案する機能が追加されています(以前から --resume フラグでは利用できた挙動と一致)。長期セッションを抱える開発スタイルではかなり体感差が出る変更です。

/model プロジェクト pin 競合時の挙動改善と pin ソース表示

/model の選択自体は v2.1.117 より前から user settings(~/.claude/settings.json)に保存されて再起動後も保持されていました。ただしプロジェクトの .claude/settings.json が別モデルを pin している場合、再起動後はプロジェクト pin が優先されてユーザー選択が打ち消されてしまう問題がありました。

v2.1.117 では、プロジェクト pin と競合するときはユーザー選択を .claude/settings.local.json(gitignore 対象、ユーザーのみ)にも書き込むようになり、プロジェクト内でもユーザー選択が再起動後に継続適用されます。managed settings は引き続き最優先です。あわせて、起動時のヘッダーに「現在のモデルがプロジェクト pin か managed-settings pin から来ている」場合の表示が追加され、なぜそのモデルが選ばれているかが一目でわかる UI に変わりました。

/config 設定の保存先が ~/.claude/settings.json に移動

/config から変更する設定の永続化自体は以前から行われていましたが、v2.1.119 で 保存先が ~/.claude.json(アプリ状態用ファイル)から ~/.claude/settings.json に移動しました。対象は次の 5 つです。

  • autoScrollEnabled(fullscreen でのオートスクロール)
  • editorMode(プロンプト入力欄のキーバインド: normal / vim
  • showTurnDuration(ターン所要時間メッセージの表示)
  • teammateMode(agent team の表示モード)
  • terminalProgressBarEnabled(ターミナルプログレスバー)

settings.json 側に移動したことで、これらの値は プロジェクト(.claude/settings.json)・ローカル(.claude/settings.local.json)・managed settings の override precedence に参加します。たとえば組織として「terminalProgressBarEnabled: false を managed settings で配布する」「プロジェクト単位で editorMode: "vim" を強制する」といった運用が可能になりました。

v2.1.116 のターミナル UI 体感改善

コマンド単位の追加・更新ではないものの、毎日触る部分に効く小さな UX 改修が v2.1.116 でまとまって入っており、ユーザー調査でも「毎日使う人ほど刺さる実務系の人気枠」として言及される変更です。記事末尾に押し込んでしまわないよう、独立して取り上げます。

extended thinking のスピナーがインライン進捗表示に

これまで extended thinking 中の進捗は別の hint 行に表示されていましたが、v2.1.116 でこの hint 行が廃止され、extended thinking のスピナー右側に進捗テキストがインラインで段階的に変化して表示されるデフォルト挙動になりました。表示フォーマットは次のとおりです(* の後ろの単語は従来通りランダムなスピナー語、( ) 内が新設のインライン進捗)。

* <スピナー語>… (<経過秒数>s · <進捗hint> with <effort level> effort)

長考時間に応じて、カッコ内の <進捗hint> 部分が次の 5 段階で切り替わります(一般的なツール実行中などに表示されるランダム単語スピナーとは別物で、メインのスピナー語の方は従来通りランダムです)。

経過時間 進捗 hint
0〜15 秒 thinking
15 秒〜 still thinking
30 秒〜 thinking more
45 秒〜 thinking some more
60 秒〜 almost done thinking

実際に xhigh effort で長考タスクを投げた際の各段階の見え方は次のとおりです。

0〜15 秒の初期段階。カッコ内は (7s · thinking with xhigh effort)

15 秒経過で still thinking に切り替わる。カッコ内は (29s · still thinking with xhigh effort)

30 秒経過で thinking more に切り替わる。カッコ内は (39s · thinking more with xhigh effort)

45 秒経過で thinking some more に切り替わる。カッコ内は (51s · thinking some more with xhigh effort)

体感としては「今どのくらい考え込んでいるか」のフィードバックが入力欄から離れずに見えるため、extended thinking が長引いたときに割り込みを入れるか待つかの判断がしやすくなります。別行の hint と違ってスクロールで流れにくく、長時間タスクを Claude Code に任せる運用との相性が良い変更です。

/doctor を応答中にも開ける

これまで /doctor は Claude が応答している最中には実行できませんでしたが、v2.1.116 から 応答中のターンを待たずに開けるようになりました。MCP サーバーや hooks の挙動を疑ったときに、応答が終わるのを待たずに即座に診断画面に入れるため、不具合切り分けのテンポが上がります。

fullscreen モードでのスクロール改善

VS Code・Cursor・Windsurf の統合ターミナルで、fullscreen モードのスクロール感度が /terminal-setup から自動調整されるようになりました。これらのエディタで claude を fullscreen で動かしているとスクロールが不安定になる挙動が報告されていましたが、v2.1.116 で /terminal-setup を実行することで適切な感度に整います。

その他の変更点

変更点 バージョン 参照
Anthropic 公式が 品質低下に関する postmortem を公表。v2.1.116 以降で主因 3 件を解消した旨を明記 2026年4月23日公開 April 23 postmortem
--from-pr フラグが GitHub に加えて GitLab マージリクエスト URL・Bitbucket プルリクエスト URL・GitHub Enterprise PR URL を受け付けるよう拡張 v2.1.119 CLI Reference
prUrlTemplate 設定追加。フッターの PR バッジを GitHub.com 以外の任意のコードレビュー URL に向けられる。あわせて本文中の owner/repo#N ショートハンドも git remote のホストを自動検出するように変更 v2.1.119 Releases v2.1.119
Claude Code が $20 Pro プランから一時的に除外される A/B テストが実施。Anthropic は新規プロシューマー登録の約 2% を対象とした実験と説明 2026年4月21〜22日 The Register 報道
CLAUDE_CODE_HIDE_CWD 環境変数追加。起動ロゴで working directory を隠せるようになり、画面共有・録画時の OS ユーザー名露出を防げる v2.1.119 env-vars.md
DISABLE_UPDATES 環境変数追加。手動の claude update を含むすべての更新パスを完全ブロック(DISABLE_AUTOUPDATER より厳格) v2.1.118 Releases v2.1.118
WSL on Windows が Windows 側の管理設定を継承可能に(wslInheritsWindowsSettings ポリシーキー) v2.1.118 Releases v2.1.118
Auto mode の autoMode.allow / autoMode.soft_deny / autoMode.environment"$defaults" を含めて、ビルトインルールを置き換えずに追加できるパターンが解禁 v2.1.118 Releases v2.1.118
管理者向け設定ガイド admin-setup.md が公式ドキュメントに新規追加(137 行) docs 更新 admin-setup
設定デバッグガイド debug-your-config.md が公式ドキュメントに新規追加。/context /doctor /hooks /mcp を使った診断手順を網羅 v2.1.117 docs 更新 debug-your-config
MCP まわりの OAuth 関連バグ修正(OAuth トークン期限切れの再認証問題、step-up authorization、refresh の cross-process lock、macOS keychain race など多数) v2.1.118 Releases v2.1.118
Subagent と SDK MCP server の再接続が直列から 並列に変更。複数サーバー構成での起動が高速化 v2.1.119 Releases v2.1.119
OpenTelemetry: tool_resulttool_decision イベントに tool_use_idtool_resulttool_input_size_bytes を追加 v2.1.119 Releases v2.1.119
ステータスライン: stdin JSON に effort.levelthinking.enabled を追加 v2.1.119 Releases v2.1.119

まとめ

今週の Claude Code は、Forked subagentsHooks の mcp_tool タイプVim visual mode とカスタムテーマという、サブエージェント周辺・拡張点周辺・ターミナル UI の3箇所で同時に大きな改修が入った週でした。

Forked subagents は、サブエージェントから「分離」というメリットを意図的に外し、親会話のキャッシュを共有することで 「同じ前提を持ったまま並列で別のことを試す」手段としてサブエージェントを再定義するアプローチです。Hooks の mcp_tool タイプは、シェルを介さずフックから MCP サーバーのツールを直接呼べるようにする改修で、Forked subagents や長時間セッションから安全に共通サービスを叩ける土台になります。Vim visual mode とカスタムテーマは、毎日触る入力欄まわりに直接効く UI 改修で、見た目のインパクトが大きいため SNS でも一番話題に上がっていました。

機能追加と並行して、今週は品質まわりの動きも大きかった点は押さえておく価値があります。Anthropic 公式が 4 月 23 日に v2.1.116 以降で品質低下の主因 3 件を解消した旨の postmortem を公表しており、Reddit でも v2.1.117Glob/Grep 周りや context 表示、v2.1.118 の WSL での起動不可、v2.1.119 での再ログイン強制といった不具合報告が相次いでいました。v2.1.116 への即時アップデートが結果的に最も実務効果の大きい行動だった週、とも言える状況です。新機能の検証はもちろんですが、まずは手元の Claude Code を v2.1.116 以降に上げているかを確認しておくのが安全です。

池田 智耶(執筆記事の一覧)

ディベロップメントサービス2課

生成AI関連の記事を中心に執筆!