Skip to content
Catalog

Product · Developer Tools

Grant

Your code asks for access. It never holds the key.

Built for
Engineering teams and coding agents
Modules
9
Stack
5
  • Encrypted Vault
  • Wire Broker
  • Lease Tokens
  • Time-boxed Approvals
  • Budgets & Cost
  • Key Health Score
  • Audit Trail
  • Node & Python SDKs
  • grant CLI
  • Node.js
  • Python
  • SQLite
  • AES-256-GCM
  • Docker
Modules: Encrypted Vault, Wire Broker, Lease Tokens, Time-boxed Approvals, Budgets & Cost, Key Health Score, Audit Trail, Node & Python SDKs, grant CLI. Stack: Node.js, Python, SQLite, AES-256-GCM, Docker.

A credential layer that gives developers, services and coding agents short-lived, revocable leases instead of API keys, while the real key stays in an encrypted vault and is added on the wire. An admin stores a provider key once, encrypted with AES-256-GCM and bound to its row, and it is never shown again. Code asks for access with grant.client("openai") and gets back the official SDK client pointed at the Grant broker, which checks the lease, the identity, any required approval and today's budget, then strips the lease and injects the real key so only the provider ever sees it. Leases last fifteen minutes by default and refresh in the background, so a prompt injection or a leaked log line yields a token that works for one provider, for minutes. Sensitive capabilities such as live payments wait for a person to approve a time window, and repeated requests reuse that approval. Daily request and token caps stop a looping agent before the next call, cost is recorded per identity, and every key carries a health score from 0 to 100 with the reason. grant run wraps Claude Code, Cursor or Codex so the agent only ever sees lease tokens, and grant.json commits the capabilities a repo needs so access is reviewed in pull requests. Rotation is a paste: running clients pick up the new key on their next request.

  • Leases, not keys: 15 minute default lifetime, tied to one identity, revocable at any moment
  • Broker on the wire strips the lease and injects the real key, with recipes for OpenAI, Anthropic, Stripe and GitHub
  • grant run wraps Claude Code, Cursor or Codex and revokes every lease when the session ends
  • Approvals with a time limit that the lease can never outlive
  • Daily request and token budgets that stop runaway agent loops before they reach the provider
  • Health score per key: expiring soon, no owner, idle for 30 days, provider rejecting calls
  • Denials an agent can act on, and an audit trail that never contains a key value
  • Zero runtime dependencies, local mode on 127.0.0.1 or shared behind your own TLS

Shaped around your problem.