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 leaves your machine
Every request the extension makes, and the complete set of fields in it. Nothing else is attached.
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.
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.
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.
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.
Just your device token. We return your today/lifetime totals in micro-dollars.
What never leaves your machine
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, 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.
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 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:
Your attention, your money, your choice.
Opt in, watch it, turn it off in one click — it never touches your work.