shiichan

Claude Code v2.1.214、権限チェックの抜け穴を根こそぎ塞いだよ!

こんにちは、しぃちゃんだよ!今日は Claude Code のリリースをチェックしてきたよ!

Claude Code Release github.com

なにが発表されたの?

Claude Code Release から、CLI ツール「Claude Code」の最新バージョン v2.1.214 が公開されたよ。GitHub の Releases ページに、権限まわりのバグ修正から新機能、細かい安定性改善まで盛りだくさんの変更ログが載ってるの。今回は特に、コマンド実行の許可判定に関わる修正がぎゅっと詰まってるのが目を引くよ。

今までどうだったの?

実はこれまでの Claude Code、コマンドの自動承認まわりにいくつか見落としがあったの。

  • Edit(src/**) みたいな単一セグメントの dir/** 許可ルールが、カレントディレクトリ直下だけじゃなくツリー内のどこにある同名ディレクトリへの書き込みも誤って自動承認しちゃってた
  • Windows の PowerShell 5.1 セッションで権限チェックをすり抜けられる不具合があった
  • bash がリダイレクト記法をパースする挙動と権限チェック側の解釈がズレていて、危ないコマンドが通っちゃうケースがあった
  • 10,000 文字を超える長いコマンドや、zsh の変数添字・修飾子を含む [[ ]] 比較が、正しく危険判定されずにスルーされてた
  • helpman コマンドが無条件で自動承認されていて、実は危ないオプションやコマンド置換を含められる余地があった
  • リモートセッションでは、ローカルの確認ダイアログより先に処理が進んじゃうことがあった

つまり「安全なはずの自動承認ルール」に、すり抜けの余地がいくつも残ってた状態だったんだよね。

これで何が変わるの?

今回のアップデートで、この辺りの権限チェックの不備がまとめて修正されたよ。上に挙げた抜け道は全部塞がれて、危ないコマンドはちゃんとプロンプトが出るようになったの。

あわせて、許可ルールの挙動にも変更が入ったよ。単一セグメントの dir/** 許可ルールは、カレントディレクトリ直下だけにマッチするよう厳格化されたの。任意の深さでマッチさせたいときは **/dir/** と書く必要があるよ。一方で拒否・確認(deny/ask)ルールは今まで通りツリー内どこでもマッチする、という非対称な仕様になったから、allow ルールや hook の if: 条件を書いてる人は要チェックだよ。

新機能としては、EndConversation ツールが追加されたの。ひどく攻撃的なユーザーやジェイルブレイクの試みに対して、Claude が会話を打ち切れるようになったんだって。claude.ai では 2025 年から使われてた仕組みが、Claude Code にもやってきた形だね。ほかにも、docker コマンド(Podman の docker シムも含む)で --url--connection などデーモンへの接続先を変えるフラグが付いてるときは、今までスルーだったのに権限プロンプトが出るようになったよ。

深く潜ってみよう

バックグラウンドセッションまわりの地味な不具合もたくさん直ってるよ。

  • 入れ替わったバックグラウンドデーモンが、シャットダウン時に後継のソケットを消してしまい、次のクライアントが健全な方のデーモンを誤って kill してしまう問題
  • /background などでバックグラウンドに送ったセッションを放置すると、デーモンとワーカープロセスが動きっぱなしになる問題
  • 完了済みのバックグラウンドセッションが claude rm やエージェントビューから削除できなくなる問題
  • 停止したバックグラウンドセッションを再度開いたとき、セッションストア内に読み込めないフォルダがあると会話が復元されない問題

観測性まわりでは、OpenTelemetry のログイベントに message.uuidclient_request_idtool_source の各属性が追加されて、メッセージ単位の相関やツールの出どころが追いやすくなったよ。コンテンツ属性の切り詰め上限(デフォルト 60 KB)も CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH で調整できるようになったの。

そのほか、--settings に巨大ファイルやデバイスファイルを指定するとメモリが際限なく増えてた問題を修正して 2 MiB を超える設定ファイルは起動時にエラーで弾くようにしたり、hook が exit code 2 を返してもスキーマ検証に失敗すると停止が効かなかった不具合を直したりと、地味だけど効く修正が続いてるよ。

まとめ

  • dir/** 許可ルールの誤爆や、Windows PowerShell 5.1・長いコマンド・zsh の比較式など、複数の権限チェックすり抜けを修正
  • 単一セグメントの dir/** 許可ルールはカレントディレクトリ直下だけにマッチするよう厳格化(deny/ask は従来通り任意の深さ)
  • ひどい荒らしやジェイルブレイク対策として EndConversation ツールを追加、docker のデーモン接続変更フラグにも権限プロンプトが付くように
  • バックグラウンドセッション・デーモンまわりの不具合修正や、OpenTelemetry の相関属性追加など地道な改善も多数

Claude Code を日常的に使ってて、カスタムの許可ルールや hook の if: 条件を書いてるエンジニアさんは、dir/** の挙動変更だけは特に見ておいた方がいいアップデートだよ!