infiniflow/ragflow · error · SandboxProviderConfigError

SANDBOX_LOCAL_MAX_ARTIFACT_BYTES must be greater than 0.

Error message

SANDBOX_LOCAL_MAX_ARTIFACT_BYTES must be greater than 0.

What it means

Raised by LocalProvider._validate_limits() during initialize() when 'max_artifact_bytes' is zero or negative. This caps the size of any single file collected from the instance's artifacts directory (checked in _collect_artifacts via path.stat().st_size); a non-positive cap is rejected at configuration time with SandboxProviderConfigError. Default is 10 MiB (10485760).

Source

Thrown at agent/sandbox/providers/local.py:268

                "default": 10485760,
                "label": "Max Artifact Size (bytes)",
                "description": "Maximum size of a single artifact file. Unit: bytes.",
                "min": 1024,
                "max": 104857600,
            },
        }

    def _validate_limits(self) -> None:
        if self.timeout <= 0:
            raise SandboxProviderConfigError("SANDBOX_LOCAL_TIMEOUT must be greater than 0.")
        if self.max_memory_mb <= 0:
            raise SandboxProviderConfigError("SANDBOX_LOCAL_MAX_MEMORY_MB must be greater than 0.")
        if self.max_output_bytes <= 0:
            raise SandboxProviderConfigError("SANDBOX_LOCAL_MAX_OUTPUT_BYTES must be greater than 0.")
        if self.max_artifacts < 0:
            raise SandboxProviderConfigError("SANDBOX_LOCAL_MAX_ARTIFACTS must be greater than or equal to 0.")
        if self.max_artifact_bytes <= 0:
            raise SandboxProviderConfigError("SANDBOX_LOCAL_MAX_ARTIFACT_BYTES must be greater than 0.")

    def _prepare_script(self, instance_dir: Path, language: str, code: str, args_json: str) -> tuple[list[str], Path]:
        if language == "python":
            script_path = instance_dir / "main.py"
            script_path.write_text(build_python_wrapper(code, args_json), encoding="utf-8")
            return [self.python_bin, str(script_path)], script_path
        if language in {"javascript", "nodejs"}:
            script_path = instance_dir / "main.js"
            script_path.write_text(build_javascript_wrapper(code, args_json), encoding="utf-8")
            return [self.node_bin, str(script_path)], script_path
        raise RuntimeError(f"Unsupported language for local provider: {language}")

    def _build_child_env(self, instance_dir: Path) -> dict[str, str]:
        env = {
            "HOME": str(instance_dir),
            "MPLBACKEND": "Agg",
            "PATH": os.environ.get("PATH", ""),
            "PYTHONUNBUFFERED": "1",

View on GitHub (pinned to 554fb1133a)

Solutions

  1. Set 'max_artifact_bytes' to a positive byte count (e.g. 10485760, the default; schema min 1024, max 104857600).
  2. Omit the key to accept the 10 MiB default.
  3. If generated code produces large files, either raise the cap or have the code write smaller, chunked outputs.
  4. Verify the env/config variable feeding this key is not rendering 0.

Example fix

// before
provider.initialize({"max_artifact_bytes": 0})

// after
provider.initialize({"max_artifact_bytes": 10485760})
Defensive patterns

Strategy: validation

Validate before calling

def valid_artifact_size(config: dict) -> bool:
    return int(config.get("max_artifact_bytes", 10485760)) > 0

Try / catch

try:
    provider.initialize(config)
except SandboxProviderConfigError as e:
    if "SANDBOX_LOCAL_MAX_ARTIFACT_BYTES" in str(e):
        config["max_artifact_bytes"] = 10485760
        provider.initialize(config)
    else:
        raise

Prevention

When it happens

Trigger: Calling initialize({'max_artifact_bytes': 0}) or a negative value. At runtime a run fails with a different error ('Artifact exceeds ... bytes') if a collected file is larger than this cap.

Common situations: Using 0 to mean 'no size limit'; passing the value in KB or bytes instead of the expected byte count and hitting an accidental zero; lowering limits globally without realizing artifacts (charts, PDFs, CSVs) routinely exceed small caps.

Related errors


AI-assisted analysis of infiniflow/ragflow@554fb1133a (2026-08-15). Data as JSON: /api/errors/8ab94798dd349f6b. Report an issue: GitHub.