clean-postman-32056
08/07/2026, 6:38 PMlimited-student-10747
08/07/2026, 6:43 PMdamp-australia-7460
08/08/2026, 10:59 AMstraight-dog-12443
08/08/2026, 11:00 AMclean-postman-32056
08/08/2026, 4:55 PMclean-postman-32056
08/08/2026, 5:00 PMclean-postman-32056
08/08/2026, 5:00 PMclean-postman-32056
08/08/2026, 5:02 PMclean-postman-32056
08/08/2026, 5:20 PMstraight-dog-12443
08/08/2026, 5:57 PMstraight-dog-12443
08/08/2026, 5:59 PMcalm-artist-7206
08/08/2026, 6:14 PMcalm-artist-7206
08/08/2026, 6:14 PMstraight-dog-12443
08/08/2026, 6:15 PMstraight-dog-12443
08/08/2026, 6:15 PMcalm-artist-7206
08/08/2026, 6:17 PMstraight-dog-12443
08/08/2026, 6:18 PMcalm-artist-7206
08/08/2026, 6:18 PMcalm-artist-7206
08/08/2026, 6:19 PMstraight-dog-12443
08/08/2026, 6:20 PMclean-postman-32056
08/08/2026, 8:48 PMclean-postman-32056
08/08/2026, 8:50 PMstraight-dog-12443
08/08/2026, 9:56 PMstraight-dog-12443
08/08/2026, 11:29 PMoff would a better default.
In theory, this could result in unexpected charges and angry users.
pill sync: github.com/OpenHands/OpenHands/pull/16439
llm_switch: github.com/OpenHands/OpenHands/pull/16441clean-postman-32056
08/08/2026, 11:56 PMstraight-dog-12443
08/09/2026, 12:49 AMclean-postman-32056
08/09/2026, 1:02 AMclean-postman-32056
08/09/2026, 4:26 PMcalm-artist-7206
08/09/2026, 4:33 PMcalm-artist-7206
08/09/2026, 4:41 PMbase_state.json in the conversations/ directory.
That is the active LLM though.
I don’t think it saves inactive profiles… so I don’t know how this happened but to note quickly:
• it should be reproducible thanks to your detailed description of what you did
• if I were to guess, we have a code design fault in the agent-server, which might lead to this: there are two sources of truth for the conversation state in agent-server, aside from base_state.json there’s also a meta.json which duplicates a lot of these settings, and this feels to me like a bug with what gets updated into one and not the other, then restored from the other.clean-postman-32056
08/09/2026, 4:49 PMclean-postman-32056
08/09/2026, 4:49 PMclean-postman-32056
08/09/2026, 4:50 PMcalm-artist-7206
08/09/2026, 4:51 PMcalm-artist-7206
08/09/2026, 4:54 PMcalm-artist-7206
08/09/2026, 4:56 PMclean-postman-32056
08/09/2026, 4:56 PMcalm-artist-7206
08/09/2026, 4:58 PMclean-postman-32056
08/09/2026, 4:59 PMclean-postman-32056
08/09/2026, 5:01 PMcalm-artist-7206
08/09/2026, 5:02 PMcalm-artist-7206
08/09/2026, 5:03 PMcalm-artist-7206
08/09/2026, 5:09 PMbland-bear-604
08/09/2026, 5:12 PMbase_state.json and meta.json. On resume the server rebuilds the agent from meta.json and that copy wins — `base_state.json`'s agent is only used to check the tools still match. So if a model switch is written to one file but not the other, a reload silently reverts it. That's the class of bug Neal hit.
Fix direction: make base_state.json the single source of truth and keep meta.json to just the lightweight list-view info. I'm on a branch now, with a regression test for switch, then reload.
One open question I've put to Engel: whether to fully remove the agent from meta.json (cleanest, but changes the resume contract) or do a smaller targeted fix first. Will report back with a PR.bland-bear-604
08/09/2026, 5:36 PMmeta.json (clean, but changes the resume contract), (b) a smaller targeted fix that keeps both files but makes base_state.json win, and (c) — Engel's idea — stop `meta.json`'s record from inheriting the request shape at all, so the agent naturally only lives in base_state.json.
Going with (c): it fixes the root modeling, not just the symptom. Writing it up now, then a PR.bland-bear-604
08/09/2026, 5:39 PMclean-postman-32056
08/09/2026, 6:26 PMcalm-artist-7206
08/09/2026, 7:11 PMcalm-artist-7206
08/09/2026, 7:17 PMbland-bear-604
08/09/2026, 8:14 PMmeta.json) no longer inherits the create-request shape, so the agent simply can't live there anymore — base_state.json owns it. On resume the agent loads from base_state.json, so a persisted model switch survives a reload. Old meta.json files still load, so no migration.
Green locally (full agent-server suite + new switch→reload regression tests). One caveat in the PR: the ACP/Codex credential paths are re-homed but only unit-tested — they need a live check before merge.bland-bear-604
08/09/2026, 8:22 PMclean-postman-32056
08/09/2026, 8:24 PMclean-postman-32056
08/09/2026, 8:25 PMbland-bear-604
08/09/2026, 9:32 PMblue-sundown-4488
09/03/2026, 7:52 PM