Skip to main content
The @archive tool handles the bundles an agent downloads or ships — zip, tar, tar.gz/tgz and tar.bz2 — without a shell and without the classic traps: an entry named ../../etc/passwd, an absolute path, a symlink pointing outside the destination, or a 10 GB “bomb” declared as 1 KB.

Subcommands


Safety

  • Zip-slip: absolute names, drive letters and .. escapes are refused; every destination is resolved after symlinks and must stay under to, including when an already-materialized ancestor is a symlink leading out.
  • Links: symlink and hard-link entries whose target resolves outside to are refused.
  • Limits are enforced on the bytes actually read, not on the declared size; a refused entry leaves nothing behind and the report says how far extraction got.
  • Files are created with 0600/0700 and O_EXCL, so a race cannot turn a refusal into an overwrite.
  • list/read are read-only; extract/create are mutations and go through the coder security gate.
xz archives are not supported (no decoder in the standard library); the error names the supported formats.