0.9.8 — 2026-06-03 — File Uploads
Release Notes
Adds the file-upload web verb. web.set_input_files lets agents drive
<input type=file> uploads (the test-studio "upload a knowledge file" flow) —
previously impossible, since browsers ignore typed text into file inputs and
page script can't write the read-only input.files.
Added
web.set_input_filesverb /loom.web.set_input_filesMCP tool (#101).
Uploads one or more local files into an<input type=file>via CDP
DOM.setFileInputFiles, implemented with the typed host-function pattern
(theweb.navigate/web.evaluatelineage): the daemon validates paths, the
WASM guest callsset-input-files-execute, andloom-hostruns
DOM.getDocument → DOM.querySelector → DOM.setFileInputFiles. Params:
selector(CSS Level 3, same semantics asweb.click) andpaths(one or
more absolute host paths; single-file inputs takepaths[0]). The receipt
matches the other mutating verbs (tamper-chainaction_hash/outcome_hash;
no auto-screenshot).- Security — local file reads are gated by a fail-closed
LOOM_UPLOAD_ROOT
allow-list. Unset ⇒ deny all (upload_root_not_configured). Paths are
std::fs::canonicalized (symlink-escape defense) and must resolve under the
root, elseupload_path_blocked. Enforced in ALL profiles (not just Safe).
Per-call caps: 20 files, 100 MiB/file, 200 MiB total
(upload_too_many_files/upload_file_too_large/upload_total_too_large).
Non-existent paths →upload_path_not_found; selector miss →
selector_not_found; non-file-input target →not_a_file_input(typed
errors, no panics). loom reads only path + metadata, never file content.
Verified end-to-end against real Chromium in CI (e2e pinned-chromium).
- Security — local file reads are gated by a fail-closed
Changed
- Internal: routed
/featuretelemetry to the hosted event-log then removed the
hosted config from the public repo (#98, #99); bumped cargo-dist 0.31 → 0.32 (#97).
Install loom-cli 0.9.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mentiora-ai/loom/releases/download/v0.9.8/loom-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install mentiora-ai/loom/loomDownload loom-cli 0.9.8
| File | Platform | Checksum |
|---|---|---|
| loom-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| loom-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| loom-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| loom-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |