Claude Codeの公式Changelogをリリースから最速で翻訳・解説しています。
zsh の [[ ]] 正規表現条件にコマンドを隠すと、Bash ツールの権限チェックを通り抜けて実行できていました。v2.1.221 でこの穴が塞がり、該当するコマンドは許可プロンプトを出すようになります。allow ルールを細かく書いて自動実行させている環境ほど、通る / 通らないの境界が動きます。
今回の注目ポイント
-
zsh の隠しコマンドが Bash ツールの権限チェックを抜けていた -
[[ ]]の正規表現条件に仕込んだコマンドが、確認なしで実行されていた (v2.1.221) -
print モードで MCP サーバーが初回ターンに間に合っていなかった -
--mcp-configで渡したツールの呼び出しが、そのまま文字列として出力されていた (v2.1.221) - サンドボックスの認証情報ファイルにマスクモードが追加 - Linux / WSL でダミー値を読ませ、外向き通信でプロキシが実値に差し替える (v2.1.221)
-
VSCode に Focus view が追加 - ツール実行ログをターン単位の折りたたみサマリに畳む。
Ctrl+Alt+Fで切り替え (v2.1.221) - バックグラウンドセッションが commit と push をするようになった - draft PR はタスクが要求するときだけ作り、最後に成果物の置き場を報告 (v2.1.221)
- auto モードの権限チェックがキャッシュ済みプレフィックスを再利用 - 並列ツール呼び出しのプロンプトキャッシュ費用が下がる (v2.1.221)
zsh の [[ ]] に隠したコマンドが実行できていた
[[ ]] は zsh の条件式構文で、=~ の右辺に正規表現を書けます。ここにコマンドを紛れ込ませると、Bash ツールの権限チェックが素通りし、allow にも deny にも引っかからないまま処理が走っていました。ユーザーの承認を挟まずに実行できてしまう形です。
Fixed a Bash tool permission-check bypass where zsh could execute hidden commands in
[[ ]]regex conditionals; affected commands now prompt for permission
塞ぎ方は「例外扱いをやめて承認側に倒す」。抜けていたコマンドは v2.1.221 から許可プロンプトの対象になります。
allow ルールで Bash を自動実行させている環境が対象。これまで確認なしで通っていたパターンが、承認待ちに変わります。無人でパイプラインを回しているなら、途中で止まる箇所が出ないか確認しておいてください。
同じリリースで Windows 側の権限チェックも直っています。PowerShell に引用符を含むパスを渡すと解釈がずれていた問題で、こちらも承認を求める挙動に統一されました。
claude -p で MCP のツール呼び出しが文字列として出ていた
claude -p "差分をレビューして" --mcp-config <config>
この形で渡した MCP サーバーが、初回ターンの開始前に接続されていませんでした。ツールが見えない状態のままモデルが走るため、ツール呼び出しがただのテキストとして出力される。print モードの出力はそのまま後段のスクリプトへ渡るので、ツール実行を前提にしている側から壊れます。
v2.1.221 では初回ターンの前に接続を待つようになりました。CI から -p で叩いて MCP ツールが呼ばれていなかったなら、まずここを疑うところです。
認証情報ファイルをダミーに差し替える mask モード
サンドボックスの認証情報ファイルに mode: "mask" が入りました。サンドボックス内のコマンドには sentinel コピーを読ませ、外向きの通信でサンドボックスプロキシが実値に置換します。マスク範囲はファイル全体か、extract の正規表現で捉えたスパンだけかを選べます。
対応は Linux と WSL のみ。macOS ではファイルマスクが deny にフォールバックするため、トークンの平文を読ませずにコマンドを走らせる用途は当面 Linux / WSL 限定です。
その他の変更
| バージョン | カテゴリ | 変更点 | 概要 |
|---|---|---|---|
| v2.1.221 | 新機能 | VSCode Focus view | ツール実行をターン単位の折りたたみサマリに隠し、実行中ツールをインジケータで表示。Ctrl+Alt+F またはコマンドパレットから切り替え |
| v2.1.221 | 新機能 |
claude-api skill |
旧モデル向けの書き方が残っていないかプロンプトとツール説明を監査する prompt-audit サブコマンドを追加 |
| v2.1.221 | 変更 | バックグラウンドセッション | commit と push で作業を保全し、draft PR はタスクが要求するときだけ作成。CLAUDE.md の git 指示に従い、最後に成果物の置き場を報告 |
| v2.1.221 | 変更 | /fork |
フォークしたセッションが元のチェックアウトを共有せず、自前の worktree を作る |
| v2.1.221 | 変更 | /status |
セッション種別を表示。interactive か、バックグラウンドジョブの attached / unattended
|
| v2.1.221 | 変更 | /plugin install |
カタログが古い場合は再取得してリトライしてから「見つからない」と報告。インストール直後も安全なら即時有効化され、/reload-plugins が要らなくなった |
| v2.1.221 | 改善 | auto モード | 並列ツール呼び出しの権限チェックがキャッシュ効率化。判定をまたいで会話プレフィックスを再利用しコストを削減 |
| v2.1.221 | 改善 | Stats パネル | トークン合計にキャッシュ分を算入し、input / output / cache read / cache write の内訳を表示 |
| v2.1.221 | 改善 | Windows 起動 | プロセス生成時刻を PowerShell 起動ではなく kernel32 のネイティブ呼び出しで取得。powershell.exe を制限するセキュリティ製品のプロンプトが出なくなった |
| v2.1.221 | 改善 | Vertex AI | Claude 4.5 世代以降のモデルでツール検索を再有効化 |
| v2.1.221 | 修正 | WebSearch | thinking 無効かつ effort xhigh / max で 400 エラーになっていた |
| v2.1.221 | 修正 | @メンション | Esc でプロンプトを取り下げて再送信すると、添えたファイルが黙って落ちていた |
| v2.1.221 | 修正 | thinking トグル | thinking off で開始したセッションで、以降トグルが効かなくなっていた |
| v2.1.221 | 修正 | CLAUDE_CODE_RESUME_INTERRUPTED_TURN=0 |
中断ターンの自動再開を無効化できていなかった。falsy 値が尊重されるようになった |
| v2.1.221 | 修正 | Vim モード | yank レジスタがダイアログ・履歴検索・トランスクリプト表示をまたいでも消えなくなった |
まとめ
v2.1.221 の中心は権限チェックの穴を閉じたこと。zsh の [[ ]] と、Windows の引用符入りパスの 2 系統です。どちらも通っていたものが承認待ちに変わる方向なので、自動実行に寄せている環境ほど挙動が動きます。認証情報のマスクモードとバックグラウンドセッションの commit / push も、無人実行の安全側に倒した変更でした。