Security disclosure

Found a vulnerability? Tell us privately.

Caelo runs plugin code, accepts public writes and holds credentials for clouds and AI providers. A flaw there affects every install, so we treat every report as urgent.

How to report

Please do not open a public issue.

Use GitHub's private vulnerability reporting on the Caelo repository. The report goes straight to the maintainers, and nothing is public until the fix is published.

If you cannot use GitHub, email security@caelo-cms.com.

What helps us most

  • A description of the vulnerability and the affected component
  • Steps to reproduce on a fresh self-hosted install
  • Proof-of-concept code, for example as a private gist
  • Your preferred disclosure timeline (default: 90 days from acknowledgement)
  • Whether you would like to be credited in the release notes

What we promise

Fast answers, coordinated release.

  • Acknowledgement within 72 hours, even if the fix takes longer.
  • A fix within 30 days for critical issues and within 90 days for high-severity issues.
  • A coordinated disclosure timeline. We do not publish before you are ready, and we do not sit on a fix either.
  • Public credit in the security advisory when the fix ships, unless you prefer to stay anonymous.
  • No legal action for good-faith research that follows this policy. Please do not access more data than you need to show the issue.

Scope

What this policy covers.

In scope

  • The admin app and its API
  • The Query API and database adapter
  • The plugin host and sandbox, every plugin shipped with Caelo, and the permission model that bounds every plugin
  • Provisioning: secret handling, IAM scope, network isolation
  • The MCP server
  • The static generator's output
  • The API gateway

Out of scope

  • Vulnerabilities in third-party dependencies. Please report them upstream; we update once a fix is out.
  • Issues that need physical access to the host or shell access to the database
  • Issues that depend on credentials that are already compromised
  • Self-XSS in the owner's own browser. The owner is trusted and may place raw HTML in a module.
  • Denial of service through expensive AI prompts. Per-token and budget limits are set under Settings, AI budgets.

Signatures, internal tokens and MCP token hashes count as critical surfaces. The full policy is in SECURITY.md.