跳至主要內容

Claude Code v2.1.299:閒置壓縮、CLAUDE_CODE_DISABLE_FILE_MENTIONS,以及更嚴格的 MCP 權限比對

Claude Code v2.1.299 新增長時間閒置對話的閒置壓縮、CLAUDE_CODE_DISABLE_FILE_MENTIONS 與新的 /usage 警告,讓 MCP 允許規則只比對完整的伺服器名稱,並修正許多沙箱與 MCP 問題。

Claude Code v2.1.299 是一次大型發布,變更日誌共列出 190 個項目。此版本在終端機中新增閒置壓縮,讓閒置的長對話在提示快取到期前先行壓縮,並新增 CLAUDE_CODE_DISABLE_FILE_MENTIONS、新的 /usage 警告,以及代理檢視中的 /effort 與 /fast。多項變更強化了權限:MCP 允許規則現在只涵蓋其指名的伺服器,UserPromptSubmit 掛鉤會在技能與自訂斜線指令展開前執行,另外也修正了許多沙箱、憑證與 mod 管控方面的問題。

新功能

終端機中的閒置壓縮

超過 200K token 的對話閒置約 54 分鐘後,現在會在其一小時的提示快取到期前先行壓縮,讓你的下一則訊息不必重新處理整段對話。CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS 可更改 200K token 的最低門檻,在 settings.json 中設定 "idleCompaction": false 則可關閉閒置壓縮(變更日誌註明兩者都需要 v2.1.290 或更新版本)。

CLAUDE_CODE_DISABLE_FILE_MENTIONS

設定新的 CLAUDE_CODE_DISABLE_FILE_MENTIONS 環境變數後,Claude 收到的是 @ 檔案提及的路徑,由它用檔案工具自行讀取,而不是直接收到檔案內容。

代理檢視:為新工作階段設定 /effort 與 /fast

在代理檢視中,/effort 與 /fast 可設定新工作階段的起始值;在那裡單獨輸入 /model、/effort 或 /fast 現在會開啟選擇器。對於以 --safe-mode 啟動的背景工作階段,代理檢視的預覽面板也會顯示一行「safe mode」。

新的 /usage 警告

/usage 現在會針對 max 投入程度、工作流程、常駐內容與大型工具結果發出警告。

MCP 權限規則比對完整的伺服器名稱

MCP 允許規則現在只涵蓋其指名的伺服器:mcp__a 不再允許名為 a__b 或 a_ 的伺服器,請以伺服器完整的正規化名稱撰寫 mcp__<server>__*。代理的 tools: 清單也只會取用指名 MCP 伺服器的工具;名稱中含有 __ 的伺服器,請寫成 mcp__<whole name>__*。當伺服器的正規化名稱含有雙底線時,針對 MCP 伺服器(mcp__<server>)的拒絕與詢問規則現在也會生效。

掛鉤執行順序與封鎖行為的變更

UserPromptSubmit 掛鉤現在會在技能或自訂斜線指令展開前執行,因此封鎖提示的掛鉤也會一併阻止其中內嵌的 shell 指令;技能自身 front-matter 中的 UserPromptSubmit 掛鉤,會從呼叫該技能之後的下一個提示開始執行。當外掛掛鉤無法收到可封鎖的動作,或無法傳回其答覆時,這些動作現在會被拒絕而不是放行;已經執行的工具則會扣留其結果。

結束時印出更安全的恢復指令

結束時印出的恢復指令,現在會以工作階段 ID 而非名稱來指定工作階段,避免貼上該行時執行到工作階段名稱中的任何內容。對於 worktree 工作階段,若完整旗標放不進終端機寬度,則會改用 -w 與 -r。

MCP 重新導向與協定協商

傳送到 claude.ai 連接器代理與 Anthropic 託管 MCP 伺服器的請求,不再跟隨 HTTP 重新導向(連接器自身伺服器的重新導向不受影響);雲端與 self-hosted runner 工作階段中的 MCP 請求,也不再跟隨工作階段 MCP 代理的重新導向。在未擷取任何旗標的安裝環境中,雲端工作階段與 Remote Control 的 MCP 連接器預設協商 MCP 協定版本 2026-07-28,可用 MCP_PROTOCOL_NEGOTIATION=legacy 選擇不採用;來自 api.anthropic.com 上 Anthropic 第一方 MCP 伺服器的工具描述與伺服器指示,現在會完整傳給 Claude。

Mod API 新增項目

  • $.prompt.media 讓透過受管理設定安裝之 mod 的 prompt.submit 掛鉤,可以讀取附加在提示中的圖片或文件的位元組。
  • $.session.identity() 會告訴透過受管理設定安裝的 mods 該工作階段的登入方式;當受管理的 forceLoginOrgUUID 列出該組織時,還會提供其組織與電子郵件。
  • mod 的 Text 新增 size、weight、mono 與 tabular,Box 新增具名的間距級距(xs 到 xl);bold 已棄用,請改用 weight。
  • skill.prompt 掛鉤現在會收到技能的 frontmatter、來源、外掛名稱與檔案路徑;session.append 新增 queue door;turn.start 掛鉤現在也會收到子代理與隊友的回合,可用 e.agentId 分辨。

外掛評估與 Self-hosted Runner 選項

claude plugin eval 接受 --disallow-tools 與 disallowed_tools 案例欄位,可將特定的內建工具(例如 Agent)排除在評估執行之外。claude self-hosted-runner orchestrator 新增 --shutdown-drain-sec:收到 SIGTERM 時會停止輪詢,並給進行中的輪詢與執行中的 spawn 掛鉤最多該秒數的時間完成。

Claude apps gateway 後方的署名區塊

在 Claude apps gateway 的 code 政策的 env 中設定 CLAUDE_CODE_ATTRIBUTION_HEADER=0,即可關閉 Claude Desktop 的 Code 分頁中的署名區塊。位於 gateway 後方的 Claude Code 工作階段,其署名區塊新增一個欄位,同樣可用 CLAUDE_CODE_ATTRIBUTION_HEADER=0 移除該區塊。

其他行為變更

  • 檔案或資料夾名稱含有隱藏、改變文字方向或類似空白的字元,或含有 <、> 的技能與指令,在重新命名前不再提供使用。
  • 非互動式工作階段中的 /btw 附帶問題,若 11 分鐘後仍未得到回答,現在會傳回逾時錯誤。
  • WebFetch 讀取頁面時,現在會以與網路搜尋相同的方式決定投入程度。
  • 當計畫模式因為可使用略過權限而不會在大多數編輯或指令前詢問時,會顯示一次性的說明。
  • 本機工作階段現在最多可同時關注 25 個已發布的 artifact,先前為 10 個。
  • /ultrareview 的上傳錯誤不再建議執行 git add .,因為那可能會暫存或提交 .env 等未追蹤的檔案。
  • 在 Cowork 雲端工作階段中,自動模式下的 PermissionRequest 掛鉤不再能核准 shell 指令或子代理;在自動模式之外,被安全分類器標記的已核准網站 Claude in Chrome 操作,現在會詢問你而不是直接拒絕(受管理設定適用時除外)。

修正與改進

  • 沙箱:沙箱中的 shell 指令不再能寫入 --plugin-dir 資料夾,因為 Claude Code 會在沙箱外重新載入並執行其中的程式碼。在 macOS 上,沙箱指令不再能透過符號連結以實際位置存取被拒絕的路徑;資料夾名稱含有大括號、括號或反斜線的 denyRead 與 allowRead glob,設定檢查與沙箱的解讀方式現在一致;當 allowRead 與 allowWrite glob 的起始目錄被替換成符號連結時,這些項目也會重新檢查。
  • 憑證:傳給 Anthropic 的功能旗標、啟動、快速模式、個人資料與意見回饋請求,不再帶有為第三方閘道(ANTHROPIC_BASE_URL)設定的 API 金鑰(Anthropic API 金鑰仍會送出);當受管理設定檔設定了 ANTHROPIC_BASE_URL 時,伺服器管理設定的請求也不再帶有第三方閘道的 API 金鑰。未附描述就啟動的代理隊友,也不再於其任務描述中保留提示裡的部分憑證。
  • 計畫模式與防護:計畫模式不再執行 PreToolUse 掛鉤或 mod 的 tool.check 掛鉤所允許的寫入操作;mods 的掛鉤收到的值也不再被悄悄移除 __proto__ 鍵,這個問題可能讓 tool.check 防護被略過。
  • Mods 與受管理設定:在 accept-edits 模式下,若設定目錄的路徑中沒有 .claude,Write 與 Edit 不再未經詢問就在工作階段的 mods 資料夾中建立 mod;遠端關閉的 mods 現在會在回合之間卸載;使用者安裝之 mod 的 $.env.set 不再改變受管理設定中指令掛鉤的環境;針對使用者安裝的 mods,受管理權限規則、受管理掛鉤與組織 MCP 工具名稱的執行也獲得強化。
  • Windows:未設定 shell 的 PreToolUse 與 PermissionRequest 掛鉤,在未安裝 Git for Windows 時不再以放行方式失敗(失敗的防護現在會封鎖該次呼叫);在忙碌的機器上,程序存活檢查不再留下孤立的 PowerShell 程序;Git Bash 在啟動時未回報 PATH 時,Bash 指令也不再整個工作階段都以「command not found」失敗。
  • rm 提示:沒有執行 rm 的 shell -c 腳本不再觸發 rm 提示;在 Claude Code 無法讀取的腳本中於執行時期組出的 rm,除非設定 CLAUDE_CODE_STRICT_INLINE_SHELL_RM_PROMPT=1,否則不再提示。
  • 自訂端點與閘道:在自訂 ANTHROPIC_BASE_URL 後方使用閘道專屬模型名稱的工作階段,不再於接近 200K token 時以「Prompt is too long · automatic compaction failed」結束;透過自訂 ANTHROPIC_BASE_URL 的串流現在會等待 300 秒,而不是在 180 秒沒有資料後中止;對於政策的 availableModelsMatch: exact 或 deniedModels 所封鎖的模型,Claude apps gateway 現在會回應 400。
  • MCP:伺服器從未結束對通知之回覆的內容時,HTTP MCP 連線不再卡住 30 秒後失敗;被政策檢查封鎖的伺服器,不再由 claude mcp list、claude mcp get 或子代理啟動,加入執行中的無介面或 SDK 工作階段時也不會被連線;MCP OAuth 登入、token 更新與登出現在會送出設定的 headers/headersHelper 值;在無介面與 SDK 工作階段中,背景重新連線關閉連線時,MCP 工具呼叫不再失敗或執行兩次。
  • MCP 設定:claude mcp list、claude doctor 與 /status 不再把空的 .mcp.json 回報為無效;名為 constructor 或 prototype 的 MCP 伺服器現在可以連線;當 enabledMcpjsonServers 或 disabledMcpjsonServers 以純字串形式只寫一個伺服器名稱時,設定檔不再被忽略。
  • 記憶體:大量除錯記錄(--debug、--debug-file)時記憶體不再持續增長;除錯輸出送到 stderr 而父程序停止讀取時,記憶體也不再無上限增長;恢復執行過許多子代理的雲端或 Remote Control 工作階段後,記憶體使用量偏高的問題已修正;以 @ 提及的 PDF,其位元組不再保留在工作階段的對話記錄中。
  • 圖片與檔案:在一張過大的圖片被 API 拒絕後,長對話不再於之後的每一輪遺失新附加的圖片;在 Claude 工作時附加的圖片不再以原始大小送出;在 Claude 工作時送出的訊息中的文件區塊也不再遺失。Read 不再讓帶有位元組順序標記的 UTF-16LE 檔案變成亂碼;Write 不再移除位元組順序標記,或把 Windows-1252、Shift-JIS、GBK 或 UTF-16BE 檔案悄悄轉成 UTF-8(這類寫入現在會被拒絕)。
  • 排程:排程任務不再被宣告為錯誤的分鐘;在日光節約時間結束而重複的那一小時內,排程任務與迴圈不再於每一輪後再次觸發或提早觸發;在 Agent SDK、IDE 與 claude remote-control 工作階段中,背景任務執行期間的排程喚醒(ScheduleWakeup)現在會正常觸發。
  • 無介面執行:當設定檔驗證失敗時,claude -p 現在會在 stderr 列出該檔案與無效的項目;在每一輪結束時送出提示的 mod,不再能讓無介面執行超過 --max-turns、--max-budget-usd 或中斷而持續進行;當主機切換到不支援自動模式的模型時,SDK 與無介面工作階段也會離開自動模式。
  • 回應與子代理:請求退回非串流模式後,在輸出 token 上限處被截斷的回覆不再悄悄結束該輪;自動模式下的背景子代理不再把最終報告送出兩次;CLI 重新啟動並恢復工作階段後,SendMessage 可以依名稱找到子代理(在上一次壓縮前給定的名稱仍需使用代理 ID)。
  • 用量顯示:/usage、接近上限的警告(終端機與 VS Code)以及狀態列,不再偶爾顯示超過 100% 的用量。
  • 文字繪製:混合 CJK 或表情符號與拉丁文字的換行文字,在某些終端機寬度下不再遺失最後一行或留下空白列;粗體、斜體與其他巢狀文字樣式不再跑出表格框線,或在換行的列中遺失。
  • Remote Control 與雲端工作階段:同一批次中另一個佇列提示傳送失敗時,Remote Control 的提示不再遺失;透過 Remote Control 傳送的照片與檔案現在可以送達(包括 30 到 35 MiB 的檔案);無法連線到電腦的 Remote Control 工作階段,會把你的文字留在輸入框中並停用 Send,直到重新連線;雲端工作階段在 worker 被替換時,不再忽略權限答覆或讓訊息沒有回應。
  • 工作階段與旗標:以 --safe-mode 啟動的背景工作階段,在被喚醒或重新啟動時不再悄悄離開安全模式;claude mcp add <name> -- <command> --background 不再被當成背景工作階段啟動;對背景工作階段送出的提示或回覆若是 --bg 或 --background,也不再被當成旗標。
  • VS Code:切換到其他工作階段再切回來時,未送出的提示與其附件不再遺失;未使用的空白聊天不再讓背景的 Claude 程序持續執行;未登入 claude.ai 時,麥克風按鈕會提供登入選項;在沒有 Python 環境的工作區,以及在新視窗中開啟曾開啟過的資料夾時,啟動也更快。
  • Claude Tag 與 Code Review:Slack 中的 Claude 現在可以依要求刪除它在頻道中建立的 canvas,修正說錯的訊息時會直接就地編輯並加上簡短的「Edited」註記,並會在不發送自我介紹的情況下加入超過 100 名成員的頻道。Code Review 每月支出上限的留言與 check-run 卡片,現在會連到設定該上限的 Usage 頁面。

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

如何更新

  1. 檢查已安裝的版本:claude --version
  2. 就地更新:claude update
  3. 請檢查依賴前綴比對的 MCP 允許規則與代理 tools: 清單:mcp__a 不再允許名為 a__b 或 a_ 的伺服器,請以伺服器完整的正規化名稱撰寫 mcp__<server>__*。

相關連結