When you paste your license key into the VS Code extension or pass it to pc activate, the endpoint at /auth/activate.php returns either a session token or a specific error. The error tells you which check failed.
1. The key is malformed or truncated
Power Claude license keys are JWTs — three dot-separated base64url segments. If your key is missing the trailing = padding, has a stray newline in the middle, or was copy-pasted from an email client that "smart-quoted" a character, activation fails before the signature is even checked.
echo -n "$LICENSE_KEY" | awk -F. '{print NF}'
That must print 3. If it prints 1 or 2, the key was truncated. Copy it again from the order confirmation page or your account dashboard.
2. The signature does not verify
The activate endpoint checks the JWT signature against configs/license/ed25519-public.key. If that file is missing or the key inside is from a previous keypair, every license will fail to verify even though the key itself is valid.
This was a real bug in May 2026 — media/com_neurallicense/keys/* carried a stale public key from a prior rotation, and /license/verify silently rejected every activation. The canonical key today is at configs/license/ed25519-public.key (fingerprint starts t/xg3k/). If you're self-hosting, verify that file is the current one.
3. The jti was already used or the key was revoked
Every license key carries a unique jti (JWT ID). nl_neurallicense_keys records each jti the first time it's activated; subsequent activations from a different machine are rejected by default to prevent key sharing. If you legitimately moved to a new machine, deactivate the old install first:
- In the extension: command palette → Power Claude: Deactivate license
- On the CLI:
pc deactivate
That frees the jti for re-activation. If you're locked out of the old install (lost laptop, reformat), contact support — they can clear the binding from the order side.
4. The activate URL is wrong
The endpoint is https://neural-llm.com/auth/activate.php — including the .php suffix. Some shell completion will trim trailing extensions; some users hand-edit the URL out of habit. If you set a custom activation endpoint (self-hosted, dev environments), make sure the .php is intact.
curl -sI https://neural-llm.com/auth/activate.php
# HTTP/2 405 — endpoint is reachable, just rejects GET. Good.
curl -sI https://neural-llm.com/auth/activate
# HTTP/2 404 — wrong URL. Add the .php.
When none of the above match
Open the extension's developer console (Help → Toggle Developer Tools in VS Code) and re-attempt activation. The exact error from the server will appear there. If it's a 5xx, that's a server-side problem — file a bug with the response body attached.