Skip to content

Security: moonmath-ai/zro

Security

SECURITY.md

Security

Reporting a vulnerability

Please do not open a public issue for a suspected vulnerability. Report it privately through GitHub's security advisory interface for this repository.

Include the affected version, reproduction steps, impact, and any suggested mitigation. We will acknowledge a complete report as soon as practical and coordinate disclosure after a fix is available.

Scope

This policy covers the zro CLI in this repository.

Out of scope:

  • The Zro inference API and web platform at zro.moonmath.ai
  • Third-party coding agents and their SDKs
  • Operator or system misconfiguration

Supported versions

We support security fixes on the current main branch and the latest npm release. There is no bug bounty program at this time.

Security model

Zro stores credentials with user-only filesystem permissions and creates isolated configuration for each launched tool. Normal tool configuration is read only when an adapter needs to preserve compatible user settings; it is not modified. Temporary session files are removed when the child process exits.

Kilo Code receives a per-session HOME and XDG profile. Its adapter copies only a sanitized subset of user preferences plus regular files from known agent, command, skill, mode, and plugin asset directories. It excludes provider and MCP configuration, model overrides, auth/account state, sessions, databases, caches, dependency manifests and trees, telemetry state, and symbolic links. The high-precedence generated configuration refers to the credential as {env:ZRO_API_KEY} rather than writing its value to disk.

Oh My Pi also receives a per-session HOME, XDG profile, and PI_CODING_AGENT_DIR. Its adapter copies a sanitized subset of display preferences and regular files from known agent, command, prompt, skill, and theme directories. Auth databases, sessions, caches, dependency trees, secret files, and symlinks are excluded. Zro supplies the provider key and MCP bearer through child-process environment variables, disables OTLP export and Auto QA reporting, and forces update, remote-memory, and remote-compaction controls through a temporary high-precedence settings overlay.

Browser login uses a short-lived device code. The CLI generates an ephemeral RSA keypair, and the website encrypts the issued credential to that public key. The private key remains in CLI memory and is not written to disk.

API keys are masked in all human and JSON output. zro --dry-run writes nothing and starts nothing.

There aren't any published security advisories