Redaxa · Privacy, before AI

Detection reference · Credentials and secrets · Updated 2026-11-03

JSON Web Tokens (eyJ…)

A JWT might be a session, a password-reset link, an API credential or a public anon key. Redaxa decodes the header and payload to tell you which, and is explicit that nothing about it is verified.

At a glance

Reported asAPI key or token
CategoryCredentials and secrets
Severitycritical: direct account or system compromise, as with keys, passwords and tokens
Replaced with[SECRET]
Where it runsThe same engine runs in the Chrome extension (free checks, on your device), in the web check and the Windows app (on Redaxa's server; the text is not stored) and in public repository checks.
Engine rulescanner.ts, line 205

What it looks like

Three base64url parts separated by dots, the first starting with eyJ, each at least 10 characters. Redaxa only treats it as a token if the header and payload decode to JSON with an algorithm.

Example 1

You paste

Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJyZWRheGEtZG9jcy1zYW1wbGUiLCJyb2xlIjoiYWRtaW4ifQ.RedaxaDocsSampleSignatureNotRealRedaxaDocsS

Redaxa returns

Authorization: [SECRET]
Reported asAPI key or token
Severitycritical: direct account or system compromise, as with keys, passwords and tokens
Replaced with[SECRET]
Probable serviceIssuer not established
Credential typeJWT with privileged-role claim
EvidenceDecoded JWT claims are unverified. Neither the issuer, signature, owner nor expiry is authenticated by this check.
Recommended actionRevoke or rotate if genuine

Example 2

You paste

session=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJyZWRheGEtZG9jcy1zYW1wbGUiLCJleHAiOjE4OTM0NTYwMDB9.RedaxaDocsSampleSignatureNotRealRedaxaDocsS

Redaxa returns

session=[SECRET]
Reported asAPI key or token
Severitycritical: direct account or system compromise, as with keys, passwords and tokens
Replaced with[SECRET]
Probable serviceIssuer not established
Credential typeJWT token candidate
EvidenceDecoded JWT claims are unverified. Neither the issuer, signature, owner nor expiry is authenticated by this check.
Recommended actionCheck issuer and session permissions

All values on this page are synthetic or published specimens; none is a working credential or a real person's data.

In a repository check

The same example, committed to a public repository and run through the free repository check:

Values are always shown masked in repository reports. No key is ever tested against its provider.

What it does not flag

If it already leaked

Find the service that issued it. Invalidate the session or rotate the signing secret with that service's own controls; removing the token from a file does not stop it working until it expires.

What Redaxa adds to every finding of this kind: Identify the issuing application and whether this token grants access. If exposed and usable, invalidate the token or session using that service’s controls. Removing the token from a repository does not invalidate it.

Step by step: pasted a key into ChatGPT, or committed one to GitHub.

Check before you paste

The free Chrome extension runs this check inside ChatGPT, Claude, Gemini and Perplexity before a message is sent, on your device and with no daily limit. On the web you get 5 free prompt checks a day with no account.

Add the Chrome extensionTry a free web check

Worried it is already in your code? Check a public GitHub repository free (3 checks a day).

Related

Sources