As of October 24, 2026, no: a GitHub Actions workflow lockfile pins supported workflow dependencies to recorded commits; it does not lock the Mac Runner, its macOS image, or Xcode. This week, pilot the feature in one repository, review the generated lockfile alongside workflow changes, and keep Runner and toolchain control as a separate task. GitHub lists workflow dependency lockfiles as a public preview in its October 14 announcement.
This guide is for engineers maintaining GitHub Actions macOS or Xcode pipelines who need to assess moving Action references. It also helps DevOps engineers evaluating the preview and platform owners responsible for dependency review, Runner environments, or organization-level policy.
The lockfile controls workflow dependencies, not the build machine
The key distinction is between what a workflow calls and where that workflow runs. A reference such as an Action tag or branch may move to a different commit. A workflow dependency lockfile records the resolved commits for supported dependencies in an integrated workflow, making the resolution available for review and helping keep later runs tied to those recorded commits. The feature’s stated scope covers dependencies, not the execution environment. See GitHub’s workflow dependency lockfile documentation.
| Pipeline component | What the lockfile does | What still needs separate control |
|---|---|---|
| Action referenced by a workflow | Records a resolved commit for a supported dependency, rather than relying only on a movable tag or branch | Review whether the selected Action and commit are appropriate and safe |
| Action that calls another Action | Records supported transitive dependency commits for the integrated workflow | Inspect changes below the top-level uses: entry |
| Reusable workflow | Records relevant dependencies within the caller’s supported dependency graph | Maintain dependencies inside the reusable workflow’s defining repository |
| macOS Runner and toolchain | Does not pin the Runner image, macOS release, Xcode, or SDK | Choose and manage the Runner and toolchain separately |
That distinction matters in practice. A stable dependency graph does not guarantee that a build uses the same operating system image or developer tools. Conversely, managing the Runner image does not prevent a workflow’s Action reference from moving. macOS CI needs both controls when both sources of change matter.
Moving Action references become reviewable commit records
A workflow that refers to a tag or branch depends on the target behind that reference. If its owner moves the reference after a code review, a later run may resolve a different commit. The lockfile is intended to make the dependency resolution for an integrated workflow explicit and reviewable. It gives maintainers a record to compare; it does not prove that the recorded code is benign.
The practical review should therefore look beyond the workflow’s visible top-level declarations. For example, a workflow may call an Action that itself calls another Action. GitHub’s documentation describes lockfile coverage for supported transitive dependencies. A review that checks only the direct uses: lines can miss changes lower in that chain.
When a lockfile changes, treat the change as dependency evidence to inspect, not routine generated noise. Check which top-level reference prompted the change, whether its resolved commit changed, and whether the dependency graph changed beneath it. If a change is unexpected, pause the rollout and investigate before accepting the new record.
A review can start with ordinary repository inspection:
git status --short
git diff -- .github/workflows
git diff --check
An illustrative review might look like this:
$ git diff --check
$ git status --short
M .github/workflows/build.yml
M .github/workflows/actions.lock
The output only shows that the workflow and lockfile changed and that Git found no whitespace errors. It does not establish that the lockfile is current, that the resolved commits are safe, or that the Runner environment is reproducible. Follow the current official instructions for locking and maintaining workflow dependencies for the preview’s supported generation and validation process. Do not substitute a guessed command for the documented procedure.
Transitive dependencies need a full diff review
A top-level Action can hide additional workflow dependencies. If a lockfile records supported transitive dependencies, the recorded graph gives reviewers more than a list of the Actions named directly in the YAML. That is useful only when the team examines the resulting changes.
When reviewing an update, compare the lockfile with the workflow diff and ask:
- Which direct Action or reusable workflow changed?
- Did a transitive dependency appear, disappear, or resolve to a different commit?
- Does the change match the expected release or maintenance update?
- Is there a reason to defer the update while its code or behavior is reviewed?
These checks are a review method, not a security guarantee from GitHub. A pinned dependency can still contain vulnerable or malicious code. GitHub explicitly distinguishes dependency locking from confirming that a dependency is safe; its secure-use guidance for Actions describes broader considerations for using Actions securely.
A clean lockfile diff answers “what dependency resolution changed?” It does not answer “should this code be trusted?” Keep those as separate review decisions.
Reusable workflows have a repository ownership boundary
A workflow can call a reusable workflow stored in another repository. The caller’s lockfile is not a substitute for maintaining the dependencies declared inside that reusable workflow’s defining repository. GitHub’s lockfile documentation describes the distinction between the caller’s integrated workflow and dependencies managed by the repository that defines a reusable workflow.
This gives platform teams a clear ownership rule:
- The repository that defines a reusable workflow reviews and updates that workflow’s own dependency records.
- The consuming repository reviews the dependencies and references in its caller workflow, including the reusable-workflow call.
- Both repositories should review their own changes; the caller should not assume its lockfile provides governance for code maintained elsewhere.
For a cross-repository call, generate and update dependency records where the supported workflow is defined, then review the caller’s integration separately. If the organization maintains a shared workflow repository, that repository needs a clear owner and change-review process. Consumers still need to understand which reusable workflow revision they call and whether their own workflow dependencies have changed.
This boundary is especially important when multiple teams use a shared release or signing workflow. A caller-side lockfile cannot replace change control in the shared repository. Nor does a shared repository’s lockfile automatically make every consumer’s Runner, permissions, or toolchain consistent.
The lockfile does not choose a Mac Runner or Xcode
A workflow can select a Runner with a runs-on value. GitHub’s workflow syntax reference explains Runner selection, while its hosted Runner reference describes GitHub-hosted Runner environments. A dependency lockfile does not turn a Runner label into an immutable macOS image, and it does not set the Xcode or SDK version.
The same separation applies to self-hosted infrastructure. GitHub’s self-hosted Runner documentation covers the Runner machines that an organization manages. The team must still choose how those machines are provisioned, patched, monitored, and kept compatible with the required build tools.
In a macOS CI pipeline, keep these questions separate:
- Dependency repeatability: Are supported Action and reusable-workflow dependencies recorded and reviewed?
- Runner selection: Does the workflow request the intended hosted or self-hosted Runner?
- Toolchain control: Does the job install or select the required Xcode and SDK, and does it verify what is active?
- Host maintenance: Who updates the macOS image, handles Runner service health, and tests changes before production use?
That is why .github/workflows/actions.lock should not be treated as a complete build-environment snapshot. It addresses workflow dependencies, while Runner and toolchain management remain independent work. If a build must be repeatable, record and check the active environment in the pipeline rather than inferring it from the lockfile.
Decide where to maintain a GitHub Actions workflow dependency lockfile
Use this decision path before requiring the feature across a team:
- If a repository owns the workflow and its dependencies, pilot the workflow dependency lockfile there and review its generated changes with the workflow.
- If a workflow calls a reusable workflow from another repository, maintain the reusable workflow’s dependency records in its defining repository and review the caller’s integration in the consuming repository.
- If the workflow depends on an Action that calls other Actions, review the lockfile’s transitive dependency changes as well as the direct
uses:declaration. - If the primary concern is a changing macOS image, Xcode version, or SDK, do not rely on the lockfile; add separate Runner and toolchain controls.
- If the team cannot review dependency changes or validate the preview’s current workflow, defer enforcement and first establish an owner and review procedure.
This is a staged adoption decision, not an argument to turn on organization-wide enforcement immediately. Start with a repository whose maintainers can review the changes and whose pipeline can be tested without disrupting releases. Expand only after the lockfile process, failure handling, and ownership boundaries are understood.
For teams considering policy enforcement, check the current workflow execution policy documentation and the feature’s preview status before setting requirements. GitHub says the feature is in public preview and warns that preview behavior may change. Treat the current documentation as the authority for which policies and workflows are supported; do not assume preview behavior is a permanent contract.
Updates and Dependabot still need human review
When maintainers change an Action reference, the corresponding lockfile should be updated using the documented workflow and checked for stale or inconsistent entries. The important operational point is to review the update as a dependency change, not to assume that an automated pull request is automatically safe.
GitHub documents Dependabot support for updating dependencies in integrated workflows; see its Dependabot version update documentation. That support can help surface update work, but it does not remove the need to review the proposed change, inspect the relevant dependency diff, and test the pipeline. Automation can propose an update; a maintainer still decides whether to accept it.
Before merging an update, verify that the workflow and lockfile agree under the current documented validation process. Then run the relevant CI checks and confirm the actual macOS and Xcode environment separately. If validation reports an outdated record, do not bypass the check just to clear the build. Identify whether the workflow reference changed, whether the dependency graph changed, or whether the team is using a preview procedure that has since been revised.
This distinction answers a common security question: a GitHub Actions lockfile can make resolved dependency commits more visible and stable, but it cannot prevent a malicious Action from being called, make a compromised commit trustworthy, or replace source review. It reduces ambiguity about what was resolved; it does not certify that resolution.
Keep lockfile adoption and Mac Runner governance as separate tracks
For macOS CI, the lockfile is one layer in the pipeline’s change-control model. It helps track workflow dependency commits. Runner selection, image updates, macOS, Xcode, SDKs, host access, and signing material need their own decisions and checks. Combining those controls in one mental model is how teams end up expecting a dependency file to reproduce a machine it does not describe.
If the existing build runs on Linux, it may not support steps that require macOS or Xcode; if it runs on a local Mac, that machine can still be difficult to share, keep online, and standardize across a team. A remote Mac execution environment is worth evaluating only when the pipeline genuinely needs a Mac node and the team wants to manage that execution path separately from Action dependency locking. NodeMini’s Mac mini options provide a place to review that path, while the NodeMini service overview can help assess whether a remote Mac fits the deployment model.
The practical conclusion is specific: adopt the workflow lockfile to review and record supported Action dependencies, but manage the Mac Runner and Xcode environment independently. If the current build infrastructure has unsuitable toolchain control, requires a permanently maintained physical host, or adds operational work just to access macOS, compare it with a remote Mac before extending the existing setup. For teams that need a separate Mac execution environment for CI, NodeMini is an option to evaluate; teams that do not need Mac-only build steps should keep their current runner model rather than adding a Mac node without a clear requirement.
Last updated October 24, 2026. Preview status, dependency coverage, reusable-workflow boundaries, and update guidance were checked against the GitHub Changelog announcement and the official workflow dependency lockfile documentation.