<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Chainguard Checks on</title><link>https://edu.chainguard.dev/tags/chainguard-checks/</link><description>Recent content in Chainguard Checks on</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><copyright>Copyright (c) 2023 Chainguard</copyright><lastBuildDate>Tue, 13 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://edu.chainguard.dev/tags/chainguard-checks/index.xml" rel="self" type="application/rss+xml"/><item><title>Chainguard Checks overview</title><link>https://edu.chainguard.dev/chainguard/checks/overview/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/overview/</guid><description>&lt;p&gt;Chainguard Checks runs your repository&amp;rsquo;s CI on Chainguard&amp;rsquo;s infrastructure instead of on GitHub Actions runners. You define your checks, such as linting and tests, in a &lt;code&gt;.chainguard/ci.yaml&lt;/code&gt; file in your repository. On every pull request, Chainguard Checks runs each check in its own microVM, built on Chainguard OS, and reports the results on the pull request as GitHub checks.&lt;/p&gt;
&lt;p&gt;CI runners usually hold long-lived secrets and can reach the whole internet while they run untrusted code, such as a pull request&amp;rsquo;s changes or a compromised dependency. In Chainguard Checks, each check runs in a fresh VM that has no long-lived credentials, and no network access unless the check lists the hosts it needs.&lt;/p&gt;</description></item><item><title>Get started with Chainguard Checks</title><link>https://edu.chainguard.dev/chainguard/checks/getting-started/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/getting-started/</guid><description>&lt;p&gt;This guide walks you through signing up for Chainguard Checks, adding checks to one of your GitHub repositories, and seeing them run on a pull request. It uses a Go repository as the example and takes about 15 minutes.&lt;/p&gt;
&lt;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Chainguard Checks is in beta. Available to organizations that turn it on with &lt;code&gt;chainctl develop init&lt;/code&gt;, which comes with a free monthly compute allowance, or that arrange access with their Chainguard account team.&lt;/p&gt;</description></item><item><title>Set up Chainguard Checks and Chainguard Workspaces</title><link>https://edu.chainguard.dev/get-started/checks-and-workspaces/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/get-started/checks-and-workspaces/</guid><description>&lt;p&gt;&lt;a href="https://edu.chainguard.dev/chainguard/checks/overview/"&gt;Chainguard Checks&lt;/a&gt; runs your repository&amp;rsquo;s CI on every GitHub pull request, with each check in its own microVM. &lt;a href="https://edu.chainguard.dev/chainguard/workspaces/overview/"&gt;Chainguard Workspaces&lt;/a&gt; runs your development work, and the coding agents that do it, in a remote microVM session that holds none of your long-lived credentials. You can use either product on its own, but they&amp;rsquo;re built to work together, and you set them up together: one command, &lt;code&gt;chainctl develop init&lt;/code&gt;, turns on both. This page explains what the products share, then walks you through signing up and giving teammates access.&lt;/p&gt;</description></item><item><title>Chainguard Checks configuration reference</title><link>https://edu.chainguard.dev/chainguard/checks/configuration/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/configuration/</guid><description>&lt;p&gt;You define your checks in YAML configuration files in your repository&amp;rsquo;s &lt;code&gt;.chainguard/&lt;/code&gt; directory. This page describes the file format: where the files go, the packages and commands each check gets, and the options that control when and how checks run. For variations, inputs and outputs, services, and caches, refer to &lt;a href="https://edu.chainguard.dev/chainguard/checks/variations-services-caches/"&gt;Variations, inputs, services, and caches&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The same files also set up &lt;a href="https://edu.chainguard.dev/chainguard/workspaces/overview/"&gt;Chainguard Workspaces&lt;/a&gt; sessions, and &lt;code&gt;run-ci&lt;/code&gt; in a session runs the checks they define.&lt;/p&gt;</description></item><item><title>Variations, inputs, services, and caches in Chainguard Checks</title><link>https://edu.chainguard.dev/chainguard/checks/variations-services-caches/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/variations-services-caches/</guid><description>&lt;p&gt;Most checks need only the keys that the &lt;a href="https://edu.chainguard.dev/chainguard/checks/configuration/"&gt;Chainguard Checks configuration reference&lt;/a&gt; describes. This page describes the keys for checks that need more: running a check once for each of several variations, passing files between checks, starting services such as a database, running as an unprivileged account, and reusing build output from earlier runs.&lt;/p&gt;
&lt;h2 id="run-a-check-once-per-variation" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Run a check once per variation&lt;/span&gt;
&lt;a href="#run-a-check-once-per-variation" class="anchor" aria-label="Link to Run a check once per variation" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;The &lt;code&gt;foreach&lt;/code&gt; key runs a check once for each entry in a list, each in its own VM. All of a check&amp;rsquo;s variations report as one GitHub check. For example, this check runs three variations, two at a time:&lt;/p&gt;</description></item><item><title>Workload identities and trust in Chainguard Checks</title><link>https://edu.chainguard.dev/chainguard/checks/identity-and-trust/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/identity-and-trust/</guid><description>&lt;p&gt;A check that must authenticate to Google Cloud or to Chainguard, such as to read a Cloud Storage bucket or to pull private images from &lt;code&gt;cgr.dev&lt;/code&gt;, can use a &lt;em&gt;workload identity&lt;/em&gt;: short-lived credentials that Chainguard Checks gives the check while it runs. This page explains how workload identities work, how to declare and set one up, how to limit which pull requests get one, and how to revoke access.&lt;/p&gt;
&lt;h2 id="how-workload-identities-work" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;How workload identities work&lt;/span&gt;
&lt;a href="#how-workload-identities-work" class="anchor" aria-label="Link to How workload identities work" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A check&amp;rsquo;s VM holds no long-lived credentials. When a check uses a workload identity, Chainguard Checks issues the check an OpenID Connect (OIDC) token that lasts five minutes, renews the token while the check runs, and keeps the real credentials outside the VM:&lt;/p&gt;</description></item><item><title>Use Chainguard Checks on GitHub</title><link>https://edu.chainguard.dev/chainguard/checks/github/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/github/</guid><description>&lt;p&gt;Chainguard Checks runs on your GitHub repositories through the Chainguard App and reports its results as GitHub checks. This page explains when Chainguard Checks runs, how its results appear on GitHub, and how to use them to protect your branches.&lt;/p&gt;
&lt;h2 id="when-checks-runs" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;When Checks runs&lt;/span&gt;
&lt;a href="#when-checks-runs" class="anchor" aria-label="Link to When Checks runs" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Chainguard Checks runs on a repository when the Chainguard App is installed on the repository, its GitHub account is linked to a Chainguard organization with access to Chainguard Checks, and the repository has a &lt;code&gt;.chainguard/ci.yaml&lt;/code&gt; file or a &lt;code&gt;.chainguard/ci/&lt;/code&gt; directory. For a pull request, Chainguard Checks looks for the configuration on the pull request&amp;rsquo;s branch and on its base branch.&lt;/p&gt;</description></item><item><title>Run checks before you push with Chainguard Workspaces</title><link>https://edu.chainguard.dev/chainguard/checks/run-checks/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/run-checks/</guid><description>&lt;p&gt;Waiting for a pull request&amp;rsquo;s checks to find a mistake is slow, especially for a coding agent that has to push, wait, and read the results before it can try again. With &lt;a href="https://edu.chainguard.dev/chainguard/workspaces/overview/"&gt;Chainguard Workspaces&lt;/a&gt;, you can run your repository&amp;rsquo;s checks against your working tree, uncommitted changes included, before you push. This page explains how, and how to find mistakes in your configuration without running anything. To run checks on a pushed commit without a pull request, or to read results and your checks&amp;rsquo; history from your terminal, refer to &lt;a href="https://edu.chainguard.dev/chainguard/checks/inspect-and-run-checks/"&gt;Inspect and run checks with chainctl&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Inspect and run checks with chainctl</title><link>https://edu.chainguard.dev/chainguard/checks/inspect-and-run-checks/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/inspect-and-run-checks/</guid><description>&lt;p&gt;The &lt;code&gt;chainctl checks&lt;/code&gt; commands read your checks&amp;rsquo; results from your terminal, so you or a coding agent can find out why a check failed without opening GitHub. This page explains how to inspect a pull request&amp;rsquo;s runs, how to run checks on a pushed commit without opening a pull request, and how to find the checks that take the most time or fail most often. For every command and flag, refer to the &lt;a href="https://edu.chainguard.dev/chainguard/checks/chainctl-checks-reference/"&gt;&lt;code&gt;chainctl checks&lt;/code&gt; command reference&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Migrate from GitHub Actions to Chainguard Checks</title><link>https://edu.chainguard.dev/chainguard/checks/migrate-from-github-actions/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/migrate-from-github-actions/</guid><description>&lt;p&gt;If your repository runs its pull request checks with GitHub Actions, you can move them to Chainguard Checks one workflow at a time. Chainguard Checks and GitHub Actions can run on the same pull requests, so you can compare their results before you remove a workflow.&lt;/p&gt;
&lt;p&gt;You can convert workflows by hand, or start from a draft that the &lt;code&gt;chainctl checks migrate&lt;/code&gt; command writes for you.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d rather keep your workflows on GitHub Actions, &lt;a href="https://edu.chainguard.dev/chainguard/actions/overview/"&gt;Chainguard Actions&lt;/a&gt; replaces the actions they use with hardened equivalents, and Guardener&amp;rsquo;s &lt;a href="https://edu.chainguard.dev/chainguard/guardener/github/actions-security/"&gt;Hardened Actions&lt;/a&gt; feature can migrate them for you.&lt;/p&gt;</description></item><item><title>chainctl checks command reference</title><link>https://edu.chainguard.dev/chainguard/checks/chainctl-checks-reference/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/chainctl-checks-reference/</guid><description>&lt;p&gt;The &lt;code&gt;chainctl checks&lt;/code&gt; commands read your pull requests&amp;rsquo; results from your terminal, start and rerun checks, summarize your checks&amp;rsquo; history, and validate your configuration. This page lists each command&amp;rsquo;s arguments, flags, exit codes, and JSON output. For examples of the commands in use, refer to &lt;a href="https://edu.chainguard.dev/chainguard/checks/inspect-and-run-checks/"&gt;Inspect and run checks with chainctl&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During the beta, the &lt;code&gt;chainctl checks&lt;/code&gt; and &lt;code&gt;chainctl develop&lt;/code&gt; commands don&amp;rsquo;t appear in &lt;code&gt;chainctl --help&lt;/code&gt; or in the &lt;a href="https://edu.chainguard.dev/platform/chainctl/chainctl-docs/chainctl/"&gt;chainctl reference&lt;/a&gt;. You can still run them, and &lt;code&gt;--help&lt;/code&gt; on either one shows its full help.&lt;/p&gt;</description></item><item><title>Troubleshoot Chainguard Checks</title><link>https://edu.chainguard.dev/chainguard/checks/troubleshooting/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/checks/troubleshooting/</guid><description>&lt;p&gt;This page describes common problems with Chainguard Checks and how to fix them. If your problem isn&amp;rsquo;t listed here, ask in the #checks-questions channel in the &lt;a href="https://join.slack.com/t/chainguardcommunity/shared_invite/zt-3nttdr807-V9BJHayWvsB0KbHsfZO5Rw"&gt;Chainguard community Slack&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="a-pull-request-gets-no-checks" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;A pull request gets no checks&lt;/span&gt;
&lt;a href="#a-pull-request-gets-no-checks" class="anchor" aria-label="Link to A pull request gets no checks" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;If a pull request shows no &lt;strong&gt;Chainguard Checks (presubmit)&lt;/strong&gt; check at all, Chainguard Checks didn&amp;rsquo;t start a run for it. Confirm the following:&lt;/p&gt;</description></item></channel></rss>