langchain-ai/langgraph · error · PermissionError

No authenticated user available in access_context=

Error message

No authenticated user available in access_context='{self.access_context}'. Ensure custom auth is configured for the server.

What it means

PermissionError from runtime.ensure_user(): the current access context carries no authenticated user. With custom auth configured the auth middleware always populates runtime.user, so seeing this means the code path (e.g. a background task or a server without custom auth) ran where no user was authenticated.

Solutions

  1. Configure custom auth on the LangGraph Server so the auth middleware populates the user
  2. Check runtime.user for None before calling ensure_user() when running in contexts that may lack a user
  3. Use runtime.user directly and handle the None case explicitly
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at libs/sdk-py/langgraph_sdk/runtime.py:141 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of langchain-ai/langgraph@38031739e5 (2026-08-26). Data as JSON: /api/errors/d974cb8083281062. Report an issue: GitHub.

Appendix: source

Thrown at libs/sdk-py/langgraph_sdk/runtime.py:141

        ```
        """
        if isinstance(self, _ExecutionRuntime):
            return self
        return None

    def ensure_user(self) -> BaseUser:
        """Return the authenticated user, or raise if not available.

        When custom auth is configured, `user` is set for all access contexts
        (the factory is only called from HTTP handlers where the auth
        middleware has already run). This method raises only when no custom
        auth is configured.

        Raises:
            PermissionError: If no user is authenticated.
        """
        if self.user is None:
            raise PermissionError(
                f"No authenticated user available in access_context='{self.access_context}'. "
                "Ensure custom auth is configured for the server."
            )
        return self.user


@dataclass(kw_only=True, slots=True, frozen=True)
class _ExecutionRuntime(_ServerRuntimeBase[ContextT], Generic[ContextT]):
    """Runtime for `threads.create_run` — the graph will be fully executed.

    Access this via `.execution_runtime` on `ServerRuntime`. Do not
    construct directly.

    !!! warning "Beta"
        This API is in beta and may change in future releases.
    """

    context: ContextT = field(default=None)  # ty: ignore[invalid-assignment]

View on GitHub (pinned to 38031739e5)