Skip to content

ov secret

import { Aside } from ‘@astrojs/starlight/components’;

Every secret lives inside an app. The CLI resolves which app to target in this order:

  1. --app flag (highest priority)
  2. Your configured default (set via ov app use)
Terminal window
ov app use my-saas # set default once
ov secret set DATABASE_URL # targets my-saas automatically
ov secret list # lists secrets in my-saas

CommandDescription
ov secret set <name>Create or update a secret
ov secret get <name>Decrypt and print a secret value to stdout
ov secret delete <name>Delete a secret
ov secret listList all secret names in the active app
ov secret import <file>Bulk import from .env, JSON, CSV, or a secret manager export

Terminal window
ov secret set DATABASE_URL
ov secret set DATABASE_URL --app my-saas

Prompts for the value (hidden input). Encrypts locally with a fresh DEK, stores ciphertext on the server. If the secret already exists it is updated in place with a new DEK.


Terminal window
ov secret get DATABASE_URL
ov secret get DATABASE_URL --app my-saas

Fetches the encrypted blob, decrypts locally, prints plaintext to stdout.

Pipe to clipboard (macOS):

Terminal window
ov secret get DATABASE_URL | pbcopy

Terminal window
ov secret delete DATABASE_URL
ov secret delete DATABASE_URL --app my-saas

Deletes the ciphertext blob from the server. The deletion is logged to the audit trail.


Terminal window
ov secret list
ov secret list --app my-saas

Lists all secret names for the active app. Values are never returned.

Output:

App: my-saas
NAME UPDATED
DATABASE_URL 2026-04-10T14:32:11Z
OPENAI_API_KEY 2026-04-01T09:00:00Z
STRIPE_SECRET_KEY 2026-04-05T11:45:00Z

Terminal window
ov secret import .env.production --app my-saas
ov secret import secrets.json --app my-saas --dry-run

Bulk import from any major format. Supported sources:

FormatFlag / auto-detected
.env fileauto-detected or --source env
JSON {"KEY": "value"}auto-detected or --source json
CSV--source csv
1Password export--source 1password
Bitwarden export--source bitwarden
LastPass export--source lastpass
Dashlane export--source dashlane
Doppler export--source doppler
Infisical export--source infisical
HashiCorp Vault export--source vault
AWS Secrets Manager export--source awssm

Use --dry-run to preview what would be imported without storing anything.


FlagDescription
--app NAMETarget app (overrides default)