Dispatch hands work to subagents with a model tag. and todos get long so context can travel
I started putting things like `model:haiku` at the end of todo lines. In the second repo todo there is still a line like this:
- [x] **Agent model:haiku 검증**. docs/에 `haiku-test.md` 파일 생성, 내용: "실행 모델: haiku". `auto` `model:haiku`
Creating one file and writing a string does not need an expensive model. Design and draft quality do. The rule I settled on earlier still holds: if this step is wrong, is the fix one line or a full rewrite?
I already wrote about pinning models on skill frontmatter in the token-saving post. This is the next axis: setting models dynamically per task.
Dispatch runs subagents
/dispatch collects `auto` tasks from the repo’s docs/todo.md. The orchestrator stays in the main session. Real work goes to a subagent (or, on Claude, Workflow agent()).
When it hands off, `model:fast|mid|strong|reason` on the todo line is injected. Under Claude that looked like Agent(model: "haiku"). Nesting Skill() alone does not switch models. it only injects context. That was the pin-level failure day: models that would not change.
Now a profile model_map turns grades into vendor IDs. On Grok the same axis lands on spawn_subagent. I discovered it on Claude; the structure is “todo tag → delegated call model,” so it still applies when the agent changes.
In practice:
| Cost if wrong | Feel | Todo tag example |
|---|---|---|
| Low (file create, I/O, simple checks) | cheap | model:fast / old haiku |
| Medium (classify, light edits) | mid | model:mid / old sonnet |
| High (design, draft quality) | expensive | model:strong / old opus |
Splitting carefully stretches a reset window. That is why both skills and todos got model tags.
So todos got longer
A subagent does not know the parent conversation. Agreements from main-session back-and-forth do not travel automatically. Roughly, dispatch passes:
- the todo line (goal, scope, tags)
- the indented detail block (repro steps, bans, file hints)
- the dossier (acceptance criteria, decisions, verification)
Detail blocks grow so context can be packed in. At first the todos looked verbose. They no longer look like waste. they are the SSOT for the handoff prompt. Shorten them and you save tokens, then the blank-context worker fails. Pinning a cheap model by difficulty while omitting repro steps costs more.
Todoist descriptions are not read by dispatch either. If it is not in repo todo.md, it does not exist.
The caveats (blank slate, stop conditions, 140 turns) are in Subagents start blank. This post only covers where to pin models for tokens, and why todos get long.
One line
A model: tag on a todo is not decoration. It is the token lever when dispatch spawns a subagent. Skill-side models track pipeline stage; todo-side models track task difficulty.
Pack the handoff context on the same line and detail block. A long-looking todo is often design.