{"record":{"id":"c099bd6b738faa23","repo":"HKUDS/nanobot","slug":"openai-codex-sign-in-expired-start-a-new-sign-in","errorCode":null,"errorMessage":"OpenAI Codex sign-in expired. Start a new sign-in flow.","messagePattern":"OpenAI Codex sign-in expired\\. Start a new sign-in flow\\.","errorType":"exception","errorClass":"OpenAICodexOAuthError","httpStatus":null,"severity":"error","filePath":"nanobot/providers/openai_codex_oauth.py","lineNumber":168,"sourceCode":"    def _capture_output(self, message: str) -> None:\n        raw = str(message)\n        start = raw.find(OPENAI_CODEX_PROVIDER.authorize_url)\n        if start < 0:\n            return\n        candidate = raw[start:].split(maxsplit=1)[0]\n        state = _first(parse_qs(urlsplit(candidate).query), \"state\")\n        if not state:\n            return\n        self.authorization_url = candidate\n        self._expected_state = state\n        self._ready.set()\n\n    def _prompt_for_callback(self, _prompt: str) -> str:\n        remaining = max(0.0, self._expires_at - time.monotonic())\n        try:\n            value = self._callback_input.get(timeout=remaining)\n        except queue.Empty as exc:\n            raise OpenAICodexOAuthError(\n                \"OpenAI Codex sign-in expired. Start a new sign-in flow.\"\n            ) from exc\n        if not value:\n            error = self._result.exception() if self._result.done() else None\n            if error is not None:\n                raise error\n            raise OpenAICodexOAuthError(\"OpenAI Codex sign-in was cancelled.\")\n        return value\n\n    def _fail(self, error: OpenAICodexOAuthError) -> None:\n        try:\n            self._result.set_exception(error)\n        except Exception:\n            pass\n        else:\n            with suppress(queue.Full):\n                self._callback_input.put_nowait(\"\")\n        self._ready.set()","sourceCodeStart":150,"sourceCodeEnd":186,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/providers/openai_codex_oauth.py#L150-L186","documentation":"Error \"OpenAI Codex sign-in expired. Start a new sign-in flow.\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/providers/openai_codex_oauth.py:168 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"42f37dc4c0e409eac7818a82d165c5f2757bc075","analyzedAt":"2026-08-26T00:18:52.276Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}