Skip to content

Bug: gh actions-lock rewrote a composite action, but did not lock it #264

Open

Description

@woodruffw

I think this is related to #183.

I observed this in astral-sh/uv#23077.

Expected behavior

gh actions-lock should either skip rewriting **/action.ya?ml (unless it's .github/workflows/action.ya?ml) or properly lock it, i.e. include it by reference in the workflow lockfile.

Actual behavior

gh actions-lock appears to have rewritten a local composite action into its unpinned form, but without adding lockfile entries for it. The composite action's own action dependencies appear as dependencies in each calling workflow's lockfile section, but without any indication that they're transitive rather than direct.

zizmor then flags this because workflow lockfiles are per-repo, and it can't guarantee that any external user of the action gets proper hash-pins. In other words, the rewrite degrades the immutability property for external consumers of the action, even if first-party (in-repo) uses are properly locked indirectly.

Activity

  1. hashcatHitman commented on Nov 3, 2026

    @hashcatHitman

    I believe we're seeing this in rust-lang/crabwatch#143 too.

  2. Andrej730 commented on Nov 4, 2026

    @Andrej730

    Met this also on an internal composite action used by the repo, added # zizmor: ignore[unpinned-uses] as a workaround for now
    (IfcOpenShell/IfcOpenShell@be1cf66)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions