permission-protocol/Deploy Gate
Block AI agents from production deploys without a human-signed Ed25519 receipt. Fails closed by default.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Activelast commit May 14, 2026
- License
- MIT
Pinned Snippet
uses: permission-protocol/deploy-gate@bbecc9c66650f023f3a97d41395dc91318ad889b # v2.1.0tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| pp-api-key | Permission Protocol API key | yes | — |
| pp-base-url | Permission Protocol base URL | no | https://app.permissionprotocol.com |
| pp-request-create-token | Optional token to auto-create deploy requests when no receipt exists | no | "" |
| environment | Deployment environment | no | production |
| capability | Capability required for this gate | no | deploy:production |
| redeem | Redeem receipt on verify (use false for PR gates, true for deploy workflows) | no | false |
| protected-paths | Regex pattern for protected paths used for risk assessment metadata (not gating) | no | ^(deploy/|\.github/workflows/) |
| fail-on-missing | Fail if no receipt exists | no | true |
| fail-open-timeout | Seconds to wait for PP API before treating it as unavailable | no | 30 |
| fail-mode | Failure policy when PP API is unavailable in non-production environments: closed (default) or open | no | closed |
| production-environments | Comma-separated environment names treated as production and always forced fail-closed | no | production,prod,live |
| post-comment | Post or update a Permission Protocol comment on PRs | no | true |
Outputs
| name | description |
|---|---|
| approved | Whether the deploy was approved |
| receipt-id | Receipt ID if returned by API |
| decision | Decision from receipt (APPROVED/DENIED/PENDING) |
| error-code | Error code from verification response |
| error-message | Error message from verification response |
| request-id | Deploy request ID (if created) |
| approval-url | URL to approve the deploy |