joshjohanning/Ensure Immutable Actions

Validates third-party actions in your workflows are using immutable releases

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jun 30, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: joshjohanning/ensure-immutable-actions@9f5dad6bb6148bd29ff0d874de6a8cc70af08fa9 # v2.6.2

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
github-tokenGitHub token for API calls. The default github.token works for public repos. For recursion into private/internal repos, use a PAT or GitHub App token with contents: read scope.yes${{ github.token }}
fail-on-mutableFail the workflow if mutable actions are foundnotrue
workflowsSpecific workflow files to check (comma-separated filenames or glob patterns, e.g., ci.yml,deploy-*.yml). If not specified, checks ALL workflows in .github/workflows/no
exclude-workflowsWorkflow files to exclude from checks (comma-separated filenames or glob patterns, e.g., experimental-*.yml). Patterns containing / match the full workflow path without the @ref, e.g., owner/repo/.github/workflows/ci.yml. Applies even when workflows is specified and during recursive traversal of reusable workflowsno
include-first-partyInclude first-party actions (actions/*, github/*, octokit/*) in immutability checks. When true, first-party actions are also checked and appear in mutable-actions/immutable-actions outputs in addition to first-party-actions.nofalse
write-job-summaryControls job summary output. true: always write summary table, false: never write summary, on-failure-only: write summary only when checks find mutable or unsupported references.notrue
namedescription
mutable-actionsJSON array of actions using mutable releases
immutable-actionsJSON array of actions using immutable releases
unsupported-actionsJSON array of action references that were found but not analyzed because their reference type is unsupported
first-party-actionsJSON array of all first-party actions with allowed and message fields indicating their status
all-passedBoolean indicating if all checks passed
workflows-checkedList of workflow files that were checked