A JWT is decoded but its signature is never verified.
Why AI tools produce this: AI coding tools generate this anti-pattern by default, it appears in a large share of AI-written auth code.
Why this matters
Auth0 java-jwt's JWT.decode(token) only base64-decodes the token (it does NOT check the signature), so any claim it exposes (subject, roles, expiry) is fully attacker-controlled (CWE-345). This is a common AI-generated mistake: JWT.decode(...) is reached for to "read the claims" and its result is trusted as if it had been verified.
Verify the signature before reading any claim. With Auth0 java-jwt build a verifier and call it: JWT.require(Algorithm.HMAC256(secret)).withIssuer(iss).withAudience(aud).build().verify(token) The DecodedJWT returned by verify(...) is the only trustworthy one.
Suppressing this rule
If a finding is a genuine false positive, scope the suppression to the exact line and leave a reason, never disable the rule project-wide. Disable directives are line-scoped by design.
// oauthlint-disable-next-line auth.kotlin.jwt.decode-without-verify -- <reason>