id = "chainloop-cli"
name = "Chainloop CLI"
homepage = "https://chainloop.dev"
description = "An open source evidence store and policy engine for your software supply chain."
executables = ["chainloop"]
[dotfiles]
paths = ["[configHome]/chainloop/config.toml"]
secret = []
[[dotfiles.secret_paths]]
file = "[configHome]/chainloop/config.toml"
match = { key_path = ["auth.token"] }
[commands]
format = 1
label = "Chainloop CLI"
description = "Start and extend software supply chain attestations, and set up AI session tracing. Login, policies, contracts and registry commands are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "readme"
kind = "manual"
url = "https://github.com/chainloop-dev/chainloop/blob/main/README.md"
revision = "HEAD 2026-10-27"
evidence = "chainloop attestation init --workflow build --project my-app"
[[commands.subcommand]]
path = ["attestation", "init"]
label = "Start an attestation"
description = "Begin a Chainloop attestation for a workflow run."
[[commands.subcommand.source]]
id = "readme"
kind = "manual"
url = "https://github.com/chainloop-dev/chainloop/blob/main/README.md"
revision = "HEAD 2026-10-27"
evidence = """
chainloop attestation init --workflow build --project my-app
"""
[[commands.subcommand.field]]
id = "workflow"
label = "Workflow"
type = "string"
option = ["--workflow"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "project"
label = "Project"
type = "string"
option = ["--project"]
sources = ["readme"]
[[commands.subcommand.task]]
id = "init"
label = "Start an attestation"
fields = ["workflow", "project"]
required = ["workflow", "project"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["workflow", "project"]
[[commands.subcommand]]
path = ["attestation", "add"]
label = "Add evidence"
description = "Attach a material (file or value) to the current attestation."
[[commands.subcommand.source]]
id = "readme"
kind = "manual"
url = "https://github.com/chainloop-dev/chainloop/blob/main/README.md"
revision = "HEAD 2026-10-27"
evidence = """
chainloop attestation add --value sbom.cyclonedx.json
"""
[[commands.subcommand.field]]
id = "value"
label = "Value"
type = "string"
option = ["--value"]
sources = ["readme"]
[[commands.subcommand.task]]
id = "add"
label = "Add evidence"
fields = ["value"]
required = ["value"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["value"]
[[commands.subcommand]]
path = ["trace", "init"]
label = "Initialize tracing"
description = "Install git and agent hooks and write .chainloop.yml in the repository."
[[commands.subcommand.source]]
id = "readme"
kind = "manual"
url = "https://github.com/chainloop-dev/chainloop/blob/main/README.md"
revision = "HEAD 2026-10-27"
evidence = """
chainloop trace init --project <name>
Add `--claude`, `--cursor`, `--opencode`, or `--codex` for the agents in use.
For Codex, run `chainloop trace init --codex`.
"""
[[commands.subcommand.field]]
id = "project"
label = "Project"
type = "string"
option = ["--project"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "claude"
label = "Claude Code"
type = "boolean"
option = ["--claude"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "cursor"
label = "Cursor"
type = "boolean"
option = ["--cursor"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "opencode"
label = "OpenCode"
type = "boolean"
option = ["--opencode"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "codex"
label = "Codex"
type = "boolean"
option = ["--codex"]
sources = ["readme"]
[[commands.subcommand.task]]
id = "trace"
label = "Initialize tracing"
fields = ["project", "claude", "cursor", "opencode", "codex"]
required = ["project"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["project", "claude", "cursor", "opencode", "codex"]