chainctl
chainctl Chainguard Control
For the complete documentation index, see llms.txt.
Manage Custom Assembly overlays and the repos they are attached to.
Manage tag-based Custom Assembly overlays.
An overlay is a reusable image customization (packages, environment variables, annotations, accounts, and certificates) owned by an organization. Attaching an overlay to a repo — or, with –all-repos, to every repo under an organization or folder, including repos created later — creates a binding that selects which tags the overlay applies to:
When bindings of different kinds match the same tag, they layer in the order ALL, then VARIANT, then EXACT, with later layers taking precedence. All-repos bindings layer by scope depth — the organization first, then each nested folder, deeper folders taking precedence — and a repo’s own bindings layer above every all-repos binding. Bindings of the same kind may coexist in one scope only when their overlays do not conflict.
The Guarded Entrypoint keys layer per key: fail_mode and command_override come from the most specific binding that sets them, and a binding that leaves one unset uses a broader binding’s value (an empty command_override counts as set and cancels a broader one); guarded_entrypoint is on when any matching binding sets it, but an overlay that sets fail_mode, preflight, or command_override must still set guarded_entrypoint: true itself; preflight checks from every matching binding are combined, broader bindings first. A binding is rejected when it is created if its overlay sets a different fail_mode or command_override than a binding it co-matches in the same layer: two –all bindings, two –variant bindings for one variant, or two –tag bindings sharing a tag.
Chainguard rebuilds the matching images after an overlay or binding changes. These rebuilds run only for organizations enrolled in tag-based Custom Assembly. Contact your Chainguard account team to enroll.
# Create an overlay that adds packages
chainctl images overlays create my-overlay --parent my-org --package curl --package jq
# Attach it to every tag of a repo
chainctl images overlays attach --overlay my-overlay --repo python --parent my-org --all
# List overlays and their bindings
chainctl images overlays list --parent my-org --api string The url of the Chainguard platform API. (default "https://console-api.enforce.dev")
--audience string The Chainguard token audience to request. (default "https://console-api.enforce.dev")
--config string A specific chainctl config file. Uses CHAINCTL_CONFIG environment variable if a file is not passed explicitly.
--console string The url of the Chainguard platform Console. (default "https://console.chainguard.dev")
--force-color Force color output even when stdout is not a TTY.
-h, --help Help for chainctl
--issuer string The url of the Chainguard STS endpoint. (default "https://issuer.enforce.dev")
--log-level string Set the log level (debug, info) (default "ERROR")
-o, --output string Output format. One of: [csv, env, go-template, id, json, markdown, none, table, terse, tree, wide]
-v, --v int Set the log verbosity level.Last updated: 2026-10-12 15:51