Pinning an action to a full length commit SHA is currently the only way to use an action as an immutable release. Pinning to a particular SHA helps mitigate the risk of a bad actor adding a backdoor to the action's repository, as they would need to generate a SHA-1 collision for a valid Git object payload. When selecting a SHA, you should verify it is from the action's repository and not a repository fork.
https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-third-party-actions suggests
Renovate best practice automates this process, see https://docs.renovatebot.com/upgrade-best-practices/#extends-helperspingithubactiondigests