Since 2026-07-22, GET /auth/v1/admin/users/{id} on our hosted project intermittently returns 403 with:
invalid JWT: unable to parse or verify signature, token is unverifiable: error while executing keyfunc: unrecognized JWT kid <nil> for algorithm ES256
Environment
- Hosted Supabase project, ref
btvisumxjqcpawtflxvh (eu-central), Auth version 2.193.1 (latest, per Infrastructure page)
- Authorization: our
sb_secret_… API key (not a JWT), sent via supabase-py (auth.admin.get_user_by_id)
Symptoms
- ~1 in 6 calls fails; identical consecutive requests from a single process (same key, same target user, 1 s apart) yield mixed results, e.g. OK/OK/OK/FAIL/OK/OK.
- Failures occur at all hours; first occurrence 2026-07-22, frequency increasing (on 2026-07-25 we saw 2 failures within 40 seconds: 08:35:02 and 08:35:36 UTC; also 08:05:02 UTC).
- Onset coincides with the rollout window of Auth v2.193.1 / the v2.194.0 RCs (2026-07-22).
Config is clean and long-settled
- Current signing key: ECC (P-256) with a proper kid; no standby key; no previously-used keys
- Legacy HS256 shared secret: revoked ~4 months ago
- No key or settings changes on our side in months
Why we believe this is platform-side
Our sb_secret_… key is not a JWT at all, so the ES256 token the keyfunc rejects cannot be the credential we sent — it appears to be minted inside the platform (gateway → auth exchange), and some replica/path signs or resolves it without a kid.
Happy to provide more timestamps or run diagnostics.
Since 2026-07-22,
GET /auth/v1/admin/users/{id}on our hosted project intermittently returns 403 with:Environment
btvisumxjqcpawtflxvh(eu-central), Auth version 2.193.1 (latest, per Infrastructure page)sb_secret_…API key (not a JWT), sent via supabase-py (auth.admin.get_user_by_id)Symptoms
Config is clean and long-settled
Why we believe this is platform-side
Our
sb_secret_…key is not a JWT at all, so the ES256 token the keyfunc rejects cannot be the credential we sent — it appears to be minted inside the platform (gateway → auth exchange), and some replica/path signs or resolves it without akid.Happy to provide more timestamps or run diagnostics.