kuukura secrets
Secrets live in a vault. You run commands with them; you never read them.
- See what exists (names, versions, tags only, never values):
ku secret listorku secret list app:shop env:dev - Run a command with secrets injected as env vars (file secrets become a path in the env var):
ku run env:dev -- npm run devThe folder is linked to an app, soapp:<app>is added for you. If you get “not linked”, ask the user to runku link <app>. - If a name matches several secrets, add a tag as the error suggests, for example
ku run env:dev team:web -- npm run dev. - If a secret is “blocked” or you are “not permitted”, stop and tell the user. Do not look for another way in.
- If
ku runrefuses a secret named likeLD_PRELOAD,NODE_OPTIONSorPATH(names that change how programs load code), stop and tell the user to rename it. - stdout holds only list rows, values and tokens; every ✓, ✗ and “No secrets found.” goes to stderr, so empty stdout from
ku secret listmeans nothing matched. - Exit code 1 means the command failed, 2 means wrong arguments (the
Usage:line says how to call it); the line after a✗that starts withRun:is the command that fixes it, but only run it if it is in your remit (see Never).
- Never run
ku secret get --revealorku secret get --out. They need the user’s own confirmation (passkey or authenticator app) and are for humans. - Never print, echo, log, write to a file, or paste a secret value anywhere: not in output, commit messages, issues, or chat. That includes
env,printenv,echo $NAME, debug logging of the environment, andcaton injected files. - Never put a value in a command line, a URL, a config file, or a test fixture. Use
ku run. - Never run
ku secret set,update,revoke,archive, anyku workspaceorku accountcommand unless the user explicitly asks.
If a value leaks (for example it showed up in a transcript), tell the user right away so they can rotate it.