This document describes the credential security model for the Honeycomb Claude Code plugin.
- The Honeycomb Management API key is stored via Claude Code's
userConfigwithsensitive: true - On macOS, this stores the key in the system Keychain (Keychain Access.app)
- On other systems, it falls back to an encrypted local credential store
- The key is never written to disk in plaintext, conversation logs, or plugin files
- When the plugin starts, Claude Code retrieves the key from the Keychain
- The key is passed to the MCP server as an environment variable (
HONEYCOMB_MGMT_KEY) - The MCP server uses the Management Key to create ephemeral Configuration Keys scoped to specific environments
- Ephemeral keys are:
- Named
claude-ephemeral-{timestamp}for easy identification - Cached in-memory for up to 30 minutes
- Automatically deleted on MCP server shutdown
- Never exposed in tool call results or conversation context
- Named
- Run
claude plugin configure honeycombto set up your credentials - Rotate your Management Key periodically in Honeycomb Team Settings → API Keys
- Use a Management Key with minimal scopes (
api-keys:read,api-keys:write,environments:read)
- Never paste your API key into the chat — it will be logged in conversation history
- Never store your key in
.envfiles within the project directory - Never commit any file containing API keys
- The plugin will warn you immediately
- Go to Honeycomb → Team Settings → API Keys
- Delete the compromised key
- Create a new key
- Run
claude plugin configure honeycombto update the stored credential
┌─────────────────────────────────┐
│ Plugin starts │
│ → Management Key from Keychain │
└──────────┬──────────────────────┘
│
▼
┌─────────────────────────────────┐
│ User asks a question │
│ → MCP creates ephemeral key │
│ → Scoped to target environment │
│ → Cached in memory (30 min) │
└──────────┬──────────────────────┘
│
▼
┌─────────────────────────────────┐
│ Query executes │
│ → Uses ephemeral key │
│ → Key never in chat/logs │
└──────────┬──────────────────────┘
│
▼
┌─────────────────────────────────┐
│ Plugin shuts down │
│ → All ephemeral keys deleted │
│ → Management Key stays in │
│ Keychain for next session │
└─────────────────────────────────┘
| Data | Where it lives | Visible in chat? |
|---|---|---|
| Management Key | macOS Keychain | Never |
| Management Key | MCP server env var | Never |
| Ephemeral Keys | MCP server memory | Never |
| Query results | Chat conversation | Yes (this is the point) |
| Environment names | Chat conversation | Yes |
| Dataset schemas | Chat conversation | Yes |