Files
platform/src
pastilhasandClaude Opus 5 42d9068f7b sonnet is what runs when nobody chose
every surface with no model picker was quietly running opus. the fallback was
the bare harness, `claude-code`, and bare means the CLI picks its own tier —
agent-files.ts says so in as many words. so a plugin's chat panel, a nudge, a
task with no configured default, any chat opened where there is nowhere to
choose: all opus, for work that rarely needs it. the commander pinned to sonnet
on 2026-08-25 after spending ~$0.26 of opus on one routing decision was the
same problem noticed in one place.

DEFAULT_MODEL could not simply be changed, because it is two questions wearing
one constant. decideResume uses it as a HARNESS IDENTITY when neither side
knows which sidecar a resuming session belongs to, and that comparison is
between harnesses — a tier suffix there would be comparing something else, and
the three failures its comment records are all delivery failures. so it stays
bare and keeps its one job, now stated.

CHAT_DEFAULT_MODEL is the other question, answered separately. a floor, not a
ceiling: a client that names a model still wins, an account default still wins,
and only "nobody chose" changes. tasks get the same treatment for the same
reason and a stronger one — a task runs unattended, often repeatedly, with
nobody watching the bill.

the nudger held a copy of the string; it holds the constant now.

interim on purpose. per-surface defaults, or something that reads the work
rather than the caller, is the better answer and is not this. one constant, one
place, easy to move.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
2026-08-25 17:51:24 +00:00
..