跳至主要內容

Claude Code v2.1.318:登入到期提醒與網路家目錄修正

Claude Code v2.1.318 在 claude auth status 與 claude -p 顯示 claude.ai 登入的結束日期,並提前 10 天警告;強化網路家目錄上的 ~/.claude.json 保護;IDE 擴充套件安裝與 deniedMcpServers 的行為也有變更。

Claude Code v2.1.318 共有 84 條變更:47 條修正、15 條改進、11 條新增、10 條行為變更、1 條移除。無人值守的執行現在可以事先知道已儲存的 claude.ai 登入何時結束;另有一大批修正與改進保護 ~/.claude.json、設定檔與已儲存的登入資訊,尤其是在共用與網路家目錄(home directory)上。Mod 的 $.model.fork 新增 effort 選項,Claude apps gateway 的 mantle 上游則新增 assume_role。有好幾條變更涉及腳本與管理者依賴的行為,從 IDE 擴充套件的安裝、deniedMcpServers 的 URL 項目,到自架 runner orchestrator 的日誌行,都整理在下方「值得注意的行為變更」。

新功能

看得到已儲存的 claude.ai 登入何時結束

有兩條新增項目,讓你在已儲存的 claude.ai 登入導致工作停擺之前,就能看到它何時結束:

  • claude auth status 現在會以 loginExpiresAt 列出登入的結束日期,claude -p 的 JSON 結果也以 credential_expires_at 帶出同一個日期。
  • claude -p 的文字輸出會從登入結束前 10 天開始,在 stderr 印出一行警告。

已儲存的 claude.ai 登入真的到達時限時,登入失敗的訊息現在會直接說明這一點,在 claude -p 中還會指出 claude auth login 與 claude setup-token。如果你以 claude.ai 登入、排程執行 claude -p,現在可以事先檢查日期,不必等到執行失敗才發現。

Mod 與 Claude apps gateway

  • $.model.fork 的 effort。 mod 的 $.model.fork 新增 effort 選項,讓快速的支線工作不論 session 使用哪個 effort,都能以 low 執行;結果會回報實際送出的 effort。
  • mantle 上游的 assume_role。 Claude apps gateway 的 mantle 上游可以設定 assume_role,用於另一個 AWS 帳號中的 role,以及按開發者歸屬 AWS 成本。
  • 記錄你對 Claude 所寫 mod 的回答。 Claude Code 詢問是否啟用它在 session 中寫的 mod 時,現在會留下你回答的紀錄。

雲端 session

  • No repository 選項。 Anthropic 託管環境上的雲端 session,現在可以不選 repository 就啟動。
  • 常見的 Chrome 名稱。 雲端 session 現在提供常見的 Chrome 名稱,讓 Playwright 以外的工具也能透過 google-chrome 與 CHROME_PATH 找到內建的 Chromium。
  • New session 按鈕。 雲端 session 的環境被刪除時會顯示一張卡片,此時訊息輸入框是隱藏的;這張卡片現在多了 New session 按鈕。

共用家目錄與 ~/.claude.json

有十條項目(七條修正、三條改進)處理 Claude Code 如何儲存與復原 ~/.claude.json、設定檔與已儲存的登入資訊。

共用與網路家目錄

  • 不再誤報成功。 在共用網路家目錄上無法更新設定檔時,/logout、claude auth logout 與 claude mcp remove 會回報成功,對信任、同意或 MCP 設定的變更也會在毫無提示的情況下遺失。
  • 存檔更禁得起考驗。 在共用網路家目錄上存檔時,~/.claude.json、設定檔與已儲存的登入資訊較少被刪除、短暫清空,或被幾乎空白或較舊的副本取代。
  • 再確認一次。 在網路檔案系統上,設定檔被誤報為不存在時,session 現在會再查看一次,因此較少在缺少 MCP 伺服器與受信任資料夾的情況下啟動。
  • 登入檔不再變成空檔。 網路家目錄已沒有空間存放資料、卻仍能建立新檔案時,已儲存的登入資訊會被空檔案取代。

損壞的檔案、備份與鎖

  • 無效的 JSON 會保持原樣。 非互動式啟動過去會把不是有效 JSON 的 ~/.claude.json 換成預設值。現在啟動會失敗、說明如何還原檔案,並讓檔案保持原樣(anthropics/claude-code#87551)。
  • 空檔不等於損壞。 沒有備份的空白 ~/.claude.json 過去會被回報為損壞;現在 Claude Code 會像檔案不存在時一樣啟動。
  • 還原命令。 針對損壞或遺失的 ~/.claude.json 印出的還原命令,不再指向空白或被截斷的備份,也不再在唯讀檔案上失敗。
  • 保留期限清理會留下備份。 只執行 claude -p 的家目錄,可能在保留期限清理後沒有任何 ~/.claude.json 備份。現在會先建立新的備份,再刪除最後一份完好的備份。
  • claude mcp add 與 remove 會取得鎖。 它們過去在沒有取得鎖的情況下寫入設定;現在會等待鎖,或以 exit 1 結束。變更日誌也註明,其他工作的存檔仍可能取代已儲存的伺服器。
  • 減少改寫。 無人值守的執行(claude -p、SDK 應用程式)在 ~/.claude.json 內容沒有變化時,不再每次執行都改寫它。

值得注意的行為變更

  • 不再從 IDE 終端機安裝擴充套件。 在 IDE 的終端機中啟動時,Claude Code 不再安裝或更新 IDE 擴充套件。請在編輯器外的終端機執行 /ide,或使用編輯器的擴充套件檢視。
  • 背景 subagent 會把長時間的 shell 命令移到背景。 在所有供應商上,背景 subagent 現在會在 3 分鐘後把 shell 命令移到背景,讓 prompt cache 不會在命令執行期間過期。
  • deniedMcpServers 的 URL 項目擋得更多。 URL 項目現在也會擋下上游 URL 相符的 Anthropic 提供的伺服器,以及雲端 session 與自架 runner 上的 connector——在這些環境中,session 拿到的是 connector 本身的 URL。其他情況請以名稱拒絕 connector。如果你以 URL 拒絕伺服器,請確認這些項目現在會比對到哪些對象。
  • Managed Agents 上手預設改為 auto。 /claude-api managed-agents-onboard 現在預設讓新 agent 的內建工具,以及 quickstart 範本的 MCP 工具,使用 auto 權限政策(“Judge risky actions”),與 Claude Console 一致。若要退出,說「run without asking」即可。
  • 自架 runner orchestrator 的日誌行。 ok session=… 現在在所有日誌等級都會印到 stdout(過去只在 debug 等級、印到 stderr),並在 jti=… 之後加上 reason=…。nack session=… 的欄位現在以接在 retryable=… 之後的 reason=… 結尾。比對 retryable=true: 或 retryable=false: 的腳本需要更新。
  • 移除 2.1.288 的思考內容修正。 v2.1.288 修正了恢復在 2.1.286 或更早版本開始的對話時,模型先前的思考內容會遺失的問題。這項修正已被移除,這些思考內容現在可能被捨棄。

另有三條項目會改變腳本看到的結果:

  • ~/.claude.json 不是有效 JSON 時,非互動式啟動現在會在啟動時失敗,而不是把檔案換成預設值。
  • claude mcp add 與 claude mcp remove 現在會等待設定檔的鎖,否則以 exit 1 結束。
  • 在已儲存的 claude.ai 登入結束前 10 天內,claude -p 的文字輸出可能多出一行新的 stderr 警告。

其餘五條行為變更:

  • 當「Switch models when a message is flagged」設為「Ask each time」時,subagent 會停止,而不是切換模型。
  • 在 Bedrock、Vertex、Foundry 上,或關閉遙測時,若 prompt cache 是冷的,subagent 的進度摘要現在可能最多花 5 分鐘,等候 subagent 尚未返回的回應。
  • mod 在 prompt.submit 附加的內容,現在會留在使用者的那一輪中,而不是以 system message 送出。
  • /permissions 的規則詳細資訊、內建規則與刪除確認畫面改用標準對話框;在這些畫面按兩次 Ctrl+C 現在會返回或取消,而不是結束程式。
  • 在雲端 session 中,connector 搜尋結果會告訴 Claude:搜尋只涵蓋 connector 目錄的一部分。

登入與帳號修正

  • 其他地方重新登入後出現 Not logged in。 另一個終端機或主機在同一個家目錄上,以相同帳號與組織重新登入時,工作會以 Not logged in 結束。
  • 外掛命令與 token 更新。 claude plugin 命令可能在較慢的 token 更新存檔前就結束,導致下一次執行時被登出。
  • 另一個登入留下的 allowedProviders。 同一台機器上另一個登入所儲存的 allowedProviders 清單,會讓 session 在啟動時被拒絕。
  • setup-token 與 forceLoginOrgUUID。 在設有 forceLoginOrgUUID 的機器上,即使 token 屬於被允許的組織,setup-token 產生的 token 仍會在啟動時被拒絕。

Session、subagent 與 headless 執行

  • --continue 在格式錯誤的工具呼叫重試用盡後,有時會遺失先前的對話,這是 2.1.314 的回歸問題。
  • 閒置時的壓縮(idle compaction) 可能把對話換成一段不是摘要的回覆。
  • 重新啟動的 session 不再把因 API 錯誤而失敗的訊息,搶在後面等待的新訊息之前重送;重啟緊接在 Claude 讀取大型圖片或重試工具呼叫之後時,也不再遺失被中斷的那一輪。
  • headless session 中的 Stop 現在會像對待排隊中的訊息一樣,取消或停止在切換模型後立刻送出的訊息;過去該訊息在按下 Stop 之後仍會繼續執行。
  • headless 執行中的假成功。 mod 掛接 turn.step 時,若 API 錯誤中斷了回覆,claude -p 與 Agent SDK session 仍會回報成功;mod 的 turn.step hook 也可能讓被停止的回覆以成功結束。
  • 自訂斜線命令在失敗、或只有 Claude 能呼叫時,在 claude -p 與 SDK session 中什麼都不會印出。
  • 已刪除的 session 對話記錄,會在閒置的非互動式 session 結束時,連同最後一個 prompt 被重新建立。
  • **工作流程(workflow)**在達到用量上限後恢復時,會重新執行已完成的 agent。
  • 「Now using usage credits」通知在背景 subagent 執行期間,大約每 30 秒就會再出現一次。

MCP、外掛與終端機

  • 在版本探測時就結束的 stdio MCP 伺服器,不再於每次啟動時被重新探測;因自身原因在 3 秒內結束的伺服器,也會被固定使用舊版 handshake 7 天。
  • MCP 工具錯誤:在工具載入前發出的呼叫,現在會回傳該工具的輸入 schema。
  • claude plugin validate 過去會放行 claude plugin marketplace add 會拒絕的自訂名稱 marketplace 檔案。
  • 權限提示可能被送出訊息後立刻輸入的按鍵,或在提示緩慢出現之前輸入的按鍵回答掉。
  • macOS session 在有許多 Bash 命令執行時會卡住,同時記憶體持續增加。
  • macOS 內建的 /bin/bash:當 Bash 工具使用它時,git commit 與 pull request 的建立更可靠。
  • NODE_EXTRA_CA_CERTS:檔案為空、不是 PEM,或以損壞的憑證開頭時,所有連線都會失敗。現在會使用可讀取的憑證,並在 stderr 顯示警告。
  • 自動更新:驗證版本時若遇到短暫的網路失敗,現在會立刻重試,而不是等到下一次檢查。
  • 較小的修正與改進:一次請求含超過 20 張圖片時,圖片過大的錯誤訊息現在會顯示 API 的上限,而不是一律說 2000px;背景 shell 詳細資訊的執行時間會在對話框開啟時持續更新;Claude 在 PushNotification 呼叫中漏掉 status 欄位時,不再出現重複通知;/design revoke 在請求以 404 失敗時不再回報成功;用量上限選單中的「Ask your admin for more usage」一步就能送出請求;You should know 的 toast 改說「try again」,不再說只在終端機有效的「press 2」。

雲端 session、Remote Control 與自架 runner

  • 核准的命令會在要求的資料夾執行。 在自架 runner 或雲端 session 重啟後核准的 shell 命令,過去會改在 session 的起始資料夾執行。現在如果無法進入要求的資料夾,命令就不會執行。
  • 執行中行程的執行檔。 更新或版本清理移除了仍在執行之行程的執行檔後,claude remote-control 主機、背景 daemon 與自架 runner 會無法啟動新 session(spawn ENOENT)。版本清理也會把其他使用者擁有、仍在執行的 Claude Code 行程(例如 sudo claude 留下的)當成已結束,可能因此刪除它的執行檔。
  • 雲端 session 重啟。 雲端 session 重啟後,若已核准的 connector 工具無法使用,現在會告知 Claude;服務連續數分鐘拒絕上傳時,雲端 session 也不再在一輪中途被停止。
  • Setup hook:Setup hook 寫入 CLAUDE_ENV_FILE 的變數,在部分雲端 session 中無法傳到 Bash 工具。
  • iPhone app:回應在工具呼叫處被截斷,或被拒絕的圖片或文件遭移除後,雲端 session 的這一輪會顯示為已結束,實際上卻仍在執行。
  • GitHub Actions 日誌:雲端 session 中的 gh run view --log 與 gh api 日誌請求,現在在大多數環境都能取得日誌,而不是拿到無法連上的轉址。
  • Create PR 失敗:雲端與 Remote Control session 中大多數的失敗訊息,現在會說明原因或附上 GitHub 連結,而不是只說 Try again。
  • 雲端 session 的 /mcp 過去會把模型無法使用的工具算進去;現在每個伺服器那一列會顯示它有多少工具可用。
  • Remote Control:/remote-control 不再在連線失敗後把 session 顯示為可用;工作資料夾不存在時,錯誤訊息會指出該資料夾,而不是令人誤解的「spawn error: ENOENT」;同一個 repository 並排的多個 checkout,在環境選單的 Remote Control 列中各自顯示自己的資料夾名稱;app 未設定標題時,終端機 fork 的 fork 會以「Name (fork 2)」為標題。遠端 session 在暫停或睡眠後也能更快重新連線。
  • 自架 runner:orchestrator 的 spawn-runner hook 環境新增 CLAUDE_RUNNER_SPAWN_REASON,說明 Anthropic 為何送出該請求(例如 runner_lost、resumed),沒有送出請求時則不設定。--release-idle-session-min 是最後一個參數且沒有值(仍會被忽略),或值只有空白(仍會被讀成 0)時,啟動時會顯示警告。

Gateway、VS Code、Claude Tag 與 Code Review

  • Gateway:來自 federation(external_account)認證資訊檔的 Google access token 即將到期時,會新增一則日誌警告。關於 listen.trusted_proxies 的日誌提示,現在會說明只應列出會自行把連線位址加入 X-Forwarded-For 的代理伺服器。Amazon Bedrock 上 AWS CountTokens 失敗時的警告,現在會說明在 501 之後是由 Claude Code(而非 gateway)計算,並且只在 AWS 拒絕存取時才指向 IAM。
  • VS Code:組織設定拒絕其登入的視窗,不再每分鐘在背景啟動新的 Claude Code 行程;登入畫面會顯示 Claude Code 在登入狀態檢查失敗時印出的內容;聊天面板錯誤橫幅中的長字詞,不再把關閉按鈕擠出畫面。
  • Claude Tag:修正 Claude Tag 管理設定中的鍵盤焦點與螢幕閱讀器播報;在連接表單中按 Escape,也不再一併關閉 Add 對話框。
  • Code Review:分析頁面在伺服器或網路失敗後會重試一次,然後顯示 Try again 橫幅,而不是空白卡片。

如何更新

  1. 檢查已安裝的版本:claude --version
  2. 直接就地更新:claude update
  3. 若有腳本解析自架 runner orchestrator 的 nack session=… 日誌行,請更新其中對 retryable=true: 或 retryable=false: 的比對。

相關連結