The forwarded tier was agent.service_tier mapped by hand, so "auto",
"cold" and "ultrafast" went to codex verbatim, and a null went out on every
normal turn, overriding a tier configured in codex itself.
- The tier now comes from effective_request_overrides(agent), the same
source the Responses path sends: a static /fast tier pinned per
model/route by every surface, or an open auto/cold window. It goes out in
codex's words (OpenAI "priority" is codex "fast"); a tier codex has no
word for (ultrafast) is not sent.
- The session remembers the tier its thread last received and sends
serviceTier only on a change. A new thread starts from codex's configured
default. A resumed thread is treated as unknown, so its first turn sends
Hermes' tier even when that is a clearing null: CLI /fast rebuilds the
agent, and "/fast off" must reach a thread that still carries fast.