Expiring Failed Jobs with JobExpirationTimeout

Tags: #<Tag:0x00007faffc500d80>

I have a job filter with an OnStateApplied method which sets context.JobExpirationTimeout to 1 hour. I am using Redis for storage. The Succeeded jobs have a TTL (time-to-live) of 3600 but the Failed jobs still have a TTL of -1.
Do Failed jobs behave differently? I can’t clean them up manually so it is important that they are removed.