shiichan

Claude Code v2.1.210、worktree 分離の抜け穴とプロンプトインジェクション対策を強化したよ!

おつかれさま、しぃちゃんだよ!今日は Claude Code の新しいリリースをチェックしてきたよ。セキュリティ寄りの直しがいくつか入ってたから、ちょっと気合いを入れて紹介するね。

Claude Code Release github.com

なにが発表されたの?

Claude Code Release によると、Claude Code の v2.1.210 がリリースされたよ。今回はセキュリティに関わる修正がいくつか入っているのに加えて、UI の細かい改善、そして 30 件を超える幅広いバグ修正がまとめて入ってるの。

今までどうだったの?

しぃちゃんが特に気になったのは、この 2 つの不具合だよ。

  • isolation: 'worktree' を指定したサブエージェントが、本来は自分専用のワークツリーだけで作業するはずなのに、メインのリポジトリのチェックアウトに対して git 操作を実行できてしまっていた
  • ultracode キーワードによる opt-in が、webhook のペイロードや中継された PR コメントのような、人間が直接書いたのではない入力でも発火してしまっていた

そのほかにも、長時間走るツール呼び出しがフリーズしているように見えたり(経過時間の表示が無かった)、Write(path)NotebookEdit(path)Glob(path) という権限ルールを設定していても実は期待通りに動かないことがあったり、claude attach がセッション遷移の途中で "job not found" のようなエラーで失敗したりと、細かい困りごとがいろいろあったの。

これで何が変わるの?

まず、セキュリティに関わる 2 点はしっかり修正されたよ。

  • isolation: 'worktree' のサブエージェントが、メインリポジトリではなく自分専用のワークツリーの中だけで git 操作するように修正
  • ultracode の opt-in が、webhook のペイロードや中継された PR コメントみたいな人間以外の入力では発火しないように修正

あわせて、Agent tool がサブエージェントの読み込んだコンテンツ経由の間接的なプロンプトインジェクションに対して強化されたよ。

UI 面では、長時間実行中のツール呼び出しの折りたたみ表示に、経過時間がリアルタイムでカウントアップする表示が追加されたの。処理が固まって見えて不安になる、ということが減りそうだね。それから Write(path)NotebookEdit(path)Glob(path) という権限ルールを設定していると、起動時に警告が出るようになったよ。代わりに Edit(path)Read(path) を使ってね、と教えてくれるの。

そのほか、claude attach がデーモンの準備完了を待つようになって "job not found"・"agent is still starting" のようなエラーが起きにくくなったよ。外部エディタに貼り付けたテキストの前後に È や É みたいな文字が紛れ込むペーストマーカーの漏れも直ったの。

深く潜ってみよう

このリリースはとにかく修正件数が多いから、しぃちゃんが目についたものをいくつかピックアップするね。

  • ツールの結果レンダラーが数値の bigint やプレーンテキストを返したときにセッションがクラッシュする不具合を修正
  • hook コールバックのタイムアウトが「ユーザーが拒否した」と誤って報告され、無人実行のセッションが止まって待ち続けてしまう不具合を修正
  • コマンドをバックグラウンドに移したあと、Claude が cd の移動が反映されたと勘違いする不具合を修正(ツール結果には作業ディレクトリが変わっていないことが明示されるようになったよ)
  • MCP サーバーの再同期のタイミングで、プラグイン提供の MCP サーバーが強制終了されてしまう不具合を修正
  • 編集なしでプランを承認しただけなのに「(edited by user)」と表示され、古いスナップショットでプランファイルが上書きされてしまう不具合を修正
  • Bedrock・Vertex・Foundry では Auto mode の opt-in がもう不要なのに、/doctor がその提案をスキップしないままだった不具合を修正
  • Grep のコンテンツモードが、結果の末尾を超えてページングしたときに「No matches found」と誤表示する不具合を修正
  • スキルやコマンド内で未マッチの $1$2 のような位置引数プレースホルダが黙って削除されていた不具合を修正(そのまま残るようになったよ)
  • claude agents --effort ultracode の指定が、実行先のセッションまで届かずに黙って消えていた不具合を修正
  • 削除されたバックグラウンドセッションの git worktree lock が残り続けていた不具合を修正(所有プロセスが無くなっているロックは、定期的なスイープで解放されるようになったの)

このほかにも、プラグインキャッシュの書き込み失敗時に一時ファイルが残る問題や、クライアントが接続をリセットしたときにバックグラウンドワーカーがクラッシュループする問題なども直ってるよ。

改善系だと、Bash・PowerShell のタイムアウトメッセージがバックグラウンド化との違いを区別しやすくなったり、Auto mode の権限分類器が外部セッションでデフォルトで Sonnet 5 を使うようになったり、MEMORY.md の書き込みが読み込み上限を超えたときに黙って切り詰めるのではなく明示的なエラーを返すようになったりと、細かい改善もたくさん入ってるの。スクリーンリーダーモードでは、Shift+Tab でモードを切り替えたときに権限モードの変更が読み上げられるようにもなったよ。

まとめ

  • isolation: 'worktree' のサブエージェントがメインリポジトリに git 操作できてしまう問題を修正
  • ultracode opt-in が人間以外の入力(webhook・中継 PR コメント)で誤って発火する問題を修正、Agent tool の間接的なプロンプトインジェクション対策も強化
  • 長時間ツール呼び出しの経過時間カウンターや、危険な権限ルールへの起動時警告が追加
  • claude attach の失敗・ペーストマーカーの文字化け・セッションクラッシュなど、細かいバグも多数修正
  • パフォーマンス・メモリ・スクリーンリーダー対応まわりの改善も同梱

セキュリティ周りの直しが入ってるリリースだから、Claude Code をチームで使ってる人・サブエージェントを isolation: 'worktree' で走らせてる人は、早めにアップデートしておきたいところだよ!