odysseus-dev/odysseus · error · HTTPException

Invalid session ID format

Error message

Invalid session ID format

What it means

Error "Invalid session ID format" thrown in odysseus-dev/odysseus.

Source

Thrown at routes/research/research_routes.py:26

from datetime import datetime
from pathlib import Path
from typing import Optional

from fastapi import APIRouter, HTTPException, Query, Request
from fastapi.responses import HTMLResponse, StreamingResponse
from pydantic import BaseModel, Field
from core.middleware import INTERNAL_TOOL_USER
from src.endpoint_resolver import resolve_endpoint
from src.auth_helpers import _auth_disabled, get_current_user
from core.auth import RESERVED_USERNAMES
from src.constants import DEEP_RESEARCH_DIR

_SESSION_ID_RE = re.compile(r"^[a-zA-Z0-9-]{1,128}$")


def _validate_session_id(session_id: str) -> str:
    if not _SESSION_ID_RE.fullmatch(session_id):
        raise HTTPException(400, "Invalid session ID format")
    return session_id


def _research_storage_root() -> Path:
    return Path(DEEP_RESEARCH_DIR).resolve()


def _find_research_path(session_id: str) -> Path | None:
    """Find a persisted research file without deriving its path from input."""
    expected_name = f"{_validate_session_id(session_id)}.json"
    root = _research_storage_root()
    for stored_path in root.glob("*.json"):
        if stored_path.name != expected_name:
            continue
        resolved = stored_path.resolve()
        try:
            resolved.relative_to(root)
        except ValueError:

View on GitHub (pinned to f9235ebbf1)

Solutions

  1. Use a valid session id format (no path or special characters).
  2. Copy the session id from the session list rather than typing it.

When it happens

Trigger: Triggered when the corresponding server-side validation or runtime check at the recorded location rejects the request or operation and returns this error message to the caller.

Common situations: See trigger scenarios.


AI-assisted analysis of odysseus-dev/odysseus@f9235ebbf1 (2026-08-14). Data as JSON: /api/errors/b757c192eb385c5f. Report an issue: GitHub.