{"record":{"id":"c789a8701265d26c","repo":"kubernetes/kops","slug":"secret-name-is-required","errorCode":null,"errorMessage":"secret name is required","messagePattern":"secret name is required","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/kops/delete_secret.go","lineNumber":66,"sourceCode":"func NewCmdDeleteSecret(f *util.Factory, out io.Writer) *cobra.Command {\n\toptions := &DeleteSecretOptions{}\n\n\tcmd := &cobra.Command{\n\t\tUse:     \"secret SECRET_NAME...\",\n\t\tShort:   deleteSecretShort,\n\t\tExample: deleteSecretExample,\n\t\tArgs: func(cmd *cobra.Command, args []string) error {\n\t\t\tif len(args) > 0 && args[0] == \"sshpublickey\" {\n\t\t\t\toptions.SecretType = args[0]\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tif len(args) > 0 && args[0] == \"secret\" {\n\t\t\t\targs = args[1:]\n\t\t\t}\n\n\t\t\tif len(args) == 0 {\n\t\t\t\treturn fmt.Errorf(\"secret name is required\")\n\t\t\t}\n\t\t\tif len(args) > 1 {\n\t\t\t\treturn fmt.Errorf(\"too many arguments\")\n\t\t\t}\n\t\t\toptions.SecretNames = args\n\t\t\toptions.ClusterName = rootCommand.ClusterName(true)\n\n\t\t\tif options.ClusterName == \"\" {\n\t\t\t\treturn fmt.Errorf(\"--name is required\")\n\t\t\t}\n\n\t\t\treturn nil\n\t\t},\n\t\tValidArgsFunction: completeSecretNames(f),\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\treturn RunDeleteSecret(cmd.Context(), f, out, options)\n\t\t},\n\t}","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/cmd/kops/delete_secret.go#L48-L84","documentation":"The delete secret command requires exactly one secret name argument. If no positional arguments remain (after stripping the optional leading \"secret\" word), RunE reports that a secret name is required. This is a CLI argument-count guard.","triggerScenarios":"`kops delete secret` invoked with zero arguments, e.g. `kops delete secret --name <cluster>`.","commonSituations":"Forgetting the secret name; copy-pasting command examples that omit the placeholder; scripting with an empty variable.","solutions":["Provide the secret name: kops delete secret <name> --name <cluster>","List available secrets with `kops get secrets` to find the right name"],"exampleFix":"// before\nkops delete secret --name mycluster.k8s.local\n// after\nkops delete secret dockerconfig --name mycluster.k8s.local","handlingStrategy":"validation","validationCode":"if [ -z \"$SECRET_NAME\" ]; then echo \"usage: kops delete secret <name> --name <cluster>\"; exit 1; fi\nkops delete secret \"$SECRET_NAME\" --name \"$CLUSTER\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pass exactly one positional secret name","List secrets with `kops get secrets` to confirm the name","Quote variables in shell scripts to avoid empty args"],"tags":["cli","secrets","validation"],"backgroundTag":"missing-required-argument","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}