What saves tokens
| Part | What it does | On by default |
|---|---|---|
| Search that returns the code | One call returns the sections that answer a question, so the agent doesn't read file after file | Once an agent is connected |
| The skill instead of MCP | Agents use DMN through their shell; no tool definitions are sent with every request | When you run dmn skill-init |
| Short answers | The briefing asks Claude Code to answer tersely | Yes, for Claude Code |
| The proxy | Compresses context that requests keep repeating | Yes, for Claude Code agents started in the app |
What we measured
Tokens used, lower is better
On real bug reports in DMN's own code, Claude Code found the right code with fewer tokens with DMN than without it: 0.85× with the search skill alone, and 0.65× with short answers on as well, which is how DMN ships. No run gave a plain agent the short-answer rule without DMN, so part of that 0.65× may come from the rule alone. On a public code base the model couldn't place from memory, agents made 11% fewer requests, but the token saving was too small to measure. On a popular project the model often knew where to look without any tools, and DMN made no clear difference.
These runs measured finding the code, which is only part of a session: agents also write and test code, where DMN changes less. Session-wide, the saving is likely closer to 5–10%. The benchmarks page has the method, every result and where DMN doesn't help.
See your own savings
dmn stats # this project, the last 7 days
dmn stats --days 30 # a longer window
dmn stats --all-projects # every project together
dmn stats compares the code DMN sent your agents with what reading the same files whole would have cost, per agent and per day. It counts bytes, so it needs no model or price. The app shows the same figures in Insights, with the billed token counts of the requests that went through the proxy.
dmn bench builds a search benchmark from your own code and writes a report you can rerun: the same index and seed give the same numbers.
Turn a part off
- Short answers: add
[skill]withcompact = "off"to%APPDATA%\dmn\config.toml. A blinded check rated the short answers about as useful as full ones, though they sometimes leave out a secondary detail such as a suggested fix. - The proxy: Settings ▸ Context tiering, then restart the app.
- The skill:
dmn skill-init --remove --apply.