跳至主要內容

Claude Code v2.1.295:失敗時可封鎖的掛鉤、支援 Program Status Protocol,以及 gateway 模型清單

Claude Code v2.1.295 為指令與 HTTP 掛鉤新增 onFailure 封鎖選項,支援 Program Status Protocol(OSC 7501),讓 /copy 可複製引用文字,並為 Claude apps gateway 的各上游新增模型清單。

Claude Code v2.1.295 是一次大型發布,變更日誌共列出 143 個項目。此版本讓指令與 HTTP 掛鉤在自身失敗時可以封鎖動作,新增 Program Status Protocol(OSC 7501)支援,讓相容的終端機能顯示 Claude Code 目前的狀態,並為 Claude apps gateway 加入多項控制,包括各上游的模型清單,以及雲端上游的首位元組時間限制。其餘項目修正了 MCP 重新連線、背景工作階段、外掛與 mods、終端機凍結等問題。

新功能

失敗時可封鎖的掛鉤

指令與 HTTP 掛鉤現在接受 onFailure: "block":當掛鉤無法啟動、逾時,或以非預期的代碼結束時,會封鎖該動作,而不是放行。

Program Status Protocol(OSC 7501)

Claude Code 現在支援 Program Status Protocol(OSC 7501),實作此協定的終端機可以顯示 Claude Code 正在工作、正在等你,或已完成。

/copy 的引用文字

/copy 選擇器現在包含引用文字,因此複製草擬的訊息時不會帶上 > 標記。

CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS

新的 CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS 變數可限制無人值守重試模式(CLAUDE_CODE_RETRY_WATCHDOG)等待 429 與 529 錯誤的時間上限。

更清楚的 claude -p 執行

當 claude -p 執行在最後一輪之後仍未結束時,若 stderr 是終端機,它現在會在 stderr 印出一行訊息,說明正在等待什麼。當背景工作開始另一輪時,claude -p 的文字輸出也不再遺漏先前的回應;每一輪的回應都會在該輪結束時印出。

以 ← 移至背景

當 ← 正在等待目前的工具完成時停止該輪,現在會顯示「Backgrounding cancelled」訊息;若在提示中輸入文字而取消移至背景,Claude 會繼續在前景工作,而不是在目前的工具結束時停下。在已附加的背景工作階段的閒置提示按 Ctrl+C,現在不會影響待處理的 /loop 喚醒,因此按兩次會中斷附加而迴圈持續執行;要停止它請按 Esc。

Claude apps gateway 控制

  • 每個上游都可以設定選填的 models 清單:只有清單中的模型會送往該上游(容錯移轉時也一樣),項目中的一個 * 可作為萬用字元。
  • timeouts.upstream_ttfb_ms 現在可用於 Bedrock、Vertex、Foundry 與其他雲端上游,限制串流在該處開始前可花費的時間,超過後會容錯移轉或回傳 502。
  • 在沒有受管理設定的機器上,於你自己的使用者設定中設定 forceLoginMethod: "gateway" 與 forceLoginGatewayUrl,即可讓 /login 開啟在該 gateway 上。
  • inference 稽核事件新增 upstream_request_id,成功的推論回應也會帶有 request-id 標頭,讓 Claude Code 遙測中的 request_id 能對應到 gateway 的稽核記錄。
  • 在 Amazon Bedrock 上的 gateway 後方,token 計數現在改由 AWS 的 CountTokens API 取得;背景請求會改用 Haiku 4.5 而非工作階段的模型,若 gateway 未提供 Haiku 4.5 則退回使用工作階段的模型。

Mod API:$.ui.notify 與按鈕子元素

Mods 可以呼叫 $.ui.notify,依照你自己的通知設定發出原生通知,並註明是哪個頻道發出的。mod 的 Button 現在可以包含子元素(字串與 Text),讓清單中的一列成為一個可按的元件,內含標籤或淡色的詳細資訊。

外掛指令的警告

當 claude plugin install、enable、disable 與 marketplace add 寫入的設定檔不會被載入時,現在會發出警告。當外掛的 README 沒有安裝說明行時,claude plugin validate 也會提出建議並印出可貼上的那一行,但即使使用 --strict 也不會改變結束代碼。

其他行為變更

  • 模型透過工具搜尋載入的 MCP 工具描述,截斷長度從 2,048 個字元改為 16,384 個字元。
  • 子代理最多只會從 skills 欄位預先載入 32 個技能,每個只載入一次;擁有 Skill 工具的子代理仍可呼叫其餘技能。
  • 在未擷取任何旗標的安裝環境中,claude.ai 連接器預設協商 MCP 協定版本 2026-07-28;設定 MCP_PROTOCOL_NEGOTIATION=legacy 可選擇不採用。
  • 對於 WebSocket(ws)MCP 伺服器,超過 16 MiB 的訊息不再被解析,並會關閉連線,與其他傳輸方式既有的上限一致。
  • 當 claude agents 與其背景服務一起被停止時(macOS,或未安裝該服務的 Linux),執行中的工作階段現在會在約一分鐘後停止,除非再次執行它,並會有通知說明。
  • Tab 定位點現在從文字開始的位置起算,而不是從畫面左緣起算;你的組織的 mods 所發出的 toast 通知會優先於其他 mods 顯示。

VS Code:Claude 傳給你的檔案

Claude 傳給你的檔案現在會有一列聊天項目:點擊檔名即可在編輯器中開啟,Claude 的說明會顯示在下方,且這一列在 Focus 檢視中也會保持可見。

修正與改進

  • 1M context 模型:當閘道、Bedrock、Vertex 或 Foundry 拒絕 context-1m beta 時,[1m] 模型上的每個請求不再都失敗;Claude Code 現在會不帶該 beta 重新送出。
  • MCP 連線:在無介面與 SDK 工作階段中,遠端 MCP 伺服器在超過 15 秒的中斷後不再一直處於斷線狀態,也不再對每次連線後立即中斷的伺服器進行密集重連(重複中斷現在會退避,最長 30 秒);伺服器的錯誤回覆碰巧包含網路錯誤名稱時,遠端連線不再被中斷;重複分頁游標的伺服器也不再於每次連線時被要求同一頁多達 20 次。
  • MCP 工具:MCP 工具傳回的 CSS、JavaScript 與 XML 檔案不再被儲存為 .bin(字型與圖示檔案現在也有各自的副檔名);Claude 等待 MCP 伺服器的資源清單時,中斷操作不再要等到逾時才結束該輪;當你從任務面板或已連線的用戶端停止長時間執行的 MCP 工具呼叫時,Claude 現在會收到通知。
  • 工具限制與防護:--tools 與 --restricted 現在也會套用到啟動後才註冊的內建工具,已棄用的工具名稱也不再觸及呼叫者工具集之外的工具。mod 的掛鉤不再收到被無聲截斷的深層巢狀工具輸入;在外掛掛鉤 worker 重新啟動期間,mod 重新載入時發出的呼叫也不再能繞過另一個帶有 .catch 的 mod 防護掛鉤。
  • 輸出中的連結:回覆或隊友訊息中的原始終端機超連結位元組,不再被繪製成隱藏網址的可點擊連結;以文字顯示的連結網址,也不再被回覆遺留的顏色或隱藏樣式遮住。
  • Claude in Chrome:以 80 埠撰寫的網站拒絕規則(host:80),現在會套用到該主機上一般的 http:// 頁面。
  • 技能:當 Skill 工具在回應串流結束前完成時,技能的 allowed-tools 與 effort 不再被捨棄;這個問題曾導致 -p 執行中技能的 Bash 指令被拒絕。
  • 掛鉤:分成多行印出的非同步掛鉤 JSON 輸出不再被忽略;非同步 SessionStart 掛鉤未變更的內容,不再於每次恢復時重複加入對話;SessionStart 掛鉤寫入 CLAUDE_ENV_FILE 的變數,在應用程式內的 /resume 或 /branch 之後也會傳到 Bash 工具;在 xhigh 與 max 投入程度下,網路搜尋與 agent 掛鉤評估不再耗時大幅增加。
  • 背景工作階段:Esc 現在可以停止以 ← 移至背景、自行決定節奏的 /loop;在 ← 之後立即以 ↑ 或 Esc 拉回提示的佇列訊息,現在會保留在提示歷史中;背景工作階段的程序停止期間若下一次喚醒到期,/loop 不再無預警停止;背景工作階段中的指令與掛鉤也不再繼承 FORCE_COLOR=3。
  • 子代理與隊友:位於自己連結 worktree 中的子代理,不再看到父工作階段的 git 分支、狀態與最近的 commit;從 Workflow 子代理呼叫的 fork 技能,現在會把結果交回呼叫它的代理;同一程序內的代理隊友第一次呼叫 SendMessage 也不再失敗。
  • 檔案追蹤:像 cat 這類 Bash 指令執行後若沒有印出內容,檔案不再被視為已讀取;檔案內容變更但修改時間未更新時,Edit 也不再把它視為已完整讀取。
  • 工具輸入:模型傳入 command_description 而非 description 時,Bash 工具呼叫不再失敗;帶有 grep 的 -l、-c 或 -r 旗標的搜尋,Grep 現在會照常執行;Read 工具會把空的 pages 參數視為省略。
  • 凍結:當回應長達數萬行時,終端機不再凍結且忽略 ctrl+c;遇到每隔幾行引用層級就更深的回覆時不再凍結數秒;對含有超長行、大量連續空白行,或未關閉字串與 heredoc 的程式碼進行語法醒目提示時,也不再凍結數秒甚至數分鐘。
  • /model:選擇 Max 投入程度時,不再聲稱已儲存為新工作階段的預設值(Max 只套用於目前的工作階段);對於登入 Claude apps gateway 的工作階段,列在 availableModels 中的 Fable 模型現在會出現在 /model 選擇器中。
  • 外掛:/plugin 的 Errors 分頁不再於按下 Enter 時未經詢問就移除載入失敗的 marketplace 並解除安裝其外掛;claude plugin marketplace add 現在會拒絕無法在其名稱下安裝任何外掛的 marketplace;儲存庫含有大型 git 子模組的 marketplace 現在可以加入與重新整理;/model、/fast 與 /output-style 在儲存前現在會先詢問外掛的 config.set 掛鉤。
  • macOS:工作階段從家目錄或其上層啟動時,啟動時的檔案計數不再觸及其他應用程式的資料而跳出「access data from other apps」提示;更新後一起重新啟動的背景工作階段,也不再偶爾在穩定的應用程式包裝之外執行。
  • Windows:即使磁碟機代號大小寫不同,專案範圍的外掛現在也能在 Windows 上的 VS Code 中載入;在專案或本機範圍執行 plugin install 與 uninstall 時,不再因磁碟機代號大小寫不同而遺漏或重複安裝記錄;使用 CRLF 換行的簡短指令輸出也不再被畫成一行。
  • VS Code:「Fork conversation from here」與 Rewind 的對話還原不再以「Message not found in session」失敗;在聊天輸入框中按 Ctrl+Shift+Tab、Cmd+Shift+Tab 與 Alt+Shift+Tab 不再同時切換權限模式;同時顯示兩個 Claude 檢視時,鍵盤焦點也不再在兩者間來回跳動。
  • Self-hosted runner:runner 不再將 CCR_AUTO_MODE_ALLOW、CCR_AUTO_MODE_ENVIRONMENT 與 CCR_AUTO_MODE_SOFT_DENY 傳入工作階段的環境;git 伺服器仍在回報大型儲存庫的進度時,git fetch 也不再被中斷,可用 CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS 調整或關閉此等待。
  • Code Review:先前的發現仍未解決時,重新審查不再表示沒有發現問題(留言現在會說明還有幾項未解決);當 pull request 修改大型 CLAUDE.md 時,Code Review 也不再略過其中的規則。

此版本共包含 143 項變更,完整清單請參閱完整變更日誌。

如何更新

  1. 檢查已安裝的版本:claude --version
  2. 就地更新:claude update
  3. 若你在 Amazon Bedrock 上執行 Claude apps gateway,請授予 bedrock:CountTokens,讓 gateway 可以從 AWS 的 CountTokens API 取得 token 計數。

相關連結