Chainguard Guardener Actions Security
Configure Chainguard Guardener to recommend and migrate your GitHub Actions to Chainguard's hardened, SHA-pinned …
For the complete documentation index, see llms.txt.
This guide walks you through everything you need to start using Chainguard Guardener on your GitHub repositories:
Linking your Chainguard organization to your GitHub organization is what entitles you to use the Guardener — there is no separate entitlement step.
Note: Chainguard Guardener is in beta. Available to organizations that have installed and linked the Chainguard Guardener GitHub App.
Before you begin, make sure you have the following:
chainctl installed and authenticated. If you haven’t installed it yet, follow the chainctl installation guide, then run chainctl auth login.guardener.association.manage capability. This capability is required to link a GitHub organization to your Chainguard group. See the Built-in Roles and Capabilities Reference for more information on roles.The chainctl guardener commands identify your Chainguard organization by its group name — you don’t need to look up a group ID. Pass the name with --group, or omit the flag entirely and chainctl will prompt you to select from the organizations you have access to.
Install the Guardener GitHub App on the GitHub organization whose repositories you want the Guardener to manage.
The Guardener requests the minimum GitHub permissions needed to operate:
| Permission | Access | Why it’s needed |
|---|---|---|
| Contents | Read & write | Read repository files (workflows, signatures, configuration) and push migration pull request branches. |
| Pull requests | Read & write | Receive pull request events, read diffs, and post review comments and pull requests. |
| Workflows | Read & write | Read and update GitHub Actions workflow files during Actions migration. |
| Checks | Write | Publish check runs that report the Guardener’s results. |
Installing the app does not change any repository on its own. Each feature stays disabled until you opt in with a configuration file, as described in Configuration.
Linking associates your GitHub organization with a Chainguard group so the Guardener knows which Chainguard organization your GitHub activity belongs to.
Run chainctl guardener github link, passing your GitHub organization login and your Chainguard group name:
chainctl guardener github link \
--github-org <github-org-login> \
--group <group-name>If you omit --group, chainctl prompts you to select the Chainguard organization to link.
A browser window opens to authorize with GitHub. This step proves that you own the GitHub organization. The Guardener GitHub App must already be installed on the organization (see Step 1) for the link to succeed.
Note: Linking requires that you are an owner of the Chainguard group (specifically, that you hold the
guardener.association.managecapability) and an owner of the GitHub organization.
If you need to link your own user account rather than an organization, pass your GitHub username to --github-org.
After linking, confirm that the Guardener is active on your repositories:
.chainguard/actions.yaml) as described in Configuration, then open a pull request to see the Guardener respond.To remove the association between a GitHub organization and a Chainguard group, use chainctl guardener github unlink:
chainctl guardener github unlink \
--github-org <github-org-login> \
--group <group-name>When you pass --group and hold the guardener.association.manage capability on that group, the organization is unlinked using your Chainguard credentials with no browser involved. Otherwise, chainctl falls back to the GitHub authorization flow to prove you own the organization. Either way, you must be logged in to Chainguard.
Unlinking stops the Guardener from acting on the organization’s repositories. To fully remove the Guardener, also uninstall the GitHub App from your GitHub organization settings.
For the complete set of flags and options, see the chainctl reference:
chainctl guardenerchainctl guardener githubchainctl guardener github linkchainctl guardener github unlink.chainguard/ configuration model and how to enable features per repository.Last updated: 2026-07-08 00:00