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
- Set 'max_artifact_bytes' to a positive byte count (e.g. 10485760, the default; schema min 1024, max 104857600).
- Omit the key to accept the 10 MiB default.
- If generated code produces large files, either raise the cap or have the code write smaller, chunked outputs.
- 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
- Size the cap for your largest expected artifact (charts, CSV exports) plus margin.
- Keep the value within the schema range 1024–104857600.
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
- SANDBOX_LOCAL_MAX_ARTIFACTS must be greater than or equal to
- SANDBOX_LOCAL_TIMEOUT must be greater than 0.
- SANDBOX_LOCAL_MAX_MEMORY_MB must be greater than 0.
- SANDBOX_LOCAL_MAX_OUTPUT_BYTES must be greater than 0.
- Artifact symlinks are not allowed: {path.name}
AI-assisted analysis of infiniflow/ragflow@554fb1133a (2026-08-15).
Data as JSON: /api/errors/8ab94798dd349f6b.
Report an issue: GitHub.