期間: 2026-09-21 〜 2026-09-27 · PR 8 件(新機能 2 / 変更・修正 5 / その他 1)
新機能
telemetry: 行にエンジンのバージョン・ベースバージョン・ビルド時刻を記録(#96487)
何ができるようになったか
これまで mod はエンジンが自身のバージョンを公開する前に環境情報を集めていたため、外部ビルドから送られる行にはバージョンが入っていなかった。2.1.281 以降のすべてのビルドで
$.session.version()が{ version, base?, builtAt? }を返すようになったので、mod はそれを他の環境プローブと一緒に 1 回読み、行のversion・version_base・build_time列を埋めるようになった。
- 非対応のエンジン: この読み取りに答えないエンジンでは 3 列は空のままで、デバッグログに 1 回だけその旨を出す(行自体は送信される)
- 型定義:
mods/types/claude-code.d.tsにsession.versionの型を追加
📦 v2.1.283 に収録 · トピック: テレメトリ
telemetry: log / mark をフックとして実装し、$.telemetry を持つエンジンでも動くように(#96917)
何ができるようになったか
$.telemetry.logと$.telemetry.markの処理は、engine.createで mod が追加する noun のメソッドだったが、noun のイベントtelemetry.log/telemetry.markに対する 2 つのフックに移った。これにより、$.telemetryを自前で提供するエンジンでも同じ mod が動く(既にtelemetryがあればengine.createはそのまま渡し、無い場合だけ従来どおり noun を追加する)。
- 宛先の指定: ログのエントリに
toで宛先を指定できる。anthropic(既定)はこの mod が扱い、collector宛てのエントリは下へ渡される。toは行には含まれない- 型定義:
types/index.d.tsにTelemetryDestinationと省略可能なtoを追加- 変わらない点: 行の内容・バッチ送信・ゲート・送信内容は変更なし。ルールに反するエントリは理由付きで
{ deny }され、呼び出し側の promise は従来どおり$.telemetry.log: <reason>で終わるメッセージで reject される
📦 v2.1.283 に収録 · トピック: テレメトリ
変更・修正
diff: command.run フックのコマンド名をリテラルで書き、起動直後のコマンドが待たされないように(#96570)
Before
mod の
command.runフックは定数({ command: Names.COMMAND_NAME })でコマンドを指定していた。エンジンのフックモジュールの走査はリテラルのコマンド名しか読めないため「どのコマンドもフックしうる」と扱われ、diff mod の読み込み中は起動直後に入力された/help・/exitなどが待たされていた。
After
マッチャーを
{ command: 'diff' }とリテラルで書くようにした(挙動は同じ)。claude plugin validate mods/diffはcommand.run{command=diff}と報告する。PR の検証では、起動に 3 秒かかる mod の読み込み中に打った/helpが 8.2 秒から 4.5〜4.9 秒で開くようになった。
📦 v2.1.283 · トピック: Diff パネル
diff: 読み取り専用のシェルコマンドの後は diff を再取得しないように(#95423)
Before
パネルを開いている間、diff mod は Bash / PowerShell ツールの呼び出しのたびに diff を再取得していた。
After
ビルトインのパネルと同様、シェルツールの
tool.callの結果にisReadOnlyが付いているとき(ls、git status、cat、grep など)は再取得を省く。エンジンがisReadOnlyを設定しない場合の挙動は従来どおり。
📦 v2.1.283 · トピック: Diff パネル
diff: --no-color を付け、git の色設定を強制していても diff 本文が空にならないように(#96363)
Before
git の設定で
color.ui=alwaysやcolor.diff=alwaysにしていると、mod が実行するgit diffの出力に ANSI エスケープが入り、hunk ヘッダーに一致する行が無くなって、各ファイルの下にNo diff contentと表示されていた(ヘッダーとファイルごとの件数は正しいまま)。
After
共有の diff 引数(
DIFF_LEADING_ARGS)に--no-colorを加え、mod が起動するすべてのgit diff(統計・numstat・ファイルの hunk)が設定に関係なくプレーンテキストを返すようにした。
📦 v2.1.283 · トピック: Diff パネル
agents-md: 自動でページ分割された Read は、ネストした AGENTS.md を「渡し済み」と数えないように(#96364)
Before
offset/limitなしでネストしたAGENTS.mdをReadすると渡し済みと扱われていた。しかし Read ツールのトークン上限を超えるファイルはツールが自動でページ分割するため、モデルには最初のページしか届かず、残りの指示はモデルが自分でページをめくらない限り届かなかった。
After
Readへのtool.callフックが結果を確認し、truncatedByTokenCapが付いている・1 行目から始まっていない・ファイルの行数より少ない、のいずれかなら部分的な読み取り(明示のoffset/limitと同じ扱い)とし、そのディレクトリ配下の次のReadでファイル全体を添付する。完全な読み取りや構造化レコードの無い結果は従来どおり。
📦 v2.1.283 · トピック: AGENTS.md 対応
diff: ui.focus フックが、エンジンが要素に付けるどちらのプラグイン名にも反応するように(#96953)
Before
ui.focusフックは自分の描いた要素を 1 つの名前('diff')でマッチしていた。この mod を同梱するビルドではcc-plugin-diffとして登録されるため、そこではフックが自分の要素を見失い、インラインのファイル一覧がフォーカスリングに追従しなくなるおそれがあった。
After
マッチャーを
PLUGIN_NAMES = ['diff', 'cc-plugin-diff']の配列(いずれかに一致)にした。フォルダから読み込む場合(--plugin-dir、claude plugin test)は従来どおりdiffとして動く。
📦 v2.1.283 · トピック: Diff パネル
その他
- telemetry, agents-md: テスト用プラグインが collector ストリームを名前でフック・呼び出しし、telemetry をイベント経由で代替するように(#96930)📦 v2.1.283