Security
Secrets
How Saphan Studio references credentials, and the few secrets it holds itself.
Configuration, the record and evidence carry names, paths and fingerprints — never secret values. The secrets Saphan Studio does hold are its own key files, kept under enforced custody, and a metered seat's vendor API key, stored owner-only in that seat's own profile and handed to that seat's agent at run time. ⚠ It is not hidden from other seats' agents on the same machine.
| Surface | Mechanism |
|---|---|
| Configuration | Credentials are configured as the name of an environment variable or the path to a file. Never a value. |
| Workspace integrity key | 32 bytes, owner-only permissions, refused if permissions are loose before the contents are read, symlink-safe check order. |
| In-memory representation | Renders as a fingerprint. Ordinary logging cannot leak it. |
| Durable evidence | Redacted before serialisation — by pattern, and by a Shannon-entropy threshold that catches token-shaped strings matching no known pattern. |
| Cost and audit records | Names, references and numbers only. |
| Remote execution | Environment forwarding disabled; the local SSH client receives a minimal environment rather than the control plane's. |
| Billing class | Not a secret — subscription/metered/local-energy/unknown are labels, not credentials — but it carries the same write custody as any other seat fact: it rides the signed seat row, so changing it requires the root key, or an identity key the root granted, and a new owner-signed append, never a config edit or an inferred update. |