跳至主要內容

Claude Code v2.1.312:safety_event 停止送出、hook 設上限

Claude Code v2.1.312 不再送出 claude_code.safety_event OpenTelemetry 事件,限制 prompt 與 agent hook 的同時執行數量,並針對 Claude Code 無法辨識的模型名稱調整兩項預設行為。

Claude Code v2.1.312 共有 39 條變更:22 條修正、9 條行為變更、4 條新增、4 條改進。最可能需要你動手處理的是行為變更:Claude Code 不再送出 claude_code.safety_event OpenTelemetry 事件、限制 prompt 與 agent hook 同時執行的數量,並針對它無法辨識的模型名稱調整兩項預設行為。如果你有匯出 OpenTelemetry、使用 prompt 或 agent hook,或是在 Bedrock、Vertex、Foundry、Mantle 上以自訂部署名稱或 inference profile ARN 執行 Claude Code,更新前請先讀第一節。

v2.1.312 在 v2.1.311 的隔天發布;下一個有變更日誌內容的版本是 v2.1.314。

值得注意的行為變更

不再送出 claude_code.safety_event

Claude Code 停止送出 claude_code.safety_event OpenTelemetry 事件。這個事件是 v2.1.307 新增的,會在每一次被權限規則、auto 模式、安全檢查、hook 或 sandbox 擋下、詢問或退回的工具呼叫時發出。變更日誌沒有說明原因,也沒有指出替代方案。如果你的儀表板、警示或匯出流程依賴這個事件,更新後就不會再收到它。

另一項遙測變更:對於官方 Anthropic marketplace 外掛所宣告、URL 固定的遠端 MCP 伺服器,OpenTelemetry 的 mcp_server.name 現在會回報其真實名稱,而不是 custom。

Prompt 與 agent hook 最多同時執行 24 個

Prompt 與 agent hook 現在每個 session 最多同時執行 24 個(subagent 也計入),另外最多再加上 12 個等待時間已超過其事件 timeout 的 hook。低於 1 秒的 timeout 現在一律以 1 秒計算。如果你的設定會同時觸發大量 prompt 或 agent hook,或設了低於 1 秒的 timeout,請對照這些上限檢查一下。

無法辨識的模型名稱:兩項預設行為改變

這兩項變更都適用於 Claude Code 無法辨識的模型名稱(例如自訂部署名稱),而且各有一個環境變數可以退出:

  • 較短的 system prompt。 在 Bedrock、Vertex、Foundry 與 Mantle 上,這類名稱(包括 inference profile ARN)現在會使用較短的 system prompt,即使背後的模型是 Sonnet 或 Haiku 也一樣。若要保留完整的 prompt,請設定 CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0。
  • 自動切換模型。 訊息被標記後的自動模型切換,現在也涵蓋這類名稱。若要關閉,請設定 CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK=1。

「5-hour limit」取代「session limit」

用量限制訊息現在把 5 小時的時段稱為「5-hour limit」,不再稱為「session limit」。在 VS Code 中,用量限制的重置時間也會改以時鐘時間顯示(例如「Resets at 3:10 PM」),並寫成「5-hour limit」。如果有腳本或警示比對舊的「session limit」字樣,請跟著更新。

Subagent 的 autoCompactWindow 可以調低視窗

Subagent 的 autoCompactWindow 現在可以調低 CLAUDE_CODE_AUTO_COMPACT_WINDOW 所設定的視窗;過去它在這種情況下沒有作用。它仍然不會調高該視窗。

雲端 session 名稱改由伺服器提供

從 CLI 啟動的雲端 session,現在會從伺服器取得其名稱與分支名稱。

新功能

  • Claude apps gateway 的 oidc.user_id_claim。 Gateway 現在可以用 sub 以外的 id_token claim 來識別使用者,例如 Microsoft Entra ID 的 oid。
  • 點擊送出。 在全螢幕模式下,點擊排隊訊息下方的「to send now」提示,就會像按下對應按鍵一樣立即送出。
  • 雲端 routine 的 effort。 建立或編輯在雲端執行的 routine 時,模型選擇器現在提供 effort 等級。
  • 雲端設定腳本的 Bash 編輯器。 雲端環境設定中的 setup script 欄位,現在是一個具備語法顏色、行號與 Copy 按鈕的 Bash 編輯器。

工作途中變更 effort

有三條變更與 Claude 工作途中改選 effort 等級有關:

  • 轉圈指示、OpenTelemetry 的 effort 值與 transcript,過去會在模型實際套用之前就顯示新選的等級。現在它們顯示的是實際生效的等級。
  • Prompt 的 effort 指示器現在會說明:工作途中做的變更可能要等到你的下一則訊息才生效;這段說明在不再適用時就會消失。
  • /model 與 /effort 的快取警告不再說重新讀取要等到你的下一則訊息,因為 Claude 工作途中做的變更可能更早觸發它。

檔案、skill 與 session

  • 大型指示檔。 Claude 可能只看了子目錄中非常大的 CLAUDE.md、規則檔或以 @ 引入的檔案的開頭,就把它整個覆寫。現在 Write 會要求 Claude 先讀完整個檔案,或改為就地編輯。
  • cd 之後的 skill。 用 Bash cd 進到 git 儲存庫更深的目錄後,各目錄的 skill 與 paths: skill 會找不到。
  • PDF 頁面。 清理舊 session 檔案的作業同時執行時,Read 工具讀取 PDF 頁面有時會以「pdftoppm failed: Could not write image」失敗。
  • 恢復的 session。 在少數情況下,於終端機恢復 session 後的第一則回覆,可能在下一次恢復該 session 時消失。
  • 命令載入。 一個名稱無效的命令會讓所有命令都無法載入,可能導致 claude -p 沒有任何輸出。
  • 等待狀態。 當最後一則訊息只是在句子中途提到等待你處理的項目時,部分 session 會被顯示為正在等你。

終端機與 VS Code

  • Agent view 在結束前以 Ctrl+C 清掉輸入後,下一次啟動時會把那段輸入文字恢復回來;從空的 ! 輸入以 Ctrl+D 結束後,也會以 shell 模式重新開啟。
  • 在 vim 模式中,d、c、y 搭配超過剩餘行數的 gj 或 gk 次數時,會刪除或複製文字。現在它們會像 Vim 一樣只移動游標。
  • /verify 在 /help 與 / 命令選單中,顯示的是寫給 Claude 看的長描述,而不是簡短描述。
  • 從 VS Code 擴充套件登入後,該 session 剩餘期間都不會取得受管設定與組織政策。
  • 在 VS Code 中,組織設定在啟動時無法載入或遭到拒絕時,session 會只留下一個結束代碼就結束。現在分頁會說明原因,並提供 Retry 或 Sign in again。

雲端 session 與 Remote Control

  • 雲端 session 中的 WebFetch 錯誤,現在會把無法解析的主機解釋為可能不在允許的網路網域內,讓 Claude 指出需要放行的主機。
  • Claude 將儲存庫加入雲端 session 時顯示的步驟,展開後現在會以簡短表格呈現發生了什麼,而不是原始 JSON。
  • 在雲端 session 中送出失敗後重送未修改的訊息,有時會執行兩次。
  • 建立雲端環境失敗時,錯誤只會以 toast 顯示在開啟中的對話框外面。現在錯誤會顯示在對話框內。
  • 在 Routines 頁面上,routine 選單中的 Edit 會前往該 routine 的頁面,卻沒有開啟編輯對話框。
  • 取消封存的 Remote Control session 會一直顯示為工作中,直到某台電腦重新連線。現在會顯示為閒置。

Claude Tag 與 Code Review

  • Claude Tag 在 Slack 中的重試通知,現在會寫出使用中的模型,或說明已達速率限制,而不是籠統的 API 錯誤。
  • 較舊的私人 Slack 頻道轉為公開並取得新 ID 時,該 Claude Tag 頻道的開關與 agent 設定會退回工作區預設值。
  • 在環境的網路存取設為 None 的頻道中,Claude in Slack 不會回覆;在同一頻道的另一個討論串回答時,它有時會把檔案貼到錯誤的討論串。
  • 當 GitHub 延遲送達 push 事件時,Code Review 會審查過時的 commit,甚至完全不審查。現在它會審查 pull request 目前的 commit。

如何更新

  1. 檢查已安裝的版本:claude --version
  2. 直接就地更新:claude update

相關連結