Security is not a feature we added. It is how the architecture works. Source code stays local with your agent's MCP host. API keys live in your host's config, never on our servers. The MCP boundary accepts metadata only — no file bodies, by schema.
These rules are enforced at the code level. They cannot be overridden by configuration, user input, or admin settings.
/mcp server only receives workflow metadata: status strings, file paths, counts, timestamps. No prompts, no diffs, no file contents — by protocol shape, not by self-discipline.Your agent — Claude Code or Cursor — reads the code locally through its filesystem MCP and calls its native LLM with your key. RailRun is a separate MCP server the host calls alongside, purely for workflow state.
Our backend never receives source code, LLM prompts, or LLM responses. It receives only metadata: work-unit status transitions, checkpoint decisions, branch + PR URLs, build exit codes, token-count summaries (not content).
Plugin API keys for RailRun are generated once on the admin page, stored as sha256 hashes server-side, and kept in plaintext only inside your host's own keychain.