

uses line at the job level and can still supply job-specific inputs, secrets, or extra steps.
Example: caller workflow in a product repository (.github/workflows/ci.yml)
workflow_call trigger. That exposes inputs and secrets so callers can pass values explicitly.
Example reusable workflow in the platform repo (.github/workflows/reusable-ci.yml):
Reusable workflows are invoked at the job level using
uses and can accept inputs and secrets. To forward all allowed caller secrets, use secrets: inherit in the caller workflow.
Illustration of the structural difference:


Important: Restricting allowed actions protects your environment but can cause immediate workflow failures if teams reference blocked or unverified actions. Communicate policy changes and provide a curated list of approved alternatives.
- Reusable workflows use the
workflow_calltrigger and are invoked at the job level. - Composite actions are invoked at the step level and group multiple commands inside a step.
- Enterprise allow lists (including the “verified creators” filter in the Marketplace) determine which third-party actions are permitted.

- Reusing workflows: https://docs.github.com/en/actions/using-workflows/reusing-workflows
- Composite actions: https://docs.github.com/en/actions/creating-actions/creating-a-composite-action
- Configuring allowed actions for organizations: https://docs.github.com/en/organizations/keeping-your-organization-secure/managing-github-actions-settings-for-your-organization#configuring-allowed-actions-for-your-organization
- About allowed and blocked actions: https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#about-allowed-and-blocked-actions