跳至主要內容

Claude Code v2.1.251:模型切換 hook、/cost 提示快取統計與權限強化

Claude Code v2.1.251 新增 PreModelSwitch 與 PostModelSwitch hook、/cost 的提示快取統計與 /usage 的支出上限列,並修補多項符號連結、沙箱與設定相關的權限漏洞。

Claude Code v2.1.251 是一次大型更新,變更日誌共有 71 個項目。此版本新增了在模型切換前後觸發的 hook 事件、提示快取與支出上限的用量資訊,以及將前景子代理的活動即時串流到 Remote Control 用戶端的功能。其餘許多變更著重於收緊權限,涵蓋符號連結路徑、外掛指令路徑、沙箱輸出檔案,以及現在必須先經核准才會生效的設定。

新功能

模型切換 hook

新增的 PreModelSwitch 與 PostModelSwitch hook 事件,可讓 hook 阻擋、確認或註記一次模型切換。此外,在恢復工作階段時執行的 SessionStart hook,現在會收到工作階段的陳舊程度(staleness)與預估的重新快取成本。

提示快取與支出上限資訊

/cost 現在會顯示每個工作階段的提示快取資訊,包括命中率、未命中數、重新快取的 token 數,以及快取處於暖或冷的狀態;狀態列腳本也會取得對應的 prompt_cache 物件。對於透過設有支出上限的 Claude apps 閘道使用的開發者,/usage 新增了 Spend limit 進度列,狀態列也新增 rate_limits.spend_limit 欄位。

Remote Control 即時顯示子代理活動

Remote Control 用戶端現在可以即時收到前景子代理的工具呼叫與結果串流。背景子代理(預設的執行方式)仍然只顯示狀態。

說明中列出背景工作階段指令

claude --help 現在會列出 attach、logs、stop、respawn 與 rm。對仍在執行中的背景工作階段使用 --resume 時,提示訊息現在會寫出確切的 claude attach <id> 指令。

模型與 effort 預設值

  • CLAUDE_CODE_SUBAGENT_MODEL 現在設定的是子代理的預設模型,而不再覆寫一切:代理定義中的 model:,以及每次產生子代理時明確指定的模型,優先順序都高於它。
  • /effort 現在會依模型分別儲存預設的 effort 等級,切換模型時各自保留設定。
  • 以席位計費的 Enterprise 訂閱,預設模型改為 Opus 5,與其他進階方案一致。
  • 當目前使用的模型不是可辨識的 Claude 模型時(例如透過自訂 ANTHROPIC_BASE_URL 使用的第三方模型),預設的 commit trailer 改為 Co-Authored-By: Claude Code。

需要核准才會生效的設定

  • 由伺服器管理的設定若會終止沙箱 TLS、將沙箱流量導向您自己的代理伺服器、注入憑證或削弱沙箱隔離,現在必須先經核准才會生效。
  • 來自受管設定或專案設定的 ANTHROPIC_CUSTOM_HEADERS,若設定的是憑證、組織/租戶、路由或 API 行為相關的標頭(例如 Authorization 或 Host),現在需要核准。
  • 專案層級 .claude/settings.json 中的 env 不再設定 CLAUDE_CONFIG_DIR、CLAUDE_CODE_TMPDIR 或 TMPDIR/TMP/TEMP,請改在 shell、使用者設定或受管設定中設定。
  • 受管設定的核准對話框現在只會列出自上次核准以來有變更的設定。

Claude in Chrome 改用 Claude Code 權限檢查

Claude in Chrome 的瀏覽器操作現在一律經過 Claude Code 的權限檢查,包括停用遙測的工作階段;這類工作階段先前使用的是 Chrome 擴充功能本身的提示。

原生執行檔變小

原生執行檔縮小約 5 MB。另外,此版本移除了六種較少使用語言(1c、gml、isbl、mathematica、maxima、sqf)的語法醒目提示,依變更日誌所述,這讓執行檔縮小 2.5 MB。

修正與改進

權限與安全性

  • 檔案工具(Read、Write、Edit)不再跟隨在權限檢查之後於工作目錄中被替換的符號連結;先前這可能導致在核准範圍以外讀取或寫入檔案。
  • Grep 與 Glob 現在會對透過符號連結搜尋路徑存取到的檔案套用 Read(...) 拒絕規則。
  • 市集項目中宣告的外掛指令不再能指向外掛目錄以外的位置,這類路徑會以路徑穿越(path-traversal)錯誤拒絕。
  • 將算術運算式指派給整數 shell 變數的 Bash 指令(例如 OPTIND=1/0、RANDOM=2+2)不再被自動核准,現在會要求核准。
  • 專案設定不再能啟用詳細的 beta 追蹤或原始 API 本文記錄;較低範圍的 beta 追蹤端點也不再能繞過由受管設定或主機應用程式指定的 OTLP 收集器。
  • 指令在沙箱中執行時,Bash 輸出檔案的建立與讀回方式已調整,沙箱中的指令無法重新導向或替換這些檔案。

對話與模式

  • 模型在某一輪只產生思考內容後,對話不再卡在「text content blocks must be non-empty」錯誤。
  • 當 effort 為 xhigh/max 且關閉思考時,Opus 5 請求不再失敗;此時 effort 會以 high 送出。
  • 工作階段中途收到受管設定的 disableAutoMode 時,已在 auto mode 下執行的工作階段現在會切回預設模式。
  • 變更目錄讓工作階段被移到已存在、ID 相同的對話記錄上時,對話記錄不再被悄悄覆寫。

背景工作階段與子代理

  • 背景工作階段及其子代理現在可以編輯它們以 git worktree add 建立的 git worktree 中的檔案。
  • 轉到背景的工作階段(←、/background、--bg)不再遺失在 shell 中匯出的 Vertex/Bedrock 閘道設定(ANTHROPIC_*_BASE_URL + CLAUDE_CODE_SKIP_*_AUTH),先前這會讓所有請求失敗。
  • 大量平行子代理不再造成 TUI 延遲:每秒的進度更新現在會取代前一則,而不是在對話記錄中不斷累積。
  • 在代理團隊中,隊友的最終答案現在會透過閒置通知送達團隊負責人,而不是只收到沒有內容的「available」通知。

SDK、MCP 與雲端工作階段

  • SDK MCP 伺服器的交握確認遺失時,SDK 與雲端工作階段不再無限期卡住;等待會在 70 秒後逾時,且只將該伺服器標記為失敗。
  • 使用 --input-format stream-json 時,用戶端注入且未附訊息 id 的助理工具呼叫,不再被合併到第一個呼叫而遺失結果,恢復較舊的工作階段時也是如此。

效能與供應商

  • 減少多餘的 UI 重新繪製,降低互動式工作階段中每輪執行時的 CPU 使用量。
  • 模型的工具呼叫格式錯誤時,重試的上下文現在會捨棄錯誤的輸出,在 Bedrock、Vertex 與 Foundry 上也是如此。
  • /radio 現在可在 Bedrock、Vertex AI、Foundry 與 Claude Platform on AWS 上使用,停用遙測時也可使用。

VS Code

  • Remote Control 橫幅改為頁尾的膠囊標籤,在 Remote Control 開啟或失敗時顯示,可在 claude.ai/code 開啟該工作階段;使用 /remote-control 開啟或關閉。

v2.1.251 共包含 71 項變更,完整清單請參閱完整變更日誌。

如何更新

  1. 檢查已安裝的版本:claude --version
  2. 就地更新:claude update
  3. 如果專案的 .claude/settings.json 在 env 中設定了 CLAUDE_CONFIG_DIR、CLAUDE_CODE_TMPDIR 或 TMPDIR/TMP/TEMP,請將它們移到 shell、使用者設定或受管設定中,因為專案層級的 env 已不再設定這些變數。若您使用 CLAUDE_CODE_SUBAGENT_MODEL,請注意代理定義中的 model: 與每次產生時明確指定的模型,現在優先於它。

相關連結