This repository was archived by the owner on Jul 19, 2026. It is now read-only.
Description Summary
Session JWTs use only exp for expiry. Missing standard claims make tokens weaker against replay and misuse.
Current state
internal/crypto/sessionjwt/manager.go — tokens have session_id, tenant_id, agent_id, run_id, tool_context, workload_hash, exp
No jti (JWT ID) — same token can't be individually revoked or tracked
No nbf (not before) — no clock skew tolerance
No iss (issuer) — can't distinguish tokens from different broker instances
No token revocation list — revoking a session doesn't immediately invalidate outstanding tokens
Required work
Files
internal/crypto/sessionjwt/manager.go — add claims, check revocation
internal/store/redis/runtime.go — add revocation set operations
internal/app/service.go — on RevokeSession, add token jti to revocation list
Priority
Medium — important for security hardening, not blocking for initial deployment.
🤖 Generated with Claude Code
Reactions are currently unavailable
Summary
Session JWTs use only
expfor expiry. Missing standard claims make tokens weaker against replay and misuse.Current state
internal/crypto/sessionjwt/manager.go— tokens havesession_id,tenant_id,agent_id,run_id,tool_context,workload_hash,expjti(JWT ID) — same token can't be individually revoked or trackednbf(not before) — no clock skew toleranceiss(issuer) — can't distinguish tokens from different broker instancesRequired work
jticlaim with a unique ID per tokennbfclaim (issued-at minus clock skew tolerance)issclaim with the broker's identityjtito the revocation setexpwould have passed (no unbounded growth)Files
internal/crypto/sessionjwt/manager.go— add claims, check revocationinternal/store/redis/runtime.go— add revocation set operationsinternal/app/service.go— on RevokeSession, add token jti to revocation listPriority
Medium — important for security hardening, not blocking for initial deployment.
🤖 Generated with Claude Code