Skip to content

Adopt workflow execution protections across the portfolio #202

Description

@devantler

🤖 Generated by the Agentic Engineer

Objective

Adopt GitHub Actions workflow execution protections across every active portfolio repository so only approved actors and events can start each workflow, with stricter policy for deployment and manual-entry workflows.

Context

GitHub made workflow execution protections generally available on 2026-09-17. Policies can restrict actors and events, target specific workflow paths, expose enforcement insights, and be managed through REST at repository, organization, or enterprise scope.

Current verified evidence:

  • The monorepo has no pull_request_target workflow.
  • Its three workflow_dispatch entry points are audit-docs.yaml, publish-pages.yaml, and todos.yaml.
  • The monorepo repository-level Actions policy inventory is empty.
  • Organization-level policy inventory is currently QUERY-UNKNOWN because the routine credential lacks admin:org; no absence is inferred.
  • GitHub will enforce its default public-repository pull_request_target restriction on 2026-11-02 for affected repositories.

References:

Desired state

Every workflow is covered by a deliberate layered policy. Broad CI remains usable by the contributors and automation that need it; deployment, publication, workflow_dispatch, and repository_dispatch workflows are limited to explicitly approved identities and events. pull_request_target is prohibited by default and permitted only for a reviewed workflow-path exception with a documented threat model.

Acceptance criteria

  • Inventory every active, non-archived portfolio repository, workflow path, trigger event, required caller, and current policy inherited from repository/organization/enterprise scope.
  • Resolve every required actor to its live GitHub actor type and ID, including trusted humans, repository roles, Dependabot, Renovate, suite-owned Apps/bots, and reusable-workflow callers.
  • Classify workflows by exposure: ordinary CI, required reusable workflow, scheduled maintenance, manual/repository dispatch, publication, deployment, and privileged administration.
  • Define layered actor/event policies rather than one account-wide allowlist.
  • Prohibit pull_request_target by default; document and independently review any workflow-path exception before enforcement.
  • Apply workflow-path targeting to deployment, publication, privileged administration, and manual-entry workflows.
  • Preserve required pull_request, push, merge_group, schedule, workflow_call, workflow_dispatch, and repository_dispatch events only where the inventory proves they are needed.
  • Use Evaluate mode and policy insights where the plan supports it; otherwise stage enforcement through a representative low-risk repository before portfolio rollout.
  • Exercise positive controls for every required actor/event pair and safe negative controls through policy insights or a dedicated test repository.
  • Verify no required checks, releases, deployments, dependency updates, or scheduled workflows are stranded.
  • Manage policies through the reviewed declarative path when supported, otherwise use the versioned REST API and record the remaining GitOps gap under Adopt remaining rulesets declaratively as provider-upjet-github gains support (10 org rulesets + push + Actions policies) #69.
  • Read back policy source, enforcement mode, target repositories, workflow paths, actor IDs, and events after every mutation.
  • Add drift coverage so deletion, broadening, or actor/event omission is detected.
  • Document staged rollback and the 2026-11-02 pull_request_target enforcement deadline.

Dependencies

Notes

Do not infer trust from a provider name or repository write access. GitHub features may be exempt for built-in processes, but custom workflows triggered by their identities still require the relevant actor to be allowed.

Activity

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions