17×
Fewer tokens than re-deriving the blast radius by call-graph trace.
✓ one query ≈ 24k tokens
candor · for coding agents
Every time a coding agent asks “what does this change touch?”, it re-derives your call graph itself — reading files, grepping callers, reasoning chain by chain. It’s slow, it burns tokens, and it’s incomplete: it stops when it runs out of patience, not when it has found everything. candor computes that answer once, deterministically, and hands it over in a single query.
Wire it into your agent loop All of candor
Works with
Claude Code is first-class today (the edit-time Stop hook and the fleet audit);
any agent that can run a command uses the same candor-query / CLI.
We measured it — two real ≈30k-LOC codebases, four model tiers, blind-graded against an independently-built ground truth. With candor, completeness is ~100% at every tier, because the answer is one deterministic query, not model effort. Without it, an agent’s completeness tracks model strength — and a weak model alone misses a third of the blast radius (and sometimes invents false ones).
17×
Fewer tokens than re-deriving the blast radius by call-graph trace.
✓ one query ≈ 24k tokens
50×
Fewer tool calls — one candor-query, not dozens of greps.
✓ 1 tool call vs ~50
38×
Faster — seconds, not minutes of tracing.
✓ ~8 s vs minutes
The multiples above are one Opus-class agent on a real codebase; the direction isn’t tier-dependent or a lucky draw. A pre-registered serial A/B across all four model tiers (Haiku → Fable, 5 trials per cell) measured 1.9–3× faster answers at every tier — and with candor the answer never dropped a function (16/16 in all 20 trials), while the unaided weak tier dropped one in 4 of 5 runs, once after naming it in its own trace. The deterministic query is the recall floor, not model effort. Pre-registration and raw runs.
candor doesn’t just answer questions — it watches edits. A Stop hook blocks the agent’s turn and shows the non-local fallout of a change: which callers now perform I/O, how far it propagates, and whether it crossed a boundary you declared. It’s the consequence even capable models under-report — surfaced as the agent works, not in review.
A coding agent is one unit; a Claude Code project full of them is a
fleet. candor-agents reads that fleet — its .mcp.json, settings,
permissions, slash-commands and skills (what it may touch) and its session transcripts (what
it actually did) — and reports the drift: a permission granted but never used, or an
uncurated MCP tool quietly reaching the network. It emits the same spec-conformant candor reports, so the
unmodified candor-query and policy grammar gate the fleet exactly as they gate code.
Get started For shipping code →
Completeness is exact from the 4-tier matrix; the cost multiples are measured on the
blast-radius question (token-cost, speed and tool-call evals); the JVM replication of the multipliers
is on the front page. The same call-graph + effect query works
across every engine — the JVM, Rust, JavaScript/TypeScript (--allow-js for plain
JS/Node), Swift — and agent fleets.
Work with the team behind candor
candor is built and run by Polymorphism — a small senior team that designs, builds and runs large systems for enterprise and government. The judgement we put into AI-code safety here is what we’d bring to your platform.