Downloads and Storage
Use this sub-skill to select and operate the Hub's read/download and storage surfaces without confusing repository snapshots, local cache metadata, and bucket object storage.
Trigger Routes
Load this sub-skill when the request mentions any of the following:
- download one Hub file, model, dataset, Space, or kernel repository;
- snapshot a revision with allow/ignore patterns or estimate it with dry run;
- inspect, verify, prune, relocate, or troubleshoot the local Hub cache;
- run offline, recover from an interrupted or incomplete snapshot, or diagnose a cache miss;
- enable, disable, or troubleshoot Xet-backed transfers and chunk storage;
- browse or open Hub files through
HfFileSystem, fsspec, orhf://paths; - parse a Hub URI or a mount such as
hf://datasets/org/data:/mnt:ro; - browse/download bucket objects or plan a local↔bucket sync;
- reason about trailing-slash semantics for safe remote copy operations.
Read the Focused References
- Read API reference for verified signatures, return values, parameter matrices, URI forms, filesystem methods, and bucket APIs.
- Read workflows for copyable download, offline, cache, fsspec, bucket, copy, and plan/apply recipes.
- Read configuration, cache, and Xet before changing cache paths, offline mode, symlink mode, timeouts, or Xet settings.
- Read troubleshooting for revision/repo-type, access, disk, cache, symlink, Xet, URI, prefix, and traversal failures.
- Run the bundled read-only download environment diagnostic when the effective cache roots, import-time settings, free space, token presence, Xet availability, or cache structure is uncertain.
Keep the Boundaries Clear
This sub-skill owns downloads, read-only filesystem access, local cache
operations, bucket reads, and safe movement planning. It covers upload/copy
only far enough to choose a safe file-movement surface. Although
HfFileSystem exposes write/delete methods, do not execute those mutations from
this route; send repository or bucket mutations to the appropriate operations
workflow.
- Route repository and bucket creation, commits, branches, uploads, deletes,
moves, visibility changes, and other mutations to the
hub-operationssibling sub-skill. - Route exhaustive CLI flag selection, output formats, authentication setup,
and shell automation to the
cli-and-automationsibling sub-skill. - Do not use
HfFileSystemas the default high-throughput download API; preferhf_hub_download,snapshot_download, or the correspondingHfApimethods. - Do not bundle or run credentialed upload helpers or networked installers from this skill.
Choose the Download Surface
- Use
hf_hub_download(repo_id, filename, ...)for exactly one repository file. It returns a file path, normally a pointer inside the shared cache. - Use
snapshot_download(repo_id, ...)for a coherent repository tree, multiple files, pattern filtering, or parallel file downloads. It returns a snapshot directory. - Use
local_dirwhen the caller needs a normal materialized directory they may modify. Otherwise prefercache_dir/the shared cache and treat returned cache paths as immutable. - Set
repo_typeexplicitly for datasets, Spaces, and kernels; model is the default. Pinrevisionto a full commit hash for reproducible or prepared offline execution. - Use
dry_run=Trueto inspectDryRunFileInfo; it may perform remote metadata calls but does not transfer file payloads. It is not an offline inventory mechanism. - Use
allow_patternsandignore_patternsonly with snapshots. Both apply; ignored files remain excluded after allow filtering. Tunemax_workersfor concurrent files, not Xet byte-range concurrency.
Before a large or forced transfer, inspect will_download and file_size, run
the diagnostic helper, and confirm free space in both the Hub cache and Xet
cache locations.
Preserve Cache and Offline Invariants
local_files_only=Trueforbids network access for that call and succeeds only from already materialized content.force_download=Trueasks for a fresh transfer and is not an offline/cache-repair switch; do not combine them.HF_HUB_OFFLINE=1is process-wide and is read when the package is imported. Set it before Python starts. It also makes ordinaryHfApicalls fail rather than contact the Hub.- A cached
refs/entry ortrees/*.jsonrecord is metadata, not downloaded content. Confirm the selected snapshot files exist. - If a cached tree listing proves requested files are missing, offline
snapshot_downloadraisesIncompleteSnapshotErrorinstead of silently returning the partial tree. Pattern-excluded files do not count as missing. - Use
scan_cache_dirorhf cache lsfor inspection. Previewhf cache rmandhf cache prunewith--dry-run; deletion is irreversible. - Never edit a returned shared-cache file. Materialize to
local_diror copy it elsewhere first.
Browse with HfFileSystem and URIs
Use HfFileSystem or the global hffs for fsspec integrations and convenient
ls, glob, find, exists, and open. Text mode must be explicit because
fsspec open defaults to "rb". Pass refresh=True when stale directory
metadata is plausible.
Use canonical hf://[TYPE/]namespace/name[@REVISION][/PATH] URIs. Dataset,
Space, kernel, and bucket prefixes are plural and required; a model prefix is
optional. Buckets do not support revisions. Encode ordinary branch names that
contain /; special refs such as refs/pr/3 are recognized directly. Parse
mounts with huggingface_hub.utils.parse_hf_mount, not by splitting on :.
Treat URI parsing as identification, not path-safety authorization. Reject
absolute paths, drive/UNC paths, and every .. segment before local
materialization or plan application.
Handle Buckets and Movement Safely
Buckets are mutable Xet-backed object storage, not versioned repositories. Use
list_bucket_tree/download_bucket_files for Python reads, or hf buckets list, hf cp, and hf sync for CLI workflows.
For one file, use hf cp; for local↔bucket directories, use sync_bucket or
hf sync. Generate dry_run=True output or a JSONL plan, review every action
and destination, then apply it. Treat delete=True as destructive.
For remote copies, copy_files supports repo→repo, repo→bucket, and
bucket→bucket; bucket→repo is unsupported. Server-side copies require compatible
storage regions. A trailing slash on the source means “copy contents”; without
it, the source directory may be nested at the destination. Verify bucket prefix
boundaries so logs does not accidentally match logs-old.
Validate the Outcome
For a no-network regression rehearsal that exercises mocked metadata, a
temporary cache, filtered offline recovery, a wrong revision, and the
local_files_only/force_download conflict, run the focused case in
workflows.
Keep the bucket prefix/traversal case there deferred until a reviewed mock plan
and authorized bucket integration are available.
- Assert the returned path exists and is the requested file/snapshot.
- For dry runs, inspect
filename,commit_hash,local_path,is_cached,will_download, and aggregate only entries wherewill_downloadis true. - For offline snapshots, assert all pattern-selected files exist; catch
IncompleteSnapshotErrorand report itssnapshot_pathwithout claiming the snapshot is complete. - For cache repair, rescan and inspect warnings before deleting anything.
- For sync/copy, inspect source/destination URI types, revisions, prefixes, trailing slashes, regions, and the plan's upload/download/delete actions.
- Mark network-, credential-, private/gated-, and Xet-service integration as deferred unless the caller explicitly authorizes and provides them.


