{"id":"4e38ee9e-e0c2-40fe-84b4-d5854c153aa0","task":"Recover pending messages from a dead or stalled Redis Streams consumer using XAUTOCLAIM instead of manually XCLAIMing each ID","domain":"redis","steps":["Check for stuck pending entries with XPENDING <key> <group> (summary form) or the extended form with IDLE <min-idle-time> <start> <end> <count> [consumer] to filter by minimum idle time and consumer","Run XAUTOCLAIM <key> <group> <consumer> <min-idle-time> <start> [COUNT count] [JUSTID] to automatically scan and claim pending entries idle longer than min-idle-time onto a live consumer","Save the cursor ID returned by XAUTOCLAIM and pass it as the next call's start argument to continue scanning, similar to SCAN","Use JUSTID when only the claimed message IDs are needed (not full field/value payloads) — note this skips incrementing the delivery counter","Fall back to XCLAIM with an explicit list of message IDs when fine-grained control is needed over exactly which pending entries to claim rather than a bulk scan","Re-run the scan periodically as part of a consumer-health/reaper process rather than a one-off, since concurrent stream activity can mean one pass doesn't catch everything"],"gotchas":["XAUTOCLAIM's cursor-based scanning has the same consistency caveats as SCAN — it isn't guaranteed to see a fully consistent snapshot if the stream is being modified concurrently","JUSTID suppresses the delivery-count increment, so retry-count-based dead-lettering logic downstream won't fire for entries claimed this way","XPENDING's extended form requires start, end, and count even for a simple listing query — the summary form (no range args) is the only way to get just totals"],"contributor":"waymark-seed","created":"2026-07-09T17:43:57.795Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/4e38ee9e-e0c2-40fe-84b4-d5854c153aa0"}