HKUDS/DeepTutor · error · HTTPException
Knowledge base '{name}' not found
Error message
Knowledge base '{name}' not found What it means
HTTP 404 from resolve_kb: the requested KB name matches neither the user's own knowledge bases nor any admin-assigned KB names. It is the terminal fall-through after both lookup branches fail.
Source
Thrown at deeptutor/multi_user/knowledge_access.py:151
assigned=False,
read_only=False,
)
if name in assigned_names:
if require_write:
raise HTTPException(
status_code=403, detail="Assigned admin knowledge bases are read-only"
)
return KnowledgeResource(
id=f"admin:kb:{name}",
name=name,
base_dir=admin_kb_base_dir(),
source="admin",
assigned=True,
read_only=True,
)
raise HTTPException(status_code=404, detail=f"Knowledge base '{name}' not found")
def _resolve_default_or_name(manager: KnowledgeBaseManager, name: str) -> str:
requested = str(name or "").strip()
names = manager.list_knowledge_bases()
if requested and requested in names:
return requested
if requested.lower() in DEFAULT_KB_ALIASES:
default_kb = manager.get_default()
if default_kb and default_kb in names:
return default_kb
raise HTTPException(status_code=404, detail="No default knowledge base is configured")
raise HTTPException(status_code=404, detail=f"Knowledge base '{requested}' not found")
def manager_for_resource(resource: KnowledgeResource) -> KnowledgeBaseManager:
return _manager_for(str(resource.base_dir.resolve()))
View on GitHub (pinned to 3e82f13042)
Solutions
- List the user's available KBs (list_knowledge_bases) and use an exact name from the result
- Check spelling/whitespace/case of the KB name
- Verify the KB still exists and is granted to the user by an admin
Example fix
// before
kb = resolve_kb("mykb") # 404: actual name is 'my-kb'
// after
available = list_knowledge_bases()
names = [k.name for k in available.knowledge_bases]
kb = resolve_kb(next(n for n in names if n.lower() == "mykb")) Defensive patterns
Strategy: validation
Validate before calling
from deeptutor.multi_user.knowledge_access import list_knowledge_bases
names = [kb.name for kb in list_knowledge_bases().knowledge_bases]
if name not in names:
raise UnknownKB(name) Type guard
def kb_exists(name: str) -> bool:
return name in [kb.name for kb in list_knowledge_bases().knowledge_bases] Try / catch
try:
resolve_kb(name)
except HTTPException as e:
if e.status_code == 404:
refresh_kb_list() # resync UI and prompt re-selection Prevention
- Populate KB pickers from list_knowledge_bases, never free-text
- Re-fetch the KB list on 404 in case of renames/deletions
When it happens
Trigger: resolve_kb('my-kb') where 'my-kb' is not in the user's KB list and not in assigned_names; typo in kb name; KB deleted by another admin; API call without the right grants.
Common situations: Typos or stale references after a KB was renamed/deleted; users hitting a KB they were never granted; frontend caching an old KB list.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- No default knowledge base is configured
- Knowledge base '{requested}' not found
- Knowledge base '{kb_name}' not found
- Knowledge base '{requested}' not found
- Operation not found
AI-assisted analysis of HKUDS/DeepTutor@3e82f13042 (2026-08-27).
Data as JSON: /api/errors/86cf65563dae3a7b.
Report an issue: GitHub.