← ClaudeAtlas

secretslisted

Use a credential held in a charter vault — a database password, API token, kubeconfig, SSH key or server login — without its value entering the conversation. Use when a task needs a secret, when asked to store one, or before running any command that requires a credential.
diazoxide/charter · ★ 17 · AI & Automation · score 73
Install: claude install-skill diazoxide/charter
# Using a charter vault The rule this exists to keep: **use a secret, never reveal it.** A value that reaches the transcript is disclosed — to the model's context, to whatever logs the session, and to anyone the transcript is later shared with. Deleting the message afterwards does not undo any of that. Full model, including what the vault does *not* protect against: `charter docs show secrets`. ## Find out what exists ```bash charter vault list # vaults: name, provider, persona, status — no values charter secret list <vault> # the KEYS in one vault — no values ``` ## Store one — the value never goes on the command line ```bash printf '%s' "<value>" | charter secret set <vault> <key> --stdin charter secret set <vault> <key> --from-file <path> # multi-line or verbatim: kubeconfig, PEM ``` An argument list is not private: it is visible in `ps`, in shell history, and in this transcript. Ask the user to supply the value by stdin or file, or to set it themselves. ## Use one — pick an injection path **As an environment variable:** ```bash charter secret exec <vault> --env NAME=<key> -- <command...> ``` **As a file** (kubeconfig, certificate, key): ```bash charter secret exec <vault> --file KUBECONFIG=<key> -- kubectl get pods charter secret cp <vault> <key> <dest> # persist at 0600; <dest> must be a real file ``` `<dest>` must be a **real file that does not exist yet**. A device, a FIFO, a directory or a symlink is refused, and so is an exi