{"record":{"id":"02c3397a0952c8b1","repo":"hashicorp/terraform","slug":"expected-a-single-argument-name-02c339","errorCode":null,"errorMessage":"Expected a single argument: NAME.","messagePattern":"Expected a single argument: NAME\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/command/arguments/workspace_select.go","lineNumber":45,"sourceCode":"func ParseWorkspaceSelect(args []string) (*WorkspaceSelect, tfdiags.Diagnostics) {\n\tvar diags tfdiags.Diagnostics\n\n\tvar orCreate bool\n\tcmdFlags := defaultFlagSet(\"workspace select\")\n\tcmdFlags.BoolVar(&orCreate, \"or-create\", false, \"create workspace if it does not exist\")\n\tif err := cmdFlags.Parse(args); err != nil {\n\t\tdiags = diags.Append(tfdiags.Sourceless(\n\t\t\ttfdiags.Error,\n\t\t\t\"Failed to parse command-line flags\",\n\t\t\terr.Error(),\n\t\t))\n\t}\n\n\t// `workspace select` takes only one positional argument: workspace name.\n\targs = cmdFlags.Args()\n\tvar name string\n\tif len(args) == 0 {\n\t\tdiags = diags.Append(errors.New(\"Expected a single argument: NAME.\")) // Recreating pre-existing error from command package\n\t} else {\n\t\t// Obtain and validate name argument.\n\t\tname = args[0]\n\t\tif !ValidWorkspaceName(name) {\n\t\t\tdiags = diags.Append(fmt.Errorf(EnvInvalidName, name))\n\t\t}\n\n\t\t// Checking for extra arguments here, not with a len != 1 check above, allows the name to be returned\n\t\targs = args[1:]\n\t\tif len(args) != 0 {\n\t\t\tdiags = diags.Append(errors.New(\"Expected a single argument: NAME.\"))\n\t\t}\n\t}\n\n\treturn &WorkspaceSelect{\n\t\tWorkspace: Workspace{ViewType: ViewHuman},\n\t\tOrCreate:  orCreate,\n\t\tName:      name,","sourceCodeStart":27,"sourceCodeEnd":63,"githubUrl":"https://github.com/hashicorp/terraform/blob/c9def3e214014c1188faabfc4a5bde5095139765/internal/command/arguments/workspace_select.go#L27-L63","documentation":"Returned by ParseWorkspaceSelect (workspace_select.go:45) when, after flag parsing, zero positional arguments are present — i.e. 'terraform workspace select' was run with no NAME. Exactly one workspace name is required to switch to it.","triggerScenarios":"Line 43-45: cmdFlags.Args() returns len(args)==0 -> the error is appended; Name stays empty.","commonSituations":"Running 'terraform workspace select' bare; an empty variable expansion in a script; mistaking it for 'terraform workspace list'.","solutions":["Provide the workspace name: 'terraform workspace select NAME'.","Run 'terraform workspace list' to see available names.","Use 'terraform workspace select -or-create=NAME' if you want create-if-missing semantics."],"exampleFix":"# before\n$ terraform workspace select\n# after\n$ terraform workspace select prod","handlingStrategy":"validation","validationCode":"// Ensure a name is present for 'workspace select'.\nfunc validateSelectName(args []string) error {\n    if len(args) == 0 {\n        return errors.New(\"workspace select requires a NAME argument\")\n    }\n    return nil\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pass a workspace name to 'terraform workspace select'.","List workspaces first if unsure of available names.","Use -or-create if you want create-if-missing behavior."],"tags":["cli-arguments","workspace","select","missing-argument"],"analyzedSha":"c9def3e214014c1188faabfc4a5bde5095139765","analyzedAt":"2026-08-07T15:39:49.278Z","schemaVersion":2},"datasetVersion":"2026-08-07T21:17:07.882Z"}