KeyContain · Fine-grained access for every API your agents touch

3 min read Original article ↗

Give each agent its own key and decide what it may do on Gmail, QuickBooks, GitHub, Cloudflare and almost any other API.

GmailInbox agent · Dana's Gmailkc_…m41l

PermissionAccessOnly when

Messages · Send

messages.send
Allowed

Every recipient is one of [email protected], [email protected]

Messages · Send

messages.send
Ask meWaits up to 24 hoursAny request

Drafts · Create

drafts.create
AllowedAny request

Messages · Read

messages.read
Allowed

Everyone is one of *@acme.dev, *@hollis-cpa.com

Messages · Trash

messages.trash
Ask meWaits up to 24 hoursAny request

Allowed goes straight throughAsk me waits for your confirmation

Ask me

Approve requests on your phone.

KeyContain holds an Ask me request and notifies you in the KeyContain app or your browser, with its own summary of what the request does.

  • AllowedRoutine requests go straight to the service.
  • Ask meRisky ones wait for your approval.
  • No rowEverything else is refused with a message your agent understands.

Get it on Google Play

Service by service

Give your agent only the access it needs.

QuickBooks Online

Its own connection

An app connected to a company can read and change everything in it, from invoices to payments and bills.

Your KeyContain key

You let it read invoices, customers and reports, and have new invoices wait for your approval.

GitHub

Its own token

A token that can push to a repository can push to, force-push and delete any of its unprotected branches.

Your KeyContain key

You let it push to agent/-prefixed branches in the repositories you pick and open pull requests. Merges wait for you.

Cloudflare

Its own token

A token that can edit DNS in a zone can change or delete every record in it.

Your KeyContain key

You have every DNS change wait for your approval.

Security

How your keys are stored

Every service key (e.g. QuickBooks) you give KeyContain is stored encrypted so that you can't use it even if you have a copy of our database or backups.

Encrypted
Each service key is encrypted with a key of its own. We don't store the decryption key.

Unlocked only when used
A service key is unlocked only briefly when you make a request, only stored in memory, and immediately purged after use.

Kept out of logs
Keys never appear in KeyContain's logs.

Key storage design →

Pricing

Free to start.

Free allowance

$0

  • 10 requests per minute
  • 100 MB of traffic per month
  • Shared across unlimited keys and services

Capacity units

$0.50 per unit per month

UnitsRequests per minuteTraffic per monthPer month
1501 GB$0.50
42004 GB$2.00
201,00020 GB$10.00
  • Shared across unlimited keys and services

Services

Works with the services you already use.

App Store ConnectCloudflareFirebaseForgejoGiteaGitHubGitLabGmailGoogle CalendarGoogle CloudGoogle DriveGoogle PlayGoogle WorkspaceNamecheapPlaidPorkbunQuickBooks OnlineSlackTelnyxTwilioWaveXeroGeneric HTTP

Want built-in support for a service we don't have yet? Let us know →

Decide what your agents can do.