CodeGraph is another local code-knowledge-graph tool built for AI coding agents. Rather than run it once through one client, we ran the same 10 questions against five real repos through three independent AI clients — Claude Code, Codex, and Antigravity — with a fresh baseline captured for each, so nothing stale got compared.
GitCortex answered with complete evidence accuracy (10/10) in every single run, across all three clients. CodeGraph scored 8/10 in each client — and missed the same call-tracing question independently, every time. Token efficiency was closer and client-dependent: CodeGraph was actually cheaper via two of the three clients.
We're posting the losses along with the wins — see the per-client breakdown for exactly where CodeGraph came out ahead.
10 tasks (search + callers, 5 repos: tokio, django, next.js, moby, spring-boot) run through each client independently, fresh baseline captured per client so nothing stale got reused across runs.
| Client | GitCortex evidence | CodeGraph evidence | GitCortex tokens | CodeGraph tokens | Token winner |
|---|---|---|---|---|---|
| Claude Code | 10/10 | 8/10 | 1,867,650 | 2,091,507 | GitCortex (−11%) |
| Codex | 10/10 | 8/10 | 595,651 | 507,114 | CodeGraph (−15%) |
| Antigravity | 10/10 | 8/10 | 256,092 | 248,211 | CodeGraph (−3%) |
Perfect evidence accuracy in every client, every run — 30/30 tasks correct across the full sweep.
24/30 correct — missed the same callers-type task independently in all three clients (see below).
One task — tracing callers of Next.js's normalizePagePath — is where CodeGraph lost evidence accuracy in all three independent client runs. Not a one-off across a single flaky run: three separate clients, three separate LLM providers, same result.
A second task — tracing callers of Moby's ContainerKill — was also missed by CodeGraph
in 2 of the 3 client runs. Both are callers-style tasks (tracing who calls a symbol,
not just where it's defined) — CodeGraph's search results were correct on all 15 attempts
across the three clients; the gap is specifically in call-tracing.
This lines up with a known weakness documented in CodeGraph's own GitHub issue tracker: cross-file edges can conflate same-named symbols, producing a confident-sounding but wrong call attribution rather than declining to answer. GitCortex's syntactic, no-type-inference design deliberately leaves ambiguous same-named calls unlinked instead of guessing — the tradeoff shows up directly in this result.
Showing the Codex-driven run in full — cleanest single-client trace, zero tooling artifacts. Claude Code and Antigravity runs are in the repo (see methodology below).
| Task | Type | GitCortex | CodeGraph | GitCortex tok | CodeGraph tok |
|---|---|---|---|---|---|
| tokio · Notify | search | 1.00 | 1.00 | 56,794 | 39,368 |
| tokio · notify_waiters | callers | 1.00 | 1.00 | 57,329 | 55,294 |
| django · QuerySet | search | 1.00 | 1.00 | 40,184 | 38,156 |
| django · filter | callers | 1.00 | 1.00 | 55,931 | 74,169 |
| next.js · useRouter | search | 1.00 | 1.00 | 67,537 | 68,309 |
| next.js · normalizePagePath | callers | 1.00 | 0.00 | 118,275 | 69,077 |
| moby · ContainerCreate | search | 1.00 | 1.00 | 42,438 | 41,899 |
| moby · ContainerKill | callers | 1.00 | 0.00 | 61,043 | 42,246 |
| spring-boot · SpringApplication | search | 1.00 | 1.00 | 56,108 | 39,588 |
| spring-boot · getMainApplicationClass | callers | 1.00 | 1.00 | 40,012 | 39,008 |
codegraph query / codegraph callers) in all three, since it has no MCP integration wired into this harness.gcx_sha256/suite hash against the binary and task suite in use, refusing to mix a stale baseline with a fresh comparison run.codegraph_compare.py and big-repos-v1.toml.