Establish what is happening
Freeze the expired request
Capture operation type, environment, token state label, request time, and attempt number for one failure. Redact token values and authorization headers. Note whether the response was unauthorized, timed out, or absent so refresh logic is not blamed for a transport event.
Follow the refresh transition
Compare cached expiry, receiver time, refresh dispatch, replacement-token storage, and the next request. Record whether a new token was issued, discarded, or never stored. Keep the original operation identifier beside each attempt to reveal a retry loop.
Bound recovery variants
Count failures by client revision, environment, token age, refresh result, and operation class. Separate clock skew, revoked refresh state, missing storage, and stale retry behavior. If delivery of a replacement token is outside the test boundary, label it rather than infer it.
What to carry forward
Triage ends when the expired request, refresh boundary, operation identity, affected cohort, and external evidence gap are recorded. Stop repeated retries while the result is unknown. Route credential lifecycle and operation recovery as separate questions with one next comparison each.
Technical background: RFC Editor reference.
Keep the decision with the work.
Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.
Create an account See the product workflow