Claude Codeの公式Changelogをリリースから最速で翻訳・解説しています。
v2.1.294 で、指示文で書いた prompt / agent hook が止めるべき操作を通していた不具合が直りました。判定文を命令形で書いた hook をガード役にしている設定では、v2.1.293 までと v2.1.294 以降でブロックされる操作が変わります。前後の版でも権限判定のすり抜けが塞がり、v2.1.295 には失敗した hook を拒否扱いにする onFailure: "block" が入りました。
今週拾うもの
| 変更 | 中身 | 版 |
|---|---|---|
| Claude Haiku 5.5 |
claude-haiku-5-5 が Anthropic API の既定 Haiku に。1M context、0.10 / 0.50 USD per Mtok (100K 超のプロンプトは 0.50 / 2.50 USD) |
v2.1.293 |
| prompt / agent hook の素通り修正 | 指示文で書いた hook が、ブロックすべき操作を通していた | v2.1.294 |
onFailure: "block" |
起動できない・タイムアウトした hook が操作を止める側に回る | v2.1.295 |
| Bash 権限判定の厳格化 |
rg や pyright、BASH_ARGV0 を使うコマンドで確認が出る |
v2.1.290 / v2.1.296 |
| 非 UTF-8 ファイルの Edit 拒否 | Shift-JIS などのファイルで非 ASCII 文字を丸ごと置き換えていた | v2.1.296 |
| Sonnet 5.5 の cache read 単価 |
/cost や --max-budget-usd の計算が 0.20 から 0.10 USD per Mtok に |
v2.1.296 |
Agent ツールの effort
|
Claude がサブエージェントを指定の effort で動かす | v2.1.292 |
| WebSearch の回数上限 | 200 回で打ち止めだったのが、1 時間あたり 100 回ずつ回復する方式に | v2.1.290 |
指示文で書いた prompt hook が操作を通していた
prompt hook は、hook の入力をモデルに渡して可否を判定させる種類の hook です。判定の基準は、設定に書いた文章そのもの。その文章を「Block commands that...」(〜するコマンドはブロックする) のような命令形で書くと、ブロックすべき呼び出しが通っていました。
Fixed
promptandagenthooks written as instructions (such as "Block commands that...") allowing what they should block
v2.1.294 の changelog に載っているのは、この修正ともう 1 行の改善だけでした。もう 1 行は Stop / SubagentStop に置いた prompt hook の判定改善です。「Carry on if the build is broken」(ビルドが壊れているなら続ける) のような指示文で書いた hook で、Claude が早めに止まるケースが減りました。
影響を受けるのは、ツール呼び出しを止める目的で prompt / agent hook を置き、判定文を命令形で書いている設定です。v2.1.293 までは、その hook はブロックのつもりで書いた操作を通していました。
prompt / agent hook まわりの修正は v2.1.295 と v2.1.296 にも続きます。
-
agenthook の判定がxhigh/maxeffort で大幅に遅くなっていた (v2.1.295) - managed settings の
prompthook がブロックしても、呼び出しを拒否するだけでターンは続いていた (v2.1.296)
onFailure: "block" で落ちた hook も止める側へ
hook が起動できない、タイムアウトする、想定外の終了コードで終わる。v2.1.295 より前は、hook 自体がこうして失敗すると、対象の操作はそのまま通っていました。command hook と HTTP hook に onFailure: "block" を指定すると、同じ状況で操作がブロックされます (v2.1.295)。
changelog が書いているのは "block" を指定した場合の挙動だけで、既定の変更には触れていません。v2.1.296 からは --debug の出力に hook の所要時間も出ます。対象はツール呼び出し・プロンプト・SessionStart・Stop の command hook で、終了時にコマンド、プラグイン、結果と並んで記録されます。
権限ルールを迂回していた経路
hook や auto mode を経由したときに、権限の判定が抜け落ちていた経路も版をまたいで塞がりました。
- PreToolUse hook がツール入力を書き換えた後の呼び出しに、一部の権限ルールと安全チェックが適用されていなかった (v2.1.290)
- ネットワーク (UNC) パスからのファイル読み取りで、PreToolUse hook の承認と auto mode が権限プロンプトを飛ばしていた。7 版の中で
Security:が付いた項目はこれだけ (v2.1.292) - managed settings の PreToolUse hook が
"continue": falseで呼び出しを拒否しても、ターンは終わらずに続いていた (v2.1.296)
Bash で確認が増えるコマンド、減るコマンド
Bash の権限判定は、v2.1.290 から v2.1.296 にかけて確認が増える方向と減る方向の両方に動きました。
| 対象 | 変化 | 版 |
|---|---|---|
引数がシェルのワイルドカード展開を受ける rg / git grep などの読み取りコマンド |
自動承認 → 確認が出る | v2.1.290 |
| zsh と bash で変数名の読み方が異なるコマンド | 自動承認 → 確認が出る | v2.1.290 |
pyright |
読み取り専用扱いを外れ、確認が出る | v2.1.290 |
ps の一部の書き方 |
確認なし → 確認が出る | v2.1.290 |
BASH_ARGV0 に代入してから使うコマンド |
自動承認 → 確認が出る | v2.1.296 |
sandbox 内で heredoc を別コマンドに渡す形 (cat <<EOF を python3 へパイプ) |
毎回確認 → 確認なし | v2.1.290 |
strict sandbox mode での FOO=bar python3 app.py のような環境変数付き実行 |
確認なしで実行 | v2.1.292 |
| Windows の PowerShell で約 1 KB を超えるコマンド | 常に確認 → 32 KB まで allow ルールと読み取り専用判定が効く | v2.1.296 |
Shift-JIS のファイルは Edit が書き換えずに断る
v2.1.295 までの Edit と NotebookEdit は、UTF-8 でないファイル (Windows-1252、Shift-JIS、GBK) の非 ASCII 文字をすべて置き換えていました。Shift-JIS のソースなら、Edit 1 回で触っていない行の日本語コメントまで別の文字になっていました。v2.1.296 の Edit は、こうしたファイルへの編集を拒否します。
7 版を通して見ると
hook の変更は、止めるはずの操作が止まらない経路に集中していました。判定の読み違い (v2.1.294)、hook 自体の失敗 (v2.1.295)、拒否後もターンが続く managed hook (v2.1.296) の 3 系統です。並行して、v2.1.291 は v2.1.290 と v2.1.288 の回帰を直しただけの版で、v2.1.293 は v2.1.290 で入った cloud session の修正を差し戻しています。
前回: Claude Code v2.1.284〜v2.1.289|auto mode が全プラン・全プロバイダで既定に|週刊Changelog解説