Brokered Secrets for AI Agents: How MeowPass + MCP Keeps Your Keys Safe
AI coding agents need secrets to deploy your code, but they should not see your production database password. Here is how MeowPass brokers scoped access through MCP so real keys stay server-side.
You're using Claude Code or Cursor to build your app. You ask it to deploy. It needs your Stripe key, database URL, and AWS credentials. Do you paste them into the chat?
Don't. Every secret you paste into an LLM prompt can end up logged, cached, or carried along in a context window. MeowPass takes a different route: the agent never receives your keys. Instead it asks a broker for scoped access, the broker checks the request against the agent's scopes (and, where configured, waits for a human to approve it), and the real credential is used server-side while the agent only sees the result. Every request lands in an audit log.
The Problem: Secrets in LLM Context
When an AI agent runs npm run deploy, it needs environment variables. The naive approach: paste your .env into the chat. The agent sees every secret in plaintext. Those secrets are now in:
- The LLM's context window
- Potentially the provider's training data (depending on terms)
- Your conversation history
- Any logging or monitoring systems
MeowPass MCP: 14 Tools for AI Agents
MeowPass ships an MCP server (@meowlabs/meowpass-mcp) with 14 tools. Behind those tools sits the broker. When a tool needs a real credential, the broker either injects the stored secret into a server-side subprocess or mints a short-lived native token (a GitHub App installation token, AWS STS credentials) scoped to the task. The agent drives the operation but never holds the underlying key. Through these tools an agent can:
- List vaults and secret names (never values)
- Detect drift between a local .env and the vault
- Run a command with secrets injected server-side, without the values reaching the agent
- Scaffold secret placeholders for new services
Redacted Mode
Redacted mode is how the broker returns command output without leaking anything. The meowpass_run_redacted MCP tool injects secrets into a subprocess and scrubs every secret value out of the output before returning it to the LLM:
You: "Deploy this with production secrets"
Claude Code:
→ meowpass_run_redacted(vault: "my-app", command: "npm run deploy")
→ Result: {
"secrets_injected": 12,
"exit_code": 0,
"stdout": "Deployed to [REDACTED:AWS_SECRET]...",
"values_exposed": false
}
The AI orchestrated the deployment. The secrets were injected. But the LLM never saw a single secret value.
Setup (2 Minutes)
mp apikey create claude-mcp
claude mcp add meowpass -e MEOWPASS_API_KEY=mp_your_key -- npx -y @meowlabs/meowpass-mcp
Security Model
- API keys carry scopes, so you can hand an agent a read-only key and nothing more
- The broker enforces those scopes on every request;
meowpass_list_secretsreturns names only, never values - Every brokered access is written to the audit trail
- Revoke a compromised key at once with
mp apikey revoke <id>
The point of the broker is to let an agent do useful work with your secrets while keeping the secrets on the server side of the boundary, behind scopes, approvals, and an audit trail. Full AI integration docs →