Sign the prompts
your agents obey.
Know who published the skills, agents, and CLAUDE.md / AGENTS.md files your AI runs, and verify that neither they nor the scripts they ship have changed since they were signed.
If a publisher becomes untrustworthy, revoke their trust.
A signature proves who published this and that it hasn't changed. It does not prove that it's safe.
Four guarantees. One limit.
You know exactly who published a skill: a named identity, never a bare checkmark.
You know not one byte, including the scripts a skill ships, has changed since signing.
Keyless signatures are recorded in a public transparency log that cannot be quietly rewritten.
A compromised key or a bad actor can be revoked, so consumers stop trusting them.
A valid signature on a prompt-injection payload is still a prompt-injection payload. Signing is provenance, not safety.
Start in a terminal, or right here.
The command-line tool signs and verifies, and plugs into Claude Code & Codex hooks that automatically block any instructions that are unsigned or have been tampered with.
Prefer not to install anything? The in-browser tools do the same thing, and nothing in the files content you drop in leaves your computer.
promptsign login && promptsign sign ./my-skillpromptsign verify ./my-skillProof of origin you can check yourself, even offline.
- 01
Fingerprint every file
PromptSign takes a tamper-evident fingerprint (a SHA-256 hash) of every file in the skill, including any scripts it ships. Change a single byte later and the fingerprint no longer matches.
- 02
Sign it under a verified identity
The publisher signs those fingerprints by authenticating with an account you already recognize, such as GitHub, Google, Microsoft, or a company account, so the identity on the signature is verified, not self-declared.
- 03
Ships with the skill
The signature travels with the skill in a small
.promptsign/bundle.jsonfile. To check it, PromptSign re-fingerprints every file and confirms the signature, no server or internet connection required.
{
"schema": "promptsign/bundle/v1",
"envelope": {
"payloadType": "application/vnd.promptsign.manifest+json",
"payload": "eyJzY2hlbWEiOiJwcm9tcHRzaWduL21hbmlmZXN0...",
"signatures": [
{ "keyid": "a1b2c3d4e5f6…", "sig": "MEUCIQD…" }
]
},
"signer": {
"identity": "alice@trailofbits.com",
"scheme": "keyless",
"issuer": "https://accounts.google.com",
"certChain": ["MIICzDCCAlKg…"]
},
"transparency": { "logIndex": 51236401 }
}Notice the identity — confirmed by a real login and named by every verifier. Never a bare green check.