Skip to main content

Secrets are write-only

Secret values are encrypted at rest with a key from MC_SERVER_SECRET_KEY, bound to the row they belong to, and only the system can read them back, when it prepares a run or calls a forge. People and agents can set or replace a value but never see it again; there is no API that reveals one. This keeps tokens out of browsers, logs and agent conversations, at the cost of making a lost value unrecoverable from Mission Control.

Considered Options​

  • Owners can reveal values: rejected; a convenience that turns every owner session into a way to extract every token.
  • Generate a key when none is configured: rejected; values encrypted with a throwaway key are unreadable after the next restart. Without a key, only secret operations fail.

Consequences​

  • Changing the key makes existing values unreadable until key rotation is built; the stored format carries a version for that.
  • Anything that hands a secret to an agent must go through the system, never through a user's or agent's own access.