Surfil
// field report

533 AI agent requests. Only 21 said what they cost.

Measured on the maintainer's own machine, 2026-08-17, running surfil 0.2.20. Two sessions of ordinary work through Claude Code, read back out of the on-device record. Every figure below is measured, including the ones that do us no favours.

~ - surfil
$ surfil report
# 533 request(s) across 2 session(s)
Cost measured from 21 of 533 requests
Guard 39 screened · 0 blocked
Cap 0 tokens removed
The finding

Most of your agent traffic never tells you what it cost

A provider returns a usage field when it feels like it. Over two sessions of normal work, fewer than one request in twenty carried one.

3.9%3.9% measured
533
requests intercepted
21
carried a usage field
2
sessions of ordinary work
512
counted, never estimated
Read this first

What this data cannot tell you

Three limits, none of them behind the form. A measurement published without them is an assertion wearing a number.

It has no knowable time span

The device keeps a fixed SIZE of history and evicts the oldest first, so these cover whatever traffic fitted: hours or months. No per-day rate is derivable, and none is published.

It is one machine

One developer, two sessions, one way of working. It is a reading, not a population, and the contribution command exists so later editions can say more.

One reuse reading is published, not three

Two other readings of this machine disagree, and a cumulative counter moved a way an append-only record cannot. Only the dated one is quoted; the rest are footnoted.

Where the money is

The bill is not the tokens you think it is

A cached write bills at 1.25x fresh input and a read at 0.10x, so a written token only pays for itself once it has been read back 1.39 times. This machine reached 1.70x.

Effective cost of one context token, in fresh-input equivalents
Effective cost per context token as reuse rises

Lower is better. The highlighted bar is this machine's measured 1.70x, read on 2026-08-17 from surfil report under surfil 0.2.20. The curve itself is arithmetic from the published multipliers, not a measurement.

1.70x
reads per written token, measured
1.39x
reuse at which a write breaks even
0.835
what one context token really cost
302,323
token-equivalents of write premium paid
Two other readings of this machine, on 2026-07-27 (surfil 0.2.7) and 2026-08-21 (0.2.20), came out at 1.87x and 1.99x. Neither is published as a figure: the later one was taken after the cumulative cache-write count had DECREASED from 1,209,292 to 1,036,555, which an append-only record cannot do unless retention eviction re-based the window underneath it. That explanation is plausible and unverified, so the reading resting on it is not quoted, and neither is an average of the three.
The inconvenient one

We looked for waste to remove and found none

Cap removes context a later turn has already superseded. On this traffic there was nothing to remove, and the number stays published.

0 tokens

removed from 264,595 context tokens across 413 requests. An agent using the provider's prompt cache does not re-send byte-identical context, so a pruner has nothing to find. That is why no savings percentage is published on this site.

Method

How these numbers were produced

Three steps, all of them on the machine being measured.

Intercept

One on-device interception point in front of Claude Code, Cursor, Codex and Copilot. Passthrough is byte-exact, so the provider's prompt cache keeps hitting.

Record

Every request writes one local event: the model, the tokens the provider reported, what the security screen decided. No prompt, no source and no file path is recorded.

Read it back

`surfil report` sums those events. Requests whose response carried no usage field are counted, never estimated into a token total. That is why coverage leads this page.

The full report

What the rest of it covers

Six more sections, including the one about where interception failed.

In the full report

  • The complete cache derivation, with every multiplier shown
  • Guard: 39 screened, 0 blocked, and which credentials were seen leaving
  • Three measured failures of interception itself, including a desktop app that bypasses it entirely
  • The commands to reproduce all of it on your own traffic

Send me the full report

Confirm the address and the full report opens. We also tell you when the cost work lands, and nothing else.

One click to confirm, one click to leave, any time. No sharing, no selling.

FAQ

Reasonable objections

Why is this one behind an email?

Because we want to know who is reading it, and saying so is more honest than pretending otherwise. Everything you need to judge the numbers - the headline finding, the method, and every caveat - is on this page without an address.

Is 3.9% coverage a Surfil problem?

No. The usage field is what the provider chooses to return, and streaming responses frequently carry none. Surfil's part is refusing to fill the gap: the other 512 requests are counted, and never estimated into a total that would look more complete than it is.

Why publish a run where you saved nothing?

Because it happened, and because every tool in this category quotes a percentage. A measured zero you can check is worth more than a number you cannot.

Can I reproduce this?

Yes, on your own traffic, without an account. Install, use your agents for a week, and run the same command. Your numbers will differ from these, which is rather the point.

Or skip the report and measure your own

It runs on your machine, needs no account, and reports what your agents actually cost from your own traffic.