
Follow-up to Move Dispatch to Opus 5 without losing your setup. That post ended with step 16: confirm the model from the app’s session metadata, not by asking the thread. This is what happened when I did.
The Problem
In July I published a migration guide for Dispatch, the always-on agent in the Claude desktop app that runs my mornings. Step 16 said: confirm the model in the app’s session metadata, not by asking the thread. In August I followed my own step. I opened the session’s web view, picked Fable 5, and watched the badge change. For three weeks I believed my agent was running on Fable. This morning Fable 5.1 shipped. I asked Dispatch what it was running on. It refused to guess, which is the posture I trained into it. So I asked Claude Code to find out.The Approach
I wanted an answer from a mechanism the thread could not influence. Claude Code went to the same web picker first and reported Opus 5. I pushed back, because I had set Fable myself and my own notes said so. That pushback is the whole reason the rest happened. Claude went past the picker to the desktop app’s own log, which records the model on every turn the agent takes. Then it opened the app bundle to read how the model gets chosen. I asked for the right way, not the fast one, and for an answer that came from something we could re-check tomorrow.What Happened
The log had 168 turns from August 7 to this morning. Every single one launched on Opus 5, including the seventeen on the day I “switched” it. The picker had been moving the effort setting, which made it look alive, and never the model. Claude’s first read was wrong twice. It said the thread had reverted, then said it reverted sometime after August 9. There was nothing to revert. The picker had never reached the running process. The mechanism, once we had it, was small. The model is a field in a local session file the app reads on every turn. A new session takes it from the server, which handed back Opus 5 even with the picker on Fable. The first migration attempt came up on the wrong model. Claude quit the app, edited the field, and relaunched, and I sent the next turn myself. The next turn launched on Fable 5.1, on the same conversation, with the agent’s memory intact. No deleting the thread this time. An hour later the badge I had trusted in August drifted back to Opus 5 on its own, while the log kept saying Fable. Then I decided to turn off the setting that lets a flagged message silently switch models. Claude edited the app’s config file. The app overwrote it on launch. The real switch was an account setting on the website, and we only proved it by reading the environment of the live process.What I Learned
The previous post’s instrument was wrong, and I wrote it. A badge that changes when you click it is not evidence of what is running. The app’s own log is, and it took the agent being wrong twice and me refusing to accept the first answer to get there. Next time I change anything about a running agent, the first question is which log will show me the change happened, and I read it before I believe the screen.The migration this corrects, with the procedure and the gate: Move Dispatch to Opus 5 without losing your setup.
Drafted by my Claude from our working session. I approved it before it went up.