Troubleshooting
July 16, 2026 · View on GitHub
Failure modes specific to the git commit-signing kit. Assumes the kit is applied
to a sandbox (sbx run <agent> --kit <kit> ...).
Commits fail with "no SSH agent" / "no keys in SSH agent"
Symptom: git commit fails; stderr shows
[git-ssh-sign] no SSH agent - cannot sign commits or no keys in SSH agent.
Cause: the sandbox forwards the host's SSH agent, but the host agent has no key loaded (or the agent isn't running).
Fix: on the host, load your key, then retry the commit:
ssh-add ~/.ssh/id_ed25519
ssh-add -L # should now list your key
Inside the sandbox, confirm the forwarded agent exposes it:
$ ssh-add -L
ssh-ed25519 AAAA... you@example.com
If it's still empty inside the sandbox, the agent isn't loaded on the host or the sandbox was created before you loaded it — reload on the host and start a fresh session.
Commit signing worked but verification shows "No signature"
Cause: the commit was created outside this kit's git (e.g. a different tool),
or commit.gpgSign was overridden by a repo-local or global config.
Fix: confirm the system config is in place:
git config --system --get commit.gpgSign # true
git config --system --get gpg.format # ssh
A repo-local commit.gpgsign=false or --no-gpg-sign overrides the system
setting; check git config --show-origin --get commit.gpgSign.
My commit is signed locally but shows "Unverified" on GitHub
This is not a kit bug — it's how GitHub decides the "Verified" badge, which is separate from local signature checks.
GitHub marks an SSH-signed commit Verified only when both are true:
- The commit's
user.emailmatches an email verified on your GitHub account, and - The signing key is registered on that account as a signing key (Settings → SSH and GPG keys → New SSH key → key type Signing Key). An authentication-only key does not make commits verified.
Note what GitHub does not use: the SSH key's comment/principal and this
kit's local allowed_signers file are irrelevant to the GitHub badge. So a
mismatch between your committer email and the key comment does not cause
"Unverified" — an unverified account email or an unregistered signing key does.
Fix:
-
Set
user.emailto an address verified on your GitHub account. Identity (user.email/user.name) belongs to your base agent / provider setup, not to this signing mixin — set it there (or globally) so every kit sees it:git config --global user.email you@verified-on-github.example -
Add the public half of your signing key to GitHub as a Signing Key (the same key can also be an auth key; add it twice, once per type).
Then make a new commit — verification applies going forward.
Local git log --show-signature says the signer is unknown
Cause: local verification uses this kit's allowed_signers file, which the
signing-key command generates from git config user.email at signing time. If
user.email was unset when the commit was made, the kit falls back to
agent@sandbox.local, so the recorded principal won't match the identity you
expect. allowed_signers is local-only and has no bearing on GitHub's badge
(see above).
Fix: set your identity (in the base/provider setup or globally), then commit
again so the key command regenerates allowed_signers from the current email:
git config --global user.email you@example.com
I want to commit without signing
The kit is deliberately fail-closed (signing is expected). To bypass for a single commit:
git commit --no-gpg-sign ...
To disable for a repo, set git config commit.gpgsign false in that repo.