Re-run the git-lfs closure scan for a GitHub-linked repository
POST/api/repos/{owner}/{repo}/github-lfs/recheck
recheckGithubLfs
Walks everything the repository's **current** refs make reachable and reports whether any of it is a git-lfs pointer file, then stores the verdict and updates `write_health`. The scan's object universe is STORAGE, not any incoming pack: an object that is stored but currently unreachable — a pointer force-pushed away that a branch could resurrect — is found the moment a ref would reach it. It is the same computation the push gate runs, so a `clean` here and an admitted push are one answer. Three results. `clean` means every object in the closure was read and none is a pointer. `pointers_detected` names the first one found. `unverified` means the scan could not answer — a read failure, a missing object, or a closure past the walk ceiling — and it is the **fail-closed** value, not an error: a GitHub-managed repository's pushes are refused on it exactly as they are on `pointers_detected`. `ref_set_digest` binds the verdict to the exact refs it was computed over, and `scanner_version` to the grammar that computed it; a stored verdict that matches neither is treated as `unverified` rather than trusted. Available on any repository with a GitHub relationship, mirror included — a mirror has to be able to clear `lfs_blocked` before it can be promoted to `github_managed`. `404` when the repository has no relationship at all. Requires repository **admin**: the scan walks the full closure.
Requires authentication using a bearer token or a session cookie — see tokens and scopes.
curl
curl -X POST 'https://neosource.dev/api/repos/OWNER/REPO/github-lfs/recheck' \
-H 'Authorization: Bearer $NEOSOURCE_TOKEN'fetch
fetch("https://neosource.dev/api/repos/OWNER/REPO/github-lfs/recheck", {
method: "POST",
headers: {
Authorization: "Bearer $NEOSOURCE_TOKEN",
},
});Path parameters
ownerrequiredRepository owner or organization slug.
reporequiredRepository name.
Responses
200The verdict of this scan
application/json
Standard errors
Bodies documented once for the whole API — see standard errors.
- 400Bad Request — one of: invalid_input
- 401Authentication required
- 403Forbidden — one of: forbidden
- 404Not Found — one of: not_found
- 409Conflict — one of: already_exists, conflict, non_fast_forward
- 423Locked — one of: busy
- 429Rate limited — retry after the `Retry-After` header
- 500Internal server error
- 503Service temporarily unavailable / at capacity — retry after the `Retry-After` header
- 504Gateway timeout — the request exceeded the server's handling budget