改了什麼↗
| 項目 | 一句話 |
|---|---|
| 2.1.226 | latest 和 next 都指向它,發出來 22 小時,但把版本號、建置時間、git SHA 換回去之後,跟 2.1.225 的 bundle 逐 byte 相同 |
| 2.1.225 的 changelog | 昨天出刊時還沒有,今天補上來,十四條 |
claude -p 被扣住的訊息 | 會照 dialogExpiry 到期丟掉並回一張 expired 收據給寄件端,不再無限期停在那裡 |
CLAUDE_CODE_OAUTH_TOKEN | 遇到 401 時不再被 ~/.claude/.credentials.json 裡登入態的短命 token 蓋掉 |
crossSessionInbound | 被組織 managed settings 或 repo 設定壓成 hold 時,提示會講明是哪一層壓的 |
ListAgents | 列得出別台機器上的 Remote Control session,可以直接指名開話題,不再只能等對方先開口 |
claude agents | 進到不受信任的目錄會先問一次,跟 claude 一致 |
其餘跟你關係不大:gateway 的花費上限提示、macOS 上 MCP OAuth 的 401 連發、auto mode 把安全過濾器的拒絕誤算進連續阻擋次數、幾條 Remote Control 和 VS Code 的修補。
為什麼要改↗
2.1.226 沒有為什麼。changelog 那句「Bug fixes and reliability improvements」,在我比得到的 linux-x64 這份二進位裡對應不到任何東西。
昨天那篇的第 3 點,我是照官方文件那句「A held message stays held there」寫的。2.1.225 把它改掉了:headless session 扣住訊息時會掛一個計時器,dialogExpiry 到期就丟,寄件端收得到 expired 的回執(本機實測)。文件那頁今天還是舊的。
401 那條比較有感。舊的復原路徑遇到 401 會去讀硬碟上的登入憑證,然後直接覆蓋 CLAUDE_CODE_OAUTH_TOKEN。你在 CI 裡放的是 claude setup-token 拿的長命 token,一次網路抖動就被換成登入態那顆短命的,剩下的 job 全部 401 到重啟為止。2.1.225 改成留著你給的那顆,並印一行:
OAuth 401: keeping the user-supplied CLAUDE_CODE_OAUTH_TOKEN instead of adopting the stored credential.
同一類的坑沒補完。#80091 七月開到現在還沒關,--channels host 底下憑證優先序仍然是反的,那是另一條路徑(社群)。
對你的流程有什麼影響↗
- 升,
npm i -g @anthropic-ai/claude-code。你會拿到 2.1.226,跟 2.1.225 是同一份東西。 - CI 裡有 pin 版本的不用動。2.1.225 跳到 2.1.226 換到的只有一個字串,為這個開一支 PR 不划算。
- 昨天叫你在
-pworker 的--settings裡明寫crossSessionInbound: "accept",那條還是照做,理由換了:不寫也不會卡死,只是訊息會安靜過期。過期還分兩種。兩邊權限模式對不上而扣住的走dialogExpiry,你自己寫死hold的那種要等 session 收掉才一次結清(本機實測)。 - CI 裡有
CLAUDE_CODE_OAUTH_TOKEN的話,順手看一下那台機器的~/.claude/.credentials.json還在不在。2.1.225 之後它不會再被拿來蓋你的 token,以前那種隔一陣子就來一次的 401 也跟著沒了。 - 這層保護有兩個例外,寫死在程式碼裡:
ANTHROPIC_UNIX_SOCKET有值,或是 Remote Control 的子 session(CLAUDE_CODE_REMOTE_SESSION_ID)。這兩種還是會去讀硬碟,不過同一版也多擋了一層,硬碟上已經過期的憑證不會再被撿起來用(本機實測)。 - 之前設了
crossSessionInbound: "accept"卻沒生效的,再開一次看提示怎麼講。現在會指名是 managed settings 還是 repo 設定壓的。repo 只能往嚴的方向調,你的 accept 蓋不過去。 - 不用管:gateway 花費上限那條要對面的 gateway 也在 2.1.225 才有意義,
claude agents的信任提示你本來就在自己信任的目錄裡跑。
版本、dist-tag、發佈時間取自 npm registry。2.1.226 與 2.1.225 的 linux-x64 執行檔逐 byte 比對,以及 401 復原路徑、headless 過期計時器的程式碼,來自本次下載的三份 tarball(本機實測)。held message 行為與 dialogExpiry 預設值引自 code.claude.com(官方文件)。憑證優先序引自 GitHub issue #80091(社群)。