infiniflow/ragflow · error · SandboxProviderConfigError

SANDBOX_LOCAL_MAX_OUTPUT_BYTES must be greater than 0.

Error message

SANDBOX_LOCAL_MAX_OUTPUT_BYTES must be greater than 0.

What it means

Raised by LocalProvider._validate_limits() during initialize() when 'max_output_bytes' is zero or negative. This limit is enforced after each run by _validate_output_size(), which sums the UTF-8 byte length of captured stdout and stderr; a non-positive cap is rejected up front with SandboxProviderConfigError. Default is 1 MiB (1048576).

Source

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

            },
            "max_artifact_bytes": {
                "type": "integer",
                "required": False,
                "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 = {

View on GitHub (pinned to 554fb1133a)

Solutions

  1. Set 'max_output_bytes' to a positive byte count at or above 1024 (e.g. 1048576, the default) in the initialize() config.
  2. Omit the key to accept the 1 MiB default.
  3. If generated code prints large payloads, raise the cap (schema max 10485760) or have the code write to files in the artifacts directory instead of stdout.
  4. Fix the upstream env variable (SANDBOX_LOCAL_MAX_OUTPUT_BYTES) if it feeds this config key with 0.

Example fix

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

// after
provider.initialize({"max_output_bytes": 1048576})
Defensive patterns

Strategy: validation

Validate before calling

def valid_output_limit(config: dict) -> bool:
    return int(config.get("max_output_bytes", 1048576)) > 0

Try / catch

try:
    provider.initialize(config)
except SandboxProviderConfigError as e:
    if "SANDBOX_LOCAL_MAX_OUTPUT_BYTES" in str(e):
        config["max_output_bytes"] = 1048576
        provider.initialize(config)
    else:
        raise

Prevention

When it happens

Trigger: Calling initialize({'max_output_bytes': 0}); passing a negative number; a config template that renders an unset variable as 0. Note the schema also enforces min 1024, so values 1–1023 pass _validate_limits but are below the documented minimum.

Common situations: Expecting 0 to mean 'no output limit'; passing a string that int() coerces to 0; tuning limits down so aggressively that verbose tooling (pip install logs, pytest output) trips the runtime check that the config was meant to relax.

Related errors


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