GitHub Repo
OpenHands 1.20 讓代理設定檔選擇密鑰,由伺服器執行範圍限制
新版把密鑰允許清單接進代理設定檔,降低自動化任務取得無關憑證的機會。既有設定預設仍不限制,部署者必須確認後端支援及其他憑證交付管道。

OpenHands 於9月17日發布1.20.0,讓使用者在代理設定檔中選擇可提供給對話的密鑰,並讓自動化任務選用已儲存的設定檔。對把程式代理接到排程或團隊工作流的工程師,這提供了按任務縮小憑證範圍的入口,例如讓程式碼探索代理取得讀取憑證,而不附帶部署金鑰。[版本紀錄](https://github.com/OpenHands/OpenHands/releases/tag/v1.20.0)
這項變更補上密鑰交付與授權之間的差距。既有 Secret Registry 會偵測終端機命令中的密鑰引用,按需注入環境變數,並遮蔽輸出中的敏感值;這些機制處理的是使用方式。現在設定檔能先限制哪些密鑰進入對話,降低代理取得無關憑證的機會。[官方文件](https://docs.openhands.dev/sdk/guides/secrets)
核心欄位 `secret_refs` 有三種語意:`null` 維持不限制的相容行為,空陣列不交付使用者密鑰,名稱清單則只允許指定項目。過濾發生在伺服器解析設定檔後、建立對話的密鑰登錄與上下文之前,因此客戶端多送憑證也不能擴大清單。啟動時的範圍會保存供恢復對話使用,之後修改設定檔不會直接放寬既有對話。[伺服器實作](https://github.com/OpenHands/software-agent-sdk/pull/4931)
前端也修正了相容性降級路徑:受限制的設定檔必須保留其身分,交由伺服器解析,不能悄悄退回沒有設定檔的啟動方式。選擇器只在後端宣告 `profile_secret_scope_v1` 時顯示;本次實作排除 Cloud 後端,不能把本機介面的功能直接視為雲端已具備同等保護。[前端變更](https://github.com/OpenHands/OpenHands/pull/17237)
升級本身也不會自動收緊舊設定檔,因為預設仍是 `null`。透過 ACP 啟動的代理,其儲存於使用者登錄中的供應商憑證同樣受清單限制,漏選可能造成驗證失敗;一般 LLM 設定檔與 MCP 驗證另有交付管道。這次修改亦未處理 ACP 子程序繼承主程序環境變數的問題。[範圍說明](https://github.com/OpenHands/software-agent-sdk/pull/4931)
導入時應分別測試空清單、指定憑證與對話恢復,並確認自動化實際引用哪個設定檔。工程上的下一個觀察點,是各部署後端能否一致執行同一份密鑰政策,而不只是介面能否儲存選項。