Secrets
Secrets are the credentials PRESHos holds for agents, plans, and integrations. The secrets surface is /ai/secrets (Secrets Vault in the Configure rail). Values live in Tenant Vault (ai.secret_grant) and GCP Secret Manager. This wiki names kinds of credentials, never values.
- The header counts the vault: total secrets, how many expire soon, how many went stale.
- Each row carries service, identifier, scope, auth kind, expiry, last used, and creator. Scopes include connector, user_integration, and Environment; auth kinds include api_key, oauth, and custom.
- Search by service or display name; filter by scope, auth kind, expiring soon, or stale. The Audit log sits next to the filters; Add secret creates.

- Tenant secrets are referenced as grants. Platform-side secrets (for example signing keys like
AUTH_SECRET) live in GCP Secret Manager. - No password, API key, token, connection string, or private key goes in this wiki, in chat, in code, in tests, or in fixtures. Names of variables where source names them, values never.
- Watch the plaintext gap: agent prompts and plugin configuration can carry pasted values outside the vault. Never paste a credential into a prompt, instruction, or config field to unblock a session — fix the grant instead, and rotate anything already pasted.
- Environments pull secrets per thread (runner, repo, sandbox runtime, tool grants, secrets). A thread that cannot reach a credential is a scoping problem, not a prompt problem: check the environment, not the wording.
Treat /ai/secrets as the source of truth for secrets surfaces. The tenant contract in depth: SDK auth. Provider wiring: AI providers.

