bee-ai-auth-mcp

Honest + safest

What's held, what isn't, and how to revoke.

Custody is the whole question with a credential relay. The honest answer: this holds your own token in your own deployment, and nobody else's anywhere.

Two legs, kept separate

The login leg (you ↔ relay) and the data leg (relay ↔ Bee) never mix. GitHub authenticates who you are and grants nothing else — no repository access, no profile data beyond your login, which is read once and discarded. Your Bee token rides the other leg only — captured at consent and held in your own encrypted grant, never a shared secret.

What gets stored

The only persistent state is the OAuth provider's grants, in your OAUTH_KV namespace. Grant props are encrypted per-grant with key material derived from the token, not a shared KMS key. A storage-only leak therefore exposes metadata, not usable credentials.

The Bee bearer

It lives only in your own encrypted grant props — never a shared Worker secret. It is never written to logs, never placed in a URL, never serialized into an error, and never returned in tool output. Errors carry a status and a generic message — never the request, the headers, or the upstream body. Tools are read-only by default and request the narrowest data they need.

Revocation — said plainly

Disconnecting the connector deletes the relay's copy of your token along with the grant. It does not revoke the Bee token at Bee — to fully revoke, re-pair or rotate it in the Bee app. We won't imply a cleaner story than that — honest beats convenient.

Who can use your instance

Every login is checked against ALLOWED_GITHUB_LOGIN. Until you set it, the instance refuses everyone — closed by default, not open by default.

Why self-host is the safe default

A hosted store of everyone's tokens

  • Holds many people's long-lived Bee bearers at once
  • One breach exposes every connected account
  • A structural honeypot someone must guard forever
  • Reachable only once Bee issues short-lived, minted tokens

Self-host

  • Your token lives only in your own encrypted grant, nowhere central
  • The blast radius is one person: you
  • No trust required in an operator you've never met
  • Revoke whenever: disconnect deletes the copy; re-pair in the Bee app

Why hosted multi-tenant is deferred

The sibling git-repo-auth can host many users safely because GitHub mints ephemeral, scoped tokens that die within the hour — it never stores a long-lived credential. Bee has no equivalent minting primitive today, so a hosted bee relay would have to store long-lived Bee tokens: the exact liability self-host avoids. Hardening (envelope encryption, per-user isolation, narrowest scope, rotation) shrinks that risk but doesn't erase it. So hosted custody stays deferred and scaling is gated on an upstream "mint short-lived tokens" capability landing. The roadmap tracks that gate.

See the technical detail →