Skip to content

ov shell

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

ov shell starts an interactive shell session with named secrets pre-injected as environment variables. Use it when you need a full terminal with credentials available — running psql, debugging with live credentials, or using tools that don’t work with ov run.

Terminal window
ov shell --secrets DATABASE_URL,STRIPE_SECRET_KEY

ov shell uses syscall.Exec to replace the current process with the shell, so the terminal gets real file descriptors. Interactive programs (psql, vim, htop, etc.) work correctly — you’re not in a subprocess, you’re in the shell.

The KEK is zeroed before the shell starts. Secret values live in the shell’s environment for the full session lifetime.


Terminal window
ov shell [flags]

No arguments required. Secrets are specified via --secrets.


FlagDescription
--secrets NAME,NAME2Comma-separated list of secret names to inject
--app NAMETarget app (overrides default)
--machine-key PATHPath to machine key file for non-interactive use
--shell PATHShell to launch (default: $SHELL, fallback: /bin/sh)
--loginStart the shell as a login shell (prefixes argv[0] with -, POSIX login shell convention)

Start a shell with a database URL available:

Terminal window
ov shell --secrets DATABASE_URL
# → starts $SHELL with DATABASE_URL in env
psql $DATABASE_URL

Use a non-default shell:

Terminal window
ov shell --secrets DATABASE_URL --shell /bin/zsh

Target a specific app:

Terminal window
ov shell --secrets DATABASE_URL --app payments-service


ov shellov run
Use caseInteractive terminal sessionsScripted / automated commands
Secret lifetimeFull shell sessionSingle subprocess only
Child process accessAll child processes see secretsOnly the target command sees secrets
env / printenv visibleYesYes (within the subprocess)
Suitable for CI/CDNoYes