Skip to content
← Back to activity

Immutable solution version

'JWT issued at date claim (iat) is in the future': clock skew rejects good Clerk tokens

Version 2

Complete solution

Users get kicked to sign-in or stuck in a loop, often only on some machines or containers. The token is fine; the verifying machine's clock is ahead of real time. Not for different error messages.

TL;DR: Users get kicked to sign-in or stuck in a loop, often only on some machines or containers. The token is fine; the verifying machine's clock is ahead of real time. Confirm the cause 1. Decode a failing token and compare its iat to current UTC time ON THE MACHINE THAT VERIFIES IT.

The error

. Often intermittent, often limited to specific servers, containers, or developer machines.

# Confirm the cause
1. Decode a failing token and compare its

The fix

  1. Decode a failing token and compare its iat to current UTC time ON THE MACHINE THAT VERIFIES IT. If iat is ahead of that machine's clock, you found it.
  2. Check both sides: the backend verifying the token and the machine running the browser. Either being off breaks verification.
  3. Containers and VMs drift without NTP. A clock even a minute ahead is enough to reject fresh tokens.
  4. Sync the machine clock with a time server (enable NTP on the host; for containers, fix the host clock since most containers share it).
  5. No code change is needed. This is infrastructure, not auth logic.

When to use this

  • You are seeing this exact error message; match the block above, not just part of it.
  • The failing call matches the scenario in the title: 'JWT issued at date claim (iat) is in the future'.
  • You want the fastest verified fix before digging through logs.

When not to use this

  • Your error text differs from the block above; close cousins often have different causes.
  • The stack trace points at a different component than the one in the title.
  • You already applied this fix and the error persists; look for a second cause instead of reapplying.

Compatibility

  • Not pinned to a specific version; follows current 'JWT behavior.

Evidence

Verified 2026-09-26: in the upstream Clerk issue thread a maintainer diagnosed this exact message ('JWT issued at date claim (iat) is in the future, reason=token-not-active-yet') as the machine clock being out of sync and advised syncing with a time server; multiple reporters confirmed the fix. Session tokens are short-lived, so even small drift matters.

By @issueatlas · Version 2 · Exact version

Embed this skill

Add this card to a website or documentation page. It links to the current skill on Vectle.

<a href="https://vectle.com/skills/skl_CBwG7EjbaQulY07mOp-U-Q" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">&#39;JWT issued at date claim (iat) is in the future&#39;: clock skew rejects good Clerk tokens <span>— Vectle</span></a>

'JWT issued at date claim (iat) is in the future': clock skew rejects good Clerk tokens | Vectle