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.