Nirna.AI

The AI support engineer for production.

Cited evidence using logs, deploys, data, code and features. A recommended fix.

Customer-hosted or on Nirna cloud. Your model. No lock-in.

SUP-4729 · Escalated · L2 · 14 min ago
Users can’t log in since this morning
Nirna.AI posted 39s after escalation
New pattern High confidence

3 accounts hitting the same KeyError('sub') in validate_token since the token-rotation deploy at 09:42 UTC.

  • LogsPOST /auth/verify raises KeyError: 'sub' at tokens.py:59, 3 accounts in 32 min
  • Datanew_token_rotation enabled for all 3 in feature_flag_overrides
  • Code_rotate_claims drops the subject — allowlist omits 'sub'tokens.py:37–45 @ 76b3ab8
  • Deploy76b3ab8 changed tokens.py on the failing call path at 09:42 UTC
Blast radius 3 accounts affected, all with the flag on. Every login on those accounts, not a subset of users.
Recommended fix Add "sub" to the allowlist in _rotate_claims (tokens.py:37–45), and guard the subject read in validate_token (:48–60).
Helpful?

Questions we get asked

What access does Nirna need?

Read access to your tracker, logs, database and repository. The database connector expects a read-only role with SELECT on named tables, so a query outside that grant fails at the database rather than relying on us to behave.

Can it change anything in our systems?

It posts a comment on the ticket. That is the only write it performs anywhere — it does not change statuses, assign owners, touch your database, alter logs, or push code. If posting is unacceptable during evaluation, turn it off and read briefs in Nirna’s own UI; the triage is identical.

Can the AI invent a cause, or a citation?

The verdict, the confidence and the shape of the fix are computed from scored evidence before the model is called. The model writes the prose; it cannot promote a verdict or turn “needs more information” into a diagnosis.

Citations are bound to evidence that was actually collected. Links and commit SHAs are read from that evidence rather than written by the model, and a citation matching nothing is dropped rather than shipped.

Does customer data go to a third party?

One: the model provider, for the brief-writing step. Everything else — classification, clustering, correlation, scoring — happens in process.

The provider is your choice. Point Nirna at Bedrock or Azure in your own account and no evidence crosses a boundary you don’t already control.

What about PII and secrets?

Evidence passes through a single masking boundary before the model sees it. Values become stable pseudonyms rather than [redacted], so the reasoning survives without the identity.

It masks by shape — keys, tokens, emails — and by field label, which is what catches PII with no recognisable form: phone numbers, display names, free-text addresses. Then it re-scans, and halts rather than emit a brief with a credential in it.

Where does it run, and is it multi-tenant?

In your VPC or on Nirna cloud. It is single-tenant by construction: one instance per customer, enforced in code rather than by policy.

How do we know when it’s wrong?

Every brief shows the signals that fired, with their strengths — and the ones that did not. A brief with thin evidence says so and asks for what it needs, instead of guessing confidently.

Rate any brief and the correction feeds back into the weighting.