{"i":5,"slug":"coding-agents-head-to-head","chart":{"id":"coding-agents-token-mix","title":"Tokens per session, as each CLI reports them","subtitle":"Mean per session by kind · not comparable across vendors","kind":"stacked-bar","unit":"tokens","yLabel":"Tokens","viz":"TokenStack","series":{"$k":["name","points"],"$r":[["Cache read",{"$k":["label","value","n"],"$r":[["Claude Sonnet 5.5 · Claude Code",73846,12],["Claude Opus 5.5 · Claude Code",96964,12],["GPT-6.1 Sol (medium, tester’s AGENTS.md) · Codex CLI",174560,12]]}],["Cache write",[{"label":"Claude Sonnet 5.5 · Claude Code","value":9163,"n":12},{"label":"Claude Opus 5.5 · Claude Code","value":11378,"n":12}]],["Uncached input",{"$k":["label","value","n"],"$r":[["Claude Sonnet 5.5 · Claude Code",13,12],["Claude Opus 5.5 · Claude Code",16,12],["GPT-6.1 Sol (medium, tester’s AGENTS.md) · Codex CLI",19811,12]]}],["Output",{"$k":["label","value","n"],"$r":[["Claude Sonnet 5.5 · Claude Code",3359,12],["Claude Opus 5.5 · Claude Code",5621,12],["GPT-6.1 Sol (medium, tester’s AGENTS.md) · Codex CLI",4072,12]]}]]},"note":"Claude Code reports uncached input, cache reads, cache writes and output. Codex CLI reports input (its cached part included), the cached part and output (reasoning included), and no cache writes. Different tokenizers and context handling: compare Sonnet with Opus here, not Claude with Codex.","sourceIds":["agent-coding-agents"]}}