Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Verify 1Password CLI signature on install#164

Open
JillRegan wants to merge 10 commits into
mainfrom
fix/verify-cli-install
Open

Verify 1Password CLI signature on install#164
JillRegan wants to merge 10 commits into
mainfrom
fix/verify-cli-install

Conversation

@JillRegan

@JillRegan JillRegan commented May 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds signature verification for the 1Password CLI binary the action downloads, addressing concern that the action did not validate the authenticity of artifacts downloaded from cache.agilebits.com.

Each platform uses the verification mechanism from 1Password's docs (https://www.1password.dev/cli/verify).

How each platform verifies

  • macOS: pkgutil --check-signature - pinned to team ID 2BUA8C4S2C and a SHA-256 allowlist of accepted leaf certs.
  • Linux: gpg --verify against a bundled public key and pinned to fingerprint 3FEF9748469ADBE15DA7CA80AC2D62742012EA22.
  • Windows: Get-AuthenticodeSignature - requires Status=Valid and a Subject containing CN=Agilebits.

Breaking changes (this should be semver-major update)

  1. Verification is now mandatory. Before this change the action installed whatever the CDN served. After this change a binary that fails verification is rejected.
  2. Linux runners must have gpg on PATH. GitHub-hosted Ubuntu runners include it by default. Custom or minimal container images may need updating.

Why the Linux key is bundled

The Linux public key lives at src/op-cli-installer/github-action/cli-installer/linux-signing-key.asc (ncc auto-bundles it into dist/ next to index.js). This eliminates a runtime dependency on keyserver.ubuntu.com or downloads.1password.com.

Failure path verification

To confirm verification actually runs against real binaries in CI I created a throwaway branch and replaced a single character in each pinned trust anchor to view verification failure.

@JillRegan JillRegan changed the title Add check for macos signature Verify 1Password CLI signature on install May 21, 2026
@JillRegan JillRegan marked this pull request as ready for review May 21, 2026 22:05
@JillRegan JillRegan requested review from bertrmz and rishiy15 May 21, 2026 22:05

// Confirm the signer is AgileBits, not some other publisher.
const subject = fieldValue("Subject=") ?? "";
if (!subject.includes(`CN=${WINDOWS_SIGNER_SUBJECT_CN}`)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could use a closing delimiter; the current form would match CN=AgilebitsAttackerCorp as well.

@JillRegan

Copy link
Copy Markdown
Contributor Author

I’m going to hold off on merging this for the moment while I dig into some flaky tests.

For folks who want CLI signature verification now, the latest install-cli-action already performs that verification. You can use it earlier in your workflow to install the CLI, and load-secrets-action will skip installing it if it’s already available.

Will be following up with this next week to confirm and test further.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants