{"record":{"id":"9d3e64ef26b02ddd","repo":"plandex-ai/plandex","slug":"error-fetching-pending-invites-s-9d3e64","errorCode":null,"errorMessage":"error fetching pending invites: %s","messagePattern":"error fetching pending invites: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/cli/cmd/users.go","lineNumber":51,"sourceCode":"\terrCh := make(chan error)\n\n\tterm.StartSpinner(\"\")\n\n\tgo func() {\n\t\tvar err *shared.ApiError\n\t\tuserResp, err = api.Client.ListUsers()\n\t\tif err != nil {\n\t\t\terrCh <- fmt.Errorf(\"error fetching users: %s\", err.Msg)\n\t\t\treturn\n\t\t}\n\t\terrCh <- nil\n\t}()\n\n\tgo func() {\n\t\tvar err *shared.ApiError\n\t\tpendingInvites, err = api.Client.ListPendingInvites()\n\t\tif err != nil {\n\t\t\terrCh <- fmt.Errorf(\"error fetching pending invites: %s\", err.Msg)\n\t\t\treturn\n\t\t}\n\t\terrCh <- nil\n\t}()\n\n\tgo func() {\n\t\tvar err *shared.ApiError\n\t\torgRoles, err = api.Client.ListOrgRoles()\n\t\tif err != nil {\n\t\t\terrCh <- fmt.Errorf(\"error fetching org roles: %s\", err.Msg)\n\t\t\treturn\n\t\t}\n\t\terrCh <- nil\n\n\t}()\n\n\tfor i := 0; i < 3; i++ {\n\t\terr := <-errCh","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/plandex-ai/plandex/blob/e2d772072efadbe41d2946d97d79be55532dbab5/app/cli/cmd/users.go#L33-L69","documentation":"This error wraps a failure from api.Client.ListPendingInvites() in the users command's parallel fetch. The *shared.ApiError Msg is embedded into 'error fetching pending invites: %s'. It means the pending-invite listing failed, preventing the users command from showing its combined member/invite/roles view.","triggerScenarios":"ListPendingInvites() returning non-nil *shared.ApiError: expired/invalid credentials, role lacking invite-visibility permission, or network/server failure in the goroutine.","commonSituations":"Non-admin users without invite visibility; token revoked mid-session; API downtime or rate limiting.","solutions":["Re-authenticate to refresh the token","Verify your org role permits viewing pending invites","Check API reachability (network, proxy, firewall)","Use the embedded err.Msg status code to identify auth vs server issues"],"exampleFix":"// before\nerrCh <- fmt.Errorf(\"error fetching pending invites: %s\", err.Msg)\n// after\nif err.Status == 403 {\n\terrCh <- fmt.Errorf(\"error fetching pending invites: %s (your role cannot view invites)\", err.Msg)\n} else {\n\terrCh <- fmt.Errorf(\"error fetching pending invites: %s\", err.Msg)\n}","handlingStrategy":"try-catch","validationCode":"// pre-flight: ensure an authenticated session exists before the users command\nif api.Client == nil || api.Client.Token == \"\" {\n\treturn fmt.Errorf(\"not authenticated\")\n}","typeGuard":"func asApiError(err error) (*shared.ApiError, bool) {\n\tae, ok := err.(*shared.ApiError)\n\treturn ae, ok\n}","tryCatchPattern":"pendingInvites, err := api.Client.ListPendingInvites()\nif err != nil {\n\tif ae, ok := err.(*shared.ApiError); ok && ae.Status == 401 {\n\t\treturn reauthAndRetry()\n\t}\n\treturn fmt.Errorf(\"error fetching pending invites: %w\", err)\n}","preventionTips":["Refresh session tokens before long-running sessions expire","Ensure your role has invite-visibility permission","Handle rate limits with backoff","Log err.Msg/status for diagnosis"],"tags":["go","cli","api","network"],"backgroundTag":"api-request-failed","analyzedSha":"e2d772072efadbe41d2946d97d79be55532dbab5","analyzedAt":"2026-09-05T20:56:53.631Z","contentChangedAt":"2026-09-05T20:56:53.631Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}