transparency

We never read your code.

codecash shows one sponsored line in your agent's wait state — nothing more. Here is exactly what leaves your machine, what never does, and why an event can't be faked. This page is written from the actual request payloads in our client.

what we send

What leaves your machine

Every request the extension makes, and the complete set of fields in it. Nothing else is attached.

A device recordOnce, when you connect

The adapter (e.g. claude-cli), your OS name (e.g. darwin), and your Claude Code version — so we can check compatibility. No username, no machine name.

GET /api/ads/next (POST with relevant ads on)A fresh ad every ~8s while serving

Just your device token by default — the server picks a creative, returns it with a signed token, and tells the client how long to show it. If you opt into relevant ads, the request also carries a short list of coarse stack tags (like fw:next) so the ad matches your stack. Never your editor contents, project files, or code.

An impression (and, if you click, a click)After an ad is on screen 5s

The server-signed token we were handed, a random idempotency key, how many milliseconds the ad was visible, and a timestamp. That's the entire billable payload.

Funnel telemetryAs the ad lifecycle progresses

Which step happened (rendered → viewable → threshold), the adapter, the serve/creative ids, visible-ms, and a timestamp. Your identity is read from your token server-side — the client never sends it.

GET /api/me/earningsFor the earnings widget

Just your device token. We return your today/lifetime totals in micro-dollars.

what we never touch

What never leaves your machine

Your source code
File names, paths, or contents
Your prompts to the agent
The model's output
Your repo or project structure
Keystrokes
Your dependency list or versions
Anything you typed

Relevant ads are opt-in and off by default. When you turn them on, the extension reads your dependency manifests on your own machine to derive a handful of coarse stack tags — and sends only those tags, never the files, their contents, or your dependency list. Everything in this list stays on your machine either way. Exactly how, below.

relevant ads

Relevant ads, without sending your code

You can let codecash match ads to your stack so the one line you see is more useful. It is off by default and toggles on or off in one click. Here is the whole mechanism — nothing hidden:

Tags are derived on your machine

With relevant ads on, the extension reads only dependency manifests (package.json, go.mod, requirements.txt, Cargo.toml, and the like) locally and maps them against a small, fixed allowlist to coarse tags — things like fw:next, lang:python, db:postgres. Your source files are never opened or read.

Only a handful of coarse tags ever leave

A request carries at most a couple dozen allowlisted tags and nothing else: no raw dependency names or versions, no file contents, no paths, no identifiers. A tag says 'this workspace uses Next.js' — it carries nothing that could reconstruct your project.

Tags rank one ad, then they're gone

Tags are matched against advertisers' targeting to rank a single serve, then discarded — they are never stored against your device or your account. There's no profile of you, and nothing about your stack is retained after the ad is chosen.

You can see them, and turn them off

The tags codecash would send are viewable, and relevant ads switch off in one click — after which requests carry no stack information at all. Off is the default; nothing is sent until you opt in.

how it's built

Why none of this can be faked

The render script never phones home

The status-line script only reads a small local cache file and prints one line. It makes zero network calls, backs up your original settings, restores them on uninstall, bounds every child process, and is built to never break your CLI.

Earnings are server-signed — the client can't mint them

Every impression is authorized by a token the server itself signed (Ed25519) and verifies on the way back in. A modified client can't fabricate an event or inflate view time; the server re-derives it.

Parallel sessions earn fairly — and only locally coordinated

Run several Claude Code sessions and each shows a different advertiser's ad and can earn while you're actually at your machine. Sessions coordinate through small files on your own disk (a per-project ad cache and a presence heartbeat) that never leave it — and total earnings are bounded by per-device hourly and daily caps, so idle or hidden sessions can't farm.

Updates are signed; your editor is never patched

We use Claude Code's documented config (spinnerVerbs / statusLine) — we don't patch anyone's editor bundle. Auto-updates are signed and verified before they apply.

see for yourself

See exactly what runs on your machine

The extension is source-published — the same code that ships to the Marketplace is public. Read every line that touches your machine before you install:

What we write to ~/.claude/settings.jsonThe exact, reversible edit — it adds the documented Claude Code keys (spinnerVerbs + statusLine), backs up your originals first, and restores them on disable or uninstall.The status-line script that runs on your machineThe whole program that prints the ad line. Zero dependencies, zero network calls — it only reads a local cache file and exits.The full extension sourceEverything else — the ad fetch, view-time tracking, and the signed-event client. Browse it all.

Your attention, your money, your choice.

Opt in, watch it, turn it off in one click — it never touches your work.

Start earning →