Decision: Use GitHub Actions Insights to review workflows in evaluation mode first. Then block pull_request_target, or explicitly allow only workflows with a documented need. The announced default applies to eligible public repositories without an applicable event policy; private and internal repositories are outside this default. GitHub announced the policy and its scope on September 17, 2026.
Who this is for: Enterprise IT owners governing public GitHub repositories and Actions policies.
CI platform engineers maintaining iOS and macOS pull request workflows.
Security owners reviewing exceptions, credentials, and audit evidence.
Last updated October 28, 2026. Policy details and dates were checked against GitHub’s announcement, its Actions policy documentation, and its guidance on workflow execution protections. Recheck these sources before rollout; GitHub may update scope or behavior.
01 Before assessment: establish the repository scope
The first task is not to change a workflow. It is to identify which repositories and event policies are in scope. GitHub’s announced default targets public repositories that do not already have an applicable event policy. Private and internal repositories do not receive this particular default. Do not infer that every repository in an enterprise, or every Mac CI workflow, will be affected. The announcement defines the public-repository scope and planned enforcement date.
Which repositories are affected by the GitHub Actions pull_request_target default rules? Start with repository visibility, then check for an applicable event policy. A public repository without one is a candidate for the announced default. A private or internal repository is not affected by this public-repository default, although an organization or repository may have its own Actions policy. Confirm the actual configuration rather than extrapolating from another repository.
Create an inventory that connects each candidate repository to a workflow file, owner, and business purpose. Search for pull_request_target in workflow files, then verify the actual event configuration and policy scope. A text search finds declarations; it does not prove that a particular workflow will be blocked or permitted under the effective policy.
- [ ] Record repository name and visibility.
- [ ] Record whether an applicable event policy already exists and where it is configured.
- [ ] List each workflow file using
pull_request_target, its owner, and the job it runs. - [ ] Mark workflows that handle fork pull requests, labels, comments, triage, or other privileged actions.
- [ ] Keep public, private, and internal repositories in separate review groups.
Use GitHub’s Actions policy guidance to distinguish a repository’s visibility from its effective workflow policy. The two are related to scope, but visibility alone does not tell you whether a separately configured policy already governs that workflow.
Do private repositories need to be changed for this default? Not because of this public-repository default. Still, inspect their existing policy and workflow permissions. A private repository can have its own security exposure or policy restriction; “not covered by this default” is not the same as “safe without review.”
02 During evaluation: use Insights as evidence, not enforcement
Evaluation mode is for observing which workflow executions would be disallowed under the rule. It is not proof that the execution has already been blocked. GitHub announced the evaluation phase before the planned automatic enforcement date of December 2, 2026, for affected repositories. Keep those states distinct in dashboards, tickets, and change approvals. The official announcement describes the evaluation and enforcement timeline.
How do you find Mac CI workflows that may be blocked using Insights? Open the relevant repository’s Insights and review the workflow execution protection evaluation results. For each result, identify the repository, workflow file, event, and owner. Then compare the result with the policy that applies to that repository. GitHub’s Actions metrics documentation explains available usage and workflow metrics; use the protection evaluation result for policy impact and the metrics view for operational context.
Do not treat a clean result from one observation as a lasting guarantee. A new workflow file, changed trigger, repository visibility change, or policy edit can alter the set of affected executions. Capture the date and scope of each review, and repeat it after changes to workflow files or policy configuration.
- [ ] Save the evaluation result or an auditable record of the relevant entries.
- [ ] Map every flagged event to the exact workflow file and repository.
- [ ] Check whether the result is an evaluation finding or a confirmed enforcement outcome.
- [ ] Assign an owner and disposition: remove, redesign, or request a narrow exception.
- [ ] Repeat the review after material workflow or policy changes.
A useful record includes the workflow path, triggering event, source of the pull request, permissions, secrets or credentials available to jobs, runner group, and the reviewer’s decision. Insights helps you find candidates. It does not decide whether the workflow’s trust boundary is acceptable.
03 Before requesting an exception: review the trust boundary
The risk in pull_request_target depends on what the workflow does and what it trusts. The event can run in the base repository context. A workflow that then checks out or executes untrusted code from a fork while it has access to privileged repository context can expose permissions or credentials. GitHub’s security guidance for pull_request_target explains the event’s specific security considerations.
A Mac Runner does not change that trust relationship. Apple hardware, a separate machine, or a successful build does not by itself isolate a workflow’s tokens, secrets, or repository permissions. Treat the trigger, code origin, permissions, and credential access as separate review questions. For self-hosted runners, also assess what a job can reach on the host and whether state can persist between jobs; GitHub’s secure-use guidance for self-hosted runners covers runner security risks.
Use this evidence before you decide whether to retain the event:
- Code source: Does the workflow check out code from the base repository, a fork, or a user-controlled reference? Does it execute scripts, build steps, or package hooks from that source?
- Permissions: What can the workflow’s token read or write? Set the minimum required permissions in the workflow or job, and verify the effective permissions rather than relying on assumptions. GitHub documents the
permissionssetting in its workflow syntax reference. - Credentials: Can the job access signing material, deployment credentials, or other secrets? Identify the exact step that needs each credential and whether untrusted code can run before or alongside it.
- Runner exposure: Can the job access shared work directories, caches, keychains, local services, or credentials left by earlier work? A successful job status does not answer these questions.
- Purpose: Is
pull_request_targetneeded for a privileged action such as labeling or commenting, or is it being used to run ordinary tests that could use a more suitable trigger?
Write down the event, code source, permissions, credential requirements, and runner exposure for each workflow. This turns “the Mac build needs it” into a reviewable claim. It also helps distinguish a workflow that needs controlled access to pull request metadata from one that executes untrusted pull request code.
04 Before changing policy: compare the available dispositions
The right disposition depends on what the workflow needs, not on whether a Mac is involved. Use the comparison below to choose a review path. It is a decision tool, not a claim that any single choice is automatically safe.
| Option | Appropriate when | Main review concern | Evidence to retain |
|---|---|---|---|
Block pull_request_target |
No remaining workflow has a justified need for the event | Confirm that required PR checks and automation still run through suitable triggers | Evaluation findings, affected files, test results, policy change |
| Allow a specific workflow file | A defined workflow needs the event and its trust boundary has been reviewed | Keep the allowance limited to the intended file and policy scope | Business reason, approver, file path, permissions, review date |
| Redesign before deciding | The workflow runs fork code with unnecessary permissions or credentials | Separate untrusted build/test work from privileged follow-up actions | New trigger design, token permissions, credential flow, validation results |
Workflow execution protections support targeting workflow files. Use the narrowest scope that meets the requirement, and verify the effective policy at the correct repository or organizational level. GitHub’s announcement describes workflow-file targeting. Its Actions policies API documentation provides a reference for policy configuration and inspection.
An explicit allow is not an automatic security approval. It only expresses a policy decision. The workflow still needs a reviewed code path, least-privilege permissions, controlled credential access, and runner safeguards. Record why the exception exists, who approved it, which repository and file it covers, and what condition will trigger a re-review.
- [ ] Prefer a safer trigger or split workflow if the event is not essential.
- [ ] If an exception is necessary, identify the exact workflow file and policy scope.
- [ ] Confirm that no unrelated workflow inherits the exception.
- [ ] Record approver, rationale, affected repositories, and a review condition.
- [ ] Recheck the resulting policy configuration after applying the change.
05 Before enforcement: validate Mac CI execution and credential boundaries
Test the policy change in a controlled context before relying on it for production pull requests. Include one workflow expected to be allowed and one expected to be denied, if you can test both safely. Compare the workflow outcome with the policy evaluation record. A green build alone is not evidence that the intended rule was applied.
For Mac CI, validate the workflow and the host boundary separately. Review which runner group can receive the job, what repository access is granted, and whether signing credentials are available to that job. Check how build artifacts are created and where they can be retrieved. If the workflow uses a self-hosted Mac Runner, assess cleanup and persistence between jobs as part of runner security, not as a property of the event policy.
Mac CI pull_request_target acceptance checks:
- [ ] The expected event is allowed or denied under the policy you intended to change.
- [ ] The result matches both the workflow run and the evaluation or policy record.
- [ ] Fork-provided code is not executed with unnecessary repository permissions.
- [ ] Signing credentials are unavailable to jobs that do not need them.
- [ ] The Mac Runner can access only the repositories, secrets, and services required for its assigned work.
- [ ] Build outputs and logs do not expose credentials or sensitive data.
- [ ] The workflow owner knows the expected failure mode and escalation path.
Separate ordinary pull request validation from privileged actions where practical. For example, let an untrusted-code workflow build or test without signing credentials, then use a separately controlled workflow for actions that require trusted context. The exact design depends on your release process, but the boundary should be explicit in the workflow and permissions. Read GitHub’s pull_request_target security guidance alongside the runner and permission reviews; it does not replace them.
Operational warning: If a job fails after enforcement, first determine whether the event was denied by policy, the workflow failed for another reason, or the runner could not complete the task. Those causes require different fixes. Do not respond to a policy denial by granting a broad exception before you have identified the failing workflow and its trust boundary.
06 At the release gate: make and document the decision
Use the assessment to make one of three decisions: block the event, allow a justified workflow narrowly, or delay the policy change until a risky workflow has been redesigned. The announced automatic enforcement date for affected repositories is December 2, 2026. Treat that date as a review gate, not as evidence that every public repository is affected. GitHub’s announcement provides the planned date and affected scope.
For each decision, preserve the repository visibility and policy scope, evaluation findings, workflow file paths, test results, exception approvals, and named owners. Keep enough evidence for another engineer to reconstruct why a workflow was blocked or allowed. If policy scope or enforcement behavior changes, repeat the review against GitHub’s current documentation and your own repository results.
The operating model matters beyond this one event. If your current CI depends on a shared Mac with broad repository access, long-lived signing credentials, or unclear job cleanup, those are real shortcomings even if the policy change passes. A dedicated local Mac can offer direct hardware control, but you own procurement, maintenance, capacity planning, and recovery. A remote Mac can be worth evaluating when you need a separate macOS execution environment without purchasing a machine for every developer; it does not replace workflow-level permissions, credential controls, or runner security review.
After your workflow and policy checks are complete, compare the operating requirements with CALMVPS Mac rental options and CALMVPS pricing. If your existing pipeline needs a separate Mac execution environment, assess that option against your workload, access requirements, and support model. Keep local hardware or another execution approach when you need direct physical access or have a stable workload that justifies owning and operating the capacity.