GitHub Actions Expired Artifacts: UI & REST API Change Explained
QUICK ANSWER
GitHub changed expired Actions artifact visibility on September 24, 2026. After an artifact expires, it is no longer displayed in a workflow run summary and is no longer returned by the repository list-artifacts or get-an-artifact REST API paths. GitHub says the underlying expired files were already deleted from storage before this UI/API change, so disappearance is not a new deletion event and does not change artifact retention settings or billing. If an operator needs to know which artifacts a historical workflow produced after those artifacts expire, GitHub says that information remains available in the workflow run logs while those logs themselves are retained. Automation that previously treated an Expired artifact object as historical inventory should therefore be updated to distinguish current downloadable artifacts from historical run evidence.
An Actions dashboard or internal inventory suddenly shows fewer artifacts even though workflow behavior has not changed
A REST integration that previously encountered expired artifact records no longer receives them from repository artifact listings
An operator interprets a missing expired artifact as a new deletion, storage-billing event, or retention-policy change
A support or audit workflow needs to reconstruct which files a historical workflow produced after the artifact payload has expired
An API client assumes a historical artifact ID will remain queryable indefinitely
Possible causes
GitHub stopped displaying expired artifacts in workflow run summaries and stopped returning them from the listed artifact REST endpoints
Expired artifact files were already removed from storage under the configured retention policy, while the old UI could continue showing an Expired placeholder
Some integrations conflated artifact metadata visibility with artifact-file retention and billing state
Historical production evidence can span different retention surfaces: artifact payloads and workflow logs do not necessarily remain available forever
HOW TO FIX IT
Work from the safest step to the harder repair.
Step 1. Inventory code, dashboards and reports that call GitHub's repository artifact-listing or get-an-artifact endpoints and identify any logic that expects expired artifact records to remain visible.
Step 2. Separate two questions in the data model: whether an artifact is currently downloadable and whether a historical workflow previously produced an artifact. Do not use current artifact listings as a complete historical production ledger.
Step 3. Remove UI or API logic that treats a missing expired artifact as evidence of a fresh deletion. GitHub says expired files were already deleted from storage before this visibility change.
Step 4. Do not recalculate storage charges from the presence or absence of an Expired placeholder. GitHub explicitly says this change does not alter billing or artifact retention settings.
Step 5. When historical troubleshooting needs the name or production of an expired artifact, inspect the workflow run logs while those logs are still retained. Capture only the minimum diagnostic metadata needed by your own retention policy.
Step 6. Handle a direct artifact lookup that no longer returns an expired artifact as an expected retention-state outcome instead of automatically classifying it as an API failure.
Step 7. For compliance or release-evidence requirements that outlive GitHub's artifact retention window, preserve the required evidence through an approved archival process before expiry rather than depending on GitHub to expose deleted artifact metadata indefinitely.
Step 8. Review the repository, organization and enterprise Actions retention settings separately. This September 24 visibility change does not modify those settings.
Step 9. Test API clients against runs containing active artifacts, runs whose artifacts have expired, and runs with no artifacts so the integration does not collapse those states into one ambiguous error.
Step 10. Document the September 24 behavior change in operator runbooks so a future drop in artifact-list counts is not mistaken for a billing change or mass deletion incident.
Need the actual code? Go to GenesisCodeDoctor.com to search the Code Store or request code for the exact platform, error, and repair you are working on.
1. Do you only need artifacts that are currently downloadable? Use the current artifact APIs and handle expired items as absent.
2. Do you need to know what an older run produced? Check the workflow run logs while the logs remain retained.
3. Do you need evidence beyond GitHub's configured retention period? Preserve approved evidence before expiry in a governed archive.
4. Did artifact counts drop after September 24 without a retention-setting change? Check whether expired placeholders simply stopped being returned before treating it as an incident.
REPAIR FLOW
A visual path from symptom to verified production.
Observe→
Protect→
Isolate→
Repair→
Test→
Publish→
Verify live
BEFORE YOU PASTE CODE
Protect the working site first.
Treat missing expired artifacts as a normal state your API client can handle without destructive remediation.
Keep archival credentials and copied build outputs under the same least-privilege controls as the original CI/CD system.
Test retention-boundary behavior before changing production dashboards, audit exports or release gates.
STOP AND GET HELP WHEN
Do not turn a repair into a larger outage.
Do not claim GitHub newly deleted artifact files on September 24; GitHub says expired files were already removed from storage.
Do not claim the change modifies retention settings or storage billing; GitHub says it changes display/API visibility only.
Do not treat the current artifact-list endpoint as a complete historical audit log after artifacts expire.
Do not retain sensitive build outputs indefinitely merely to work around metadata visibility; use an approved evidence-retention policy.
HOW GENESIS HANDLES IT
Diagnose the exact failure before choosing a repair.
Genesis separates the visible symptom from the underlying technical cause. Run the supported diagnostic first, review the evidence, and then use a matching repair only when the failure is actually verified.
Did GitHub delete my artifacts because of this September 24 change?
Not as a new consequence of this update. GitHub says the underlying files for expired artifacts were already deleted from storage; the change removes the leftover expired entries from the UI and affected REST API responses.
Does this change my Actions artifact retention period?
No. GitHub says the change does not affect artifact retention settings.
Does hiding expired artifacts change Actions storage billing?
No. GitHub explicitly says the change does not affect billing.
How can I tell what an old workflow produced after its artifacts expire?
GitHub says the workflow run logs can still show which artifacts the workflow produced, subject to the retention of those logs.
RELATED REPAIR GUIDES
Continue from easy to harder.
Next step
Start with a free diagnostic. If Genesis verifies a problem and a compatible treatment exists, continue to the matching Code Store product or repair path. If you cannot find the exact code you need, request it at GenesisCodeDoctor.com rather than forcing a generic snippet into the wrong platform.