Below is a walkthrough of one agent answering the same question twice on the same example repo, three days apart. The commands and the output format are the real ones.
token.src/routes/login.ts:41 checks the password, then calls createSession, which writes a random 32-byte token to Redis under sess:<token> with a 7-day TTL and returns it as an httpOnly cookie.requireAuth pulls that cookie and calls verifySession, which is a single Redis lookup. Nothing is signed and nothing is decoded — if the key is gone from Redis, the session is over.destroySession deletes the key. There is no revocation list because there is nothing to revoke.createSession writes a random 32-byte token to Redis under sess:<token> with a 7-day TTL and returns an httpOnly cookie. requireAuth calls verifySession, a single Redis lookup, on every protected route. Nothing is signed or decoded. The variable is named token, which reads as a JWT and is not one — check Redis before assuming stateless auth.fresh = session.ts has not changed a byte since this was written.
sess:<token> with a 7-day TTL and sets it as an httpOnly cookie. requireAuth does one Redis lookup per request; nothing is signed or decoded. The token naming is misleading and has caught people out before.Both sessions had the index. Only the second had the note.
Neither is free. What changes is how much of the work goes into finding the file rather than answering the question.