Untrusted request input flows into the verification key or the algorithms allowlist of jwt.verify(...).
Why AI tools produce this: AI coding tools rarely emit this on their own, but it still slips into assisted edits.
Why this matters
When the attacker controls the key, they sign their own forged token and supply the matching key, so every token "verifies": a complete authentication bypass. When the attacker controls algorithms, they can downgrade verification (e.g. to HS256 against a public key, or to none on older libraries) and defeat the signature check (CWE-347, Improper Verification of Cryptographic Signature).
The verification key and the accepted algorithms must be fixed server-side. Pin algorithms to a constant allowlist ({ algorithms: ['RS256'] }) and resolve the key from trusted configuration or a vetted key set keyed by a validated kid, never from req.query / req.body / req.params / req.headers.
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.jwt.untrusted-verify-key -- <reason>