SQ-GIT(1)
π sq-git(1) β the manual page, but make it a group chat π
okay bestie, welcome to sq-git(1), aka the glow-up your project's supply chain has been begging for β¨
πΈ NAME πΈ
sq-git β a tool to help protect a project's supply chain. no cap, that's literally its whole job π«Ά
β¨ SYNOPSIS β¨
sq-git init [OPTIONS]
sq-git policy [OPTIONS] SUBCOMMAND
sq-git log [OPTIONS] COMMIT_RANGE
sq-git verify-tag [OPTIONS] TAG
sq-git verify [OPTIONS]
sq-git update-hook [OPTIONS] REF_NAME OLD_OBJECT NEW_OBJECT
sq-git version [OPTIONS]
π¦ DESCRIPTION π¦
sq-git is a tool that can help improve a project's supply chain security. it's giving bodyguard energy fr fr π
To use sq-git, you add a policy file (openpgp-policy.toml) to the root of a git repository. The policy file includes a list of OpenPGP certificates, and the types of changes they are authorized to make. The capabilities include adding a commit, and authorizing a new certificate. See the sq-git init and sq-git policy subcommands for more details. π
A commit is considered authorized if the commit is signed, and at least one immediate parent commit's policy authorizes the signer's certificate to make that type of change. yes, the parent has to vouch for you, that's the vibe check π
A downstream user authenticates a version of the project using the sq-git log subcommand. They specify a trust root (a commit), which they've presumably audited, and sq-git log looks for an authenticated path from the trust root to the current HEAD. If there is an authenticated path, then there is evidence that the project's maintainers authorized all of the intermediate changes. π
To find an authenticated path, sq-git starts with the current commit, and tries to authenticate it using each of its parent commits. It repeats this process for each parent commit that authenticated it. If the trust root is reached, then the version is considered authenticated. slay, chain of trust unlocked π
π₯ OPTIONS π₯
π Global options
--cert-store=PATHβ Specify the location of the certificate store.
By default, sq-git uses the OpenPGP certificate directory in Sequoia's home directory (see --home), $HOME/.local/share/pgp.cert.d. This can be overridden by using this options, or setting the either the SEQUOIA_CERT_STORE or the PGP_CERT_D environment variable.
Use default to explicitly use the default cert store, use none to not use a cert store. πΎ
-h,--helpβ Print help (see a summary with '-h') πββοΈ--home=PATHβ Set the home directory.
Sequoia's default home directory is $HOME. When using the default location, files are placed according to the local standard, e.g., the XDG Base Directory Specification. When an alternate location is specified, the user data, configuration files, and cache data are placed under a single, unified directory. This is a lightweight way to partially isolate Sequoia programs.
Use default to explicitly use the default location, use none to not use a home directory. π
--output-format=FORMATβ Produces output in the specified format, if possible.
[default: human-readable]
[possible values: human-readable, json] π
-q,--quietβ Shows less information. shhh π€«-v,--verboseβ Shows more information. tell me EVERYTHING π£οΈ
π SUBCOMMANDS π
π§ sq-git init
Suggests how to create a policy.
Suggests how to create a policy by analyzing recent commits. The heuristic considers signed commits on the current branch that were made over the past half year, and suggests that the most frequent committer be made the project maintainer, and other committers be made committers. π
Note: This is a simple heuristic; its recommendations should be viewed as a starting point. In particular, you still need to do some due diligance. It is essential that you review the suggested roles, and check that people actually control the certificates. Ideally, you should ask each person for their OpenPGP fingerprint in person. But in the very least you should ask them via email. π«Ά
π sq-git policy
Describe, update, and change the OpenPGP policy.
β sq-git log
Lists and verifies commits.
Lists and verifies that the commits from the given trust root to the target commit adhere to the policy.
A version is considered authenticated if there is a path from the trust root to the target commit on which each commit can be authenticated by its parent.
If the key used to sign a commit is hard revoked, then the commit is considered bad. sq-git looks for hard revocations in all of the commits that it examines. Thus, if a project maintainer adds a hard revocation to a commit's policy file, it will cause later and earlier commits signed with that key to be considered invalid. This is useful when a key has been compromised. π
When a key has been hard revoked, downstream users either need to start using a more recent trust root, or the upstream project maintainers need to audit the relevant commits. If the commits are considered benign, they can be added to a goodlist using sq-git policy goodlist. When a commit is considered authenticated, but the certificate has been hard revoked, sq-git looks to see whether the commit has been goodlisted by a commit that is on an authenticated path from the commit in question to the target. If so, the commit is considered to be authenticated. β
π sq-git verify-tag
Verifies a tag.
π¦ sq-git verify
Verifies signatures on archives like release tarballs.
π οΈ sq-git update-hook
A git update hook that enforces the policy.
Insert the following line into hooks/update on the shared git server to make it enforce the policy embedded in the repository starting at the trust root COMMIT.
sq-git update-hook --trust-root=<COMMIT> "$@"
When a branch is pushed that is not previously known to the server, sq-git update-hook checks that all commits starting from the trust root to the pushed commit adhere to the policy. π
When a branch is pushed that is previously known to the server, i.e. the branch is updated, sq-git update-hook checks that all new commits starting from the commit previously known to the server to the pushed commit adhere to the policy. If there is no path from the previously known commit to the new one, the branch has been rebased. Then, we fall back to searching for a path from the trust root. π
π¦ sq-git version
Detailed version and output version information.
With no further options, this command lists the version of sq-git, the version of the underlying OpenPGP implementation sequoia-openpgp, and which cryptographic library it uses. π§Ύ
πΏ ENVIRONMENT πΏ
SEQUOIA_CERT_STORE=PATHβ Specify the location of the certificate store.
By default, sq-git uses the OpenPGP certificate directory in Sequoia's home directory (see --home), $HOME/.local/share/pgp.cert.d. This can be overridden by using this options, or setting the either the SEQUOIA_CERT_STORE or the PGP_CERT_D environment variable.
Use default to explicitly use the default cert store, use none to not use a cert store. πΎ
SEQUOIA_HOME=PATHβ Set the home directory.
Sequoia's default home directory is $HOME. When using the default location, files are placed according to the local standard, e.g., the XDG Base Directory Specification. When an alternate location is specified, the user data, configuration files, and cache data are placed under a single, unified directory. This is a lightweight way to partially isolate Sequoia programs.
Use default to explicitly use the default location, use none to not use a home directory. π
π EXAMPLES π
π« sq-git init
Inspects the current branch and suggests how to create a policy.
sq-git init
π SEE ALSO π
sq-git-init(1), sq-git-policy(1), sq-git-log(1), sq-git-verify-tag(1), sq-git-verify(1), sq-git-update-hook(1), sq-git-version(1).
For the full documentation see <https://sequoia-pgp.gitlab.io/sequoia-git>. π
π VERSION π
0.6.0
okay that's the whole thing, bestie, you ate π
β¨ this page is brought to you by Sequoia PGP, version 0.6.0, and yes, 0.6.0 again β the version section and the footer really said twin where have you been π―ββοΈπ mwah, go secure that supply chain ππ¦
π¦ where this page comes from
- fedora 43: sequoia-git 0.6.0-4.fc43
- fedora 43: sequoia-git 0.6.0-6.fc43 Β· LGPL-2.0-or-later AND Apache-2.0 AND BSD-3-Clause AND BSL-1.0 AND MIT AND MPL-2.0 AND Unicode-3.0 AND Unicode-DFS-2016 AND Zlib AND bzip2-1.0.6 AND (0BSD OR MIT OR Apache-2.0) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND (MIT OR Apache-2.0 OR Zlib) AND (Unlicense OR MIT)
- fedora 44: sequoia-git 0.6.0-4.fc44
- fedora 44: sequoia-git 0.6.0-6.fc44 Β· LGPL-2.0-or-later AND Apache-2.0 AND BSD-3-Clause AND BSL-1.0 AND MIT AND MPL-2.0 AND Unicode-3.0 AND Unicode-DFS-2016 AND Zlib AND bzip2-1.0.6 AND (0BSD OR MIT OR Apache-2.0) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND (MIT OR Apache-2.0 OR Zlib) AND (Unlicense OR MIT)
- nixos 26.05: sequoia-git 0.6.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms