Skip to content

Security: Secret Management

Document ID: SEC-005
File Path: docs/13-security/secret-management.md
Version: 1.0.0
Status: Draft
Owner: Security Team
Last Updated: 2026-06-27


This document defines how the Wovyr AI Platform stores, references, injects, and rotates secrets — provider API keys, database credentials, signing keys, and integration tokens — without ever exposing them in code, config, logs, or responses.


  1. Reference, never embed — components hold secret references, not values.
  2. Centralized vault — secrets live in one managed store.
  3. Least privilege — each workload reads only its own secrets.
  4. Short-lived where possible — prefer minted, scoped, expiring credentials.
  5. Never logged — secrets are masked everywhere, including audit.
  6. Rotatable — rotation without redeploying consumers.

A managed vault (cloud secrets manager or HashiCorp Vault) is the single source of truth. Secrets are addressed by reference:

secret://acme/github-token
secret://platform/llm/openai-key

References appear in manifests, plugin permissions, and configs; the value is resolved at runtime by an authorized workload identity.


Workload (with IAM/workload identity)
│ authenticates to vault
Vault checks the workload may read the referenced secret
Returns value (in-memory) → used → never persisted

Access is scoped via IAM (e.g. IRSA/workload identity from Terraform); a service can read only the secrets it is bound to.


Tools and plugins never receive raw long-lived credentials directly:

  • The Tool Runtime / Plugin host resolves the secret reference and injects it into the sandbox in memory (env/tmpfs), zeroed on teardown (Tool Runtime secrets).
  • Where the provider supports it, short-lived scoped credentials are minted per execution rather than handing over the master secret.
  • A plugin must hold a secret:read:<ref> grant to access a secret.

LLM provider keys are stored as references and consumed only by the LLM Gateway; callers never see them. This centralizes provider credentials behind one governed service.


SecretRotation
Provider/API keysScheduled; dual-key window for zero-downtime
DB credentialsRotated via vault dynamic secrets where supported
Signing keysRotated; old keys retained for verification window
Service identitiesShort-lived, continuously rotated

Consumers reading by reference pick up rotated values automatically.


  • Any secret can be revoked immediately, disabling dependent capabilities.
  • On suspected leak: rotate the secret, audit secrets_used (tool audit), and revoke affected grants (runbook).

Secrets are masked in logs, traces, error messages, and audit records. Audit references the secret by id, never its value (Tool audit example).


Secret reads, rotations, and revocations are audited per audit.md with the workload identity and reference (not value).




VersionDateDescription
1.0.02026-06-27Initial Secret Management specification