Benchmarks · measured, not estimated

What GitCortex actually saves your assistant, per question.

Every number on this page comes from a real client (Codex, Claude Code, or Agy) answering the same question twice against a pinned open-source repo: once with ordinary grep/read exploration, once with one GitCortex MCP call. Token counts are the client's own reported usage. Nothing here is simulated or hand-picked after the fact — the harness and raw logs ship in tools/agent-bench/.

Three clients, one suite

15 harder tasks — deep blast-radius, cross-file architecture, refactor-safety — across 5 pinned repos (ripgrep, requests, hono, cobra, gson), each client run twice per task (baseline vs. GitCortex), one round.

Codex
gpt-5.4-mini · graph-CLI lane
Token savings (geomean)3.27×
Uncached savings3.73×
Valid samples13 / 15
Quality held or improved14 / 15
Claude Code
Haiku · compact MCP dispatch
Token savings (geomean)3.26×
Uncached savings1.79×
Valid samples12 / 15
Quality held or improved12 / 15
Agy (Antigravity CLI)
Gemini 3.6 Flash · compact MCP dispatch
Token savings (geomean)1.89×
Uncached savings1.33×
Valid samples14 / 15
Quality held or improved14 / 15

What the harder questions actually test

Beyond simple "where is X" search, the release suite adds three question types that mirror real pre-edit workflows.

Task typeQuestion shapeGitCortex path
Impact"Before I change this function, what's the full blast radius?"find-callers --depth 2 / pre_edit_impact
Architecture"How does this fit into the codebase — what's it connected to, both directions?"get-subgraph --depth 2 --direction both
Refactor"Is it safe to refactor this? What's the full surface area?"symbol-context

Retrieval correctness (model-free)

Before any paid client run, the same 35-task suite runs against the gcx CLI directly — no LLM in the loop — checking evidence contracts, ranking, and response budgets.

Original 20-task suite

Valid20 / 20
Quality mean1.00
MRR1.00
Precision@50.68
File recall1.00
Median latency87 ms

New 15-task suite (impact / architecture / refactor)

Valid15 / 15
Quality mean1.00
Median payload3.0 KB
Median latency138 ms

What didn't pass, and why

Real bugs, found and fixed before this suite's final numbers above:

  • symbol_context had no ambiguity handling and could silently resolve a common short name (e.g. beginArray, which matches 4 methods in gson) to the wrong one. It now goes through the same candidate-surfacing resolver as find_callers.
  • The benchmark harness let one slow or hung client call abort an entire 15-task run. A single arm now fails in isolation and the run continues.
  • Claude Code's deferred MCP tool loading (ToolSearch) wasn't accounted for in the harness prompt, so the agent reported GitCortex as "unavailable" on one task. Fixed and re-verified.

Remaining misses are scoring strictness, not product bugs: a few samples cite the correct symbol (e.g. ArrayTypeAdapter.read) without repeating the full file path our automated grader string-matches on. The underlying evidence was correct in every case we checked.

Methodology

  1. Five real open-source repos, pinned to an exact commit: ripgrep, requests, hono, cobra, gson.
  2. Each task runs twice per client — once with ordinary grep/read exploration, once with exactly one GitCortex MCP call — arm order randomized per task to avoid ordering bias.
  3. Token counts are the client's own self-reported usage from its structured output (Codex JSON events, Claude Code stream-json, Agy stream-json), not estimated.
  4. A sample only counts as valid if the GitCortex arm's answer quality is equal to or better than the baseline's — token savings never count against a quality regression.
  5. Full harness, task definitions, and raw per-task logs: tools/agent-bench/ in the repo.