--kind (run anchor only) is one of checkpoint, dataset, evaluation, code or other; any other word is filed as other and kept as its label. Omitted, a ckpt, safetensors, pt or pth file is a checkpoint and anything else other.
Workspaces hold projects, never files: the workspace file anchor was retired on 2026-10-17, and a file you add lives on a run, experiment or project. The team’s Shared folder (below) takes team datasets only.
Bytes, or a pointer to them
Not everything should be uploaded. Probe records three postures, and never silently converts one into another.Upload (default)
Upload (default)
The bytes go to object storage, content-addressed and deduplicated by SHA-256 across runs. Code (
--kind code, or a word filed as code such as script) is always uploaded: --reference on code uploads the bytes anyway and says so.Reference a local path
Reference a local path
file://) instead of its bytes — for large files on a shared volume the reader can resolve locally. --hash reads the whole file to fingerprint it, which enables dedup. --allow-missing records a reference even if the path is not visible from this host.Reference an object you already store
Reference an object you already store
Bulk import
--reference-over records anything at or over that size as a reference instead of uploading it.
Naming
--name is the file’s relative path, defaulting to its basename. Paths are what give the explorer its folder structure, so pass a real one for captured trees:
The file’s extension is kept whatever you pass. Say what the file is in the run’s notes, not by renaming it — a
.json renamed to .ckpt is a file nothing can open.Versions
version-add is safe to retry. Run pin-impact before deleting anything: it names the work that would break.
Listing and fetching
download streams to the file and checks the bytes against --sha256 when you pass it (the content_hash from probe artifact list). A checkpoint folder downloads with --run RUN --checkpoint best|latest -o DIR.
tree returns one folder level: the files at that path, plus each child folder with its file count. That is what the dashboard explorer fetches when you expand a folder, so a run with thousands of captured files costs one small answer per folder rather than one enormous answer per run.
The team’s Shared folder
One per team, distinct from workspaces, and it never holds projects or experiments. Every member sees everything in it. Since CLI 0.253.0 it holds the team’s datasets; its older loose files are read-only: listed, downloaded and deleted, never added to.probe shared add, share, unshare, artifact add --workspace|--shared) is refused with a 410 that says where the file goes now: a team dataset (probe dataset add), or a project or run.
Shared is also the level artifact reuse resolves against — when an agent asks “is there already an official tokenizer for this”, it is asking Shared.
Housekeeping
move keeps the file’s id. Moving up its own chain needs no --target; moving down, or across to another project, does. The server decides which moves it allows and prints its reason when it refuses one.
gc-uploads only touches abandoned, never-confirmed uploads. Confirmed artifacts are untouched.