{
 "title": "Antigravity CLI vs Claude Code vs Codex: startup tokens, MCP tools and the same coding task",
 "url": "https://tokensave.app/data/antigravity-cli-vs-claude-code-vs-codex",
 "license": "CC BY 4.0",
 "citation": "TokenSave (2026). Antigravity CLI vs Claude Code vs Codex: startup tokens, MCP tools and the same coding task [Data set]. Zenodo. https://doi.org/10.5281/zenodo.23569397",
 "measured": "2026-10-22",
 "setup": "Windows 11; Claude Code 2.1.295 (Opus 5.5, Max plan); Codex CLI 0.162.0-alpha.17.2 (gpt-6-luna, ChatGPT plan); Antigravity CLI 1.4.5 (gemini-4-argon-medium and claude-opus-5-5-medium, personal Google account)",
 "note": "input_tokens_reported is each CLI's own figure. Claude Code: input + cache creation + cache read. Codex: input including cached input. Antigravity: the usage.input_tokens field of agy --output-format json; cache_read_tokens is reported separately and for the Opus runs is larger than input_tokens, so it is not contained in it there. Read input_tokens_reported + cache_read_tokens as an upper bound for Antigravity.",
 "tools": {
  "claude": "Claude Code + Opus 5.5",
  "codex": "Codex + gpt-6-luna",
  "agyg": "Antigravity + Gemini 4 Argon",
  "agyo": "Antigravity + Opus 5.5"
 },
 "rows": [
  {
   "run": "agyg_game_r1",
   "tool": "agyg",
   "kind": "game",
   "n": null,
   "rep": 1,
   "seconds": 90,
   "inp": 13672,
   "cache_read": 6797,
   "out": 7012,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1,
   "lines": 686,
   "check_score": true,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": ""
  },
  {
   "run": "agyg_game_r2",
   "tool": "agyg",
   "kind": "game",
   "n": null,
   "rep": 2,
   "seconds": 70,
   "inp": 12148,
   "cache_read": 6796,
   "out": 5467,
   "thinking": 178,
   "status": "SUCCESS",
   "turns": 1,
   "lines": 522,
   "check_score": true,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": ""
  },
  {
   "run": "agyg_game_r3",
   "tool": "agyg",
   "kind": "game",
   "n": null,
   "rep": 3,
   "seconds": 82,
   "inp": 13302,
   "cache_read": 6796,
   "out": 6641,
   "thinking": 93,
   "status": "SUCCESS",
   "turns": 1,
   "lines": 616,
   "check_score": true,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": ""
  },
  {
   "run": "agyg_n0_r1",
   "tool": "agyg",
   "kind": "base",
   "n": 0,
   "rep": 1,
   "seconds": 20,
   "inp": 6747,
   "cache_read": 0,
   "out": 5,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyg_n0_r2",
   "tool": "agyg",
   "kind": "base",
   "n": 0,
   "rep": 2,
   "seconds": 14,
   "inp": 6743,
   "cache_read": 0,
   "out": 5,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyg_n10_r1",
   "tool": "agyg",
   "kind": "base",
   "n": 10,
   "rep": 1,
   "seconds": 17,
   "inp": 7241,
   "cache_read": 0,
   "out": 5,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyg_n10_r2",
   "tool": "agyg",
   "kind": "base",
   "n": 10,
   "rep": 2,
   "seconds": 10,
   "inp": 7243,
   "cache_read": 0,
   "out": 5,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyg_n1_r1",
   "tool": "agyg",
   "kind": "base",
   "n": 1,
   "rep": 1,
   "seconds": 16,
   "inp": 7202,
   "cache_read": 0,
   "out": 5,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyg_n1_r2",
   "tool": "agyg",
   "kind": "base",
   "n": 1,
   "rep": 2,
   "seconds": 10,
   "inp": 7201,
   "cache_read": 0,
   "out": 5,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyg_n30_r1",
   "tool": "agyg",
   "kind": "base",
   "n": 30,
   "rep": 1,
   "seconds": 16,
   "inp": 7329,
   "cache_read": 0,
   "out": 5,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyg_n30_r2",
   "tool": "agyg",
   "kind": "base",
   "n": 30,
   "rep": 2,
   "seconds": 9,
   "inp": 7326,
   "cache_read": 0,
   "out": 5,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyo_game_r1",
   "tool": "agyo",
   "kind": "game",
   "n": null,
   "rep": 1,
   "seconds": 41,
   "inp": 9770,
   "cache_read": 15385,
   "out": 4310,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1,
   "lines": 225,
   "check_score": true,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": ""
  },
  {
   "run": "agyo_game_r2",
   "tool": "agyo",
   "kind": "game",
   "n": null,
   "rep": 2,
   "seconds": 44,
   "inp": 9800,
   "cache_read": 15380,
   "out": 4390,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1,
   "lines": 232,
   "check_score": true,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": ""
  },
  {
   "run": "agyo_game_r3",
   "tool": "agyo",
   "kind": "game",
   "n": null,
   "rep": 3,
   "seconds": 42,
   "inp": 9896,
   "cache_read": 15377,
   "out": 4434,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1,
   "lines": 251,
   "check_score": true,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": ""
  },
  {
   "run": "agyo_n0_r1",
   "tool": "agyo",
   "kind": "base",
   "n": 0,
   "rep": 1,
   "seconds": 8,
   "inp": 5327,
   "cache_read": 5167,
   "out": 4,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyo_n0_r2",
   "tool": "agyo",
   "kind": "base",
   "n": 0,
   "rep": 2,
   "seconds": 8,
   "inp": 5325,
   "cache_read": 5167,
   "out": 4,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyo_n10_r1",
   "tool": "agyo",
   "kind": "base",
   "n": 10,
   "rep": 1,
   "seconds": 6,
   "inp": 5660,
   "cache_read": 5583,
   "out": 4,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyo_n10_r2",
   "tool": "agyo",
   "kind": "base",
   "n": 10,
   "rep": 2,
   "seconds": 7,
   "inp": 5664,
   "cache_read": 5583,
   "out": 4,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyo_n1_r1",
   "tool": "agyo",
   "kind": "base",
   "n": 1,
   "rep": 1,
   "seconds": 8,
   "inp": 5608,
   "cache_read": 5583,
   "out": 4,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyo_n1_r2",
   "tool": "agyo",
   "kind": "base",
   "n": 1,
   "rep": 2,
   "seconds": 8,
   "inp": 5600,
   "cache_read": 5583,
   "out": 4,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyo_n30_r1",
   "tool": "agyo",
   "kind": "base",
   "n": 30,
   "rep": 1,
   "seconds": 8,
   "inp": 5743,
   "cache_read": 5583,
   "out": 4,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "agyo_n30_r2",
   "tool": "agyo",
   "kind": "base",
   "n": 30,
   "rep": 2,
   "seconds": 7,
   "inp": 5743,
   "cache_read": 5583,
   "out": 4,
   "thinking": 0,
   "status": "SUCCESS",
   "turns": 1
  },
  {
   "run": "claude_game_r1",
   "tool": "claude",
   "kind": "game",
   "n": null,
   "rep": 1,
   "seconds": 62,
   "inp": 79316,
   "cache_read": 51766,
   "out": 7897,
   "cost": 0.3887,
   "turns": 2,
   "ok": true,
   "lines": 513,
   "check_score": true,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": ""
  },
  {
   "run": "claude_game_r2",
   "tool": "claude",
   "kind": "game",
   "n": null,
   "rep": 2,
   "seconds": 52,
   "inp": 77868,
   "cache_read": 51766,
   "out": 6595,
   "cost": 0.3511,
   "turns": 2,
   "ok": true,
   "lines": 421,
   "check_score": true,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": ""
  },
  {
   "run": "claude_game_r3",
   "tool": "claude",
   "kind": "game",
   "n": null,
   "rep": 3,
   "seconds": 60,
   "inp": 78830,
   "cache_read": 51766,
   "out": 7447,
   "cost": 0.3758,
   "turns": 2,
   "ok": true,
   "lines": 420,
   "check_score": true,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": ""
  },
  {
   "run": "claude_n0_r1",
   "tool": "claude",
   "kind": "base",
   "n": 0,
   "rep": 1,
   "seconds": 6,
   "inp": 35781,
   "cache_read": 15923,
   "out": 4,
   "cost": 0.1621,
   "turns": 1,
   "ok": true
  },
  {
   "run": "claude_n0_r2",
   "tool": "claude",
   "kind": "base",
   "n": 0,
   "rep": 2,
   "seconds": 4,
   "inp": 35781,
   "cache_read": 15923,
   "out": 4,
   "cost": 0.1621,
   "turns": 1,
   "ok": true
  },
  {
   "run": "claude_n10_r1",
   "tool": "claude",
   "kind": "base",
   "n": 10,
   "rep": 1,
   "seconds": 4,
   "inp": 35917,
   "cache_read": 15923,
   "out": 4,
   "cost": 0.1632,
   "turns": 1,
   "ok": true
  },
  {
   "run": "claude_n10_r2",
   "tool": "claude",
   "kind": "base",
   "n": 10,
   "rep": 2,
   "seconds": 6,
   "inp": 35917,
   "cache_read": 15923,
   "out": 4,
   "cost": 0.1632,
   "turns": 1,
   "ok": true
  },
  {
   "run": "claude_n1_r1",
   "tool": "claude",
   "kind": "base",
   "n": 1,
   "rep": 1,
   "seconds": 5,
   "inp": 35794,
   "cache_read": 15923,
   "out": 4,
   "cost": 0.1622,
   "turns": 1,
   "ok": true
  },
  {
   "run": "claude_n1_r2",
   "tool": "claude",
   "kind": "base",
   "n": 1,
   "rep": 2,
   "seconds": 5,
   "inp": 35794,
   "cache_read": 15923,
   "out": 4,
   "cost": 0.1622,
   "turns": 1,
   "ok": true
  },
  {
   "run": "claude_n30_r1",
   "tool": "claude",
   "kind": "base",
   "n": 30,
   "rep": 1,
   "seconds": 8,
   "inp": 36169,
   "cache_read": 15923,
   "out": 4,
   "cost": 0.1652,
   "turns": 1,
   "ok": true
  },
  {
   "run": "claude_n30_r2",
   "tool": "claude",
   "kind": "base",
   "n": 30,
   "rep": 2,
   "seconds": 6,
   "inp": 36169,
   "cache_read": 15923,
   "out": 4,
   "cost": 0.1652,
   "turns": 1,
   "ok": true
  },
  {
   "run": "codex_game_r1",
   "tool": "codex",
   "kind": "game",
   "n": null,
   "rep": 1,
   "seconds": 75,
   "inp": 70704,
   "cache_read": 60032,
   "out": 7118,
   "reasoning": 61,
   "lines": 29,
   "check_score": false,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": "checker missed scoring (ball hit 32 bricks in a manual hook); lives 3-2-1-0 confirmed"
  },
  {
   "run": "codex_game_r2",
   "tool": "codex",
   "kind": "game",
   "n": null,
   "rep": 2,
   "seconds": 72,
   "inp": 48362,
   "cache_read": 37248,
   "out": 3468,
   "reasoning": 64,
   "lines": 46,
   "check_score": false,
   "check_level2": true,
   "check_lives": false,
   "game_ok": true,
   "check_note": "checker missed scoring (10 bricks hit in a manual hook); lives 3-2-1-0 confirmed with a moving paddle (scripts/l2.js)"
  },
  {
   "run": "codex_game_r3",
   "tool": "codex",
   "kind": "game",
   "n": null,
   "rep": 3,
   "seconds": 57,
   "inp": 47975,
   "cache_read": 37248,
   "out": 3103,
   "reasoning": 0,
   "lines": 51,
   "check_score": true,
   "check_level2": true,
   "check_lives": true,
   "game_ok": true,
   "check_note": ""
  },
  {
   "run": "codex_n0_r1",
   "tool": "codex",
   "kind": "base",
   "n": 0,
   "rep": 1,
   "seconds": 8,
   "inp": 15018,
   "cache_read": 7680,
   "out": 5,
   "reasoning": 0
  },
  {
   "run": "codex_n0_r2",
   "tool": "codex",
   "kind": "base",
   "n": 0,
   "rep": 2,
   "seconds": 7,
   "inp": 14618,
   "cache_read": 0,
   "out": 5,
   "reasoning": 0
  },
  {
   "run": "codex_n10_r1",
   "tool": "codex",
   "kind": "base",
   "n": 10,
   "rep": 1,
   "seconds": 10,
   "inp": 14618,
   "cache_read": 0,
   "out": 5,
   "reasoning": 0
  },
  {
   "run": "codex_n10_r2",
   "tool": "codex",
   "kind": "base",
   "n": 10,
   "rep": 2,
   "seconds": 9,
   "inp": 14618,
   "cache_read": 14208,
   "out": 5,
   "reasoning": 0
  },
  {
   "run": "codex_n1_r1",
   "tool": "codex",
   "kind": "base",
   "n": 1,
   "rep": 1,
   "seconds": 8,
   "inp": 14618,
   "cache_read": 0,
   "out": 5,
   "reasoning": 0
  },
  {
   "run": "codex_n1_r2",
   "tool": "codex",
   "kind": "base",
   "n": 1,
   "rep": 2,
   "seconds": 7,
   "inp": 14618,
   "cache_read": 7680,
   "out": 5,
   "reasoning": 0
  },
  {
   "run": "codex_n30_r1",
   "tool": "codex",
   "kind": "base",
   "n": 30,
   "rep": 1,
   "seconds": 8,
   "inp": 14618,
   "cache_read": 7680,
   "out": 5,
   "reasoning": 0
  },
  {
   "run": "codex_n30_r2",
   "tool": "codex",
   "kind": "base",
   "n": 30,
   "rep": 2,
   "seconds": 10,
   "inp": 14618,
   "cache_read": 0,
   "out": 5,
   "reasoning": 0
  }
 ]
}