Tencent/WeKnora · error

sandbox: resolve config %q: missing workspace context

Error message

sandbox: resolve config %q: missing workspace context

What it means

resolveTenantSandboxForConfig rejects a named config resolution when tenantID is 0, meaning no workspace/tenant context was provided. Named sandbox configs are tenant-scoped, so without a tenant the resolver must refuse rather than silently pick a backend.

Source

Thrown at internal/application/service/tenant_sandbox_resolve.go:98

		disabled, err := policy.WorkspaceScriptsDisabled(ctx, tenantID)
		if err != nil {
			logger.Warnf(ctx,
				"[sandbox] failed to read workspace sandbox policy for %d: %v",
				tenantID, err)
		} else if disabled {
			return sandbox.NewDisabledManager(), nil
		}
	}

	// ② No named workspace config means sandbox execution is disabled. There is
	// no deployment-level provider fallback anymore.
	if configID == "" || configID == types.SandboxConfigIDGlobalDefault {
		return sandbox.NewDisabledManager(), nil
	}

	// ③ Named config: must not silently fall back to another backend.
	if tenantID == 0 {
		return nil, fmt.Errorf(
			"sandbox: resolve config %q: missing workspace context", configID)
	}
	if resolver == nil {
		return nil, fmt.Errorf(
			"sandbox: resolve config %q: per-tenant resolver unavailable", configID)
	}
	mgr, err := resolver.Resolve(ctx, tenantID, configID)
	if err != nil {
		logger.Warnf(ctx,
			"[sandbox] failed to resolve config %q for workspace %d: %v",
			configID, tenantID, err)
		return nil, err
	}
	return mgr, nil
}

View on GitHub (pinned to 988cbb0330)

Solutions

  1. Ensure the caller passes a valid tenantID (workspace context) when resolving
  2. Check that middleware/context propagation sets the tenant ID
  3. For unscoped paths, resolve without a named config so a disabled manager is returned
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at internal/application/service/tenant_sandbox_resolve.go:98 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02). Data as JSON: /api/errors/5ba0110e5a1ac075. Report an issue: GitHub.