{"record":{"id":"2c44ae28a6ee3a4b","repo":"cli/cli","slug":"project-number-is-required-when-not-running-intera","errorCode":null,"errorMessage":"project number is required when not running interactively","messagePattern":"project number is required when not running interactively","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"pkg/cmd/project/shared/queries/queries.go","lineNumber":1524,"sourceCode":"\t\t\tvar query userOwner\n\t\t\tvariables[\"login\"] = githubv4.String(o.Login)\n\t\t\terr := c.doQueryWithProgressIndicator(\"UserProject\", &query, variables)\n\t\t\treturn newProjectFromQueryWithoutItemsQuery(query.Owner.Project), err\n\t\t} else if o.Type == OrgOwner {\n\t\t\tvariables[\"login\"] = githubv4.String(o.Login)\n\t\t\tvar query orgOwner\n\t\t\terr := c.doQueryWithProgressIndicator(\"OrgProject\", &query, variables)\n\t\t\treturn newProjectFromQueryWithoutItemsQuery(query.Owner.Project), err\n\t\t} else if o.Type == ViewerOwner {\n\t\t\tvar query viewerOwner\n\t\t\terr := c.doQueryWithProgressIndicator(\"ViewerProject\", &query, variables)\n\t\t\treturn newProjectFromQueryWithoutItemsQuery(query.Owner.Project), err\n\t\t}\n\t\treturn nil, errors.New(\"unknown owner type\")\n\t}\n\n\tif !canPrompt {\n\t\treturn nil, fmt.Errorf(\"project number is required when not running interactively\")\n\t}\n\n\tprojects, err := c.Projects(o.Login, o.Type, 0, fields)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(projects.Nodes) == 0 {\n\t\treturn nil, fmt.Errorf(\"no projects found for %s\", o.Login)\n\t}\n\n\toptions := make([]string, 0, len(projects.Nodes))\n\tfor _, p := range projects.Nodes {\n\t\ttitle := fmt.Sprintf(\"%s (#%d)\", p.Title, p.Number)\n\t\toptions = append(options, title)\n\t}\n\n\tanswerIndex, err := c.prompter.Select(\"Which project would you like to use?\", \"\", options)","sourceCodeStart":1506,"sourceCodeEnd":1542,"githubUrl":"https://github.com/cli/cli/blob/0eeec0b92edbe70199f9768522f831d3534f41ad/pkg/cmd/project/shared/queries/queries.go#L1506-L1542","documentation":"NewProject needs a project number. When opts.number is 0 the command would normally prompt: it fetches the owner's projects via c.Projects and shows a picker. In non-interactive mode (canPrompt false) it fails immediately with this error rather than querying. Related guard just below: an owner with zero projects yields \"no projects found for %s\" instead.","triggerScenarios":"Running a project subcommand without the <number> argument in a non-interactive environment (CI, piped stdin), or passing 0/empty for the number.","commonSituations":"CI jobs or Makefile targets copied from interactive sessions where the project picker silently supplied the number; forgetting the positional argument.","solutions":["Pass the project number: `gh project item-list 42 --owner myorg` (find it in the project URL or via `gh project list --owner myorg`)","Run interactively to get the project picker","In scripts, discover numbers first: `gh project list --owner X --json number,title --jq '.[] | \"\\(.number) \\(.title)\"'`"],"exampleFix":"# before (in CI)\ngh project item-list --owner myorg\n# after\ngh project list --owner myorg --json number,title\ngh project item-list 42 --owner myorg","handlingStrategy":"validation","validationCode":"if !interactive() && projectNumber == 0 {\n    return errors.New(\"project number argument is required in non-interactive mode\")\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Resolve project numbers with `gh project list --json number` and pass them explicitly","Treat interactive pickers as unavailable in CI; supply number and owner","Extract the number from the project URL when automating"],"tags":["cli-usage","non-interactive","project","validation"],"backgroundTag":null,"analyzedSha":"0eeec0b92edbe70199f9768522f831d3534f41ad","analyzedAt":"2026-08-15T12:31:05.478Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}