diff --git a/backend/open_webui/models/oauth_sessions.py b/backend/open_webui/models/oauth_sessions.py index b0e465dbe..a2da2f884 100644 --- a/backend/open_webui/models/oauth_sessions.py +++ b/backend/open_webui/models/oauth_sessions.py @@ -123,7 +123,7 @@ class OAuthSessionTable: "user_id": user_id, "provider": provider, "token": self._encrypt_token(token), - "expires_at": token.get("expires_at"), + "expires_at": int(token.get("expires_at")) if token.get("expires_at") else None, "created_at": current_time, "updated_at": current_time, } diff --git a/backend/open_webui/utils/models.py b/backend/open_webui/utils/models.py index a87a7487e..ff5b61069 100644 --- a/backend/open_webui/utils/models.py +++ b/backend/open_webui/utils/models.py @@ -340,7 +340,9 @@ def check_model_access(user, model): else: model_info = Models.get_model_by_id(model.get("id")) if not model_info: - raise Exception("Model not found") + # Model not in database (e.g., function/pipe models like Letta agents) + # Allow access by default + return elif not ( user.id == model_info.user_id or has_access( @@ -384,6 +386,10 @@ def get_filtered_models(models, user): ) ): filtered_models.append(model) + else: + # Model not in database (e.g., function/pipe models like Letta agents) + # Allow through by default + filtered_models.append(model) return filtered_models else: