← Back to blog
January 5, 2026 · 5 min read

Introducing Vouch Git Workflow

One command to cryptographically sign all your git commits. Supply chain security made simple with Vouch Protocol.

Supply chain attacks are on the rise. In 2024 alone, we saw major incidents affecting millions of developers through compromised dependencies and malicious commits. The solution? Cryptographically sign every commit to prove it came from you.

With Vouch Protocol, you can set this up in under 60 seconds.

What You'll Achieve

  • Every git commit signed with your cryptographic identity
  • GitHub shows the "Verified" badge on your commits
  • Zero manual signing—it just works automatically
  • Use your existing SSH key (no new keys to manage)

Prerequisites

  • Python 3.8+ installed
  • Git configured with your name and email
  • An SSH key added to your GitHub account (optional - Vouch will generate one if you don't have it)
No SSH Key? No problem! vouch git init will automatically generate a new Ed25519 key and upload it to GitHub for you. Zero manual steps required.

Quick Start (30 seconds)

1 Install Vouch Protocol

pip install vouch-protocol

2 Run One Command

vouch git init

That's it! This single command:

  • Generates a new Ed25519 signing key (if you don't have one)
  • Uploads it to GitHub automatically
  • Configures git to sign all commits
  • Sets up verification
Done! All future commits will be automatically signed and show Verified on GitHub.
Zero Extra Work! From now on, just use git commit as you normally would. Every commit is automatically signed—no flags, no extra commands, no passphrase prompts. It just works.

Verify It Works

# Make a test commit
git commit --allow-empty -m "test: verify vouch signing"

# Check on GitHub - you'll see the Verified badge!

Why Vouch vs. Other Signing Methods

There are several ways to sign Git commits. Here's how they compare:

Feature GPG SSH (manual) Vouch
Setup time 15-30 min 5-10 min 30 seconds
Commands needed 5-8 3-4 2
GitHub upload Manual Manual Automatic
Key management Complex (keyrings) Manual Handled for you
Passphrase prompts Every commit With ssh-agent Never
GitHub Verified badge

Bottom line: GPG requires managing keyrings, expiration dates, and subkeys. Manual SSH setup requires multiple git config commands and a trip to GitHub settings. Vouch handles everything in one command.

How It Works

Vouch leverages SSH signing (introduced in Git 2.34+). When you run vouch git init, it:

  1. Generates a new Ed25519 signing key (or uses your existing one at ~/.ssh/id_ed25519)
  2. Uploads the key to GitHub as a signing key (via gh CLI)
  3. Configures Git to sign all commits:
    git config --global gpg.format ssh
    git config --global user.signingkey ~/.vouch/keys/vouch_signing_key
    git config --global commit.gpgsign true
  4. Sets up local verification with an allowed signers file

GitHub Integration (Automatic!)

vouch git init automatically uploads your signing key to GitHub using the GitHub CLI. You don't need to do anything manually!

After running the command, you'll see:

 Uploading signing key to GitHub...
   SSH key uploaded to GitHub!

That's it! Push a commit and you'll see the Verified badge immediately.

Don't have GitHub CLI? If gh isn't installed, Vouch will open your browser to the GitHub SSH settings page and show you the key to paste. But we recommend installing GitHub CLI for a fully automated experience.

Manual Configuration (Alternative)

If you prefer to configure git manually without the CLI:

# Use SSH for signing
git config --global gpg.format ssh

# Set your signing key
git config --global user.signingkey ~/.ssh/id_ed25519.pub

# Auto-sign all commits
git config --global commit.gpgsign true

# Auto-sign all tags
git config --global tag.gpgsign true

Troubleshooting

Commit fails with "error: Load key failed"

Your SSH key might require a passphrase. Add it to your SSH agent:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

GitHub doesn't show "Verified"

This usually means the gh CLI upload failed silently. Check if your key is on GitHub:

gh ssh-key list

If not listed, re-run vouch git init or manually add the key at GitHub Settings → SSH Keys.

Check your current git signing config

git config --global --list | grep -E "(gpg|sign)"

How Others Verify Your Commits

When you sign commits, here's how collaborators and reviewers can verify they're genuinely from you:

1. GitHub's Verified Badge (Automatic)

When you push signed commits to GitHub:

  • GitHub checks if the signing key matches a key registered to your account
  • If it matches → Verified badge appears on the commit
  • Click the badge to see: "This commit was signed with the committer's verified signature"

2. Verify Anyone's Public Key

Anyone can check a GitHub user's public SSH keys at:

https://github.com/<username>.keys

Compare this with the key fingerprint shown in the commit signature to confirm authenticity.

3. Local Verification

To verify signatures locally:

# View signature details
git log --show-signature -1 <commit-hash>

# Verify a specific commit
git verify-commit <commit-hash>
Key Point: The SSH key fingerprint in the signature can be matched against the author's publicly listed keys on GitHub, providing cryptographic proof of authorship.

For Teams & Organizations

Adopting signed commits across your team provides:

  • Supply Chain Security: Every commit is cryptographically tied to a verified developer
  • Audit Trail: Immutable proof of who authored each change
  • Compliance: Meet SOC2, ISO 27001, and other security standards requiring code provenance
  • Trust: Reviewers can verify PRs come from legitimate team members

Enforce Signed Commits (GitHub)

  1. Go to Repository Settings → Branches
  2. Add a branch protection rule for main
  3. Enable "Require signed commits"

Now all commits to protected branches must be signed!

Why This Matters

Recent supply chain attacks highlight why commit signing is critical:

  • SolarWinds (2020): Attackers injected malicious code into build pipelines
  • Codecov (2021): Compromised CI scripts exfiltrated credentials
  • XZ Utils (2024): Maintainer impersonation led to backdoored releases

Signed commits create a chain of custody. If every commit is signed, attackers can't inject code without either stealing a developer's private key or creating obviously unsigned commits.

By the Numbers: GitHub reports that repositories with signed commits enabled see significantly fewer successful supply chain attacks. The Verified badge is becoming a trust signal that security-conscious organizations look for.

What's Next?