feat(set): adds --safe flag for preventing accidental overwrites

This commit is contained in:
Lewis Wynne 2026-02-11 17:38:36 +00:00
parent 6e1af5ba28
commit ac847f34ca
4 changed files with 26 additions and 0 deletions

View file

@ -62,6 +62,10 @@ func set(cmd *cobra.Command, args []string) error {
if err != nil {
return err
}
safe, err := cmd.Flags().GetBool("safe")
if err != nil {
return err
}
promptOverwrite := interactive || config.Key.AlwaysPromptOverwrite
secret, err := cmd.Flags().GetBool("encrypt")
@ -116,6 +120,10 @@ func set(cmd *cobra.Command, args []string) error {
idx := findEntry(entries, spec.Key)
if safe && idx >= 0 {
return nil
}
// Warn if overwriting an encrypted key without --encrypt
if idx >= 0 && entries[idx].Secret && !secret {
warnf("overwriting encrypted key '%s' as plaintext", spec.Display())
@ -160,4 +168,5 @@ func init() {
setCmd.Flags().DurationP("ttl", "t", 0, "Expire the key after the provided duration (e.g. 24h, 30m)")
setCmd.Flags().BoolP("interactive", "i", false, "Prompt before overwriting an existing key")
setCmd.Flags().BoolP("encrypt", "e", false, "Encrypt the value at rest using age")
setCmd.Flags().Bool("safe", false, "Do not overwrite if the key already exists")
}