--- title: Secrets summary: Secrets CRUD --- Manage encrypted secrets that agents reference in their environment configuration. ## List Secrets ``` GET /api/companies/{companyId}/secrets ``` Returns secret metadata (not decrypted values). ## Create Secret ``` POST /api/companies/{companyId}/secrets { "name": "anthropic-api-key", "value": "sk-ant-..." } ``` The value is encrypted at rest. Only the secret ID and metadata are returned. To link a provider-owned secret without copying the value into Paperclip, create an external-reference secret: ```json { "name": "prod-stripe-key", "provider": "aws_secrets_manager", "managedMode": "external_reference", "externalRef": "arn:aws:secretsmanager:us-east-1:123456789012:secret:paperclip/prod/stripe", "providerVersionRef": "version-id-or-label" } ``` Paperclip stores the provider reference and a non-sensitive fingerprint only. The value is resolved, when the provider is configured, through the server runtime path that enforces binding context and records access events. ## Provider Health ``` GET /api/companies/{companyId}/secret-providers/health ``` Returns provider setup diagnostics, warnings, and local backup guidance. Health responses must not include secret values or provider credentials. For `aws_secrets_manager`, an unready health response names the missing non-secret provider environment variables, the AWS SDK default credential source expected by the server runtime, and the custody rule that AWS bootstrap credentials must not be stored in Paperclip `company_secrets`. The equivalent CLI check is: ```sh pnpm paperclipai secrets doctor --company-id {companyId} ``` ## Rotate Secret ``` POST /api/secrets/{secretId}/rotate { "value": "sk-ant-new-value..." } ``` Creates a new version of the secret. Agents referencing `"version": "latest"` automatically get the new value on next heartbeat. Pin to a specific version when a bad `latest` rollout would affect many agents at once. ## Using Secrets in Agent Config Reference secrets in agent adapter config instead of inline values: ```json { "env": { "ANTHROPIC_API_KEY": { "type": "secret_ref", "secretId": "{secretId}", "version": "latest" } } } ``` The server resolves and decrypts secret references at runtime, injecting the real value into the agent process environment. Paperclip's custody guarantees end at injection: the agent process can read, log, or forward the value, so treat any secret bound to an agent as exposed to that agent. See the custody boundaries note in the [secrets deploy guide](/deploy/secrets#custody-boundaries). ## Portability Company export/import APIs represent agent and project environment requirements as declarations in the package manifest. Exports omit secret values, secret IDs, provider references, and encrypted provider material. Use: ```sh pnpm paperclipai secrets declarations --company-id {companyId} ``` to inspect the declarations that an export would emit before moving a package.