Quick answer
Each Codex session file records the model used for the turn. Grouping those records by model gives input, cached, output, and reasoning tokens per model. UsageAtlas does this automatically in its Insights view; the model you use for exploration usually produces the most requests, while the strongest model produces the most tokens per request.
Get the model into the total
A total token count hides the decision that caused it. Model is the most useful split because it is the variable you control before a task starts.
| Metric | What it tells you | What to do with it |
|---|---|---|
| Requests per model | Where the volume is | Move repetitive work to a cheaper model |
| Tokens per request | How heavy each call is | Trim context on the heaviest model |
| Output share | How much the model writes | Ask for diffs instead of essays |
| Cached share | How much prompt reuse you get | Keep a stable prefix across turns |
The pattern most people find
Small models win on request count and lose on tokens per request only if you feed them a large context. In practice the expensive line is often the model you use for long refactors with the whole repository in view.
- Exploration: many small requests, low tokens each.
- Implementation: fewer requests, larger context.
- Debugging loops: repeated context, highest waste.
- Review passes: output-heavy, cheap if the diff is the only input.
Turn the split into a decision
- Open Insights in UsageAtlas and select a 30-day range.
- Sort models by total tokens, then by tokens per request.
- Pick the model with the highest tokens per request and find its top sessions.
- Rewrite those prompts to pass file ranges instead of whole files.
- Recheck after a week; the split should shift without changing your workflow.
Why the model split matters more than the total
A single total tells you how much you used. The per-model split tells you why. Reasoning models bill more output tokens for the same visible answer, and a small model used for exploration can account for a large share of requests without accounting for a large share of cost. Reading the split is the difference between cutting volume and cutting the wrong volume.
- High reasoning-model share with few tasks: long thinking per task.
- High small-model share with many tasks: exploration and retries.
- Flat split across models: you are switching manually, so compare per task.
- One model dominating: that is the default to review first.
For the cost side of the same split, see Codex cost per project, and for the counting rules see how Codex counts tokens.
Questions, answered
Does Codex record which model each request used?
Yes. Session files include model metadata for the turn, which is what makes a per-model breakdown possible.
Why is the cheaper model showing more tokens?
You probably send it a larger context or use it for more requests. Compare tokens per request, not just the total.
Can I see the model split for one project?
Yes, if the tracker groups sessions by working directory. UsageAtlas reads the directory from the session record, so project and model can be combined.