{"record":{"id":"e54e5a9b194dbcbe","repo":"plandex-ai/plandex","slug":"error-getting-org-session-v-e54e5a","errorCode":null,"errorMessage":"error getting org session: %v","messagePattern":"error getting org session: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/cli/auth/auth.go","lineNumber":122,"sourceCode":"\t\tif host == \"\" {\n\t\t\thost = \"Plandex Cloud\"\n\t\t}\n\n\t\tterm.OutputErrorAndExit(\"Account %s not found on %s\", Current.Email, host)\n\t}\n\n\treturn nil\n}\n\nfunc RefreshAuth() error {\n\tif Current == nil {\n\t\treturn fmt.Errorf(\"error refreshing auth: auth not loaded\")\n\t}\n\n\torg, apiErr := apiClient.GetOrgSession()\n\n\tif apiErr != nil {\n\t\treturn fmt.Errorf(\"error getting org session: %v\", apiErr.Msg)\n\t}\n\n\tCurrent.OrgName = org.Name\n\tCurrent.OrgIsTrial = org.IsTrial\n\tCurrent.IntegratedModelsMode = org.IntegratedModelsMode\n\n\terr := writeCurrentAuth()\n\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error writing auth: %v\", err)\n\t}\n\n\treturn nil\n}\n","sourceCodeStart":104,"sourceCodeEnd":137,"githubUrl":"https://github.com/plandex-ai/plandex/blob/e2d772072efadbe41d2946d97d79be55532dbab5/app/cli/auth/auth.go#L104-L137","documentation":"RefreshAuth calls apiClient.GetOrgSession() to fetch the current org's session data (name, trial status, integrated-models mode). If the server returns an ApiError it is wrapped as this error. It indicates the org session could not be retrieved with the current token/org.","triggerScenarios":"Any ApiError from GetOrgSession: 401/403 after token expiry or org removal, 404 for a stale OrgId, 5xx server failure, or network failure surfaced as an ApiError.","commonSituations":"Expired or revoked token; user removed from the org or org deleted server-side; self-hosted server out of sync with stored OrgId; server-side maintenance/5xx responses.","solutions":["Run `plandex sign in` (or RefreshInvalidToken path) to obtain a fresh token","Confirm you still belong to the org; re-select it or list orgs to refresh OrgId","Check server health if self-hosted (logs, uptime, version compatibility)","Inspect apiErr.Msg for the upstream status to distinguish auth vs. server issues"],"exampleFix":"// before\norg, apiErr := apiClient.GetOrgSession() // stale token -> 401\n// after\nif apiErr != nil && apiErr.Msg == \"unauthorized\" {\n\tif err := auth.RefreshInvalidToken(); err != nil { term.OutputErrorAndExit(\"%v\", err) }\n\torg, apiErr = apiClient.GetOrgSession()\n}","handlingStrategy":"retry","validationCode":"if auth.Current == nil || auth.Current.OrgId == \"\" {\n\treturn fmt.Errorf(\"no org selected; run sign-in and choose an org\")\n}","typeGuard":"func orgSessionReady() bool { return auth.Current != nil && auth.Current.OrgId != \"\" && auth.Current.Token != \"\" }","tryCatchPattern":"if _, err := auth.RefreshAuth(); err != nil {\n\tif strings.Contains(err.Error(), \"getting org session\") {\n\t\t// token may be expired: refresh token first, then retry once\n\t\tif rerr := auth.RefreshInvalidToken(); rerr == nil {\n\t\t\t_, err = auth.RefreshAuth()\n\t\t}\n\t}\n\tif err != nil { term.OutputErrorAndExit(\"%v\", err) }\n}","preventionTips":["Re-sign-in when the stored token is old","Confirm org membership didn't change server-side","Check server status/logs for 5xx before blaming the client","Keep CLI and self-hosted server versions compatible"],"tags":["api","org","session","server"],"backgroundTag":"org-session-error","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"}