sipeed/picoclaw · warning

Session scope is required.

Error message

Session scope is required.

What it means

Validation error thrown in handleSave (web/frontend/src/components/config/config-page.tsx:320) when the config section is dirty and the session scope (dmScope) trims to empty. dmScope is a required field of the config patch, so the save aborts client-side. It is checked immediately after the workspace check and behaves identically.

Source

Thrown at web/frontend/src/components/config/config-page.tsx:320

          throw new Error(t("pages.config.dashboard_password_required"))
        }
        if (password !== confirm) {
          throw new Error(t("pages.config.dashboard_password_mismatch"))
        }
        if (Array.from(password).length < 8) {
          throw new Error(t("pages.config.dashboard_password_min_length"))
        }
      }

      if (configDirty) {
        const workspace = form.workspace.trim()
        const dmScope = form.dmScope.trim()

        if (!workspace) {
          throw new Error("Workspace path is required.")
        }
        if (!dmScope) {
          throw new Error("Session scope is required.")
        }

        if (
          form.mcpEnabled &&
          form.mcpDiscoveryEnabled &&
          !form.mcpDiscoveryUseBM25 &&
          !form.mcpDiscoveryUseRegex
        ) {
          throw new Error(
            "MCP discovery requires at least one search method (BM25 or regex).",
          )
        }

        const maxTokens = parseIntField(form.maxTokens, "Max tokens", {
          min: 1,
        })
        const contextWindow = form.contextWindow.trim()
          ? parseIntField(form.contextWindow, "Context window", { min: 1 })

View on GitHub (pinned to 49183d7e8d)

Solutions

  1. Enter a session scope value (as required by your deployment, e.g. a project or session identifier)
  2. Check the raw config page for the previously saved dm_scope value and restore it
  3. Ensure the field contains non-whitespace text before saving
Defensive patterns

Strategy: validation

Validate before calling

const dmScope = form.dmScope.trim()
if (configDirty && !dmScope) {
  setFieldError("Session scope is required.")
  return
}

Try / catch

try {
  await handleSave()
} catch (err) {
  if (err instanceof Error) setError(err.message)
}

Prevention

When it happens

Trigger: Clearing the 'session scope' input (or entering only whitespace) and saving while configDirty is true.

Common situations: User empties the scope thinking it optional; scope value lost when switching config profiles; whitespace-only paste.

Related errors


AI-assisted analysis of sipeed/picoclaw@49183d7e8d (2026-08-15). Data as JSON: /api/errors/3b21f0527d011ac3. Report an issue: GitHub.