跳至主要內容

Claude Code v2.1.214:權限檢查修正、EndConversation 工具,以及範圍更窄的 dir/** 規則比對

Claude Code v2.1.214 收緊 Bash 與 PowerShell 的權限檢查,讓單一層級的 dir/** 規則只比對 <cwd>/dir,新增 EndConversation 工具,並修正多項 Windows 與背景工作階段問題。

Claude Code v2.1.214 是一個大型版本,變更日誌共有 47 個項目,其中許多與權限檢查有關。單一層級的 dir/** 規則現在只比對 <cwd>/dir,數個 Bash 與 PowerShell 的權限漏洞已修補,部分 docker 與 file 指令也新增了權限提示。此版本另新增 EndConversation 工具、長時間工具呼叫的進度心跳與新的 OpenTelemetry 屬性,並修正 Windows、背景工作階段與外掛方面的問題。

新功能

單一層級的 dir/** 規則只比對 <cwd>/dir

像 Edit(src/**) 這類單一層級的 dir/** 允許規則,不再自動核准對樹狀結構中任何位置的巢狀 dir/ 目錄寫入,現在只涵蓋 <cwd>/dir。單一層級的 dir/** hook if: 條件現在同樣只比對 <cwd>/dir;若要比對任意深度,請改寫為 **/dir/**。deny/ask 權限規則則維持任意深度的比對。

EndConversation 工具

新的 EndConversation 工具讓 Claude 能結束與高度辱罵的使用者或越獄(jailbreak)嘗試的工作階段,與 claude.ai 自 2025 年起的做法相同。背景說明請參閱 anthropic.com/research/end-subset-conversations。

docker 與 file 指令的新權限提示

帶有常駐程式重新導向旗標(--url、--connection、--identity 以及 Podman 的遠端模式)的 docker 指令(包括 Podman 的 docker shim),現在會要求權限;先前這些指令會在沒有提示的情況下執行。使用 -m/--magic-file 或 -f/--files-from 的 file 指令,也不再被視為唯讀而自動允許,改為需要權限。

長時間工具呼叫的進度心跳

先前執行時毫無動靜的長時間工具呼叫,現在會定期送出進度心跳。

OpenTelemetry 新增項目

OpenTelemetry 記錄事件新增 message.uuid、client_request_id 與 tool_source 屬性,用於訊息層級的關聯與工具來源追蹤。新的 CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH 可設定 OpenTelemetry 內容屬性 60 KB 的截斷上限。

記憶與狀態列新增項目

記憶檔案的 frontmatter 現在包含 ISO 格式的 modified 時間戳記。subagentStatusLine 酬載現在帶有推理 effort,讓自訂的代理列可以顯示模型與 effort。

SessionStart hooks 回報 "fork"

當工作階段以分支(fork)方式開始時,SessionStart hooks 現在會回報來源為 "fork",而不是 "resume"。

修正與改進

  • Bash 權限檢查:對於 bash 與權限分析器解析方式不同的檔案描述元重新導向寫法,檢查現在會採取拒絕(fail closed)的處理方式。超過 10,000 個字元的指令現在一律會跳出提示,而不會自動執行;[[ ]] 比較中的 zsh 變數下標與修飾符不再被視為無害文字,這類指令現在會要求核准;可能執行不安全選項、指令替換或反斜線路徑的部分 help 與 man 指令,也不再被自動核准。
  • 其他權限修正:修正影響 Windows PowerShell 5.1 工作階段中所執行指令的權限檢查繞過問題。遠端工作階段的權限提示,也不再可能在本機確認對話框之前就繼續進行。
  • Hooks:即使 hook 的 stdout JSON 未通過結構描述驗證,結束碼為 2 的 hook 現在也會如文件所述進行阻擋。
  • PowerShell 工具(Windows):當子行程等待標準輸入時,指令不再一直卡到逾時。透過此工具執行的 Python 腳本在輸出非 ASCII 內容時不再以 UnicodeEncodeError 當機,PowerShell 7 的錯誤訊息也不再包含原始的 ANSI 跳脫序列。在 Windows PowerShell 5.1 上,> 與 >> 不再寫出其他工具無法以 UTF-8 讀取的 UTF-16LE 檔案。
  • 背景工作階段:被取代的背景常駐程式在關閉時,不再刪除繼任者的控制 socket;這個問題先前會讓下一個用戶端終止健康的替代常駐程式。以 ← 或 /background 暫置後閒置的工作階段,不再讓背景常駐程式與工作程序無限期存活;即使背景服務已進入閒置,已完成的工作階段現在也能透過 claude rm 或代理檢視移除。
  • 外掛:透過 --settings CLI 旗標啟用的外掛,現在可以再次正常載入(此為 v2.1.181 起的回歸問題)。
  • 設定檔:將 --settings 指向裝置檔案或數 GB 大小的檔案時,不再導致記憶體無限制成長;過大(>2 MiB)的設定檔現在會在啟動時以清楚的錯誤失敗。
  • Linux:當 pkill -f 樣式意外比對到 CLI 自身的行程時,Bash 工具不再終止 Claude 工作階段。
  • Windows 代理伺服器:在 Windows 上透過企業代理伺服器連線時,串流回合不再以「Socket is closed」失敗。
  • 排程任務:排程任務不再將自己設定的提示視為不受信任的輸入而拒絕;觸發的提示現在會作為該工作階段被指派的任務送達。
  • MCP:重新整理 prompts/resources 期間發生的暫時性錯誤,不再清除伺服器的斜線指令與資源。
  • /ultrareview:在沒有合併基準(merge base)的儲存庫中,/ultrareview 現在會提議審查所有受追蹤的檔案,而不是拒絕執行。

此版本共包含 47 項變更;完整內容請參閱變更日誌。

如何更新

  1. 檢查目前安裝的版本:claude --version
  2. 直接就地更新:claude update
  3. 請檢查單一層級的 dir/** 樣式:像 Edit(src/**) 這類允許規則與 hook if: 條件現在只比對 <cwd>/dir(hook 條件若要比對任意深度,請使用 **/dir/**),deny/ask 規則則維持任意深度的比對。

相關連結