Mintplex-Labs/anything-llm · warning
Personalization is disabled.
Error message
Personalization is disabled.
What it means
403 from the memoryFeatureEnabled middleware guarding every /memories route. SystemSettings.memoriesEnabled() returned false — the Personalization feature flag is off — so the request is refused before any handler runs. Not a bug: an intentional disabled-feature gate.
Source
Thrown at server/endpoints/memory.js:14
const { Memory } = require("../models/memory");
const { SystemSettings } = require("../models/systemSettings");
const { userFromSession, reqBody } = require("../utils/http");
const { validatedRequest } = require("../utils/middleware/validatedRequest");
const {
flexUserRoleValid,
ROLES,
} = require("../utils/middleware/multiUserProtected");
const { validWorkspaceSlug } = require("../utils/middleware/validWorkspace");
async function memoryFeatureEnabled(_req, response, next) {
const enabled = await SystemSettings.memoriesEnabled();
if (!enabled)
return response.status(403).json({ error: "Personalization is disabled." });
next();
}
/**
* Loads the memory by :memoryId and, in multi-user mode, scopes the query to the requester's userId.
* A memory owned by another user returns null here and is indistinguishable from "not found" — 404 either way.
*/
async function validateMemoryOwner(request, response, next) {
try {
const clause = { id: Number(request.params.memoryId) };
if (response.locals.multiUserMode) {
const user = await userFromSession(request, response);
clause.userId = user?.id ?? null;
}
const memory = await Memory.get(clause);
if (!memory)
return response.status(404).json({ error: "Memory not found." });View on GitHub (pinned to 3aec848f28)
Solutions
- Enable Personalization (memories) in System Settings as admin
- If it should already be on, inspect the system_settings persistence to confirm the flag survived the last save
- Have clients treat 403 + this message as a feature state, showing a 'Personalization is disabled' UI instead of an error toast
- Re-issue the memory request after enabling
Example fix
// before
const res = await fetch('/memories');
// after
const res = await fetch('/memories');
if (res.status === 403) { showBanner('Personalization is disabled in settings'); return; } Defensive patterns
Strategy: validation
Validate before calling
// One-time capability probe; cache the result
async function memoriesAvailable() {
const r = await fetch('/memories');
if (r.status === 403) return false; // Personalization is disabled.
if (!r.ok) throw new Error('memories probe failed: ' + r.status);
return true;
} Prevention
- Probe once at UI load and hide memory features when the flag is off
- Cache the 403 result per session to avoid repeated refusals
- Admins: enable Personalization in System Settings before building memory features on it
When it happens
Trigger: Any GET/POST/PUT/DELETE on /memories* with a valid session and role while the Personalization/memory toggle in System Settings is disabled.
Common situations: Fresh install with personalization off by default; admin disabled the feature to control LLM token spend; the flag silently reset after a settings migration or reset flow.
Related errors
- Could not load ${this.model} into Foundry Local: ${error}
- Failed integrity signature check.
- Unauthorized
- Memory not found.
- Maximum ${scope} memory limit (${limit}) reached.
AI-assisted analysis of Mintplex-Labs/anything-llm@3aec848f28 (2026-08-18).
Data as JSON: /api/errors/eca4d8c61f36395d.
Report an issue: GitHub.