Docs / Concepts

Credentials

How PastKeys seals provider credentials, mints short-lived scoped credentials per operation, and controls their lifetime.

A credential in PastKeys is the provider's root secret (a Cloudflare token, an AWS key, a GitHub App key, a database admin DSN) sealed to your broker. Agents never receive it. For each operation the broker either mints a narrow, short-lived credential from it or uses it broker-side.

Sealing

You seal the secret to the broker's public key with pastkeys seal on a trusted machine, then store the resulting blob in the dashboard. The control plane keeps only that ciphertext. Each credential has a provider and an ID (default root).

Per-operation credentials

ProviderWhat the broker usesDefault lifetime
AWSSTS AssumeRole session, optional inline session policy15 minutes
GitHubApp installation token scoped to one repo and the least permission~1 hour (fixed by GitHub)
PostgresTemporary login role inheriting a read-only base role15 minutes
CloudflarePer-call token scoped to one zone and the action's permissions (opt-in), otherwise the protected token15 minutes
HTTPThe protected token, injected broker-siden/a

Minted credentials are cached for their lifetime (minus a safety margin) and dropped if an operation fails, so a revoked credential is re-minted.

Setting the lifetime per rule

A policy rule can set credential_ttl (10s to 12h) so a destructive action runs on a credential that dies quickly:

{"provider": "cloudflare", "resource": "example.com",
 "actions": ["DNS_DELETE"], "credential_ttl": "2m"}

Providers with a fixed or minimum lifetime clamp to it (AWS minimum 15 minutes, GitHub fixed at 1 hour). The audit record always shows the lifetime actually issued.