Effective June 12, 2026
BoringSpinner (“BoringSpinner,” “we,” “us”) operates the BoringSpinner VS Code extension, the BoringSpinner backend, and the web portal at boringspinner.com. This policy explains exactly what data we collect, why, and where it goes.
The BoringSpinner extension never reads your code, prompts, completions, chat content, file names, or any other content from your editor or AI coding assistant.
This is not a marketing claim hedged in fine print. It is a structural fact that you can verify by reading the source-available extension code on GitHub. The extension has no code path that accesses editor content, workspace files, or AI-assistant responses. It only watches for the single-line “thinking” spinner state exposed by Claude Code's status bar and settings interfaces.
We treat “we never read your code” as a load-bearing commitment, not a preference. Any future code change that would require reading editor content will require explicit, opt-in user consent and a new version announcement.
The BoringSpinner extension makes network requests to exactly two external destinations:
api.boringspinner.com — the BoringSpinner backend. All authenticated API calls (telemetry, earnings, ad portfolio, kill-switch, auth) go here over HTTPS. This is the primary and default destination.api.boringspinner.com. Advanced users may configure a separate self-hosted update server via updateBase in ~/.coads/config.json.Additionally, the extension starts a local loopback HTTP server (bound exclusively to 127.0.0.1, never to 0.0.0.0 or any public interface). This loopback server handles click events from the webview ad injection and never carries traffic off your machine.
There are no third-party analytics SDKs (no Google Analytics, Segment, Amplitude, Mixpanel, Sentry, or equivalent) in the extension or on this website.
All telemetry is described in the source-available client. We collect the minimum required to operate the auction and pay you accurately:
| Data item | Why | Sent to |
|---|---|---|
| Device ID — a stable, random UUID you can reset | Anti-fraud; per-device earnings caps; ledger attribution | api.boringspinner.com |
| Impression event — surface ID, view duration (ms), nonce UUID | Billing the advertiser; crediting your earnings ledger | api.boringspinner.com |
| Click event — surface ID, nonce UUID (no URL destination is leaked) | Click billing; 50× impression multiplier credit | api.boringspinner.com |
| AFK / session start / session end events | Pause billing when you are away; compute accurate view time | api.boringspinner.com |
| Extension version + OS platform | Self-update targeting; compatibility checks | api.boringspinner.com |
| Google account email (on sign-in) | Account identity; ledger association; payout destination | api.boringspinner.com |
We do not collect: your code, prompts, completions, chat messages, clipboard contents, file contents, keystrokes, window titles, screen pixels, URLs you visit, or any other content from your machine.
BoringSpinner modifies two files on your machine to inject the sponsored ad slot:
~/.claude/settings.json — BoringSpinner appends entries to the spinnerVerbs and statusLine fields. This is a documented, supported configuration surface.Before any modification, BoringSpinner creates a byte-exact backup of every file it touches, verified by checksum. The BoringSpinner: Restore Claude Code command restores every file to its pre-install state in a single click.
If BoringSpinner cannot find a compatible version of Claude Code or Codex, it does nothing and shows an “incompatible” status bar message.
Payouts are processed through Stripe Connect Express. When you connect a Stripe account, Stripe's privacy policy governs the banking and identity information you provide to Stripe directly. BoringSpinner receives only a Stripe account ID and payout-eligibility status.
Until Stripe Connect platform approval clears, earned balances are held in a custodial Stripe account in your name. These funds are yours; BoringSpinner is not the beneficial owner of any publisher balance.
For US publishers earning ≥ $600 / year, Stripe Connect issues a 1099-K or 1099-NEC on your behalf. Non-US publishers are required to complete a W-8BEN form through Stripe. BoringSpinner does not issue tax forms directly; Stripe is the responsible party for 1099 / W-8 workflows.
BoringSpinner is not directed at children under 13 (or under 16 in the EU). We do not knowingly collect personal data from children. If you believe a child has created an account, contact privacy@boringspinner.com and we will delete it promptly.
We will notify users via the extension status bar and by email (if you have provided one) before any material change to this policy takes effect. The effective date at the top of this page is always the date of the last substantive update.
Questions, erasure requests, or data-export requests: privacy@boringspinner.com