| Version | Supported |
|---|---|
| 1.0.x | Yes |
Please do not open public GitHub issues for security problems.
Email security reports to the repository maintainers via GitHub private security advisories: https://github.com/OnlineChefGroep/kater-dev-tools/security/advisories/new
Include:
- Description of the issue and impact
- Steps to reproduce
- Affected version/commit
- Suggested fix (if any)
We aim to acknowledge reports within 72 hours.
Kater exposes MCP tools over HTTP/SSE. Treat a public instance like an API gateway:
- Never expose
/ssewithout auth. SetKATER_PUBLIC=1andKATER_AUTH_MODE=oauthorapikey. - Use OAuth for ChatGPT Remote MCP — built-in PKCE flow at
/authorizeand/token. - Use API keys for Cursor/agents —
Authorization: Bearer <key>on MCP and REST requests. - Enable rate limiting —
KATER_RATE_LIMIT=60(default when public). Applied to REST, MCP/sse, and WebSocket;X-Forwarded-Foris honored only from loopback/private proxy peers or withKATER_TRUST_PROXY=1. - Restrict CORS — avoid
*on public deployments; setKATER_CORS_ORIGINS. - Keep adapter secrets in env — never commit
.env; Kater redacts secrets in API/MCP tool responses. - Bind to loopback behind a tunnel — Cloudflare Tunnel or Tailscale; do not expose raw ports.
- Set an admin key —
KATER_ADMIN_KEYseparates tool usage from settings changes. In public mode, settings mutations are blocked without it. - Keep client registration closed — public
/registeris disabled unlessKATER_ALLOW_DYNAMIC_REGISTRATION=1andKATER_REGISTRATION_TOKENis set. Prefer pre-seeded first-party clients/admin bootstrap over anonymous runtime registration. - Dashboard key —
KATER_DASHBOARD_KEYis an optional shortcut that bypasses OAuth token validation for a browser dashboard session inoauthmode. Leave unset unless you need it.
OAuth redirect_uri values must be https (or http for loopback per RFC 8252); dangerous schemes (javascript:, data:) are rejected at registration.
Run kater doctor before going live — it flags public deployments without auth.