Mintplex-Labs/anything-llm · warning

This chat has been disabled by the administrator - try again

Error message

This chat has been disabled by the administrator - try again later.

What it means

Embeddable-chat gate inside canRespond: if the loaded embed config has enabled=false, the request is refused with HTTP 503 and a structured abort payload ({type:'abort', close:true, error:'This chat has been disabled by the administrator - try again later.'}). The embed exists and the embedId is valid — the admin has switched this specific embed off.

Source

Thrown at server/utils/middleware/embedMiddleware.js:53

    response.sendStatus(404).end();
    return;
  }

  response.locals.embedConfig = embed;
  next();
}

async function canRespond(request, response, next) {
  try {
    const embed = response.locals.embedConfig;
    if (!embed) {
      response.sendStatus(404).end();
      return;
    }

    // Block if disabled by admin.
    if (!embed.enabled) {
      response.status(503).json({
        id: uuidv4(),
        type: "abort",
        textResponse: null,
        sources: [],
        close: true,
        error:
          "This chat has been disabled by the administrator - try again later.",
      });
      return;
    }

    // Check if requester hostname is in the valid allowlist of domains.
    const host = request.headers.origin ?? "";
    const allowedHosts = EmbedConfig.parseAllowedHosts(embed);

    // Optional hardening for when an embed with no allowlist is created.
    // This would mean the embed will accept requests from ANY origin (parseAllowedHosts returns
    // null). When EMBED_REQUIRE_ALLOWLIST is enabled, treat "no allowlist" as

View on GitHub (pinned to 3aec848f28)

Solutions

  1. Site owner: re-enable the embed in the admin UI (Embedded Chats section) so enabled=true
  2. If you embed the widget: treat type:'abort' with close:true as terminal — hide the chat UI instead of retrying, since only an admin action clears it
  3. If intentional maintenance: leave it and surface a 'try again later' notice
Defensive patterns

Strategy: fallback

Validate before calling

// widget: probe once on load instead of discovering on first message
const probe = await fetch(`${embedBase}/${embedId}`);
if (probe.status === 503) mountDisabledNotice();

Try / catch

if (res.status === 503) {
  const data = await res.json();
  if (data.type === 'abort' && data.close) showNotice(data.error); // terminal — stop sending
}

Prevention

When it happens

Trigger: A visitor sends a message through an embedded chat widget whose config row has enabled=false; every /embed/:embedId chat request then returns the 503 abort payload.

Common situations: Admin disabled a leaking/expensive embed but left the script on the page; staged rollout where embeds are toggled off outside business hours; embed duplicated from a disabled template.

Related errors


AI-assisted analysis of Mintplex-Labs/anything-llm@3aec848f28 (2026-08-18). Data as JSON: /api/errors/f4b42e82ceb93d18. Report an issue: GitHub.