The short answer is in the heading: nothing meaningful. The full answer is what this article exists to spell out, because "trust us, it is local" is the cheapest claim in software and the most often wrong.
Power Claude is a local VS Code extension and a pc CLI. Account rotation, session monitoring, cost analytics, watchdog, Auto-Resume, Auto-Nudge, the Insight Graph — every feature operates on data that lives on your machine and stays there. The exception is the license-validation handshake with neural-llm.com, which carries a deliberately small payload, exists for the legitimate purpose of confirming you have a valid license, and is the only outbound network dependency in the entire product.
This article is the complete accounting. What gets sent, what the payload contains, what does not get sent, where everything is stored on disk, and what the user-data-doesn't-leave claim actually depends on.
The traffic path for Claude API calls
The first thing most people want to know is whether their Claude prompts go through any Neural-LLM server. They do not.
The traffic path for every Claude Code API call is:
Claude Code → localhost:PROXY_PORT → api.anthropic.com
The proxy is a local Node process that starts with the extension (or as a systemd user service on hosts that have systemd — see the v0.x changelog entry about power-claude-proxy.service). It listens on a port on 127.0.0.1. Claude Code is configured via ANTHROPIC_BASE_URL to send its API traffic there. The proxy reads the anthropic-ratelimit-* headers on the way back (so it can rotate accounts pre-emptively) and forwards every byte of the request and response between Claude Code and Anthropic without copying it anywhere else.
There is no Neural-LLM cloud relay. There is no Power Claude analytics endpoint that receives your prompts. The src/proxy/server.ts fetch target is ${upstream}${req.url} where upstream resolves to https://api.anthropic.com — not a Neural-LLM host. (For the engineering details on what the proxy does with the headers it reads, see Pre-emptive rotation.)
The one outbound network dependency
There is exactly one outbound network destination in Power Claude that is not Anthropic's API: https://neural-llm.com (or your POWER_CLAUDE_AUTH_URL if you have overridden it for dev). Four endpoints on that host are reachable from the extension:
| Endpoint | When it fires | What it does | |---|---|---| | POST /auth/activate | When you enter a license key | Verifies the key, returns a signed activation envelope | | POST /auth/heartbeat | Every ~5 minutes when activated | Keeps the JWT fresh, reports back current entitlement | | POST /auth/deactivate | When you remove the license locally | Releases the machine binding so you can re-activate elsewhere | | POST /license/proxy-bundle.php | After activation, once per version | Fetches the watermarked Pro proxy bundle (Pro tier only) |
The deactivate endpoint only fires on an explicit local removal. The proxy-bundle endpoint only fires for Pro licenses, and only when the cached bundle for the running version is missing or invalid. The activate and heartbeat endpoints are the two that matter for steady-state behavior.
What the activate payload contains
The full POST body for /auth/activate (from src/proxy/licenseGate.ts:1957):
{
"licenseKey": "your-license-key",
"fingerprint": "32-hex-char machine fingerprint",
"version": "x.y.z",
"codeHash": "sha256 of the extension bundle",
"platform": "linux" | "darwin" | "win32",
"nonce": "random per-request nonce"
}
That is the complete payload. No prompts, no source code, no file paths, no Anthropic credentials, no Anthropic OAuth tokens, no email address, no account names, no usage statistics, no rate-limit headers, no session content.
The fingerprint is a SHA-256 hash of four inputs from the host machine: hostname, platform, arch, username (src/proxy/fingerprint.ts). When the extension runs inside VS Code, the fingerprint is replaced with vscode.env.machineId — the same stable identifier VS Code uses for every extension's telemetry, generated by VS Code itself, not by Power Claude. The fingerprint is used to bind a license to a machine so a stolen key cannot be activated on an arbitrary number of new boxes; it is not reversible to PII without already knowing the four inputs.
The codeHash is a SHA-256 of the extension bundle on disk. Anthropic's license server uses it as a tamper signal — it tells the server whether the running extension is an unmodified release build. It contains no user data.
The nonce is per-request randomness so a captured response cannot be replayed against a future activation.
What the heartbeat payload contains
Every five minutes, while activated, the extension sends a heartbeat (from src/proxy/licenseGate.ts:2179):
{
"licenseKey": "your-license-key",
"machineFingerprint": "same fingerprint as activate",
"token": "the JWT from the last successful activation",
"version": "x.y.z",
"codeHash": "sha256 of the extension bundle",
"bundleHashes": "{ extension: sha256, proxy: sha256, cli: sha256 }",
"debuggerAttached": true | false,
"obfMarker": true | false,
"nonce": "random per-request nonce"
}
bundleHashes, debuggerAttached, and obfMarker are anti-tamper signals that let the server score abuse attempts (debugger attached during normal use is a strong signal that someone is trying to reverse-engineer the license check). None of them carry user data — debuggerAttached is a boolean, bundleHashes are file checksums of the install layout.
The heartbeat response is signed Ed25519 by the license server. The signature is verified locally before the response is trusted, so an MITM cannot forge a "license revoked" reply. The client verifies the nonce echoed back against the one it sent, and the server timestamp against the local clock with a two-minute freshness window, so a captured-and-replayed legitimate response also fails.
What none of these endpoints receive
Both httpsPost and httpsPostWithStatus in licenseGate.ts use a single hostname (AUTH_BASE_URL = https://neural-llm.com by default). The bodies are exactly what is shown above — there is no second path that POSTs richer data.
The values that never leave your machine, by category:
- Claude prompts and responses. The proxy forwards them between Claude Code and
api.anthropic.com. Neither endpoint above ever receives them. - Anthropic OAuth tokens. They live in
~/.power-claude/profiles/*.json(encrypted on Linux when keyring is available, plain JSON otherwise — same posture as Claude Code itself). They are read locally to populate the active credential at~/.claude/.credentials.json. They are never transmitted toneural-llm.com. - Email addresses or account names. The license server knows the licensee identity from the licenseKey — it does not need and does not receive your Anthropic account label, your
pc addprofile name, or any of the other strings you might attach to a profile. - File paths, file contents, source code, working-tree state, or git refs. The Insight Graph reads all of these from your local repo and your local
~/.power-claude/and~/.claude/projects/directories. Nothing about your codebase is in the activate or heartbeat payload. - Rate-limit headers, token counts, cost estimates, or session metadata. The proxy reads the
anthropic-ratelimit-*headers on every response. They are written to~/.power-claude/logs/handler.jsonland rendered in the dashboard. They never leave the machine. - Watchdog event logs.
~/.power-claude/logs/watchdog.logis local-only. The watchdog detects stalled sessions and surfaces a resume prompt; it does not phone home.
Where local state lives
Everything Power Claude writes outside the extension bundle lives under ~/.power-claude/:
~/.power-claude/
├── profiles/ OAuth profiles for each Claude account (rotation pool)
├── state/ Rotation state, lockouts, pending-recovery markers, license.json
├── logs/ events.jsonl, watchdog.log, rotation-audit.log, handler.jsonl
├── lib/ Bundled shell helpers (deployed at install time)
├── hooks/ Lifecycle + rate-limit hook scripts
├── cache/ devtools-data.json, session-index.json
└── config/ config.json, auto-rewake-config.json, nudges.json
The only files Power Claude writes outside ~/.power-claude/ (per the README's "What Power Claude writes to disk" section):
| Path | Why | |---|---| | ~/.claude/.credentials.json | Claude Code reads its active credential from here. Power Claude overwrites it on rotation so Claude Code picks up the new account between requests. | | ~/.claude/settings.json | Hook registrations, with your consent. Only Power Claude's own entries are added or removed; other tools' entries and your manual entries are preserved. |
The "Uninstall Everything" command strips every Power Claude entry from ~/.claude/settings.json and removes ~/.power-claude/. Your Claude Code credentials and any non-Power-Claude settings are untouched.
The website's analytics plugin is not Power Claude
A potential point of confusion: neural-llm.com (the marketing website) runs a Joomla plugin called plg_system_neuralanalytics that injects Matomo and GA4 page-view tracking into the web pages of the marketing site itself. That plugin is what tracks visits to /pricing and /download so we can see which articles drive sign-ups.
It runs on the web server. It is part of the marketing site. It is not in the extension, the CLI, or the proxy. It cannot see anything on your machine. When you visit https://neural-llm.com in a browser, that browser session is subject to the same first-party page analytics any website runs. When you use Power Claude in your editor, no part of your traffic flows through the marketing site.
The two products live in the same monorepo and share branding. They do not share a data path.
Does Power Claude work offline?
Mostly, yes — for up to the offline-grace window. The license validation requires a network call to neural-llm.com. If the call cannot complete (you are offline, behind a corporate proxy, or neural-llm.com is down) the extension falls back to the locally cached validation result and a grace window kicks in.
@CONFIRM-FACT: the offline grace window is up to three days (OFFLINE_GRACE_MS in licenseGate.ts); the README's older 24-hour figure was a partial description of the earlier behavior. The current value is configurable via the heartbeat envelope so the server can shorten the window for a revoked license.
Everything else works offline. The proxy, rotation, watchdog, Auto-Resume, Auto-Nudge, the dashboard, the Insight Graph, the cost engine — they all read from local files and communicate over localhost. The only persistently network-dependent feature is the periodic heartbeat that refreshes the license cache.
If you work primarily on aircraft, air-gapped networks, or restrictive corporate networks: Power Claude will run cleanly for the duration of the offline grace window between successful heartbeats. Plan for the heartbeat to find neural-llm.com once every ~5 minutes when you are online, and you are covered.
What this claim depends on
The user-data-doesn't-leave claim depends on a small number of things being true at the same time:
- The proxy forwards to
api.anthropic.com, not to a Neural-LLM host. Verifiable insrc/proxy/server.ts— the upstream URL is the Anthropic API base, not anything under our control. Verifiable at runtime withtcpdumporss -tnpagainst the proxy process. - The license endpoints carry exactly the payloads shown above. Verifiable in
src/proxy/licenseGate.tsat lines 1957 (activate), 2179 (heartbeat). Both pass through a singlehttpsPosthelper; there is no alternate code path that adds fields. - The Ed25519 verification of server responses is local-only. Verifiable in
verifyServerSignatureinlicenseGate.ts— it uses the embedded public key, not a network call. neuralanalyticsis a Joomla plugin on the marketing site, not in the extension bundle. Verifiable by grep:grep -r 'neuralanalytics' src/ extension.d.tsreturns no matches.- The Pro proxy bundle fetch (
/license/proxy-bundle.php) does not include user data. Verifiable insrc/proxy/proxyLoader.ts:180— the POST body is{ token, fingerprint, nonce, version }.
If any of those changed silently in a future release, this article would need to be updated. We have not changed them and have no plans to. The structural reason is that we cannot see your prompts even if we wanted to — the proxy is a localhost process and we do not run the box it lives on. (For where the dashboard's "throttle waits avoided" and "rotation count" numbers come from, see the telemetry dashboard tour.)
Download Power Claude and verify any of the above yourself before activating. The relevant source files are open for inspection at install time.
Quick Reference
Q: Do my Claude prompts go through any Neural-LLM server? A: No. The local proxy forwards every byte to api.anthropic.com directly. The traffic path is Claude Code → localhost:PROXY_PORT → api.anthropic.com. There is no cloud middleman.
Q: What is in the license-check payload? A: Six fields: license key, machine fingerprint (SHA-256 of hostname + platform + arch + username, or vscode.env.machineId when inside VS Code), extension version, code-hash of the extension bundle, platform string, and a per-request nonce. No prompts, no source code, no Anthropic credentials.
Q: How often does the license check run? A: A heartbeat fires roughly every five minutes while activated. The activate call happens once when you enter a key. The Pro proxy bundle is fetched once per version. The deactivate call only fires on an explicit local license removal.
Q: Does Power Claude work offline? A: Yes, for the duration of the offline grace window (up to three days between successful heartbeats). All other features — rotation, watchdog, Auto-Resume, Auto-Nudge, dashboard, Insight Graph — run on local data without any network dependency.
Q: What about the neuralanalytics plugin I saw in the repo? A: That is a Joomla plugin running on the marketing website (neural-llm.com). It injects Matomo and GA4 into the marketing pages themselves. It is not in the extension or the CLI; your editor traffic does not touch it.
Q: Can Neural-LLM see my rate-limit headers, my session cost, or which files I edited? A: No. Rate-limit headers are read by the local proxy and written to ~/.power-claude/logs/handler.jsonl on your disk. Session attribution, cost estimates, and file lists are computed locally from ~/.power-claude/ and ~/.claude/projects/. None of them are in the license payloads.
Q: How do I uninstall everything? A: Run "Power Claude: Uninstall Everything" from the command palette, or rm -rf ~/.power-claude && code --uninstall-extension neural-llm.power-claude. The command strips Power Claude's entries from ~/.claude/settings.json and removes ~/.power-claude/. Your Anthropic credentials and Claude Code settings are untouched.
Q: Where can I verify these claims in the source? A: src/proxy/server.ts (upstream is api.anthropic.com), src/proxy/licenseGate.ts:1957 and :2179 (full activate and heartbeat payloads), src/proxy/fingerprint.ts (machine fingerprint inputs), src/proxy/proxyLoader.ts:180 (Pro bundle fetch payload). All shipped in the open extension bundle.