Commit Signing
The main branch of pace-framework-starter requires verified commit signatures. Unsigned commits will be rejected by GitHub when you push or open a pull request.
This page shows you how to set up SSH signing — no GPG installation required.
Why signing is required
Signed commits prove that a commit was made by the person whose account it claims. For an open-source framework used in production pipelines, this reduces the risk of supply chain tampering.
Option A — SSH signing (recommended)
SSH signing uses the same key type you already use for git push. No additional tools needed beyond OpenSSH, which ships with macOS and most Linux distributions.
1. Generate a signing key
Create a dedicated key for signing (separate from your authentication key):
ssh-keygen -t ed25519 -C "you@example.com" -f ~/.ssh/github_signing -N ""This creates:
~/.ssh/github_signing— private key (never share this)~/.ssh/github_signing.pub— public key (added to GitHub)
2. Add the key to GitHub as a Signing Key
- Copy your public key:
Terminal window cat ~/.ssh/github_signing.pub - Go to github.com → Settings → SSH and GPG keys → New SSH key
- Set Key type to Signing Key (not Authentication Key)
- Paste the public key and save
3. Configure git globally
git config --global gpg.format sshgit config --global user.signingkey ~/.ssh/github_signing.pubgit config --global commit.gpgsign trueAll future commits on this machine will be signed automatically.
4. Verify it works
Make a test commit and inspect the signature:
echo "test" >> /tmp/test.txtcd /tmp && git init test-sign && cd test-signgit add . && git commit -m "test signing"git cat-file commit HEAD | grep gpgsigYou should see gpgsig -----BEGIN SSH SIGNATURE-----. If the line is absent, revisit step 3.
5. Check your local repo config
If a repo has commit.gpgsign=false set locally (which overrides the global setting), fix it:
# Inside pace-framework-starter/git config --local commit.gpgsign trueOption B — GPG signing
If you already have a GPG setup, you can use it instead.
1. Install GPG
# macOSbrew install gnupg
# Ubuntu/Debiansudo apt install gnupg2. Generate a GPG key
gpg --full-generate-keyChoose RSA 4096 or Ed25519. Use the same email address as your GitHub account.
3. Export and add to GitHub
# Get your key IDgpg --list-secret-keys --keyid-format LONG
# Export the public key (replace KEY_ID with yours)gpg --armor --export KEY_IDGo to github.com → Settings → SSH and GPG keys → New GPG key and paste the output.
4. Configure git
git config --global user.signingkey KEY_IDgit config --global commit.gpgsign trueTroubleshooting
”No signature” after committing
Check that the local repo is not overriding the global setting:
git config --local --list | grep gpgsignIf it shows commit.gpgsign=false, run:
git config --local commit.gpgsign true“cannot run gpg: No such file or directory”
GPG is not installed, or gpg.format is not set to ssh. If you want SSH signing, make sure you have run:
git config --global gpg.format sshPush rejected — “Commits must have verified signatures”
GitHub could not verify your commit’s signature. Common causes:
- The key was added as Authentication Key instead of Signing Key on GitHub
- The commit author email (
user.email) does not match a verified email on your GitHub account - The commit was made before signing was configured — re-commit with signing enabled
To check your commit author email:
git config user.emailThis must match a verified email at github.com → Settings → Emails.
Next steps
Once signing is configured, you are ready to Submit a PR.