# v0.24.11 Release Notes

> v0.24.10 -> v0.24.11

## Summary

Agent selection switches from a single-name pick to a prioritized chain so the runtime cascades to the next candidate when a provider call fails mid-turn. Optional provider tools always register at startup and are hidden per-turn based on credential presence, keeping the toolset coherent as keys come and go. Closes a nil-agent crash path and a Codex OAuth error decode bug.

<details>
<summary>翻譯</summary>

代理選擇從單一候選改為優先順序鏈，turn 中遇到 provider 失敗時 runtime 會自動接力下一個候選。選用工具改為啟動時一律註冊、每輪依金鑰存在與否決定可見性，金鑰新增或撤銷時 toolset 即時保持一致。同時補上 nil agent 崩潰路徑與 Codex OAuth error 解碼修正。

</details>

## Changes

### FEAT
- Add agent fallback resolution and runtime failover [aa0835a]

<details>
<summary>翻譯</summary>

- 代理選擇器改回傳逗號分隔的優先順序鏈（首選在前），`ExecData` 新增 `FallbackAgents`；`exec.Run` 在主要 agent 送訊失敗時依序試用後備，TUI／Discord／Telegram／routes 一同接通 failover plumbing

</details>

### UPDATE
- Always register optional tools and gate them by credential checks [18a0ab7]

<details>
<summary>翻譯</summary>

- 拿掉 `gemini/stt`、`gemini/youtube`、`openaiCodex/image2`、`telegram/tool`、`discord/tool` register 端的 startup credential 檢查，工具一律註冊；`exec.Execute` 改在每輪依 `keychain.Get` 與 `cfg.{T,D}Enabled` 動態 append `data.ExcludeTools`，與 KuraDB 既有 per-turn exclusion 路徑對齊

</details>

### FIX
- Fix nil agent fallback and Codex OAuth error parsing [7b8bc0a]

<details>
<summary>翻譯</summary>

- `exec.Run` 在 `SelectAgent` 回 nil 時改回明確錯誤訊息（提示跑 `agen model add`），不再 nil deref；`SelectAgent` 在 `bot == nil` 時回 `registry.Fallback`；Codex OAuth `exchangeCode`／`refresh` 修正 error response 欄位解析

</details>

## Scope

- `internal/agents/exec/` — FEAT, UPDATE, FIX (`execute.go`, `run.go`, `selectAgent.go`)
- `configs/prompts/agent_selector.md` — FEAT (comma-separated chain output)
- `internal/agents/provider/openaiCodex/` — FIX (`login.go`, `refresh.go`, `type.go`)
- `internal/agents/provider/openaiCodex/image2/` — UPDATE (always register, runtime gate)
- `internal/agents/provider/gemini/` — UPDATE (`stt/register.go`, `youtube/register.go`)
- `internal/routes/handler/` — FEAT (`chatCompletions/run.go`, `send.go`)
- `internal/runtime/telegram/` — FEAT, UPDATE (`run.go`, `tool/register.go`)
- `internal/runtime/discord/` — FEAT, UPDATE (`run.go`, `tool/register.go`)
- `internal/runtime/tui/` — FEAT, UPDATE (`tui.go`, `update.go`, `cmdSelector.go`)

***

Generated by [SKILL](https://github.com/pardnchiu/skill-version-generate)
