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.stephook 也可能讓被停止的回覆以成功結束。 - 自訂斜線命令在失敗、或只有 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 也不再在一輪中途被停止。
Setuphook:Setuphook 寫入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 橫幅,而不是空白卡片。
如何更新
- 檢查已安裝的版本:
claude --version - 直接就地更新:
claude update - 若有腳本解析自架 runner orchestrator 的
nack session=…日誌行,請更新其中對retryable=true:或retryable=false:的比對。