Merge blocked by default until a human signs the receipt.
- Click "Use this template" above
- Add your
PP_API_KEYsecret (get one here) - Open a PR → Watch it fail → Approve → Merge
You're protected. No setup files. No config. Just works.
┌─────────────────────────────────────────────────────────────┐
│ PR #1: test: Trigger PP deploy gate │
├─────────────────────────────────────────────────────────────┤
│ │
│ ❌ Deploy Gate — FAILED │
│ │
│ ═══════════════════════════════════════════════════════ │
│ 🔐 PERMISSION PROTOCOL - Deploy Authorization Required │
│ ═══════════════════════════════════════════════════════ │
│ │
│ ❌ NO RECEIPT - Approval required │
│ │
│ This PR changes protected deployment files. │
│ A human must approve before merge. │
│ │
│ 👉 APPROVE HERE: https://app.permissionprotocol.com/... │
│ │
│ After approval, re-run this workflow. │
│ ═══════════════════════════════════════════════════════ │
│ │
└─────────────────────────────────────────────────────────────┘
Your AI agent just pushed to main.
It passed CI.
It deployed to production.
Who approved it?
Not a human. Not a policy. Nobody.
No Receipt → No Merge
Every deploy requires a cryptographic receipt. Signed by a human. Auditable forever.
PR opened
│
▼
┌──────────────────┐
│ CI runs check │
└────────┬─────────┘
│
▼
┌──────────────────┐ ┌─────────────────────┐
│ Receipt exists? │────▶│ ✅ Merge allowed │
└────────┬─────────┘ YES └─────────────────────┘
│ NO
▼
┌──────────────────┐
│ ❌ CI FAILS │
│ Shows approval │
│ link in logs │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Human approves │
│ in PP dashboard │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Re-run CI │
│ ✅ Now passes │
└──────────────────┘
See SETUP.md for full instructions.
git checkout -b test-gate
echo "# test" >> deploy/config.yml
git commit -am "test: trigger gate"
git push origin test-gate
# Open PR → Watch it fail → Approve → Watch it passAny PR touching these paths requires PP approval:
| Path | Why |
|---|---|
deploy/* |
Production configuration |
.github/workflows/* |
CI/CD pipeline |
Every approval generates a cryptographic receipt:
{
"id": "rec_abc123",
"status": "APPROVED",
"scope": {
"repo": "permission-protocol/pp-demo",
"prNumber": 1,
"headSha": "abc123",
"capability": "deploy:production"
},
"approver": "you@company.com",
"signature": "0x...",
"expiresAt": "2026-02-21T00:00:00Z"
}Immutable. Auditable. Cryptographically signed.
Built by Permission Protocol · The Signer of Record for Autonomous Systems
