Complete this checklist before going live. Each item reduces a specific class of production failure.
member_external_id mode is disabled — the ALLOW_UNVERIFIED_MEMBER_SESSION_MINTING environment variable must not be true in production.exp claim in your member_assertion should be now + 60 at most. Longer TTLs widen the window for replay attacks.member_assertion JWTs must never be sent to a browser, mobile client, or logged to disk.kid values — use names like prod-v1, prod-v2 so you can rotate without ambiguity.require_member: true on user-scoped tools — any tool that serves per-user data should require a member session, not accept a plain API key.hmac_signature for custom tools in production — static_bearer provides no request integrity. HMAC is strongly recommended for any production API.X-Tengine-Signature. Any unverified endpoint can be called by anyone who knows the URL.X-Tengine-Timestamp is more than 5 minutes old to prevent replay attacks.base_url uses HTTPS — http:// is blocked in production. Ensure your API has a valid TLS certificate.sub claim in your member_assertion should be a permanent user identifier (e.g., database UUID), not an email address or username (which can change).X-Tengine-Project-Id — confirm the request is coming from your expected project, not an unrelated TengineAI project.| Item | Risk if skipped |
|---|---|
| Separate keys per environment | Dev key leak affects production |
require_member on user-scoped tools | One user can invoke tools as another |
| HMAC signature verification on tool endpoints | Anyone can call your API directly |
| Timestamp drift check | Valid signatures can be replayed |
| Token caching | Unnecessary latency and backend load at scale |
| Stable member IDs | Per-user attribution breaks if IDs change |