langchain-ai/deepagents · error · FleetImportError
{name}: zip entry uncompressed size exceeds limit
Error message
{name}: zip entry uncompressed size exceeds limit What it means
A single zip entry declares an uncompressed (`file_size`) value over 256 MiB (`_MAX_ZIP_UNCOMPRESSED_BYTES`). Per-entry size caps are declared-size checks run during validation, before any bytes are extracted, to stop oversized or malicious archives early.
Source
Thrown at libs/talon/deepagents_talon/fleet_import.py:260
posix = PurePosixPath(name)
windows = PureWindowsPath(name)
return (
posix.is_absolute()
or windows.is_absolute()
or windows.drive != ""
or any(part in {"", ".", ".."} for part in posix.parts)
)
def _is_symlink(info: zipfile.ZipInfo) -> bool:
file_type = (info.external_attr >> 16) & _ZIP_FILE_TYPE_MASK
return file_type == _ZIP_SYMLINK_TYPE
def _validate_zip_entry_size(name: str, info: zipfile.ZipInfo) -> None:
if info.file_size > _MAX_ZIP_UNCOMPRESSED_BYTES:
msg = f"{name}: zip entry uncompressed size exceeds limit"
raise FleetImportError(msg)
if info.compress_size == 0:
return
if info.file_size > info.compress_size * _MAX_ZIP_COMPRESSION_RATIO:
msg = f"{name}: zip entry compression ratio exceeds limit"
raise FleetImportError(msg)
def _materialize_staging(
archive: zipfile.ZipFile,
entries: Mapping[str, zipfile.ZipInfo],
staging: Path,
) -> None:
_copy_zip_file(archive, entries["AGENTS.md"], staging / "AGENTS.md")
for name, info in entries.items():
if name.startswith("skills/"):
_copy_zip_file(archive, info, staging / name)
elif _is_subagent_prompt_path(name):View on GitHub (pinned to a1af029e6e)
Solutions
- Remove or move the oversized file out of the Fleet export
- Verify entry sizes up front: `max(zi.file_size for zi in zipfile.ZipFile(p).infolist())` and locate the offender
- Compress or split the asset and reference it externally (URL, separate download) instead of embedding it in the zip
Example fix
# before: bundled model in skills/ skills/heavy/model.bin (400 MB) // after: ship without the asset and document the download skills/heavy/README.md # 'download model.bin from ...'
Defensive patterns
Strategy: validation
Validate before calling
import zipfile
MAX_ENTRY = 256 * 1024 * 1024
def has_oversized_entry(path):
with zipfile.ZipFile(path) as z:
return any(zi.file_size > MAX_ENTRY for zi in z.infolist()) Try / catch
try:
import_fleet_zip(zip_path, target_dir=target)
except FleetImportError as exc:
if "uncompressed size exceeds limit" in str(exc):
print("Remove or externalize the >256MiB asset from the export")
raise Prevention
- Keep large binaries out of Fleet exports
- Check max entry file_size before importing
- Reference heavy assets by URL instead of embedding
When it happens
Trigger: `import_fleet_zip` validates an entry whose `info.file_size > 256 * 1024 * 1024`.
Common situations: Export accidentally includes large binaries, model weights, datasets, videos, or docker layer tarballs inside `skills/`.
Related errors
- response_schema exceeds {_SCHEMA_MAX_BYTES} byte limit ({len
- response_schema exceeds maximum nesting depth of {_SCHEMA_MA
- response_schema exceeds maximum of {_SCHEMA_MAX_PROPERTIES}
- `max_ptc_calls` must be >= 1 or None
- `max_snapshot_bytes` must be >= 1 or None
AI-assisted analysis of langchain-ai/deepagents@a1af029e6e (2026-08-29).
Data as JSON: /api/errors/356a65faad0bc320.
Report an issue: GitHub.