2.1.219 補課:Opus 5 有三條會咬人的 breaking change

沒有新版,已經安靜八天,所以把 2.1.219 補完。Opus 5 有三個會讓舊呼叫直接壞掉的改動,strictAllowlist 設錯位置完全無效,DirectoryAdded 在 headless 下叫不動。

改了什麼

項目一句話
Opus 5三條 breaking change:它自己會驗證、thinking 算進 max_tokensthinking 關掉配高 effort 直接回 400
Opus 5 定價標準價 $5/$25 per Mtok,跟 Opus 4.8 一樣。$10/$50 是 fast mode,research preview
sandbox.network.strictAllowlist新的設定鍵,但只有 user settings 和 managed settings 算數
DirectoryAdded hook真的是新增的程式碼,不過在 claude -p 下觸發不了
prompt cache最小長度從 1024 降到 512,一批本來太短的 system prompt 會開始命中

workflowSizeGuideline、巢狀 subagent 轉發、mcp_server_errorsclaude mcp list 顯示 HTTP 錯誤,這四條升級就有,不用做事。

為什麼要改

官方文件明講 Opus 5 自己會驗,所以叫你把 prompt 裡的驗證指示刪掉,留著會過度驗證。這條是這次最有意思的東西,它等於承認過去兩年累積的 prompt engineering 有一部分已經變成負債,而沒有任何機制會通知你哪一條過期了,所以 CLAUDE.md 放越久,裡面躺的舊咒語就越多。

strictAllowlist 只能設在 repo 外面不是 bug。不然你 clone 一個惡意 repo,它就能改掉自己的網路政策。

DirectoryAdded 的設計是漂亮的,但它服務的是「平台團隊管很多人的 agent」那種世界。實測在純 claude -p 的 pipeline 裡根本觸發不了,只剩互動式 session 的 /add-dir 和 Agent SDK 的 register_repo_root 兩個入口,而互動式我本來就看得到自己打了什麼。這讓那張入場券又貴了一截,我不會接。

對你的流程有什麼影響

  1. 全域 CLAUDE.md 裡所有「最後加一個驗證步驟」「用 subagent 驗證」的句子刪掉。
  2. 檢查所有寫死 max_tokens 的呼叫。thinking 現在預設開啟而且算進 output 總量,舊的緊 budget 會被截斷。
  3. thinking: {"type":"disabled"}effort: xhighmax 的呼叫,現在回 400。降 effort 或把 thinking 欄位拿掉。
  4. 要開 strictAllowlist 就寫在 user settings 或 managed settings。寫在 repo 的 .claude/settings.json 完全無效,而且不會有任何警告。
  5. 編預算不要拿 $10/$50 去算。那是 fast mode 的價格,research preview,只在第一方 API,Bedrock 和 Vertex 都沒有。
  6. DirectoryAdded 不用接。哪天真的開始跨 repo,第一件事該做的是 diff 新載入的 CLAUDE.md,不是記 log。/add-dir 會把新目錄的 CLAUDE.md 和 skills 灌進當前 session,載入點就是攻擊面。
  7. 巡版本的腳本改用 pushed_atupdated_at 會被 star 之類的 metadata 推動,用錯欄位會天天報假警。

版本時間與符號比對來自 npm registry 和本機安裝的執行檔(本機實測)。定價、sandbox 與 hook 行為引自 Anthropic 文件(官方文件)。DirectoryAddedclaude -p 下叫不動為本次實測,changelog 未提及此限制。


沒有新版,也是一則新聞。
More like this